<?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>155002</bug_id>
          
          <creation_ts>2016-03-03 19:20:54 -0800</creation_ts>
          <short_desc>[[GetPrototypeOf]] should be a fully virtual method in the method table</short_desc>
          <delta_ts>2016-09-02 09:46:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>161534</dependson>
    
    <dependson>155097</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1170462</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-03 19:20:54 -0800</bug_when>
    <thetext>This is needed for Proxy.
To make things fast, we will probably have to change
some JIT code to respect this and to introduce a getPrototypeInline
which will try to perform the default getPrototype which will probably
be named getPrototypeDirect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171286</commentid>
    <comment_count>1</comment_count>
      <attachid>273102</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-05 15:31:01 -0800</bug_when>
    <thetext>Created attachment 273102
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171289</commentid>
    <comment_count>2</comment_count>
      <attachid>273102</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-05 15:32:32 -0800</bug_when>
    <thetext>Comment on attachment 273102
patch

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

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1392
&gt;  
&gt; +#if USE(JSVALUE64)
&gt; +EncodedJSValue 
&gt; +#else
&gt; +int32_t
&gt; +#endif

Yuck!  Why not just return size_t like other functions that are in this situation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171290</commentid>
    <comment_count>3</comment_count>
      <attachid>273104</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-05 15:35:19 -0800</bug_when>
    <thetext>Created attachment 273104
perf numbers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171462</commentid>
    <comment_count>4</comment_count>
      <attachid>273147</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-06 14:35:54 -0800</bug_when>
    <thetext>Created attachment 273147
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171472</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-06 15:14:25 -0800</bug_when>
    <thetext>The compiler is confused about the ClassName::getPrototype when
building the method table :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171480</commentid>
    <comment_count>6</comment_count>
      <attachid>273151</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-06 16:07:33 -0800</bug_when>
    <thetext>Created attachment 273151
patch for landing v2

I want to see EWS results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171481</commentid>
    <comment_count>7</comment_count>
      <attachid>273152</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-06 16:12:08 -0800</bug_when>
    <thetext>Created attachment 273152
v3

more method renaming. Hopefully no more is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171482</commentid>
    <comment_count>8</comment_count>
      <attachid>273153</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-06 16:25:33 -0800</bug_when>
    <thetext>Created attachment 273153
v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171485</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-06 17:00:56 -0800</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/197648</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273102</attachid>
            <date>2016-03-05 15:31:01 -0800</date>
            <delta_ts>2016-03-06 14:35:54 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>60719</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NjE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNiBA
QAorMjAxNi0wMy0wNSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbW0dldFByb3RvdHlwZU9mXV0gc2hvdWxkIGJlIGEgZnVsbHkgdmlydHVhbCBtZXRob2QgaW4g
dGhlIG1ldGhvZCB0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU1MDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyB1cyBtb3JlIGNvbnNpc3RlbnQgd2l0aCBob3cgdGhl
IEVTNiBzcGVjaWZpY2F0aW9uIG1vZGVscyB0aGUKKyAgICAgICAgW1tHZXRQcm90b3R5cGVPZl1d
IHRyYXAuIE1vdmluZyB0aGlzIG1ldGhvZCBpbnRvIENsYXNzSW5mbzo6bWV0aG9kVGFibGUgCisg
ICAgICAgIGlzIGEgcHJlcmVxdWlzaXRlIGZvciBpbXBsZW1lbnRpbmcgUHJveHkuW1tHZXRQcm90
b3R5cGVPZl1dLiBUaGlzIHBhdGNoCisgICAgICAgIHN0aWxsIGFsbG93cyBkaXJlY3RseSBhY2Nl
c3NpbmcgdGhlIHByb3RvdHlwZSBmb3Igc2l0dWF0aW9ucyB3aGVyZSB0aGlzCisgICAgICAgIGlz
IHRoZSBkZXNpcmVkIGJlaGF2aW9yLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gZ2V0dGluZyB0aGUg
aW50ZXJuYWwKKyAgICAgICAgW1tQcm90b3R5cGVdXSBmaWVsZCBhcyBkZXNjcmliZWQgaW4gdGhl
IHNwZWNpZmljYXRpb24uIAorCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAg
ICAgKEpTT2JqZWN0R2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvdG90eXBl
KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1R5cGVJbmZv
RmxhZ3MpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhj
ZXB0aW9uKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZkN1c3RvbSk6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
aW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZik6
CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbnN0
YW5jZW9mKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25D
cmVhdGVQcm94eSk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3Bl
Y2llc0NvbnN0cnVjdEFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmdW5j
dGlvblByb3RvRnVuY0JpbmQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFy
ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6aGFzSW5zdGFuY2VC
b3VuZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Z2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0pTQm91bmRGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6
CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKiBydW50
aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c2V0UHJvdG90eXBlKToKKyAg
ICAgICAgKEpTQzo6SlNDZWxsOjpnZXRQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
Omhhc0xlZ2FjeVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6bGFzdEluUHJvdG90eXBlQ2hhaW4p
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6b2JqZWN0UHJvdG90eXBlSXNTYW5lKToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c3RyaW5nUHJvdG90eXBlQ2hhaW5Jc1Nh
bmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6R2xvYmFsRnVuY1Byb3RvR2V0
dGVyRnVuY3Rvcjo6R2xvYmFsRnVuY1Byb3RvR2V0dGVyRnVuY3Rvcik6CisgICAgICAgIChKU0M6
Okdsb2JhbEZ1bmNQcm90b0dldHRlckZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlND
OjpnbG9iYWxGdW5jUHJvdG9HZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52
aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6cHV0SW5saW5lU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5
cGVXaXRoQ3ljbGVDaGVjayk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGUp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6Om9iamVjdFByaXZh
dGVGdW5jSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5k
ZXhPbkhvbGVGb3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YXR0ZW1wdFRv
SW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRH
ZW5lcmljUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6SlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvdG90eXBlRGly
ZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByb3RvdHlwZSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0
Tm9uSW5kZXhQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHJvdG90eXBl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNQcm94eS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnNldFRhcmdldCk6Cisg
ICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RUeXBlZEFycmF5Vmlldyk6CisgICAgICAgICogcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yR2V0UHJv
dG90eXBlT2ZGdW5jdG9yOjpPYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mRnVuY3Rvcik6
CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2ZGdW5jdG9yOjpv
cGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVP
Zik6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5R2V0KToKKyAgICAgICAgKEpT
Qzo6UHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzVmFsaWQpOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy9wcm94eS1oYXMtcHJvcGVydHkuanM6CisgICAgICAgIChh
c3NlcnQubGV0LmgxLmhhcyk6CisgICAgICAgIChhc3NlcnQubGV0LmgyLmhhcyk6CisgICAgICAg
IChhc3NlcnQpOgorCiAyMDE2LTAzLTA1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgogCiAgICAgICAgIFtFUzZdIFN1cHBvcnQgUmVmbGVjdC5jb25zdHJ1Y3QKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxOTc1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyOCw3ICsxMjI4LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZQogICAgIGlmICghdGFyZ2V0LmlzT2Jq
ZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgSlNPYmplY3QqIGpzVGFyZ2V0ID0gYXNPYmplY3QodGFyZ2V0LmFzQ2VsbCgpKTsKLSAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTUHJveHk6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgp
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzVGFyZ2V0LT5wcm90b3R5cGUoKSk7Cisg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+
dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc1RhcmdldC0+Z2V0UHJvdG90eXBl
RGlyZWN0KCkpOwogICAgIEpTUHJveHkqIHByb3h5ID0gSlNQcm94eTo6Y3JlYXRlKGV4ZWMtPnZt
KCksIHN0cnVjdHVyZSwganNUYXJnZXQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJv
eHkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJ
KHJldmlzaW9uIDE5NzU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RS
ZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsOCArMjY3LDggQEAgSlNWYWx1ZVJlZiBKU09i
amVjdEdldFByb3RvdHlwZShKU0NvbnRleAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4
KTsKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCi0gICAgSlNPYmplY3QqIGpzT2Jq
ZWN0ID0gdG9KUyhvYmplY3QpOwotICAgIHJldHVybiB0b1JlZihleGVjLCBqc09iamVjdC0+cHJv
dG90eXBlKCkpOworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsgCisgICAg
cmV0dXJuIHRvUmVmKGV4ZWMsIGpzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKSk7CiB9CiAK
IHZvaWQgSlNPYmplY3RTZXRQcm90b3R5cGUoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
b2JqZWN0LCBKU1ZhbHVlUmVmIHZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTc1OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzg1LDYg
KzEzODUsMjkgQEAgaW50NjRfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnZlcnREbwogICAg
IHJldHVybiB0cnlDb252ZXJ0VG9JbnQ1Mih2YWx1ZSk7CiB9CiAKKyNpZiBVU0UoSlNWQUxVRTY0
KQorRW5jb2RlZEpTVmFsdWUgCisjZWxzZQoraW50MzJfdAorI2VuZGlmCitKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRlZmF1bHRIYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogdmFs
dWUsIEpTQ2VsbCogcHJvdG8pIC8vIFJldHVybnMganNCb29sZWFuKFRydWV8RmFsc2UpIG9uIDY0
LWJpdC4KK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBpZiAoSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0
YW5jZShleGVjLCB2YWx1ZSwgcHJvdG8pKSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpOworI2Vsc2UKKyAgICAgICAg
cmV0dXJuIDE7CisjZW5kaWYKKyAgICB9CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsK
KyNlbmRpZgorfQorCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9m
aWxlckxvZ0RGRyhFeGVjU3RhdGUqIGV4ZWMpIAogewogICAgIGV4ZWMtPnZtKCkudHlwZVByb2Zp
bGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiTG9nIEZ1bGwsIGNhbGxl
ZCBmcm9tIGluc2lkZSBERkcuIikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE5NzU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDEyIEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Mb2FkVmFyYXJncygKIGludDY0X3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Db252ZXJ0Qm94ZWREb3VibGVUb0ludDUyKEVuY29kZWRKU1ZhbHVl
KTsKIGludDY0X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0RG91YmxlVG9JbnQ1Mihk
b3VibGUpOwogCisjaWYgVVNFKEpTVkFMVUU2NCkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRGVmYXVsdEhhc0luc3RhbmNlKEV4ZWNTdGF0ZSosIEpTQ2VsbCogdmFsdWUs
IEpTQ2VsbCogcHJvdG8pOworI2Vsc2UKK2ludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
ZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiwgSlNDZWxsKiB2YWx1ZSwgSlNDZWxsKiBwcm90
byk7CisjZW5kaWYKKwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2Nlc3NUeXBlUHJv
ZmlsZXJMb2dERkcoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJ
T04gZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZShFeGVjU3RhdGUqLCB2b2lk
Kiwgdm9pZCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxOTc1OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjc0MCw2ICsyNzQwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNl
T2ZGbwogICAgIAogICAgIC8vIFdhbGsgdXAgdGhlIHByb3RvdHlwZSBjaGFpbiBvZiB0aGUgdmFs
dWUgKGluIHNjcmF0Y2hSZWcpLCBjb21wYXJpbmcgdG8gcHJvdG90eXBlUmVnLgogICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBsb29wKCZtX2ppdCk7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
cGVyZm9ybURlZmF1bHRIYXNJbnN0YW5jZSA9IG1faml0LmJyYW5jaDgoTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBKU0Nl
bGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFByb3h5T2JqZWN0VHlwZSkp
OwogICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHNjcmF0Y2hSZWcsIHNjcmF0Y2hSZWcsIHNj
cmF0Y2gyUmVnKTsKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNj
cmF0Y2hSZWcsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBDZWxsUGF5bG9hZE9mZnNl
dCksIHNjcmF0Y2hSZWcpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzSW5zdGFuY2UgPSBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBzY3JhdGNoUmVnLCBwcm90b3R5
cGVSZWcpOwpAQCAtMjc1NSw3ICsyNzU3LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbnN0YW5jZU9mRm8KICNlbHNlCiAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKDApLCBzY3JhdGNoUmVnKTsKICNlbmRpZgotICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIHB1dFJlc3VsdCA9IG1faml0Lmp1bXAoKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QgZG9uZUp1bXBzOyAKKyAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisKKyAg
ICBwZXJmb3JtRGVmYXVsdEhhc0luc3RhbmNlLmxpbmsoJm1faml0KTsKKyAgICBzaWxlbnRTcGls
bEFsbFJlZ2lzdGVycyhzY3JhdGNoUmVnKTsKKyAgICAvLyBUaGlzIG9wZXJhdGlvbiByZXR1cm5z
IGpzQm9vbGVhbihUcnVlfEZhbHNlKSBvbiA2NC1iaXQuIEl0IHJldHVybnMgMSBvciAwIG9uIDMy
LWJpdC4KKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmF1bHRIYXNJbnN0YW5jZSwgc2Ny
YXRjaFJlZywgdmFsdWVSZWcsIHByb3RvdHlwZVJlZyk7IAorICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMoc2NyYXRjaFJlZyk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBkb25l
SnVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgCiAgICAgaXNJbnN0YW5jZS5saW5rKCZt
X2ppdCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTI3NjQsNyArMjc3NSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm8KICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIHNjcmF0Y2hSZWcpOwogI2VuZGlmCiAgICAgCi0gICAg
cHV0UmVzdWx0LmxpbmsoJm1faml0KTsKKyAgICBkb25lSnVtcHMubGluaygmbV9qaXQpOwogfQog
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqIG5v
ZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCShyZXZpc2lvbiAxOTc1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTExNDAsNiArMTE0MCwxNCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogCisjaWYg
VVNFKEpTVkFMVUUzMl82NCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpf
SklUT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOworICAgIH0KKyNlbmRpZgorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKFZfSklUT3BlcmF0
aW9uX0VDYiBvcGVyYXRpb24sIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZp
c2lvbiAxOTc1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5MzgsNiArNTkzOCw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIExCYXNpY0Jsb2NrIGxvb3AgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkluc3RhbmNlT2Yg
bG9vcCIpKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90WWV0SW5zdGFuY2UgPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoIkluc3RhbmNlT2Ygbm90IHlldCBpbnN0YW5jZSIpKTsKICAgICAgICAgTEJh
c2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJJbnN0YW5jZU9m
IGNvbnRpbnVhdGlvbiIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgbG9hZFByb3RvdHlwZURpcmVj
dCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiSW5zdGFuY2VvZiBkZWZhdWx0UHJvdG90eXBlRnVu
Y3Rpb24iKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGRlZmF1bHRIYXNJbnN0YW5jZVNsb3cgPSBG
VExfTkVXX0JMT0NLKG1fb3V0LCAoIkluc3RhbmNlb2YgZGVmYXVsdFByb3RvdHlwZUZ1bmN0aW9u
IikpOwogICAgICAgICAKICAgICAgICAgTFZhbHVlIGNvbmRpdGlvbjsKICAgICAgICAgaWYgKG1f
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCkBAIC01OTU1LDggKzU5NTcs
MTQgQEAgcHJpdmF0ZToKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2luYWxWYWx1ZSA9IG1f
b3V0LmFuY2hvcihjZWxsKTsKICAgICAgICAgbV9vdXQuanVtcChsb29wKTsKICAgICAgICAgCi0g
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGxvb3AsIG5vdFlldEluc3RhbmNlKTsKKyAgICAgICAgbV9v
dXQuYXBwZW5kVG8obG9vcCwgbG9hZFByb3RvdHlwZURpcmVjdCk7CiAgICAgICAgIExWYWx1ZSB2
YWx1ZSA9IG1fb3V0LnBoaShtX291dC5pbnQ2NCwgb3JpZ2luYWxWYWx1ZSk7CisgICAgICAgIExW
YWx1ZSB0eXBlID0gbV9vdXQubG9hZDhaZXJvRXh0MzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3R5
cGVJbmZvVHlwZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0Lm5v
dEVxdWFsKHR5cGUsIG1fb3V0LmNvbnN0SW50MzIoUHJveHlPYmplY3RUeXBlKSksCisgICAgICAg
ICAgICB1c3VhbGx5KGxvYWRQcm90b3R5cGVEaXJlY3QpLCByYXJlbHkoZGVmYXVsdEhhc0luc3Rh
bmNlU2xvdykpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxvYWRQcm90b3R5cGVEaXJlY3Qs
IG5vdFlldEluc3RhbmNlKTsKICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1
cmUodmFsdWUpOwogICAgICAgICBMVmFsdWUgY3VycmVudFByb3RvdHlwZSA9IG1fb3V0LmxvYWQ2
NChzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX3Byb3RvdHlwZSk7CiAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIGlzSW5zdGFuY2VSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRy
dWUpOwpAQCAtNTk2NCwxNCArNTk3MiwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQu
ZXF1YWwoY3VycmVudFByb3RvdHlwZSwgcHJvdG90eXBlKSwKICAgICAgICAgICAgIHVuc3VyZShj
b250aW51YXRpb24pLCB1bnN1cmUobm90WWV0SW5zdGFuY2UpKTsKICAgICAgICAgCi0gICAgICAg
IG1fb3V0LmFwcGVuZFRvKG5vdFlldEluc3RhbmNlLCBjb250aW51YXRpb24pOworICAgICAgICBt
X291dC5hcHBlbmRUbyhub3RZZXRJbnN0YW5jZSwgZGVmYXVsdEhhc0luc3RhbmNlU2xvdyk7CiAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vdEluc3RhbmNlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1f
b3V0LmJvb2xlYW5GYWxzZSk7CiAgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkodmFsdWUs
IG1fb3V0LmFuY2hvcihjdXJyZW50UHJvdG90eXBlKSk7CiAgICAgICAgIG1fb3V0LmJyYW5jaChp
c0NlbGwoY3VycmVudFByb3RvdHlwZSksIHVuc3VyZShsb29wKSwgdW5zdXJlKGNvbnRpbnVhdGlv
bikpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGRlZmF1bHRIYXNJbnN0YW5jZVNsb3csIGNv
bnRpbnVhdGlvbik7CisgICAgICAgIC8vIFdlIGNhbiB1c2UgdGhlIHZhbHVlIHRoYXQgd2UncmUg
bG9vcGluZyB3aXRoIGJlY2F1c2Ugd2UKKyAgICAgICAgLy8gY2FuIGp1c3QgY29udGludWUgb2Zm
IGZyb20gd2hlcmV2ZXIgd2UgYmFpbGVkIGZyb20gdGhlCisgICAgICAgIC8vIGxvb3AuCisgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIGRlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCA9IG1fb3V0LmFuY2hv
cigKKyAgICAgICAgICAgIHVuYm94Qm9vbGVhbih2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25EZWZhdWx0SGFzSW5zdGFuY2UpLCBtX2NhbGxGcmFtZSwgdmFsdWUs
IHByb3RvdHlwZSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAg
ICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAg
ICAgIHNldEJvb2xlYW4oCi0gICAgICAgICAgICBtX291dC5waGkobV9vdXQuYm9vbGVhbiwgbm90
Q2VsbFJlc3VsdCwgaXNJbnN0YW5jZVJlc3VsdCwgbm90SW5zdGFuY2VSZXN1bHQpKTsKKyAgICAg
ICAgICAgIG1fb3V0LnBoaShtX291dC5ib29sZWFuLCBub3RDZWxsUmVzdWx0LCBpc0luc3RhbmNl
UmVzdWx0LCBub3RJbnN0YW5jZVJlc3VsdCwgZGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0KSk7CiAg
ICAgfQogCiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkN1c3RvbSgpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxOTc1
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzMyw2ICsyMzMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5j
ZW9mKEluc3RydWN0aW9uCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKICAgICBM
YWJlbCBsb29wKHRoaXMpOwogCisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChFcXVhbCwgQWRkcmVz
cyhyZWdUMiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihQcm94
eU9iamVjdFR5cGUpKSk7CisKICAgICAvLyBMb2FkIHRoZSBwcm90b3R5cGUgb2YgdGhlIGNlbGwg
aW4gcmVnVDIuICBJZiB0aGlzIGlzIGVxdWFsIHRvIHJlZ1QxIC0gV0lOIQogICAgIC8vIE90aGVy
d2lzZSwgY2hlY2sgaWYgd2UndmUgaGl0IG51bGwgLSBpZiB3ZSBoYXZlIHRoZW4gZHJvcCBvdXQg
b2YgdGhlIGxvb3AsIGlmIG5vdCBnbyBhZ2Fpbi4KICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKQEAgLTI2Myw2ICsyNjUsNyBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihJbnN0cnVjCiAgICAgbGlua1Nsb3dD
YXNlSWZOb3RKU0NlbGwoaXRlciwgdmFsdWUpOwogICAgIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxs
KGl0ZXIsIHByb3RvKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CisgICAgbGlua1Nsb3dDYXNl
KGl0ZXIpOwogCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7CiAgICAgZW1pdExv
YWQocHJvdG8sIHJlZ1QzLCByZWdUMik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE5NzU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgbW92ZShUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCByZWdUMCk7CiAgICAgTGFi
ZWwgbG9vcCh0aGlzKTsKIAorICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoRXF1YWwsIEFkZHJlc3Mo
cmVnVDIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoUHJveHlP
YmplY3RUeXBlKSkpOworCiAgICAgLy8gTG9hZCB0aGUgcHJvdG90eXBlIG9mIHRoZSBvYmplY3Qg
aW4gcmVnVDIuICBJZiB0aGlzIGlzIGVxdWFsIHRvIHJlZ1QxIC0gV0lOIQogICAgIC8vIE90aGVy
d2lzZSwgY2hlY2sgaWYgd2UndmUgaGl0IG51bGwgLSBpZiB3ZSBoYXZlIHRoZW4gZHJvcCBvdXQg
b2YgdGhlIGxvb3AsIGlmIG5vdCBnbyBhZ2Fpbi4KICAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdU
MiwgcmVnVDIsIHJlZ1QzKTsKQEAgLTg1Nyw2ICs4NTksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaW5zdGFuY2VvZihJbnN0cnVjCiAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwg
dmFsdWUpOwogICAgIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIHByb3RvKTsKICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHByb3RvLCByZWdUMSk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mLCBk
c3QsIHJlZ1QwLCByZWdUMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE5NzU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NzksOCArMTc3OSw2
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4KICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBwcm90
byA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvdG8pOwogICAgIAotICAgIEFTU0VSVCghdmFs
dWUuaXNPYmplY3QoKSB8fCAhcHJvdG8uaXNPYmplY3QoKSk7Ci0KICAgICBib29sIHJlc3VsdCA9
IEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZXhlYywgdmFsdWUsIHByb3RvKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxOTc1OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTkxLDYgKzE5MSw3IEBAIHR5cGVkZWYgaW50NjRfdCBKSVRfT1BFUkFUSU9OKCpRX0pJ
VE9wZXIKIHR5cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRPcGVyYXRpb25fRCko
ZG91YmxlKTsKIHR5cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRPcGVyYXRpb25f
RSkoRXhlY1N0YXRlKik7CiB0eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAoKlpfSklUT3Bl
cmF0aW9uX0VDKShFeGVjU3RhdGUqLCBKU0NlbGwqKTsKK3R5cGVkZWYgaW50MzJfdCBKSVRfT1BF
UkFUSU9OICgqWl9KSVRPcGVyYXRpb25fRUNDKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBKU0NlbGwq
KTsKIHR5cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRPcGVyYXRpb25fRUdDKShF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCopOwogdHlwZWRlZiBpbnQzMl90IEpJ
VF9PUEVSQVRJT04gKCpaX0pJVE9wZXJhdGlvbl9FU0pzcykoRXhlY1N0YXRlKiwgc2l6ZV90LCBK
U1N0cmluZyopOwogdHlwZWRlZiBpbnQzMl90IEpJVF9PUEVSQVRJT04gKCpaX0pJVE9wZXJhdGlv
bl9FSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxOTc1OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MjYsNyArNTI2LDYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2luc3RhbmNlbwogICAgIExMSU5UX0JFR0lOKCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5U
X09QX0MoMikuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcHJvdG8gPSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKTsKLSAgICBBU1NFUlQoIXZhbHVlLmlzT2JqZWN0KCkgfHwgIXByb3RvLmlzT2JqZWN0
KCkpOwogICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0
YW5jZShleGVjLCB2YWx1ZSwgcHJvdG8pKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShy
ZXZpc2lvbiAxOTc1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTIwNiwzNCArMTIwNiw2IEBA
IF9sbGludF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlOgogICAgIHN0b3JlaSAxLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgZGlzcGF0Y2goNCkKIAotX2xsaW50X29wX2luc3RhbmNl
b2Y6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCi0g
ICAgbG9hZGkgMTJbUENdLCB0MAotICAgIGxvYWRpIDRbUENdLCB0MwotICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCi0g
ICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cK
LSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQotICAgIAotICAgICMgUmVnaXN0ZXIg
c3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCi0gICAgbW92ZSAxLCB0MAotLm9wSW5z
dGFuY2VvZkxvb3A6Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgdDIKLSAg
ICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCi0g
ICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCi0gICAgYnRpbnogdDIsIC5vcEluc3Rh
bmNlb2ZMb29wCi0KLSAgICBtb3ZlIDAsIHQwCi0ub3BJbnN0YW5jZW9mRG9uZToKLSAgICBzdG9y
ZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCi0gICAgc3RvcmVpIHQwLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCi0gICAgZGlzcGF0Y2goNCkKLQotLm9wSW5zdGFuY2VvZlNs
b3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaW5zdGFuY2VvZikKLSAgICBk
aXNwYXRjaCg0KQotCiBfbGxpbnRfb3BfaW5zdGFuY2VvZl9jdXN0b206CiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2luc3RhbmNlb2ZfY3Vz
dG9tKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE5NzU5MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDkzLDM0ICsxMDkzLDYgQEAgX2xsaW50X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2U6CiAg
ICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfaW5zdGFuY2VvZjoKLSAgICB0cmFjZUV4ZWN1
dGlvbigpCi0gICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KLSAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMywgdDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQxLCAub3BJ
bnN0YW5jZW9mU2xvdykKLSAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDFdLCBPYmplY3RUeXBlLCAu
b3BJbnN0YW5jZW9mU2xvdwotICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKLSAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQotICAg
IAotICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCi0gICAg
bW92ZSAxLCB0MAotLm9wSW5zdGFuY2VvZkxvb3A6Ci0gICAgbG9hZFN0cnVjdHVyZUFuZENsb2Ji
ZXJGaXJzdEFyZyh0MiwgdDMpCi0gICAgbG9hZHEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVt0M10s
IHQyCi0gICAgYnFlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCi0gICAgYnRxeiB0MiwgdGFn
TWFzaywgLm9wSW5zdGFuY2VvZkxvb3AKLQotICAgIG1vdmUgMCwgdDAKLS5vcEluc3RhbmNlb2ZE
b25lOgotICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAotICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigx
LCB0MykKLSAgICBzdG9yZXEgdDAsIFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKDQpCi0KLS5v
cEluc3RhbmNlb2ZTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2luc3Rh
bmNlb2YpCi0gICAgZGlzcGF0Y2goNCkKLQogX2xsaW50X29wX2luc3RhbmNlb2ZfY3VzdG9tOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9p
bnN0YW5jZW9mX2N1c3RvbSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE5NzU5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBj
b3B5KQpAQCAtMTcwNiw2ICsxNzA2LDExIEBAIF9sbGludF9vcF9jb3B5X3Jlc3Q6CiAgICAgY2Fs
bFNsb3dQYXRoKF9zbG93X3BhdGhfY29weV9yZXN0KQogICAgIGRpc3BhdGNoKDQpCiAKK19sbGlu
dF9vcF9pbnN0YW5jZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9pbnN0YW5jZW9mKQorICAgIGRpc3BhdGNoKDQpCisKIAogIyBMYXN0
bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBv
cnQgYWxsIG9wY29kZXMuCiAjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4g
dXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxOTc1
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBz
dGQ6OnBhaXI8U3BlY2llc0NvCiAgICAgICAgIC8vIEZhc3QgcGF0aCBpbiB0aGUgbm9ybWFsIGNh
c2Ugd2hlcmUgdGhlIHVzZXIgaGFzIG5vdCBzZXQgYW4gb3duIGNvbnN0cnVjdG9yIGFuZCB0aGUg
QXJyYXkucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzIG5vcm1hbC4KICAgICAgICAgLy8gV2UgbmVl
ZCBwcm90b3R5cGUgY2hlY2sgZm9yIHN1YmNsYXNzZXMgb2YgQXJyYXksIHdoaWNoIGFyZSBBcnJh
eSBvYmplY3RzIGJ1dCBoYXZlIGEgZGlmZmVyZW50IHByb3RvdHlwZSBieSBkZWZhdWx0LgogICAg
ICAgICBpZiAoTElLRUxZKCF0aGlzT2JqZWN0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkKLSAgICAg
ICAgICAgICYmIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5hcnJheVByb3RvdHlwZSgpID09
IHRoaXNPYmplY3QtPnByb3RvdHlwZSgpCisgICAgICAgICAgICAmJiB0aGlzT2JqZWN0LT5nbG9i
YWxPYmplY3QoKS0+YXJyYXlQcm90b3R5cGUoKSA9PSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVE
aXJlY3QoKQogICAgICAgICAgICAgJiYgIXRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5hcnJh
eVByb3RvdHlwZSgpLT5kaWRDaGFuZ2VDb25zdHJ1Y3Rvck9yU3BlY2llc1Byb3BlcnRpZXMoKSkp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoU3BlY2llc0NvbnN0cnVjdFJlc3Vs
dDo6RmFzdFBhdGgsIG51bGxwdHIpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24gMTk3NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiw2ICsxMTIsOSBA
QCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYgYm9vbCAoKlNldFByb3RvdHlwZUZ1
bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3dJZkNhbnRTZXQpOwogICAgIFNldFByb3RvdHlwZUZ1bmN0aW9uUHRyIHNldFByb3RvdHlwZTsK
IAorICAgIHR5cGVkZWYgSlNWYWx1ZSAoKkdldFByb3RvdHlwZUZ1bmN0aW9uUHRyKShKU09iamVj
dCosIEV4ZWNTdGF0ZSopOworICAgIEdldFByb3RvdHlwZUZ1bmN0aW9uUHRyIGdldFByb3RvdHlw
ZTsKKwogICAgIHR5cGVkZWYgdm9pZCAoKkR1bXBUb1N0cmVhbUZ1bmN0aW9uUHRyKShjb25zdCBK
U0NlbGwqLCBQcmludFN0cmVhbSYpOwogICAgIER1bXBUb1N0cmVhbUZ1bmN0aW9uUHRyIGR1bXBU
b1N0cmVhbTsKIApAQCAtMTY2LDYgKzE2OSw3IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAg
ICAgICZDbGFzc05hbWU6OnByZXZlbnRFeHRlbnNpb25zLCBcCiAgICAgICAgICZDbGFzc05hbWU6
OmlzRXh0ZW5zaWJsZSwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpzZXRQcm90b3R5cGUsIFwKKyAg
ICAgICAgJkNsYXNzTmFtZTo6Z2V0UHJvdG90eXBlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmR1
bXBUb1N0cmVhbSwgXAogICAgICAgICAmQ2xhc3NOYW1lOjplc3RpbWF0ZWRTaXplIFwKICAgICB9
LCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxOTc1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3
ICsxNjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAgICAg
fQogCiAgICAgSlNTdHJpbmcqIG5hbWUgPSB0YXJnZXQuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5uYW1lKS50b1N0cmluZyhleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwg
ZXhlYy0+YXJndW1lbnQoMCksIGJvdW5kQXJncywgbGVuZ3RoLCBuYW1lLT52YWx1ZShleGVjKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0s
IGV4ZWMsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBleGVjLT5hcmd1bWVudCgwKSwgYm91
bmRBcmdzLCBsZW5ndGgsIG5hbWUtPnZhbHVlKGV4ZWMpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxOTc1OTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjksNyArMTI5LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
Q29sbGF0bwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVt
b3J5RXJyb3Ioc3RhdGUpKTsKIAogICAgICAgICAvLyBjLiBMZXQgYmMgYmUgQm91bmRGdW5jdGlv
bkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCi0gICAgICAgIGJvdW5kQ29tcGFyZSA9IEpTQm91
bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgY29sbGF0
b3IsIGJvdW5kQXJncywgMiwgQVNDSUlMaXRlcmFsKCJjb21wYXJlIikpOworICAgICAgICBib3Vu
ZENvbXBhcmUgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgc3RhdGUsIGdsb2JhbE9iamVj
dCwgdGFyZ2V0T2JqZWN0LCBjb2xsYXRvciwgYm91bmRBcmdzLCAyLCBBU0NJSUxpdGVyYWwoImNv
bXBhcmUiKSk7CisgICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICAgICAgLy8gZC4gU2V0IGNvbGxhdG9y
LltbYm91bmRDb21wYXJlXV0gdG8gYmMuCiAgICAgICAgIGNvbGxhdG9yLT5zZXRCb3VuZENvbXBh
cmUodm0sIGJvdW5kQ29tcGFyZSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAxOTc1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyAr
MTM0LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbQogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3Ioc3RhdGUp
KTsKIAogICAgICAgICAvLyBjLiBMZXQgYmYgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3Ro
aXMgdmFsdWXCuykuCi0gICAgICAgIGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBkdGYsIGJvdW5kQXJncywgMSwgQVND
SUlMaXRlcmFsKCJmb3JtYXQiKSk7CisgICAgICAgIGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0
aW9uOjpjcmVhdGUodm0sIHN0YXRlLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZHRmLCBi
b3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IikpOworICAgICAgICBpZiAodm0uZXhj
ZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7
CiAgICAgICAgIC8vIGQuIFNldCBkdGYuW1tib3VuZEZvcm1hdF1dIHRvIGJmLgogICAgICAgICBk
dGYtPnNldEJvdW5kRm9ybWF0KHZtLCBib3VuZEZvcm1hdCk7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5NzU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjIsNyArMTIyLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVy
RgogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJy
b3Ioc3RhdGUpKTsKIAogICAgICAgICAvLyBjLiBMZXQgYmYgYmUgQm91bmRGdW5jdGlvbkNyZWF0
ZShGLCDCq3RoaXMgdmFsdWXCuykuCi0gICAgICAgIGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0
aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBuZiwgYm91bmRBcmdz
LCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpKTsKKyAgICAgICAgYm91bmRGb3JtYXQgPSBKU0Jv
dW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgc3RhdGUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0
LCBuZiwgYm91bmRBcmdzLCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpKTsKKyAgICAgICAgaWYg
KHZtLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKCkpOwogICAgICAgICAvLyBkLiBTZXQgbmYuW1tib3VuZEZvcm1hdF1dIHRvIGJmLgogICAg
ICAgICBuZi0+c2V0Qm91bmRGb3JtYXQodm0sIGJvdW5kRm9ybWF0KTsKICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJ
KHJldmlzaW9uIDE5NzU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91
bmRGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDkgKzg3LDExIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgaGFzSW5zdGFuY2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihib3VuZE9iamVjdC0+dGFyZ2V0RnVuY3Rpb24oKS0+aGFzSW5zdGFuY2Uo
ZXhlYywgdmFsdWUpKSk7CiB9CiAKLWlubGluZSBTdHJ1Y3R1cmUqIGdldEJvdW5kRnVuY3Rpb25T
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCog
dGFyZ2V0RnVuY3Rpb24pCitpbmxpbmUgU3RydWN0dXJlKiBnZXRCb3VuZEZ1bmN0aW9uU3RydWN0
dXJlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24pCiB7Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0
YXJnZXRGdW5jdGlvbi0+c3RydWN0dXJlKHZtKS0+c3RvcmVkUHJvdG90eXBlKCk7CisgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSB0YXJnZXRGdW5jdGlvbi0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsK
KyAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRKU0Z1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1
bmN0aW9uKj4odGFyZ2V0RnVuY3Rpb24pOwogCiAgICAgLy8gV2Ugb25seSBjYWNoZSB0aGUgc3Ry
dWN0dXJlIG9mIHRoZSBib3VuZCBmdW5jdGlvbiBpZiB0aGUgYmluZGVlIGlzIGEgSlNGdW5jdGlv
biBzaW5jZSB0aGVyZQpAQCAtMTE3LDEzICsxMTksMTUgQEAgaW5saW5lIFN0cnVjdHVyZSogZ2V0
Qm91bmRGdW5jdGlvblN0cnVjdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTQm91bmRGdW5j
dGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBK
U1ZhbHVlIGJvdW5kQXJncywgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lKQorSlNCb3Vu
ZEZ1bmN0aW9uKiBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9u
LCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAg
Q29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gSlNDOjpnZXRDb25zdHJ1Y3REYXRhKHRhcmdl
dEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhKTsKICAgICBib29sIGNhbkNvbnN0cnVjdCA9IGNvbnN0
cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZU5vbmU7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihib3VuZEZ1bmN0aW9uQ2FsbCwgY2FuQ29uc3Ry
dWN0ID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVj
dG9yLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kIHJlc3VsdCIpKTsKLSAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24pOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
Z2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSh2bSwgZXhlYywgZ2xvYmFsT2JqZWN0LCB0YXJnZXRG
dW5jdGlvbik7CisgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTQm91bmRGdW5jdGlvbj4odm0uaGVhcCkpIEpTQm91bmRGdW5jdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHRhcmdldEZ1bmN0aW9uLCBib3VuZFRoaXMs
IGJvdW5kQXJncyk7CiAKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFi
bGUsIGxlbmd0aCwgbWFrZVN0cmluZygiYm91bmQgIiwgbmFtZSkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgJKHJldmlzaW9uIDE5
NzU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEpT
RnVuY3Rpb24gQmFzZTsKICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSB+SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSAmIEJhc2U6OlN0cnVjdHVyZUZsYWdzOwog
Ci0gICAgc3RhdGljIEpTQm91bmRGdW5jdGlvbiogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU1ZhbHVlIGJv
dW5kQXJncywgaW50LCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgSlNCb3VuZEZ1bmN0aW9u
KiBjcmVhdGUoVk0mLCBFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0YXJn
ZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTVmFsdWUgYm91bmRBcmdzLCBpbnQsIGNv
bnN0IFN0cmluZyYpOwogICAgIAogICAgIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxOTc1OTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRl
KiAKICAgICBKU1ZhbHVlIHByb3RvdHlwZTsKICAgICBpZiAocHJvcGVydHlOYW1lICE9IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pIHsKICAgICAgICAgZm9yICg7ICFvYmot
PnN0cnVjdHVyZSgpLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGlu
Z1Byb3RvKCk7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKLSAgICAgICAgICAgIHByb3Rv
dHlwZSA9IG9iai0+cHJvdG90eXBlKCk7CisgICAgICAgICAgICBwcm90b3R5cGUgPSBvYmotPmdl
dFByb3RvdHlwZURpcmVjdCgpOwogICAgICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkg
ewogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdy
aXRlRXJyb3IpOwpAQCAtMTc4LDcgKzE3OCw5IEBAIHZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRp
dmUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAg
cHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKKyAgICAgICAgcHJvdG90eXBlID0gb2JqLT5n
ZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAJKHJldmlzaW9uIDE5NzU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw0ICsyODUsOSBAQCBib29sIEpT
Q2VsbDo6c2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhlCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAorSlNWYWx1ZSBKU0NlbGw6OmdldFByb3RvdHlwZShKU09iamVjdCos
IEV4ZWNTdGF0ZSopCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAkocmV2aXNpb24gMTk3NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw2ICsyMDksNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBwcmV2ZW50RXh0ZW5zaW9ucyhK
U09iamVjdCosIEV4ZWNTdGF0ZSopOwogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
IGJvb2wgaXNFeHRlbnNpYmxlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7CiAgICAgc3RhdGljIE5P
X1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBzZXRQcm90b3R5cGUoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBKU1ZhbHVlLCBib29sKTsKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBK
U1ZhbHVlIGdldFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0ZSopOwogCiAgICAgc3RhdGlj
IFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpT
VmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTk3NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTIsNyArNjEy
LDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcgogICAgICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAiJHZtIiksIGRvbGxhclZNLCBEb250RW51bSk7CiAgICAgfQogCi0gICAgcmVzZXRQcm90b3R5
cGUodm0sIHByb3RvdHlwZSgpKTsKKyAgICByZXNldFByb3RvdHlwZSh2bSwgZ2V0UHJvdG90eXBl
RGlyZWN0KCkpOwogfQogCiBib29sIEpTR2xvYmFsT2JqZWN0OjpoYXNMZWdhY3lQcm9maWxlcigp
IGNvbnN0CkBAIC02NjgsOCArNjY4LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6YWRkRnVuY3Rp
b24oRXhlY1N0YQogc3RhdGljIGlubGluZSBKU09iamVjdCogbGFzdEluUHJvdG90eXBlQ2hhaW4o
SlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBKU09iamVjdCogbyA9IG9iamVjdDsKLSAgICB3aGls
ZSAoby0+cHJvdG90eXBlKCkuaXNPYmplY3QoKSkKLSAgICAgICAgbyA9IGFzT2JqZWN0KG8tPnBy
b3RvdHlwZSgpKTsKKyAgICB3aGlsZSAoby0+Z2V0UHJvdG90eXBlRGlyZWN0KCkuaXNPYmplY3Qo
KSkKKyAgICAgICAgbyA9IGFzT2JqZWN0KG8tPmdldFByb3RvdHlwZURpcmVjdCgpKTsKICAgICBy
ZXR1cm4gbzsKIH0KIApAQCAtNzI1LDcgKzcyNSw3IEBAIGlubGluZSB2b2lkIE9iamVjdHNXaXRo
QnJva2VuSW5kZXhpbmdGaW4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3VycmVudC0+cHJvdG90eXBlKCk7
CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjdXJyZW50LT5nZXRQcm90b3R5cGVE
aXJlY3QoKTsKICAgICAgICAgaWYgKHByb3RvdHlwZVZhbHVlLmlzTnVsbCgpKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGN1cnJlbnQgPSBhc09iamVjdChwcm90b3R5cGVWYWx1ZSk7CkBA
IC03ODEsMjAgKzc4MSwyMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpoYXZlQUJhZFRpbWUoVk0m
IHZtCiBib29sIEpTR2xvYmFsT2JqZWN0OjpvYmplY3RQcm90b3R5cGVJc1NhbmUoKQogewogICAg
IHJldHVybiAhaGFzSW5kZXhlZFByb3BlcnRpZXMobV9vYmplY3RQcm90b3R5cGUtPmluZGV4aW5n
VHlwZSgpKQotICAgICAgICAmJiBtX29iamVjdFByb3RvdHlwZS0+cHJvdG90eXBlKCkuaXNOdWxs
KCk7CisgICAgICAgICYmIG1fb2JqZWN0UHJvdG90eXBlLT5nZXRQcm90b3R5cGVEaXJlY3QoKS5p
c051bGwoKTsKIH0KIAogYm9vbCBKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5cGVDaGFpbklz
U2FuZSgpCiB7CiAgICAgcmV0dXJuICFoYXNJbmRleGVkUHJvcGVydGllcyhtX2FycmF5UHJvdG90
eXBlLT5pbmRleGluZ1R5cGUoKSkKLSAgICAgICAgJiYgbV9hcnJheVByb3RvdHlwZS0+cHJvdG90
eXBlKCkgPT0gbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkKKyAgICAgICAgJiYgbV9hcnJheVByb3Rv
dHlwZS0+Z2V0UHJvdG90eXBlRGlyZWN0KCkgPT0gbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkKICAg
ICAgICAgJiYgb2JqZWN0UHJvdG90eXBlSXNTYW5lKCk7CiB9CiAKIGJvb2wgSlNHbG9iYWxPYmpl
Y3Q6OnN0cmluZ1Byb3RvdHlwZUNoYWluSXNTYW5lKCkKIHsKICAgICByZXR1cm4gIWhhc0luZGV4
ZWRQcm9wZXJ0aWVzKG1fc3RyaW5nUHJvdG90eXBlLT5pbmRleGluZ1R5cGUoKSkKLSAgICAgICAg
JiYgbV9zdHJpbmdQcm90b3R5cGUtPnByb3RvdHlwZSgpID09IG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpCisgICAgICAgICYmIG1fc3RyaW5nUHJvdG90eXBlLT5nZXRQcm90b3R5cGVEaXJlY3QoKSA9
PSBtX29iamVjdFByb3RvdHlwZS5nZXQoKQogICAgICAgICAmJiBvYmplY3RQcm90b3R5cGVJc1Nh
bmUoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCShyZXZpc2lvbiAxOTc1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsNyArMzc4LDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KHZtLCB0
aGlzKTsKICAgICAgICAgbV9ydW50aW1lRmxhZ3MgPSBtX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxl
LT5qYXZhU2NyaXB0UnVudGltZUZsYWdzKHRoaXMpOwogICAgICAgICBpbml0KHZtKTsKLSAgICAg
ICAgc2V0R2xvYmFsVGhpcyh2bSwgSlNQcm94eTo6Y3JlYXRlKHZtLCBKU1Byb3h5OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIHByb3RvdHlwZSgpLCBQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSks
IHRoaXMpKTsKKyAgICAgICAgc2V0R2xvYmFsVGhpcyh2bSwgSlNQcm94eTo6Y3JlYXRlKHZtLCBK
U1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGdldFByb3RvdHlwZURpcmVjdCgpLCBQ
dXJlRm9yd2FyZGluZ1Byb3h5VHlwZSksIHRoaXMpKTsKICAgICB9CiAKICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNWYWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5jcHAJKHJldmlzaW9uIDE5NzU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg0LDggKzc4
NCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1QKIAogY2xhc3Mg
R2xvYmFsRnVuY1Byb3RvR2V0dGVyRnVuY3RvciB7CiBwdWJsaWM6Ci0gICAgR2xvYmFsRnVuY1By
b3RvR2V0dGVyRnVuY3RvcihKU09iamVjdCogdGhpc09iamVjdCkKLSAgICAgICAgOiBtX2hhc1Nr
aXBwZWRGaXJzdEZyYW1lKGZhbHNlKQorICAgIEdsb2JhbEZ1bmNQcm90b0dldHRlckZ1bmN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCkKKyAgICAgICAgOiBtX2V4ZWMo
ZXhlYykKKyAgICAgICAgLCBtX2hhc1NraXBwZWRGaXJzdEZyYW1lKGZhbHNlKQogICAgICAgICAs
IG1fdGhpc09iamVjdCh0aGlzT2JqZWN0KQogICAgICAgICAsIG1fcmVzdWx0KEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKSkKICAgICB7CkBAIC04MDEsMTIgKzgwMiwxMyBAQCBwdWJsaWM6
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV90aGlzT2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9t
KHZpc2l0b3ItPmNhbGxGcmFtZSgpKSkKLSAgICAgICAgICAgIG1fcmVzdWx0ID0gSlNWYWx1ZTo6
ZW5jb2RlKG1fdGhpc09iamVjdC0+cHJvdG90eXBlKCkpOworICAgICAgICAgICAgbV9yZXN1bHQg
PSBKU1ZhbHVlOjplbmNvZGUobV90aGlzT2JqZWN0LT5nZXRQcm90b3R5cGUobV9leGVjLT52bSgp
LCBtX2V4ZWMpKTsKIAogICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwogICAgIH0K
IAogcHJpdmF0ZToKKyAgICBFeGVjU3RhdGUqIG1fZXhlYzsKICAgICBib29sIG1faGFzU2tpcHBl
ZEZpcnN0RnJhbWU7CiAgICAgSlNPYmplY3QqIG1fdGhpc09iamVjdDsKICAgICBFbmNvZGVkSlNW
YWx1ZSBtX3Jlc3VsdDsKQEAgLTgyMiw3ICs4MjQsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jUAogICAgIGlmICghdGhpc09iamVjdCkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShleGVjLT50aGlzVmFsdWUoKS5zeW50aGVzaXplUHJvdG90eXBlKGV4
ZWMpKTsKIAotICAgIEdsb2JhbEZ1bmNQcm90b0dldHRlckZ1bmN0b3IgZnVuY3Rvcih0aGlzT2Jq
ZWN0KTsKKyAgICBHbG9iYWxGdW5jUHJvdG9HZXR0ZXJGdW5jdG9yIGZ1bmN0b3IoZXhlYywgdGhp
c09iamVjdCk7CisgICAgLy8gVGhpcyBjYW4gdGhyb3cgYnV0IGl0J3MganVzdCB1bm5lZWRlZCBl
eHRyYSB3b3JrIHRvIGNoZWNrIGZvciBpdC4gVGhlIHJldHVybgorICAgIC8vIHZhbHVlIGZyb20g
dGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSBmcm9tIGEgaG9z
dCBjYWxsLgorICAgIC8vIFRoZXJlZm9yZSwgdGhlIHJldHVybiB2YWx1ZSBpcyBvbmx5IHVzZWQg
aWYgdGhlcmUgd2Fzbid0IGFuIGV4Y2VwdGlvbi4KICAgICBleGVjLT5pdGVyYXRlKGZ1bmN0b3Ip
OwogICAgIHJldHVybiBmdW5jdG9yLnJlc3VsdCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAkocmV2
aXNpb24gMTk3NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2Fs
RW52aXJvbm1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgSlNM
ZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnQKICAgICAvLyBXZSBkb24ndCBjYWxsIHRo
cm91Z2ggdG8gSlNPYmplY3QgYmVjYXVzZSB0aGVyZSdzIG5vIHdheSB0byBnaXZlIGEgCiAgICAg
Ly8gbGV4aWNhbCBlbnZpcm9ubWVudCBvYmplY3QgZ2V0dGVyIHByb3BlcnRpZXMgb3IgYSBwcm90
b3R5cGUuCiAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
KCkpOwotICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5wcm90b3R5cGUoKS5pc051bGwoKSk7CisgICAg
QVNTRVJUKHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpLmlzTnVsbCgpKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAJKHJldmlzaW9uIDE5NzU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcyLDcgKzI3Miw3IEBAIFN0
cmluZyBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZShKU08KIHsKICAgICBTdHJpbmcgcHJv
dG90eXBlRnVuY3Rpb25OYW1lOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG9iamVjdC0+Z2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QtPnN0
cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGUoKSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LT5nZXRQcm90
b3R5cGVEaXJlY3QoKSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSk7CiAgICAgUHJvcGVydHlOYW1lIGNvbnN0cnVjdG9yKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
b25zdHJ1Y3Rvcik7CiAgICAgaWYgKG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGNvbnN0
cnVjdG9yLCBzbG90KSkgewogICAgICAgICBpZiAoc2xvdC5pc1ZhbHVlKCkpIHsKQEAgLTQzMCwx
MSArNDMwLDE0IEBAIHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiAKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAob2JqLT50eXBlKCkgPT0gUHJveHlP
YmplY3RUeXBlICYmIHByb3BlcnR5TmFtZSAhPSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3Jl
UHJvdG8pIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgdW5jb25kaXRpb25h
bGx5IHBlcmZvcm0gW1tTZXRdXSBoZXJlLgorICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBkbyBt
b3JlIGJlY2F1c2UgdGhpcyBpcyBvYnNlcnZhYmxlIGJlaGF2aW9yLgorICAgICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAxMgogICAgICAgICAg
ICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4ob2JqKTsKICAgICAg
ICAgICAgIHByb3h5LT5Qcm94eU9iamVjdDo6cHV0KHByb3h5LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IG9iai0+cHJvdG90eXBlKCk7CisgICAgICAgIEpTVmFsdWUgcHJv
dG90eXBlID0gb2JqLT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICAgICAgaWYgKHByb3RvdHlw
ZS5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBvYmogPSBhc09iamVjdChw
cm90b3R5cGUpOwpAQCAtMTIwMSw3ICsxMjA0LDcgQEAgYm9vbCBKU09iamVjdDo6c2V0UHJvdG90
eXBlV2l0aEN5Y2xlQ2hlYwogewogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPnRvVGhpcyh0
aGlzLCBleGVjLCBOb3RTdHJpY3RNb2RlKSA9PSB0aGlzKTsKIAotICAgIGlmICh0aGlzLT5wcm90
b3R5cGUoKSA9PSBwcm90b3R5cGUpCisgICAgaWYgKHRoaXMtPmdldFByb3RvdHlwZURpcmVjdCgp
ID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBib29sIGlzRXh0ZW5z
aWJsZSA9IHRoaXMtPmlzRXh0ZW5zaWJsZShleGVjKTsKQEAgLTEyMTUsMTMgKzEyMTgsMTYgQEAg
Ym9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlYwogICAgIH0KIAogICAgIEpT
VmFsdWUgbmV4dFByb3RvdHlwZSA9IHByb3RvdHlwZTsKKyAgICBNZXRob2RUYWJsZTo6R2V0UHJv
dG90eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90
b3R5cGU7CiAgICAgd2hpbGUgKG5leHRQcm90b3R5cGUgJiYgbmV4dFByb3RvdHlwZS5pc09iamVj
dCgpKSB7CiAgICAgICAgIGlmIChuZXh0UHJvdG90eXBlID09IHRoaXMpIHsKICAgICAgICAgICAg
IGlmIChzaG91bGRUaHJvd0lmQ2FudFNldCkKICAgICAgICAgICAgICAgICB2bS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImN5Y2xpYyBfX3Byb3Rv
X18gdmFsdWUiKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAg
ICAgIG5leHRQcm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJvdG90eXBlKS0+cHJvdG90eXBlKCk7
CisgICAgICAgIGlmIChVTkxJS0VMWShhc09iamVjdChuZXh0UHJvdG90eXBlKS0+bWV0aG9kVGFi
bGUodm0pLT5nZXRQcm90b3R5cGUgIT0gZGVmYXVsdEdldFByb3RvdHlwZSkpCisgICAgICAgICAg
ICBicmVhazsgLy8gV2UncmUgZG9uZS4gU2V0IHRoZSBwcm90b3R5cGUuCisgICAgICAgIG5leHRQ
cm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJvdG90eXBlKS0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7
CiAgICAgfQogICAgIHNldFByb3RvdHlwZURpcmVjdCh2bSwgcHJvdG90eXBlKTsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTEyMzIsNiArMTIzOCwxMSBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5
cGUoSlNPYmplY3QqIG9iCiAgICAgcmV0dXJuIG9iamVjdC0+c2V0UHJvdG90eXBlV2l0aEN5Y2xl
Q2hlY2soZXhlYy0+dm0oKSwgZXhlYywgcHJvdG90eXBlLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7
CiB9CiAKK0pTVmFsdWUgSlNPYmplY3Q6OmdldFByb3RvdHlwZShKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqKQoreworICAgIHJldHVybiBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOwor
fQorCiBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgcHJvdG90eXBlLCBib29sIHNob3VsZFRocm93SWZDYW50U2V0KQogewogICAgIHJl
dHVybiBtZXRob2RUYWJsZSh2bSktPnNldFByb3RvdHlwZSh0aGlzLCBleGVjLCBwcm90b3R5cGUs
IHNob3VsZFRocm93SWZDYW50U2V0KTsKQEAgLTE1NzIsMTIgKzE1ODMsMTkgQEAgYm9vbCBKU09i
amVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKEV4ZWNTdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QodmFsdWUpOwotICAgIHdoaWxlICgob2JqZWN0ID0gb2JqZWN0LT5wcm90b3R5cGUo
KS5nZXRPYmplY3QoKSkpIHsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBKU1ZhbHVlIG9i
amVjdFZhbHVlID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAgICAgICBpZiAo
VU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAoIW9iamVjdFZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KG9iamVjdFZhbHVlKTsKICAgICAgICAgaWYg
KHByb3RvID09IG9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKEV4ZWNTdGF0ZSog
ZXhlYykKQEAgLTE1OTAsMjQgKzE2MDgsMjkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcml2YQogCiB2b2lkIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFt
ZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBtb2RlKTsKLSAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQorICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blBy
b3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBpZiAo
VU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAob2Jq
ZWN0LT5wcm90b3R5cGUoKS5pc051bGwoKSkKKyAgICBKU1ZhbHVlIG5leHRQcm90byA9IG9iamVj
dC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKKyAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9u
KCkpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG5leHRQcm90by5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU09iamVjdCogcHJv
dG90eXBlID0gYXNPYmplY3Qob2JqZWN0LT5wcm90b3R5cGUoKSk7CisgICAgSlNPYmplY3QqIHBy
b3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQcm90byk7CiAgICAgd2hpbGUoMSkgewogICAgICAgICBp
ZiAocHJvdG90eXBlLT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXMoKSkgewogICAgICAgICAgICAgcHJvdG90eXBlLT5tZXRob2RUYWJsZSh2bSktPmdl
dFByb3BlcnR5TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFi
bGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1l
cywgbW9kZSk7Ci0gICAgICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCisg
ICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG5leHRQcm90byA9IHByb3RvdHlwZS0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsK
KyAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgSlNWYWx1ZSBuZXh0UHJvdG8gPSBwcm90b3R5cGUtPnByb3RvdHlwZSgpOwog
ICAgICAgICBpZiAobmV4dFByb3RvLmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIHByb3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQcm90byk7CkBAIC0yMDI3LDcgKzIwNTAsNyBA
QCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5
cGVWYWx1ZSA9IGN1cnJlbnQtPnByb3RvdHlwZSgpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlw
ZVZhbHVlID0gY3VycmVudC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CiAgICAgICAgIGlmIChwcm90
b3R5cGVWYWx1ZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
CkBAIC0yMDM3LDcgKzIwNjAsNyBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQ
dXRCeUluCiAKIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhv
bGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93KQogewotICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBwcm90b3R5cGUoKTsKKyAg
ICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gZ2V0UHJvdG90eXBlRGlyZWN0KCk7CiAgICAgaWYg
KHByb3RvdHlwZVZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBA
IC0zMDI5LDEzICszMDUyLDE2IEBAIHZvaWQgSlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5h
bWVzKEoKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywg
RW51bWVyYXRpb25Nb2RlKG1vZGUsIEpTT2JqZWN0UHJvcGVydGllc01vZGU6OkV4Y2x1ZGUpKTsK
LSAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQorICAgIGlmIChVTkxJS0VM
WSh2bS5leGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChvYmplY3QtPnBy
b3RvdHlwZSgpLmlzTnVsbCgpKQorICAgIEpTVmFsdWUgbmV4dFByb3RvID0gb2JqZWN0LT5nZXRQ
cm90b3R5cGUodm0sIGV4ZWMpOworICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAobmV4dFByb3RvLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBKU09iamVjdCogcHJvdG90eXBlID0gYXNPYmplY3Qob2JqZWN0LT5wcm90b3R5
cGUoKSk7CisgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQcm90byk7CiAg
ICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaWYgKHByb3RvdHlwZS0+c3RydWN0dXJlKHZtKS0+
dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkpIHsKICAgICAgICAgICAgIHBy
b3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSk7CkBAIC0zMDQ0LDcgKzMwNzAsOSBAQCB2b2lkIEpTT2Jq
ZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKCiAgICAgICAgIHByb3RvdHlwZS0+bWV0aG9k
VGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlO
YW1lcywgbW9kZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEpTVmFsdWUgbmV4dFByb3RvID0gcHJvdG90
eXBlLT5wcm90b3R5cGUoKTsKKyAgICAgICAgbmV4dFByb3RvID0gcHJvdG90eXBlLT5nZXRQcm90
b3R5cGUodm0sIGV4ZWMpOworICAgICAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQor
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAobmV4dFByb3RvLmlzTnVsbCgpKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIHByb3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQcm90byk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9u
IDE5NzU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsMTkgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBjYWxjdWxhdGVkQ2xhc3NOYW1lKEpTT2JqZWN0
Kik7CiAKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSgpIGNvbnN0OworICAgIC8vIFRoaXMgaXMgdGhl
IGZ1bGx5IHZpcnR1YWwgW1tHZXRQcm90b3R5cGVPZl1dIGludGVybmFsIGZ1bmN0aW9uIGRlZmlu
ZWQKKyAgICAvLyBpbiB0aGUgRUNNQVNjcmlwdCA2IHNwZWNpZmljYXRpb24uIFVzZSB0aGlzIHdo
ZW4gZG9pbmcgYSBbW0dldFByb3RvdHlwZU9mXV0gCisgICAgLy8gb3BlcmF0aW9uIGFzIGRpY3Rh
dGVkIGluIHRoZSBzcGVjaWZpY2F0aW9uLgorICAgIEpTVmFsdWUgZ2V0UHJvdG90eXBlKFZNJiwg
RXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTVmFsdWUgZ2V0UHJv
dG90eXBlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7CisgICAgLy8gVGhpcyBnZXRzIHRoZSBwcm90
b3R5cGUgZGlyZWN0bHkgb2ZmIG9mIHRoZSBzdHJ1Y3R1cmUuIFRoaXMgZG9lcyBub3QgZG8KKyAg
ICAvLyBkeW5hbWljIGRpc3BhdGNoIG9uIHRoZSBnZXRQcm90b3R5cGUgbWV0aG9kIHRhYmxlIG1l
dGhvZC4gSXQgaXMgbm90IHZhbGlkIAorICAgIC8vIHRvIHVzZSB0aGlzIHdoZW4gcGVyZm9ybWlu
ZyBhIFtbR2V0UHJvdG90eXBlT2ZdXSBvcGVyYXRpb24gaW4gdGhlIHNwZWNpZmljYXRpb24uCisg
ICAgLy8gSXQgaXMgdmFsaWQgdG8gdXNlIHRob3VnaCB3aGVuIHlvdSBrbm93IHRoYXQgeW91IHdh
bnQgdG8gZGlyZWN0bHkgZ2V0IGl0CisgICAgLy8gd2l0aG91dCBjb25zdWx0aW5nIHRoZSBtZXRo
b2QgdGFibGUuIFRoaXMgaXMgYWtpbiB0byBnZXR0aW5nIHRoZSBbW1Byb3RvdHlwZV1dCisgICAg
Ly8gaW50ZXJuYWwgZmllbGQgZGlyZWN0bHkgYXMgZGVzY3JpYmVkIGluIHRoZSBzcGVjaWZpY2F0
aW9uLgorICAgIEpTVmFsdWUgZ2V0UHJvdG90eXBlRGlyZWN0KCkgY29uc3Q7CisKICAgICAvLyBU
aGlzIHNldHMgdGhlIHByb3RvdHlwZSB3aXRob3V0IGNoZWNraW5nIGZvciBjeWNsZXMgYW5kIHdp
dGhvdXQKICAgICAvLyBkb2luZyBkeW5hbWljIGRpc3BhdGNoIG9uIFtbU2V0UHJvdG90eXBlT2Zd
XSBvcGVyYXRpb24gaW4gdGhlIHNwZWNpZmljYXRpb24uCiAgICAgLy8gSXQgaXMgbm90IHZhbGlk
IHRvIHVzZSB0aGlzIHdoZW4gcGVyZm9ybWluZyBhIFtbU2V0UHJvdG90eXBlT2ZdXSBvcGVyYXRp
b24gaW4KQEAgLTc1OSw3ICs3NzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsK
LSAgICAgICAgQVNTRVJUKHByb3RvdHlwZSgpLmlzTnVsbCgpIHx8IEhlYXA6OmhlYXAodGhpcykg
PT0gSGVhcDo6aGVhcChwcm90b3R5cGUoKSkpOworICAgICAgICBBU1NFUlQoZ2V0UHJvdG90eXBl
RGlyZWN0KCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFwKGdldFBy
b3RvdHlwZURpcmVjdCgpKSk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNPYmplY3Qo
KSk7CiAgICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAgfQpAQCAtMTEyNCwxMSArMTEz
NiwyMCBAQCBpbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KFZNJiB2bSwgU3RydWN0CiAgICAgdm0u
aGVhcC5hc2NyaWJlT3duZXIodGhpcywgYnV0dGVyZmx5KTsKIH0KIAotaW5saW5lIEpTVmFsdWUg
SlNPYmplY3Q6OnByb3RvdHlwZSgpIGNvbnN0CitpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0
UHJvdG90eXBlRGlyZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RydWN0dXJlKCktPnN0b3Jl
ZFByb3RvdHlwZSgpOwogfQogCitpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0UHJvdG90eXBl
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQoreworICAgIGF1dG8gZ2V0UHJvdG90eXBlTWV0aG9k
ID0gbWV0aG9kVGFibGUodm0pLT5nZXRQcm90b3R5cGU7CisgICAgTWV0aG9kVGFibGU6OkdldFBy
b3RvdHlwZUZ1bmN0aW9uUHRyIGRlZmF1bHRHZXRQcm90b3R5cGUgPSBKU09iamVjdDo6Z2V0UHJv
dG90eXBlOworICAgIGlmIChMSUtFTFkoZ2V0UHJvdG90eXBlTWV0aG9kID09IGRlZmF1bHRHZXRQ
cm90b3R5cGUpKQorICAgICAgICByZXR1cm4gZ2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgcmV0
dXJuIGdldFByb3RvdHlwZU1ldGhvZCh0aGlzLCBleGVjKTsKK30KKwogLy8gSXQgaXMgc2FmZSB0
byBjYWxsIHRoaXMgbWV0aG9kIHdpdGggYSBQcm9wZXJ0eU5hbWUgdGhhdCBpcyBhY3R1YWxseSBh
biBpbmRleCwKIC8vIGJ1dCBpZiBzbyB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgKGRvZXNuJ3Qg
c2VhcmNoIGluZGV4IHN0b3JhZ2UpLgogQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5U2xvdChWTSYgdm0sIFN0cnVjdHVyZSYgc3RydWN0dXJlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0xMjA0LDYgKzEy
MjUsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5CiAgICAgICAg
ICAgICAvLyBwYXJzaW5nIHRoZSBpbnQgYWdhaW4uCiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0
LT5nZXROb25JbmRleFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
ICAgICB9CisgICAgICAgIEFTU0VSVChvYmplY3QtPnR5cGUoKSAhPSBQcm94eU9iamVjdFR5cGUp
OwogICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpzdHJ1Y3R1cmVJRFRhYmxlLmdldChv
YmplY3QtPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBpZiAob2JqZWN0LT5nZXRPd25Ob25JbmRl
eFByb3BlcnR5U2xvdCh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjIzLDExICsxMjQ1LDIxIEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHkKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGF1dG8mIHN0cnVjdHVyZUlEVGFibGUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsKICAg
ICBKU09iamVjdCogb2JqZWN0ID0gdGhpczsKKyAgICBNZXRob2RUYWJsZTo6R2V0UHJvdG90eXBl
RnVuY3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90b3R5cGU7
CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqc3Ry
dWN0dXJlSURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgaWYgKHN0
cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBzdHJ1Y3R1cmUuc3RvcmVkUHJvdG90
eXBlKCk7CisgICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlOworICAgICAgICBpZiAo
TElLRUxZKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0UHJvdG90eXBlID09
IGRlZmF1bHRHZXRQcm90b3R5cGUgfHwgc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSA9PSBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KSkKKyAgICAgICAgICAgIHBy
b3RvdHlwZSA9IHN0cnVjdHVyZS5zdG9yZWRQcm90b3R5cGUoKTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBwcm90b3R5cGUgPSBvYmplY3QtPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7Cisg
ICAgICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CiAgICAgICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlw
ZSk7CkBAIC0xMjQyLDE0ICsxMjc0LDI2IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6
Z2V0Tm9uSW5kZXgKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8mIHN0cnVjdHVy
ZUlEVGFibGUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsKICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gdGhpczsKKyAgICBNZXRob2RUYWJsZTo6R2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgZGVm
YXVsdEdldFByb3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90b3R5cGU7CiAgICAgd2hpbGUgKHRy
dWUpIHsKICAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqc3RydWN0dXJlSURUYWJsZS5n
ZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgaWYgKExJS0VMWSghVHlwZUluZm86
Om92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChvYmplY3QtPmlubGluZVR5cGVGbGFncygpKSkp
IHsKICAgICAgICAgICAgIGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KHZt
LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RydWN0dXJlLmNsYXNzSW5mbygpLT5tZXRob2RU
YWJsZS5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0g
c3RydWN0dXJlLnN0b3JlZFByb3RvdHlwZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgaWYgKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0T3duUHJvcGVydHlT
bG90KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIEpTVmFsdWUg
cHJvdG90eXBlOworICAgICAgICBpZiAoTElLRUxZKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0
aG9kVGFibGUuZ2V0UHJvdG90eXBlID09IGRlZmF1bHRHZXRQcm90b3R5cGUgfHwgc2xvdC5pbnRl
cm5hbE1ldGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5KSkKKyAgICAgICAgICAgIHByb3RvdHlwZSA9IHN0cnVjdHVyZS5zdG9yZWRQcm90b3R5
cGUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwcm90b3R5cGUgPSBvYmplY3QtPmdl
dFByb3RvdHlwZSh2bSwgZXhlYyk7CisgICAgICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIGlmICghcHJv
dG90eXBlLmlzT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG9i
amVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24gMTk3NTkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDcgKzQyLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpjYW5QZXJm
b3JtRgogICAgICAgICBpZiAob2JqLT5zdHJ1Y3R1cmUodm0pLT5oYXNSZWFkT25seU9yR2V0dGVy
U2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkgfHwgb2JqLT50eXBlKCkgPT0gUHJveHlP
YmplY3RUeXBlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHByb3RvdHlw
ZSA9IG9iai0+cHJvdG90eXBlKCk7CisgICAgICAgIHByb3RvdHlwZSA9IG9iai0+Z2V0UHJvdG90
eXBlRGlyZWN0KCk7CiAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm94eS5jcHAJKHJldmlzaW9uIDE5NzU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgSlNQ
cm94eTo6c2V0VGFyZ2V0KFZNJiB2bSwgSlNHbG9iYWwKIHsKICAgICBBU1NFUlRfQVJHKGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0KTsKICAgICBtX3RhcmdldC5zZXQodm0sIHRoaXMsIGdsb2Jh
bE9iamVjdCk7Ci0gICAgc2V0UHJvdG90eXBlRGlyZWN0KHZtLCBnbG9iYWxPYmplY3QtPnByb3Rv
dHlwZSgpKTsKKyAgICBzZXRQcm90b3R5cGVEaXJlY3Qodm0sIGdsb2JhbE9iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KCkpOwogCiAgICAgUHJvdG90eXBlTWFwJiBwcm90b3R5cGVNYXAgPSB2bS5w
cm90b3R5cGVNYXA7CiAgICAgaWYgKCFwcm90b3R5cGVNYXAuaXNQcm90b3R5cGUodGhpcykpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE5NzU5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29ucwogICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldENvbnN0
cnVjdERhdGEob2JqZWN0LCBkYXRhKSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCAibmV3LnRhcmdldCBwYXNz
ZWQgdG8gVHlwZWRBcnJheSBpcyBub3QgYSB2YWxpZCBjb25zdHJ1Y3Rvci4iKSk7CiAKLSAgICBm
b3IgKDsgIXZhbHVlLmlzTnVsbCgpOyB2YWx1ZSA9IGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKS0+
cHJvdG90eXBlKCkpIHsKKyAgICBmb3IgKDsgIXZhbHVlLmlzTnVsbCgpOyB2YWx1ZSA9IGpzQ2Fz
dDxKU09iamVjdCo+KHZhbHVlKS0+Z2V0UHJvdG90eXBlRGlyZWN0KCkpIHsKICAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yKj4odmFsdWUpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5h
YmxlIHRvIGZpbmQgVHlwZWRBcnJheSBjb25zdHJ1Y3RvciB0aGF0IGluaGVyaXRzIGZyb20gVHlw
ZWRBcnJheS4iKSk7CiAgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3I8SlNJbnQ4QXJyYXk+Kj4odmFsdWUpKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gMTk3NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsOCArMTUwLDkgQEAgQ2FsbFR5cGUg
T2JqZWN0Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKAogCiBjbGFzcyBPYmplY3RDb25zdHJ1Y3Rv
ckdldFByb3RvdHlwZU9mRnVuY3RvciB7CiBwdWJsaWM6Ci0gICAgT2JqZWN0Q29uc3RydWN0b3JH
ZXRQcm90b3R5cGVPZkZ1bmN0b3IoSlNPYmplY3QqIG9iamVjdCkKLSAgICAgICAgOiBtX2hhc1Nr
aXBwZWRGaXJzdEZyYW1lKGZhbHNlKQorICAgIE9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBl
T2ZGdW5jdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCkKKyAgICAgICAgOiBt
X2V4ZWMoZXhlYykKKyAgICAgICAgLCBtX2hhc1NraXBwZWRGaXJzdEZyYW1lKGZhbHNlKQogICAg
ICAgICAsIG1fb2JqZWN0KG9iamVjdCkKICAgICAgICAgLCBtX3Jlc3VsdChqc1VuZGVmaW5lZCgp
KQogICAgIHsKQEAgLTE2NywxMSArMTY4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChtX29iamVjdC0+YWxsb3dzQWNjZXNzRnJvbSh2aXNpdG9yLT5jYWxsRnJhbWUoKSkp
Ci0gICAgICAgICAgICBtX3Jlc3VsdCA9IG1fb2JqZWN0LT5wcm90b3R5cGUoKTsKKyAgICAgICAg
ICAgIG1fcmVzdWx0ID0gbV9vYmplY3QtPmdldFByb3RvdHlwZShtX2V4ZWMtPnZtKCksIG1fZXhl
Yyk7CiAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CiAgICAgfQogCiBwcml2YXRl
OgorICAgIEV4ZWNTdGF0ZSogbV9leGVjOwogICAgIGJvb2wgbV9oYXNTa2lwcGVkRmlyc3RGcmFt
ZTsKICAgICBKU09iamVjdCogbV9vYmplY3Q7CiAgICAgSlNWYWx1ZSBtX3Jlc3VsdDsKQEAgLTE3
OSw3ICsxODEsMTAgQEAgcHJpdmF0ZToKIAogSlNWYWx1ZSBvYmplY3RDb25zdHJ1Y3RvckdldFBy
b3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCkKIHsKLSAgICBPYmpl
Y3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mRnVuY3RvciBmdW5jdG9yKG9iamVjdCk7CisgICAg
T2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZkZ1bmN0b3IgZnVuY3RvcihleGVjLCBvYmpl
Y3QpOworICAgIC8vIFRoaXMgY2FuIHRocm93IGJ1dCBpdCdzIGp1c3QgdW5uZWVkZWQgZXh0cmEg
d29yayB0byBjaGVjayBmb3IgaXQuIFRoZSByZXR1cm4KKyAgICAvLyB2YWx1ZSBmcm9tIHRoaXMg
ZnVuY3Rpb24gaXMgb25seSB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBhIGhvc3QgY2Fs
bC4KKyAgICAvLyBUaGVyZWZvcmUsIHRoZSByZXR1cm4gdmFsdWUgaXMgb25seSB1c2VkIGlmIHRo
ZXJlIHdhc24ndCBhbiBleGNlcHRpb24uCiAgICAgZXhlYy0+aXRlcmF0ZShmdW5jdG9yKTsKICAg
ICByZXR1cm4gZnVuY3Rvci5yZXN1bHQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk3NTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAxLDE0ICsxMDEsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcm90bwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAotICAg
IEpTVmFsdWUgdiA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+cHJvdG90eXBlKCk7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU1ZhbHVlIHYgPSBhc09iamVjdChleGVjLT5h
cmd1bWVudCgwKSktPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CisgICAgaWYgKFVOTElLRUxZKHZt
LmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkp
OwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaWYgKCF2LmlzT2JqZWN0KCkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwogICAgICAg
ICBpZiAodiA9PSB0aGlzT2JqKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4odHJ1ZSkpOwotICAgICAgICB2ID0gYXNPYmplY3QodiktPnByb3RvdHlwZSgpOwor
ICAgICAgICB2ID0gYXNPYmplY3QodiktPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CisgICAgICAg
IGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCShyZXZpc2lvbiAxOTc1OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkwLDExICs5MCwxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcGVyZm9ybVByb3h5
R2V0KEV4CiAgICAgLy8gRklYTUU6IG1ha2UgaXQgc28gdGhhdCBjdXN0b20gZ2V0dGVycyB0YWtl
IGJvdGggdGhlIHx0aGlzfCB2YWx1ZSBhbmQgdGhlIHNsb3RCYXNlIChwcm9wZXJ0eSBob2xkZXIp
LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQzMjAK
ICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAoTElLRUxZKHByb3h5T2JqZWN0QXNPYmpl
Y3QtPmluaGVyaXRzKFByb3h5T2JqZWN0OjppbmZvKCkpKSkKKyAgICAgICAgaWYgKExJS0VMWShw
cm94eU9iamVjdEFzT2JqZWN0LT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlKSkKICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKnZtLmhlYXAuc3Ry
dWN0dXJlSURUYWJsZSgpLmdldChwcm94eU9iamVjdEFzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsK
LSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBzdHJ1Y3R1cmUuc3RvcmVkUHJvdG90eXBlKCk7
CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gcHJveHlPYmplY3RBc09iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb3RvdHlwZS5pc09iamVj
dCgpKTsKICAgICAgICAgcHJveHlPYmplY3RBc09iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7
CiAgICAgfQpAQCAtMTAwNiw3ICsxMDA1LDkgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVNl
dFByb3RvdHlwZShFeAogICAgIGlmICh0YXJnZXRJc0V4dGVuc2libGUpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgSlNWYWx1ZSB0YXJnZXRQcm90b3R5cGUgPSB0YXJnZXQtPnByb3RvdHlw
ZSgpOworICAgIEpTVmFsdWUgdGFyZ2V0UHJvdG90eXBlID0gdGFyZ2V0LT5nZXRQcm90b3R5cGUo
dm0sIGV4ZWMpOworICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghc2FtZVZhbHVlKGV4ZWMsIHByb3RvdHlwZSwgdGFyZ2V0UHJvdG90eXBlKSkg
ewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ3Nl
dFByb3RvdHlwZU9mJyB0cmFwIHJldHVybmVkIHRydWUgd2hlbiBpdHMgdGFyZ2V0IGlzIG5vbi1l
eHRlbnNpYmxlIGFuZCB0aGUgbmV3IHByb3RvdHlwZSB2YWx1ZSBpcyBub3QgdGhlIHNhbWUgYXMg
dGhlIGN1cnJlbnQgcHJvdG90eXBlIHZhbHVlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxz
ZS4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHJldmlzaW9uIDE5NzU5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEwLDcgKzIxMCw3IEBAIGlubGluZSBib29sIFN0cnVjdHVyZTo6aXNWYWxp
ZChKU0dsb2JhbE8KICAgICAgICAgaWYgKGFzT2JqZWN0KHByb3RvdHlwZSktPnN0cnVjdHVyZSgp
ICE9IGNhY2hlZFN0cnVjdHVyZS0+Z2V0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICsrY2FjaGVkU3RydWN0dXJlOwotICAgICAgICBwcm90b3R5cGUgPSBhc09iamVjdChw
cm90b3R5cGUpLT5wcm90b3R5cGUoKTsKKyAgICAgICAgcHJvdG90eXBlID0gYXNPYmplY3QocHJv
dG90eXBlKS0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CiAgICAgfQogICAgIHJldHVybiBwcm90b3R5
cGUuaXNOdWxsKCkgJiYgISpjYWNoZWRTdHJ1Y3R1cmU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3Byb3h5LWhhcy1wcm9wZXJ0eS5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Byb3h5LWhhcy1wcm9wZXJ0eS5q
cwkocmV2aXNpb24gMTk3NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9wcm94eS1oYXMtcHJvcGVydHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTM2NywzICszNjcsNzkg
QEAgZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICAgICAgYXNzZXJ0KHRocmV3KTsKICAgICB9CiB9
CisKK3sKKyAgICBsZXQgZTEgPSBudWxsOworICAgIGxldCBlMiA9IG51bGw7CisgICAgbGV0IHQx
ID0ge307CisgICAgbGV0IGNhbGxlZDEgPSBmYWxzZTsKKyAgICBsZXQgaDEgPSB7CisgICAgICAg
IGhhczogZnVuY3Rpb24odGhlVGFyZ2V0LCBwcm9wTmFtZSkgeworICAgICAgICAgICAgY2FsbGVk
MSA9IHRydWU7CisgICAgICAgICAgICBlMSA9IG5ldyBFcnJvcjsKKyAgICAgICAgICAgIHRocm93
IGUxOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfTsKKyAgICBs
ZXQgcDEgPSBuZXcgUHJveHkodDEsIGgxKTsKKworICAgIGxldCB0MiA9IHt9OworICAgIHQyLl9f
cHJvdG9fXyA9IHAxOworICAgIGxldCBoMiA9IHsKKyAgICAgICAgaGFzOiBmdW5jdGlvbih0aGVU
YXJnZXQsIHByb3BOYW1lKSB7CisgICAgICAgICAgICBlMiA9IG5ldyBFcnJvcjsKKyAgICAgICAg
ICAgIHRocm93IGUyOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fTsKKyAgICBsZXQgcDIgPSBuZXcgUHJveHkodDIsIGgyKTsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDUwMDsgaSsrKSB7CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgICAgICB0cnkg
eworICAgICAgICAgICAgMTAgaW4gcDI7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAg
ICAgYXNzZXJ0KGUgPT09IGUyKTsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAg
fQorICAgICAgICBhc3NlcnQodGhyZXcpOworICAgICAgICBhc3NlcnQoIWNhbGxlZDEpOworICAg
IH0KK30KKworeworICAgIGxldCBlMSA9IG51bGw7CisgICAgbGV0IGUyID0gbnVsbDsKKyAgICBs
ZXQgdDEgPSB7fTsKKyAgICBsZXQgY2FsbGVkMSA9IGZhbHNlOworICAgIGxldCBoMSA9IHsKKyAg
ICAgICAgaGFzOiBmdW5jdGlvbih0aGVUYXJnZXQsIHByb3BOYW1lKSB7CisgICAgICAgICAgICBj
YWxsZWQxID0gdHJ1ZTsKKyAgICAgICAgICAgIGUxID0gbmV3IEVycm9yOworICAgICAgICAgICAg
dGhyb3cgZTE7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Owor
ICAgIGxldCBwMSA9IG5ldyBQcm94eSh0MSwgaDEpOworCisgICAgbGV0IHQyID0ge307CisgICAg
dDIuX19wcm90b19fID0gcDE7CisgICAgbGV0IGgyID0geworICAgICAgICBoYXM6IGZ1bmN0aW9u
KHRoZVRhcmdldCwgcHJvcE5hbWUpIHsKKyAgICAgICAgICAgIGUyID0gbmV3IEVycm9yOworICAg
ICAgICAgICAgdGhyb3cgZTI7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9OworICAgIGxldCBwMiA9IG5ldyBQcm94eSh0MiwgaDIpOworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAg
IHRyeSB7CisgICAgICAgICAgICAiZm9vIiBpbiBwMjsKKyAgICAgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgICAgICBhc3NlcnQoZSA9PT0gZTIpOworICAgICAgICAgICAgdGhyZXcgPSB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7CisgICAgICAgIGFzc2VydCghY2FsbGVk
MSk7CisgICAgfQorfQo=
</data>
<flag name="review"
          id="297710"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>273104</attachid>
            <date>2016-03-05 15:35:19 -0800</date>
            <delta_ts>2016-03-05 15:35:19 -0800</delta_ts>
            <desc>perf numbers</desc>
            <filename>perf-numbers.txt</filename>
            <type>text/plain</type>
            <size>68556</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">QmVuY2htYXJrIHJlcG9ydCBmb3IgU3VuU3BpZGVyLCBMb25nU3BpZGVyLCBWOFNwaWRlciwgT2N0
YW5lLCBLcmFrZW4sIEpTUmVncmVzcywgQXNtQmVuY2gsIGFuZCBDb21wcmVzc2lvbkJlbmNoIG9u
IFNhYW1zLU1hY0Jvb2stUHJvIChNYWNCb29rUHJvMTEsMykuCgpWTXMgdGVzdGVkOgoib2ciIGF0
IC9Wb2x1bWVzL0RhdGEvV0svYi9PcGVuU291cmNlL1dlYktpdEJ1aWxkL1JlbGVhc2UvanNjIChy
MTk3NTkwKQoiY2hhbmdlIiBhdCAvVm9sdW1lcy9EYXRhL1dLL2EvT3BlblNvdXJjZS9XZWJLaXRC
dWlsZC9SZWxlYXNlL2pzYyAocjE5NzU5MCkKCkNvbGxlY3RlZCA4IHNhbXBsZXMgcGVyIGJlbmNo
bWFyay9WTSwgd2l0aCA4IFZNIGludm9jYXRpb25zIHBlciBiZW5jaG1hcmsuIEVtaXR0ZWQgYSBj
YWxsIHRvIGdjKCkgYmV0d2VlbiBzYW1wbGUgbWVhc3VyZW1lbnRzLgpVc2VkIDEgYmVuY2htYXJr
IGl0ZXJhdGlvbiBwZXIgVk0gaW52b2NhdGlvbiBmb3Igd2FybS11cC4gVXNlZCB0aGUganNjLXNw
ZWNpZmljIHByZWNpc2VUaW1lKCkgZnVuY3Rpb24gdG8gZ2V0IG1pY3Jvc2Vjb25kLWxldmVsCnRp
bWluZy4gUmVwb3J0aW5nIGJlbmNobWFyayBleGVjdXRpb24gdGltZXMgd2l0aCA5NSUgY29uZmlk
ZW5jZSBpbnRlcnZhbHMgaW4gbWlsbGlzZWNvbmRzLgoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2cgICAgICAgICAgICAgICAgICAg
ICAgY2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKU3VuU3BpZGVy
OgogICAzZC1jdWJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2
LjAxNTkrLTAuMDg4MiAgICAgPyAgICAgIDYuMDMxNSstMC4xMTgxICAgICAgICA/CiAgIDNkLW1v
cnBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNTk1NystMC4w
NDIyICAgICA/ICAgICAgNi42MzYwKy0wLjE2MjYgICAgICAgID8KICAgM2QtcmF5dHJhY2UgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi45MDE3Ky0wLjA2OTQgICAgID8g
ICAgICA2Ljk0MTErLTAuMDc5NyAgICAgICAgPwogICBhY2Nlc3MtYmluYXJ5LXRyZWVzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjcwODgrLTAuMTk3MCAgICAgICAgICAgIDIuNjIz
OSstMC4wNjI0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMyNHggZmFzdGVyCiAgIGFjY2Vzcy1mYW5u
a3VjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNDc5MistMC4zNTM3ICAg
ICA/ICAgICAgNy41NTczKy0wLjIyNTcgICAgICAgID8gbWlnaHQgYmUgMS4wMTA0eCBzbG93ZXIK
ICAgYWNjZXNzLW5ib2R5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4z
MjI1Ky0wLjA2NTQgICAgID8gICAgICAzLjM2ODYrLTAuMTQwMCAgICAgICAgPyBtaWdodCBiZSAx
LjAxMzl4IHNsb3dlcgogICBhY2Nlc3MtbnNpZXZlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzLjc5MzQrLTAuMTAyNyAgICAgICAgICAgIDMuNzE2NSstMC4wNDM2ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDIwN3ggZmFzdGVyCiAgIGJpdG9wcy0zYml0LWJpdHMtaW4tYnl0ZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEuNDQ5NCstMC4wMjQ0ICAgICA/ICAgICAgMS40NTkw
Ky0wLjAzNjEgICAgICAgID8KICAgYml0b3BzLWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNC4wNTk4Ky0wLjA0OTIgICAgID8gICAgICA0LjEwMDMrLTAuMTAzMyAg
ICAgICAgPwogICBiaXRvcHMtYml0d2lzZS1hbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjU1NTcrLTAuMDQ4NyAgICAgPyAgICAgIDIuNTY3MSstMC4wNjQ3ICAgICAgICA/CiAg
IGJpdG9wcy1uc2lldmUtYml0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNjgy
MSstMC4wMjc2ICAgICA/ICAgICAgMy43OTYzKy0wLjIwMzIgICAgICAgID8gbWlnaHQgYmUgMS4w
MzEweCBzbG93ZXIKICAgY29udHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMi45NDQxKy0wLjE0ODIgICAgICAgICAgICAyLjg4MDErLTAuMDM4OCAgICAgICAg
ICBtaWdodCBiZSAxLjAyMjJ4IGZhc3RlcgogICBjcnlwdG8tYWVzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1LjA4NzQrLTAuMTM3MCAgICAgICAgICAgIDUuMDYyOSst
MC4xNDU3ICAgICAgICAKICAgY3J5cHRvLW1kNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMy4yNjEyKy0wLjIxMzEgICAgICAgICAgICAzLjI1NDErLTAuMTQ5MSAgICAg
ICAgCiAgIGNyeXB0by1zaGExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuMTk4NistMC41Mzc1ICAgICAgICAgICAgMi44OTQ0Ky0wLjExMTAgICAgICAgICAgbWlnaHQg
YmUgMS4xMDUxeCBmYXN0ZXIKICAgZGF0ZS1mb3JtYXQtdG9mdGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOC44Mzc1Ky0wLjIxMjEgICAgICAgICAgICA4LjYyMjYrLTAuMjYzMiAg
ICAgICAgICBtaWdodCBiZSAxLjAyNDl4IGZhc3RlcgogICBkYXRlLWZvcm1hdC14cGFyYiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjE2MjArLTAuMzE4MiAgICAgICAgICAgIDUu
OTc5MCstMC4wODYxICAgICAgICAgIG1pZ2h0IGJlIDEuMDMwNnggZmFzdGVyCiAgIG1hdGgtY29y
ZGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNTk0OCstMC4wNjU0
ICAgICA/ICAgICAgMy42MTMwKy0wLjI1NjkgICAgICAgID8KICAgbWF0aC1wYXJ0aWFsLXN1bXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4yMDAxKy0wLjE2NjkgICAgID8gICAg
ICA2LjM5NjUrLTAuNjE1MCAgICAgICAgPyBtaWdodCBiZSAxLjAzMTd4IHNsb3dlcgogICBtYXRo
LXNwZWN0cmFsLW5vcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjUxNTIrLTAu
MDU3MSAgICAgPyAgICAgIDIuNTk2NCstMC4yOTM3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMyM3gg
c2xvd2VyCiAgIHJlZ2V4cC1kbmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDcuOTM3MCstMC41NjU3ICAgICAgICAgICAgNy42NjU0Ky0wLjE3MjYgICAgICAgICAgbWln
aHQgYmUgMS4wMzU0eCBmYXN0ZXIKICAgc3RyaW5nLWJhc2U2NCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNS43MDc1Ky0wLjI1MDYgICAgICAgICAgICA1LjU0NzErLTAuMjA4
MCAgICAgICAgICBtaWdodCBiZSAxLjAyODl4IGZhc3RlcgogICBzdHJpbmctZmFzdGEgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjEyODgrLTEuNjM0MSAgICAgICAgICAg
IDcuMzIwMystMC4xMTEyICAgICAgICAgIG1pZ2h0IGJlIDEuMTEwNHggZmFzdGVyCiAgIHN0cmlu
Zy10YWdjbG91ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMDcyNistMC4y
MDA1ICAgICAgICAgICAgOS44OTc1Ky0wLjIxMTUgICAgICAgICAgbWlnaHQgYmUgMS4wMTc3eCBm
YXN0ZXIKICAgc3RyaW5nLXVucGFjay1jb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyMy4yMDkxKy0wLjQzNTQgICAgID8gICAgIDIzLjM2NjUrLTAuNDQ2MSAgICAgICAgPwogICBz
dHJpbmctdmFsaWRhdGUtaW5wdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ljc1OTEr
LTEuMjU3NCAgICAgICAgICAgIDUuMjM4NSstMC4xMzQ5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDk5
NHggZmFzdGVyCgogICA8YXJpdGhtZXRpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA1LjgxNDYrLTAuMDc4NiAgICAgICAgICAgIDUuNzM1OCstMC4wMjkzICAgICAgICAg
IG1pZ2h0IGJlIDEuMDEzN3ggZmFzdGVyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZyAgICAgICAgICAgICAgICAgICAgICBjaGFu
Z2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApMb25nU3BpZGVyOgogICAz
ZC1jdWJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDQ4LjQzOTEr
LTkuOTM2NSAgICAgICAgIDEwNDcuOTA2NSstOC4wMDg4ICAgICAgICAKICAgM2QtbW9ycGggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc2MS45MTgxKy0wLjI3MzAgICAg
ICAgICAgNzYxLjU4MTcrLTAuMzQ2MyAgICAgICAgCiAgIDNkLXJheXRyYWNlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4OTkuMTIxNCstMTkyLjQwNzEgICAgICAgIDg2Ni43
ODUyKy0xMTguMDQ1MyAgICAgICAgbWlnaHQgYmUgMS4wMzczeCBmYXN0ZXIKICAgYWNjZXNzLWJp
bmFyeS10cmVlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAxMy4wNTk2Ky04LjEyNDIg
ICAgICAgICAxMDA5LjY5MjUrLTIuMzY4MiAgICAgICAgCiAgIGFjY2Vzcy1mYW5ua3VjaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMjkuNTQ2NystMjkuOTgzMyAgICA/ICAgIDM2
MS4wMjUwKy0zNC4wMjE5ICAgICAgID8gbWlnaHQgYmUgMS4wOTU1eCBzbG93ZXIKICAgYWNjZXNz
LW5ib2R5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY1OC4yNzk4Ky0wLjQ2
NjUgICAgID8gICAgNjU4LjUxODYrLTEuMTg0NiAgICAgICAgPwogICBhY2Nlc3MtbnNpZXZlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQ2LjY4MDUrLTEuMTU0MSAgICAgPyAg
ICAzNDkuMTAxNistMi4wMzQyICAgICAgICA/CiAgIGJpdG9wcy0zYml0LWJpdHMtaW4tYnl0ZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDEuOTY5MistMC4wMjg2ICAgICA/ICAgICA0Mi4wNzQw
Ky0wLjE1ODcgICAgICAgID8KICAgYml0b3BzLWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEzNy4yMjEzKy0xLjI0OTIgICAgID8gICAgMTM3LjQzNDArLTEuOTQwNCAg
ICAgICAgPwogICBiaXRvcHMtbnNpZXZlLWJpdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNDkwLjIyNTUrLTIuMDkyNyAgICAgICAgICA0OTAuMTU3OSstMi42NDA1ICAgICAgICAKICAg
Y29udHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU4My4zNjIz
Ky0xLjU3NzYgICAgID8gICAgNTg0LjAyOTgrLTEuOTQxNiAgICAgICAgPwogICBjcnlwdG8tYWVz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzk2Ljc1NTcrLTIuNTkyNiAg
ICAgPyAgICA3OTguMjYzMSstMi41MjEzICAgICAgICA/CiAgIGNyeXB0by1tZDUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MTYuOTMzMSstMy42ODQxICAgICAhICAgIDcz
NS43OTY1Ky0yLjcxNjUgICAgICAgICEgZGVmaW5pdGVseSAxLjAyNjN4IHNsb3dlcgogICBjcnlw
dG8tc2hhMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODU2LjM5MDQrLTUu
MzUzNiAgICAgISAgICA4NzguNTI3NCstNC45NTk0ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMjU4
eCBzbG93ZXIKICAgZGF0ZS1mb3JtYXQtdG9mdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDcyMy4zMzc1Ky00LjY2NzQgICAgIF4gICAgNzA3LjkzNzcrLTIuNDk3MyAgICAgICAgXiBk
ZWZpbml0ZWx5IDEuMDIxOHggZmFzdGVyCiAgIGRhdGUtZm9ybWF0LXhwYXJiICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA4NDYuNDUwOSstMjAuNDI2NyAgICA/ICAgIDg0OS45NzI3Ky02
LjM0MDEgICAgICAgID8KICAgaGFzaC1tYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDE4Ni45ODU5Ky0xLjI4NjAgICAgICEgICAgMTk2LjE4NTQrLTEuMDAzNSAgICAg
ICAgISBkZWZpbml0ZWx5IDEuMDQ5Mnggc2xvd2VyCiAgIG1hdGgtY29yZGljICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA2MTYuMDg3MCstOS40ODk1ICAgICAgICAgIDYxMC4y
OTEzKy01LjMwNTQgICAgICAgIAogICBtYXRoLXBhcnRpYWwtc3VtcyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTI1LjAyMTQrLTAuMTk1MiAgICAgISAgICA1MjYuMzg1NCstMC4zOTEz
ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMDI2eCBzbG93ZXIKICAgbWF0aC1zcGVjdHJhbC1ub3Jt
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYzNi41OTU5Ky0wLjExMzggICAgID8gICAg
NjM2LjkwMDQrLTAuMzAwOCAgICAgICAgPwogICBzdHJpbmctYmFzZTY0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNDkxLjgzMjYrLTIuODY2MSAgICAgPyAgICA0OTMuOTMxMSst
My44OTkwICAgICAgICA/CiAgIHN0cmluZy1mYXN0YSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0NDAuNzc2NistMC45NzQyICAgICBeICAgIDQzNC4zNDY0Ky0zLjMxODMgICAg
ICAgIF4gZGVmaW5pdGVseSAxLjAxNDh4IGZhc3RlcgogICBzdHJpbmctdGFnY2xvdWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjE1LjEyOTcrLTEuNzEzMCAgICAgICAgICAyMTMu
MTQ3MistMC45Njg2ICAgICAgICAKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0ODAuMjYwOSstMy42NjI0ICAgICA/ICAgIDQ4My4wMjg5Ky0zLjY2
MDIgICAgICAgID8gbWlnaHQgYmUgMS4wMDU4eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9nICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgClY4U3Bp
ZGVyOgogICBjcnlwdG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQ5LjM4MTkrLTIuNTY2NCAgICAgPyAgICAgNTQuNDg0NystMTEuNzU5MSAgICAgICA/IG1pZ2h0
IGJlIDEuMTAzM3ggc2xvd2VyCiAgIGRlbHRhYmx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNjIuMzc0MystMi4xMDg0ICAgICA/ICAgICA2NC4xNDUwKy0wLjQ4MjIg
ICAgICAgID8gbWlnaHQgYmUgMS4wMjg0eCBzbG93ZXIKICAgZWFybGV5LWJveWVyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MC4wNTU4Ky0wLjU0MzcgICAgID8gICAgIDUw
LjU4MjYrLTAuNzcxMyAgICAgICAgPyBtaWdodCBiZSAxLjAxMDV4IHNsb3dlcgogICByYXl0cmFj
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2LjI1MzcrLTIuMzA2
NCAgICAgPyAgICAgMjYuNDQxNSstMi41NzUzICAgICAgICA/CiAgIHJlZ2V4cCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODMuMzc1OSstMC40NzM1ICAgICAhICAg
ICA4NS44NjEyKy0wLjU1NDYgICAgICAgICEgZGVmaW5pdGVseSAxLjAyOTh4IHNsb3dlcgogICBy
aWNoYXJkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzLjAwMDIr
LTIuMTI3OCAgICAgICAgICAgNTEuODcyMCstMC4zNzg1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIx
OHggZmFzdGVyCiAgIHNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNDAuNjY3OCstMC43MzEyICAgICA/ICAgICA0MS4wNTM4Ky0wLjMwMjggICAgICAgID8K
CiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDku
NDQ2NistMC44NjA3ICAgICA/ICAgICA1MC40NzAyKy0xLjUyMzYgICAgICAgID8gbWlnaHQgYmUg
MS4wMjA3eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9nICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCk9jdGFuZToKICAgZW5jcnlwdCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIwMTA5Ky0wLjAwMzMyICAgID8g
ICAgIDAuMjAxODQrLTAuMDAzNDggICAgICAgPwogICBkZWNyeXB0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMuNjI5NDYrLTAuMDA3NTIgICAgICAgICAgMy42Mjcz
OSstMC4wMDQ3MyAgICAgICAKICAgZGVsdGFibHVlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB4MiAgICAgICAwLjE3MjE0Ky0wLjAwMDkyICAgICAgICAgIDAuMTcxNDYrLTAuMDAxNTMg
ICAgICAgCiAgIGVhcmxleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC4zNjEzOCstMC4wMDMyMiAgICA/ICAgICAwLjM2MTgzKy0wLjAwMTQ5ICAgICAgID8KICAg
Ym95ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjA4MjY0
Ky0wLjA4NTY0ICAgICEgICAgIDYuMzE2NTgrLTAuMDIzMjkgICAgICAgISBkZWZpbml0ZWx5IDEu
MDM4NXggc2xvd2VyCiAgIG5hdmllci1zdG9rZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eDIgICAgICAgNi4yOTQzMistMC4wMjcyNSAgICAgICAgICA2LjI4Mzc1Ky0wLjAwNDY1ICAgICAg
IAogICByYXl0cmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDEu
MTc0MzYrLTAuMDE4NjcgICAgPyAgICAgMS4xNzgyMCstMC4wMTE0OCAgICAgICA/CiAgIHJpY2hh
cmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgMC4xMDQ5OSstMC4w
MDA4NiAgICAgICAgICAwLjEwNDY4Ky0wLjAwMTcyICAgICAgIAogICBzcGxheSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDAuNDQwNjArLTAuMDAzNDYgICAgICAg
ICAgMC40Mzk0NystMC4wMDQ1MiAgICAgICAKICAgcmVnZXhwICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4MiAgICAgIDI5LjA3OTA3Ky0wLjMwNzUzICAgICAgICAgMjguODIzNDgr
LTAuOTE1MzkgICAgICAgCiAgIHBkZmpzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeDIgICAgICA0OC4xOTgyNystMC41NTI1OCAgICA/ICAgIDQ4LjI1NzQ4Ky0wLjMyOTkzICAg
ICAgID8KICAgbWFuZHJlZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAg
IDU0Ljc1OTQ3Ky0wLjExODQwICAgID8gICAgNTUuMTA1MzIrLTAuNDU3NzQgICAgICAgPwogICBn
YmVtdSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgMzIuODUzODYr
LTAuMjQ4NzYgICAgICAgICAzMi42NzEyOCstMC4xNzU1MSAgICAgICAKICAgY2xvc3VyZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjcyMzk0Ky0wLjAwMjk0ICAg
ID8gICAgIDAuNzI1MTgrLTAuMDAxNDkgICAgICAgPwogICBqcXVlcnkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNTQzMTgrLTAuMDcxMTcgICAgPyAgICAgOS42
MDc5NCstMC4wNzc3MyAgICAgICA/CiAgIGJveDJkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeDIgICAgICAxMi4zMzAwOSstMC4xMDY5NiAgICA/ICAgIDEyLjQwNDU0Ky0wLjA3
MTY0ICAgICAgID8KICAgemxpYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
MiAgICAgNDc4LjQzMzY5Ky0zLjk2MTkyICAgICAgICA0NzguMDkyMzcrLTMuMjI5NTUgICAgICAg
CiAgIHR5cGVzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgIDgxMS45
Mzg1MSstNy43ODM2MSAgICAgICAgODA0LjM5MDM1Ky05Ljg5NDY2ICAgICAgIAoKICAgPGdlb21l
dHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjY4MjIwKy0wLjAx
NTQzICAgID8gICAgIDYuNjg0ODgrLTAuMDIxNTMgICAgICAgPyBtaWdodCBiZSAxLjAwMDR4IHNs
b3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb2cgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKS3Jha2VuOgogICBhaS1hc3RhciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEyMy41OTErLTIuNjkzICAgICAgICAgICAgMTIxLjcx
OCstMi4xMjIgICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1NHggZmFzdGVyCiAgIGF1ZGlvLWJlYXQt
ZGV0ZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU0LjE5MSstMC4xOTcgICAg
ICAgICAgICAgNTQuMTQ4Ky0wLjcxNSAgICAgICAgIAogICBhdWRpby1kZnQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMi4wNzkrLTAuNjQ4ICAgICAgPyAgICAgMTIy
LjQxOSstMC40NzYgICAgICAgICA/CiAgIGF1ZGlvLWZmdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQwLjY3NCstMC4xNDggICAgICAgICAgICAgNDAuNTk0Ky0wLjA4
NyAgICAgICAgIAogICBhdWRpby1vc2NpbGxhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA2MS40MTUrLTAuMjEyICAgICAgPyAgICAgIDY1LjA2NistNy41MjMgICAgICAgICA/
IG1pZ2h0IGJlIDEuMDU5NHggc2xvd2VyCiAgIGltYWdpbmctZGFya3Jvb20gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDczLjk1OSstMC4xNDcgICAgICA/ICAgICAgNzQuMDExKy0w
LjA2NCAgICAgICAgID8KICAgaW1hZ2luZy1kZXNhdHVyYXRlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNTYuNTYwKy0wLjIwNSAgICAgID8gICAgICA1Ny45NDgrLTIuNDAzICAgICAg
ICAgPyBtaWdodCBiZSAxLjAyNDV4IHNsb3dlcgogICBpbWFnaW5nLWdhdXNzaWFuLWJsdXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4NS41NTkrLTQuMzY2ICAgICAgPyAgICAgIDg2LjEz
MistMC4xODkgICAgICAgICA/CiAgIGpzb24tcGFyc2UtZmluYW5jaWFsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDQ3LjUyNSstMC4xMzggICAgICA/ICAgICAgNDguMDc2Ky0wLjUwNyAg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTE2eCBzbG93ZXIKICAganNvbi1zdHJpbmdpZnktdGluZGVy
Ym94ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEuMzcwKy0wLjI3MCAgICAgID8gICAgICAz
MS43MzArLTAuMjQyICAgICAgICAgPyBtaWdodCBiZSAxLjAxMTV4IHNsb3dlcgogICBzdGFuZm9y
ZC1jcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MC44MjErLTEuMTg5
ICAgICAgICAgICAgIDUwLjU0NystMS40MjIgICAgICAgICAKICAgc3RhbmZvcmQtY3J5cHRvLWNj
bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQuNjg3Ky0xLjMyNSAgICAgID8gICAg
ICA0NS42OTgrLTAuNzQzICAgICAgICAgPyBtaWdodCBiZSAxLjAyMjZ4IHNsb3dlcgogICBzdGFu
Zm9yZC1jcnlwdG8tcGJrZGYyICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNy4yMDErLTAu
NDEzICAgICAgPyAgICAgMTI5LjA2MSstMS42MTcgICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0Nngg
c2xvd2VyCiAgIHN0YW5mb3JkLWNyeXB0by1zaGEyNTYtaXRlcmF0aXZlICAgICAgICAgICAgICAg
ICAgIDUwLjc4NistNC4wMDkgICAgICAgICAgICAgNDguODM5Ky0wLjE3MiAgICAgICAgICAgbWln
aHQgYmUgMS4wMzk5eCBmYXN0ZXIKCiAgIDxhcml0aG1ldGljPiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDY5LjMxNistMC41NDIgICAgICA/ICAgICAgNjkuNzEzKy0wLjYy
NiAgICAgICAgID8gbWlnaHQgYmUgMS4wMDU3eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9nICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkpTUmVn
cmVzczoKICAgYWJjLWZvcndhcmQtbG9vcC1lcXVhbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzMC4wNjc3Ky0wLjE4NzcgICAgICAgICAgIDI5Ljk3NjErLTAuMjMxNiAgICAgICAgCiAgIGFi
Yy1wb3N0Zml4LWJhY2t3YXJkLWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgMzcuOTMwNyst
MC41MzQ2ICAgICAgICAgICAzNy43Mzk0Ky0wLjE0NjAgICAgICAgIAogICBhYmMtc2ltcGxlLWJh
Y2t3YXJkLWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgIDI5Ljk0NzQrLTAuMTczNyAgICAg
ICAgICAgMjkuODczMistMC4xNDg1ICAgICAgICAKICAgYWJjLXNpbXBsZS1mb3J3YXJkLWxvb3Ag
ICAgICAgICAgICAgICAgICAgICAgICAgICAyOS44MTg5Ky0wLjA1MTIgICAgID8gICAgIDMwLjEx
NzQrLTAuNjM1MCAgICAgICAgPyBtaWdodCBiZSAxLjAxMDB4IHNsb3dlcgogICBhYmMtc2tpcHB5
LWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2LjE0NTQrLTAuMDU3NSAg
ICAgPyAgICAgMjYuMzI4NCstMC4yMzQxICAgICAgICA/CiAgIGFicy1ib29sZWFuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzI4NistMC4xMzkwICAgICAgICAgICAg
Mi43MTIxKy0wLjEyOTAgICAgICAgIAogICBhZGFwdC10by1kb3VibGUtZGl2aWRlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE4LjQwMTMrLTAuMTk0OCAgICAgPyAgICAgMTguNDEwMystMC4x
Njg4ICAgICAgICA/CiAgIGFsaWFzZWQtYXJndW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAgICAg
ICAgICAgICAgIDEuNDc1MistMC4wNzYwICAgICAgICAgICAgMS40NjY5Ky0wLjA3MDcgICAgICAg
IAogICBhbGxvY2F0ZS1iaWctb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjgzNDMrLTAuMTU0NiAgICAgPyAgICAgIDIuOTI1OCstMC4xODgwICAgICAgICA/IG1pZ2h0IGJl
IDEuMDMyM3ggc2xvd2VyCiAgIGFyZ3VtZW50cy1uYW1lZC1hbmQtcmVmbGVjdGl2ZSAgICAgICAg
ICAgICAgICAgICAgMTAuMTEzMistMC4wMzA5ICAgICA/ICAgICAxMC4yMTg1Ky0wLjE1OTcgICAg
ICAgID8gbWlnaHQgYmUgMS4wMTA0eCBzbG93ZXIKICAgYXJndW1lbnRzLW91dC1vZi1ib3VuZHMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOC41MjMwKy0wLjE2MTEgICAgICAgICAgICA4LjQ2
NTMrLTAuMDYyMyAgICAgICAgCiAgIGFyZ3VtZW50cy1zdHJpY3QtbW9kZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTkuNjIxMistMC4yNDIwICAgICA/ICAgICA2MC4wMTI4Ky0wLjIzMTkg
ICAgICAgID8KICAgYXJndW1lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOC4xMjk4Ky0wLjAyMjcgICAgICAgICAgICA4LjEwNDArLTAuMDM5OCAgICAgICAgCiAg
IGFyaXR5LW1pc21hdGNoLWlubGluaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMDgw
OCstMC4wMzYzICAgICAgICAgICAgMS4wNzE4Ky0wLjA1NTcgICAgICAgIAogICBhcnJheS1hY2Nl
c3MtcG9seW1vcnBoaWMtc3RydWN0dXJlICAgICAgICAgICAgICAgICA4LjgyNjArLTAuMDY0OCAg
ICAgPyAgICAgIDguODc0OSstMC4xMjM0ICAgICAgICA/CiAgIGFycmF5LW5vbmFycmF5LXBvbHlt
b3JocGljLWFjY2VzcyAgICAgICAgICAgICAgICAgMjQuNTE3NystMC40NzQyICAgICAgICAgICAy
NC4zNDY2Ky0wLjM4MTEgICAgICAgIAogICBhcnJheS1wcm90b3R5cGUtZXZlcnkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDk3LjUxMjQrLTIyLjUzMzAgICAgICAgICAgOTAuMDMzNistMC43
NDkxICAgICAgICAgIG1pZ2h0IGJlIDEuMDgzMXggZmFzdGVyCiAgIGFycmF5LXByb3RvdHlwZS1m
b3JFYWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgODYuNjAwMystMS4wMzI1ICAgICAhICAg
ICA5MC4yNTc5Ky0wLjc0ODcgICAgICAgICEgZGVmaW5pdGVseSAxLjA0MjJ4IHNsb3dlcgogICBh
cnJheS1wcm90b3R5cGUtbWFwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg4LjAyMjkr
LTAuMzUwMCAgICAgISAgICAgOTAuODczNCstMC43MjQyICAgICAgICAhIGRlZmluaXRlbHkgMS4w
MzI0eCBzbG93ZXIKICAgYXJyYXktcHJvdG90eXBlLXJlZHVjZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA4Mi45NTAyKy0wLjQyMDUgICAgICEgICAgIDg1LjM2MjQrLTAuMjAxMiAgICAgICAg
ISBkZWZpbml0ZWx5IDEuMDI5MXggc2xvd2VyCiAgIGFycmF5LXByb3RvdHlwZS1yZWR1Y2VSaWdo
dCAgICAgICAgICAgICAgICAgICAgICAxMDQuMDMyNCstMC45MTAyICAgICAgICAgIDEwMi45ODky
Ky0wLjYwMzcgICAgICAgICAgbWlnaHQgYmUgMS4wMTAxeCBmYXN0ZXIKICAgYXJyYXktcHJvdG90
eXBlLXNvbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4Ny4wMjQ4Ky0wLjQ3NjEgICAg
ID8gICAgIDkzLjM1MjYrLTguMjIwMSAgICAgICAgPyBtaWdodCBiZSAxLjA3Mjd4IHNsb3dlcgog
ICBhcnJheS1zcGxpY2UtY29udGlndW91cyAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4LjIw
MjcrLTAuNDE4OSAgICAgPyAgICAgMjguODI3MCstMC4yNDk1ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDIyMXggc2xvd2VyCiAgIGFycmF5LXdpdGgtZG91YmxlLWFkZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQuMTk5MystMC4xMjgxICAgICA/ICAgICAgNC4yMTY2Ky0wLjIxMDYgICAgICAg
ID8KICAgYXJyYXktd2l0aC1kb3VibGUtaW5jcmVtZW50ICAgICAgICAgICAgICAgICAgICAgICAg
My43MDU3Ky0wLjE3NzggICAgICAgICAgICAzLjY0OTgrLTAuMTI0NCAgICAgICAgICBtaWdodCBi
ZSAxLjAxNTN4IGZhc3RlcgogICBhcnJheS13aXRoLWRvdWJsZS1tdWwtYWRkICAgICAgICAgICAg
ICAgICAgICAgICAgICA0LjkyNjMrLTAuMTQ1OSAgICAgPyAgICAgIDQuOTI3NistMC4xNDExICAg
ICAgICA/CiAgIGFycmF5LXdpdGgtZG91YmxlLXN1bSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMuNTczNCstMC4xNjcwICAgICAgICAgICAgMy41NDkxKy0wLjEzNDggICAgICAgIAogICBh
cnJheS13aXRoLWludDMyLWFkZC1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ljg4NDgr
LTAuMDg3MiAgICAgICAgICAgIDUuODY2NSstMC4wNjQ4ICAgICAgICAKICAgYXJyYXktd2l0aC1p
bnQzMi1vci1kb3VibGUtc3VtICAgICAgICAgICAgICAgICAgICAgMy42MDYzKy0wLjA0NzcgICAg
ID8gICAgICAzLjc3MjUrLTAuMjM4MSAgICAgICAgPyBtaWdodCBiZSAxLjA0NjF4IHNsb3dlcgog
ICBBcnJheUJ1ZmZlci1EYXRhVmlldy1hbGxvYy1sYXJnZS1sb25nLWxpdmVkICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQuNzE5MistMC40
NzA4ICAgICA/ICAgICA0NS4yNDQ4Ky0wLjc1MDAgICAgICAgID8gbWlnaHQgYmUgMS4wMTE4eCBz
bG93ZXIKICAgQXJyYXlCdWZmZXItRGF0YVZpZXctYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAg
ICAxNi43MzE5Ky0wLjIwNzQgICAgID8gICAgIDE2LjkyMDkrLTAuMjMyMyAgICAgICAgPyBtaWdo
dCBiZSAxLjAxMTN4IHNsb3dlcgogICBBcnJheUJ1ZmZlci1JbnQzMkFycmF5LWJ5dGVPZmZzZXQg
ICAgICAgICAgICAgICAgICA0LjQ2NjgrLTAuMDI2NiAgICAgPyAgICAgIDQuNDc2OSstMC4wNTM2
ICAgICAgICA/CiAgIEFycmF5QnVmZmVyLUludDhBcnJheS1hbGxvYy1sYXJnZS1sb25nLWxpdmVk
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NDMuNzg4MSstMC4zNjg3ICAgICAhICAgICA0NS4wMTA3Ky0wLjczNTcgICAgICAgICEgZGVmaW5p
dGVseSAxLjAyNzl4IHNsb3dlcgogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MtbG9uZy1s
aXZlZC1idWZmZXIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyMy43MTc5Ky0wLjA4NTIgICAgID8gICAgIDI0LjQ5ODQrLTAuOTgxMiAgICAg
ICAgPyBtaWdodCBiZSAxLjAzMjl4IHNsb3dlcgogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxs
b2MtbG9uZy1saXZlZCAgICAgICAgICAgIDE1LjAyMjQrLTAuMTAwMiAgICAgPyAgICAgMTUuMzkw
NystMC4zMjYwICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0NXggc2xvd2VyCiAgIEFycmF5QnVmZmVy
LUludDhBcnJheS1hbGxvYyAgICAgICAgICAgICAgICAgICAgICAgMTMuMTUxNCstMC4xODQwICAg
ICA/ICAgICAxMy4xOTkxKy0wLjE0MzMgICAgICAgID8KICAgYXJyb3dmdW5jdGlvbi1jYWxsLWlu
LWNsYXNzLWNvbnN0cnVjdG9yICAgICAgICAgICA3NS40MTY5Ky0wLjk2MTcgICAgID8gICAgIDc2
Ljc2NTQrLTAuNzQ0NSAgICAgICAgPyBtaWdodCBiZSAxLjAxNzl4IHNsb3dlcgogICBhcnJvd2Z1
bmN0aW9uLWNhbGwtaW4tY2xhc3MtbWV0aG9kICAgICAgICAgICAgICAgIDMwLjI2MjcrLTAuMTQy
NCAgICAgPyAgICAgMzAuNDI0MCstMC4xMTk1ICAgICAgICA/CiAgIGFycm93ZnVuY3Rpb24tY2Fs
bC1pbi1mdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgIDcuMjAyOCstMC4xMTUwICAgICAgICAg
ICAgNy4xOTI1Ky0wLjA2NDIgICAgICAgIAogICBhcnJvd2Z1bmN0aW9uLWNhbGwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDExLjc2ODIrLTEuNzE5MiAgICAgICAgICAgMTEuMDA3Mist
MC4wODcxICAgICAgICAgIG1pZ2h0IGJlIDEuMDY5MXggZmFzdGVyCiAgIGFzbWpzX2Jvb2xfYnVn
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuMjY5NCstMC4wMzk0ICAgICAg
ICAgICAgOS4yNDUzKy0wLjA0MTIgICAgICAgIAogICBhc3NpZ24tY3VzdG9tLXNldHRlci1wb2x5
bW9ycGhpYyAgICAgICAgICAgICAgICAgICAzLjIzMDUrLTAuMDQyNiAgICAgICAgICAgIDMuMTk0
NSstMC4wNTcwICAgICAgICAgIG1pZ2h0IGJlIDEuMDExM3ggZmFzdGVyCiAgIGFzc2lnbi1jdXN0
b20tc2V0dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNjE1NCstMC4wNTM0ICAg
ICBeICAgICAgNC41MDI2Ky0wLjAxNjIgICAgICAgIF4gZGVmaW5pdGVseSAxLjAyNTF4IGZhc3Rl
cgogICBiYXNpYy1zZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5
Ljc5NjArLTAuNDg0NyAgICAgPyAgICAgIDkuODUwNCstMC43ODE1ICAgICAgICA/CiAgIGJpZy1p
bnQtbXVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuOTc2NystMC4x
Nzk3ICAgICAgICAgICAgMy44OTkzKy0wLjA0NjUgICAgICAgICAgbWlnaHQgYmUgMS4wMTk5eCBm
YXN0ZXIKICAgYm9vbGVhbi10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNC4xNTM4Ky0wLjAzNzkgICAgID8gICAgICA0LjI2NTQrLTAuMTMzNCAgICAgICAgPyBtaWdo
dCBiZSAxLjAyNjl4IHNsb3dlcgogICBicmFuY2gtZm9sZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0LjQ3MTgrLTAuMTI2MiAgICAgICAgICAgIDQuNDYxOCstMC4wNDAx
ICAgICAgICAKICAgYnJhbmNoLW9uLXN0cmluZy1hcy1ib29sZWFuICAgICAgICAgICAgICAgICAg
ICAgICAxMy4xOTc0Ky0wLjI2NjcgICAgID8gICAgIDEzLjM1ODQrLTAuMzExMSAgICAgICAgPyBt
aWdodCBiZSAxLjAxMjJ4IHNsb3dlcgogICBidWlsZC1sYXJnZS1vYmplY3QgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQwLjAwMDMrLTAuNDI1NyAgICAgPyAgICAgNDAuMjcxMSstMC4x
NzAxICAgICAgICA/CiAgIGJ5LXZhbC1nZW5lcmljICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDUuMzIyMystMC4yMTg0ICAgICA/ICAgICAgNS4zMjYyKy0wLjE4MzggICAgICAg
ID8KICAgY2FsbC1zcHJlYWQtYXBwbHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
NS4zMTE4Ky0wLjk1NjQgICAgID8gICAgIDU2LjI5NTArLTAuNDQ3NSAgICAgICAgPyBtaWdodCBi
ZSAxLjAxNzh4IHNsb3dlcgogICBjYWxsLXNwcmVhZC1jYWxsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDY4Ljc4ODgrLTAuMzk1MiAgICAgPyAgICAgNjkuNzgyOSstMC44Mjc4ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDE0NXggc2xvd2VyCiAgIGNhcHR1cmVkLWFzc2lnbm1lbnRzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNTQ2NistMC4wMDU0ICAgICA/ICAgICAgMC41
NTM2Ky0wLjAzOTUgICAgICAgID8gbWlnaHQgYmUgMS4wMTI4eCBzbG93ZXIKICAgY2FzdC1pbnQt
dG8tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4yNzU3Ky0wLjEwMzAg
ICAgID8gICAgICA2LjMxMDgrLTAuMDY5NyAgICAgICAgPwogICBjZWxsLWFyZ3VtZW50ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjU5NDErLTAuMTUxNSAgICAgPyAgICAg
IDMuNjE0OSstMC4xNDQ3ICAgICAgICA/CiAgIGNmZy1zaW1wbGlmeSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMuNTQ0MistMC4wNzIzICAgICA/ICAgICAgMy42MTY4Ky0w
LjA3OTUgICAgICAgID8gbWlnaHQgYmUgMS4wMjA1eCBzbG93ZXIKICAgY2hhaW4tZ2V0dGVyLWFj
Y2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy42Mzc1Ky0wLjA0NjcgICAgID8g
ICAgIDEzLjcwNjErLTAuMTQzMSAgICAgICAgPwogICBjbXBlcS1vYmotdG8tb2JqLW90aGVyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDExLjg3NzcrLTIuNjMxMiAgICAgICAgICAgMTAuNjQ4
MistMC4xMDQ1ICAgICAgICAgIG1pZ2h0IGJlIDEuMTE1NXggZmFzdGVyCiAgIGNvbnN0YW50LXRl
c3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMTU5MystMC40OTE2ICAg
ICAgICAgICAgNS44ODMwKy0wLjAyNzMgICAgICAgICAgbWlnaHQgYmUgMS4wNDcweCBmYXN0ZXIK
ICAgY3JlYXRlLWxvdHMtb2YtZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgOS4y
NTk0Ky0xLjE3NTcgICAgICAgICAgICA4Ljc0ODArLTAuNjY0NyAgICAgICAgICBtaWdodCBiZSAx
LjA1ODV4IGZhc3RlcgogICBjc2UtbmV3LWFycmF5LWJ1ZmZlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyLjc0NjErLTAuMDMyMiAgICAgICAgICAgIDIuNjcwOSstMC4xMjc4ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDI4MnggZmFzdGVyCiAgIGNzZS1uZXctYXJyYXkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzY5MCstMC4xMzY1ICAgICA/ICAgICAgMi43NzQx
Ky0wLjEzMzAgICAgICAgID8KICAgY3VzdG9tLXNldHRlci1nZXR0ZXItYXMtcHV0LWdldC1ieS1p
ZCAgICAgICAgICAgICAgMC42MzMxKy0wLjAxOTcgICAgID8gICAgICAwLjY1MjIrLTAuMDM5MyAg
ICAgICAgPyBtaWdodCBiZSAxLjAzMDJ4IHNsb3dlcgogICBEYXRhVmlldy1jdXN0b20tcHJvcGVy
dGllcyAgICAgICAgICAgICAgICAgICAgICAgIDUxLjY5MTMrLTEuNjU4MCAgICAgPyAgICAgNTIu
MDc3MSstMC44MzM1ICAgICAgICA/CiAgIGRlbGF5LXRlYXItb2ZmLWFyZ3VtZW50cy1zdHJpY3Rt
b2RlICAgICAgICAgICAgICAgMTQuOTk4MistMC4xNTc3ICAgICA/ICAgICAxNS4yMDc5Ky0wLjI4
NjMgICAgICAgID8gbWlnaHQgYmUgMS4wMTQweCBzbG93ZXIKICAgZGVsdGFibHVlLXZhcmFyZ3Mg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ny42OTI4Ky0wLjIzNDQgICAgICAgICAg
IDQ3LjM3NTQrLTAuMjUyOSAgICAgICAgCiAgIGRlc3RydWN0dXJpbmctYXJndW1lbnRzICAgICAg
ICAgICAgICAgICAgICAgICAgICAxOTYuNDgwOSstMC42NTA2ICAgICA/ICAgIDE5Ni43OTA2Ky0x
LjQwODIgICAgICAgID8KICAgZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnkt
ZnVuY3Rpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC41NTk4Ky0wLjAxNzYgICAgID8gICAgICAwLjYyMzYrLTAuMTI4NCAgICAgICAg
PyBtaWdodCBiZSAxLjExNDB4IHNsb3dlcgogICBkZXN0cnVjdHVyaW5nLXN3YXAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1Ljc5MjYrLTAuMDI0NiAgICAgPyAgICAgIDUuODQwNist
MC4wNTIzICAgICAgICA/CiAgIGRpcmVjdC1hcmd1bWVudHMtZ2V0Ynl2YWwgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEuNDQ4MCstMC4wNzEyICAgICA/ICAgICAgMS40Nzg0Ky0wLjEwNTMgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjA5eCBzbG93ZXIKICAgZGl2LWJvb2xlYW4tZG91YmxlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4wMTA2Ky0wLjA0OTUgICAgID8gICAgICA1LjA4
OTErLTAuMTE1MSAgICAgICAgPyBtaWdodCBiZSAxLjAxNTd4IHNsb3dlcgogICBkaXYtYm9vbGVh
biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjQ4OTErLTAuNTg5NyAg
ICAgICAgICAgIDkuMjcxNistMC4wNzIyICAgICAgICAgIG1pZ2h0IGJlIDEuMDIzNXggZmFzdGVy
CiAgIGRvdWJsZS1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMgICAgICAgICAgICAgICAgICAgIDUu
MjIwMistMC4wNzc0ICAgICA/ICAgICAgNi4wMDAwKy0xLjEwNTIgICAgICAgID8gbWlnaHQgYmUg
MS4xNDk0eCBzbG93ZXIKICAgZG91YmxlLXBvbGx1dGlvbi1nZXRieXZhbCAgICAgICAgICAgICAg
ICAgICAgICAgICAxMC40NjYzKy0wLjAyNDIgICAgICAgICAgIDEwLjQ2MjMrLTAuMDMwMCAgICAg
ICAgCiAgIGRvdWJsZS1wb2xsdXRpb24tcHV0YnlvZmZzZXQgICAgICAgICAgICAgICAgICAgICAg
IDQuNDU1NSstMC4wNjA1ICAgICAgICAgICAgNC40MjU4Ky0wLjA0NDkgICAgICAgIAogICBkb3Vi
bGUtcmVhbC11c2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMzLjE4OTErLTMu
MTI3NyAgICAgICAgICAgMzEuMDk2NistMS41NDcwICAgICAgICAgIG1pZ2h0IGJlIDEuMDY3M3gg
ZmFzdGVyCiAgIGRvdWJsZS10by1pbnQzMi10eXBlZC1hcnJheS1uby1pbmxpbmUgICAgICAgICAg
ICAgIDIuNDUyNistMC4wMzY3ICAgICA/ICAgICAgMi41MDk5Ky0wLjA3MTAgICAgICAgID8gbWln
aHQgYmUgMS4wMjM0eCBzbG93ZXIKICAgZG91YmxlLXRvLWludDMyLXR5cGVkLWFycmF5ICAgICAg
ICAgICAgICAgICAgICAgICAgMi40ODA2Ky0wLjAzNjYgICAgICAgICAgICAyLjQ2NTMrLTAuMDM2
NyAgICAgICAgCiAgIGRvdWJsZS10by11aW50MzItdHlwZWQtYXJyYXktbm8taW5saW5lICAgICAg
ICAgICAgIDIuNjIzNCstMC4wNTcxICAgICA/ICAgICAgMi42ODY0Ky0wLjI0MzggICAgICAgID8g
bWlnaHQgYmUgMS4wMjQweCBzbG93ZXIKICAgZG91YmxlLXRvLXVpbnQzMi10eXBlZC1hcnJheSAg
ICAgICAgICAgICAgICAgICAgICAgMi41MDAyKy0wLjAyMTkgICAgID8gICAgICAyLjUxNjArLTAu
MDIwNyAgICAgICAgPwogICBlbGlkYWJsZS1uZXctb2JqZWN0LWRhZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDI5LjUwMDUrLTAuMzExOCAgICAgPyAgICAgMjkuNTI2NSstMC40Njg2ICAgICAg
ICA/CiAgIGVsaWRhYmxlLW5ldy1vYmplY3Qtcm9mbGNvcHRlciAgICAgICAgICAgICAgICAgICAg
NDAuMTk2MSstMC4wNTY0ICAgICA/ICAgICA0MC40MjI3Ky0wLjQ4MDIgICAgICAgID8KICAgZWxp
ZGFibGUtbmV3LW9iamVjdC10aGVuLWNhbGwgICAgICAgICAgICAgICAgICAgICAyNC4xMjMwKy0w
LjMzNDQgICAgID8gICAgIDI0LjQxOTErLTAuNDM1NyAgICAgICAgPyBtaWdodCBiZSAxLjAxMjN4
IHNsb3dlcgogICBlbGlkYWJsZS1uZXctb2JqZWN0LXRyZWUgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMwLjY3MzYrLTAuMzM2NSAgICAgICAgICAgMzAuMTUzNystMC4zNzQ3ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDE3MnggZmFzdGVyCiAgIGVtcHR5LXN0cmluZy1wbHVzLWludCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUuOTU4NSstMC4xMTQwICAgICA/ICAgICAgNS45OTg2Ky0wLjA5
MTMgICAgICAgID8KICAgZW1zY3JpcHRlbi1jdWJlMmhhc2ggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzMC41MjkyKy0wLjA4NTAgICAgID8gICAgIDMzLjc0OTYrLTUuOTc1MiAgICAgICAg
PyBtaWdodCBiZSAxLjEwNTV4IHNsb3dlcgogICBleGl0LWxlbmd0aC1vbi1wbGFpbi1vYmplY3Qg
ICAgICAgICAgICAgICAgICAgICAgIDE4LjkzMzYrLTAuMTU5MSAgICAgPyAgICAgMTkuMDkyOSst
MC4yOTgzICAgICAgICA/CiAgIGV4dGVybmFsLWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAgICAg
ICAgICAgICAgICAgIDEuNDYxNSstMC4wNTI1ICAgICA/ICAgICAgMS41MTMwKy0wLjA1MTkgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzUyeCBzbG93ZXIKICAgZXh0ZXJuYWwtYXJndW1lbnRzLXB1dGJ5
dmFsICAgICAgICAgICAgICAgICAgICAgICAgMi43Mjc1Ky0wLjAzMjYgICAgICAgICAgICAyLjcy
NDArLTAuMDcyNCAgICAgICAgCiAgIGZpeGVkLXR5cGVkLWFycmF5LXN0b3JhZ2UtdmFyLWluZGV4
ICAgICAgICAgICAgICAgIDEuNDczMSstMC4wMjQ0ICAgICA/ICAgICAgMS40ODkzKy0wLjAzNzcg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTEweCBzbG93ZXIKICAgZml4ZWQtdHlwZWQtYXJyYXktc3Rv
cmFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xMjcyKy0wLjAxNDAgICAgICAgICAgICAx
LjExOTMrLTAuMDE5NSAgICAgICAgCiAgIEZsb2F0MzJBcnJheS1tYXRyaXgtbXVsdCAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUuNjQ5NistMC4wNDEyICAgICA/ICAgICAgNS43MTYxKy0wLjIy
NTUgICAgICAgID8gbWlnaHQgYmUgMS4wMTE4eCBzbG93ZXIKICAgRmxvYXQzMkFycmF5LXRvLUZs
b2F0NjRBcnJheS1zZXQgICAgICAgICAgICAgICAgICA1NS45NDE4Ky0wLjc4NzEgICAgID8gICAg
IDU2LjE3OTcrLTAuNzI1OSAgICAgICAgPwogICBGbG9hdDY0QXJyYXktYWxsb2MtbG9uZy1saXZl
ZCAgICAgICAgICAgICAgICAgICAgIDcwLjAzMzkrLTAuNDg0MiAgICAgICAgICAgNjkuNjMwNist
MC41NzcwICAgICAgICAKICAgRmxvYXQ2NEFycmF5LXRvLUludDE2QXJyYXktc2V0ICAgICAgICAg
ICAgICAgICAgICA3My44OTY5Ky0xLjE4NzggICAgIF4gICAgIDcxLjQ3OTErLTAuMzMzMSAgICAg
ICAgXiBkZWZpbml0ZWx5IDEuMDMzOHggZmFzdGVyCiAgIGZvbGQtZG91YmxlLXRvLWludCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuODM4NystMC4xNTc0ICAgICA/ICAgICAxNS45
NDE1Ky0wLjIwNDEgICAgICAgID8KICAgZm9sZC1nZXQtYnktaWQtdG8tbXVsdGktZ2V0LWJ5LW9m
ZnNldC1yYXJlLWludCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA4LjY4MjgrLTAuMjUxNyAgICAgPyAgICAgIDkuMDMwNystMC42OTg0ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDQwMXggc2xvd2VyCiAgIGZvbGQtZ2V0LWJ5LWlkLXRvLW11bHRp
LWdldC1ieS1vZmZzZXQgICAgICAgICAgICAgIDcuNzQ5MCstMC4yNzM5ICAgICAgICAgICAgNy41
OTYzKy0wLjE4MjIgICAgICAgICAgbWlnaHQgYmUgMS4wMjAxeCBmYXN0ZXIKICAgZm9sZC1tdWx0
aS1nZXQtYnktb2Zmc2V0LXRvLWdldC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi44MjMzKy0xLjY4NjkgICAgICAgICAg
ICA2LjQ2MzErLTEuMzMyOCAgICAgICAgICBtaWdodCBiZSAxLjA1NTd4IGZhc3RlcgogICBmb2xk
LW11bHRpLWdldC1ieS1vZmZzZXQtdG8tcG9seS1nZXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNzY4MSstMS40NzI1
ICAgICAgICAgICAgNi4xODAxKy0xLjQzMzQgICAgICAgICAgbWlnaHQgYmUgMS4wOTUyeCBmYXN0
ZXIKICAgZm9sZC1tdWx0aS1wdXQtYnktb2Zmc2V0LXRvLXBvbHktcHV0LWJ5LW9mZnNldCAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjU2
NzUrLTEuNTY1OCAgICAgICAgICAgIDUuNDM5NCstMC4xMTkwICAgICAgICAgIG1pZ2h0IGJlIDEu
MjA3NHggZmFzdGVyCiAgIGZvbGQtbXVsdGktcHV0LWJ5LW9mZnNldC10by1wdXQtYnktb2Zmc2V0
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQuNjEyNistMC4xNTIzICAgICA/ICAgICAgNC43NTM5Ky0wLjQyODkgICAgICAgID8gbWlnaHQg
YmUgMS4wMzA2eCBzbG93ZXIKICAgZm9sZC1tdWx0aS1wdXQtYnktb2Zmc2V0LXRvLXJlcGxhY2Ut
b3ItdHJhbnNpdGlvbi1wdXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNzcyNSstMC4yODc3ICAgICAgICAgICAgOS40
MzEzKy0wLjE5MDEgICAgICAgICAgbWlnaHQgYmUgMS4wMzYyeCBmYXN0ZXIKICAgZm9sZC1wdXQt
YnktaWQtdG8tbXVsdGktcHV0LWJ5LW9mZnNldCAgICAgICAgICAgICAgNy4yOTI2Ky0wLjI4MzQg
ICAgID8gICAgICA3LjQ4NjkrLTAuMjY4MSAgICAgICAgPyBtaWdodCBiZSAxLjAyNjZ4IHNsb3dl
cgogICBmb2xkLXB1dC1ieS12YWwtd2l0aC1zdHJpbmctdG8tbXVsdGktcHV0LWJ5LW9mZnNldCAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3
Ljg4NDQrLTAuMDk3MSAgICAgPyAgICAgIDcuOTc4NSstMC4xMzc1ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDExOXggc2xvd2VyCiAgIGZvbGQtcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC10by1tdWx0aS1w
dXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDguMDg0MistMC4zMTk0ICAgICA/ICAgICAgOC4wODUyKy0wLjIwNjMgICAg
ICAgID8KICAgZm9sZC1wdXQtc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNC4yNDg1Ky0wLjA4MzYgICAgID8gICAgICA0LjI4MjQrLTAuMDc1OSAgICAgICAgPwogICBm
b3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRyaWVzICAgICAgICAgICAgICAgICAgICAgIDExLjkwMDYr
LTAuMTEwNSAgICAgPyAgICAgMTEuOTk1NistMC4xMDY3ICAgICAgICA/CiAgIGZvci1vZi1pdGVy
YXRlLWFycmF5LWtleXMgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTMxMystMC4xNjI0ICAg
ICA/ICAgICAgNC4zMzQxKy0wLjI0MDQgICAgICAgID8gbWlnaHQgYmUgMS4wNDkxeCBzbG93ZXIK
ICAgZm9yLW9mLWl0ZXJhdGUtYXJyYXktdmFsdWVzICAgICAgICAgICAgICAgICAgICAgICAgMy45
NDkzKy0wLjExOTQgICAgID8gICAgICAzLjk1MjUrLTAuMDY5NiAgICAgICAgPwogICBmcm91bmQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjY2MDErLTAuMjEy
NyAgICAgPyAgICAgMTIuOTE0OSstMC40ODIzICAgICAgICA/IG1pZ2h0IGJlIDEuMDIwMXggc2xv
d2VyCiAgIGZ0bC1saWJyYXJ5LWlubGluaW5nLWRhdGF2aWV3ICAgICAgICAgICAgICAgICAgICAg
NzMuNzc3MystMC40NjMxICAgICAhICAgICA3NC44MzkxKy0wLjI1OTYgICAgICAgICEgZGVmaW5p
dGVseSAxLjAxNDR4IHNsb3dlcgogICBmdGwtbGlicmFyeS1pbmxpbmluZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDI5LjAzMzArLTAuMTg0OCAgICAgICAgICAgMjguOTYzNSstMC4xNTQ1
ICAgICAgICAKICAgZnRsLXBvbHltb3JwaGljLWJpdGFuZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDE3NS40OTgxKy01LjYzNjUgICAgICAgICAgMTczLjE2OTMrLTEuMTcyNSAgICAgICAgICBt
aWdodCBiZSAxLjAxMzR4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtYml0b3IgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTczLjQ1NDYrLTAuOTkwMyAgICAgICAgICAxNzIuNzg0NCstMC4y
Nzc0ICAgICAgICAKICAgZnRsLXBvbHltb3JwaGljLWJpdHhvciAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE3NC4xMzIyKy0xLjQ4MTkgICAgICAgICAgMTczLjA4OTArLTAuODI2NCAgICAgICAg
CiAgIGZ0bC1wb2x5bW9ycGhpYy1kaXYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1OTku
Njc1NCstMi4zMzk5ICAgICA/ICAgIDYwMC43MjUwKy00LjQ0NzkgICAgICAgID8KICAgZnRsLXBv
bHltb3JwaGljLWxzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxMC4wMDIyKy0wLjI4
MTQgICAgICAgICAgMjA5LjgwNzgrLTAuMjA5MiAgICAgICAgCiAgIGZ0bC1wb2x5bW9ycGhpYy1t
dWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMDcuOTAwNSstMS4xNTcwICAgICA/ICAg
IDMwOC42MjU4Ky0xLjIwNjYgICAgICAgID8KICAgZnRsLXBvbHltb3JwaGljLXJzaGlmdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIxMC40MDYzKy0wLjgxMDYgICAgICAgICAgMjA5Ljg3Nzgr
LTAuODQ4OSAgICAgICAgCiAgIGZ0bC1wb2x5bW9ycGhpYy1TdHJpbmdGcm9tQ2hhckNvZGUgICAg
ICAgICAgICAgICAgNTUuMjExNistMC4xNjAwICAgICAgICAgICA1NS4wNDEzKy0wLjA4MTcgICAg
ICAgIAogICBmdGwtcG9seW1vcnBoaWMtc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjQwLjI2OTcrLTEuMjgyMiAgICAgPyAgICAyNDIuODQyNSstNy4xMTQ3ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDEwN3ggc2xvd2VyCiAgIGZ0bC1wb2x5bW9ycGhpYy11cnNoaWZ0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAyMjUuNzU1MystMC41MDYwICAgICA/ICAgIDIyOS4wMjg5Ky04LjE5NzUg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTQ1eCBzbG93ZXIKICAgZnVuY3Rpb24tY2FsbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4wODY2Ky0wLjAyNjAgICAgID8gICAgIDEz
LjEzMTYrLTAuMTMwMyAgICAgICAgPwogICBmdW5jdGlvbi1kb3QtYXBwbHkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjU1MDIrLTAuMDU1OSAgICAgPyAgICAgIDIuNTU1MystMC4w
MTgzICAgICAgICA/CiAgIGZ1bmN0aW9uLXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQuMDk5OSstMC4yMzkzICAgICAgICAgICAgMy45NzYwKy0wLjAzNDIgICAgICAg
ICAgbWlnaHQgYmUgMS4wMzEyeCBmYXN0ZXIKICAgZnVuY3Rpb24td2l0aC1ldmFsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDExMi45NDU3Ky0xLjEwMjUgICAgICAgICAgMTEyLjIxMDgr
LTEuMjk3NyAgICAgICAgCiAgIGdjc2UtcG9seS1nZXQtbGVzcy1vYnZpb3VzICAgICAgICAgICAg
ICAgICAgICAgICAgMTEuMzcyNSstMC4zNjY3ICAgICA/ICAgICAxMS43ODYzKy0wLjQ3ODYgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzY0eCBzbG93ZXIKICAgZ2NzZS1wb2x5LWdldCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMi4yNzg0Ky0wLjczOTggICAgID8gICAgIDEyLjcz
MjcrLTAuNzM2NyAgICAgICAgPyBtaWdodCBiZSAxLjAzNzB4IHNsb3dlcgogICBnY3NlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjIyMTkrLTAuMTA1OSAg
ICAgPyAgICAgIDQuNTI1NistMC42MjI5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDcxOXggc2xvd2Vy
CiAgIGdlbmVyYXRvci1jcmVhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
OTQwNistMC4wNjA3ICAgICAgICAgICAgMC45MTQ5Ky0wLjAxMjEgICAgICAgICAgbWlnaHQgYmUg
MS4wMjgyeCBmYXN0ZXIKICAgZ2VuZXJhdG9yLWZpYiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEyMi42MjQzKy0wLjcxNTkgICAgICAgICAgMTIyLjQ3NTMrLTAuMTg4MiAgICAg
ICAgCiAgIGdlbmVyYXRvci1mdW5jdGlvbi1jcmVhdGUgICAgICAgICAgICAgICAgICAgICAgICAg
IDQuNTkwMystMC4xODIxICAgICA/ICAgICAgNC42NDc3Ky0wLjE2NTggICAgICAgID8gbWlnaHQg
YmUgMS4wMTI1eCBzbG93ZXIKICAgZ2VuZXJhdG9yLXN1bnNwaWRlci1hY2Nlc3MtbnNpZXZlICAg
ICAgICAgICAgICAgICAgNy4xMDM1Ky0wLjIzOTAgICAgICAgICAgICA2Ljk1MTcrLTAuMDgwMyAg
ICAgICAgICBtaWdodCBiZSAxLjAyMTh4IGZhc3RlcgogICBnZW5lcmF0b3Itd2l0aC1zZXZlcmFs
LXR5cGVzICAgICAgICAgICAgICAgICAgICAgNDA4LjEyNzIrLTguMzU1MyAgICAgICAgICA0MDYu
MDM1NystMTIuMjk2MCAgICAgICAKICAgZ2V0LWJ5LWlkLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1
cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIuOTU0OSstMC4wNDI3ICAgICA/ICAgICAgMi45NzcwKy0w
LjA1MTggICAgICAgID8KICAgZ2V0LWJ5LWlkLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxp
bWluYXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNS41NDUyKy0wLjE2MDcgICAgICAgICAgICA1LjQzNTMrLTAuMDM3MCAgICAgICAg
ICBtaWdodCBiZSAxLjAyMDJ4IGZhc3RlcgogICBnZXQtYnktaWQtY2hhaW4tZnJvbS10cnktYmxv
Y2sgICAgICAgICAgICAgICAgICAgICAyLjM4OTgrLTAuMDMxMSAgICAgPyAgICAgIDIuNDc0Nist
MC4xNTQxICAgICAgICA/IG1pZ2h0IGJlIDEuMDM1NXggc2xvd2VyCiAgIGdldC1ieS1pZC1jaGVj
ay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAgICAgICAgICAgIDQuMDgwMystMC4xNzc3ICAgICAg
ICAgICAgNC4wNTI1Ky0wLjI1NTcgICAgICAgIAogICBnZXQtYnktaWQtcHJvdG8tb3Itc2VsZiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjM4OTkrLTAuODgzOSAgICAgICAgICAgMTEuNzcz
OCstMS4xNjg5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDUyM3ggZmFzdGVyCiAgIGdldC1ieS1pZC1x
dWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNDEzMCstMC4w
Mjk2ICAgICAgICAgICAgMy40MDM1Ky0wLjAzNTQgICAgICAgIAogICBnZXQtYnktaWQtc2VsZi1v
ci1wcm90byAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjMxMDcrLTAuNzM3NyAgICAgPyAg
ICAgMTIuODU2MSstMS4wNTYwICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ0M3ggc2xvd2VyCiAgIGdl
dC1ieS12YWwtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODgyOCst
MC4xMDU2ICAgICAhICAgICAgNS4yOTk0Ky0wLjA4OTkgICAgICAgICEgZGVmaW5pdGVseSAxLjA4
NTN4IHNsb3dlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLWJpbW9ycGhpYy1jaGVjay1zdHJ1
Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMuODEwNystMC4wMjgxICAgICA/ICAgICAgMy44NDg0
Ky0wLjE2NjEgICAgICAgID8KICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmluZy1iaW1vcnBoaWMtY2hl
Y2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDcuNzIzNSstMC4wNTUzICAgICA/ICAgICAgNy44MTMz
Ky0wLjE5ODcgICAgICAgID8gbWlnaHQgYmUgMS4wMTE2eCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13
aXRoLXN0cmluZy1jaGFpbi1mcm9tLXRyeS1ibG9jayAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjQ3OTgrLTAuMTA2NCAgICAgICAgICAg
IDIuNDQyNystMC4wNDYxICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1MnggZmFzdGVyCiAgIGdldC1i
eS12YWwtd2l0aC1zdHJpbmctY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMjkwMistMC4y
NzA2ICAgICA/ICAgICAgNy4zNTgwKy0wLjMyNDEgICAgICAgID8KICAgZ2V0LWJ5LXZhbC13aXRo
LXN0cmluZy1wcm90by1vci1zZWxmICAgICAgICAgICAgICAxMS43MjEwKy0xLjAxODEgICAgID8g
ICAgIDEzLjE0ODArLTAuOTQ0OSAgICAgICAgPyBtaWdodCBiZSAxLjEyMTd4IHNsb3dlcgogICBn
ZXQtYnktdmFsLXdpdGgtc3RyaW5nLXF1YWRtb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5h
dGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNC43NTI5Ky0wLjA5MzcgICAgID8gICAgICA0Ljc3NzYrLTAuMTI2NiAgICAg
ICAgPwogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLXNlbGYtb3ItcHJvdG8gICAgICAgICAgICAg
IDEzLjI4OTErLTAuMzgxMyAgICAgICAgICAgMTMuMjg0MSstMS4yNTUwICAgICAgICAKICAgZ2V0
LWJ5LXZhbC13aXRoLXN5bWJvbC1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9u
LXNpbXBsZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzLjUwMzgrLTAuMDc5MyAgICAgPyAgICAgIDMuODA0OSstMC43ODU3ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDg1OXggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtYmltb3Jw
aGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjYyMzQrLTAuMTA1MyAgICAgICAgICAg
MTIuNjIxOSstMC4xMTM3ICAgICAgICAKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1jaGFpbi1m
cm9tLXRyeS1ibG9jayAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyLjQ1MzgrLTAuMDQzNiAgICAgPyAgICAgIDIuNjAzNSstMC4xODUxICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDYxMHggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wt
Y2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNDkxNistMC4xMjc1ICAgICA/ICAgICAgOS41
NTgzKy0wLjIxODcgICAgICAgID8KICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1wcm90by1vci1z
ZWxmICAgICAgICAgICAgICAxMi43NDkzKy0xLjI0MTQgICAgID8gICAgIDEyLjc1NTMrLTEuMDI5
MiAgICAgICAgPwogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLXF1YWRtb3JwaGljLWNoZWNrLXN0
cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4yOTAwKy0wLjA3NzAgICAgICAgICAgICA0LjI0
NjcrLTAuMDM3NiAgICAgICAgICBtaWdodCBiZSAxLjAxMDJ4IGZhc3RlcgogICBnZXQtYnktdmFs
LXdpdGgtc3ltYm9sLXNlbGYtb3ItcHJvdG8gICAgICAgICAgICAgIDEyLjc2MDErLTEuMjg5MSAg
ICAgPyAgICAgMTMuNTkyNCstMS4xMDU5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDY1Mnggc2xvd2Vy
CiAgIGdldF9jYWxsZWVfbW9ub21vcnBoaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIu
NzY0NystMC4xMTA0ICAgICA/ICAgICAgMi44MDE2Ky0wLjIwMzAgICAgICAgID8gbWlnaHQgYmUg
MS4wMTMzeCBzbG93ZXIKICAgZ2V0X2NhbGxlZV9wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNC4wNDgzKy0wLjE3OTYgICAgID8gICAgICA0LjA2MjgrLTAuMDYyMiAgICAg
ICAgPwogICBnZXR0ZXItbm8tYWN0aXZhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzLjg3MTIrLTAuMjE4NSAgICAgICAgICAgIDMuNzgzMistMC4wNTgxICAgICAgICAgIG1pZ2h0
IGJlIDEuMDIzM3ggZmFzdGVyCiAgIGdldHRlci1wcm90b3R5cGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDYuMDc2MystMC4wNjQ5ICAgICA/ICAgICAgNi4yNjI1Ky0wLjQzOTEg
ICAgICAgID8gbWlnaHQgYmUgMS4wMzA2eCBzbG93ZXIKICAgZ2V0dGVyLXJpY2hhcmRzLXRyeS1j
YXRjaCAgICAgICAgICAgICAgICAgICAgICAgMTMyOC4xMDY0Ky0yMy4yMTEyICAgICAgICAxMjk5
LjQxNjArLTIwLjg3MzMgICAgICAgICBtaWdodCBiZSAxLjAyMjF4IGZhc3RlcgogICBnZXR0ZXIt
cmljaGFyZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg4LjE3MjYrLTEuOTY5
MSAgICAgICAgICAgODcuNDk2MSstMS40NDExICAgICAgICAKICAgZ2V0dGVyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4wNTUyKy0wLjE3MTAgICAgID8gICAg
ICA0LjEzODkrLTAuMjE0OCAgICAgICAgPyBtaWdodCBiZSAxLjAyMDZ4IHNsb3dlcgogICBnbG9i
YWwtb2JqZWN0LWFjY2Vzcy13aXRoLW11dGF0aW5nLXN0cnVjdHVyZSAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ljk5MTErLTAuMTY0OCAg
ICAgPyAgICAgIDYuODUwMystMS4yOTkwICAgICAgICA/IG1pZ2h0IGJlIDEuMTQzNHggc2xvd2Vy
CiAgIGdsb2JhbC12YXItY29uc3QtaW5mZXItZmlyZS1mcm9tLW9wdCAgICAgICAgICAgICAgIDAu
OTk4MystMC4wODE3ICAgICAgICAgICAgMC45Nzc2Ky0wLjA2NzEgICAgICAgICAgbWlnaHQgYmUg
MS4wMjEyeCBmYXN0ZXIKICAgZ2xvYmFsLXZhci1jb25zdC1pbmZlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC44Njk1Ky0wLjA4OTEgICAgICAgICAgICAwLjgyNDUrLTAuMDIxMCAgICAg
ICAgICBtaWdodCBiZSAxLjA1NDZ4IGZhc3RlcgogICBoYXJkLW92ZXJmbG93LWNoZWNrLWVxdWFs
ICAgICAgICAgICAgICAgICAgICAgICAgIDI5LjQ0ODUrLTAuMTM5OSAgICAgPyAgICAgMjkuNjA1
MistMC4yNDA3ICAgICAgICA/CiAgIGhhcmQtb3ZlcmZsb3ctY2hlY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjkuMzQ1MistMC4xMzExICAgICA/ICAgICAyOS40ODM1Ky0wLjIyMDEg
ICAgICAgID8KICAgSGFzaE1hcC1wdXQtZ2V0LWl0ZXJhdGUta2V5cyAgICAgICAgICAgICAgICAg
ICAgICAyNy42MzUzKy0wLjQ4NzcgICAgID8gICAgIDI5LjE2NjArLTEuNDUyMiAgICAgICAgPyBt
aWdodCBiZSAxLjA1NTR4IHNsb3dlcgogICBIYXNoTWFwLXB1dC1nZXQtaXRlcmF0ZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDI3LjM3NTYrLTAuMjc0MCAgICAgISAgICAgMjguMTA2OCstMC4y
NDI5ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMjY3eCBzbG93ZXIKICAgSGFzaE1hcC1zdHJpbmct
cHV0LWdldC1pdGVyYXRlICAgICAgICAgICAgICAgICAgICAzMC44NDg1Ky0wLjQwNjQgICAgID8g
ICAgIDMwLjk5MDYrLTAuOTYxMyAgICAgICAgPwogICBob2lzdC1tYWtlLXJvcGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1LjE0MDIrLTAuNjQwMSAgICAgICAgICAgIDUuMDE3
NistMC40ODk4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI0NHggZmFzdGVyCiAgIGhvaXN0LXBvbHkt
Y2hlY2stc3RydWN0dXJlLWVmZmVjdGZ1bC1sb29wICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNjUzMystMC4xMTQ0ICAgICA/ICAgICAg
My42NzI5Ky0wLjE0NzIgICAgICAgID8KICAgaG9pc3QtcG9seS1jaGVjay1zdHJ1Y3R1cmUgICAg
ICAgICAgICAgICAgICAgICAgICAgMi41MTIxKy0wLjAyNzYgICAgID8gICAgICAyLjU5MjErLTAu
MDk4MSAgICAgICAgPyBtaWdodCBiZSAxLjAzMTl4IHNsb3dlcgogICBpbXVsLWRvdWJsZS1vbmx5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjk2NDIrLTAuMTUwOCAgICAgPyAg
ICAgIDQuMDA2NistMC4xNDI4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwN3ggc2xvd2VyCiAgIGlt
dWwtaW50LW9ubHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMTY3Mist
MC4xMTYwICAgICA/ICAgICAgNi4yMjc2Ky0wLjEzODYgICAgICAgID8KICAgaW11bC1taXhlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4xMzczKy0wLjI3NDggICAg
ICAgICAgICA0LjA2MTMrLTAuMTIyMCAgICAgICAgICBtaWdodCBiZSAxLjAxODd4IGZhc3Rlcgog
ICBpbi1mb3VyLWNhc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4LjM2
NTErLTAuMTE1MCAgICAgPyAgICAgMTguNTEyNistMC4xODgwICAgICAgICA/CiAgIGluLW9uZS1j
YXNlLWZhbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuMjIwNSstMC4xNjkw
ICAgICAgICAgICAxMS4yMjAzKy0wLjA2NjAgICAgICAgIAogICBpbi1vbmUtY2FzZS10cnVlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjIyNzMrLTAuMDk0MiAgICAgICAgICAg
MTEuMTkyMCstMC4yMDAzICAgICAgICAKICAgaW4tdHdvLWNhc2VzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMS40NTkxKy0wLjMwNjUgICAgICAgICAgIDExLjA5NTgrLTAu
NDQ2NSAgICAgICAgICBtaWdodCBiZSAxLjAzMjd4IGZhc3RlcgogICBpbmRleGVkLXByb3BlcnRp
ZXMtaW4tb2JqZWN0cyAgICAgICAgICAgICAgICAgICAgICAzLjYwNjcrLTAuMTAyOSAgICAgICAg
ICAgIDMuNTQ3MSstMC4wMTgxICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2OHggZmFzdGVyCiAgIGlu
ZmVyLWNsb3N1cmUtY29uc3QtdGhlbi1tb3Ytbm8taW5saW5lICAgICAgICAgICAgIDMuNzE2OSst
MC4wOTQwICAgICA/ICAgICAgMy43OTMyKy0wLjE3MzggICAgICAgID8gbWlnaHQgYmUgMS4wMjA2
eCBzbG93ZXIKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLW1vdiAgICAgICAgICAgICAgICAg
ICAgICAgOC40OTU2Ky0wLjAxNDIgICAgID8gICAgICA4LjUzMDkrLTAuMTA1OCAgICAgICAgPwog
ICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tcHV0LXRvLXNjb3BlLW5vLWlubGluZSAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjg4NjMr
LTAuMDU3MCAgICAgPyAgICAgMTIuOTI3OSstMC4xNTgwICAgICAgICA/CiAgIGluZmVyLWNsb3N1
cmUtY29uc3QtdGhlbi1wdXQtdG8tc2NvcGUgICAgICAgICAgICAgMjcuNjU1NystMC44ODY2ICAg
ICA/ICAgICAyOC4xMzM1Ky0wLjc3NjggICAgICAgID8gbWlnaHQgYmUgMS4wMTczeCBzbG93ZXIK
ICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXJlZW50ZXItbm8taW5saW5lICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjMuNDYzMCstMC4w
NTQzICAgICAgICAgICA2My40NTQ5Ky0wLjA1MDggICAgICAgIAogICBpbmZlci1jbG9zdXJlLWNv
bnN0LXRoZW4tcmVlbnRlciAgICAgICAgICAgICAgICAgIDI4Ljg0MDUrLTAuNTQxMiAgICAgICAg
ICAgMjguNDcwMistMC43MzkzICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzMHggZmFzdGVyCiAgIGlu
ZmVyLWNvbnN0YW50LWdsb2JhbC1wcm9wZXJ0eSAgICAgICAgICAgICAgICAgICAgIDQuMzA2MSst
MC4wMzI4ICAgICA/ICAgICAgNC40NDM4Ky0wLjI2MTUgICAgICAgID8gbWlnaHQgYmUgMS4wMzIw
eCBzbG93ZXIKICAgaW5mZXItY29uc3RhbnQtcHJvcGVydHkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi44MDk5Ky0wLjA2ODEgICAgICAgICAgICAyLjc3MjErLTAuMDc2NiAgICAgICAgICBt
aWdodCBiZSAxLjAxMzZ4IGZhc3RlcgogICBpbmZlci1vbmUtdGltZS1jbG9zdXJlLXRlbi12YXJz
ICAgICAgICAgICAgICAgICAgICA4LjUyNDUrLTAuMDcxNSAgICAgICAgICAgIDguNTIyMistMC4w
NjY0ICAgICAgICAKICAgaW5mZXItb25lLXRpbWUtY2xvc3VyZS10d28tdmFycyAgICAgICAgICAg
ICAgICAgICAgOC4wNjcwKy0wLjE1NzAgICAgICAgICAgICA4LjAwMzcrLTAuMDM4NSAgICAgICAg
CiAgIGluZmVyLW9uZS10aW1lLWNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgu
MDA4OCstMC4xMjcwICAgICAgICAgICAgNy45NDIyKy0wLjAzNDQgICAgICAgIAogICBpbmZlci1v
bmUtdGltZS1kZWVwLWNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAgIDE0LjU3ODIrLTAuMDQ0
MiAgICAgPyAgICAgMTQuNjY1OSstMC4xOTIwICAgICAgICA/CiAgIGlubGluZS1hcmd1bWVudHMt
YWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMzgwNistMC4xOTE3ICAgICA/ICAg
ICAgNC40OTMwKy0wLjIxOTkgICAgICAgID8gbWlnaHQgYmUgMS4wMjU3eCBzbG93ZXIKICAgaW5s
aW5lLWFyZ3VtZW50cy1hbGlhc2VkLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgNC4zOTY4Ky0w
LjE1OTIgICAgID8gICAgICA0LjQ0MzMrLTAuNDQ1MyAgICAgICAgPyBtaWdodCBiZSAxLjAxMDZ4
IHNsb3dlcgogICBpbmxpbmUtYXJndW1lbnRzLWxvY2FsLWVzY2FwZSAgICAgICAgICAgICAgICAg
ICAgICA0LjQyNjUrLTAuMTkxMCAgICAgICAgICAgIDQuNDA1OSstMC4xMzMyICAgICAgICAKICAg
aW5saW5lLWdldC1zY29wZWQtdmFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi45Njg2
Ky0wLjExMjIgICAgICAgICAgICAyLjk2MjErLTAuMDg2NSAgICAgICAgCiAgIGlubGluZWQtcHV0
LWJ5LWlkLXRyYW5zaXRpb24gICAgICAgICAgICAgICAgICAgICAgMTAuMzU5MystMC41Nzg5ICAg
ICA/ICAgICAxMC43MTMxKy0xLjAwNjAgICAgICAgID8gbWlnaHQgYmUgMS4wMzQxeCBzbG93ZXIK
ICAgaW5saW5lZC1wdXQtYnktdmFsLXdpdGgtc3RyaW5nLXRyYW5zaXRpb24gICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Mi4wODM4Ky0wLjcy
OTEgICAgID8gICAgIDUyLjgxMDgrLTAuMzIzNCAgICAgICAgPyBtaWdodCBiZSAxLjAxNDB4IHNs
b3dlcgogICBpbmxpbmVkLXB1dC1ieS12YWwtd2l0aC1zeW1ib2wtdHJhbnNpdGlvbiAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUyLjUxOTgr
LTAuMzEyMyAgICAgICAgICAgNTIuNDcwNSstMC4zMzgxICAgICAgICAKICAgaW5zdGFuY2VvZi1i
b3VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNi4xNzk5Ky0wLjM0NDIgICAg
ID8gICAgIDI2LjI3NTErLTAuNDY0OCAgICAgICAgPwogICBpbnQtb3Itb3RoZXItYWJzLXRoZW4t
Z2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA1LjczNzUrLTAuMDQwMyAgICAgPyAgICAgIDUu
NzYyOCstMC4xNjk4ICAgICAgICA/CiAgIGludC1vci1vdGhlci1hYnMtemVyby10aGVuLWdldC1i
eS12YWwgICAgICAgICAgICAgMjAuNTc3NistMC4yMjEwICAgICAgICAgICAyMC4xMzAxKy0wLjI2
MjUgICAgICAgICAgbWlnaHQgYmUgMS4wMjIyeCBmYXN0ZXIKICAgaW50LW9yLW90aGVyLWFkZC10
aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNS4yMzY3Ky0wLjExMTcgICAgICAgICAg
ICA1LjE3OTArLTAuMDY0NCAgICAgICAgICBtaWdodCBiZSAxLjAxMTF4IGZhc3RlcgogICBpbnQt
b3Itb3RoZXItYWRkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjA0OTcrLTAu
MDQ4NSAgICAgICAgICAgIDYuMDM2NystMC4wMzY4ICAgICAgICAKICAgaW50LW9yLW90aGVyLWRp
di10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNC43MTc1Ky0wLjAyOTkgICAgID8g
ICAgICA0Ljk5NjArLTAuNjE4MCAgICAgICAgPyBtaWdodCBiZSAxLjA1OTB4IHNsb3dlcgogICBp
bnQtb3Itb3RoZXItbWF4LXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA0Ljk2MTYr
LTAuMDM0MiAgICAgPyAgICAgIDQuOTY1OSstMC4wNDQ0ICAgICAgICA/CiAgIGludC1vci1vdGhl
ci1taW4tdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDQuODkwNCstMC4wNTA1ICAg
ICA/ICAgICAgNC45NTYwKy0wLjAzODkgICAgICAgID8gbWlnaHQgYmUgMS4wMTM0eCBzbG93ZXIK
ICAgaW50LW9yLW90aGVyLW1vZC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNC4z
NjIyKy0wLjA2NTIgICAgID8gICAgICA0LjQ1ODMrLTAuMTEyNCAgICAgICAgPyBtaWdodCBiZSAx
LjAyMjB4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItbXVsLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAg
ICAgICAgICAgICA0LjQzMzYrLTAuMDgxNSAgICAgICAgICAgIDQuMzgwNistMC4wNjE0ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDEyMXggZmFzdGVyCiAgIGludC1vci1vdGhlci1uZWctdGhlbi1nZXQt
YnktdmFsICAgICAgICAgICAgICAgICAgIDUuMTE3NCstMC4wMjk4ICAgICA/ICAgICAgNS4yNjY0
Ky0wLjE1OTAgICAgICAgID8gbWlnaHQgYmUgMS4wMjkxeCBzbG93ZXIKICAgaW50LW9yLW90aGVy
LW5lZy16ZXJvLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAyMi4wNjIwKy0zLjEyNDggICAg
ICAgICAgIDIwLjI0NjgrLTAuMTc0OSAgICAgICAgICBtaWdodCBiZSAxLjA4OTZ4IGZhc3Rlcgog
ICBpbnQtb3Itb3RoZXItc3ViLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA1LjE2
MjcrLTAuMTM5NCAgICAgICAgICAgIDUuMTMyMystMC4wNjUzICAgICAgICAKICAgaW50LW9yLW90
aGVyLXN1YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4zMDg5Ky0wLjA1ODIg
ICAgID8gICAgICA0LjMzMjkrLTAuMTM3NCAgICAgICAgPwogICBpbnQtb3ZlcmZsb3ctbG9jYWwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjQ3MzcrLTAuOTgxNyAgICAgICAgICAg
IDUuMDk1MCstMC4wOTU0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDc0M3ggZmFzdGVyCiAgIEludDE2
QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgICAgICAgICAgICAgNTEuMjIyNistMC42
MjI2ICAgICA/ICAgICA1MS44MzYyKy0wLjc0OTEgICAgICAgID8gbWlnaHQgYmUgMS4wMTIweCBz
bG93ZXIKICAgSW50MTZBcnJheS1idWJibGUtc29ydC13aXRoLWJ5dGVMZW5ndGggICAgICAgICAg
ICAyNS43OTQ3Ky0yLjY0MDUgICAgICAgICAgIDIzLjI3MDcrLTAuOTgyNCAgICAgICAgICBtaWdo
dCBiZSAxLjEwODV4IGZhc3RlcgogICBJbnQxNkFycmF5LWJ1YmJsZS1zb3J0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIxLjg2MjkrLTEuMjM4NSAgICAgICAgICAgMjAuODkxOSstMC45NDIz
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ2NXggZmFzdGVyCiAgIEludDE2QXJyYXktbG9hZC1pbnQt
bXVsICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuOTEzMCstMC4wNTE3ICAgICA/ICAgICAg
MS45MTQ0Ky0wLjA0ODYgICAgICAgID8KICAgSW50MTZBcnJheS10by1JbnQzMkFycmF5LXNldCAg
ICAgICAgICAgICAgICAgICAgICA1NS4zNjA3Ky0wLjMzMDUgICAgIF4gICAgIDU0LjE5NzYrLTAu
Mzc1NCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDIxNXggZmFzdGVyCiAgIEludDMyQXJyYXktYWxs
b2MtbGFyZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuNTMwMistMC42MTM2ICAgICAg
ICAgICAxNC4yMjA2Ky0wLjQ1NjAgICAgICAgICAgbWlnaHQgYmUgMS4wMjE4eCBmYXN0ZXIKICAg
SW50MzJBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgICA1Ni4xNDM5
Ky0wLjg0MjQgICAgID8gICAgIDU2LjE1MDIrLTAuNzc1MyAgICAgICAgPwogICBJbnQzMkFycmF5
LWFsbG9jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjI5OTIrLTAuMTUxMyAg
ICAgICAgICAgIDMuMDk0MistMC4yMDc3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY2M3ggZmFzdGVy
CiAgIEludDMyQXJyYXktSW50OEFycmF5LXZpZXctYWxsb2MgICAgICAgICAgICAgICAgICAgIDcu
NTY5OCstMC4wODMxICAgICA/ICAgICAgNy43MDIzKy0wLjE5OTYgICAgICAgID8gbWlnaHQgYmUg
MS4wMTc1eCBzbG93ZXIKICAgaW50NTItc3BpbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNi4yODUxKy0wLjA4MzAgICAgID8gICAgICA2LjYyNjUrLTAuNTAwMyAgICAg
ICAgPyBtaWdodCBiZSAxLjA1NDN4IHNsb3dlcgogICBJbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZl
ZCAgICAgICAgICAgICAgICAgICAgICAgIDQ3LjU0NzArLTAuNTQxNiAgICAgPyAgICAgNDcuNzc1
OCstMC41MzgxICAgICAgICA/CiAgIEludDhBcnJheS1sb2FkLXdpdGgtYnl0ZUxlbmd0aCAgICAg
ICAgICAgICAgICAgICAgIDQuMTgxMistMC4wNDA5ICAgICA/ICAgICAgNC4yMzczKy0wLjEzODMg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTM0eCBzbG93ZXIKICAgSW50OEFycmF5LWxvYWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4yMTg4Ky0wLjA2NjYgICAgICAgICAgICA0
LjE2NTcrLTAuMDU0NSAgICAgICAgICBtaWdodCBiZSAxLjAxMjh4IGZhc3RlcgogICBpbnRlZ2Vy
LWRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjM0ODkrLTAuMDYy
NyAgICAgPyAgICAgMTMuMzU4OSstMC4wNzM2ICAgICAgICA/CiAgIGludGVnZXItbW9kdWxvICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuOTUwNystMC4wMzQ5ICAgICA/ICAg
ICAgMS45OTE5Ky0wLjA3MDcgICAgICAgID8gbWlnaHQgYmUgMS4wMjExeCBzbG93ZXIKICAgaXMt
Ym9vbGVhbi1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy42Mzc2Ky0w
LjA1MzIgICAgID8gICAgICAzLjcxMzgrLTAuMTY3MSAgICAgICAgPyBtaWdodCBiZSAxLjAyMDl4
IHNsb3dlcgogICBpcy1ib29sZWFuLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjY0ODcrLTAuMDgwMiAgICAgICAgICAgIDIuNjA2MistMC4wMjU4ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDE2M3ggZmFzdGVyCiAgIGlzLWZ1bmN0aW9uLWZvbGQtdHJpY2t5LWludGVybmFs
LWZ1bmN0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTIuNzA4OCstMC4xMTIyICAgICA/ICAgICAxMi43OTk3Ky0wLjExMzcgICAgICAg
ID8KICAgaXMtZnVuY3Rpb24tZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAgICAgICAg
My45MzAzKy0wLjA5MjUgICAgICAgICAgICAzLjg5MTQrLTAuMTA4MiAgICAgICAgICBtaWdodCBi
ZSAxLjAxMDB4IGZhc3RlcgogICBpcy1mdW5jdGlvbi1mb2xkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyLjc1MzkrLTAuMDk1NSAgICAgICAgICAgIDIuNzUyMSstMC4xMDE5ICAg
ICAgICAKICAgaXMtbnVtYmVyLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy44MjEyKy0wLjAzMzMgICAgID8gICAgICAzLjgyNjUrLTAuMDU0MyAgICAgICAgPwogICBp
cy1udW1iZXItZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjcwNjcr
LTAuMDM5MSAgICAgICAgICAgIDIuNjUyOSstMC4wNzkyICAgICAgICAgIG1pZ2h0IGJlIDEuMDIw
M3ggZmFzdGVyCiAgIGlzLW9iamVjdC1vci1udWxsLWZvbGQtZnVuY3Rpb25zICAgICAgICAgICAg
ICAgICAgIDIuNzAwMCstMC4wMzMwICAgICA/ICAgICAgMi43MTI4Ky0wLjA1NjEgICAgICAgID8K
ICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZC1sZXNzLXRyaWNreSAgICAgICAgICAgICAgICAgMy45
MTIwKy0wLjA5NTcgICAgID8gICAgICAzLjk0NDMrLTAuMDQ3NCAgICAgICAgPwogICBpcy1vYmpl
Y3Qtb3ItbnVsbC1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICA0LjUyNDIrLTAuMjg1
OCAgICAgICAgICAgIDQuNDMxMCstMC4xNDUyICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxMHggZmFz
dGVyCiAgIGlzLW9iamVjdC1vci1udWxsLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIuNjk3MystMC4wMjQ4ICAgICA/ICAgICAgMi43MDM2Ky0wLjA2NDMgICAgICAgID8KICAgaXMt
b2JqZWN0LW9yLW51bGwtdHJpY2tpZXItZnVuY3Rpb24gICAgICAgICAgICAgICAgMy45NTM1Ky0w
LjA5NzQgICAgICAgICAgICAzLjk1MjkrLTAuMjAxMyAgICAgICAgCiAgIGlzLW9iamVjdC1vci1u
dWxsLXRyaWNraWVyLWludGVybmFsLWZ1bmN0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNzY3MistMC4wNjAyICAgICAhICAgICAx
My4yMDI0Ky0wLjMxODkgICAgICAgICEgZGVmaW5pdGVseSAxLjAzNDF4IHNsb3dlcgogICBpcy1v
YmplY3Qtb3ItbnVsbC10cmlja3ktZnVuY3Rpb24gICAgICAgICAgICAgICAgICAzLjk5ODgrLTAu
MTUzNSAgICAgICAgICAgIDMuOTU1NSstMC4wNzkyICAgICAgICAgIG1pZ2h0IGJlIDEuMDExMHgg
ZmFzdGVyCiAgIGlzLW9iamVjdC1vci1udWxsLXRyaWNreS1pbnRlcm5hbC1mdW5jdGlvbiAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjY2
OTcrLTAuMTc2NCAgICAgICAgICAgIDguNTA0OCstMC4wOTkyICAgICAgICAgIG1pZ2h0IGJlIDEu
MDE5NHggZmFzdGVyCiAgIGlzLXN0cmluZy1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuODEzMystMC4wNjY4ICAgICA/ICAgICAgMy44NzY5Ky0wLjEyMTcgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTY3eCBzbG93ZXIKICAgaXMtc3RyaW5nLWZvbGQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMi42OTQwKy0wLjEwNzIgICAgID8gICAgICAyLjg1OTQr
LTAuMTEzMyAgICAgICAgPyBtaWdodCBiZSAxLjA2MTR4IHNsb3dlcgogICBpcy11bmRlZmluZWQt
Zm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjM1NzQrLTAuMTUwMyAgICAg
PyAgICAgIDMuMzU4NCstMC4xMzgyICAgICAgICA/CiAgIGlzLXVuZGVmaW5lZC1mb2xkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNjY2MSstMC4wNDg1ICAgICA/ICAgICAgMi42
ODA0Ky0wLjEwMDggICAgICAgID8KICAgSlNPTlAtbmVnYXRpdmUtMCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4zNzEyKy0wLjAzNzQgICAgICAgICAgICAwLjM1OTMrLTAuMDEy
NiAgICAgICAgICBtaWdodCBiZSAxLjAzMzJ4IGZhc3RlcgogICBsYXJnZS1pbnQtY2FwdHVyZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjcxMTQrLTAuMTUyNiAgICAgPyAgICAg
IDMuNzIxNistMC4xNDA1ICAgICAgICA/CiAgIGxhcmdlLWludC1uZWcgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTUuOTE5MystMC4xNjE1ICAgICA/ICAgICAxNS45NDc4Ky0w
LjM0NDcgICAgICAgID8KICAgbGFyZ2UtaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxNC4yNjk4Ky0wLjExNTggICAgID8gICAgIDE0LjQzNDUrLTAuMTMwNCAgICAg
ICAgPyBtaWdodCBiZSAxLjAxMTV4IHNsb3dlcgogICBsb2FkLXZhcmFyZ3MtZWxpbWluYXRpb24g
ICAgICAgICAgICAgICAgICAgICAgICAgIDI0LjI2MDArLTAuMzQ5MiAgICAgICAgICAgMjQuMTYz
NSstMC4yMTMyICAgICAgICAKICAgbG9naWNhbC1ub3Qtd2VpcmQtdHlwZXMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMy41MDgxKy0wLjQwNjUgICAgICAgICAgICAzLjI5NzgrLTAuMDUxOSAg
ICAgICAgICBtaWdodCBiZSAxLjA2Mzh4IGZhc3RlcgogICBsb2dpY2FsLW5vdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljg3NzIrLTAuMDMyNyAgICAgPyAgICAgIDQu
OTA5OSstMC4wNDY4ICAgICAgICA/CiAgIGxvdHMtb2YtZmllbGRzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTEuMjcyNystMC4yNjczICAgICAgICAgICAxMS4wMzQzKy0wLjI1
NzUgICAgICAgICAgbWlnaHQgYmUgMS4wMjE2eCBmYXN0ZXIKICAgbWFrZS1pbmRleGVkLXN0b3Jh
Z2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4zMzE2Ky0wLjE3NDkgICAgID8gICAg
ICAzLjM1ODIrLTAuMjA5NCAgICAgICAgPwogICBtYWtlLXJvcGUtY3NlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0LjQ0MjcrLTAuMTAzNyAgICAgPyAgICAgIDQuNTIxMSst
MC4xODg2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3N3ggc2xvd2VyCiAgIG1hbnktcmVwZWF0LXN0
b3JlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEuNzg5NCstMC41NjAzICAgICAg
ICAgICAyMS41Njc5Ky0wLjM2NzggICAgICAgICAgbWlnaHQgYmUgMS4wMTAzeCBmYXN0ZXIKICAg
bWFwLWZvci1lYWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4yMjYz
Ky0wLjIwNTEgICAgICAgICAgICA2LjE3MDYrLTAuMTUzMyAgICAgICAgCiAgIG1hcC1mb3Itb2Yg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEuMDgxNistMC40NTE2ICAg
ICA/ICAgICAyMi4zMTkzKy0yLjQ1MDkgICAgICAgID8gbWlnaHQgYmUgMS4wNTg3eCBzbG93ZXIK
ICAgbWFyc2FnbGlhLWxhcmdlci1pbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOC4w
NzM5Ky0wLjAzNDAgICAgICAgICAgIDM4LjA1MzMrLTAuMDQ2NSAgICAgICAgCiAgIG1hcnNhZ2xp
YS1vc3ItZW50cnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEuNjM3NSstMC4xNzUy
ICAgICAgICAgICAyMS42MjYyKy0wLjI0NDIgICAgICAgIAogICBtYXRoLXJhbmRvbSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4LjE3NjgrLTAuMTU0MyAgICAgICAgICAg
MTguMTU3MSstMC4xNTY4ICAgICAgICAKICAgbWF0aC13aXRoLW91dC1vZi1ib3VuZHMtYXJyYXkt
dmFsdWVzICAgICAgICAgICAgICAzMy4yMDE2Ky0wLjE2NzggICAgID8gICAgIDM5LjI4NjMrLTcu
NjI4MyAgICAgICAgPyBtaWdodCBiZSAxLjE4MzN4IHNsb3dlcgogICBtYXgtYm9vbGVhbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjg5MTErLTAuMTA0OSAgICAgPyAg
ICAgIDIuOTE4MystMC4xNjYwICAgICAgICA/CiAgIG1ldGhvZC1vbi1udW1iZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTkuOTQ4OCstMC4wOTA0ICAgICA/ICAgICAyMC4yOTg0
Ky0wLjQ4OTQgICAgICAgID8gbWlnaHQgYmUgMS4wMTc1eCBzbG93ZXIKICAgbWluLWJvb2xlYW4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44OTc5Ky0wLjA3MzEgICAg
ICAgICAgICAyLjgxODYrLTAuMDM2NSAgICAgICAgICBtaWdodCBiZSAxLjAyODF4IGZhc3Rlcgog
ICBtaW51cy1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjkz
OTArLTAuMTY2MSAgICAgICAgICAgIDIuOTA3OSstMC4wNzA5ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDEwN3ggZmFzdGVyCiAgIG1pbnVzLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIuNTMyNystMC4xNDAxICAgICAgICAgICAgMi40ODAwKy0wLjA2MTEgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjEzeCBmYXN0ZXIKICAgbWlzYy1zdHJpY3QtZXEgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyNS4zMTUyKy0wLjU5MTcgICAgID8gICAgIDI1LjMzNzQr
LTAuMzQ1MiAgICAgICAgPwogICBtb2QtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDExLjc4ODcrLTAuMTA2OCAgICAgICAgICAgMTEuNzExNystMC4wMzkyICAg
ICAgICAKICAgbW9kLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOC45MzcyKy0wLjEyOTkgICAgID8gICAgICA5LjIwNTArLTAuNTMzMyAgICAgICAgPyBtaWdo
dCBiZSAxLjAzMDB4IHNsb3dlcgogICBtdWwtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzLjQ3NzYrLTAuMDQ3NyAgICAgPyAgICAgIDMuNDgwNystMC4wNTYw
ICAgICAgICA/CiAgIG11bC1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMuMDgwMystMC4xNTQ2ICAgICAgICAgICAgMy4wNjQxKy0wLjE1NDUgICAgICAgIAog
ICBuZWctYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjA2
OTgrLTAuMTQ0MyAgICAgICAgICAgIDIuOTg4NCstMC4wNDgwICAgICAgICAgIG1pZ2h0IGJlIDEu
MDI3MnggZmFzdGVyCiAgIG5lZ2F0aXZlLXplcm8tZGl2aWRlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuNDczNSstMC4wMjA4ICAgICA/ICAgICAgMC40NzcyKy0wLjAxMjEgICAgICAg
ID8KICAgbmVnYXRpdmUtemVyby1tb2R1bG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC40NzQxKy0wLjAxMzQgICAgICAgICAgICAwLjQ2NTkrLTAuMDEzNiAgICAgICAgICBtaWdodCBi
ZSAxLjAxNzZ4IGZhc3RlcgogICBuZWdhdGl2ZS16ZXJvLW5lZ2F0ZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLjUwNDkrLTAuMTEyNyAgICAgICAgICAgIDAuNDU5NCstMC4wMTAzICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDk4OHggZmFzdGVyCiAgIG5lc3RlZC1mdW5jdGlvbi1wYXJzaW5n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzkuNDQ1MystMC4yMzQ5ICAgICA/ICAgICAzOS44
Mjk4Ky0wLjE4ODggICAgICAgID8KICAgbmV3LWFycmF5LWJ1ZmZlci1kZWFkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA5Ni40NTU3Ky0wLjQ1MTYgICAgID8gICAgIDk2Ljc0MzMrLTAuNjk4
MyAgICAgICAgPwogICBuZXctYXJyYXktYnVmZmVyLXB1c2ggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA2Ljk5MDErLTAuMjU1NiAgICAgICAgICAgIDYuOTM2MistMC4xODMxICAgICAgICAK
ICAgbmV3LWFycmF5LWRlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS40
Mzk5Ky0wLjgwOTkgICAgICAgICAgICA5LjAyMzArLTAuNTMwMCAgICAgICAgICBtaWdodCBiZSAx
LjA0NjJ4IGZhc3RlcgogICBuZXctYXJyYXktcHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzLjg1MzErLTAuMDM2MiAgICAgPyAgICAgIDMuOTgzMistMC4xMDgwICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDMzOHggc2xvd2VyCiAgIG5vLWlubGluZS1jb25zdHJ1Y3RvciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzYuNDY0NSstMC4xMTIzICAgICAgICAgICAzNi4zOTYx
Ky0wLjE4MjYgICAgICAgIAogICBudW1iZXItdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA0LjExMjcrLTAuMDM0NyAgICAgPyAgICAgIDQuMTY1OSstMC4wMzQzICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDEyOXggc2xvd2VyCiAgIG9iamVjdC1jbG9zdXJlLWNhbGwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuODE3NSstMC4wMjQ5ICAgICA/ICAgICAgNi4z
NzM4Ky0xLjI0NzAgICAgICAgID8gbWlnaHQgYmUgMS4wOTU2eCBzbG93ZXIKICAgb2JqZWN0LWdl
dC1vd24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheSAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjA0MjIrLTAuMDE5OCAgICAg
ICAgICAgIDEuMDIyMistMC4wNDU1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5NXggZmFzdGVyCiAg
IG9iamVjdC10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuOTk0
NystMC4xMzE2ICAgICA/ICAgICAgNC4wMjI2Ky0wLjEyOTUgICAgICAgID8KICAgb2J2aW91cy1z
aW5rLXBhdGhvbG9neS10YWtlbiAgICAgICAgICAgICAgICAgICAgIDEzNC4yMDA4Ky0xLjQ5ODAg
ICAgICAgICAgMTMzLjM5MDArLTAuNjUzNCAgICAgICAgCiAgIG9idmlvdXMtc2luay1wYXRob2xv
Z3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQuNzgyNistMC4yMDYxICAgICAgICAgICAy
NC41MTc1Ky0wLjM0MjggICAgICAgICAgbWlnaHQgYmUgMS4wMTA4eCBmYXN0ZXIKICAgb2J2aW91
c2x5LWVsaWRhYmxlLW5ldy1vYmplY3QgICAgICAgICAgICAgICAgICAgICAyMi40MDI0Ky0wLjE2
MzYgICAgID8gICAgIDIyLjYxMzkrLTAuNDgzMSAgICAgICAgPwogICBwbHVzLWJvb2xlYW4tYXJp
dGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjUxNTcrLTAuMDY0MiAgICAgPyAg
ICAgIDIuNTM5NystMC4wNTU0ICAgICAgICA/CiAgIHBsdXMtYm9vbGVhbi1kb3VibGUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuODc0MCstMC4wMzQzICAgICA/ICAgICAgMi45MzI3
Ky0wLjA1ODkgICAgICAgID8gbWlnaHQgYmUgMS4wMjA0eCBzbG93ZXIKICAgcGx1cy1ib29sZWFu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi41OTk5Ky0wLjAyMTEgICAg
ID8gICAgICAyLjczNjcrLTAuMTQ4MyAgICAgICAgPyBtaWdodCBiZSAxLjA1MjZ4IHNsb3dlcgog
ICBwb2x5LWNoYWluLWFjY2Vzcy1kaWZmZXJlbnQtcHJvdG90eXBlcy1zaW1wbGUgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4wMzI1Ky0w
LjEzOTMgICAgICAgICAgICAyLjk4MzkrLTAuMTEzNSAgICAgICAgICBtaWdodCBiZSAxLjAxNjN4
IGZhc3RlcgogICBwb2x5LWNoYWluLWFjY2Vzcy1kaWZmZXJlbnQtcHJvdG90eXBlcyAgICAgICAg
ICAgICAzLjAzOTYrLTAuMDkwMCAgICAgICAgICAgIDMuMDAyOSstMC4wMzI3ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDEyMnggZmFzdGVyCiAgIHBvbHktY2hhaW4tYWNjZXNzLXNpbXBsZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuODk5MCstMC4wMjI0ICAgICA/ICAgICAgMi45NDc0Ky0wLjA2
NzMgICAgICAgID8gbWlnaHQgYmUgMS4wMTY3eCBzbG93ZXIKICAgcG9seS1jaGFpbi1hY2Nlc3Mg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi45NjAwKy0wLjA3MTkgICAgID8gICAg
ICAyLjk5OTArLTAuMTQwMiAgICAgICAgPyBtaWdodCBiZSAxLjAxMzJ4IHNsb3dlcgogICBwb2x5
LXN0cmljdGVxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY3LjI0NDYrLTAu
MDY3NiAgICAgXiAgICAgNjUuODExMistMC4xMTEwICAgICAgICBeIGRlZmluaXRlbHkgMS4wMjE4
eCBmYXN0ZXIKICAgcG9seW1vcnBoaWMtYXJyYXktY2FsbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMS40NjU1Ky0wLjA1NjkgICAgID8gICAgICAxLjYwNTArLTAuMjIyNCAgICAgICAgPyBt
aWdodCBiZSAxLjA5NTN4IHNsb3dlcgogICBwb2x5bW9ycGhpYy1nZXQtYnktaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjM1OTQrLTAuMDIxOCAgICAgPyAgICAgIDIuNDIzMistMC4w
NjI3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3MHggc2xvd2VyCiAgIHBvbHltb3JwaGljLXB1dC1i
eS1pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIuMjg1MCstMC4zMTU4ICAgICA/ICAg
ICAzMi40NDY5Ky0wLjU4NTYgICAgICAgID8KICAgcG9seW1vcnBoaWMtcHV0LWJ5LXZhbC13aXRo
LXN0cmluZyAgICAgICAgICAgICAgICAzMi4yMzU3Ky0wLjE3NjUgICAgICAgICAgIDMyLjIwMDMr
LTAuMTAwNiAgICAgICAgCiAgIHBvbHltb3JwaGljLXB1dC1ieS12YWwtd2l0aC1zeW1ib2wgICAg
ICAgICAgICAgICAgMzIuNjI4NCstMC4yODAzICAgICAgICAgICAzMi4zNzU0Ky0wLjA5MzMgICAg
ICAgIAogICBwb2x5bW9ycGhpYy1zdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDE1LjY5ODcrLTAuMTM3MyAgICAgPyAgICAgMTUuODc2NystMC4yNTUwICAgICAgICA/IG1pZ2h0
IGJlIDEuMDExM3ggc2xvd2VyCiAgIHBvbHl2YXJpYW50LW1vbm9tb3JwaGljLWdldC1ieS1pZCAg
ICAgICAgICAgICAgICAgIDQuNTM2NistMC4yNDU5ICAgICAgICAgICAgNC4zOTAyKy0wLjA4OTEg
ICAgICAgICAgbWlnaHQgYmUgMS4wMzM0eCBmYXN0ZXIKICAgcHJvdG8tZ2V0dGVyLWFjY2VzcyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy43MjI4Ky0wLjExMjQgICAgICAgICAgIDEz
LjcwNTArLTAuMTU2MSAgICAgICAgCiAgIHByb3RvdHlwZS1hY2Nlc3Mtd2l0aC1tdXRhdGluZy1w
cm90b3R5cGUgICAgICAgICAgIDUuNjE0NSstMC4xNzk5ICAgICAgICAgICAgNS40MjY3Ky0wLjE3
MDcgICAgICAgICAgbWlnaHQgYmUgMS4wMzQ2eCBmYXN0ZXIKICAgcHV0LWJ5LWlkLXJlcGxhY2Ut
YW5kLXRyYW5zaXRpb24gICAgICAgICAgICAgICAgICAgOC45NjgwKy0wLjMxMDMgICAgID8gICAg
ICA5LjE4NTkrLTAuMjk0NiAgICAgICAgPyBtaWdodCBiZSAxLjAyNDN4IHNsb3dlcgogICBwdXQt
YnktaWQtc2xpZ2h0bHktcG9seW1vcnBoaWMgICAgICAgICAgICAgICAgICAgICAzLjAwNTcrLTAu
MDgxMiAgICAgICAgICAgIDIuOTcwMCstMC4wNDEzICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyMHgg
ZmFzdGVyCiAgIHB1dC1ieS1pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTEuMjU5OSstMC4xMjQyICAgICA/ICAgICAxMS40MzgxKy0wLjIzMzcgICAgICAgID8gbWln
aHQgYmUgMS4wMTU4eCBzbG93ZXIKICAgcHV0LWJ5LXZhbC1kaXJlY3QgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC41MzU1Ky0wLjAzNDYgICAgICAgICAgICAwLjUyODQrLTAuMDE3
OSAgICAgICAgICBtaWdodCBiZSAxLjAxMzV4IGZhc3RlcgogICBwdXQtYnktdmFsLWxhcmdlLWlu
ZGV4LWJsYW5rLWluZGV4aW5nLXR5cGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNi4yODE3Ky0wLjEzODIgICAgICAgICAgICA2LjI0NDgr
LTAuMTg0OSAgICAgICAgCiAgIHB1dC1ieS12YWwtbWFjaGluZS1pbnQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuOTc4MystMC4wNzYyICAgICA/ICAgICAgMy4wMjk1Ky0wLjAyNjcgICAg
ICAgID8gbWlnaHQgYmUgMS4wMTcyeCBzbG93ZXIKICAgcHV0LWJ5LXZhbC13aXRoLXN0cmluZy1y
ZXBsYWNlLWFuZC10cmFuc2l0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTIuNzc5NCstMC42MzExICAgICAgICAgICAxMi40Njk4Ky0w
LjIxMjIgICAgICAgICAgbWlnaHQgYmUgMS4wMjQ4eCBmYXN0ZXIKICAgcHV0LWJ5LXZhbC13aXRo
LXN0cmluZy1zbGlnaHRseS1wb2x5bW9ycGhpYyAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjEzMDIrLTAuMDc3MyAgICAgICAgICAgIDQu
MTA5NistMC4xMDU5ICAgICAgICAKICAgcHV0LWJ5LXZhbC13aXRoLXN0cmluZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxMS43ODUyKy0wLjIxNDQgICAgICAgICAgIDExLjczODMrLTAuMTEy
OCAgICAgICAgCiAgIHB1dC1ieS12YWwtd2l0aC1zeW1ib2wtcmVwbGFjZS1hbmQtdHJhbnNpdGlv
biAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDExLjk5NTQrLTAuMjc2MyAgICAgICAgICAgMTEuODA3MystMC4xNTYxICAgICAgICAgIG1pZ2h0
IGJlIDEuMDE1OXggZmFzdGVyCiAgIHB1dC1ieS12YWwtd2l0aC1zeW1ib2wtc2xpZ2h0bHktcG9s
eW1vcnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMy41MjQ2Ky0wLjQzMDMgICAgICAgICAgICAzLjM2MTQrLTAuMDI4NyAgICAgICAg
ICBtaWdodCBiZSAxLjA0ODZ4IGZhc3RlcgogICBwdXQtYnktdmFsLXdpdGgtc3ltYm9sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDExLjkyMTErLTAuMTc0MSAgICAgICAgICAgMTEuODQ2NCst
MC4yNDk5ICAgICAgICAKICAgcmFyZS1vc3ItZXhpdC1vbi1sb2NhbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxNS45MTY5Ky0wLjExMjggICAgID8gICAgIDE2LjEyMDErLTAuMjk5MCAgICAg
ICAgPyBtaWdodCBiZSAxLjAxMjh4IHNsb3dlcgogICByYXl0cmFjZS13aXRoLWVtcHR5LXRyeS1j
YXRjaCAgICAgICAgICAgICAgICAgICAgICA3LjQwMjErLTAuMTY2MSAgICAgICAgICAgIDcuMzY2
NystMC4xOTE1ICAgICAgICAKICAgcmF5dHJhY2Utd2l0aC10cnktY2F0Y2ggICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMi4wMzA4Ky0wLjMzNjAgICAgICAgICAgIDExLjc2ODUrLTAuMTE3MCAg
ICAgICAgICBtaWdodCBiZSAxLjAyMjN4IGZhc3RlcgogICByZWdleHAtbGFzdC1pbmRleCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjQ5MDMrLTAuNTYxNCAgICAgICAgICAgMTEu
MjYxNistMC4wNTQ3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIwM3ggZmFzdGVyCiAgIHJlZ2V4cC1z
ZXQtbGFzdC1pbmRleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuOTI3MystMC4xNjIx
ICAgICA/ICAgICAxMS45MzIxKy0wLjEzMzUgICAgICAgID8KICAgcmVnaXN0ZXItcHJlc3N1cmUt
ZnJvbS1vc3IgICAgICAgICAgICAgICAgICAgICAgICAxOS43MDQwKy0wLjE0MjMgICAgID8gICAg
IDE5LjcxODQrLTAuMDk0NSAgICAgICAgPwogICByZXBlYXQtbXVsdGktZ2V0LWJ5LW9mZnNldCAg
ICAgICAgICAgICAgICAgICAgICAgIDIzLjQzNjIrLTAuMTMyMCAgICAgICAgICAgMjMuNDE4OCst
MC4xNzY4ICAgICAgICAKICAgcmljaGFyZHMtZW1wdHktdHJ5LWNhdGNoICAgICAgICAgICAgICAg
ICAgICAgICAgICA1Ny40NjQyKy0wLjQwNjIgICAgID8gICAgIDU3LjU0NjErLTAuMzQxOCAgICAg
ICAgPwogICByaWNoYXJkcy10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjcxLjM1NTUrLTEuMDYxOSAgICAgICAgICAyNzAuNjI0MCstMS4zNDkxICAgICAgICAKICAgc2V0
LWZvci1lYWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS41MTExKy0w
LjAzMjcgICAgIF4gICAgICA1LjQ0NjgrLTAuMDMwMCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDEx
OHggZmFzdGVyCiAgIHNldC1mb3Itb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDkuNzAzNSstMC4yMDkzICAgICAgICAgICAgOS40NDEyKy0wLjE1NzggICAgICAgICAg
bWlnaHQgYmUgMS4wMjc4eCBmYXN0ZXIKICAgc2V0dGVyLXByb3RvdHlwZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNi4xMzEzKy0wLjU3NTkgICAgICAgICAgICA2LjA2NjArLTAu
ODE0OSAgICAgICAgICBtaWdodCBiZSAxLjAxMDh4IGZhc3RlcgogICBzZXR0ZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjc0MDUrLTAuMDQwOSAgICAgPyAg
ICAgIDQuMTU0OCstMS4wMTI4ICAgICAgICA/IG1pZ2h0IGJlIDEuMTEwOHggc2xvd2VyCiAgIHNp
bXBsZS1hY3RpdmF0aW9uLWRlbW8gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjcuOTcxMCst
MC4xNjQ5ICAgICAgICAgICAyNy45Mjk3Ky0wLjEyMjcgICAgICAgIAogICBzaW1wbGUtZ2V0dGVy
LWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjI2OTkrLTAuMTU0NCAgICAg
ICAgICAgMjEuMjYwOCstMC4xNzM3ICAgICAgICAKICAgc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4yMjEwKy0wLjE3NDIgICAgID8gICAgICA1LjIz
MDUrLTAuMjA5MiAgICAgICAgPwogICBzaW1wbGUtcG9seS1jYWxsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxLjQ5NjYrLTAuMDM4MCAgICAgICAgICAgIDEuNDc2MCstMC4wMjUy
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzOXggZmFzdGVyCiAgIHNpbi1ib29sZWFuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMDYwOCstMC41Mzc3ICAgICAgICAgICAg
OS45OTA2Ky0wLjUwNjQgICAgICAgIAogICBzaW5nbGV0b24tc2NvcGUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDczLjY0ODArLTAuMDU2MyAgICAgICAgICAgNzMuNjIwNSstMC4w
NDY0ICAgICAgICAKICAgc2luay1mdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNy42NzE0Ky0wLjk1MTYgICAgID8gICAgICA3Ljg5NzkrLTAuNzUxNyAgICAgICAg
PyBtaWdodCBiZSAxLjAyOTV4IHNsb3dlcgogICBzaW5rLWh1Z2UtYWN0aXZhdGlvbiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDE0LjkzNjgrLTAuMTkyOCAgICAgPyAgICAgMTQuOTQ0MCst
MC4xNjM0ICAgICAgICA/CiAgIHNpbmthYmxlLW5ldy1vYmplY3QtZGFnICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNTMuMDM5NSstMS4xMzAxICAgICAgICAgICA1Mi4yOTA5Ky0xLjE5MzQgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTQzeCBmYXN0ZXIKICAgc2lua2FibGUtbmV3LW9iamVjdC10YWtl
biAgICAgICAgICAgICAgICAgICAgICAgICA0Ni42NzY2Ky04LjEwNzcgICAgICAgICAgIDQzLjI1
ODMrLTAuMzE2OSAgICAgICAgICBtaWdodCBiZSAxLjA3OTB4IGZhc3RlcgogICBzaW5rYWJsZS1u
ZXctb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LjMzMzArLTEuNDU3MSAg
ICAgICAgICAgMjQuMzk1MistMC4yNDMwICAgICAgICAgIG1pZ2h0IGJlIDEuMDM4NHggZmFzdGVy
CiAgIHNsb3ctYXJyYXktcHJvZmlsZS1jb252ZXJnZW5jZSAgICAgICAgICAgICAgICAgICAgIDMu
MjQ0MSstMC4wNjcxICAgICAgICAgICAgMy4yMjE1Ky0wLjEzNTEgICAgICAgIAogICBzbG93LWNv
bnZlcmdlbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjIwNTcrLTAuMDY3
OSAgICAgICAgICAgIDMuMTU1NistMC4wMjYwICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1OXggZmFz
dGVyCiAgIHNsb3ctdGVybmFyaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTUuNDg1NistMC4xNDgwICAgICA/ICAgICAxNS40ODc0Ky0wLjEwMjAgICAgICAgID8KICAgc29y
dGluZy1iZW5jaG1hcmsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi42MDEzKy0w
LjM0ODAgICAgID8gICAgIDIzLjExMzMrLTAuNTQ2OCAgICAgICAgPyBtaWdodCBiZSAxLjAyMjd4
IHNsb3dlcgogICBzcGFyc2UtY29uZGl0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxLjQ3MjIrLTAuMDQxMiAgICAgICAgICAgIDEuNDYzNSstMC4wMjk5ICAgICAgICAKICAg
c3BsaWNlLXRvLXJlbW92ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi42Mjk1
Ky0wLjMyMzggICAgICAgICAgIDE2LjQ4ODYrLTAuMTczNSAgICAgICAgCiAgIHN0cmluZy1jaGFy
LWNvZGUtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcuODcxOCstMC4xMTkwICAg
ICAgICAgICAxNy44NDI2Ky0wLjEzNjMgICAgICAgIAogICBzdHJpbmctY29uY2F0LW9iamVjdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjQ4MzcrLTAuMDcyMSAgICAgPyAgICAgIDIu
NjIxNystMC4zODg1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU1Nnggc2xvd2VyCiAgIHN0cmluZy1j
b25jYXQtcGFpci1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMzU3NistMC4wNzky
ICAgICA/ICAgICAgMi40MTM2Ky0wLjA2NjggICAgICAgID8gbWlnaHQgYmUgMS4wMjM4eCBzbG93
ZXIKICAgc3RyaW5nLWNvbmNhdC1wYWlyLXNpbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAx
MC45ODkyKy0wLjQ3NTMgICAgICAgICAgIDEwLjg2OTArLTAuMjM4MiAgICAgICAgICBtaWdodCBi
ZSAxLjAxMTF4IGZhc3RlcgogICBzdHJpbmctY29uY2F0LXNpbXBsZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDExLjA0MjUrLTAuMjAxMyAgICAgPyAgICAgMTEuMTUwMystMC4yNDA5ICAg
ICAgICA/CiAgIHN0cmluZy1jb25zLXJlcGVhdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDcuOTgzMCstMC4xMjcyICAgICA/ICAgICAgOC40NzIzKy0xLjM5ODkgICAgICAgID8gbWln
aHQgYmUgMS4wNjEzeCBzbG93ZXIKICAgc3RyaW5nLWNvbnMtdG93ZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOC4yNDYzKy0wLjA4MzcgICAgICAgICAgICA4LjIyOTkrLTAuMDc4
NSAgICAgICAgCiAgIHN0cmluZy1lcXVhbGl0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjIuNTY3NCstMC4xMjU4ICAgICA/ICAgICAyMi42NjgwKy0wLjIxMTMgICAgICAgID8K
ICAgc3RyaW5nLWZyb20tY2hhci1jb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy43
MjcxKy0wLjA1NDEgICAgICAgICAgICA3LjY5ODgrLTAuMDEwNSAgICAgICAgCiAgIHN0cmluZy1n
ZXQtYnktdmFsLWJpZy1jaGFyICAgICAgICAgICAgICAgICAgICAgICAgIDUuNjY3MistMC4yMDg5
ICAgICAgICAgICAgNS42MDY0Ky0wLjE1OTcgICAgICAgICAgbWlnaHQgYmUgMS4wMTA4eCBmYXN0
ZXIKICAgc3RyaW5nLWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcy1pbnNhbmUgICAgICAgICAgICAg
NC4zOTQ2Ky0wLjE2OTQgICAgICAgICAgICA0LjI4ODQrLTAuMDYzOCAgICAgICAgICBtaWdodCBi
ZSAxLjAyNDh4IGZhc3RlcgogICBzdHJpbmctZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzICAgICAg
ICAgICAgICAgICAgICA1LjM5ODkrLTAuNTAyNSAgICAgPyAgICAgIDUuNDAzMSstMC40MjcyICAg
ICAgICA/CiAgIHN0cmluZy1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIuNDg1MystMC4xMzM1ICAgICAgICAgICAgMi4zMzQ4Ky0wLjAyOTAgICAgICAgICAgbWln
aHQgYmUgMS4wNjQ0eCBmYXN0ZXIKICAgc3RyaW5nLWhhc2ggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi4zNjk0Ky0wLjA0MDYgICAgICAgICAgICAyLjM0MTQrLTAuMDQx
MSAgICAgICAgICBtaWdodCBiZSAxLjAxMjB4IGZhc3RlcgogICBzdHJpbmctbG9uZy1pZGVudC1l
cXVhbGl0eSAgICAgICAgICAgICAgICAgICAgICAgIDE4LjUwMjYrLTAuMTk4MSAgICAgICAgICAg
MTguNDM1MSstMC4xMjc5ICAgICAgICAKICAgc3RyaW5nLW91dC1vZi1ib3VuZHMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOC4yNTYxKy0wLjA4OTMgICAgICAgICAgICA4LjIyMzArLTAu
MDcwOSAgICAgICAgCiAgIHN0cmluZy1yZXBlYXQtYXJpdGggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjcuODE1MistMC4xMTk4ICAgICBeICAgICAyNi40MTQwKy0wLjA2MDkgICAgICAg
IF4gZGVmaW5pdGVseSAxLjA1MzB4IGZhc3RlcgogICBzdHJpbmctcmVwbGFjZS1lbXB0eSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMyLjU0OTcrLTAuNzMwNiAgICAgICAgICAgMzIuMjMz
OCstMC40MTI5ICAgICAgICAKICAgc3RyaW5nLXJlcGxhY2UtZ2VuZXJpYyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA2NS4xMjU2Ky0wLjExMjggICAgICAgICAgIDY0Ljc0MDYrLTAuNDY2NyAg
ICAgICAgCiAgIHN0cmluZy1yZXBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNTEuMjY5MCstMC4zNjc4ICAgICBeICAgICA1MC41MDU4Ky0wLjM2NjcgICAgICAgIF4gZGVm
aW5pdGVseSAxLjAxNTF4IGZhc3RlcgogICBzdHJpbmctcm9wZS13aXRoLW9iamVjdCAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIwLjc2MDcrLTAuMTQ4MiAgICAgPyAgICAgMjAuNzg5OCstMC4x
OTA0ICAgICAgICA/CiAgIHN0cmluZy1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNDMuMjM1NSstMC4xMjk2ICAgICBeICAgICA0Mi4wNjgzKy0wLjEzNDQgICAgICAg
IF4gZGVmaW5pdGVseSAxLjAyNzd4IGZhc3RlcgogICBzdHJpbmctdGVzdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0LjE3MzYrLTAuMzI3MCAgICAgICAgICAgIDMuOTQ3
NystMC4wMjEzICAgICAgICAgIG1pZ2h0IGJlIDEuMDU3MnggZmFzdGVyCiAgIHN0cmluZy10cmFu
c2NvZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAuNTYxNistMC4yNTg5ICAg
ICA/ICAgICAyMC45NjM2Ky0wLjU0NDIgICAgICAgID8gbWlnaHQgYmUgMS4wMTk2eCBzbG93ZXIK
ICAgc3RyaW5nLXZhci1lcXVhbGl0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNS43
MTYyKy0wLjQwNjEgICAgICAgICAgIDM1LjcxNDArLTAuMzgyOSAgICAgICAgCiAgIHN0cnVjdHVy
ZS1ob2lzdC1vdmVyLXRyYW5zaXRpb25zICAgICAgICAgICAgICAgICAgIDIuODMxMystMC4wNTM4
ICAgICA/ICAgICAgMi45NDU1Ky0wLjEzMjUgICAgICAgID8gbWlnaHQgYmUgMS4wNDAzeCBzbG93
ZXIKICAgc3Vic3RyaW5nLWNvbmNhdC13ZWlyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
Ni4xNjY3Ky0wLjkxNTggICAgICAgICAgIDQ1LjUwMDQrLTAuODEzNyAgICAgICAgICBtaWdodCBi
ZSAxLjAxNDZ4IGZhc3RlcgogICBzdWJzdHJpbmctY29uY2F0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUwLjE2NTYrLTAuODU2NCAgICAgICAgICAgNDkuNzc4OSstMC44MjQ4ICAg
ICAgICAKICAgc3Vic3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1Ni43ODk1Ky0wLjE4OTggICAgID8gICAgIDYwLjA4NDgrLTguMjAxNSAgICAgICAgPyBtaWdo
dCBiZSAxLjA1ODB4IHNsb3dlcgogICBzd2l0Y2gtY2hhci1jb25zdGFudCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjYwNzgrLTAuMDg1NSAgICAgPyAgICAgIDIuNjIwNSstMC4xMzM1
ICAgICAgICA/CiAgIHN3aXRjaC1jaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDUuNzk0MSstMC4xNDk1ICAgICA/ICAgICAgNS44MjMxKy0wLjA4MTcgICAgICAgID8K
ICAgc3dpdGNoLWNvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4x
NTk5Ky0wLjI0MzYgICAgID8gICAgICA0LjE5NjYrLTAuMjU0MSAgICAgICAgPwogICBzd2l0Y2gt
c3RyaW5nLWJhc2ljLWJpZy12YXIgICAgICAgICAgICAgICAgICAgICAgIDE4LjAwMjArLTAuMjM3
MCAgICAgPyAgICAgMTguMTAzOCstMC4yNDg0ICAgICAgICA/CiAgIHN3aXRjaC1zdHJpbmctYmFz
aWMtYmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuNjYxMCstMC42MzMwICAgICAgICAg
ICAxNS40MDM0Ky0wLjEyOTcgICAgICAgICAgbWlnaHQgYmUgMS4wMTY3eCBmYXN0ZXIKICAgc3dp
dGNoLXN0cmluZy1iYXNpYy12YXIgICAgICAgICAgICAgICAgICAgICAgICAgICAxNy43NjI4Ky0w
LjIxODYgICAgID8gICAgIDE3Ljc3MjErLTAuMTYwNSAgICAgICAgPwogICBzd2l0Y2gtc3RyaW5n
LWJhc2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjI0MDQrLTAuMTY3OSAgICAg
PyAgICAgMTUuMDUyMSstMS45MTY4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU3MHggc2xvd2VyCiAg
IHN3aXRjaC1zdHJpbmctYmlnLWxlbmd0aC10b3dlci12YXIgICAgICAgICAgICAgICAgMjUuMDI4
NystMC4zNDcyICAgICAgICAgICAyNC42NjcyKy0wLjE2MDEgICAgICAgICAgbWlnaHQgYmUgMS4w
MTQ3eCBmYXN0ZXIKICAgc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXItdmFyICAgICAgICAgICAg
ICAgICAgICAxOC41NTM5Ky0wLjIyNDAgICAgICAgICAgIDE4LjM4MTYrLTAuMTAxMSAgICAgICAg
CiAgIHN3aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2VyICAgICAgICAgICAgICAgICAgICAgICAgMTMu
NjQyNistMC4wNDA4ICAgICA/ICAgICAxMy44MDk3Ky0wLjI0MDYgICAgICAgID8gbWlnaHQgYmUg
MS4wMTIyeCBzbG93ZXIKICAgc3dpdGNoLXN0cmluZy1zaG9ydCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMy40OTg3Ky0wLjA2NDggICAgICAgICAgIDEzLjQ5NDArLTAuMDU1NyAgICAg
ICAgCiAgIHN3aXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDguODU4MCstMC4zODY0ICAgICAgICAgICAgOC42ODczKy0wLjUyMTYgICAgICAgICAgbWlnaHQg
YmUgMS4wMTk3eCBmYXN0ZXIKICAgc3ltYm9sLXRvc3RyaW5ndGFnICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMy44OTAyKy0wLjE5OTQgICAgICAgICAgICAzLjc5MTcrLTAuMTY3NSAg
ICAgICAgICBtaWdodCBiZSAxLjAyNjB4IGZhc3RlcgogICB0ZWFyLW9mZi1hcmd1bWVudHMtc2lt
cGxlICAgICAgICAgICAgICAgICAgICAgICAgICAzLjAxNjArLTAuMDk3NCAgICAgPyAgICAgIDMu
MDc5NystMC4wMjczICAgICAgICA/IG1pZ2h0IGJlIDEuMDIxMXggc2xvd2VyCiAgIHRlYXItb2Zm
LWFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMDE2OCstMC4xMDYx
ICAgICA/ICAgICAgNC4wNzE4Ky0wLjA5OTcgICAgICAgID8gbWlnaHQgYmUgMS4wMTM3eCBzbG93
ZXIKICAgdGVtcG9yYWwtc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
NS40MjQwKy0xLjkwMzEgICAgICAgICAgIDE0LjU0ODkrLTAuMDQyOCAgICAgICAgICBtaWdodCBi
ZSAxLjA2MDF4IGZhc3RlcgogICB0by1pbnQzMi1ib29sZWFuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE3LjI3MDkrLTAuMTk0MiAgICAgICAgICAgMTcuMjM1OCstMC4xNTI2ICAg
ICAgICAKICAgdHJ5LWNhdGNoLWdldC1ieS12YWwtY2xvbmVkLWFyZ3VtZW50cyAgICAgICAgICAg
ICAgOC4zMjUyKy0wLjE4MDIgICAgICAgICAgICA4LjI5MzUrLTAuMTA0NSAgICAgICAgCiAgIHRy
eS1jYXRjaC1nZXQtYnktdmFsLWRpcmVjdC1hcmd1bWVudHMgICAgICAgICAgICAgIDIuNTQyNyst
MC4xMTE4ICAgICA/ICAgICAgMi41OTQ2Ky0wLjAyNTQgICAgICAgID8gbWlnaHQgYmUgMS4wMjA0
eCBzbG93ZXIKICAgdHJ5LWNhdGNoLWdldC1ieS12YWwtc2NvcGVkLWFyZ3VtZW50cyAgICAgICAg
ICAgICAgNS4xMDQ3Ky0wLjA5NzcgICAgICAgICAgICA1LjAzMzErLTAuMTI5NCAgICAgICAgICBt
aWdodCBiZSAxLjAxNDJ4IGZhc3RlcgogICB0eXBlZC1hcnJheS1nZXQtc2V0LWJ5LXZhbC1wcm9m
aWxpbmcgICAgICAgICAgICAgIDI1LjA4MTYrLTAuMjQwMyAgICAgPyAgICAgMjUuMzE4NCstMC41
MDEzICAgICAgICA/CiAgIHVuZGVmaW5lZC1wcm9wZXJ0eS1hY2Nlc3MgICAgICAgICAgICAgICAg
ICAgICAgICAzNTUuMjcxMSstMS44ODE2ICAgICAgICAgIDM1NC4zMDc0Ky0wLjkxMzkgICAgICAg
IAogICB1bmRlZmluZWQtdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
LjE3NzYrLTAuMDI1NSAgICAgPyAgICAgIDQuMjIzNistMC4wMzAxICAgICAgICA/IG1pZ2h0IGJl
IDEuMDExMHggc2xvd2VyCiAgIHVucHJvZmlsZWQtbGljbSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDcuNTI5NistMC4wNzAyICAgICA/ICAgICAgNy41MzA1Ky0wLjA5MTQgICAg
ICAgID8KICAgdW50eXBlZC1zdHJpbmctZnJvbS1jaGFyLWNvZGUgICAgICAgICAgICAgICAgICAg
ICAxMi4zNTA1Ky0wLjE2OTAgICAgID8gICAgIDEyLjQzMDgrLTAuMjAwNCAgICAgICAgPwogICB2
OC1yYXl0cmFjZS13aXRoLWVtcHR5LXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgIDYzLjAyMjUr
LTAuODUxNiAgICAgPyAgICAgNjMuMjg4MCstMC44MTI1ICAgICAgICA/CiAgIHY4LXJheXRyYWNl
LXdpdGgtdHJ5LWNhdGNoLWhpZ2gtZnJlcXVlbmN5LXRocm93cyAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDg2LjQ2ODArLTUuMTM2MCAgICAg
ICAgICA0ODQuMzI2OCstNi45NTIwICAgICAgICAKICAgdjgtcmF5dHJhY2Utd2l0aC10cnktY2F0
Y2ggICAgICAgICAgICAgICAgICAgICAgICA3OS4xMDkxKy0wLjU2NDkgICAgICAgICAgIDc4LjYy
MjUrLTAuNTk2MiAgICAgICAgCiAgIHY4LXJlZ2V4cC1zZWFyY2ggICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNjQuNTkxNCstMS4wMTU1ICAgICAgICAgICA2NC40NTA5Ky0xLjAzMDcg
ICAgICAgIAogICB2YXJhcmdzLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDE1LjM1MTYrLTAuMTQ0OCAgICAgICAgICAgMTUuMzIxNystMC4xMTEwICAgICAgICAKICAg
dmFyYXJncy1jb25zdHJ1Y3QtaW5saW5lICAgICAgICAgICAgICAgICAgICAgICAgICAyMy4xMDk0
Ky0wLjIwNzkgICAgICAgICAgIDIzLjAzMzcrLTAuMTU0OCAgICAgICAgCiAgIHZhcmFyZ3MtY29u
c3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAuNzU3MSstMC4zMjUxICAg
ICAgICAgICAzMC42ODMyKy0wLjE2MTEgICAgICAgIAogICB2YXJhcmdzLWlubGluZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjI2NjMrLTAuMDkwNSAgICAgPyAgICAgMTAu
MzM5MystMC4wNzAwICAgICAgICA/CiAgIHZhcmFyZ3Mtc3RyaWN0LW1vZGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTEuNjU3MystMC4wNzg4ICAgICAgICAgICAxMS41NzM5Ky0wLjA1
OTMgICAgICAgIAogICB2YXJhcmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDExLjQ3ODYrLTAuMDQxOSAgICAgPyAgICAgMTEuNTgyNSstMC4xMjM3ICAgICAgICA/
CiAgIHdlaXJkLWlubGluaW5nLWNvbnN0LXByb3AgICAgICAgICAgICAgICAgICAgICAgICAgIDIu
NTYwOCstMC4wOTAwICAgICAgICAgICAgMi40ODk3Ky0wLjA2MTIgICAgICAgICAgbWlnaHQgYmUg
MS4wMjg2eCBmYXN0ZXIKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDkuOTc0NystMC4wMTUyICAgICA/ICAgICAgOS45OTIyKy0wLjAwOTcgICAg
ICAgID8gbWlnaHQgYmUgMS4wMDE4eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9nICAgICAgICAgICAgICAgICAgICAg
IGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkFzbUJlbmNoOgog
ICBiaWdmaWIuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTQ4LjAy
NzArLTkuMTMwMiAgICAgPyAgICA1NTMuNzAzMSstMjUuODg1NiAgICAgICA/IG1pZ2h0IGJlIDEu
MDEwNHggc2xvd2VyCiAgIGNyYXkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0NjIuNDIyMistMS4yODE0ICAgICA/ICAgIDQ3Mi4wMjA5Ky0yNi4zNjEyICAgICAg
ID8gbWlnaHQgYmUgMS4wMjA4eCBzbG93ZXIKICAgZHJ5LmMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDU1MC4zOTkzKy0zMC41OTQwICAgICAgICAgNTMwLjU2ODkr
LTkuOTExOSAgICAgICAgICBtaWdodCBiZSAxLjAzNzR4IGZhc3RlcgogICBGbG9hdE1NLmMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTAyLjQ4ODUrLTcuMDA3OCAgICAg
PyAgICA5MDYuNjQyOSstOC4zNDczICAgICAgICA/CiAgIGdjYy1sb29wcy5jcHAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQ2NTguNjM4NistOS44NTI0ICAgICA/ICAgNDY2MC42
NTI1Ky04LjIzMjMgICAgICAgID8KICAgbi1ib2R5LmMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTAzMC4yMDc5Ky0zLjExMjUgICAgID8gICAxMDMxLjAxNjgrLTMuNzE4
MyAgICAgICAgPwogICBRdWlja3NvcnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTAyLjI2MDArLTAuNjQwMCAgICAgICAgICA1MDEuNjY0OSstMC40ODM4ICAgICAgICAK
ICAgc3RlcGFub3ZfY29udGFpbmVyLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgNDIxOC4x
NTAxKy0yMy4wMTE2ICAgID8gICA0MjQxLjUzNjErLTI3LjAzNTQgICAgICAgPwogICBUb3dlcnMu
YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQ0LjI1MjYrLTAuNjY2
MCAgICAgICAgICAzNDQuMjAwNistMC4zMzkzICAgICAgICAKCiAgIDxnZW9tZXRyaWM+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MTIuNzY4NCstNC44ODA0ICAgICA/ICAg
IDkxMy4wNjAyKy01LjM5NTYgICAgICAgID8gbWlnaHQgYmUgMS4wMDAzeCBzbG93ZXIKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9n
ICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCkNvbXByZXNzaW9uQmVuY2g6CiAgIGh1ZmZtYW4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzcuMTAwNSstMC41MzcyICAgICAgICAgICAzNy4wNTAy
Ky0wLjQ0NDYgICAgICAgIAogICBhcml0aG1ldGljLXNpbXBsZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzMzLjk1MTgrLTAuODg3NyAgICAgXiAgICAzMzIuMDkzMystMC41NDE4ICAg
ICAgICBeIGRlZmluaXRlbHkgMS4wMDU2eCBmYXN0ZXIKICAgYXJpdGhtZXRpYy1wcmVjaXNlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxNS45NDI3Ky00LjQwMTEgICAgICAgICAgMzEy
Ljk3MTcrLTEuNDEwMCAgICAgICAgCiAgIGFyaXRobWV0aWMtY29tcGxleC1wcmVjaXNlICAgICAg
ICAgICAgICAgICAgICAgICAzMTMuNjI5NCstMC44NDAwICAgICAgICAgIDMxMy41NTU0Ky0xLjcw
NzEgICAgICAgIAogICBhcml0aG1ldGljLXByZWNpc2Utb3JkZXItMCAgICAgICAgICAgICAgICAg
ICAgICAgMzM4LjI1ODkrLTAuNjg1OCAgICAgICAgICAzMzcuNTg5MCstMC44NTg5ICAgICAgICAK
ICAgYXJpdGhtZXRpYy1wcmVjaXNlLW9yZGVyLTEgICAgICAgICAgICAgICAgICAgICAgIDM4NC45
MTQ3Ky0wLjk5NDQgICAgID8gICAgMzg1Ljk2MDUrLTEuNDk1NSAgICAgICAgPwogICBhcml0aG1l
dGljLXByZWNpc2Utb3JkZXItMiAgICAgICAgICAgICAgICAgICAgICAgNDQxLjczMzUrLTEuNzIz
OSAgICAgICAgICA0NDAuNDk0NCstMS4zMjAzICAgICAgICAKICAgYXJpdGhtZXRpYy1zaW1wbGUt
b3JkZXItMSAgICAgICAgICAgICAgICAgICAgICAgIDM5Ny4xNjEwKy0xLjg4MzUgICAgICAgICAg
Mzk1LjE5NDMrLTIuMjkwMyAgICAgICAgCiAgIGFyaXRobWV0aWMtc2ltcGxlLW9yZGVyLTIgICAg
ICAgICAgICAgICAgICAgICAgICA0NjEuMzYzMCstNy4wMjUwICAgICAgICAgIDQ1OC42Nzk2Ky0z
LjA2ODAgICAgICAgIAogICBsei1zdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNDE0Ljg4NjkrLTYuODM5MiAgICAgICAgICA0MDYuNzUwMSstMi45MzE2ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDIwMHggZmFzdGVyCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjk3LjEzNjUrLTAuNzk1MyAgICAgXiAgICAyOTUuNjg1
NystMC41NzMzICAgICAgICBeIGRlZmluaXRlbHkgMS4wMDQ5eCBmYXN0ZXIKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9nICAgICAg
ICAgICAgICAgICAgICAgIGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCkdlb21lYW4gb2YgcHJlZmVycmVkIG1lYW5zOgogICA8c2NhbGVkLXJlc3VsdD4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYwLjIyMDMrLTAuMTc4NSAgICAgPyAgICAgNjAu
MzM4MystMC4yNDk5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDAyMHggc2xvd2VyCgoKCgpyZS1yYW4g
a3Jha2VuIGJlY2F1c2Ugb2Ygbm9pc2U6ClZNcyB0ZXN0ZWQ6CiJvZyIgYXQgL1ZvbHVtZXMvRGF0
YS9XSy9iL09wZW5Tb3VyY2UvV2ViS2l0QnVpbGQvUmVsZWFzZS9qc2MgKHIxOTc1OTApCiJjaGFu
Z2UiIGF0IC9Wb2x1bWVzL0RhdGEvV0svYS9PcGVuU291cmNlL1dlYktpdEJ1aWxkL1JlbGVhc2Uv
anNjIChyMTk3NTkwKQoKQ29sbGVjdGVkIDEwIHNhbXBsZXMgcGVyIGJlbmNobWFyay9WTSwgd2l0
aCAxMCBWTSBpbnZvY2F0aW9ucyBwZXIgYmVuY2htYXJrLiBFbWl0dGVkIGEgY2FsbCB0byBnYygp
IGJldHdlZW4gc2FtcGxlCm1lYXN1cmVtZW50cy4gVXNlZCAxIGJlbmNobWFyayBpdGVyYXRpb24g
cGVyIFZNIGludm9jYXRpb24gZm9yIHdhcm0tdXAuIFVzZWQgdGhlIGpzYy1zcGVjaWZpYyBwcmVj
aXNlVGltZSgpCmZ1bmN0aW9uIHRvIGdldCBtaWNyb3NlY29uZC1sZXZlbCB0aW1pbmcuIFJlcG9y
dGluZyBiZW5jaG1hcmsgZXhlY3V0aW9uIHRpbWVzIHdpdGggOTUlIGNvbmZpZGVuY2UgaW50ZXJ2
YWxzIGluCm1pbGxpc2Vjb25kcy4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvZyAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAoKYWktYXN0YXIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTIxLjIyMystMy4xNTggICAgICA/ICAgICAxMjIuMTAxKy0yLjY1MSAgICAgICAgID8K
YXVkaW8tYmVhdC1kZXRlY3Rpb24gICAgICAgICAgICAgICAgICAgIDU0LjI1NSstMC4xODQgICAg
ICAgICAgICAgNTMuOTQ3Ky0wLjcwNSAgICAgICAgIAphdWRpby1kZnQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMjEuOTQyKy0wLjY4NyAgICAgICAgICAgIDEyMS4yOTcrLTAuNTk4ICAg
ICAgICAgCmF1ZGlvLWZmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MC42MTIrLTAu
MDQzICAgICAgPyAgICAgIDQwLjYzMistMC4xNDMgICAgICAgICA/CmF1ZGlvLW9zY2lsbGF0b3Ig
ICAgICAgICAgICAgICAgICAgICAgICA2MS40ODMrLTAuMzAxICAgICAgICAgICAgIDYxLjQxMyst
MC4xOTMgICAgICAgICAKaW1hZ2luZy1kYXJrcm9vbSAgICAgICAgICAgICAgICAgICAgICAgIDc0
LjA2NSstMC4yMjAgICAgICAgICAgICAgNzMuOTg5Ky0wLjA3MSAgICAgICAgIAppbWFnaW5nLWRl
c2F0dXJhdGUgICAgICAgICAgICAgICAgICAgICAgNTcuOTU0Ky0xLjg3NSAgICAgICAgICAgICA1
Ni44MzErLTAuMzM4ICAgICAgICAgICBtaWdodCBiZSAxLjAxOTh4IGZhc3RlcgppbWFnaW5nLWdh
dXNzaWFuLWJsdXIgICAgICAgICAgICAgICAgICAgODYuMzE5Ky0wLjIxNSAgICAgID8gICAgICA4
Ni4zMzYrLTAuMjA4ICAgICAgICAgPwpqc29uLXBhcnNlLWZpbmFuY2lhbCAgICAgICAgICAgICAg
ICAgICAgNDguMDE0Ky0wLjgyMiAgICAgID8gICAgICA0OS42NTQrLTQuNDU4ICAgICAgICAgPyBt
aWdodCBiZSAxLjAzNDJ4IHNsb3dlcgpqc29uLXN0cmluZ2lmeS10aW5kZXJib3ggICAgICAgICAg
ICAgICAgMzEuMzkyKy0wLjExNiAgICAgICEgICAgICAzMS42NTErLTAuMTI5ICAgICAgICAgISBk
ZWZpbml0ZWx5IDEuMDA4M3ggc2xvd2VyCnN0YW5mb3JkLWNyeXB0by1hZXMgICAgICAgICAgICAg
ICAgICAgICA1MC4zNzMrLTAuMTk4ICAgICAgICAgICAgIDUwLjI4NystMC4zMDYgICAgICAgICAK
c3RhbmZvcmQtY3J5cHRvLWNjbSAgICAgICAgICAgICAgICAgICAgIDQ0LjczMystMS4xMTIgICAg
ICA/ICAgICAgNDUuMDA5Ky0xLjM3MiAgICAgICAgID8Kc3RhbmZvcmQtY3J5cHRvLXBia2RmMiAg
ICAgICAgICAgICAgICAgMTI3LjM5OSstMC4zMTggICAgICA/ICAgICAxMjcuNzg1Ky0wLjQ5OCAg
ICAgICAgID8Kc3RhbmZvcmQtY3J5cHRvLXNoYTI1Ni1pdGVyYXRpdmUgICAgICAgIDQ5LjE2Myst
MC4zNDkgICAgICAgICAgICAgNDguODYxKy0wLjM5OCAgICAgICAgIAoKPGFyaXRobWV0aWM+ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDY5LjIwOSstMC4zNTQgICAgICA/ICAgICAgNjkuMjcx
Ky0wLjQ3NSAgICAgICAgID8gbWlnaHQgYmUgMS4wMDA5eCBzbG93ZXIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273147</attachid>
            <date>2016-03-06 14:35:54 -0800</date>
            <delta_ts>2016-03-06 16:07:33 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>59442</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NjQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMyBA
QAorMjAxNi0wMy0wNiAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbW0dldFByb3RvdHlwZU9mXV0gc2hvdWxkIGJlIGEgZnVsbHkgdmlydHVhbCBtZXRob2QgaW4g
dGhlIG1ldGhvZCB0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU1MDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBtYWtlcyB1cyBtb3JlIGNvbnNpc3RlbnQgd2l0aCBob3cgdGhlIEVT
NiBzcGVjaWZpY2F0aW9uIG1vZGVscyB0aGUKKyAgICAgICAgW1tHZXRQcm90b3R5cGVPZl1dIHRy
YXAuIE1vdmluZyB0aGlzIG1ldGhvZCBpbnRvIENsYXNzSW5mbzo6bWV0aG9kVGFibGUgCisgICAg
ICAgIGlzIGEgcHJlcmVxdWlzaXRlIGZvciBpbXBsZW1lbnRpbmcgUHJveHkuW1tHZXRQcm90b3R5
cGVPZl1dLiBUaGlzIHBhdGNoCisgICAgICAgIHN0aWxsIGFsbG93cyBkaXJlY3RseSBhY2Nlc3Np
bmcgdGhlIHByb3RvdHlwZSBmb3Igc2l0dWF0aW9ucyB3aGVyZSB0aGlzCisgICAgICAgIGlzIHRo
ZSBkZXNpcmVkIGJlaGF2aW9yLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gZ2V0dGluZyB0aGUgaW50
ZXJuYWwKKyAgICAgICAgW1tQcm90b3R5cGVdXSBmaWVsZCBhcyBkZXNjcmliZWQgaW4gdGhlIHNw
ZWNpZmljYXRpb24uIAorCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAg
KEpTT2JqZWN0R2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvdG90eXBlKToK
KyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxh
Z3MpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKToKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0
YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKToKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNl
b2YpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChmdW5jdGlvbkNyZWF0
ZVByb3h5KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChK
U0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzcGVjaWVz
Q29uc3RydWN0QXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
UHJvdG9GdW5jQmluZCk6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKToK
KyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAgICogcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpoYXNJbnN0YW5jZUJvdW5k
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpnZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzZXRQcm90b3R5cGUpOgorICAgICAg
ICAoSlNDOjpKU0NlbGw6OmdldFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aGFz
TGVnYWN5UHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpsYXN0SW5Qcm90b3R5cGVDaGFpbik6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvYmplY3RQcm90b3R5cGVJc1NhbmUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5cGVDaGFpbklzU2FuZSk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzdHJpbmdQcm90b3R5cGVDaGFpbklzU2FuZSk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpHbG9iYWxGdW5jUHJvdG9HZXR0ZXJG
dW5jdG9yOjpHbG9iYWxGdW5jUHJvdG9HZXR0ZXJGdW5jdG9yKToKKyAgICAgICAgKEpTQzo6R2xv
YmFsRnVuY1Byb3RvR2V0dGVyRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6Omds
b2JhbEZ1bmNQcm90b0dldHRlcik6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9u
bWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXRJbmxpbmVTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZVdp
dGhDeWNsZUNoZWNrKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJpdmF0ZUZ1
bmNJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9u
SG9sZUZvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjphdHRlbXB0VG9JbnRl
cmNlcHRQdXRCeUluZGV4T25Ib2xlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEdlbmVy
aWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpKU09iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm90b3R5cGVEaXJlY3Qp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldFByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25J
bmRleFByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpwcm90b3R5cGUpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3h5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6c2V0VGFyZ2V0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdFR5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5
cGVPZkZ1bmN0b3I6Ok9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2ZGdW5jdG9yKToKKyAg
ICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZkZ1bmN0b3I6Om9wZXJh
dG9yKCkpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKToK
KyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om9i
amVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlHZXQpOgorICAgICAgICAoSlNDOjpQ
cm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aXNWYWxpZCk6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL3Byb3h5LWhhcy1wcm9wZXJ0eS5qczoKKyAgICAgICAgKGFzc2Vy
dC5sZXQuaDEuaGFzKToKKyAgICAgICAgKGFzc2VydC5sZXQuaDIuaGFzKToKKyAgICAgICAgKGFz
c2VydCk6CisKIDIwMTYtMDMtMDYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkgZG9lc24ndCBrbm93IGhvdyB0byBoYXZlIGEgYmFk
IHRpbWUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxOTc2NDIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyOCw3ICsxMjI4
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZQogICAgIGlmICgh
dGFyZ2V0LmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgSlNPYmplY3QqIGpzVGFyZ2V0ID0gYXNPYmplY3QodGFyZ2V0LmFzQ2Vs
bCgpKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTUHJveHk6OmNyZWF0ZVN0cnVjdHVy
ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzVGFyZ2V0LT5wcm90
b3R5cGUoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1
Y3R1cmUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc1RhcmdldC0+
Z2V0UHJvdG90eXBlRGlyZWN0KCkpOwogICAgIEpTUHJveHkqIHByb3h5ID0gSlNQcm94eTo6Y3Jl
YXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwganNUYXJnZXQpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocHJveHkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAJKHJldmlzaW9uIDE5NzY0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsOCArMjY3LDggQEAgSlNW
YWx1ZVJlZiBKU09iamVjdEdldFByb3RvdHlwZShKU0NvbnRleAogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IHRvSlMoY3R4KTsKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogCi0gICAgSlNP
YmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwotICAgIHJldHVybiB0b1JlZihleGVjLCBq
c09iamVjdC0+cHJvdG90eXBlKCkpOworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2Jq
ZWN0KTsgCisgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIGpzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3QoKSk7CiB9CiAKIHZvaWQgSlNPYmplY3RTZXRQcm90b3R5cGUoSlNDb250ZXh0UmVmIGN0eCwg
SlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHZhbHVlKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTc2NDIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzkyLDYgKzEzOTIsMTUgQEAgaW50NjRfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bnZlcnREbwogICAgIHJldHVybiB0cnlDb252ZXJ0VG9JbnQ1Mih2YWx1ZSk7CiB9CiAKK3NpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmF1bHRIYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4
ZWMsIEpTQ2VsbCogdmFsdWUsIEpTQ2VsbCogcHJvdG8pIC8vIFJldHVybnMganNCb29sZWFuKFRy
dWV8RmFsc2UpIG9uIDY0LWJpdC4KK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBpZiAoSlNPYmplY3Q6
OmRlZmF1bHRIYXNJbnN0YW5jZShleGVjLCB2YWx1ZSwgcHJvdG8pKQorICAgICAgICByZXR1cm4g
MTsKKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2Nl
c3NUeXBlUHJvZmlsZXJMb2dERkcoRXhlY1N0YXRlKiBleGVjKSAKIHsKICAgICBleGVjLT52bSgp
LnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIkxvZyBG
dWxsLCBjYWxsZWQgZnJvbSBpbnNpZGUgREZHLiIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxOTc2NDIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDYg
KzE1NSw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Mb2FkVmFyYXJncygKIGludDY0
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0Qm94ZWREb3VibGVUb0ludDUyKEVuY29k
ZWRKU1ZhbHVlKTsKIGludDY0X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0RG91Ymxl
VG9JbnQ1Mihkb3VibGUpOwogCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZhdWx0
SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiwgSlNDZWxsKiB2YWx1ZSwgSlNDZWxsKiBwcm90byk7CisK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9nREZHKEV4
ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIGRlYnVnT3BlcmF0
aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqKSBXVEZf
SU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTk3NjQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NDAsNiArMjc0
MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm8KICAgICAKICAg
ICAvLyBXYWxrIHVwIHRoZSBwcm90b3R5cGUgY2hhaW4gb2YgdGhlIHZhbHVlIChpbiBzY3JhdGNo
UmVnKSwgY29tcGFyaW5nIHRvIHByb3RvdHlwZVJlZy4KICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgbG9vcCgmbV9qaXQpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHBlcmZvcm1EZWZhdWx0
SGFzSW5zdGFuY2UgPSBtX2ppdC5icmFuY2g4KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihQcm94eU9iamVjdFR5cGUpKTsKICAgICBtX2ppdC5l
bWl0TG9hZFN0cnVjdHVyZShzY3JhdGNoUmVnLCBzY3JhdGNoUmVnLCBzY3JhdGNoMlJlZyk7CiAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBTdHJ1
Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgQ2VsbFBheWxvYWRPZmZzZXQpLCBzY3JhdGNoUmVn
KTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0luc3RhbmNlID0gbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgc2NyYXRjaFJlZywgcHJvdG90eXBlUmVnKTsKQEAgLTI3
NTUsNyArMjc1NywxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZv
CiAjZWxzZQogICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigwKSwg
c2NyYXRjaFJlZyk7CiAjZW5kaWYKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBwdXRSZXN1bHQg
PSBtX2ppdC5qdW1wKCk7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGRvbmVKdW1wczsg
CisgICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworCisgICAgcGVyZm9ybURlZmF1
bHRIYXNJbnN0YW5jZS5saW5rKCZtX2ppdCk7CisgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMo
c2NyYXRjaFJlZyk7CisgICAgLy8gVGhpcyBvcGVyYXRpb24gcmV0dXJucyAxIGlmIHRydWUgYW5k
IDAgaWYgZmFsc2UuCisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZhdWx0SGFzSW5zdGFu
Y2UsIHNjcmF0Y2hSZWcsIHZhbHVlUmVnLCBwcm90b3R5cGVSZWcpOyAKKyAgICBzaWxlbnRGaWxs
QWxsUmVnaXN0ZXJzKHNjcmF0Y2hSZWcpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNl
KSwgc2NyYXRjaFJlZyk7CisjZW5kaWYKKyAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0Lmp1bXAo
KSk7CiAgICAgCiAgICAgaXNJbnN0YW5jZS5saW5rKCZtX2ppdCk7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKQEAgLTI3NjQsNyArMjc3OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0
YW5jZU9mRm8KICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSks
IHNjcmF0Y2hSZWcpOwogI2VuZGlmCiAgICAgCi0gICAgcHV0UmVzdWx0LmxpbmsoJm1faml0KTsK
KyAgICBkb25lSnVtcHMubGluaygmbV9qaXQpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAxOTc2NDIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU5NDcsNiArNTk0Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2Nr
IGxvb3AgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkluc3RhbmNlT2YgbG9vcCIpKTsKICAgICAg
ICAgTEJhc2ljQmxvY2sgbm90WWV0SW5zdGFuY2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIklu
c3RhbmNlT2Ygbm90IHlldCBpbnN0YW5jZSIpKTsKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGlu
dWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJJbnN0YW5jZU9mIGNvbnRpbnVhdGlvbiIp
KTsKKyAgICAgICAgTEJhc2ljQmxvY2sgbG9hZFByb3RvdHlwZURpcmVjdCA9IEZUTF9ORVdfQkxP
Q0sobV9vdXQsICgiSW5zdGFuY2VvZiBkZWZhdWx0UHJvdG90eXBlRnVuY3Rpb24iKSk7CisgICAg
ICAgIExCYXNpY0Jsb2NrIGRlZmF1bHRIYXNJbnN0YW5jZVNsb3cgPSBGVExfTkVXX0JMT0NLKG1f
b3V0LCAoIkluc3RhbmNlb2YgZGVmYXVsdFByb3RvdHlwZUZ1bmN0aW9uIikpOwogICAgICAgICAK
ICAgICAgICAgTFZhbHVlIGNvbmRpdGlvbjsKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IFVudHlwZWRVc2UpCkBAIC01OTY0LDggKzU5NjYsMTQgQEAgcHJpdmF0ZToK
ICAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2luYWxWYWx1ZSA9IG1fb3V0LmFuY2hvcihjZWxs
KTsKICAgICAgICAgbV9vdXQuanVtcChsb29wKTsKICAgICAgICAgCi0gICAgICAgIG1fb3V0LmFw
cGVuZFRvKGxvb3AsIG5vdFlldEluc3RhbmNlKTsKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obG9v
cCwgbG9hZFByb3RvdHlwZURpcmVjdCk7CiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IG1fb3V0LnBo
aShtX291dC5pbnQ2NCwgb3JpZ2luYWxWYWx1ZSk7CisgICAgICAgIExWYWx1ZSB0eXBlID0gbV9v
dXQubG9hZDhaZXJvRXh0MzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3R5cGVJbmZvVHlwZSk7Cisg
ICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKHR5cGUsIG1f
b3V0LmNvbnN0SW50MzIoUHJveHlPYmplY3RUeXBlKSksCisgICAgICAgICAgICB1c3VhbGx5KGxv
YWRQcm90b3R5cGVEaXJlY3QpLCByYXJlbHkoZGVmYXVsdEhhc0luc3RhbmNlU2xvdykpOworCisg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGxvYWRQcm90b3R5cGVEaXJlY3QsIG5vdFlldEluc3RhbmNl
KTsKICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUodmFsdWUpOwogICAg
ICAgICBMVmFsdWUgY3VycmVudFByb3RvdHlwZSA9IG1fb3V0LmxvYWQ2NChzdHJ1Y3R1cmUsIG1f
aGVhcHMuU3RydWN0dXJlX3Byb3RvdHlwZSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGlzSW5z
dGFuY2VSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOwpAQCAtNTk3Mywx
NCArNTk4MSwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuZXF1YWwoY3VycmVudFBy
b3RvdHlwZSwgcHJvdG90eXBlKSwKICAgICAgICAgICAgIHVuc3VyZShjb250aW51YXRpb24pLCB1
bnN1cmUobm90WWV0SW5zdGFuY2UpKTsKICAgICAgICAgCi0gICAgICAgIG1fb3V0LmFwcGVuZFRv
KG5vdFlldEluc3RhbmNlLCBjb250aW51YXRpb24pOworICAgICAgICBtX291dC5hcHBlbmRUbyhu
b3RZZXRJbnN0YW5jZSwgZGVmYXVsdEhhc0luc3RhbmNlU2xvdyk7CiAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIG5vdEluc3RhbmNlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxz
ZSk7CiAgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkodmFsdWUsIG1fb3V0LmFuY2hvcihj
dXJyZW50UHJvdG90eXBlKSk7CiAgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwoY3VycmVudFBy
b3RvdHlwZSksIHVuc3VyZShsb29wKSwgdW5zdXJlKGNvbnRpbnVhdGlvbikpOworCisgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGRlZmF1bHRIYXNJbnN0YW5jZVNsb3csIGNvbnRpbnVhdGlvbik7Cisg
ICAgICAgIC8vIFdlIGNhbiB1c2UgdGhlIHZhbHVlIHRoYXQgd2UncmUgbG9vcGluZyB3aXRoIGJl
Y2F1c2Ugd2UKKyAgICAgICAgLy8gY2FuIGp1c3QgY29udGludWUgb2ZmIGZyb20gd2hlcmV2ZXIg
d2UgYmFpbGVkIGZyb20gdGhlCisgICAgICAgIC8vIGxvb3AuCisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGRlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCA9IG1fb3V0LmFuY2hvcigKKyAgICAgICAgICAg
IHZtQ2FsbChtX291dC5ib29sZWFuLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmYXVsdEhh
c0luc3RhbmNlKSwgbV9jYWxsRnJhbWUsIHZhbHVlLCBwcm90b3R5cGUpKTsKKyAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIHNldEJvb2xlYW4oCi0gICAgICAgICAg
ICBtX291dC5waGkobV9vdXQuYm9vbGVhbiwgbm90Q2VsbFJlc3VsdCwgaXNJbnN0YW5jZVJlc3Vs
dCwgbm90SW5zdGFuY2VSZXN1bHQpKTsKKyAgICAgICAgICAgIG1fb3V0LnBoaShtX291dC5ib29s
ZWFuLCBub3RDZWxsUmVzdWx0LCBpc0luc3RhbmNlUmVzdWx0LCBub3RJbnN0YW5jZVJlc3VsdCwg
ZGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0KSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlSW5z
dGFuY2VPZkN1c3RvbSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxOTc2NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw2ICsyMzMs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgbW92ZShU
cnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKICAgICBMYWJlbCBsb29wKHRoaXMpOwogCisgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoOChFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihQcm94eU9iamVjdFR5cGUpKSk7CisKICAgICAvLyBM
b2FkIHRoZSBwcm90b3R5cGUgb2YgdGhlIGNlbGwgaW4gcmVnVDIuICBJZiB0aGlzIGlzIGVxdWFs
IHRvIHJlZ1QxIC0gV0lOIQogICAgIC8vIE90aGVyd2lzZSwgY2hlY2sgaWYgd2UndmUgaGl0IG51
bGwgLSBpZiB3ZSBoYXZlIHRoZW4gZHJvcCBvdXQgb2YgdGhlIGxvb3AsIGlmIG5vdCBnbyBhZ2Fp
bi4KICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIHJlZ1QyKTsKQEAgLTI2Myw2ICsyNjUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5z
dGFuY2VvZihJbnN0cnVjCiAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgdmFsdWUp
OwogICAgIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIHByb3RvKTsKICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCiAgICAgZW1pdExvYWQodmFs
dWUsIHJlZ1QxLCByZWdUMCk7CiAgICAgZW1pdExvYWQocHJvdG8sIHJlZ1QzLCByZWdUMik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE5
NzY0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1Myw2ICsxNTMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9m
KEluc3RydWN0aW9uCiAgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbih0cnVlKSkpLCByZWdUMCk7CiAgICAgTGFiZWwgbG9vcCh0aGlzKTsKIAorICAgIGFkZFNs
b3dDYXNlKGJyYW5jaDgoRXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6dHlwZUluZm9UeXBl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoUHJveHlPYmplY3RUeXBlKSkpOworCiAgICAgLy8gTG9h
ZCB0aGUgcHJvdG90eXBlIG9mIHRoZSBvYmplY3QgaW4gcmVnVDIuICBJZiB0aGlzIGlzIGVxdWFs
IHRvIHJlZ1QxIC0gV0lOIQogICAgIC8vIE90aGVyd2lzZSwgY2hlY2sgaWYgd2UndmUgaGl0IG51
bGwgLSBpZiB3ZSBoYXZlIHRoZW4gZHJvcCBvdXQgb2YgdGhlIGxvb3AsIGlmIG5vdCBnbyBhZ2Fp
bi4KICAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMiwgcmVnVDIsIHJlZ1QzKTsKQEAgLTg1Nyw2
ICs4NTksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihJbnN0cnVjCiAgICAg
bGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgdmFsdWUpOwogICAgIGxpbmtTbG93Q2FzZUlm
Tm90SlNDZWxsKGl0ZXIsIHByb3RvKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CisgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1Qw
KTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3RvLCByZWdUMSk7CiAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mLCBkc3QsIHJlZ1QwLCByZWdUMSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE5
NzY0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3NzksOCArMTc3OSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSW4KICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
UHJvdG8pOwogICAgIAotICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSB8fCAhcHJvdG8uaXNP
YmplY3QoKSk7Ci0KICAgICBib29sIHJlc3VsdCA9IEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFu
Y2UoZXhlYywgdmFsdWUsIHByb3RvKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihyZXN1bHQpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCShyZXZpc2lvbiAxOTc2NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5Niw3IEBAIHR5cGVk
ZWYgaW50NjRfdCBKSVRfT1BFUkFUSU9OKCpRX0pJVE9wZXIKIHR5cGVkZWYgaW50MzJfdCBKSVRf
T1BFUkFUSU9OICgqWl9KSVRPcGVyYXRpb25fRCkoZG91YmxlKTsKIHR5cGVkZWYgaW50MzJfdCBK
SVRfT1BFUkFUSU9OICgqWl9KSVRPcGVyYXRpb25fRSkoRXhlY1N0YXRlKik7CiB0eXBlZGVmIGlu
dDMyX3QgSklUX09QRVJBVElPTiAoKlpfSklUT3BlcmF0aW9uX0VDKShFeGVjU3RhdGUqLCBKU0Nl
bGwqKTsKK3R5cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRPcGVyYXRpb25fRUND
KShFeGVjU3RhdGUqLCBKU0NlbGwqLCBKU0NlbGwqKTsKIHR5cGVkZWYgaW50MzJfdCBKSVRfT1BF
UkFUSU9OICgqWl9KSVRPcGVyYXRpb25fRUdDKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCopOwogdHlwZWRlZiBpbnQzMl90IEpJVF9PUEVSQVRJT04gKCpaX0pJVE9wZXJhdGlv
bl9FU0pzcykoRXhlY1N0YXRlKiwgc2l6ZV90LCBKU1N0cmluZyopOwogdHlwZWRlZiBpbnQzMl90
IEpJVF9PUEVSQVRJT04gKCpaX0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCShyZXZpc2lvbiAxOTc2NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjYsNyArNTI2LDYgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luc3RhbmNlbwogICAgIExMSU5UX0JFR0lO
KCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwogICAgIEpT
VmFsdWUgcHJvdG8gPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKLSAgICBBU1NFUlQoIXZhbHVl
LmlzT2JqZWN0KCkgfHwgIXByb3RvLmlzT2JqZWN0KCkpOwogICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShleGVjLCB2YWx1ZSwgcHJvdG8pKSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxOTc2NDIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTIwNiwzNCArMTIwNiw2IEBAIF9sbGludF9vcF9vdmVycmlkZXNfaGFzX2lu
c3RhbmNlOgogICAgIHN0b3JlaSAxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgZGlz
cGF0Y2goNCkKIAotX2xsaW50X29wX2luc3RhbmNlb2Y6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQot
ICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCi0gICAgbG9hZGkgMTJbUENdLCB0MAotICAgIGxv
YWRpIDRbUENdLCB0MwotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxs
VGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCi0gICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QxXSwg
T2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNl
b2ZTbG93KQotICAgIAotICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9
IHZhbHVlCi0gICAgbW92ZSAxLCB0MAotLm9wSW5zdGFuY2VvZkxvb3A6Ci0gICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgdDIKLSAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90
eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCi0gICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNl
b2ZEb25lCi0gICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCi0KLSAgICBtb3ZlIDAsIHQw
Ci0ub3BJbnN0YW5jZW9mRG9uZToKLSAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDMsIDhdCi0gICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCi0gICAg
ZGlzcGF0Y2goNCkKLQotLm9wSW5zdGFuY2VvZlNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfaW5zdGFuY2VvZikKLSAgICBkaXNwYXRjaCg0KQotCiBfbGxpbnRfb3BfaW5z
dGFuY2VvZl9jdXN0b206CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX2luc3RhbmNlb2ZfY3VzdG9tKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlz
aW9uIDE5NzY0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMDkzLDM0ICsxMDkzLDYgQEAgX2xsaW50
X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2U6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRf
b3BfaW5zdGFuY2VvZjoKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgIyBBY3R1YWxseSBkbyB0
aGUgd29yay4KLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDApCi0gICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZUNlbGwodDAsIHQxLCAub3BJbnN0YW5jZW9mU2xvdykKLSAgICBiYmIgSlND
ZWxsOjptX3R5cGVbdDFdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdwotICAgIGxvYWRp
c0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0
MCwgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQotICAgIAotICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQx
ID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCi0gICAgbW92ZSAxLCB0MAotLm9wSW5zdGFuY2VvZkxv
b3A6Ci0gICAgbG9hZFN0cnVjdHVyZUFuZENsb2JiZXJGaXJzdEFyZyh0MiwgdDMpCi0gICAgbG9h
ZHEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVt0M10sIHQyCi0gICAgYnFlcSB0MiwgdDEsIC5vcElu
c3RhbmNlb2ZEb25lCi0gICAgYnRxeiB0MiwgdGFnTWFzaywgLm9wSW5zdGFuY2VvZkxvb3AKLQot
ICAgIG1vdmUgMCwgdDAKLS5vcEluc3RhbmNlb2ZEb25lOgotICAgIG9ycSBWYWx1ZUZhbHNlLCB0
MAotICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MykKLSAgICBzdG9yZXEgdDAsIFtjZnIs
IHQzLCA4XQotICAgIGRpc3BhdGNoKDQpCi0KLS5vcEluc3RhbmNlb2ZTbG93OgotICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2luc3RhbmNlb2YpCi0gICAgZGlzcGF0Y2goNCkKLQog
X2xsaW50X29wX2luc3RhbmNlb2ZfY3VzdG9tOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pbnN0YW5jZW9mX2N1c3RvbSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20JKHJldmlzaW9uIDE5NzY0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTcwNiw2ICsxNzA2LDExIEBA
IF9sbGludF9vcF9jb3B5X3Jlc3Q6CiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfY29weV9y
ZXN0KQogICAgIGRpc3BhdGNoKDQpCiAKK19sbGludF9vcF9pbnN0YW5jZW9mOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pbnN0YW5jZW9m
KQorICAgIGRpc3BhdGNoKDQpCisKIAogIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBs
aW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCiAjIFRoZXNlIG9w
Y29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJVC4g
V2UgYXNzZXJ0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxOTc2NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3ICsx
ODQsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBzdGQ6OnBhaXI8U3BlY2llc0NvCiAgICAgICAg
IC8vIEZhc3QgcGF0aCBpbiB0aGUgbm9ybWFsIGNhc2Ugd2hlcmUgdGhlIHVzZXIgaGFzIG5vdCBz
ZXQgYW4gb3duIGNvbnN0cnVjdG9yIGFuZCB0aGUgQXJyYXkucHJvdG90eXBlLmNvbnN0cnVjdG9y
IGlzIG5vcm1hbC4KICAgICAgICAgLy8gV2UgbmVlZCBwcm90b3R5cGUgY2hlY2sgZm9yIHN1YmNs
YXNzZXMgb2YgQXJyYXksIHdoaWNoIGFyZSBBcnJheSBvYmplY3RzIGJ1dCBoYXZlIGEgZGlmZmVy
ZW50IHByb3RvdHlwZSBieSBkZWZhdWx0LgogICAgICAgICBpZiAoTElLRUxZKCF0aGlzT2JqZWN0
LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkKLSAgICAgICAgICAgICYmIHRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLT5hcnJheVByb3RvdHlwZSgpID09IHRoaXNPYmplY3QtPnByb3RvdHlwZSgpCisg
ICAgICAgICAgICAmJiB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+YXJyYXlQcm90b3R5cGUo
KSA9PSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKQogICAgICAgICAgICAgJiYgIXRo
aXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5hcnJheVByb3RvdHlwZSgpLT5kaWRDaGFuZ2VDb25z
dHJ1Y3Rvck9yU3BlY2llc1Byb3BlcnRpZXMoKSkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3BhaXIoU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RmFzdFBhdGgsIG51bGxwdHIpOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24g
MTk3NjQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdv
cmtpbmcgY29weSkKQEAgLTExMiw2ICsxMTIsOSBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAg
IHR5cGVkZWYgYm9vbCAoKlNldFByb3RvdHlwZUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogICAgIFNldFByb3Rv
dHlwZUZ1bmN0aW9uUHRyIHNldFByb3RvdHlwZTsKIAorICAgIHR5cGVkZWYgSlNWYWx1ZSAoKkdl
dFByb3RvdHlwZUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSopOworICAgIEdldFBy
b3RvdHlwZUZ1bmN0aW9uUHRyIGdldFByb3RvdHlwZTsKKwogICAgIHR5cGVkZWYgdm9pZCAoKkR1
bXBUb1N0cmVhbUZ1bmN0aW9uUHRyKShjb25zdCBKU0NlbGwqLCBQcmludFN0cmVhbSYpOwogICAg
IER1bXBUb1N0cmVhbUZ1bmN0aW9uUHRyIGR1bXBUb1N0cmVhbTsKIApAQCAtMTY2LDYgKzE2OSw3
IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgICAgICZDbGFzc05hbWU6OnByZXZlbnRFeHRl
bnNpb25zLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmlzRXh0ZW5zaWJsZSwgXAogICAgICAgICAm
Q2xhc3NOYW1lOjpzZXRQcm90b3R5cGUsIFwKKyAgICAgICAgJkNsYXNzTmFtZTo6Z2V0UHJvdG90
eXBlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmR1bXBUb1N0cmVhbSwgXAogICAgICAgICAmQ2xh
c3NOYW1lOjplc3RpbWF0ZWRTaXplIFwKICAgICB9LCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiAx
OTc2NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAgICAgfQogCiAgICAgSlNTdHJpbmcqIG5hbWUgPSB0
YXJnZXQuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lKS50b1N0cmluZyhleGVj
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZXhlYy0+YXJndW1lbnQoMCksIGJvdW5kQXJn
cywgbGVuZ3RoLCBuYW1lLT52YWx1ZShleGVjKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWMsIGdsb2JhbE9iamVjdCwgdGFyZ2V0
T2JqZWN0LCBleGVjLT5hcmd1bWVudCgwKSwgYm91bmRBcmdzLCBsZW5ndGgsIG5hbWUtPnZhbHVl
KGV4ZWMpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAxOTc2NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29s
bGF0b3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0bwogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3Ioc3RhdGUpKTsKIAogICAgICAg
ICAvLyBjLiBMZXQgYmMgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuyku
Ci0gICAgICAgIGJvdW5kQ29tcGFyZSA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHRhcmdldE9iamVjdCwgY29sbGF0b3IsIGJvdW5kQXJncywgMiwgQVNDSUlMaXRl
cmFsKCJjb21wYXJlIikpOworICAgICAgICBib3VuZENvbXBhcmUgPSBKU0JvdW5kRnVuY3Rpb246
OmNyZWF0ZSh2bSwgc3RhdGUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBjb2xsYXRvciwg
Ym91bmRBcmdzLCAyLCBBU0NJSUxpdGVyYWwoImNvbXBhcmUiKSk7CisgICAgICAgIGlmICh2bS5l
eGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgp
KTsKICAgICAgICAgLy8gZC4gU2V0IGNvbGxhdG9yLltbYm91bmRDb21wYXJlXV0gdG8gYmMuCiAg
ICAgICAgIGNvbGxhdG9yLT5zZXRCb3VuZENvbXBhcmUodm0sIGJvdW5kQ29tcGFyZSk7CiAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxOTc2NDIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd091dE9mTWVtb3J5RXJyb3Ioc3RhdGUpKTsKIAogICAgICAgICAvLyBjLiBMZXQgYmYg
YmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCi0gICAgICAgIGJvdW5k
Rm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0
T2JqZWN0LCBkdGYsIGJvdW5kQXJncywgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSk7CisgICAg
ICAgIGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRlLCBnbG9i
YWxPYmplY3QsIHRhcmdldE9iamVjdCwgZHRmLCBib3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJhbCgi
Zm9ybWF0IikpOworICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIC8vIGQuIFNldCBkdGYuW1ti
b3VuZEZvcm1hdF1dIHRvIGJmLgogICAgICAgICBkdGYtPnNldEJvdW5kRm9ybWF0KHZtLCBib3Vu
ZEZvcm1hdCk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5
NzY0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDkgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRgogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3Ioc3RhdGUpKTsKIAogICAgICAgICAvLyBj
LiBMZXQgYmYgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCi0gICAg
ICAgIGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgdGFyZ2V0T2JqZWN0LCBuZiwgYm91bmRBcmdzLCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIp
KTsKKyAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgc3Rh
dGUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBuZiwgYm91bmRBcmdzLCAxLCBBU0NJSUxp
dGVyYWwoImZvcm1hdCIpKTsKKyAgICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgICAgICAvLyBkLiBTZXQg
bmYuW1tib3VuZEZvcm1hdF1dIHRvIGJmLgogICAgICAgICBuZi0+c2V0Qm91bmRGb3JtYXQodm0s
IGJvdW5kRm9ybWF0KTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JvdW5kRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDE5NzY0MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg3LDkgKzg3LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaGFzSW5z
dGFuY2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihib3VuZE9iamVjdC0+
dGFyZ2V0RnVuY3Rpb24oKS0+aGFzSW5zdGFuY2UoZXhlYywgdmFsdWUpKSk7CiB9CiAKLWlubGlu
ZSBTdHJ1Y3R1cmUqIGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24pCitpbmxpbmUgU3Ry
dWN0dXJlKiBnZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24p
CiB7Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0YXJnZXRGdW5jdGlvbi0+c3RydWN0dXJlKHZt
KS0+c3RvcmVkUHJvdG90eXBlKCk7CisgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0YXJnZXRGdW5j
dGlvbi0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKKyAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0
aW9uKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRK
U0Z1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odGFyZ2V0RnVuY3Rpb24pOwog
CiAgICAgLy8gV2Ugb25seSBjYWNoZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBib3VuZCBmdW5jdGlv
biBpZiB0aGUgYmluZGVlIGlzIGEgSlNGdW5jdGlvbiBzaW5jZSB0aGVyZQpAQCAtMTE3LDEzICsx
MTksMTUgQEAgaW5saW5lIFN0cnVjdHVyZSogZ2V0Qm91bmRGdW5jdGlvblN0cnVjdAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLUpTQm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGFyZ2V0
RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU1ZhbHVlIGJvdW5kQXJncywgaW50IGxlbmd0
aCwgY29uc3QgU3RyaW5nJiBuYW1lKQorSlNCb3VuZEZ1bmN0aW9uKiBKU0JvdW5kRnVuY3Rpb246
OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1
ZSBib3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBDb25z
dHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBl
ID0gSlNDOjpnZXRDb25zdHJ1Y3REYXRhKHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhKTsK
ICAgICBib29sIGNhbkNvbnN0cnVjdCA9IGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZTo6
Tm9uZTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0
aW9uKGJvdW5kRnVuY3Rpb25DYWxsLCBjYW5Db25zdHJ1Y3QgPyBib3VuZEZ1bmN0aW9uQ29uc3Ry
dWN0IDogY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIEFTQ0lJTGl0ZXJhbCgiRnVuY3Rp
b24ucHJvdG90eXBlLmJpbmQgcmVzdWx0IikpOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
Z2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRGdW5jdGlv
bik7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJl
KHZtLCBleGVjLCBnbG9iYWxPYmplY3QsIHRhcmdldEZ1bmN0aW9uKTsKKyAgICBpZiAoVU5MSUtF
TFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBKU0JvdW5k
RnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCb3VuZEZ1
bmN0aW9uPih2bS5oZWFwKSkgSlNCb3VuZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgdGFyZ2V0RnVuY3Rpb24sIGJvdW5kVGhpcywgYm91bmRBcmdzKTsKIAogICAgIGZ1bmN0
aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBtYWtlU3RyaW5nKCJi
b3VuZCAiLCBuYW1lKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JvdW5kRnVuY3Rpb24uaAkocmV2aXNpb24gMTk3NjQyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOwogICAgIGNvbnN0
IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IH5JbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlICYgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICBzdGF0aWMgSlNCb3VuZEZ1bmN0
aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlv
biwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTVmFsdWUgYm91bmRBcmdzLCBpbnQsIGNvbnN0IFN0cmlu
ZyYpOworICAgIHN0YXRpYyBKU0JvdW5kRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5k
VGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCwgY29uc3QgU3RyaW5nJik7CiAgICAgCiAgICAg
c3RhdGljIGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1Zh
bHVlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5jcHAJKHJldmlzaW9uIDE5NzY0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBK
U1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIAogICAgIEpTVmFsdWUgcHJvdG90eXBl
OwogICAgIGlmIChwcm9wZXJ0eU5hbWUgIT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnVuZGVyc2Nv
cmVQcm90bykgewogICAgICAgICBmb3IgKDsgIW9iai0+c3RydWN0dXJlKCktPmhhc1JlYWRPbmx5
T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKTsgb2JqID0gYXNPYmplY3Qo
cHJvdG90eXBlKSkgewotICAgICAgICAgICAgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsK
KyAgICAgICAgICAgIHByb3RvdHlwZSA9IG9iai0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CiAgICAg
ICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNs
b3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CkBAIC0xNzgsNyArMTc4
LDkgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIAogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBwcm90b3R5cGUgPSBvYmotPnByb3RvdHlw
ZSgpOworICAgICAgICBwcm90b3R5cGUgPSBvYmotPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7Cisg
ICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
aWYgKHByb3RvdHlwZS5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMTk3NjQy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjg1LDQgKzI4NSw5IEBAIGJvb2wgSlNDZWxsOjpzZXRQcm90b3R5cGUoSlNPYmpl
Y3QqLCBFeGUKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitKU1ZhbHVl
IEpTQ2VsbDo6Z2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKikKK3sKKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxOTc2NDIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpA
QCAtMjA5LDYgKzIwOSw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9U
T19DUkFTSCBib29sIHByZXZlbnRFeHRlbnNpb25zKEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7CiAg
ICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBpc0V4dGVuc2libGUoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqKTsKICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29s
IHNldFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGJvb2wpOworICAg
IHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIEpTVmFsdWUgZ2V0UHJvdG90eXBlKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKik7CiAKICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBK
U09iamVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGN1c3RvbUhhc0lu
c3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAx
OTc2NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYxMyw3ICs2MTMsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVyCiAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICIkdm0iKSwgZG9sbGFyVk0sIERvbnRF
bnVtKTsKICAgICB9CiAKLSAgICByZXNldFByb3RvdHlwZSh2bSwgcHJvdG90eXBlKCkpOworICAg
IHJlc2V0UHJvdG90eXBlKHZtLCBnZXRQcm90b3R5cGVEaXJlY3QoKSk7CiB9CiAKIGJvb2wgSlNH
bG9iYWxPYmplY3Q6Omhhc0xlZ2FjeVByb2ZpbGVyKCkgY29uc3QKQEAgLTY2OSw4ICs2NjksOCBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbihFeGVjU3RhCiBzdGF0aWMgaW5saW5l
IEpTT2JqZWN0KiBsYXN0SW5Qcm90b3R5cGVDaGFpbihKU09iamVjdCogb2JqZWN0KQogewogICAg
IEpTT2JqZWN0KiBvID0gb2JqZWN0OwotICAgIHdoaWxlIChvLT5wcm90b3R5cGUoKS5pc09iamVj
dCgpKQotICAgICAgICBvID0gYXNPYmplY3Qoby0+cHJvdG90eXBlKCkpOworICAgIHdoaWxlIChv
LT5nZXRQcm90b3R5cGVEaXJlY3QoKS5pc09iamVjdCgpKQorICAgICAgICBvID0gYXNPYmplY3Qo
by0+Z2V0UHJvdG90eXBlRGlyZWN0KCkpOwogICAgIHJldHVybiBvOwogfQogCkBAIC03MjYsNyAr
NzI2LDcgQEAgaW5saW5lIHZvaWQgT2JqZWN0c1dpdGhCcm9rZW5JbmRleGluZ0ZpbgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlVmFsdWUgPSBjdXJyZW50LT5wcm90b3R5cGUoKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5
cGVWYWx1ZSA9IGN1cnJlbnQtPmdldFByb3RvdHlwZURpcmVjdCgpOwogICAgICAgICBpZiAocHJv
dG90eXBlVmFsdWUuaXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY3VycmVu
dCA9IGFzT2JqZWN0KHByb3RvdHlwZVZhbHVlKTsKQEAgLTc4NSwyMCArNzg1LDIwIEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OmhhdmVBQmFkVGltZShWTSYgdm0KIGJvb2wgSlNHbG9iYWxPYmplY3Q6
Om9iamVjdFByb3RvdHlwZUlzU2FuZSgpCiB7CiAgICAgcmV0dXJuICFoYXNJbmRleGVkUHJvcGVy
dGllcyhtX29iamVjdFByb3RvdHlwZS0+aW5kZXhpbmdUeXBlKCkpCi0gICAgICAgICYmIG1fb2Jq
ZWN0UHJvdG90eXBlLT5wcm90b3R5cGUoKS5pc051bGwoKTsKKyAgICAgICAgJiYgbV9vYmplY3RQ
cm90b3R5cGUtPmdldFByb3RvdHlwZURpcmVjdCgpLmlzTnVsbCgpOwogfQogCiBib29sIEpTR2xv
YmFsT2JqZWN0OjphcnJheVByb3RvdHlwZUNoYWluSXNTYW5lKCkKIHsKICAgICByZXR1cm4gIWhh
c0luZGV4ZWRQcm9wZXJ0aWVzKG1fYXJyYXlQcm90b3R5cGUtPmluZGV4aW5nVHlwZSgpKQotICAg
ICAgICAmJiBtX2FycmF5UHJvdG90eXBlLT5wcm90b3R5cGUoKSA9PSBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKQorICAgICAgICAmJiBtX2FycmF5UHJvdG90eXBlLT5nZXRQcm90b3R5cGVEaXJlY3Qo
KSA9PSBtX29iamVjdFByb3RvdHlwZS5nZXQoKQogICAgICAgICAmJiBvYmplY3RQcm90b3R5cGVJ
c1NhbmUoKTsKIH0KIAogYm9vbCBKU0dsb2JhbE9iamVjdDo6c3RyaW5nUHJvdG90eXBlQ2hhaW5J
c1NhbmUoKQogewogICAgIHJldHVybiAhaGFzSW5kZXhlZFByb3BlcnRpZXMobV9zdHJpbmdQcm90
b3R5cGUtPmluZGV4aW5nVHlwZSgpKQotICAgICAgICAmJiBtX3N0cmluZ1Byb3RvdHlwZS0+cHJv
dG90eXBlKCkgPT0gbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkKKyAgICAgICAgJiYgbV9zdHJpbmdQ
cm90b3R5cGUtPmdldFByb3RvdHlwZURpcmVjdCgpID09IG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
CiAgICAgICAgICYmIG9iamVjdFByb3RvdHlwZUlzU2FuZSgpOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDE5
NzY0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3OSw3ICszNzksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0
cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3Qodm0sIHRoaXMpOwogICAgICAgICBtX3J1bnRpbWVG
bGFncyA9IG1fZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUtPmphdmFTY3JpcHRSdW50aW1lRmxhZ3Mo
dGhpcyk7CiAgICAgICAgIGluaXQodm0pOwotICAgICAgICBzZXRHbG9iYWxUaGlzKHZtLCBKU1By
b3h5OjpjcmVhdGUodm0sIEpTUHJveHk6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgcHJvdG90
eXBlKCksIFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKSwgdGhpcykpOworICAgICAgICBzZXRHbG9i
YWxUaGlzKHZtLCBKU1Byb3h5OjpjcmVhdGUodm0sIEpTUHJveHk6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgZ2V0UHJvdG90eXBlRGlyZWN0KCksIFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKSwg
dGhpcykpOwogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVj
dCogdGhpc1ZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMTk3NjQyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODQsOCArNzg0LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnbG9iYWxGdW5jVAogCiBjbGFzcyBHbG9iYWxGdW5jUHJvdG9HZXR0ZXJGdW5j
dG9yIHsKIHB1YmxpYzoKLSAgICBHbG9iYWxGdW5jUHJvdG9HZXR0ZXJGdW5jdG9yKEpTT2JqZWN0
KiB0aGlzT2JqZWN0KQotICAgICAgICA6IG1faGFzU2tpcHBlZEZpcnN0RnJhbWUoZmFsc2UpCisg
ICAgR2xvYmFsRnVuY1Byb3RvR2V0dGVyRnVuY3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiB0aGlzT2JqZWN0KQorICAgICAgICA6IG1fZXhlYyhleGVjKQorICAgICAgICAsIG1faGFzU2tp
cHBlZEZpcnN0RnJhbWUoZmFsc2UpCiAgICAgICAgICwgbV90aGlzT2JqZWN0KHRoaXNPYmplY3Qp
CiAgICAgICAgICwgbV9yZXN1bHQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKQogICAg
IHsKQEAgLTgwMSwxMiArODAyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChtX3RoaXNPYmplY3QtPmFsbG93c0FjY2Vzc0Zyb20odmlzaXRvci0+Y2FsbEZyYW1lKCkpKQot
ICAgICAgICAgICAgbV9yZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUobV90aGlzT2JqZWN0LT5wcm90
b3R5cGUoKSk7CisgICAgICAgICAgICBtX3Jlc3VsdCA9IEpTVmFsdWU6OmVuY29kZShtX3RoaXNP
YmplY3QtPmdldFByb3RvdHlwZShtX2V4ZWMtPnZtKCksIG1fZXhlYykpOwogCiAgICAgICAgIHJl
dHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CiAgICAgfQogCiBwcml2YXRlOgorICAgIEV4ZWNTdGF0
ZSogbV9leGVjOwogICAgIGJvb2wgbV9oYXNTa2lwcGVkRmlyc3RGcmFtZTsKICAgICBKU09iamVj
dCogbV90aGlzT2JqZWN0OwogICAgIEVuY29kZWRKU1ZhbHVlIG1fcmVzdWx0OwpAQCAtODIyLDcg
KzgyNCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQCiAgICAg
aWYgKCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnRo
aXNWYWx1ZSgpLnN5bnRoZXNpemVQcm90b3R5cGUoZXhlYykpOwogCi0gICAgR2xvYmFsRnVuY1By
b3RvR2V0dGVyRnVuY3RvciBmdW5jdG9yKHRoaXNPYmplY3QpOworICAgIEdsb2JhbEZ1bmNQcm90
b0dldHRlckZ1bmN0b3IgZnVuY3RvcihleGVjLCB0aGlzT2JqZWN0KTsKKyAgICAvLyBUaGlzIGNh
biB0aHJvdyBidXQgaXQncyBqdXN0IHVubmVlZGVkIGV4dHJhIHdvcmsgdG8gY2hlY2sgZm9yIGl0
LiBUaGUgcmV0dXJuCisgICAgLy8gdmFsdWUgZnJvbSB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNl
ZCBhcyB0aGUgcmV0dXJuIHZhbHVlIGZyb20gYSBob3N0IGNhbGwuCisgICAgLy8gVGhlcmVmb3Jl
LCB0aGUgcmV0dXJuIHZhbHVlIGlzIG9ubHkgdXNlZCBpZiB0aGVyZSB3YXNuJ3QgYW4gZXhjZXB0
aW9uLgogICAgIGV4ZWMtPml0ZXJhdGUoZnVuY3Rvcik7CiAgICAgcmV0dXJuIGZ1bmN0b3IucmVz
dWx0KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCShyZXZpc2lvbiAxOTc2NDIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6Z2V0T3du
UHJvcGVydAogICAgIC8vIFdlIGRvbid0IGNhbGwgdGhyb3VnaCB0byBKU09iamVjdCBiZWNhdXNl
IHRoZXJlJ3Mgbm8gd2F5IHRvIGdpdmUgYSAKICAgICAvLyBsZXhpY2FsIGVudmlyb25tZW50IG9i
amVjdCBnZXR0ZXIgcHJvcGVydGllcyBvciBhIHByb3RvdHlwZS4KICAgICBBU1NFUlQoIXRoaXNP
YmplY3QtPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7Ci0gICAgQVNTRVJUKHRoaXNPYmpl
Y3QtPnByb3RvdHlwZSgpLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KCkuaXNOdWxsKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTk3
NjQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzIsNyArMjcyLDcgQEAgU3RyaW5nIEpTT2JqZWN0OjpjYWxjdWxhdGVk
Q2xhc3NOYW1lKEpTTwogewogICAgIFN0cmluZyBwcm90b3R5cGVGdW5jdGlvbk5hbWU7CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gb2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwot
ICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdC0+c3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlw
ZSgpLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpLCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKICAgICBQcm9wZXJ0eU5hbWUgY29u
c3RydWN0b3IoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yKTsKICAgICBpZiAob2Jq
ZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgY29uc3RydWN0b3IsIHNsb3QpKSB7CiAgICAgICAg
IGlmIChzbG90LmlzVmFsdWUoKSkgewpAQCAtNDMwLDExICs0MzAsMTQgQEAgdm9pZCBKU09iamVj
dDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqIAogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIGlmIChvYmotPnR5cGUoKSA9PSBQcm94eU9iamVjdFR5cGUgJiYgcHJvcGVydHlOYW1l
ICE9IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykgeworICAgICAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZG4ndCB1bmNvbmRpdGlvbmFsbHkgcGVyZm9ybSBbW1NldF1dIGhlcmUu
CisgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGRvIG1vcmUgYmVjYXVzZSB0aGlzIGlzIG9ic2Vy
dmFibGUgYmVoYXZpb3IuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1MDEyCiAgICAgICAgICAgICBQcm94eU9iamVjdCogcHJveHkgPSBq
c0Nhc3Q8UHJveHlPYmplY3QqPihvYmopOwogICAgICAgICAgICAgcHJveHktPlByb3h5T2JqZWN0
OjpwdXQocHJveHksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gb2JqLT5w
cm90b3R5cGUoKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBvYmotPmdldFByb3RvdHlw
ZURpcmVjdCgpOwogICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSk7CkBAIC0xMjAxLDcgKzEy
MDQsNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjCiB7CiAgICAg
QVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGV4ZWMsIE5vdFN0cmljdE1vZGUp
ID09IHRoaXMpOwogCi0gICAgaWYgKHRoaXMtPnByb3RvdHlwZSgpID09IHByb3RvdHlwZSkKKyAg
ICBpZiAodGhpcy0+Z2V0UHJvdG90eXBlRGlyZWN0KCkgPT0gcHJvdG90eXBlKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gdGhpcy0+aXNFeHRlbnNpYmxl
KGV4ZWMpOwpAQCAtMTIxNSwxMyArMTIxOCwxNiBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5
cGVXaXRoQ3ljbGVDaGVjCiAgICAgfQogCiAgICAgSlNWYWx1ZSBuZXh0UHJvdG90eXBlID0gcHJv
dG90eXBlOworICAgIE1ldGhvZFRhYmxlOjpHZXRQcm90b3R5cGVGdW5jdGlvblB0ciBkZWZhdWx0
R2V0UHJvdG90eXBlID0gSlNPYmplY3Q6OmdldFByb3RvdHlwZTsKICAgICB3aGlsZSAobmV4dFBy
b3RvdHlwZSAmJiBuZXh0UHJvdG90eXBlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgaWYgKG5leHRQ
cm90b3R5cGUgPT0gdGhpcykgewogICAgICAgICAgICAgaWYgKHNob3VsZFRocm93SWZDYW50U2V0
KQogICAgICAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiY3ljbGljIF9fcHJvdG9fXyB2YWx1ZSIpKSk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgbmV4dFByb3RvdHlwZSA9IGFzT2Jq
ZWN0KG5leHRQcm90b3R5cGUpLT5wcm90b3R5cGUoKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGFz
T2JqZWN0KG5leHRQcm90b3R5cGUpLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3RvdHlwZSAhPSBk
ZWZhdWx0R2V0UHJvdG90eXBlKSkKKyAgICAgICAgICAgIGJyZWFrOyAvLyBXZSdyZSBkb25lLiBT
ZXQgdGhlIHByb3RvdHlwZS4KKyAgICAgICAgbmV4dFByb3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQ
cm90b3R5cGUpLT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICB9CiAgICAgc2V0UHJvdG90eXBl
RGlyZWN0KHZtLCBwcm90b3R5cGUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTIzMiw2ICsxMjM4
LDExIEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZShKU09iamVjdCogb2IKICAgICByZXR1
cm4gb2JqZWN0LT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVjLT52bSgpLCBleGVjLCBw
cm90b3R5cGUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKIH0KIAorSlNWYWx1ZSBKU09iamVjdDo6
Z2V0UHJvdG90eXBlKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSopCit7CisgICAgcmV0dXJu
IG9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7Cit9CisKIGJvb2wgSlNPYmplY3Q6OnNldFBy
b3RvdHlwZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUsIGJvb2wg
c2hvdWxkVGhyb3dJZkNhbnRTZXQpCiB7CiAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+c2V0
UHJvdG90eXBlKHRoaXMsIGV4ZWMsIHByb3RvdHlwZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwpA
QCAtMTU3MiwxMiArMTU4MywxOSBAQCBib29sIEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2Uo
RXhlY1N0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7Ci0gICAgd2hp
bGUgKChvYmplY3QgPSBvYmplY3QtPnByb3RvdHlwZSgpLmdldE9iamVjdCgpKSkgeworICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICAgIEpTVmFsdWUgb2JqZWN0VmFsdWUgPSBvYmplY3QtPmdldFBy
b3RvdHlwZSh2bSwgZXhlYyk7CisgICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghb2JqZWN0VmFsdWUuaXNP
YmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgb2JqZWN0ID0gYXNP
YmplY3Qob2JqZWN0VmFsdWUpOwogICAgICAgICBpZiAocHJvdG8gPT0gb2JqZWN0KQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQ
cml2YXRlRnVuY0luc3RhbmNlT2YoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTU5MCwyNCArMTYwOCwy
OSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByaXZhCiAKIHZvaWQgSlNP
YmplY3Q6OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUp
CiB7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwotICAgIGlmIChVTkxJS0VM
WShleGVjLT5oYWRFeGNlcHRpb24oKSkpCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgpLmlzTnVsbCgp
KQorICAgIEpTVmFsdWUgbmV4dFByb3RvID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMp
OworICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybjsKKyAg
ICBpZiAobmV4dFByb3RvLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwotICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBhc09iamVjdChvYmplY3Qt
PnByb3RvdHlwZSgpKTsKKyAgICBKU09iamVjdCogcHJvdG90eXBlID0gYXNPYmplY3QobmV4dFBy
b3RvKTsKICAgICB3aGlsZSgxKSB7CiAgICAgICAgIGlmIChwcm90b3R5cGUtPnN0cnVjdHVyZSh2
bSktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKSB7CiAgICAgICAgICAg
ICBwcm90b3R5cGUtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhwcm90b3R5cGUs
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgcHJvdG90eXBlLT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFt
ZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKLSAgICAgICAgaWYgKFVO
TElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4
Y2VwdGlvbigpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbmV4dFByb3RvID0gcHJv
dG90eXBlLT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAgICAgICBpZiAoVU5MSUtFTFkodm0u
ZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBKU1ZhbHVlIG5leHRQ
cm90byA9IHByb3RvdHlwZS0+cHJvdG90eXBlKCk7CiAgICAgICAgIGlmIChuZXh0UHJvdG8uaXNO
dWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgcHJvdG90eXBlID0gYXNPYmplY3Qo
bmV4dFByb3RvKTsKQEAgLTIwMjcsNyArMjA1MCw3IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRU
b0ludGVyY2VwdFB1dEJ5SW4KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3VycmVudC0+cHJvdG90
eXBlKCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjdXJyZW50LT5nZXRQcm90
b3R5cGVEaXJlY3QoKTsKICAgICAgICAgaWYgKHByb3RvdHlwZVZhbHVlLmlzTnVsbCgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKQEAgLTIwMzcsNyArMjA2MCw3IEBAIGJv
b2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW4KIAogYm9vbCBKU09iamVjdDo6
YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Ci0gICAgSlNWYWx1ZSBw
cm90b3R5cGVWYWx1ZSA9IHByb3RvdHlwZSgpOworICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUg
PSBnZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICBpZiAocHJvdG90eXBlVmFsdWUuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTMwMjksMTMgKzMwNTIsMTYgQEAgdm9p
ZCBKU09iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSgogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUobW9kZSwgSlNP
YmplY3RQcm9wZXJ0aWVzTW9kZTo6RXhjbHVkZSkpOwotICAgIGlmIChVTkxJS0VMWShleGVjLT5o
YWRFeGNlcHRpb24oKSkpCisgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKG9iamVjdC0+cHJvdG90eXBlKCkuaXNOdWxsKCkpCisgICAg
SlNWYWx1ZSBuZXh0UHJvdG8gPSBvYmplY3QtPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CisgICAg
aWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChu
ZXh0UHJvdG8uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUgPSBhc09iamVjdChvYmplY3QtPnByb3RvdHlwZSgpKTsKKyAgICBKU09iamVjdCogcHJv
dG90eXBlID0gYXNPYmplY3QobmV4dFByb3RvKTsKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAg
ICBpZiAocHJvdG90eXBlLT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXMoKSkgewogICAgICAgICAgICAgcHJvdG90eXBlLT5tZXRob2RUYWJsZSh2bSkt
PmdldFByb3BlcnR5TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsK
QEAgLTMwNDQsNyArMzA3MCw5IEBAIHZvaWQgSlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5h
bWVzKEoKICAgICAgICAgcHJvdG90eXBlLT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5
TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKICAgICAgICAgaWYg
KFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgSlNWYWx1ZSBuZXh0UHJvdG8gPSBwcm90b3R5cGUtPnByb3RvdHlwZSgpOworICAgICAg
ICBuZXh0UHJvdG8gPSBwcm90b3R5cGUtPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CisgICAgICAg
IGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCisgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGlmIChuZXh0UHJvdG8uaXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
cHJvdG90eXBlID0gYXNPYmplY3QobmV4dFByb3RvKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTk3NjQyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEw
MywxOSBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBjbGFz
c05hbWUoY29uc3QgSlNPYmplY3QqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3Ry
aW5nIGNhbGN1bGF0ZWRDbGFzc05hbWUoSlNPYmplY3QqKTsKIAotICAgIEpTVmFsdWUgcHJvdG90
eXBlKCkgY29uc3Q7CisgICAgLy8gVGhpcyBpcyB0aGUgZnVsbHkgdmlydHVhbCBbW0dldFByb3Rv
dHlwZU9mXV0gaW50ZXJuYWwgZnVuY3Rpb24gZGVmaW5lZAorICAgIC8vIGluIHRoZSBFQ01BU2Ny
aXB0IDYgc3BlY2lmaWNhdGlvbi4gVXNlIHRoaXMgd2hlbiBkb2luZyBhIFtbR2V0UHJvdG90eXBl
T2ZdXSAKKyAgICAvLyBvcGVyYXRpb24gYXMgZGljdGF0ZWQgaW4gdGhlIHNwZWNpZmljYXRpb24u
CisgICAgSlNWYWx1ZSBnZXRQcm90b3R5cGUoVk0mLCBFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSBnZXRQcm90b3R5cGUoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqKTsKKyAgICAvLyBUaGlzIGdldHMgdGhlIHByb3RvdHlwZSBkaXJlY3RseSBvZmYgb2YgdGhl
IHN0cnVjdHVyZS4gVGhpcyBkb2VzIG5vdCBkbworICAgIC8vIGR5bmFtaWMgZGlzcGF0Y2ggb24g
dGhlIGdldFByb3RvdHlwZSBtZXRob2QgdGFibGUgbWV0aG9kLiBJdCBpcyBub3QgdmFsaWQgCisg
ICAgLy8gdG8gdXNlIHRoaXMgd2hlbiBwZXJmb3JtaW5nIGEgW1tHZXRQcm90b3R5cGVPZl1dIG9w
ZXJhdGlvbiBpbiB0aGUgc3BlY2lmaWNhdGlvbi4KKyAgICAvLyBJdCBpcyB2YWxpZCB0byB1c2Ug
dGhvdWdoIHdoZW4geW91IGtub3cgdGhhdCB5b3Ugd2FudCB0byBkaXJlY3RseSBnZXQgaXQKKyAg
ICAvLyB3aXRob3V0IGNvbnN1bHRpbmcgdGhlIG1ldGhvZCB0YWJsZS4gVGhpcyBpcyBha2luIHRv
IGdldHRpbmcgdGhlIFtbUHJvdG90eXBlXV0KKyAgICAvLyBpbnRlcm5hbCBmaWVsZCBkaXJlY3Rs
eSBhcyBkZXNjcmliZWQgaW4gdGhlIHNwZWNpZmljYXRpb24uCisgICAgSlNWYWx1ZSBnZXRQcm90
b3R5cGVEaXJlY3QoKSBjb25zdDsKKwogICAgIC8vIFRoaXMgc2V0cyB0aGUgcHJvdG90eXBlIHdp
dGhvdXQgY2hlY2tpbmcgZm9yIGN5Y2xlcyBhbmQgd2l0aG91dAogICAgIC8vIGRvaW5nIGR5bmFt
aWMgZGlzcGF0Y2ggb24gW1tTZXRQcm90b3R5cGVPZl1dIG9wZXJhdGlvbiBpbiB0aGUgc3BlY2lm
aWNhdGlvbi4KICAgICAvLyBJdCBpcyBub3QgdmFsaWQgdG8gdXNlIHRoaXMgd2hlbiBwZXJmb3Jt
aW5nIGEgW1tTZXRQcm90b3R5cGVPZl1dIG9wZXJhdGlvbiBpbgpAQCAtNzU5LDcgKzc3MSw3IEBA
IHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAg
ICAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotICAgICAgICBBU1NFUlQocHJvdG90eXBl
KCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFwKHByb3RvdHlwZSgp
KSk7CisgICAgICAgIEFTU0VSVChnZXRQcm90b3R5cGVEaXJlY3QoKS5pc051bGwoKSB8fCBIZWFw
OjpoZWFwKHRoaXMpID09IEhlYXA6OmhlYXAoZ2V0UHJvdG90eXBlRGlyZWN0KCkpKTsKICAgICAg
ICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5pc09iamVjdCgpKTsKICAgICAgICAgQVNTRVJUKGNsYXNz
SW5mbygpKTsKICAgICB9CkBAIC0xMTI0LDExICsxMTM2LDIwIEBAIGlubGluZSBKU09iamVjdDo6
SlNPYmplY3QoVk0mIHZtLCBTdHJ1Y3QKICAgICB2bS5oZWFwLmFzY3JpYmVPd25lcih0aGlzLCBi
dXR0ZXJmbHkpOwogfQogCi1pbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6cHJvdG90eXBlKCkgY29u
c3QKK2lubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRQcm90b3R5cGVEaXJlY3QoKSBjb25zdAog
ewogICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlKCk7CiB9CiAKK2lubGlu
ZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRQcm90b3R5cGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgYXV0byBnZXRQcm90b3R5cGVNZXRob2QgPSBtZXRob2RUYWJsZSh2bSktPmdldFBy
b3RvdHlwZTsKKyAgICBNZXRob2RUYWJsZTo6R2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgZGVmYXVs
dEdldFByb3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90b3R5cGU7CisgICAgaWYgKExJS0VMWShn
ZXRQcm90b3R5cGVNZXRob2QgPT0gZGVmYXVsdEdldFByb3RvdHlwZSkpCisgICAgICAgIHJldHVy
biBnZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICByZXR1cm4gZ2V0UHJvdG90eXBlTWV0aG9kKHRo
aXMsIGV4ZWMpOworfQorCiAvLyBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBtZXRob2Qgd2l0aCBh
IFByb3BlcnR5TmFtZSB0aGF0IGlzIGFjdHVhbGx5IGFuIGluZGV4LAogLy8gYnV0IGlmIHNvIHdp
bGwgYWx3YXlzIHJldHVybiBmYWxzZSAoZG9lc24ndCBzZWFyY2ggaW5kZXggc3RvcmFnZSkuCiBB
TFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KFZN
JiB2bSwgU3RydWN0dXJlJiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKQEAgLTEyMDQsNiArMTIyNSw3IEBAIEFMV0FZU19JTkxJTkUgYm9v
bCBKU09iamVjdDo6Z2V0UHJvcGVydHkKICAgICAgICAgICAgIC8vIHBhcnNpbmcgdGhlIGludCBh
Z2Fpbi4KICAgICAgICAgICAgIHJldHVybiBvYmplY3QtPmdldE5vbkluZGV4UHJvcGVydHlTbG90
KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKG9i
amVjdC0+dHlwZSgpICE9IFByb3h5T2JqZWN0VHlwZSk7CiAgICAgICAgIFN0cnVjdHVyZSYgc3Ry
dWN0dXJlID0gKnN0cnVjdHVyZUlEVGFibGUuZ2V0KG9iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAg
ICAgICAgIGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KHZtLCBzdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEy
MjMsMTEgKzEyNDUsMjEgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0
eQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byYgc3RydWN0dXJlSURUYWJsZSA9
IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlz
OworICAgIE1ldGhvZFRhYmxlOjpHZXRQcm90b3R5cGVGdW5jdGlvblB0ciBkZWZhdWx0R2V0UHJv
dG90eXBlID0gSlNPYmplY3Q6OmdldFByb3RvdHlwZTsKICAgICB3aGlsZSAodHJ1ZSkgewogICAg
ICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpzdHJ1Y3R1cmVJRFRhYmxlLmdldChvYmplY3Qt
PnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBpZiAoc3RydWN0dXJlLmNsYXNzSW5mbygpLT5tZXRo
b2RUYWJsZS5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBKU1ZhbHVlIHBy
b3RvdHlwZSA9IHN0cnVjdHVyZS5zdG9yZWRQcm90b3R5cGUoKTsKKyAgICAgICAgaWYgKFVOTElL
RUxZKHZtLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
SlNWYWx1ZSBwcm90b3R5cGU7CisgICAgICAgIGlmIChMSUtFTFkoc3RydWN0dXJlLmNsYXNzSW5m
bygpLT5tZXRob2RUYWJsZS5nZXRQcm90b3R5cGUgPT0gZGVmYXVsdEdldFByb3RvdHlwZSB8fCBz
bG90LmludGVybmFsTWV0aG9kVHlwZSgpID09IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkpKQorICAgICAgICAgICAgcHJvdG90eXBlID0gc3RydWN0dXJlLnN0b3Jl
ZFByb3RvdHlwZSgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHByb3RvdHlwZSA9IG9i
amVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKKyAgICAgICAgICAgIGlmICh2bS5leGNlcHRp
b24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICAgICAg
aWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgb2JqZWN0ID0gYXNPYmplY3QocHJvdG90eXBlKTsKQEAgLTEyNDIsMTQgKzEyNzQsMjYg
QEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXROb25JbmRleAogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgYXV0byYgc3RydWN0dXJlSURUYWJsZSA9IHZtLmhlYXAuc3RydWN0
dXJlSURUYWJsZSgpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzOworICAgIE1ldGhvZFRh
YmxlOjpHZXRQcm90b3R5cGVGdW5jdGlvblB0ciBkZWZhdWx0R2V0UHJvdG90eXBlID0gSlNPYmpl
Y3Q6OmdldFByb3RvdHlwZTsKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBTdHJ1Y3R1cmUm
IHN0cnVjdHVyZSA9ICpzdHJ1Y3R1cmVJRFRhYmxlLmdldChvYmplY3QtPnN0cnVjdHVyZUlEKCkp
OwogICAgICAgICBpZiAoTElLRUxZKCFUeXBlSW5mbzo6b3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90KG9iamVjdC0+aW5saW5lVHlwZUZsYWdzKCkpKSkgewogICAgICAgICAgICAgaWYgKG9iamVj
dC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCBzbG90KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlm
IChzdHJ1Y3R1cmUuY2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdldE93blByb3BlcnR5U2xvdChv
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBzdHJ1Y3R1cmUuc3RvcmVkUHJvdG90eXBl
KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoc3RydWN0dXJlLmNsYXNzSW5m
bygpLT5tZXRob2RUYWJsZS5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
aWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGU7CisgICAgICAgIGlmIChM
SUtFTFkoc3RydWN0dXJlLmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5nZXRQcm90b3R5cGUgPT0g
ZGVmYXVsdEdldFByb3RvdHlwZSB8fCBzbG90LmludGVybmFsTWV0aG9kVHlwZSgpID09IFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpKQorICAgICAgICAgICAgcHJv
dG90eXBlID0gc3RydWN0dXJlLnN0b3JlZFByb3RvdHlwZSgpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIHByb3RvdHlwZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKKyAg
ICAgICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KICAgICAgICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgb2JqZWN0ID0gYXNPYmplY3QocHJvdG90eXBl
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5s
aW5lcy5oCShyZXZpc2lvbiAxOTc2NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmNhblBlcmZvcm1GCiAgICAgICAgIGlmIChvYmotPnN0
cnVjdHVyZSh2bSktPmhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5n
UHJvdG8oKSB8fCBvYmotPnR5cGUoKSA9PSBQcm94eU9iamVjdFR5cGUpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKKyAg
ICAgICAgcHJvdG90eXBlID0gb2JqLT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICAgICAgaWYg
KHByb3RvdHlwZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAkocmV2aXNpb24gMTk3NjQy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBKU1Byb3h5OjpzZXRUYXJnZXQoVk0mIHZtLCBK
U0dsb2JhbAogewogICAgIEFTU0VSVF9BUkcoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QpOwog
ICAgIG1fdGFyZ2V0LnNldCh2bSwgdGhpcywgZ2xvYmFsT2JqZWN0KTsKLSAgICBzZXRQcm90b3R5
cGVEaXJlY3Qodm0sIGdsb2JhbE9iamVjdC0+cHJvdG90eXBlKCkpOworICAgIHNldFByb3RvdHlw
ZURpcmVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKSk7CiAKICAgICBQ
cm90b3R5cGVNYXAmIHByb3RvdHlwZU1hcCA9IHZtLnByb3RvdHlwZU1hcDsKICAgICBpZiAoIXBy
b3RvdHlwZU1hcC5pc1Byb3RvdHlwZSh0aGlzKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
LmNwcAkocmV2aXNpb24gMTk3NjQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyAr
NzcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zCiAgICAgaWYg
KG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShvYmplY3QsIGRhdGEpID09
IENvbnN0cnVjdFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgIm5ldy50YXJnZXQgcGFzc2VkIHRvIFR5cGVkQXJyYXkgaXMgbm90
IGEgdmFsaWQgY29uc3RydWN0b3IuIikpOwogCi0gICAgZm9yICg7ICF2YWx1ZS5pc051bGwoKTsg
dmFsdWUgPSBqc0Nhc3Q8SlNPYmplY3QqPih2YWx1ZSktPnByb3RvdHlwZSgpKSB7CisgICAgZm9y
ICg7ICF2YWx1ZS5pc051bGwoKTsgdmFsdWUgPSBqc0Nhc3Q8SlNPYmplY3QqPih2YWx1ZSktPmdl
dFByb3RvdHlwZURpcmVjdCgpKSB7CiAgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvcio+KHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBmaW5kIFR5cGVkQXJyYXkg
Y29uc3RydWN0b3IgdGhhdCBpbmhlcml0cyBmcm9tIFR5cGVkQXJyYXkuIikpOwogICAgICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTSW50
OEFycmF5Pio+KHZhbHVlKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE5NzY0MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTUwLDggKzE1MCw5IEBAIENhbGxUeXBlIE9iamVjdENvbnN0cnVjdG9yOjpnZXRD
YWxsRGF0YSgKIAogY2xhc3MgT2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZkZ1bmN0b3Ig
ewogcHVibGljOgotICAgIE9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2ZGdW5jdG9yKEpT
T2JqZWN0KiBvYmplY3QpCi0gICAgICAgIDogbV9oYXNTa2lwcGVkRmlyc3RGcmFtZShmYWxzZSkK
KyAgICBPYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mRnVuY3RvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBvYmplY3QpCisgICAgICAgIDogbV9leGVjKGV4ZWMpCisgICAgICAgICwg
bV9oYXNTa2lwcGVkRmlyc3RGcmFtZShmYWxzZSkKICAgICAgICAgLCBtX29iamVjdChvYmplY3Qp
CiAgICAgICAgICwgbV9yZXN1bHQoanNVbmRlZmluZWQoKSkKICAgICB7CkBAIC0xNjcsMTEgKzE2
OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9vYmplY3QtPmFsbG93
c0FjY2Vzc0Zyb20odmlzaXRvci0+Y2FsbEZyYW1lKCkpKQotICAgICAgICAgICAgbV9yZXN1bHQg
PSBtX29iamVjdC0+cHJvdG90eXBlKCk7CisgICAgICAgICAgICBtX3Jlc3VsdCA9IG1fb2JqZWN0
LT5nZXRQcm90b3R5cGUobV9leGVjLT52bSgpLCBtX2V4ZWMpOwogICAgICAgICByZXR1cm4gU3Rh
Y2tWaXNpdG9yOjpEb25lOwogICAgIH0KIAogcHJpdmF0ZToKKyAgICBFeGVjU3RhdGUqIG1fZXhl
YzsKICAgICBib29sIG1faGFzU2tpcHBlZEZpcnN0RnJhbWU7CiAgICAgSlNPYmplY3QqIG1fb2Jq
ZWN0OwogICAgIEpTVmFsdWUgbV9yZXN1bHQ7CkBAIC0xNzksNyArMTgxLDEwIEBAIHByaXZhdGU6
CiAKIEpTVmFsdWUgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgT2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5
cGVPZkZ1bmN0b3IgZnVuY3RvcihvYmplY3QpOworICAgIE9iamVjdENvbnN0cnVjdG9yR2V0UHJv
dG90eXBlT2ZGdW5jdG9yIGZ1bmN0b3IoZXhlYywgb2JqZWN0KTsKKyAgICAvLyBUaGlzIGNhbiB0
aHJvdyBidXQgaXQncyBqdXN0IHVubmVlZGVkIGV4dHJhIHdvcmsgdG8gY2hlY2sgZm9yIGl0LiBU
aGUgcmV0dXJuCisgICAgLy8gdmFsdWUgZnJvbSB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBh
cyB0aGUgcmV0dXJuIHZhbHVlIGZyb20gYSBob3N0IGNhbGwuCisgICAgLy8gVGhlcmVmb3JlLCB0
aGUgcmV0dXJuIHZhbHVlIGlzIG9ubHkgdXNlZCBpZiB0aGVyZSB3YXNuJ3QgYW4gZXhjZXB0aW9u
LgogICAgIGV4ZWMtPml0ZXJhdGUoZnVuY3Rvcik7CiAgICAgcmV0dXJuIGZ1bmN0b3IucmVzdWx0
KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5NzY0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxNCAr
MTAxLDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICBp
ZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAKLSAgICBKU1ZhbHVlIHYgPSBhc09iamVjdChl
eGVjLT5hcmd1bWVudCgwKSktPnByb3RvdHlwZSgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgSlNWYWx1ZSB2ID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5nZXRQcm90b3R5
cGUodm0sIGV4ZWMpOworICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKIAogICAgIHdoaWxlICh0cnVlKSB7
CiAgICAgICAgIGlmICghdi5pc09iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKICAgICAgICAgaWYgKHYgPT0gdGhpc09iaikKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKTsKLSAgICAg
ICAgdiA9IGFzT2JqZWN0KHYpLT5wcm90b3R5cGUoKTsKKyAgICAgICAgdiA9IGFzT2JqZWN0KHYp
LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAgICAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0
aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwog
ICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
T2JqZWN0LmNwcAkocmV2aXNpb24gMTk3NjQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCwxMSArOTAsMTAgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIHBlcmZvcm1Qcm94eUdldChFeAogICAgIC8vIEZJWE1FOiBt
YWtlIGl0IHNvIHRoYXQgY3VzdG9tIGdldHRlcnMgdGFrZSBib3RoIHRoZSB8dGhpc3wgdmFsdWUg
YW5kIHRoZSBzbG90QmFzZSAocHJvcGVydHkgaG9sZGVyKS4KICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MzIwCiAgICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgaWYgKExJS0VMWShwcm94eU9iamVjdEFzT2JqZWN0LT5pbmhlcml0cyhQcm94eU9iamVj
dDo6aW5mbygpKSkpCisgICAgICAgIGlmIChMSUtFTFkocHJveHlPYmplY3RBc09iamVjdC0+dHlw
ZSgpID09IFByb3h5T2JqZWN0VHlwZSkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBT
dHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICp2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQocHJv
eHlPYmplY3RBc09iamVjdC0+c3RydWN0dXJlSUQoKSk7Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gc3RydWN0dXJlLnN0b3JlZFByb3RvdHlwZSgpOworICAgICAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHByb3h5T2JqZWN0QXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOwogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChwcm90b3R5cGUuaXNPYmplY3QoKSk7CiAgICAgICAgIHByb3h5T2Jq
ZWN0QXNPYmplY3QgPSBhc09iamVjdChwcm90b3R5cGUpOwogICAgIH0KQEAgLTEwMDYsNyArMTAw
NSw5IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUoRXgKICAgICBpZiAo
dGFyZ2V0SXNFeHRlbnNpYmxlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEpTVmFsdWUg
dGFyZ2V0UHJvdG90eXBlID0gdGFyZ2V0LT5wcm90b3R5cGUoKTsKKyAgICBKU1ZhbHVlIHRhcmdl
dFByb3RvdHlwZSA9IHRhcmdldC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKKyAgICBpZiAodm0u
ZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIXNhbWVWYWx1ZShl
eGVjLCBwcm90b3R5cGUsIHRhcmdldFByb3RvdHlwZSkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdzZXRQcm90b3R5cGVPZicgdHJhcCByZXR1
cm5lZCB0cnVlIHdoZW4gaXRzIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSBhbmQgdGhlIG5ldyBw
cm90b3R5cGUgdmFsdWUgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHByb3RvdHlwZSB2
YWx1ZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UuIikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oCShyZXZpc2lvbiAxOTc2NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw3ICsyMTAs
NyBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OmlzVmFsaWQoSlNHbG9iYWxPCiAgICAgICAgIGlm
IChhc09iamVjdChwcm90b3R5cGUpLT5zdHJ1Y3R1cmUoKSAhPSBjYWNoZWRTdHJ1Y3R1cmUtPmdl
dCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICArK2NhY2hlZFN0cnVjdHVy
ZTsKLSAgICAgICAgcHJvdG90eXBlID0gYXNPYmplY3QocHJvdG90eXBlKS0+cHJvdG90eXBlKCk7
CisgICAgICAgIHByb3RvdHlwZSA9IGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3RvdHlwZURp
cmVjdCgpOwogICAgIH0KICAgICByZXR1cm4gcHJvdG90eXBlLmlzTnVsbCgpICYmICEqY2FjaGVk
U3RydWN0dXJlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9w
cm94eS1oYXMtcHJvcGVydHkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9wcm94eS1oYXMtcHJvcGVydHkuanMJKHJldmlzaW9uIDE5NzY0MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHktaGFzLXByb3BlcnR5Lmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsMyArMzY3LDc5IEBAIGZ1bmN0aW9uIGFzc2VydChiKSB7
CiAgICAgICAgIGFzc2VydCh0aHJldyk7CiAgICAgfQogfQorCit7CisgICAgbGV0IGUxID0gbnVs
bDsKKyAgICBsZXQgZTIgPSBudWxsOworICAgIGxldCB0MSA9IHt9OworICAgIGxldCBjYWxsZWQx
ID0gZmFsc2U7CisgICAgbGV0IGgxID0geworICAgICAgICBoYXM6IGZ1bmN0aW9uKHRoZVRhcmdl
dCwgcHJvcE5hbWUpIHsKKyAgICAgICAgICAgIGNhbGxlZDEgPSB0cnVlOworICAgICAgICAgICAg
ZTEgPSBuZXcgRXJyb3I7CisgICAgICAgICAgICB0aHJvdyBlMTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH07CisgICAgbGV0IHAxID0gbmV3IFByb3h5KHQxLCBo
MSk7CisKKyAgICBsZXQgdDIgPSB7fTsKKyAgICB0Mi5fX3Byb3RvX18gPSBwMTsKKyAgICBsZXQg
aDIgPSB7CisgICAgICAgIGhhczogZnVuY3Rpb24odGhlVGFyZ2V0LCBwcm9wTmFtZSkgeworICAg
ICAgICAgICAgZTIgPSBuZXcgRXJyb3I7CisgICAgICAgICAgICB0aHJvdyBlMjsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH07CisgICAgbGV0IHAyID0gbmV3IFBy
b3h5KHQyLCBoMik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgeworICAgICAg
ICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIDEwIGluIHAy
OworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGFzc2VydChlID09PSBlMik7Cisg
ICAgICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRocmV3
KTsKKyAgICAgICAgYXNzZXJ0KCFjYWxsZWQxKTsKKyAgICB9Cit9CisKK3sKKyAgICBsZXQgZTEg
PSBudWxsOworICAgIGxldCBlMiA9IG51bGw7CisgICAgbGV0IHQxID0ge307CisgICAgbGV0IGNh
bGxlZDEgPSBmYWxzZTsKKyAgICBsZXQgaDEgPSB7CisgICAgICAgIGhhczogZnVuY3Rpb24odGhl
VGFyZ2V0LCBwcm9wTmFtZSkgeworICAgICAgICAgICAgY2FsbGVkMSA9IHRydWU7CisgICAgICAg
ICAgICBlMSA9IG5ldyBFcnJvcjsKKyAgICAgICAgICAgIHRocm93IGUxOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfTsKKyAgICBsZXQgcDEgPSBuZXcgUHJveHko
dDEsIGgxKTsKKworICAgIGxldCB0MiA9IHt9OworICAgIHQyLl9fcHJvdG9fXyA9IHAxOworICAg
IGxldCBoMiA9IHsKKyAgICAgICAgaGFzOiBmdW5jdGlvbih0aGVUYXJnZXQsIHByb3BOYW1lKSB7
CisgICAgICAgICAgICBlMiA9IG5ldyBFcnJvcjsKKyAgICAgICAgICAgIHRocm93IGUyOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfTsKKyAgICBsZXQgcDIgPSBu
ZXcgUHJveHkodDIsIGgyKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7Cisg
ICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAgICAgICAgImZv
byIgaW4gcDI7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYXNzZXJ0KGUgPT09
IGUyKTsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBhc3Nl
cnQodGhyZXcpOworICAgICAgICBhc3NlcnQoIWNhbGxlZDEpOworICAgIH0KK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273151</attachid>
            <date>2016-03-06 16:07:33 -0800</date>
            <delta_ts>2016-03-06 16:12:08 -0800</delta_ts>
            <desc>patch for landing v2</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>122870</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NjQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMyBA
QAorMjAxNi0wMy0wNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbW0dldFByb3RvdHlwZU9mXV0gc2hvdWxkIGJlIGEgZnVsbHkgdmlydHVhbCBtZXRob2QgaW4g
dGhlIG1ldGhvZCB0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU1MDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBtYWtlcyB1cyBtb3JlIGNvbnNpc3RlbnQgd2l0aCBob3cgdGhlIEVT
NiBzcGVjaWZpY2F0aW9uIG1vZGVscyB0aGUKKyAgICAgICAgW1tHZXRQcm90b3R5cGVPZl1dIHRy
YXAuIE1vdmluZyB0aGlzIG1ldGhvZCBpbnRvIENsYXNzSW5mbzo6bWV0aG9kVGFibGUgCisgICAg
ICAgIGlzIGEgcHJlcmVxdWlzaXRlIGZvciBpbXBsZW1lbnRpbmcgUHJveHkuW1tHZXRQcm90b3R5
cGVPZl1dLiBUaGlzIHBhdGNoCisgICAgICAgIHN0aWxsIGFsbG93cyBkaXJlY3RseSBhY2Nlc3Np
bmcgdGhlIHByb3RvdHlwZSBmb3Igc2l0dWF0aW9ucyB3aGVyZSB0aGlzCisgICAgICAgIGlzIHRo
ZSBkZXNpcmVkIGJlaGF2aW9yLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gZ2V0dGluZyB0aGUgaW50
ZXJuYWwKKyAgICAgICAgW1tQcm90b3R5cGVdXSBmaWVsZCBhcyBkZXNjcmliZWQgaW4gdGhlIHNw
ZWNpZmljYXRpb24uIAorCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAg
KEpTT2JqZWN0R2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvdG90eXBlKToK
KyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxh
Z3MpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKToKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0
YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKToKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNl
b2YpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChmdW5jdGlvbkNyZWF0
ZVByb3h5KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChK
U0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzcGVjaWVz
Q29uc3RydWN0QXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
UHJvdG9GdW5jQmluZCk6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKToK
KyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAgICogcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpoYXNJbnN0YW5jZUJvdW5k
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpnZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzZXRQcm90b3R5cGUpOgorICAgICAg
ICAoSlNDOjpKU0NlbGw6OmdldFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aGFz
TGVnYWN5UHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpsYXN0SW5Qcm90b3R5cGVDaGFpbik6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvYmplY3RQcm90b3R5cGVJc1NhbmUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5cGVDaGFpbklzU2FuZSk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzdHJpbmdQcm90b3R5cGVDaGFpbklzU2FuZSk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpHbG9iYWxGdW5jUHJvdG9HZXR0ZXJG
dW5jdG9yOjpHbG9iYWxGdW5jUHJvdG9HZXR0ZXJGdW5jdG9yKToKKyAgICAgICAgKEpTQzo6R2xv
YmFsRnVuY1Byb3RvR2V0dGVyRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6Omds
b2JhbEZ1bmNQcm90b0dldHRlcik6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9u
bWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXRJbmxpbmVTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZVdp
dGhDeWNsZUNoZWNrKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJpdmF0ZUZ1
bmNJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9u
SG9sZUZvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjphdHRlbXB0VG9JbnRl
cmNlcHRQdXRCeUluZGV4T25Ib2xlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEdlbmVy
aWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpKU09iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm90b3R5cGVEaXJlY3Qp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldFByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25J
bmRleFByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpwcm90b3R5cGUpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3h5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6c2V0VGFyZ2V0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdFR5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5
cGVPZkZ1bmN0b3I6Ok9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2ZGdW5jdG9yKToKKyAg
ICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZkZ1bmN0b3I6Om9wZXJh
dG9yKCkpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKToK
KyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om9i
amVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlHZXQpOgorICAgICAgICAoSlNDOjpQ
cm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aXNWYWxpZCk6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL3Byb3h5LWhhcy1wcm9wZXJ0eS5qczoKKyAgICAgICAgKGFzc2Vy
dC5sZXQuaDEuaGFzKToKKyAgICAgICAgKGFzc2VydC5sZXQuaDIuaGFzKToKKyAgICAgICAgKGFz
c2VydCk6CisKIDIwMTYtMDMtMDYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTc2NDUuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMjgsNyArMTIyOCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmUKICAgICBpZiAoIXRhcmdldC5pc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IEpTT2JqZWN0KiBqc1RhcmdldCA9IGFzT2JqZWN0KHRhcmdldC5hc0NlbGwoKSk7Ci0gICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc1RhcmdldC0+cHJvdG90eXBlKCkpOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZt
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNUYXJnZXQtPmdldFByb3RvdHlwZURp
cmVjdCgpKTsKICAgICBKU1Byb3h5KiBwcm94eSA9IEpTUHJveHk6OmNyZWF0ZShleGVjLT52bSgp
LCBzdHJ1Y3R1cmUsIGpzVGFyZ2V0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb3h5
KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCShy
ZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDggKzI2Nyw4IEBAIEpTVmFsdWVSZWYgSlNPYmpl
Y3RHZXRQcm90b3R5cGUoSlNDb250ZXgKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKIAotICAgIEpTT2JqZWN0KiBqc09iamVj
dCA9IHRvSlMob2JqZWN0KTsKLSAgICByZXR1cm4gdG9SZWYoZXhlYywganNPYmplY3QtPnByb3Rv
dHlwZSgpKTsKKyAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7IAorICAgIHJl
dHVybiB0b1JlZihleGVjLCBqc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkpOwogfQogCiB2
b2lkIEpTT2JqZWN0U2V0UHJvdG90eXBlKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgSlNWYWx1ZVJlZiB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5Miw2ICsx
MzkyLDE1IEBAIGludDY0X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0RG8KICAgICBy
ZXR1cm4gdHJ5Q29udmVydFRvSW50NTIodmFsdWUpOwogfQogCitzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIHZh
bHVlLCBKU0NlbGwqIHByb3RvKSAvLyBSZXR1cm5zIGpzQm9vbGVhbihUcnVlfEZhbHNlKSBvbiA2
NC1iaXQuCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgaWYgKEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5z
dGFuY2UoZXhlYywgdmFsdWUsIHByb3RvKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJu
IDA7Cit9CisKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVy
TG9nREZHKEV4ZWNTdGF0ZSogZXhlYykgCiB7CiAgICAgZXhlYy0+dm0oKS50eXBlUHJvZmlsZXJM
b2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJMb2cgRnVsbCwgY2FsbGVkIGZy
b20gaW5zaWRlIERGRy4iKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUsOCBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTG9hZFZhcmFyZ3MoCiBpbnQ2NF90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ29udmVydEJveGVkRG91YmxlVG9JbnQ1MihFbmNvZGVkSlNWYWx1ZSk7CiBp
bnQ2NF90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29udmVydERvdWJsZVRvSW50NTIoZG91Ymxl
KTsKIAorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmYXVsdEhhc0luc3RhbmNlKEV4
ZWNTdGF0ZSosIEpTQ2VsbCogdmFsdWUsIEpTQ2VsbCogcHJvdG8pOworCiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RGRyhFeGVjU3RhdGUqKSBXVEZf
SU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBkZWJ1Z09wZXJhdGlvblByaW50U3BlY3Vs
YXRpb25GYWlsdXJlKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKikgV1RGX0lOVEVSTkFMOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQwLDYgKzI3NDAsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvCiAgICAgCiAgICAgLy8gV2FsayB1cCB0
aGUgcHJvdG90eXBlIGNoYWluIG9mIHRoZSB2YWx1ZSAoaW4gc2NyYXRjaFJlZyksIGNvbXBhcmlu
ZyB0byBwcm90b3R5cGVSZWcuCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AoJm1faml0
KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBwZXJmb3JtRGVmYXVsdEhhc0luc3RhbmNlID0g
bV9qaXQuYnJhbmNoOChNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoUHJveHlPYmplY3RUeXBlKSk7CiAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1
cmUoc2NyYXRjaFJlZywgc2NyYXRjaFJlZywgc2NyYXRjaDJSZWcpOwogICAgIG1faml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgU3RydWN0dXJlOjpwcm90b3R5
cGVPZmZzZXQoKSArIENlbGxQYXlsb2FkT2Zmc2V0KSwgc2NyYXRjaFJlZyk7CiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgaXNJbnN0YW5jZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwsIHNjcmF0Y2hSZWcsIHByb3RvdHlwZVJlZyk7CkBAIC0yNzU1LDcgKzI3NTcsMTgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGbwogI2Vsc2UKICAgICBt
X2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCksIHNjcmF0Y2hSZWcpOwog
I2VuZGlmCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcHV0UmVzdWx0ID0gbV9qaXQuanVtcCgp
OworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBkb25lSnVtcHM7IAorICAgIGRvbmVKdW1w
cy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKworICAgIHBlcmZvcm1EZWZhdWx0SGFzSW5zdGFuY2Uu
bGluaygmbV9qaXQpOworICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2hSZWcpOwor
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmYXVsdEhhc0luc3RhbmNlLCBzY3JhdGNoUmVn
LCB2YWx1ZVJlZywgcHJvdG90eXBlUmVnKTsgCisgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhz
Y3JhdGNoUmVnKTsKKyAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHNjcmF0Y2hSZWcp
OworI2VuZGlmCisgICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgIAogICAg
IGlzSW5zdGFuY2UubGluaygmbV9qaXQpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0yNzY0LDcg
KzI3NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvCiAgICAg
bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEpLCBzY3JhdGNoUmVnKTsK
ICNlbmRpZgogICAgIAotICAgIHB1dFJlc3VsdC5saW5rKCZtX2ppdCk7CisgICAgZG9uZUp1bXBz
LmxpbmsoJm1faml0KTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHlw
ZUluZm9GbGFncyhOb2RlKiBub2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTQ3
LDYgKzU5NDcsOCBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBsb29wID0gRlRMX05F
V19CTE9DSyhtX291dCwgKCJJbnN0YW5jZU9mIGxvb3AiKSk7CiAgICAgICAgIExCYXNpY0Jsb2Nr
IG5vdFlldEluc3RhbmNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJJbnN0YW5jZU9mIG5vdCB5
ZXQgaW5zdGFuY2UiKSk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9O
RVdfQkxPQ0sobV9vdXQsICgiSW5zdGFuY2VPZiBjb250aW51YXRpb24iKSk7CisgICAgICAgIExC
YXNpY0Jsb2NrIGxvYWRQcm90b3R5cGVEaXJlY3QgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIklu
c3RhbmNlb2YgZGVmYXVsdFByb3RvdHlwZUZ1bmN0aW9uIikpOworICAgICAgICBMQmFzaWNCbG9j
ayBkZWZhdWx0SGFzSW5zdGFuY2VTbG93ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJJbnN0YW5j
ZW9mIGRlZmF1bHRQcm90b3R5cGVGdW5jdGlvbiIpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1
ZSBjb25kaXRpb247CiAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKQpAQCAtNTk2NCw4ICs1OTY2LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIG9yaWdpbmFsVmFsdWUgPSBtX291dC5hbmNob3IoY2VsbCk7CiAgICAgICAgIG1f
b3V0Lmp1bXAobG9vcCk7CiAgICAgICAgIAotICAgICAgICBtX291dC5hcHBlbmRUbyhsb29wLCBu
b3RZZXRJbnN0YW5jZSk7CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxvb3AsIGxvYWRQcm90b3R5
cGVEaXJlY3QpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBtX291dC5waGkobV9vdXQuaW50NjQs
IG9yaWdpbmFsVmFsdWUpOworICAgICAgICBMVmFsdWUgdHlwZSA9IG1fb3V0LmxvYWQ4WmVyb0V4
dDMyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb1R5cGUpOworICAgICAgICBtX291dC5i
cmFuY2goCisgICAgICAgICAgICBtX291dC5ub3RFcXVhbCh0eXBlLCBtX291dC5jb25zdEludDMy
KFByb3h5T2JqZWN0VHlwZSkpLAorICAgICAgICAgICAgdXN1YWxseShsb2FkUHJvdG90eXBlRGly
ZWN0KSwgcmFyZWx5KGRlZmF1bHRIYXNJbnN0YW5jZVNsb3cpKTsKKworICAgICAgICBtX291dC5h
cHBlbmRUbyhsb2FkUHJvdG90eXBlRGlyZWN0LCBub3RZZXRJbnN0YW5jZSk7CiAgICAgICAgIExW
YWx1ZSBzdHJ1Y3R1cmUgPSBsb2FkU3RydWN0dXJlKHZhbHVlKTsKICAgICAgICAgTFZhbHVlIGN1
cnJlbnRQcm90b3R5cGUgPSBtX291dC5sb2FkNjQoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVy
ZV9wcm90b3R5cGUpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBpc0luc3RhbmNlUmVzdWx0ID0g
bV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKQEAgLTU5NzMsMTQgKzU5ODEsMjIgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmVxdWFsKGN1cnJlbnRQcm90b3R5cGUsIHByb3Rv
dHlwZSksCiAgICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdFlldElu
c3RhbmNlKSk7CiAgICAgICAgIAotICAgICAgICBtX291dC5hcHBlbmRUbyhub3RZZXRJbnN0YW5j
ZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90WWV0SW5zdGFuY2Us
IGRlZmF1bHRIYXNJbnN0YW5jZVNsb3cpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBub3RJbnN0
YW5jZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOwogICAgICAgICBt
X291dC5hZGRJbmNvbWluZ1RvUGhpKHZhbHVlLCBtX291dC5hbmNob3IoY3VycmVudFByb3RvdHlw
ZSkpOwogICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGN1cnJlbnRQcm90b3R5cGUpLCB1bnN1
cmUobG9vcCksIHVuc3VyZShjb250aW51YXRpb24pKTsKKworICAgICAgICBtX291dC5hcHBlbmRU
byhkZWZhdWx0SGFzSW5zdGFuY2VTbG93LCBjb250aW51YXRpb24pOworICAgICAgICAvLyBXZSBj
YW4gdXNlIHRoZSB2YWx1ZSB0aGF0IHdlJ3JlIGxvb3Bpbmcgd2l0aCBiZWNhdXNlIHdlCisgICAg
ICAgIC8vIGNhbiBqdXN0IGNvbnRpbnVlIG9mZiBmcm9tIHdoZXJldmVyIHdlIGJhaWxlZCBmcm9t
IHRoZQorICAgICAgICAvLyBsb29wLgorICAgICAgICBWYWx1ZUZyb21CbG9jayBkZWZhdWx0SGFz
SW5zdGFuY2VSZXN1bHQgPSBtX291dC5hbmNob3IoCisgICAgICAgICAgICB2bUNhbGwobV9vdXQu
Ym9vbGVhbiwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlZmF1bHRIYXNJbnN0YW5jZSksIG1f
Y2FsbEZyYW1lLCB2YWx1ZSwgcHJvdG90eXBlKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOwogICAgICAgICBzZXRCb29sZWFuKAotICAgICAgICAgICAgbV9vdXQucGhpKG1f
b3V0LmJvb2xlYW4sIG5vdENlbGxSZXN1bHQsIGlzSW5zdGFuY2VSZXN1bHQsIG5vdEluc3RhbmNl
UmVzdWx0KSk7CisgICAgICAgICAgICBtX291dC5waGkobV9vdXQuYm9vbGVhbiwgbm90Q2VsbFJl
c3VsdCwgaXNJbnN0YW5jZVJlc3VsdCwgbm90SW5zdGFuY2VSZXN1bHQsIGRlZmF1bHRIYXNJbnN0
YW5jZVJlc3VsdCkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZDdXN0b20o
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNiArMjMzLDggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbgogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEp
LCByZWdUMCk7CiAgICAgTGFiZWwgbG9vcCh0aGlzKTsKIAorICAgIGFkZFNsb3dDYXNlKGJyYW5j
aDgoRXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoUHJveHlPYmplY3RUeXBlKSkpOworCiAgICAgLy8gTG9hZCB0aGUgcHJvdG90
eXBlIG9mIHRoZSBjZWxsIGluIHJlZ1QyLiAgSWYgdGhpcyBpcyBlcXVhbCB0byByZWdUMSAtIFdJ
TiEKICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBudWxsIC0gaWYgd2UgaGF2
ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3QgZ28gYWdhaW4uCiAgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7CkBA
IC0yNjMsNiArMjY1LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoSW5zdHJ1
YwogICAgIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIHZhbHVlKTsKICAgICBsaW5rU2xv
d0Nhc2VJZk5vdEpTQ2VsbChpdGVyLCBwcm90byk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwor
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMSwgcmVn
VDApOwogICAgIGVtaXRMb2FkKHByb3RvLCByZWdUMywgcmVnVDIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTMsNiArMTUzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbgog
ICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwg
cmVnVDApOwogICAgIExhYmVsIGxvb3AodGhpcyk7CiAKKyAgICBhZGRTbG93Q2FzZShicmFuY2g4
KEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKFByb3h5T2JqZWN0VHlwZSkpKTsKKwogICAgIC8vIExvYWQgdGhlIHByb3RvdHlw
ZSBvZiB0aGUgb2JqZWN0IGluIHJlZ1QyLiAgSWYgdGhpcyBpcyBlcXVhbCB0byByZWdUMSAtIFdJ
TiEKICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBudWxsIC0gaWYgd2UgaGF2
ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3QgZ28gYWdhaW4uCiAgICAgZW1pdExv
YWRTdHJ1Y3R1cmUocmVnVDIsIHJlZ1QyLCByZWdUMyk7CkBAIC04NTcsNiArODU5LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoSW5zdHJ1YwogICAgIGxpbmtTbG93Q2FzZUlm
Tm90SlNDZWxsKGl0ZXIsIHZhbHVlKTsKICAgICBsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChpdGVy
LCBwcm90byk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcihwcm90bywgcmVnVDEpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uSW5zdGFuY2VPZiwgZHN0LCByZWdUMCwgcmVnVDEpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzc5LDggKzE3NzksNiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkluCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIEpTVmFsdWUgcHJvdG8gPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3RvKTsKICAgICAK
LSAgICBBU1NFUlQoIXZhbHVlLmlzT2JqZWN0KCkgfHwgIXByb3RvLmlzT2JqZWN0KCkpOwotCiAg
ICAgYm9vbCByZXN1bHQgPSBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGV4ZWMsIHZhbHVl
LCBwcm90byk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2
aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYsNyBAQCB0eXBlZGVmIGludDY0X3QgSklU
X09QRVJBVElPTigqUV9KSVRPcGVyCiB0eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAoKlpf
SklUT3BlcmF0aW9uX0QpKGRvdWJsZSk7CiB0eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAo
KlpfSklUT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwogdHlwZWRlZiBpbnQzMl90IEpJVF9PUEVS
QVRJT04gKCpaX0pJVE9wZXJhdGlvbl9FQykoRXhlY1N0YXRlKiwgSlNDZWxsKik7Cit0eXBlZGVm
IGludDMyX3QgSklUX09QRVJBVElPTiAoKlpfSklUT3BlcmF0aW9uX0VDQykoRXhlY1N0YXRlKiwg
SlNDZWxsKiwgSlNDZWxsKik7CiB0eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAoKlpfSklU
T3BlcmF0aW9uX0VHQykoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqKTsKIHR5
cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRPcGVyYXRpb25fRVNKc3MpKEV4ZWNT
dGF0ZSosIHNpemVfdCwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9O
ICgqWl9KSVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2
aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI2LDcgKzUyNiw2IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9pbnN0YW5jZW8KICAgICBMTElOVF9CRUdJTigpOwogICAgIEpTVmFs
dWUgdmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHByb3RvID0g
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7Ci0gICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpIHx8
ICFwcm90by5pc09iamVjdCgpKTsKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTT2JqZWN0
OjpkZWZhdWx0SGFzSW5zdGFuY2UoZXhlYywgdmFsdWUsIHByb3RvKSkpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEy
MDYsMzQgKzEyMDYsNiBAQCBfbGxpbnRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZToKICAgICBz
dG9yZWkgMSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQogICAgIGRpc3BhdGNoKDQpCiAKLV9s
bGludF9vcF9pbnN0YW5jZW9mOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICAjIEFjdHVhbGx5
IGRvIHRoZSB3b3JrLgotICAgIGxvYWRpIDEyW1BDXSwgdDAKLSAgICBsb2FkaSA0W1BDXSwgdDMK
LSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcElu
c3RhbmNlb2ZTbG93KQotICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5v
cEluc3RhbmNlb2ZTbG93Ci0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BJbnN0YW5jZW9mU2xvdykKLSAgICAK
LSAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQotICAgIG1v
dmUgMSwgdDAKLS5vcEluc3RhbmNlb2ZMb29wOgotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0Ml0sIHQyCi0gICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRP
ZmZzZXRbdDJdLCB0MgotICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQotICAgIGJ0
aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcAotCi0gICAgbW92ZSAwLCB0MAotLm9wSW5zdGFuY2Vv
ZkRvbmU6Ci0gICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQotICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKDQpCi0K
LS5vcEluc3RhbmNlb2ZTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2lu
c3RhbmNlb2YpCi0gICAgZGlzcGF0Y2goNCkKLQogX2xsaW50X29wX2luc3RhbmNlb2ZfY3VzdG9t
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9pbnN0YW5jZW9mX2N1c3RvbSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxOTc2NDYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQko
d29ya2luZyBjb3B5KQpAQCAtMTA5MywzNCArMTA5Myw2IEBAIF9sbGludF9vcF9vdmVycmlkZXNf
aGFzX2luc3RhbmNlOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX2luc3RhbmNlb2Y6
Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCi0gICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQwKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVD
ZWxsKHQwLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCi0gICAgYmJiIEpTQ2VsbDo6bV90eXBlW3Qx
XSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rp
b24oMiwgdDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQyLCAub3BJbnN0
YW5jZW9mU2xvdykKLSAgICAKLSAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9IHByb3RvdHlwZSwg
dDIgPSB2YWx1ZQotICAgIG1vdmUgMSwgdDAKLS5vcEluc3RhbmNlb2ZMb29wOgotICAgIGxvYWRT
dHJ1Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmcodDIsIHQzKQotICAgIGxvYWRxIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGVbdDNdLCB0MgotICAgIGJxZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQot
ICAgIGJ0cXogdDIsIHRhZ01hc2ssIC5vcEluc3RhbmNlb2ZMb29wCi0KLSAgICBtb3ZlIDAsIHQw
Ci0ub3BJbnN0YW5jZW9mRG9uZToKLSAgICBvcnEgVmFsdWVGYWxzZSwgdDAKLSAgICBsb2FkaXNG
cm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCi0gICAgc3RvcmVxIHQwLCBbY2ZyLCB0MywgOF0KLSAgICBk
aXNwYXRjaCg0KQotCi0ub3BJbnN0YW5jZW9mU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9pbnN0YW5jZW9mKQotICAgIGRpc3BhdGNoKDQpCi0KIF9sbGludF9vcF9pbnN0
YW5jZW9mX2N1c3RvbToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfaW5zdGFuY2VvZl9jdXN0b20pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAx
OTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE3MDYsNiArMTcwNiwxMSBAQCBfbGxpbnRfb3BfY29w
eV9yZXN0OgogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NvcHlfcmVzdCkKICAgICBkaXNw
YXRjaCg0KQogCitfbGxpbnRfb3BfaW5zdGFuY2VvZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaW5zdGFuY2VvZikKKyAgICBkaXNwYXRj
aCg0KQorCiAKICMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3Vn
aCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgogIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBu
ZXZlciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDcgQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPFNwZWNpZXNDbwogICAgICAgICAvLyBGYXN0IHBhdGgg
aW4gdGhlIG5vcm1hbCBjYXNlIHdoZXJlIHRoZSB1c2VyIGhhcyBub3Qgc2V0IGFuIG93biBjb25z
dHJ1Y3RvciBhbmQgdGhlIEFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyBub3JtYWwuCiAg
ICAgICAgIC8vIFdlIG5lZWQgcHJvdG90eXBlIGNoZWNrIGZvciBzdWJjbGFzc2VzIG9mIEFycmF5
LCB3aGljaCBhcmUgQXJyYXkgb2JqZWN0cyBidXQgaGF2ZSBhIGRpZmZlcmVudCBwcm90b3R5cGUg
YnkgZGVmYXVsdC4KICAgICAgICAgaWYgKExJS0VMWSghdGhpc09iamVjdC0+aGFzQ3VzdG9tUHJv
cGVydGllcygpCi0gICAgICAgICAgICAmJiB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+YXJy
YXlQcm90b3R5cGUoKSA9PSB0aGlzT2JqZWN0LT5wcm90b3R5cGUoKQorICAgICAgICAgICAgJiYg
dGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmFycmF5UHJvdG90eXBlKCkgPT0gdGhpc09iamVj
dC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkKICAgICAgICAgICAgICYmICF0aGlzT2JqZWN0LT5nbG9i
YWxPYmplY3QoKS0+YXJyYXlQcm90b3R5cGUoKS0+ZGlkQ2hhbmdlQ29uc3RydWN0b3JPclNwZWNp
ZXNQcm9wZXJ0aWVzKCkpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKFNwZWNp
ZXNDb25zdHJ1Y3RSZXN1bHQ6OkZhc3RQYXRoLCBudWxscHRyKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTIsNiArMTEyLDkgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIGJvb2wg
KCpTZXRQcm90b3R5cGVGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93SWZDYW50U2V0KTsKICAgICBTZXRQcm90b3R5cGVGdW5jdGlvblB0
ciBzZXRQcm90b3R5cGU7CiAKKyAgICB0eXBlZGVmIEpTVmFsdWUgKCpHZXRQcm90b3R5cGVGdW5j
dGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqKTsKKyAgICBHZXRQcm90b3R5cGVGdW5jdGlv
blB0ciBnZXRQcm90b3R5cGU7CisKICAgICB0eXBlZGVmIHZvaWQgKCpEdW1wVG9TdHJlYW1GdW5j
dGlvblB0cikoY29uc3QgSlNDZWxsKiwgUHJpbnRTdHJlYW0mKTsKICAgICBEdW1wVG9TdHJlYW1G
dW5jdGlvblB0ciBkdW1wVG9TdHJlYW07CiAKQEAgLTE2Niw2ICsxNjksNyBAQCBzdHJ1Y3QgTWV0
aG9kVGFibGUgewogICAgICAgICAmQ2xhc3NOYW1lOjpwcmV2ZW50RXh0ZW5zaW9ucywgXAogICAg
ICAgICAmQ2xhc3NOYW1lOjppc0V4dGVuc2libGUsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6c2V0
UHJvdG90eXBlLCBcCisgICAgICAgICZDbGFzc05hbWU6OmdldFByb3RvdHlwZSwgXAogICAgICAg
ICAmQ2xhc3NOYW1lOjpkdW1wVG9TdHJlYW0sIFwKICAgICAgICAgJkNsYXNzTmFtZTo6ZXN0aW1h
dGVkU2l6ZSBcCiAgICAgfSwgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblBybwogICAgIH0KIAogICAgIEpTU3RyaW5nKiBuYW1lID0gdGFyZ2V0LmdldChleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSkudG9TdHJpbmcoZXhlYyk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCB0YXJnZXRPYmplY3QsIGV4ZWMtPmFyZ3VtZW50KDApLCBib3VuZEFyZ3MsIGxlbmd0aCwgbmFt
ZS0+dmFsdWUoZXhlYykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBleGVjLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZXhlYy0+
YXJndW1lbnQoMCksIGJvdW5kQXJncywgbGVuZ3RoLCBuYW1lLT52YWx1ZShleGVjKSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk3NjQ2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bENvbGxhdG8KICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlKSk7CiAKICAgICAgICAgLy8gYy4gTGV0IGJj
IGJlIEJvdW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgotICAgICAgICBib3Vu
ZENvbXBhcmUgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJn
ZXRPYmplY3QsIGNvbGxhdG9yLCBib3VuZEFyZ3MsIDIsIEFTQ0lJTGl0ZXJhbCgiY29tcGFyZSIp
KTsKKyAgICAgICAgYm91bmRDb21wYXJlID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHN0
YXRlLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgY29sbGF0b3IsIGJvdW5kQXJncywgMiwg
QVNDSUlMaXRlcmFsKCJjb21wYXJlIikpOworICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIC8v
IGQuIFNldCBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIHRvIGJjLgogICAgICAgICBjb2xsYXRv
ci0+c2V0Qm91bmRDb21wYXJlKHZtLCBib3VuZENvbXBhcmUpOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM0LDcgKzEzNCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bERhdGVUaW0KICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1l
bW9yeUVycm9yKHN0YXRlKSk7CiAKICAgICAgICAgLy8gYy4gTGV0IGJmIGJlIEJvdW5kRnVuY3Rp
b25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgotICAgICAgICBib3VuZEZvcm1hdCA9IEpTQm91
bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZHRmLCBi
b3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IikpOworICAgICAgICBib3VuZEZvcm1h
dCA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0YXJn
ZXRPYmplY3QsIGR0ZiwgYm91bmRBcmdzLCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpKTsKKyAg
ICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1ZhbHVlKCkpOwogICAgICAgICAvLyBkLiBTZXQgZHRmLltbYm91bmRGb3JtYXRdXSB0
byBiZi4KICAgICAgICAgZHRmLT5zZXRCb3VuZEZvcm1hdCh2bSwgYm91bmRGb3JtYXQpOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bE51bWJlckYKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlKSk7CiAKICAgICAgICAgLy8gYy4gTGV0IGJmIGJlIEJv
dW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgotICAgICAgICBib3VuZEZvcm1h
dCA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVj
dCwgbmYsIGJvdW5kQXJncywgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSk7CisgICAgICAgIGJv
dW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRlLCBnbG9iYWxPYmpl
Y3QsIHRhcmdldE9iamVjdCwgbmYsIGJvdW5kQXJncywgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQi
KSk7CisgICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICAgICAgLy8gZC4gU2V0IG5mLltbYm91bmRGb3Jt
YXRdXSB0byBiZi4KICAgICAgICAgbmYtPnNldEJvdW5kRm9ybWF0KHZtLCBib3VuZEZvcm1hdCk7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5ICs4
NywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc0luc3RhbmNlCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYm91bmRPYmplY3QtPnRhcmdldEZ1bmN0aW9u
KCktPmhhc0luc3RhbmNlKGV4ZWMsIHZhbHVlKSkpOwogfQogCi1pbmxpbmUgU3RydWN0dXJlKiBn
ZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uKQoraW5saW5lIFN0cnVjdHVyZSogZ2V0Qm91
bmRGdW5jdGlvblN0cnVjdHVyZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uKQogewotICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGFyZ2V0RnVuY3Rpb24tPnN0cnVjdHVyZSh2bSktPnN0b3JlZFByb3Rv
dHlwZSgpOworICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGFyZ2V0RnVuY3Rpb24tPmdldFByb3Rv
dHlwZSh2bSwgZXhlYyk7CisgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgSlNGdW5jdGlvbiogdGFyZ2V0SlNGdW5jdGlvbiA9IGpz
RHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHRhcmdldEZ1bmN0aW9uKTsKIAogICAgIC8vIFdlIG9u
bHkgY2FjaGUgdGhlIHN0cnVjdHVyZSBvZiB0aGUgYm91bmQgZnVuY3Rpb24gaWYgdGhlIGJpbmRl
ZSBpcyBhIEpTRnVuY3Rpb24gc2luY2UgdGhlcmUKQEAgLTExNywxMyArMTE5LDE1IEBAIGlubGlu
ZSBTdHJ1Y3R1cmUqIGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3QKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1KU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1Zh
bHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK0pTQm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0
KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTVmFsdWUgYm91bmRBcmdzLCBp
bnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQ29uc3RydWN0RGF0YSBjb25z
dHJ1Y3REYXRhOwogICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IEpTQzo6Z2V0Q29u
c3RydWN0RGF0YSh0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0YSk7CiAgICAgYm9vbCBjYW5D
b25zdHJ1Y3QgPSBjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7CiAgICAgTmF0
aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihib3VuZEZ1bmN0
aW9uQ2FsbCwgY2FuQ29uc3RydWN0ID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGNhbGxIb3N0
RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLnByb3RvdHlwZS5i
aW5kIHJlc3VsdCIpKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldEJvdW5kRnVuY3Rp
b25TdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24pOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gZ2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSh2bSwgZXhlYywgZ2xv
YmFsT2JqZWN0LCB0YXJnZXRGdW5jdGlvbik7CisgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlv
bigpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBmdW5j
dGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQm91bmRGdW5jdGlvbj4odm0uaGVh
cCkpIEpTQm91bmRGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHRhcmdldEZ1
bmN0aW9uLCBib3VuZFRoaXMsIGJvdW5kQXJncyk7CiAKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3Jl
YXRpb24odm0sIGV4ZWN1dGFibGUsIGxlbmd0aCwgbWFrZVN0cmluZygiYm91bmQgIiwgbmFtZSkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0
aW9uLmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQm91bmRGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKICAgICBjb25zdCBzdGF0aWMgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSB+SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSAmIEJhc2U6
OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgc3RhdGljIEpTQm91bmRGdW5jdGlvbiogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91
bmRUaGlzLCBKU1ZhbHVlIGJvdW5kQXJncywgaW50LCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0
aWMgSlNCb3VuZEZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTVmFsdWUg
Ym91bmRBcmdzLCBpbnQsIGNvbnN0IFN0cmluZyYpOwogICAgIAogICAgIHN0YXRpYyBib29sIGN1
c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCShyZXZpc2lv
biAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSlNWYWx1ZTo6cHV0VG9Q
cmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICBKU1ZhbHVlIHByb3RvdHlwZTsKICAgICBpZiAocHJv
cGVydHlOYW1lICE9IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pIHsKICAg
ICAgICAgZm9yICg7ICFvYmotPnN0cnVjdHVyZSgpLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVy
UHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCk7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsK
LSAgICAgICAgICAgIHByb3RvdHlwZSA9IG9iai0+cHJvdG90eXBlKCk7CisgICAgICAgICAgICBw
cm90b3R5cGUgPSBvYmotPmdldFByb3RvdHlwZURpcmVjdCgpOwogICAgICAgICAgICAgaWYgKHBy
b3RvdHlwZS5pc051bGwoKSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKQogICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwpAQCAtMTc4LDcgKzE3OCw5IEBAIHZvaWQgSlNW
YWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKLSAgICAgICAgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKKyAgICAgICAg
cHJvdG90eXBlID0gb2JqLT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAgICAgICBpZiAodm0u
ZXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChwcm90b3R5cGUu
aXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw0
ICsyODUsOSBAQCBib29sIEpTQ2VsbDo6c2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhlCiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorSlNWYWx1ZSBKU0NlbGw6OmdldFBy
b3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0ZSopCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw2ICsyMDks
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBw
cmV2ZW50RXh0ZW5zaW9ucyhKU09iamVjdCosIEV4ZWNTdGF0ZSopOwogICAgIHN0YXRpYyBOT19S
RVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgaXNFeHRlbnNpYmxlKEpTT2JqZWN0KiwgRXhlY1N0YXRl
Kik7CiAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBzZXRQcm90b3R5cGUo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBib29sKTsKKyAgICBzdGF0aWMgTk9fUkVU
VVJOX0RVRV9UT19DUkFTSCBKU1ZhbHVlIGdldFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0
ZSopOwogCiAgICAgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVj
dCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MTMsNyArNjEzLDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcgogICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiJHZtIiksIGRvbGxhclZNLCBEb250RW51bSk7CiAgICAgfQog
Ci0gICAgcmVzZXRQcm90b3R5cGUodm0sIHByb3RvdHlwZSgpKTsKKyAgICByZXNldFByb3RvdHlw
ZSh2bSwgZ2V0UHJvdG90eXBlRGlyZWN0KCkpOwogfQogCiBib29sIEpTR2xvYmFsT2JqZWN0Ojpo
YXNMZWdhY3lQcm9maWxlcigpIGNvbnN0CkBAIC02NjksOCArNjY5LDggQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6YWRkRnVuY3Rpb24oRXhlY1N0YQogc3RhdGljIGlubGluZSBKU09iamVjdCogbGFz
dEluUHJvdG90eXBlQ2hhaW4oSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBKU09iamVjdCogbyA9
IG9iamVjdDsKLSAgICB3aGlsZSAoby0+cHJvdG90eXBlKCkuaXNPYmplY3QoKSkKLSAgICAgICAg
byA9IGFzT2JqZWN0KG8tPnByb3RvdHlwZSgpKTsKKyAgICB3aGlsZSAoby0+Z2V0UHJvdG90eXBl
RGlyZWN0KCkuaXNPYmplY3QoKSkKKyAgICAgICAgbyA9IGFzT2JqZWN0KG8tPmdldFByb3RvdHlw
ZURpcmVjdCgpKTsKICAgICByZXR1cm4gbzsKIH0KIApAQCAtNzI2LDcgKzcyNiw3IEBAIGlubGlu
ZSB2b2lkIE9iamVjdHNXaXRoQnJva2VuSW5kZXhpbmdGaW4KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3Vy
cmVudC0+cHJvdG90eXBlKCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjdXJy
ZW50LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICAgICAgaWYgKHByb3RvdHlwZVZhbHVlLmlz
TnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGN1cnJlbnQgPSBhc09iamVjdChw
cm90b3R5cGVWYWx1ZSk7CkBAIC03ODUsMjAgKzc4NSwyMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
OjpoYXZlQUJhZFRpbWUoVk0mIHZtCiBib29sIEpTR2xvYmFsT2JqZWN0OjpvYmplY3RQcm90b3R5
cGVJc1NhbmUoKQogewogICAgIHJldHVybiAhaGFzSW5kZXhlZFByb3BlcnRpZXMobV9vYmplY3RQ
cm90b3R5cGUtPmluZGV4aW5nVHlwZSgpKQotICAgICAgICAmJiBtX29iamVjdFByb3RvdHlwZS0+
cHJvdG90eXBlKCkuaXNOdWxsKCk7CisgICAgICAgICYmIG1fb2JqZWN0UHJvdG90eXBlLT5nZXRQ
cm90b3R5cGVEaXJlY3QoKS5pc051bGwoKTsKIH0KIAogYm9vbCBKU0dsb2JhbE9iamVjdDo6YXJy
YXlQcm90b3R5cGVDaGFpbklzU2FuZSgpCiB7CiAgICAgcmV0dXJuICFoYXNJbmRleGVkUHJvcGVy
dGllcyhtX2FycmF5UHJvdG90eXBlLT5pbmRleGluZ1R5cGUoKSkKLSAgICAgICAgJiYgbV9hcnJh
eVByb3RvdHlwZS0+cHJvdG90eXBlKCkgPT0gbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkKKyAgICAg
ICAgJiYgbV9hcnJheVByb3RvdHlwZS0+Z2V0UHJvdG90eXBlRGlyZWN0KCkgPT0gbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkKICAgICAgICAgJiYgb2JqZWN0UHJvdG90eXBlSXNTYW5lKCk7CiB9CiAK
IGJvb2wgSlNHbG9iYWxPYmplY3Q6OnN0cmluZ1Byb3RvdHlwZUNoYWluSXNTYW5lKCkKIHsKICAg
ICByZXR1cm4gIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG1fc3RyaW5nUHJvdG90eXBlLT5pbmRleGlu
Z1R5cGUoKSkKLSAgICAgICAgJiYgbV9zdHJpbmdQcm90b3R5cGUtPnByb3RvdHlwZSgpID09IG1f
b2JqZWN0UHJvdG90eXBlLmdldCgpCisgICAgICAgICYmIG1fc3RyaW5nUHJvdG90eXBlLT5nZXRQ
cm90b3R5cGVEaXJlY3QoKSA9PSBtX29iamVjdFByb3RvdHlwZS5nZXQoKQogICAgICAgICAmJiBv
YmplY3RQcm90b3R5cGVJc1NhbmUoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNzksNyArMzc5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0
R2xvYmFsT2JqZWN0KHZtLCB0aGlzKTsKICAgICAgICAgbV9ydW50aW1lRmxhZ3MgPSBtX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlLT5qYXZhU2NyaXB0UnVudGltZUZsYWdzKHRoaXMpOwogICAgICAg
ICBpbml0KHZtKTsKLSAgICAgICAgc2V0R2xvYmFsVGhpcyh2bSwgSlNQcm94eTo6Y3JlYXRlKHZt
LCBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIHByb3RvdHlwZSgpLCBQdXJlRm9y
d2FyZGluZ1Byb3h5VHlwZSksIHRoaXMpKTsKKyAgICAgICAgc2V0R2xvYmFsVGhpcyh2bSwgSlNQ
cm94eTo6Y3JlYXRlKHZtLCBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGdldFBy
b3RvdHlwZURpcmVjdCgpLCBQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSksIHRoaXMpKTsKICAgICB9
CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNWYWx1ZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzg0LDggKzc4NCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xv
YmFsRnVuY1QKIAogY2xhc3MgR2xvYmFsRnVuY1Byb3RvR2V0dGVyRnVuY3RvciB7CiBwdWJsaWM6
Ci0gICAgR2xvYmFsRnVuY1Byb3RvR2V0dGVyRnVuY3RvcihKU09iamVjdCogdGhpc09iamVjdCkK
LSAgICAgICAgOiBtX2hhc1NraXBwZWRGaXJzdEZyYW1lKGZhbHNlKQorICAgIEdsb2JhbEZ1bmNQ
cm90b0dldHRlckZ1bmN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCkK
KyAgICAgICAgOiBtX2V4ZWMoZXhlYykKKyAgICAgICAgLCBtX2hhc1NraXBwZWRGaXJzdEZyYW1l
KGZhbHNlKQogICAgICAgICAsIG1fdGhpc09iamVjdCh0aGlzT2JqZWN0KQogICAgICAgICAsIG1f
cmVzdWx0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSkKICAgICB7CkBAIC04MDEsMTIg
KzgwMiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV90aGlzT2JqZWN0
LT5hbGxvd3NBY2Nlc3NGcm9tKHZpc2l0b3ItPmNhbGxGcmFtZSgpKSkKLSAgICAgICAgICAgIG1f
cmVzdWx0ID0gSlNWYWx1ZTo6ZW5jb2RlKG1fdGhpc09iamVjdC0+cHJvdG90eXBlKCkpOworICAg
ICAgICAgICAgbV9yZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUobV90aGlzT2JqZWN0LT5nZXRQcm90
b3R5cGUobV9leGVjLT52bSgpLCBtX2V4ZWMpKTsKIAogICAgICAgICByZXR1cm4gU3RhY2tWaXNp
dG9yOjpEb25lOwogICAgIH0KIAogcHJpdmF0ZToKKyAgICBFeGVjU3RhdGUqIG1fZXhlYzsKICAg
ICBib29sIG1faGFzU2tpcHBlZEZpcnN0RnJhbWU7CiAgICAgSlNPYmplY3QqIG1fdGhpc09iamVj
dDsKICAgICBFbmNvZGVkSlNWYWx1ZSBtX3Jlc3VsdDsKQEAgLTgyMiw3ICs4MjQsMTAgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUAogICAgIGlmICghdGhpc09iamVj
dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT50aGlzVmFsdWUoKS5zeW50
aGVzaXplUHJvdG90eXBlKGV4ZWMpKTsKIAotICAgIEdsb2JhbEZ1bmNQcm90b0dldHRlckZ1bmN0
b3IgZnVuY3Rvcih0aGlzT2JqZWN0KTsKKyAgICBHbG9iYWxGdW5jUHJvdG9HZXR0ZXJGdW5jdG9y
IGZ1bmN0b3IoZXhlYywgdGhpc09iamVjdCk7CisgICAgLy8gVGhpcyBjYW4gdGhyb3cgYnV0IGl0
J3MganVzdCB1bm5lZWRlZCBleHRyYSB3b3JrIHRvIGNoZWNrIGZvciBpdC4gVGhlIHJldHVybgor
ICAgIC8vIHZhbHVlIGZyb20gdGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgYXMgdGhlIHJldHVy
biB2YWx1ZSBmcm9tIGEgaG9zdCBjYWxsLgorICAgIC8vIFRoZXJlZm9yZSwgdGhlIHJldHVybiB2
YWx1ZSBpcyBvbmx5IHVzZWQgaWYgdGhlcmUgd2Fzbid0IGFuIGV4Y2VwdGlvbi4KICAgICBleGVj
LT5pdGVyYXRlKGZ1bmN0b3IpOwogICAgIHJldHVybiBmdW5jdG9yLnJlc3VsdCgpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50LmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3
ICs3Niw3IEBAIGJvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnQKICAgICAv
LyBXZSBkb24ndCBjYWxsIHRocm91Z2ggdG8gSlNPYmplY3QgYmVjYXVzZSB0aGVyZSdzIG5vIHdh
eSB0byBnaXZlIGEgCiAgICAgLy8gbGV4aWNhbCBlbnZpcm9ubWVudCBvYmplY3QgZ2V0dGVyIHBy
b3BlcnRpZXMgb3IgYSBwcm90b3R5cGUuCiAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5oYXNHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwotICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5wcm90b3R5cGUo
KS5pc051bGwoKSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgp
LmlzTnVsbCgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcyLDcgKzI3Miw3IEBAIFN0cmluZyBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZShKU08K
IHsKICAgICBTdHJpbmcgcHJvdG90eXBlRnVuY3Rpb25OYW1lOwogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChvYmplY3QtPnN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGUoKSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IHNs
b3Qob2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAgICAgUHJvcGVydHlOYW1lIGNvbnN0cnVjdG9yKGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvcik7CiAgICAgaWYgKG9iamVjdC0+Z2V0UHJvcGVy
dHlTbG90KGV4ZWMsIGNvbnN0cnVjdG9yLCBzbG90KSkgewogICAgICAgICBpZiAoc2xvdC5pc1Zh
bHVlKCkpIHsKQEAgLTQzMCwxMSArNDMwLDE0IEBAIHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNs
b3coRXhlY1N0YXRlKiAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAob2Jq
LT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlICYmIHByb3BlcnR5TmFtZSAhPSB2bS5wcm9wZXJ0
eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGRuJ3QgdW5jb25kaXRpb25hbGx5IHBlcmZvcm0gW1tTZXRdXSBoZXJlLgorICAgICAgICAgICAg
Ly8gV2UgbmVlZCB0byBkbyBtb3JlIGJlY2F1c2UgdGhpcyBpcyBvYnNlcnZhYmxlIGJlaGF2aW9y
LgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTAxMgogICAgICAgICAgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2Jq
ZWN0Kj4ob2JqKTsKICAgICAgICAgICAgIHByb3h5LT5Qcm94eU9iamVjdDo6cHV0KHByb3h5LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IG9iai0+cHJvdG90eXBlKCk7Cisg
ICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gb2JqLT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAg
ICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBvYmogPSBhc09iamVjdChwcm90b3R5cGUpOwpAQCAtMTIwMSw3ICsxMjA0LDcgQEAgYm9vbCBK
U09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlYwogewogICAgIEFTU0VSVChtZXRob2RU
YWJsZSh2bSktPnRvVGhpcyh0aGlzLCBleGVjLCBOb3RTdHJpY3RNb2RlKSA9PSB0aGlzKTsKIAot
ICAgIGlmICh0aGlzLT5wcm90b3R5cGUoKSA9PSBwcm90b3R5cGUpCisgICAgaWYgKHRoaXMtPmdl
dFByb3RvdHlwZURpcmVjdCgpID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRoaXMtPmlzRXh0ZW5zaWJsZShleGVjKTsKQEAgLTEy
MTUsMTMgKzEyMTgsMTYgQEAgYm9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hl
YwogICAgIH0KIAogICAgIEpTVmFsdWUgbmV4dFByb3RvdHlwZSA9IHByb3RvdHlwZTsKKyAgICBN
ZXRob2RUYWJsZTo6R2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9
IEpTT2JqZWN0OjpnZXRQcm90b3R5cGU7CiAgICAgd2hpbGUgKG5leHRQcm90b3R5cGUgJiYgbmV4
dFByb3RvdHlwZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGlmIChuZXh0UHJvdG90eXBlID09IHRo
aXMpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvd0lmQ2FudFNldCkKICAgICAgICAgICAg
ICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9Ci0gICAgICAgIG5leHRQcm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJvdG90
eXBlKS0+cHJvdG90eXBlKCk7CisgICAgICAgIGlmIChVTkxJS0VMWShhc09iamVjdChuZXh0UHJv
dG90eXBlKS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm90b3R5cGUgIT0gZGVmYXVsdEdldFByb3Rv
dHlwZSkpCisgICAgICAgICAgICBicmVhazsgLy8gV2UncmUgZG9uZS4gU2V0IHRoZSBwcm90b3R5
cGUuCisgICAgICAgIG5leHRQcm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJvdG90eXBlKS0+Z2V0
UHJvdG90eXBlRGlyZWN0KCk7CiAgICAgfQogICAgIHNldFByb3RvdHlwZURpcmVjdCh2bSwgcHJv
dG90eXBlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyMzIsNiArMTIzOCwxMSBAQCBib29sIEpT
T2JqZWN0OjpzZXRQcm90b3R5cGUoSlNPYmplY3QqIG9iCiAgICAgcmV0dXJuIG9iamVjdC0+c2V0
UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYy0+dm0oKSwgZXhlYywgcHJvdG90eXBlLCBzaG91
bGRUaHJvd0lmQ2FudFNldCk7CiB9CiAKK0pTVmFsdWUgSlNPYmplY3Q6OmdldFByb3RvdHlwZShK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqKQoreworICAgIHJldHVybiBvYmplY3QtPmdldFBy
b3RvdHlwZURpcmVjdCgpOworfQorCiBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGUoVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHJvdG90eXBlLCBib29sIHNob3VsZFRocm93SWZD
YW50U2V0KQogewogICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPnNldFByb3RvdHlwZSh0aGlz
LCBleGVjLCBwcm90b3R5cGUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKQEAgLTE1NzIsMTIgKzE1
ODMsMTkgQEAgYm9vbCBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKEV4ZWNTdAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwotICAgIHdoaWxlICgob2JqZWN0ID0g
b2JqZWN0LT5wcm90b3R5cGUoKS5nZXRPYmplY3QoKSkpIHsKKyAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICBKU1ZhbHVlIG9iamVjdFZhbHVlID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4
ZWMpOworICAgICAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIW9iamVjdFZhbHVlLmlzT2JqZWN0KCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KG9iamVjdFZh
bHVlKTsKICAgICAgICAgaWYgKHByb3RvID09IG9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJpdmF0ZUZ1bmNJbnN0
YW5jZU9mKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE1OTAsMjQgKzE2MDgsMjkgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2YQogCiB2b2lkIEpTT2JqZWN0OjpnZXRQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAgIG9iamVj
dC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKLSAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpKQorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBtb2RlKTsKKyAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAob2JqZWN0LT5wcm90b3R5cGUoKS5pc051bGwoKSkKKyAgICBKU1ZhbHVl
IG5leHRQcm90byA9IG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKKyAgICBpZiAoVU5M
SUtFTFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG5leHRQcm90
by5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICBKU09iamVjdCogcHJvdG90eXBlID0gYXNPYmplY3Qob2JqZWN0LT5wcm90b3R5cGUoKSk7
CisgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQcm90byk7CiAgICAgd2hp
bGUoMSkgewogICAgICAgICBpZiAocHJvdG90eXBlLT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygp
Lm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkgewogICAgICAgICAgICAgcHJvdG90eXBlLT5t
ZXRob2RUYWJsZSh2bSktPmdldFByb3BlcnR5TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBtb2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHBy
b3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7Ci0gICAgICAgIGlmIChVTkxJS0VMWShleGVjLT5o
YWRFeGNlcHRpb24oKSkpCisgICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG5leHRQcm90byA9IHByb3RvdHlwZS0+Z2V0UHJv
dG90eXBlKHZtLCBleGVjKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgSlNWYWx1ZSBuZXh0UHJvdG8gPSBwcm90b3R5
cGUtPnByb3RvdHlwZSgpOwogICAgICAgICBpZiAobmV4dFByb3RvLmlzTnVsbCgpKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIHByb3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQcm90byk7CkBA
IC0yMDI3LDcgKzIwNTAsNyBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRC
eUluCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IGN1cnJlbnQtPnByb3RvdHlwZSgpOworICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3VycmVudC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7
CiAgICAgICAgIGlmIChwcm90b3R5cGVWYWx1ZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgCkBAIC0yMDM3LDcgKzIwNjAsNyBAQCBib29sIEpTT2JqZWN0Ojph
dHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluCiAKIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVy
Y2VwdFB1dEJ5SW5kZXhPbkhvbGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVl
IHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewotICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUg
PSBwcm90b3R5cGUoKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gZ2V0UHJvdG90eXBl
RGlyZWN0KCk7CiAgICAgaWYgKHByb3RvdHlwZVZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCkBAIC0zMDI5LDEzICszMDUyLDE2IEBAIHZvaWQgSlNPYmplY3Q6Omdl
dEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEoKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKG1vZGUsIEpTT2JqZWN0UHJvcGVydGll
c01vZGU6OkV4Y2x1ZGUpKTsKLSAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
KQorICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgpLmlzTnVsbCgpKQorICAgIEpTVmFsdWUgbmV4dFBy
b3RvID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAgIGlmIChVTkxJS0VMWSh2
bS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobmV4dFByb3RvLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBKU09iamVjdCogcHJvdG90eXBlID0gYXNPYmpl
Y3Qob2JqZWN0LT5wcm90b3R5cGUoKSk7CisgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGFzT2Jq
ZWN0KG5leHRQcm90byk7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaWYgKHByb3RvdHlw
ZS0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkp
IHsKICAgICAgICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5h
bWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CkBAIC0zMDQ0LDcgKzMw
NzAsOSBAQCB2b2lkIEpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKCiAgICAgICAg
IHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlw
ZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShleGVj
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEpTVmFsdWUg
bmV4dFByb3RvID0gcHJvdG90eXBlLT5wcm90b3R5cGUoKTsKKyAgICAgICAgbmV4dFByb3RvID0g
cHJvdG90eXBlLT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAgICAgICBpZiAoVU5MSUtFTFko
dm0uZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAobmV4dFBy
b3RvLmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHByb3RvdHlwZSA9IGFz
T2JqZWN0KG5leHRQcm90byk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsMTkgQEAgcHVibGlj
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpT
T2JqZWN0Kik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBjYWxjdWxhdGVk
Q2xhc3NOYW1lKEpTT2JqZWN0Kik7CiAKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSgpIGNvbnN0Owor
ICAgIC8vIFRoaXMgaXMgdGhlIGZ1bGx5IHZpcnR1YWwgW1tHZXRQcm90b3R5cGVPZl1dIGludGVy
bmFsIGZ1bmN0aW9uIGRlZmluZWQKKyAgICAvLyBpbiB0aGUgRUNNQVNjcmlwdCA2IHNwZWNpZmlj
YXRpb24uIFVzZSB0aGlzIHdoZW4gZG9pbmcgYSBbW0dldFByb3RvdHlwZU9mXV0gCisgICAgLy8g
b3BlcmF0aW9uIGFzIGRpY3RhdGVkIGluIHRoZSBzcGVjaWZpY2F0aW9uLgorICAgIEpTVmFsdWUg
Z2V0UHJvdG90eXBlKFZNJiwgRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIEpTVmFsdWUgZ2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7CisgICAgLy8g
VGhpcyBnZXRzIHRoZSBwcm90b3R5cGUgZGlyZWN0bHkgb2ZmIG9mIHRoZSBzdHJ1Y3R1cmUuIFRo
aXMgZG9lcyBub3QgZG8KKyAgICAvLyBkeW5hbWljIGRpc3BhdGNoIG9uIHRoZSBnZXRQcm90b3R5
cGUgbWV0aG9kIHRhYmxlIG1ldGhvZC4gSXQgaXMgbm90IHZhbGlkIAorICAgIC8vIHRvIHVzZSB0
aGlzIHdoZW4gcGVyZm9ybWluZyBhIFtbR2V0UHJvdG90eXBlT2ZdXSBvcGVyYXRpb24gaW4gdGhl
IHNwZWNpZmljYXRpb24uCisgICAgLy8gSXQgaXMgdmFsaWQgdG8gdXNlIHRob3VnaCB3aGVuIHlv
dSBrbm93IHRoYXQgeW91IHdhbnQgdG8gZGlyZWN0bHkgZ2V0IGl0CisgICAgLy8gd2l0aG91dCBj
b25zdWx0aW5nIHRoZSBtZXRob2QgdGFibGUuIFRoaXMgaXMgYWtpbiB0byBnZXR0aW5nIHRoZSBb
W1Byb3RvdHlwZV1dCisgICAgLy8gaW50ZXJuYWwgZmllbGQgZGlyZWN0bHkgYXMgZGVzY3JpYmVk
IGluIHRoZSBzcGVjaWZpY2F0aW9uLgorICAgIEpTVmFsdWUgZ2V0UHJvdG90eXBlRGlyZWN0KCkg
Y29uc3Q7CisKICAgICAvLyBUaGlzIHNldHMgdGhlIHByb3RvdHlwZSB3aXRob3V0IGNoZWNraW5n
IGZvciBjeWNsZXMgYW5kIHdpdGhvdXQKICAgICAvLyBkb2luZyBkeW5hbWljIGRpc3BhdGNoIG9u
IFtbU2V0UHJvdG90eXBlT2ZdXSBvcGVyYXRpb24gaW4gdGhlIHNwZWNpZmljYXRpb24uCiAgICAg
Ly8gSXQgaXMgbm90IHZhbGlkIHRvIHVzZSB0aGlzIHdoZW4gcGVyZm9ybWluZyBhIFtbU2V0UHJv
dG90eXBlT2ZdXSBvcGVyYXRpb24gaW4KQEAgLTc1OSw3ICs3NzEsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIEFTU0VSVChp
bmhlcml0cyhpbmZvKCkpKTsKLSAgICAgICAgQVNTRVJUKHByb3RvdHlwZSgpLmlzTnVsbCgpIHx8
IEhlYXA6OmhlYXAodGhpcykgPT0gSGVhcDo6aGVhcChwcm90b3R5cGUoKSkpOworICAgICAgICBB
U1NFUlQoZ2V0UHJvdG90eXBlRGlyZWN0KCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9
PSBIZWFwOjpoZWFwKGdldFByb3RvdHlwZURpcmVjdCgpKSk7CiAgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+aXNPYmplY3QoKSk7CiAgICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAg
fQpAQCAtMTEyNCwxMSArMTEzNiwyMCBAQCBpbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KFZNJiB2
bSwgU3RydWN0CiAgICAgdm0uaGVhcC5hc2NyaWJlT3duZXIodGhpcywgYnV0dGVyZmx5KTsKIH0K
IAotaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OnByb3RvdHlwZSgpIGNvbnN0CitpbmxpbmUgSlNW
YWx1ZSBKU09iamVjdDo6Z2V0UHJvdG90eXBlRGlyZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4g
c3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZSgpOwogfQogCitpbmxpbmUgSlNWYWx1ZSBKU09i
amVjdDo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQoreworICAgIGF1dG8g
Z2V0UHJvdG90eXBlTWV0aG9kID0gbWV0aG9kVGFibGUodm0pLT5nZXRQcm90b3R5cGU7CisgICAg
TWV0aG9kVGFibGU6OkdldFByb3RvdHlwZUZ1bmN0aW9uUHRyIGRlZmF1bHRHZXRQcm90b3R5cGUg
PSBKU09iamVjdDo6Z2V0UHJvdG90eXBlOworICAgIGlmIChMSUtFTFkoZ2V0UHJvdG90eXBlTWV0
aG9kID09IGRlZmF1bHRHZXRQcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gZ2V0UHJvdG90eXBl
RGlyZWN0KCk7CisgICAgcmV0dXJuIGdldFByb3RvdHlwZU1ldGhvZCh0aGlzLCBleGVjKTsKK30K
KwogLy8gSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgbWV0aG9kIHdpdGggYSBQcm9wZXJ0eU5hbWUg
dGhhdCBpcyBhY3R1YWxseSBhbiBpbmRleCwKIC8vIGJ1dCBpZiBzbyB3aWxsIGFsd2F5cyByZXR1
cm4gZmFsc2UgKGRvZXNuJ3Qgc2VhcmNoIGluZGV4IHN0b3JhZ2UpLgogQUxXQVlTX0lOTElORSBi
b29sIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdChWTSYgdm0sIFN0cnVjdHVy
ZSYgc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCkBAIC0xMjA0LDYgKzEyMjUsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6Omdl
dFByb3BlcnR5CiAgICAgICAgICAgICAvLyBwYXJzaW5nIHRoZSBpbnQgYWdhaW4uCiAgICAgICAg
ICAgICByZXR1cm4gb2JqZWN0LT5nZXROb25JbmRleFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogICAgICAgICB9CisgICAgICAgIEFTU0VSVChvYmplY3QtPnR5cGUoKSAh
PSBQcm94eU9iamVjdFR5cGUpOwogICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpzdHJ1
Y3R1cmVJRFRhYmxlLmdldChvYmplY3QtPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBpZiAob2Jq
ZWN0LT5nZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjIzLDExICsxMjQ1LDIx
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHkKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIGF1dG8mIHN0cnVjdHVyZUlEVGFibGUgPSB2bS5oZWFwLnN0cnVj
dHVyZUlEVGFibGUoKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpczsKKyAgICBNZXRob2RU
YWJsZTo6R2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9IEpTT2Jq
ZWN0OjpnZXRQcm90b3R5cGU7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgU3RydWN0dXJl
JiBzdHJ1Y3R1cmUgPSAqc3RydWN0dXJlSURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgp
KTsKICAgICAgICAgaWYgKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBzdHJ1
Y3R1cmUuc3RvcmVkUHJvdG90eXBlKCk7CisgICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRp
b24oKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlOworICAgICAgICBpZiAoTElLRUxZKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFi
bGUuZ2V0UHJvdG90eXBlID09IGRlZmF1bHRHZXRQcm90b3R5cGUgfHwgc2xvdC5pbnRlcm5hbE1l
dGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
KSkKKyAgICAgICAgICAgIHByb3RvdHlwZSA9IHN0cnVjdHVyZS5zdG9yZWRQcm90b3R5cGUoKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwcm90b3R5cGUgPSBvYmplY3QtPmdldFByb3Rv
dHlwZSh2bSwgZXhlYyk7CisgICAgICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIGlmICghcHJvdG90eXBl
LmlzT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG9iamVjdCA9
IGFzT2JqZWN0KHByb3RvdHlwZSk7CkBAIC0xMjQyLDE0ICsxMjc0LDI2IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBKU09iamVjdDo6Z2V0Tm9uSW5kZXgKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIGF1dG8mIHN0cnVjdHVyZUlEVGFibGUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsK
ICAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpczsKKyAgICBNZXRob2RUYWJsZTo6R2V0UHJvdG90
eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90b3R5
cGU7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAq
c3RydWN0dXJlSURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgaWYg
KExJS0VMWSghVHlwZUluZm86Om92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChvYmplY3QtPmlu
bGluZVR5cGVGbGFncygpKSkpIHsKICAgICAgICAgICAgIGlmIChvYmplY3QtPmdldE93bk5vbklu
ZGV4UHJvcGVydHlTbG90KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RydWN0dXJlLmNs
YXNzSW5mbygpLT5tZXRob2RUYWJsZS5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gc3RydWN0dXJlLnN0b3JlZFByb3RvdHlwZSgpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFi
bGUuZ2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSh2
bS5leGNlcHRpb24oKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlOworICAgICAgICBpZiAoTElLRUxZKHN0cnVjdHVy
ZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0UHJvdG90eXBlID09IGRlZmF1bHRHZXRQcm90
b3R5cGUgfHwgc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KSkKKyAgICAgICAgICAgIHByb3RvdHlwZSA9IHN0cnVj
dHVyZS5zdG9yZWRQcm90b3R5cGUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwcm90
b3R5cGUgPSBvYmplY3QtPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CisgICAgICAgICAgICBpZiAo
dm0uZXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CiAgICAgICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkocmV2aXNp
b24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgQUxXQVlTX0lOTElORSBib29s
IEpTT2JqZWN0OjpjYW5QZXJmb3JtRgogICAgICAgICBpZiAob2JqLT5zdHJ1Y3R1cmUodm0pLT5o
YXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkgfHwgb2Jq
LT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgIHByb3RvdHlwZSA9IG9iai0+cHJvdG90eXBlKCk7CisgICAgICAgIHByb3RvdHlw
ZSA9IG9iai0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CiAgICAgICAgIGlmIChwcm90b3R5cGUuaXNO
dWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3
ICs0Nyw3IEBAIHZvaWQgSlNQcm94eTo6c2V0VGFyZ2V0KFZNJiB2bSwgSlNHbG9iYWwKIHsKICAg
ICBBU1NFUlRfQVJHKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0KTsKICAgICBtX3RhcmdldC5z
ZXQodm0sIHRoaXMsIGdsb2JhbE9iamVjdCk7Ci0gICAgc2V0UHJvdG90eXBlRGlyZWN0KHZtLCBn
bG9iYWxPYmplY3QtPnByb3RvdHlwZSgpKTsKKyAgICBzZXRQcm90b3R5cGVEaXJlY3Qodm0sIGds
b2JhbE9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkpOwogCiAgICAgUHJvdG90eXBlTWFwJiBw
cm90b3R5cGVNYXAgPSB2bS5wcm90b3R5cGVNYXA7CiAgICAgaWYgKCFwcm90b3R5cGVNYXAuaXNQ
cm90b3R5cGUodGhpcykpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9u
IDE5NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIGlmIChvYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEob2JqZWN0LCBkYXRhKSA9PSBDb25zdHJ1Y3RUeXBl
OjpOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsICJuZXcudGFyZ2V0IHBhc3NlZCB0byBUeXBlZEFycmF5IGlzIG5vdCBhIHZhbGlkIGNvbnN0
cnVjdG9yLiIpKTsKIAotICAgIGZvciAoOyAhdmFsdWUuaXNOdWxsKCk7IHZhbHVlID0ganNDYXN0
PEpTT2JqZWN0Kj4odmFsdWUpLT5wcm90b3R5cGUoKSkgeworICAgIGZvciAoOyAhdmFsdWUuaXNO
dWxsKCk7IHZhbHVlID0ganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLT5nZXRQcm90b3R5cGVEaXJl
Y3QoKSkgewogICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3IqPih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZmluZCBUeXBlZEFycmF5IGNvbnN0cnVjdG9yIHRo
YXQgaW5oZXJpdHMgZnJvbSBUeXBlZEFycmF5LiIpKTsKICAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcjxKU0ludDhBcnJheT4qPih2YWx1
ZSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw4
ICsxNTAsOSBAQCBDYWxsVHlwZSBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoCiAKIGNs
YXNzIE9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2ZGdW5jdG9yIHsKIHB1YmxpYzoKLSAg
ICBPYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mRnVuY3RvcihKU09iamVjdCogb2JqZWN0
KQotICAgICAgICA6IG1faGFzU2tpcHBlZEZpcnN0RnJhbWUoZmFsc2UpCisgICAgT2JqZWN0Q29u
c3RydWN0b3JHZXRQcm90b3R5cGVPZkZ1bmN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
b2JqZWN0KQorICAgICAgICA6IG1fZXhlYyhleGVjKQorICAgICAgICAsIG1faGFzU2tpcHBlZEZp
cnN0RnJhbWUoZmFsc2UpCiAgICAgICAgICwgbV9vYmplY3Qob2JqZWN0KQogICAgICAgICAsIG1f
cmVzdWx0KGpzVW5kZWZpbmVkKCkpCiAgICAgewpAQCAtMTY3LDExICsxNjgsMTIgQEAgcHVibGlj
OgogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fb2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKHZp
c2l0b3ItPmNhbGxGcmFtZSgpKSkKLSAgICAgICAgICAgIG1fcmVzdWx0ID0gbV9vYmplY3QtPnBy
b3RvdHlwZSgpOworICAgICAgICAgICAgbV9yZXN1bHQgPSBtX29iamVjdC0+Z2V0UHJvdG90eXBl
KG1fZXhlYy0+dm0oKSwgbV9leGVjKTsKICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9u
ZTsKICAgICB9CiAKIHByaXZhdGU6CisgICAgRXhlY1N0YXRlKiBtX2V4ZWM7CiAgICAgYm9vbCBt
X2hhc1NraXBwZWRGaXJzdEZyYW1lOwogICAgIEpTT2JqZWN0KiBtX29iamVjdDsKICAgICBKU1Zh
bHVlIG1fcmVzdWx0OwpAQCAtMTc5LDcgKzE4MSwxMCBAQCBwcml2YXRlOgogCiBKU1ZhbHVlIG9i
amVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
b2JqZWN0KQogewotICAgIE9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2ZGdW5jdG9yIGZ1
bmN0b3Iob2JqZWN0KTsKKyAgICBPYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mRnVuY3Rv
ciBmdW5jdG9yKGV4ZWMsIG9iamVjdCk7CisgICAgLy8gVGhpcyBjYW4gdGhyb3cgYnV0IGl0J3Mg
anVzdCB1bm5lZWRlZCBleHRyYSB3b3JrIHRvIGNoZWNrIGZvciBpdC4gVGhlIHJldHVybgorICAg
IC8vIHZhbHVlIGZyb20gdGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgYXMgdGhlIHJldHVybiB2
YWx1ZSBmcm9tIGEgaG9zdCBjYWxsLgorICAgIC8vIFRoZXJlZm9yZSwgdGhlIHJldHVybiB2YWx1
ZSBpcyBvbmx5IHVzZWQgaWYgdGhlcmUgd2Fzbid0IGFuIGV4Y2VwdGlvbi4KICAgICBleGVjLT5p
dGVyYXRlKGZ1bmN0b3IpOwogICAgIHJldHVybiBmdW5jdG9yLnJlc3VsdCgpOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTQgKzEwMSwxOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgaWYgKCFleGVjLT5hcmd1
bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihmYWxzZSkpOwogCi0gICAgSlNWYWx1ZSB2ID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQo
MCkpLT5wcm90b3R5cGUoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTVmFsdWUg
diA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsK
KyAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBpZiAo
IXYuaXNPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKGZhbHNlKSk7CiAgICAgICAgIGlmICh2ID09IHRoaXNPYmopCiAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7Ci0gICAgICAgIHYgPSBhc09iamVj
dCh2KS0+cHJvdG90eXBlKCk7CisgICAgICAgIHYgPSBhc09iamVjdCh2KS0+Z2V0UHJvdG90eXBl
KHZtLCBleGVjKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKKyAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICB9CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHJl
dmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsMTEgKzkwLDEwIEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQoRXgKICAgICAvLyBGSVhNRTogbWFrZSBpdCBzbyB0aGF0
IGN1c3RvbSBnZXR0ZXJzIHRha2UgYm90aCB0aGUgfHRoaXN8IHZhbHVlIGFuZCB0aGUgc2xvdEJh
c2UgKHByb3BlcnR5IGhvbGRlcikuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NDMyMAogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlmIChMSUtF
TFkocHJveHlPYmplY3RBc09iamVjdC0+aW5oZXJpdHMoUHJveHlPYmplY3Q6OmluZm8oKSkpKQor
ICAgICAgICBpZiAoTElLRUxZKHByb3h5T2JqZWN0QXNPYmplY3QtPnR5cGUoKSA9PSBQcm94eU9i
amVjdFR5cGUpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgU3RydWN0dXJlJiBzdHJ1
Y3R1cmUgPSAqdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHByb3h5T2JqZWN0QXNPYmpl
Y3QtPnN0cnVjdHVyZUlEKCkpOwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHN0cnVjdHVy
ZS5zdG9yZWRQcm90b3R5cGUoKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBwcm94eU9i
amVjdEFzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocHJvdG90eXBlLmlzT2JqZWN0KCkpOwogICAgICAgICBwcm94eU9iamVjdEFzT2JqZWN0ID0g
YXNPYmplY3QocHJvdG90eXBlKTsKICAgICB9CkBAIC0xMDA2LDcgKzEwMDUsOSBAQCBib29sIFBy
b3h5T2JqZWN0OjpwZXJmb3JtU2V0UHJvdG90eXBlKEV4CiAgICAgaWYgKHRhcmdldElzRXh0ZW5z
aWJsZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBKU1ZhbHVlIHRhcmdldFByb3RvdHlw
ZSA9IHRhcmdldC0+cHJvdG90eXBlKCk7CisgICAgSlNWYWx1ZSB0YXJnZXRQcm90b3R5cGUgPSB0
YXJnZXQtPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFzYW1lVmFsdWUoZXhlYywgcHJvdG90eXBl
LCB0YXJnZXRQcm90b3R5cGUpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJQcm94eSAnc2V0UHJvdG90eXBlT2YnIHRyYXAgcmV0dXJuZWQgdHJ1ZSB3aGVu
IGl0cyB0YXJnZXQgaXMgbm9uLWV4dGVuc2libGUgYW5kIHRoZSBuZXcgcHJvdG90eXBlIHZhbHVl
IGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCBwcm90b3R5cGUgdmFsdWUuIEl0IHNob3Vs
ZCBoYXZlIHJldHVybmVkIGZhbHNlLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAko
cmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNyArMjEwLDcgQEAgaW5saW5lIGJv
b2wgU3RydWN0dXJlOjppc1ZhbGlkKEpTR2xvYmFsTwogICAgICAgICBpZiAoYXNPYmplY3QocHJv
dG90eXBlKS0+c3RydWN0dXJlKCkgIT0gY2FjaGVkU3RydWN0dXJlLT5nZXQoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgKytjYWNoZWRTdHJ1Y3R1cmU7Ci0gICAgICAgIHBy
b3RvdHlwZSA9IGFzT2JqZWN0KHByb3RvdHlwZSktPnByb3RvdHlwZSgpOworICAgICAgICBwcm90
b3R5cGUgPSBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICB9
CiAgICAgcmV0dXJuIHByb3RvdHlwZS5pc051bGwoKSAmJiAhKmNhY2hlZFN0cnVjdHVyZTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHktaGFzLXByb3Bl
cnR5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
cHJveHktaGFzLXByb3BlcnR5LmpzCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3Byb3h5LWhhcy1wcm9wZXJ0eS5qcwkod29ya2luZyBjb3B5
KQpAQCAtMzY3LDMgKzM2Nyw3OSBAQCBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgICAgICBhc3Nl
cnQodGhyZXcpOwogICAgIH0KIH0KKworeworICAgIGxldCBlMSA9IG51bGw7CisgICAgbGV0IGUy
ID0gbnVsbDsKKyAgICBsZXQgdDEgPSB7fTsKKyAgICBsZXQgY2FsbGVkMSA9IGZhbHNlOworICAg
IGxldCBoMSA9IHsKKyAgICAgICAgaGFzOiBmdW5jdGlvbih0aGVUYXJnZXQsIHByb3BOYW1lKSB7
CisgICAgICAgICAgICBjYWxsZWQxID0gdHJ1ZTsKKyAgICAgICAgICAgIGUxID0gbmV3IEVycm9y
OworICAgICAgICAgICAgdGhyb3cgZTE7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9OworICAgIGxldCBwMSA9IG5ldyBQcm94eSh0MSwgaDEpOworCisgICAgbGV0
IHQyID0ge307CisgICAgdDIuX19wcm90b19fID0gcDE7CisgICAgbGV0IGgyID0geworICAgICAg
ICBoYXM6IGZ1bmN0aW9uKHRoZVRhcmdldCwgcHJvcE5hbWUpIHsKKyAgICAgICAgICAgIGUyID0g
bmV3IEVycm9yOworICAgICAgICAgICAgdGhyb3cgZTI7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9OworICAgIGxldCBwMiA9IG5ldyBQcm94eSh0MiwgaDIpOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAgbGV0IHRocmV3ID0g
ZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAxMCBpbiBwMjsKKyAgICAgICAgfSBj
YXRjaChlKSB7CisgICAgICAgICAgICBhc3NlcnQoZSA9PT0gZTIpOworICAgICAgICAgICAgdGhy
ZXcgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7CisgICAgICAgIGFz
c2VydCghY2FsbGVkMSk7CisgICAgfQorfQorCit7CisgICAgbGV0IGUxID0gbnVsbDsKKyAgICBs
ZXQgZTIgPSBudWxsOworICAgIGxldCB0MSA9IHt9OworICAgIGxldCBjYWxsZWQxID0gZmFsc2U7
CisgICAgbGV0IGgxID0geworICAgICAgICBoYXM6IGZ1bmN0aW9uKHRoZVRhcmdldCwgcHJvcE5h
bWUpIHsKKyAgICAgICAgICAgIGNhbGxlZDEgPSB0cnVlOworICAgICAgICAgICAgZTEgPSBuZXcg
RXJyb3I7CisgICAgICAgICAgICB0aHJvdyBlMTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH07CisgICAgbGV0IHAxID0gbmV3IFByb3h5KHQxLCBoMSk7CisKKyAg
ICBsZXQgdDIgPSB7fTsKKyAgICB0Mi5fX3Byb3RvX18gPSBwMTsKKyAgICBsZXQgaDIgPSB7Cisg
ICAgICAgIGhhczogZnVuY3Rpb24odGhlVGFyZ2V0LCBwcm9wTmFtZSkgeworICAgICAgICAgICAg
ZTIgPSBuZXcgRXJyb3I7CisgICAgICAgICAgICB0aHJvdyBlMjsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH07CisgICAgbGV0IHAyID0gbmV3IFByb3h5KHQyLCBo
Mik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgeworICAgICAgICBsZXQgdGhy
ZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICJmb28iIGluIHAyOworICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGFzc2VydChlID09PSBlMik7CisgICAgICAg
ICAgICB0aHJldyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAg
ICAgICAgYXNzZXJ0KCFjYWxsZWQxKTsKKyAgICB9Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNTQgQEAKKzIwMTYtMDMtMDYgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgW1tHZXRQcm90b3R5cGVPZl1dIHNob3VsZCBiZSBhIGZ1bGx5IHZpcnR1
YWwgbWV0aG9kIGluIHRoZSBtZXRob2QgdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAwMgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlw
IFBpemxvLgorCisgICAgICAgIENoYW5nZSA6OmdldFByb3RvdHlwZSguKSB0byA6OnByb3RvdHlw
ZSguKSBpbiB2YXJpb3VzIHBsYWNlcyB0byBwcmV2ZW50CisgICAgICAgIGEgbmFtaW5nIGNvbmZs
aWN0IHdpdGggSlNDLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIG5vIG5ldyBmdW5j
dGlvbmFsaXR5IHdhcyBhZGRlZC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNJbWFnZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdl
bmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAoR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Y3JlYXRlUHJv
dG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6cHJvdG90
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0UHJvdG90
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnByb3RvdHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0UHJvdG90eXBlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3RDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OmNyZWF0ZVBy
b3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdDo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0OjpnZXRQcm90b3R5cGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Y3JlYXRlUHJv
dG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpwcm90
b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldFBy
b3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGVQcm90b3R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldFByb3RvdHlwZSk6IERl
bGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZl
bnRUYXJnZXQ6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVu
dFRhcmdldDo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0
OjpnZXRQcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0
aW9uQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEV4Y2VwdGlvbjo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEV4Y2VwdGlvbjo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2Vw
dGlvbjo6Z2V0UHJvdG90eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpjcmVhdGVQ
cm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6
cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6
OmdldFByb3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2U6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RJbnRlcmZhY2U6OnByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RJbnRlcmZhY2U6OmdldFByb3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
cjo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3I6OmdldFByb3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmdldFByb3RvdHlwZSk6IERlbGV0ZWQu
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpjcmVhdGVQ
cm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6cHJv
dG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldFBy
b3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGU6
OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlOjpwcm90b3R5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9kZTo6Z2V0UHJvdG90eXBlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYzo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRl
dGVybWluaXN0aWM6OnByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb25kZXRl
cm1pbmlzdGljOjpnZXRQcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmg6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RPYmpDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0T2JqOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T2JqOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqOjpnZXRQcm90b3R5
cGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZVByb3RvdHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpwcm90b3R5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0UHJv
dG90eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Y3JlYXRlUHJvdG90eXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnByb3RvdHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRQcm90b3R5cGUp
OiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpwcm90b3R5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpnZXRQcm90b3R5cGUp
OiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlw
ZWRlZnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0VHlwZWRlZnM6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RUeXBlZGVmczo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVk
ZWZzOjpnZXRQcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU2F0dHJpYnV0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU2F0dHJpYnV0ZUNvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU2F0dHJp
YnV0ZTo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTYXR0cmlidXRlOjpw
cm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNhdHRyaWJ1dGU6OmdldFByb3RvdHlwZSk6
IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRl
Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU3JlYWRvbmx5OjpjcmVhdGVQcm90b3R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seTo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTcmVhZG9ubHk6OmdldFByb3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuaDoKKwogMjAxNi0wMy0wNiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIEVuYWJsZSBET00g
Y2xhc3MgY3JlYXRlIGZ1bmN0aW9ucyB0byB0YWtlIHBhcmFtZXRlcnMgaW4gY2FzZSBvZiBKU0J1
aWx0aW5Db25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dTaGVsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dTaGVsbC5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3
ICs4NSw3IEBAIHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWYKICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTRE9NV2luZG93OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIDAs
IHByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNET01XaW5kb3cqIGpzRE9NV2luZG93ID0gSlNET01X
aW5kb3c6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCAqZG9tV2luZG93LCB0aGlzKTsKICAgICBwcm90
b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3Qodm0sIGpzRE9NV2luZG93KTsKLSAg
ICBwcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbih2
bSwgSlNFdmVudFRhcmdldDo6Z2V0UHJvdG90eXBlKHZtLCBqc0RPTVdpbmRvdykpOworICAgIHBy
b3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBK
U0V2ZW50VGFyZ2V0Ojpwcm90b3R5cGUodm0sIGpzRE9NV2luZG93KSk7CiAgICAgc2V0V2luZG93
KHZtLCBqc0RPTVdpbmRvdyk7CiAgICAgQVNTRVJUKGpzRE9NV2luZG93LT5nbG9iYWxPYmplY3Qo
KSA9PSBqc0RPTVdpbmRvdyk7CiAgICAgQVNTRVJUKHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkg
PT0ganNET01XaW5kb3cpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFn
ZUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiw3IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRSgK
IAogdGVtcGxhdGU8PiB2b2lkIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU0hUTUxJbWFnZUVsZW1lbnQ6
OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIE5vbmUpOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU0hUTUxJbWFnZUVsZW1lbnQ6OnByb3Rv
dHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIE5vbmUpOwogfQogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNJbWFnZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoVk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2xv
YmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwogICAgICAgICBBU1NF
UlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3Qo
KSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAgICAgICAgIHdvcmtlckdsb2JhbFNj
b3BlUHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtl
ckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlUHJv
dG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oKm1fdm0s
IEpTRXZlbnRUYXJnZXQ6OmdldFByb3RvdHlwZSgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXIuZ2V0KCkpKTsKKyAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUtPnN0cnVj
dHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbigqbV92bSwgSlNFdmVudFRhcmdl
dDo6cHJvdG90eXBlKCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSkpOwog
ICAgICAgICBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0R2xvYmFs
T2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CiAgICAgfQog
ICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0g
bV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDE5NzY0NikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC05ODEsNyArOTgxLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAg
IyBQcm90b3R5cGUKICAgICB1bmxlc3MgKElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpKSB7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIik7Ci0g
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdl
dFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIik7CisgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlw
ZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIik7CiAgICAgfQogCiAgICAgIyBK
U1ZhbHVlIHRvIGltcGxlbWVudGF0aW9uIHR5cGUKQEAgLTIxOTUsMTQgKzIxOTUsMTQgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU09i
amVjdCogJHtjbGFzc05hbWV9OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7
CiAgICAgICAgIGlmICgkaGFzUGFyZW50ICYmICRwYXJlbnRDbGFzc05hbWUgbmUgIkpTQzo6RE9N
Tm9kZUZpbHRlciIpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAke2NsYXNz
TmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCAke3BhcmVu
dENsYXNzTmFtZX06OmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSkpO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJHtjbGFzc05hbWV9UHJvdG90
eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgJHtwYXJlbnRDbGFzc05hbWV9Ojpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCkpKTtcbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgbXkgJHByb3RvdHlwZSA9ICRpbnRlcmZhY2UtPmlzRXhjZXB0aW9uID8gImVycm9yUHJvdG90
eXBlIiA6ICJvYmplY3RQcm90b3R5cGUiOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+JHtwcm90b3R5cGV9KCkpKTtcbiIpOwogICAgICAgICB9CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIAotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIkpTT2JqZWN0KiAke2NsYXNzTmFtZX06OmdldFByb3RvdHlwZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJKU09iamVjdCogJHtjbGFzc05hbWV9Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8
JHtjbGFzc05hbWV9Pih2bSwgZ2xvYmFsT2JqZWN0KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CkBAIC01MDMxLDcgKzUwMzEsNyBAQCBzdWIgR2VuZXJhdGVDb25z
dHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICB9IGVsc2lmICgkaW50ZXJmYWNlLT5pc0NhbGxiYWNr
KSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
T2JqZWN0KTtcbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgJHtjbGFzc05h
bWV9OjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBEb250RW51bSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCAke2NsYXNzTmFtZX06OnBy
b3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTtcbiIpOwogICAgIH0KIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0
cmluZyhBU0NJSUxpdGVyYWwoXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIikpKSwgUmVhZE9ubHkg
fCBEb250RW51bSk7XG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3Bw
CShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyAr
OTMsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0QWN0aXZlRE9NT2JqZWN0CiAKIHRlbXBs
YXRlPD4gdm9pZCBKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RBY3RpdmVE
T01PYmplY3Q6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgSlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojpwcm90b3R5cGUodm0sICZnbG9iYWxP
YmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJp
bmcoQVNDSUlMaXRlcmFsKCJUZXN0QWN0aXZlRE9NT2JqZWN0IikpKSwgUmVhZE9ubHkgfCBEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTEyOSw3ICsxMjksNyBAQCBKU09i
amVjdCogSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpjcmVhdGVQCiAgICAgcmV0dXJuIEpTVGVzdEFj
dGl2ZURPTU9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdEFj
dGl2ZURPTU9iamVjdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAotSlNPYmplY3QqIEpTVGVz
dEFjdGl2ZURPTU9iamVjdDo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OnByb3RvdHlwZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERP
TVByb3RvdHlwZTxKU1Rlc3RBY3RpdmVET01PYmplY3Q+KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2
ZURPTU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuaAkocmV2aXNpb24gMTk3NjQ2KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsKIAogICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0m
LCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3Rv
dHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0QWN0
aXZlRE9NT2JqZWN0KiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0M6OkpTQ2VsbCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHRlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3RDbGFzc1dpdGhKU0J1aWwKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3I6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpz
Tm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvciIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkg
fCBEb250RW51bSk7CiB9CkBAIC0xMTAsNyArMTEwLDcgQEAgSlNPYmplY3QqIEpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cgogICAgIHJldHVybiBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09i
amVjdCogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OmdldFByb3RvdHlwZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4odm0sIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Iu
aAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc1N0
YXRpY1Byb3BlcnR5VGFibGUgPSBmYWxzZTsKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBj
cmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlND
OjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3IqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDOjpKU0NlbGwqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCShyZXZpc2lv
biAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NSw3ICs3NSw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RDdXN0b21Db25z
dHJ1Y3QKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3Q6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3Q6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpz
Tm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
UmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMDksNyArMTA5LDcgQEAgSlNPYmplY3QqIEpT
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSQogICAgIHJldHVybiBKU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmpl
Y3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3Q6OmdldFByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3Q6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdD4odm0sIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3QuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSBmYWxzZTsKIAogICAg
IHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqIHRvV3JhcHBlZChKU0M6
OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAxOTc2NDYp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHRlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3RDdXN0b21OYW1lZEdldHQKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Omdl
dFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxp
dGVyYWwoIlRlc3RDdXN0b21OYW1lZEdldHRlciIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
UmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMTIsNyArMTEyLDcgQEAgSlNPYmplY3QqIEpT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpjcmVhdAogICAgIHJldHVybiBKU1Rlc3RDdXN0b21OYW1l
ZEdldHRlclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXI6OmdldFByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OnByb3RvdHlwZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERP
TVByb3RvdHlwZTxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcj4odm0sIGdsb2JhbE9iamVjdCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAkocmV2aXNpb24gMTk3NjQ2
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSBmYWxzZTsKIAog
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBl
KEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmpl
Y3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRp
YyBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0
cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0
cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHRlbXBsYXRlPD4g
SlNWYWx1ZSBKU1Rlc3RFdmVudENvbnN0cnVjdG8KIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpnZXRQcm90
b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51
bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVz
dEV2ZW50Q29uc3RydWN0b3I6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwo
IlRlc3RFdmVudENvbnN0cnVjdG9yIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKIH0KQEAgLTE1Miw3ICsxNTIsNyBAQCBKU09iamVjdCogSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlCiAgICAgcmV0dXJuIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQ
cm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9y
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvcjo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K0pTT2JqZWN0KiBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpwcm90b3R5cGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4odm0sIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSBmYWxzZTsKIAogICAgIHN0YXRpYyBKU0M6
OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShK
U0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0RXZlbnRDb25z
dHJ1Y3RvciogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0M6OkpTQ2VsbCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHJldmlz
aW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgdGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEV2ZW50VGFyZ2V0Q29ucwogCiB0ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0UHJvdG90
eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0p
OworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RF
dmVudFRhcmdldDo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdEV2
ZW50VGFyZ2V0IikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVt
KTsKIH0KQEAgLTExMCwxMCArMTEwLDEwIEBAIEpTVGVzdEV2ZW50VGFyZ2V0OjpKU1Rlc3RFdmVu
dFRhcmdldChTdHIKIAogSlNPYmplY3QqIEpTVGVzdEV2ZW50VGFyZ2V0OjpjcmVhdGVQcm90b3R5
cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBK
U1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVz
dEV2ZW50VGFyZ2V0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwg
SlNFdmVudFRhcmdldDo6Z2V0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpKSk7CisgICAgcmV0
dXJuIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
SlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBKU0V2ZW50VGFyZ2V0Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCkpKTsKIH0KIAot
SlNPYmplY3QqIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdEV2ZW50VGFyZ2V0Ojpwcm90
b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVy
biBnZXRET01Qcm90b3R5cGU8SlNUZXN0RXZlbnRUYXJnZXQ+KHZtLCBnbG9iYWxPYmplY3QpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlID0gZmFsc2U7CiAKICAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpK
U0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlND
OjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgVGVzdEV2ZW50VGFyZ2V0
KiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAko
cmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAg
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEV4Y2VwdGlvbkNvbnN0cgogCiB0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RXhjZXB0aW9uOjpnZXRQcm90b3R5
cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7
CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEV4
Y2VwdGlvbjo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFt
ZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdEV4Y2Vw
dGlvbiIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9
CkBAIC0xMjEsNyArMTIxLDcgQEAgSlNPYmplY3QqIEpTVGVzdEV4Y2VwdGlvbjo6Y3JlYXRlUHJv
dG90eQogICAgIHJldHVybiBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmVycm9yUHJvdG90eXBlKCkpKTsKIH0KIAotSlNP
YmplY3QqIEpTVGVzdEV4Y2VwdGlvbjo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RFeGNlcHRpb246OnByb3RvdHlwZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERP
TVByb3RvdHlwZTxKU1Rlc3RFeGNlcHRpb24+KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFeGNlcHRpb24uaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQ
cm9wZXJ0eVRhYmxlID0gdHJ1ZTsKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQ
cm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0RXhjZXB0aW9uKiB0b1dyYXBwZWQoSlNDOjpK
U1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVj
dCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHRlbXBsYXRlPD4g
SlNWYWx1ZSBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2gKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpn
ZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJ
SUxpdGVyYWwoIlRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlIikpKSwgUmVhZE9ubHkgfCBEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBKU09iamVj
dCogSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6Y3JlCiAgICAgcmV0dXJuIEpTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGVQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCog
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAg
IHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4odm0sIGds
b2JhbE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
LmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc1N0YXRpY1Byb3Bl
cnR5VGFibGUgPSBmYWxzZTsKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90
b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Cisg
ICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogdG9XcmFwcGVk
KEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0
SW50ZXJmYWNlQ29uc3RyCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBKU1Rlc3RJbnRlcmZhY2U6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0SW50ZXJmYWNlOjpwcm90b3R5cGUodm0sICZn
bG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZt
LCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0SW50ZXJmYWNlIikpKSwgUmVhZE9ubHkgfCBEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXMo
dm0sIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKQEAgLTM5
OSw3ICszOTksNyBAQCBKU09iamVjdCogSlNUZXN0SW50ZXJmYWNlOjpjcmVhdGVQcm90b3R5CiAg
ICAgcmV0dXJuIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAotSlNPYmplY3Qq
IEpTVGVzdEludGVyZmFjZTo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RJbnRlcmZhY2U6OnByb3RvdHlwZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3Rv
dHlwZTxKU1Rlc3RJbnRlcmZhY2U+KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2UuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3
ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0
eVRhYmxlID0gZmFsc2U7CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90
eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAg
IHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKICAgICBzdGF0aWMgVGVzdEludGVyZmFjZSogdG9XcmFwcGVkKEpTQzo6SlNWYWx1
ZSk7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNp
b24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzks
NyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0SlNCdWlsdGluQ29uc3RyCiAKIHRlbXBsYXRl
PD4gdm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0g
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yOjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpwcm90b3R5cGUo
dm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJp
bmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiKSkp
LCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTIx
LDcgKzEyMSw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Y3IKICAg
ICByZXR1cm4gSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBl
KCkpKTsKIH0KIAotSlNPYmplY3QqIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRQcm90
b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3I+KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlID0gZmFsc2U7CiAKICAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZN
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90
b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCShyZXZpc2lvbiAxOTc2NDYp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgdGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE1lZGlhUXVlcnlMaXN0TAogCiB0ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXI6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6cHJvdG90eXBlKHZt
LCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5n
KCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiKSkp
LCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTEy
LDcgKzExMiw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjoKICAg
ICByZXR1cm4gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3Rv
dHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpn
ZXRQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmpl
Y3QqIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAkocmV2aXNpb24gMTk3
NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzU3RhdGljUHJvcGVydHlUYWJsZSA9IGZh
bHNlOwogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZN
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQ
cm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAg
ICAgc3RhdGljIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiB0b1dyYXBwZWQoSlNDOjpKU1Zh
bHVlKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0UHJvdG90eXBl
KHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yOjpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0
TmFtZWRDb25zdHJ1Y3RvciIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBE
b250RW51bSk7CiB9CkBAIC0xMTEsNyArMTExLDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVz
dE5hbWVkQ29uc3RydWN0bwogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ck5hbWVkQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0UHJvdG90eXBlKHZt
LCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yOjpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJBdWRpbyIp
KSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0x
NDUsNyArMTQ1LDcgQEAgSlNPYmplY3QqIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmNyZWF0ZQog
ICAgIHJldHVybiBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsK
IH0KIAotSlNPYmplY3QqIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldFByb3RvdHlwZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+
KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ci5oCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0
eVRhYmxlID0gZmFsc2U7CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90
eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAg
IHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKICAgICBzdGF0aWMgVGVzdE5hbWVkQ29uc3RydWN0b3IqIHRvV3JhcHBlZChKU0M6
OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb2RlLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3
ICs4MSw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROb2RlQ29uc3RydWN0b3IKIAogdGVt
cGxhdGU8PiB2b2lkIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROb2RlOjpnZXRQcm90b3R5
cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7
CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5v
ZGU6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpz
Tm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3ROb2RlIikpKSwg
UmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTExMywx
MCArMTEzLDEwIEBAIEpTVGVzdE5vZGU6OkpTVGVzdE5vZGUoU3RydWN0dXJlKiBzdHJ1Y3QKIAog
SlNPYmplY3QqIEpTVGVzdE5vZGU6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIEpTVGVzdE5vZGVQcm90b3R5cGU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3ROb2RlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGdsb2JhbE9iamVjdCwgSlNOb2RlOjpnZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCkpKTsKKyAgICByZXR1cm4gSlNUZXN0Tm9kZVByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIEpTVGVzdE5vZGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBKU05vZGU6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSkpOwogfQogCi1KU09iamVj
dCogSlNUZXN0Tm9kZTo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3ROb2RlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNU
ZXN0Tm9kZT4odm0sIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgJKHJldmlzaW9uIDE5
NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSBmYWxzZTsKIAogICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0m
LCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3Rv
dHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogCiAgICAgREVDTEFSRV9JTkZP
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCShyZXZpc2lvbiAx
OTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgdGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5vbmRldGVybWluaXN0aQogCiB0ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5vbmRldGVybWluaXN0aWM6
OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJ
TGl0ZXJhbCgiVGVzdE5vbmRldGVybWluaXN0aWMiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCks
IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTMzLDcgKzEzMyw3IEBAIEpTT2JqZWN0KiBK
U1Rlc3ROb25kZXRlcm1pbmlzdGljOjpjcmVhdGUKICAgICByZXR1cm4gSlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpY1Byb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdE5vbmRldGVy
bWluaXN0aWNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljOjpnZXRQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdE5vbmRldGVybWluaXN0aWM6OnByb3RvdHlwZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVBy
b3RvdHlwZTxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRl
cm1pbmlzdGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuaAkocmV2aXNpb24gMTk3NjQ2KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWlu
aXN0aWMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzU3RhdGljUHJvcGVydHlUYWJsZSA9IGZhbHNlOwogCiAgICAgc3Rh
dGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpW
TSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJv
dG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIFRlc3RO
b25kZXRlcm1pbmlzdGljKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAxOTc2
NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA1LDcgKzUwNSw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1
ZSBKU1Rlc3RPYmpDb25zdHJ1Y3RvcjoKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE9iakNvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIEpTVGVzdE9iajo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RPYmo6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVj
dCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhB
U0NJSUxpdGVyYWwoIlRlc3RPYmplY3QiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRP
bmx5IHwgRG9udEVudW0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0T2Jq
Q29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOwpAQCAtNzYyLDcgKzc2Miw3IEBAIEpTT2Jq
ZWN0KiBKU1Rlc3RPYmo6OmNyZWF0ZVByb3RvdHlwZShWTSYKICAgICByZXR1cm4gSlNUZXN0T2Jq
UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNUZXN0T2JqUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90
b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0T2JqOjpnZXRQcm90b3R5cGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdE9iajo6cHJv
dG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1
cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE9iaj4odm0sIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5oCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSB0
cnVlOwogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZN
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQ
cm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAg
ICAgc3RhdGljIFRlc3RPYmoqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHJldmlzaW9uIDE5NzY0
NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBA
IHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3QKIAogdGVtcGxhdGU8PiB2
b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnByb3RvdHlw
ZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0
cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
IikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KQEAg
LTE4NCw3ICsxODQsNyBAQCBKU09iamVjdCogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
CiAgICAgcmV0dXJuIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQ
cm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pT
T2JqZWN0KiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpwcm90b3R5cGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRET01Qcm90b3R5
cGU8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4odm0sIGdsb2JhbE9iamVjdCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgJKHJldmlzaW9u
IDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUg
PSBmYWxzZTsKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlND
OjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCog
Z2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwogICAgIHN0YXRpYyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9XcmFwcGVkKEpTQzo6
SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVC
dWlsdGlucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVC
dWlsdGlucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgdGVtcGxhdGU8PiBK
U1ZhbHVlIEpTVGVzdE92ZXJyaWRlQnVpbHRpbgogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T3Zl
cnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldFByb3Rv
dHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVt
KTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluczo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
VGVzdE92ZXJyaWRlQnVpbHRpbnMiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5
IHwgRG9udEVudW0pOwogfQpAQCAtMTE0LDcgKzExNCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zOjpjcmVhdGUKICAgICByZXR1cm4gSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1By
b3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qt
Pm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zOjpnZXRQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
SlNPYmplY3QqIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
IGJvb2wgaGFzU3RhdGljUHJvcGVydHlUYWJsZSA9IGZhbHNlOwogCiAgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIFRlc3RPdmVycmlkZUJ1
aWx0aW5zKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkocmV2aXNpb24g
MTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0
LDcgKzg0LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcAogCiB0
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpnZXRQcm90b3R5cGUo
dm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Cisg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJ
TGl0ZXJhbCgiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIpKSksIFJlYWRPbmx5
IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMjMsNyArMTIzLDcg
QEAgSlNPYmplY3QqIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludAogICAgIHJldHVybiBK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVj
dFByb3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2U6OmdldFByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCitKU09iamVjdCogSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpw
cm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJl
dHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Pih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzU3RhdGljUHJvcGVydHlUYWJsZSA9IGZhbHNl
OwogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwg
SlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90
b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAg
c3RhdGljIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIHRvV3JhcHBlZChKU0M6
OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFR5cGVkZWZz
Q29uc3RydQogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rl
c3RUeXBlZGVmczo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBKU1Rlc3RUeXBlZGVmczo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFT
Q0lJTGl0ZXJhbCgiVGVzdFR5cGVkZWZzIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDIpLCBSZWFk
T25seSB8IERvbnRFbnVtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdFR5
cGVkZWZzQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOwpAQCAtMTk3LDcgKzE5Nyw3IEBA
IEpTT2JqZWN0KiBKU1Rlc3RUeXBlZGVmczo6Y3JlYXRlUHJvdG90eXAKICAgICByZXR1cm4gSlNU
ZXN0VHlwZWRlZnNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAotSlNPYmplY3QqIEpTVGVzdFR5cGVkZWZz
OjpnZXRQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNP
YmplY3QqIEpTVGVzdFR5cGVkZWZzOjpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0VHlwZWRl
ZnM+KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmgJKHJldmlzaW9u
IDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RUeXBlZGVmcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsKIAogICAg
IHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBU
ZXN0VHlwZWRlZnMqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQzo6SlNDZWxsKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNhdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTYXR0
cmlidXRlQ29uc3RydWN0bwogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNhdHRyaWJ1dGVDb25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBKU2F0dHJpYnV0ZTo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBKU2F0dHJpYnV0ZTo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFT
Q0lJTGl0ZXJhbCgiYXR0cmlidXRlIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCBKU09iamVjdCogSlNhdHRyaWJ1
dGU6OmNyZWF0ZVByb3RvdHlwZShWCiAgICAgcmV0dXJuIEpTYXR0cmlidXRlUHJvdG90eXBlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNhdHRyaWJ1dGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmVycm9yUHJvdG90eXBlKCkpKTsK
IH0KIAotSlNPYmplY3QqIEpTYXR0cmlidXRlOjpnZXRQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTYXR0cmlidXRlOjpwcm90b3R5cGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRE
T01Qcm90b3R5cGU8SlNhdHRyaWJ1dGU+KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmli
dXRlLmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlID0g
ZmFsc2U7CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6
Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdl
dFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
ICAgICBzdGF0aWMgYXR0cmlidXRlKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAJKHJldmlz
aW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U3JlYWRvbmx5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCB0ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNyZWFkb25seUNvbnN0cnVjdG9yCiAKIHRlbXBsYXRlPD4gdm9pZCBKU3JlYWRv
bmx5Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNyZWFkb25seTo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU3JlYWRvbmx5Ojpwcm90b3R5cGUodm0sICZn
bG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZt
LCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJyZWFkb25seSIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigw
KSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMDQsNyArMTA0LDcgQEAgSlNPYmplY3Qq
IEpTcmVhZG9ubHk6OmNyZWF0ZVByb3RvdHlwZShWTQogICAgIHJldHVybiBKU3JlYWRvbmx5UHJv
dG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNyZWFkb25seVByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90
eXBlKCkpKTsKIH0KIAotSlNPYmplY3QqIEpTcmVhZG9ubHk6OmdldFByb3RvdHlwZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNyZWFkb25seTo6cHJv
dG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1
cm4gZ2V0RE9NUHJvdG90eXBlPEpTcmVhZG9ubHk+KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNy
ZWFkb25seS5oCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxl
ID0gZmFsc2U7CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKICAgICBzdGF0aWMgcmVhZG9ubHkqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273152</attachid>
            <date>2016-03-06 16:12:08 -0800</date>
            <delta_ts>2016-03-06 16:25:33 -0800</delta_ts>
            <desc>v3</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>123908</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NjQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMyBA
QAorMjAxNi0wMy0wNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbW0dldFByb3RvdHlwZU9mXV0gc2hvdWxkIGJlIGEgZnVsbHkgdmlydHVhbCBtZXRob2QgaW4g
dGhlIG1ldGhvZCB0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU1MDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBtYWtlcyB1cyBtb3JlIGNvbnNpc3RlbnQgd2l0aCBob3cgdGhlIEVT
NiBzcGVjaWZpY2F0aW9uIG1vZGVscyB0aGUKKyAgICAgICAgW1tHZXRQcm90b3R5cGVPZl1dIHRy
YXAuIE1vdmluZyB0aGlzIG1ldGhvZCBpbnRvIENsYXNzSW5mbzo6bWV0aG9kVGFibGUgCisgICAg
ICAgIGlzIGEgcHJlcmVxdWlzaXRlIGZvciBpbXBsZW1lbnRpbmcgUHJveHkuW1tHZXRQcm90b3R5
cGVPZl1dLiBUaGlzIHBhdGNoCisgICAgICAgIHN0aWxsIGFsbG93cyBkaXJlY3RseSBhY2Nlc3Np
bmcgdGhlIHByb3RvdHlwZSBmb3Igc2l0dWF0aW9ucyB3aGVyZSB0aGlzCisgICAgICAgIGlzIHRo
ZSBkZXNpcmVkIGJlaGF2aW9yLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gZ2V0dGluZyB0aGUgaW50
ZXJuYWwKKyAgICAgICAgW1tQcm90b3R5cGVdXSBmaWVsZCBhcyBkZXNjcmliZWQgaW4gdGhlIHNw
ZWNpZmljYXRpb24uIAorCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAg
KEpTT2JqZWN0R2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvdG90eXBlKToK
KyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxh
Z3MpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKToKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0
YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKToKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNl
b2YpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChmdW5jdGlvbkNyZWF0
ZVByb3h5KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChK
U0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzcGVjaWVz
Q29uc3RydWN0QXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
UHJvdG9GdW5jQmluZCk6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKToK
KyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAgICogcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpoYXNJbnN0YW5jZUJvdW5k
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpnZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzZXRQcm90b3R5cGUpOgorICAgICAg
ICAoSlNDOjpKU0NlbGw6OmdldFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aGFz
TGVnYWN5UHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpsYXN0SW5Qcm90b3R5cGVDaGFpbik6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvYmplY3RQcm90b3R5cGVJc1NhbmUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5cGVDaGFpbklzU2FuZSk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzdHJpbmdQcm90b3R5cGVDaGFpbklzU2FuZSk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpHbG9iYWxGdW5jUHJvdG9HZXR0ZXJG
dW5jdG9yOjpHbG9iYWxGdW5jUHJvdG9HZXR0ZXJGdW5jdG9yKToKKyAgICAgICAgKEpTQzo6R2xv
YmFsRnVuY1Byb3RvR2V0dGVyRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6Omds
b2JhbEZ1bmNQcm90b0dldHRlcik6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9u
bWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXRJbmxpbmVTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZVdp
dGhDeWNsZUNoZWNrKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJpdmF0ZUZ1
bmNJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9u
SG9sZUZvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjphdHRlbXB0VG9JbnRl
cmNlcHRQdXRCeUluZGV4T25Ib2xlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEdlbmVy
aWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpKU09iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm90b3R5cGVEaXJlY3Qp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldFByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25J
bmRleFByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpwcm90b3R5cGUpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3h5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6c2V0VGFyZ2V0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdFR5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5
cGVPZkZ1bmN0b3I6Ok9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2ZGdW5jdG9yKToKKyAg
ICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZkZ1bmN0b3I6Om9wZXJh
dG9yKCkpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKToK
KyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om9i
amVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlHZXQpOgorICAgICAgICAoSlNDOjpQ
cm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aXNWYWxpZCk6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL3Byb3h5LWhhcy1wcm9wZXJ0eS5qczoKKyAgICAgICAgKGFzc2Vy
dC5sZXQuaDEuaGFzKToKKyAgICAgICAgKGFzc2VydC5sZXQuaDIuaGFzKToKKyAgICAgICAgKGFz
c2VydCk6CisKIDIwMTYtMDMtMDYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTc2NDUuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMjgsNyArMTIyOCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmUKICAgICBpZiAoIXRhcmdldC5pc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IEpTT2JqZWN0KiBqc1RhcmdldCA9IGFzT2JqZWN0KHRhcmdldC5hc0NlbGwoKSk7Ci0gICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc1RhcmdldC0+cHJvdG90eXBlKCkpOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZt
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNUYXJnZXQtPmdldFByb3RvdHlwZURp
cmVjdCgpKTsKICAgICBKU1Byb3h5KiBwcm94eSA9IEpTUHJveHk6OmNyZWF0ZShleGVjLT52bSgp
LCBzdHJ1Y3R1cmUsIGpzVGFyZ2V0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb3h5
KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCShy
ZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDggKzI2Nyw4IEBAIEpTVmFsdWVSZWYgSlNPYmpl
Y3RHZXRQcm90b3R5cGUoSlNDb250ZXgKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKIAotICAgIEpTT2JqZWN0KiBqc09iamVj
dCA9IHRvSlMob2JqZWN0KTsKLSAgICByZXR1cm4gdG9SZWYoZXhlYywganNPYmplY3QtPnByb3Rv
dHlwZSgpKTsKKyAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7IAorICAgIHJl
dHVybiB0b1JlZihleGVjLCBqc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkpOwogfQogCiB2
b2lkIEpTT2JqZWN0U2V0UHJvdG90eXBlKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgSlNWYWx1ZVJlZiB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5Miw2ICsx
MzkyLDE1IEBAIGludDY0X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0RG8KICAgICBy
ZXR1cm4gdHJ5Q29udmVydFRvSW50NTIodmFsdWUpOwogfQogCitzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIHZh
bHVlLCBKU0NlbGwqIHByb3RvKSAvLyBSZXR1cm5zIGpzQm9vbGVhbihUcnVlfEZhbHNlKSBvbiA2
NC1iaXQuCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgaWYgKEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5z
dGFuY2UoZXhlYywgdmFsdWUsIHByb3RvKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJu
IDA7Cit9CisKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVy
TG9nREZHKEV4ZWNTdGF0ZSogZXhlYykgCiB7CiAgICAgZXhlYy0+dm0oKS50eXBlUHJvZmlsZXJM
b2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJMb2cgRnVsbCwgY2FsbGVkIGZy
b20gaW5zaWRlIERGRy4iKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUsOCBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTG9hZFZhcmFyZ3MoCiBpbnQ2NF90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ29udmVydEJveGVkRG91YmxlVG9JbnQ1MihFbmNvZGVkSlNWYWx1ZSk7CiBp
bnQ2NF90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29udmVydERvdWJsZVRvSW50NTIoZG91Ymxl
KTsKIAorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmYXVsdEhhc0luc3RhbmNlKEV4
ZWNTdGF0ZSosIEpTQ2VsbCogdmFsdWUsIEpTQ2VsbCogcHJvdG8pOworCiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RGRyhFeGVjU3RhdGUqKSBXVEZf
SU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBkZWJ1Z09wZXJhdGlvblByaW50U3BlY3Vs
YXRpb25GYWlsdXJlKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKikgV1RGX0lOVEVSTkFMOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQwLDYgKzI3NDAsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvCiAgICAgCiAgICAgLy8gV2FsayB1cCB0
aGUgcHJvdG90eXBlIGNoYWluIG9mIHRoZSB2YWx1ZSAoaW4gc2NyYXRjaFJlZyksIGNvbXBhcmlu
ZyB0byBwcm90b3R5cGVSZWcuCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AoJm1faml0
KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBwZXJmb3JtRGVmYXVsdEhhc0luc3RhbmNlID0g
bV9qaXQuYnJhbmNoOChNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoUHJveHlPYmplY3RUeXBlKSk7CiAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1
cmUoc2NyYXRjaFJlZywgc2NyYXRjaFJlZywgc2NyYXRjaDJSZWcpOwogICAgIG1faml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgU3RydWN0dXJlOjpwcm90b3R5
cGVPZmZzZXQoKSArIENlbGxQYXlsb2FkT2Zmc2V0KSwgc2NyYXRjaFJlZyk7CiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgaXNJbnN0YW5jZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwsIHNjcmF0Y2hSZWcsIHByb3RvdHlwZVJlZyk7CkBAIC0yNzU1LDcgKzI3NTcsMTgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGbwogI2Vsc2UKICAgICBt
X2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCksIHNjcmF0Y2hSZWcpOwog
I2VuZGlmCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcHV0UmVzdWx0ID0gbV9qaXQuanVtcCgp
OworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBkb25lSnVtcHM7IAorICAgIGRvbmVKdW1w
cy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKworICAgIHBlcmZvcm1EZWZhdWx0SGFzSW5zdGFuY2Uu
bGluaygmbV9qaXQpOworICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2hSZWcpOwor
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmYXVsdEhhc0luc3RhbmNlLCBzY3JhdGNoUmVn
LCB2YWx1ZVJlZywgcHJvdG90eXBlUmVnKTsgCisgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhz
Y3JhdGNoUmVnKTsKKyAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHNjcmF0Y2hSZWcp
OworI2VuZGlmCisgICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgIAogICAg
IGlzSW5zdGFuY2UubGluaygmbV9qaXQpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0yNzY0LDcg
KzI3NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvCiAgICAg
bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEpLCBzY3JhdGNoUmVnKTsK
ICNlbmRpZgogICAgIAotICAgIHB1dFJlc3VsdC5saW5rKCZtX2ppdCk7CisgICAgZG9uZUp1bXBz
LmxpbmsoJm1faml0KTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHlw
ZUluZm9GbGFncyhOb2RlKiBub2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTQ3
LDYgKzU5NDcsOCBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBsb29wID0gRlRMX05F
V19CTE9DSyhtX291dCwgKCJJbnN0YW5jZU9mIGxvb3AiKSk7CiAgICAgICAgIExCYXNpY0Jsb2Nr
IG5vdFlldEluc3RhbmNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJJbnN0YW5jZU9mIG5vdCB5
ZXQgaW5zdGFuY2UiKSk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9O
RVdfQkxPQ0sobV9vdXQsICgiSW5zdGFuY2VPZiBjb250aW51YXRpb24iKSk7CisgICAgICAgIExC
YXNpY0Jsb2NrIGxvYWRQcm90b3R5cGVEaXJlY3QgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIklu
c3RhbmNlb2YgZGVmYXVsdFByb3RvdHlwZUZ1bmN0aW9uIikpOworICAgICAgICBMQmFzaWNCbG9j
ayBkZWZhdWx0SGFzSW5zdGFuY2VTbG93ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJJbnN0YW5j
ZW9mIGRlZmF1bHRQcm90b3R5cGVGdW5jdGlvbiIpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1
ZSBjb25kaXRpb247CiAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKQpAQCAtNTk2NCw4ICs1OTY2LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIG9yaWdpbmFsVmFsdWUgPSBtX291dC5hbmNob3IoY2VsbCk7CiAgICAgICAgIG1f
b3V0Lmp1bXAobG9vcCk7CiAgICAgICAgIAotICAgICAgICBtX291dC5hcHBlbmRUbyhsb29wLCBu
b3RZZXRJbnN0YW5jZSk7CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxvb3AsIGxvYWRQcm90b3R5
cGVEaXJlY3QpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBtX291dC5waGkobV9vdXQuaW50NjQs
IG9yaWdpbmFsVmFsdWUpOworICAgICAgICBMVmFsdWUgdHlwZSA9IG1fb3V0LmxvYWQ4WmVyb0V4
dDMyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb1R5cGUpOworICAgICAgICBtX291dC5i
cmFuY2goCisgICAgICAgICAgICBtX291dC5ub3RFcXVhbCh0eXBlLCBtX291dC5jb25zdEludDMy
KFByb3h5T2JqZWN0VHlwZSkpLAorICAgICAgICAgICAgdXN1YWxseShsb2FkUHJvdG90eXBlRGly
ZWN0KSwgcmFyZWx5KGRlZmF1bHRIYXNJbnN0YW5jZVNsb3cpKTsKKworICAgICAgICBtX291dC5h
cHBlbmRUbyhsb2FkUHJvdG90eXBlRGlyZWN0LCBub3RZZXRJbnN0YW5jZSk7CiAgICAgICAgIExW
YWx1ZSBzdHJ1Y3R1cmUgPSBsb2FkU3RydWN0dXJlKHZhbHVlKTsKICAgICAgICAgTFZhbHVlIGN1
cnJlbnRQcm90b3R5cGUgPSBtX291dC5sb2FkNjQoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVy
ZV9wcm90b3R5cGUpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBpc0luc3RhbmNlUmVzdWx0ID0g
bV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKQEAgLTU5NzMsMTQgKzU5ODEsMjIgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmVxdWFsKGN1cnJlbnRQcm90b3R5cGUsIHByb3Rv
dHlwZSksCiAgICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdFlldElu
c3RhbmNlKSk7CiAgICAgICAgIAotICAgICAgICBtX291dC5hcHBlbmRUbyhub3RZZXRJbnN0YW5j
ZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90WWV0SW5zdGFuY2Us
IGRlZmF1bHRIYXNJbnN0YW5jZVNsb3cpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBub3RJbnN0
YW5jZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOwogICAgICAgICBt
X291dC5hZGRJbmNvbWluZ1RvUGhpKHZhbHVlLCBtX291dC5hbmNob3IoY3VycmVudFByb3RvdHlw
ZSkpOwogICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGN1cnJlbnRQcm90b3R5cGUpLCB1bnN1
cmUobG9vcCksIHVuc3VyZShjb250aW51YXRpb24pKTsKKworICAgICAgICBtX291dC5hcHBlbmRU
byhkZWZhdWx0SGFzSW5zdGFuY2VTbG93LCBjb250aW51YXRpb24pOworICAgICAgICAvLyBXZSBj
YW4gdXNlIHRoZSB2YWx1ZSB0aGF0IHdlJ3JlIGxvb3Bpbmcgd2l0aCBiZWNhdXNlIHdlCisgICAg
ICAgIC8vIGNhbiBqdXN0IGNvbnRpbnVlIG9mZiBmcm9tIHdoZXJldmVyIHdlIGJhaWxlZCBmcm9t
IHRoZQorICAgICAgICAvLyBsb29wLgorICAgICAgICBWYWx1ZUZyb21CbG9jayBkZWZhdWx0SGFz
SW5zdGFuY2VSZXN1bHQgPSBtX291dC5hbmNob3IoCisgICAgICAgICAgICB2bUNhbGwobV9vdXQu
Ym9vbGVhbiwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlZmF1bHRIYXNJbnN0YW5jZSksIG1f
Y2FsbEZyYW1lLCB2YWx1ZSwgcHJvdG90eXBlKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOwogICAgICAgICBzZXRCb29sZWFuKAotICAgICAgICAgICAgbV9vdXQucGhpKG1f
b3V0LmJvb2xlYW4sIG5vdENlbGxSZXN1bHQsIGlzSW5zdGFuY2VSZXN1bHQsIG5vdEluc3RhbmNl
UmVzdWx0KSk7CisgICAgICAgICAgICBtX291dC5waGkobV9vdXQuYm9vbGVhbiwgbm90Q2VsbFJl
c3VsdCwgaXNJbnN0YW5jZVJlc3VsdCwgbm90SW5zdGFuY2VSZXN1bHQsIGRlZmF1bHRIYXNJbnN0
YW5jZVJlc3VsdCkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZDdXN0b20o
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNiArMjMzLDggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbgogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEp
LCByZWdUMCk7CiAgICAgTGFiZWwgbG9vcCh0aGlzKTsKIAorICAgIGFkZFNsb3dDYXNlKGJyYW5j
aDgoRXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoUHJveHlPYmplY3RUeXBlKSkpOworCiAgICAgLy8gTG9hZCB0aGUgcHJvdG90
eXBlIG9mIHRoZSBjZWxsIGluIHJlZ1QyLiAgSWYgdGhpcyBpcyBlcXVhbCB0byByZWdUMSAtIFdJ
TiEKICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBudWxsIC0gaWYgd2UgaGF2
ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3QgZ28gYWdhaW4uCiAgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7CkBA
IC0yNjMsNiArMjY1LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoSW5zdHJ1
YwogICAgIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIHZhbHVlKTsKICAgICBsaW5rU2xv
d0Nhc2VJZk5vdEpTQ2VsbChpdGVyLCBwcm90byk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwor
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMSwgcmVn
VDApOwogICAgIGVtaXRMb2FkKHByb3RvLCByZWdUMywgcmVnVDIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTMsNiArMTUzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbgog
ICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwg
cmVnVDApOwogICAgIExhYmVsIGxvb3AodGhpcyk7CiAKKyAgICBhZGRTbG93Q2FzZShicmFuY2g4
KEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKFByb3h5T2JqZWN0VHlwZSkpKTsKKwogICAgIC8vIExvYWQgdGhlIHByb3RvdHlw
ZSBvZiB0aGUgb2JqZWN0IGluIHJlZ1QyLiAgSWYgdGhpcyBpcyBlcXVhbCB0byByZWdUMSAtIFdJ
TiEKICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBudWxsIC0gaWYgd2UgaGF2
ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3QgZ28gYWdhaW4uCiAgICAgZW1pdExv
YWRTdHJ1Y3R1cmUocmVnVDIsIHJlZ1QyLCByZWdUMyk7CkBAIC04NTcsNiArODU5LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoSW5zdHJ1YwogICAgIGxpbmtTbG93Q2FzZUlm
Tm90SlNDZWxsKGl0ZXIsIHZhbHVlKTsKICAgICBsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChpdGVy
LCBwcm90byk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcihwcm90bywgcmVnVDEpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uSW5zdGFuY2VPZiwgZHN0LCByZWdUMCwgcmVnVDEpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzc5LDggKzE3NzksNiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkluCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIEpTVmFsdWUgcHJvdG8gPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3RvKTsKICAgICAK
LSAgICBBU1NFUlQoIXZhbHVlLmlzT2JqZWN0KCkgfHwgIXByb3RvLmlzT2JqZWN0KCkpOwotCiAg
ICAgYm9vbCByZXN1bHQgPSBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGV4ZWMsIHZhbHVl
LCBwcm90byk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2
aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYsNyBAQCB0eXBlZGVmIGludDY0X3QgSklU
X09QRVJBVElPTigqUV9KSVRPcGVyCiB0eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAoKlpf
SklUT3BlcmF0aW9uX0QpKGRvdWJsZSk7CiB0eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAo
KlpfSklUT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwogdHlwZWRlZiBpbnQzMl90IEpJVF9PUEVS
QVRJT04gKCpaX0pJVE9wZXJhdGlvbl9FQykoRXhlY1N0YXRlKiwgSlNDZWxsKik7Cit0eXBlZGVm
IGludDMyX3QgSklUX09QRVJBVElPTiAoKlpfSklUT3BlcmF0aW9uX0VDQykoRXhlY1N0YXRlKiwg
SlNDZWxsKiwgSlNDZWxsKik7CiB0eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAoKlpfSklU
T3BlcmF0aW9uX0VHQykoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqKTsKIHR5
cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRPcGVyYXRpb25fRVNKc3MpKEV4ZWNT
dGF0ZSosIHNpemVfdCwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9O
ICgqWl9KSVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2
aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI2LDcgKzUyNiw2IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9pbnN0YW5jZW8KICAgICBMTElOVF9CRUdJTigpOwogICAgIEpTVmFs
dWUgdmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHByb3RvID0g
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7Ci0gICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpIHx8
ICFwcm90by5pc09iamVjdCgpKTsKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTT2JqZWN0
OjpkZWZhdWx0SGFzSW5zdGFuY2UoZXhlYywgdmFsdWUsIHByb3RvKSkpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEy
MDYsMzQgKzEyMDYsNiBAQCBfbGxpbnRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZToKICAgICBz
dG9yZWkgMSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQogICAgIGRpc3BhdGNoKDQpCiAKLV9s
bGludF9vcF9pbnN0YW5jZW9mOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICAjIEFjdHVhbGx5
IGRvIHRoZSB3b3JrLgotICAgIGxvYWRpIDEyW1BDXSwgdDAKLSAgICBsb2FkaSA0W1BDXSwgdDMK
LSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcElu
c3RhbmNlb2ZTbG93KQotICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5v
cEluc3RhbmNlb2ZTbG93Ci0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BJbnN0YW5jZW9mU2xvdykKLSAgICAK
LSAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQotICAgIG1v
dmUgMSwgdDAKLS5vcEluc3RhbmNlb2ZMb29wOgotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0Ml0sIHQyCi0gICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRP
ZmZzZXRbdDJdLCB0MgotICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQotICAgIGJ0
aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcAotCi0gICAgbW92ZSAwLCB0MAotLm9wSW5zdGFuY2Vv
ZkRvbmU6Ci0gICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQotICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKDQpCi0K
LS5vcEluc3RhbmNlb2ZTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2lu
c3RhbmNlb2YpCi0gICAgZGlzcGF0Y2goNCkKLQogX2xsaW50X29wX2luc3RhbmNlb2ZfY3VzdG9t
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9pbnN0YW5jZW9mX2N1c3RvbSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxOTc2NDYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQko
d29ya2luZyBjb3B5KQpAQCAtMTA5MywzNCArMTA5Myw2IEBAIF9sbGludF9vcF9vdmVycmlkZXNf
aGFzX2luc3RhbmNlOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX2luc3RhbmNlb2Y6
Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCi0gICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQwKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVD
ZWxsKHQwLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCi0gICAgYmJiIEpTQ2VsbDo6bV90eXBlW3Qx
XSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rp
b24oMiwgdDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQyLCAub3BJbnN0
YW5jZW9mU2xvdykKLSAgICAKLSAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9IHByb3RvdHlwZSwg
dDIgPSB2YWx1ZQotICAgIG1vdmUgMSwgdDAKLS5vcEluc3RhbmNlb2ZMb29wOgotICAgIGxvYWRT
dHJ1Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmcodDIsIHQzKQotICAgIGxvYWRxIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGVbdDNdLCB0MgotICAgIGJxZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQot
ICAgIGJ0cXogdDIsIHRhZ01hc2ssIC5vcEluc3RhbmNlb2ZMb29wCi0KLSAgICBtb3ZlIDAsIHQw
Ci0ub3BJbnN0YW5jZW9mRG9uZToKLSAgICBvcnEgVmFsdWVGYWxzZSwgdDAKLSAgICBsb2FkaXNG
cm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCi0gICAgc3RvcmVxIHQwLCBbY2ZyLCB0MywgOF0KLSAgICBk
aXNwYXRjaCg0KQotCi0ub3BJbnN0YW5jZW9mU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9pbnN0YW5jZW9mKQotICAgIGRpc3BhdGNoKDQpCi0KIF9sbGludF9vcF9pbnN0
YW5jZW9mX2N1c3RvbToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfaW5zdGFuY2VvZl9jdXN0b20pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAx
OTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE3MDYsNiArMTcwNiwxMSBAQCBfbGxpbnRfb3BfY29w
eV9yZXN0OgogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NvcHlfcmVzdCkKICAgICBkaXNw
YXRjaCg0KQogCitfbGxpbnRfb3BfaW5zdGFuY2VvZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaW5zdGFuY2VvZikKKyAgICBkaXNwYXRj
aCg0KQorCiAKICMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3Vn
aCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgogIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBu
ZXZlciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDcgQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPFNwZWNpZXNDbwogICAgICAgICAvLyBGYXN0IHBhdGgg
aW4gdGhlIG5vcm1hbCBjYXNlIHdoZXJlIHRoZSB1c2VyIGhhcyBub3Qgc2V0IGFuIG93biBjb25z
dHJ1Y3RvciBhbmQgdGhlIEFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyBub3JtYWwuCiAg
ICAgICAgIC8vIFdlIG5lZWQgcHJvdG90eXBlIGNoZWNrIGZvciBzdWJjbGFzc2VzIG9mIEFycmF5
LCB3aGljaCBhcmUgQXJyYXkgb2JqZWN0cyBidXQgaGF2ZSBhIGRpZmZlcmVudCBwcm90b3R5cGUg
YnkgZGVmYXVsdC4KICAgICAgICAgaWYgKExJS0VMWSghdGhpc09iamVjdC0+aGFzQ3VzdG9tUHJv
cGVydGllcygpCi0gICAgICAgICAgICAmJiB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+YXJy
YXlQcm90b3R5cGUoKSA9PSB0aGlzT2JqZWN0LT5wcm90b3R5cGUoKQorICAgICAgICAgICAgJiYg
dGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmFycmF5UHJvdG90eXBlKCkgPT0gdGhpc09iamVj
dC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkKICAgICAgICAgICAgICYmICF0aGlzT2JqZWN0LT5nbG9i
YWxPYmplY3QoKS0+YXJyYXlQcm90b3R5cGUoKS0+ZGlkQ2hhbmdlQ29uc3RydWN0b3JPclNwZWNp
ZXNQcm9wZXJ0aWVzKCkpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKFNwZWNp
ZXNDb25zdHJ1Y3RSZXN1bHQ6OkZhc3RQYXRoLCBudWxscHRyKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTIsNiArMTEyLDkgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIGJvb2wg
KCpTZXRQcm90b3R5cGVGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93SWZDYW50U2V0KTsKICAgICBTZXRQcm90b3R5cGVGdW5jdGlvblB0
ciBzZXRQcm90b3R5cGU7CiAKKyAgICB0eXBlZGVmIEpTVmFsdWUgKCpHZXRQcm90b3R5cGVGdW5j
dGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqKTsKKyAgICBHZXRQcm90b3R5cGVGdW5jdGlv
blB0ciBnZXRQcm90b3R5cGU7CisKICAgICB0eXBlZGVmIHZvaWQgKCpEdW1wVG9TdHJlYW1GdW5j
dGlvblB0cikoY29uc3QgSlNDZWxsKiwgUHJpbnRTdHJlYW0mKTsKICAgICBEdW1wVG9TdHJlYW1G
dW5jdGlvblB0ciBkdW1wVG9TdHJlYW07CiAKQEAgLTE2Niw2ICsxNjksNyBAQCBzdHJ1Y3QgTWV0
aG9kVGFibGUgewogICAgICAgICAmQ2xhc3NOYW1lOjpwcmV2ZW50RXh0ZW5zaW9ucywgXAogICAg
ICAgICAmQ2xhc3NOYW1lOjppc0V4dGVuc2libGUsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6c2V0
UHJvdG90eXBlLCBcCisgICAgICAgICZDbGFzc05hbWU6OmdldFByb3RvdHlwZSwgXAogICAgICAg
ICAmQ2xhc3NOYW1lOjpkdW1wVG9TdHJlYW0sIFwKICAgICAgICAgJkNsYXNzTmFtZTo6ZXN0aW1h
dGVkU2l6ZSBcCiAgICAgfSwgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblBybwogICAgIH0KIAogICAgIEpTU3RyaW5nKiBuYW1lID0gdGFyZ2V0LmdldChleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSkudG9TdHJpbmcoZXhlYyk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCB0YXJnZXRPYmplY3QsIGV4ZWMtPmFyZ3VtZW50KDApLCBib3VuZEFyZ3MsIGxlbmd0aCwgbmFt
ZS0+dmFsdWUoZXhlYykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBleGVjLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZXhlYy0+
YXJndW1lbnQoMCksIGJvdW5kQXJncywgbGVuZ3RoLCBuYW1lLT52YWx1ZShleGVjKSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk3NjQ2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bENvbGxhdG8KICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlKSk7CiAKICAgICAgICAgLy8gYy4gTGV0IGJj
IGJlIEJvdW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgotICAgICAgICBib3Vu
ZENvbXBhcmUgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJn
ZXRPYmplY3QsIGNvbGxhdG9yLCBib3VuZEFyZ3MsIDIsIEFTQ0lJTGl0ZXJhbCgiY29tcGFyZSIp
KTsKKyAgICAgICAgYm91bmRDb21wYXJlID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHN0
YXRlLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgY29sbGF0b3IsIGJvdW5kQXJncywgMiwg
QVNDSUlMaXRlcmFsKCJjb21wYXJlIikpOworICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIC8v
IGQuIFNldCBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIHRvIGJjLgogICAgICAgICBjb2xsYXRv
ci0+c2V0Qm91bmRDb21wYXJlKHZtLCBib3VuZENvbXBhcmUpOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM0LDcgKzEzNCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bERhdGVUaW0KICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1l
bW9yeUVycm9yKHN0YXRlKSk7CiAKICAgICAgICAgLy8gYy4gTGV0IGJmIGJlIEJvdW5kRnVuY3Rp
b25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgotICAgICAgICBib3VuZEZvcm1hdCA9IEpTQm91
bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZHRmLCBi
b3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IikpOworICAgICAgICBib3VuZEZvcm1h
dCA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0YXJn
ZXRPYmplY3QsIGR0ZiwgYm91bmRBcmdzLCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpKTsKKyAg
ICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1ZhbHVlKCkpOwogICAgICAgICAvLyBkLiBTZXQgZHRmLltbYm91bmRGb3JtYXRdXSB0
byBiZi4KICAgICAgICAgZHRmLT5zZXRCb3VuZEZvcm1hdCh2bSwgYm91bmRGb3JtYXQpOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bE51bWJlckYKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlKSk7CiAKICAgICAgICAgLy8gYy4gTGV0IGJmIGJlIEJv
dW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgotICAgICAgICBib3VuZEZvcm1h
dCA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVj
dCwgbmYsIGJvdW5kQXJncywgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSk7CisgICAgICAgIGJv
dW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRlLCBnbG9iYWxPYmpl
Y3QsIHRhcmdldE9iamVjdCwgbmYsIGJvdW5kQXJncywgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQi
KSk7CisgICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICAgICAgLy8gZC4gU2V0IG5mLltbYm91bmRGb3Jt
YXRdXSB0byBiZi4KICAgICAgICAgbmYtPnNldEJvdW5kRm9ybWF0KHZtLCBib3VuZEZvcm1hdCk7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5ICs4
NywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc0luc3RhbmNlCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYm91bmRPYmplY3QtPnRhcmdldEZ1bmN0aW9u
KCktPmhhc0luc3RhbmNlKGV4ZWMsIHZhbHVlKSkpOwogfQogCi1pbmxpbmUgU3RydWN0dXJlKiBn
ZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uKQoraW5saW5lIFN0cnVjdHVyZSogZ2V0Qm91
bmRGdW5jdGlvblN0cnVjdHVyZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uKQogewotICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGFyZ2V0RnVuY3Rpb24tPnN0cnVjdHVyZSh2bSktPnN0b3JlZFByb3Rv
dHlwZSgpOworICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGFyZ2V0RnVuY3Rpb24tPmdldFByb3Rv
dHlwZSh2bSwgZXhlYyk7CisgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgSlNGdW5jdGlvbiogdGFyZ2V0SlNGdW5jdGlvbiA9IGpz
RHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHRhcmdldEZ1bmN0aW9uKTsKIAogICAgIC8vIFdlIG9u
bHkgY2FjaGUgdGhlIHN0cnVjdHVyZSBvZiB0aGUgYm91bmQgZnVuY3Rpb24gaWYgdGhlIGJpbmRl
ZSBpcyBhIEpTRnVuY3Rpb24gc2luY2UgdGhlcmUKQEAgLTExNywxMyArMTE5LDE1IEBAIGlubGlu
ZSBTdHJ1Y3R1cmUqIGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3QKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1KU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1Zh
bHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK0pTQm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0
KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTVmFsdWUgYm91bmRBcmdzLCBp
bnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQ29uc3RydWN0RGF0YSBjb25z
dHJ1Y3REYXRhOwogICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IEpTQzo6Z2V0Q29u
c3RydWN0RGF0YSh0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0YSk7CiAgICAgYm9vbCBjYW5D
b25zdHJ1Y3QgPSBjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7CiAgICAgTmF0
aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihib3VuZEZ1bmN0
aW9uQ2FsbCwgY2FuQ29uc3RydWN0ID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGNhbGxIb3N0
RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLnByb3RvdHlwZS5i
aW5kIHJlc3VsdCIpKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldEJvdW5kRnVuY3Rp
b25TdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24pOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gZ2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSh2bSwgZXhlYywgZ2xv
YmFsT2JqZWN0LCB0YXJnZXRGdW5jdGlvbik7CisgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlv
bigpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBmdW5j
dGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQm91bmRGdW5jdGlvbj4odm0uaGVh
cCkpIEpTQm91bmRGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHRhcmdldEZ1
bmN0aW9uLCBib3VuZFRoaXMsIGJvdW5kQXJncyk7CiAKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3Jl
YXRpb24odm0sIGV4ZWN1dGFibGUsIGxlbmd0aCwgbWFrZVN0cmluZygiYm91bmQgIiwgbmFtZSkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0
aW9uLmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQm91bmRGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKICAgICBjb25zdCBzdGF0aWMgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSB+SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSAmIEJhc2U6
OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgc3RhdGljIEpTQm91bmRGdW5jdGlvbiogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91
bmRUaGlzLCBKU1ZhbHVlIGJvdW5kQXJncywgaW50LCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0
aWMgSlNCb3VuZEZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTVmFsdWUg
Ym91bmRBcmdzLCBpbnQsIGNvbnN0IFN0cmluZyYpOwogICAgIAogICAgIHN0YXRpYyBib29sIGN1
c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCShyZXZpc2lv
biAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSlNWYWx1ZTo6cHV0VG9Q
cmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICBKU1ZhbHVlIHByb3RvdHlwZTsKICAgICBpZiAocHJv
cGVydHlOYW1lICE9IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pIHsKICAg
ICAgICAgZm9yICg7ICFvYmotPnN0cnVjdHVyZSgpLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVy
UHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCk7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsK
LSAgICAgICAgICAgIHByb3RvdHlwZSA9IG9iai0+cHJvdG90eXBlKCk7CisgICAgICAgICAgICBw
cm90b3R5cGUgPSBvYmotPmdldFByb3RvdHlwZURpcmVjdCgpOwogICAgICAgICAgICAgaWYgKHBy
b3RvdHlwZS5pc051bGwoKSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKQogICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwpAQCAtMTc4LDcgKzE3OCw5IEBAIHZvaWQgSlNW
YWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKLSAgICAgICAgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKKyAgICAgICAg
cHJvdG90eXBlID0gb2JqLT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAgICAgICBpZiAodm0u
ZXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChwcm90b3R5cGUu
aXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw0
ICsyODUsOSBAQCBib29sIEpTQ2VsbDo6c2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhlCiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorSlNWYWx1ZSBKU0NlbGw6OmdldFBy
b3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0ZSopCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw2ICsyMDks
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBw
cmV2ZW50RXh0ZW5zaW9ucyhKU09iamVjdCosIEV4ZWNTdGF0ZSopOwogICAgIHN0YXRpYyBOT19S
RVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgaXNFeHRlbnNpYmxlKEpTT2JqZWN0KiwgRXhlY1N0YXRl
Kik7CiAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBzZXRQcm90b3R5cGUo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBib29sKTsKKyAgICBzdGF0aWMgTk9fUkVU
VVJOX0RVRV9UT19DUkFTSCBKU1ZhbHVlIGdldFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0
ZSopOwogCiAgICAgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVj
dCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MTMsNyArNjEzLDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcgogICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiJHZtIiksIGRvbGxhclZNLCBEb250RW51bSk7CiAgICAgfQog
Ci0gICAgcmVzZXRQcm90b3R5cGUodm0sIHByb3RvdHlwZSgpKTsKKyAgICByZXNldFByb3RvdHlw
ZSh2bSwgZ2V0UHJvdG90eXBlRGlyZWN0KCkpOwogfQogCiBib29sIEpTR2xvYmFsT2JqZWN0Ojpo
YXNMZWdhY3lQcm9maWxlcigpIGNvbnN0CkBAIC02NjksOCArNjY5LDggQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6YWRkRnVuY3Rpb24oRXhlY1N0YQogc3RhdGljIGlubGluZSBKU09iamVjdCogbGFz
dEluUHJvdG90eXBlQ2hhaW4oSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBKU09iamVjdCogbyA9
IG9iamVjdDsKLSAgICB3aGlsZSAoby0+cHJvdG90eXBlKCkuaXNPYmplY3QoKSkKLSAgICAgICAg
byA9IGFzT2JqZWN0KG8tPnByb3RvdHlwZSgpKTsKKyAgICB3aGlsZSAoby0+Z2V0UHJvdG90eXBl
RGlyZWN0KCkuaXNPYmplY3QoKSkKKyAgICAgICAgbyA9IGFzT2JqZWN0KG8tPmdldFByb3RvdHlw
ZURpcmVjdCgpKTsKICAgICByZXR1cm4gbzsKIH0KIApAQCAtNzI2LDcgKzcyNiw3IEBAIGlubGlu
ZSB2b2lkIE9iamVjdHNXaXRoQnJva2VuSW5kZXhpbmdGaW4KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3Vy
cmVudC0+cHJvdG90eXBlKCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjdXJy
ZW50LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICAgICAgaWYgKHByb3RvdHlwZVZhbHVlLmlz
TnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGN1cnJlbnQgPSBhc09iamVjdChw
cm90b3R5cGVWYWx1ZSk7CkBAIC03ODUsMjAgKzc4NSwyMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
OjpoYXZlQUJhZFRpbWUoVk0mIHZtCiBib29sIEpTR2xvYmFsT2JqZWN0OjpvYmplY3RQcm90b3R5
cGVJc1NhbmUoKQogewogICAgIHJldHVybiAhaGFzSW5kZXhlZFByb3BlcnRpZXMobV9vYmplY3RQ
cm90b3R5cGUtPmluZGV4aW5nVHlwZSgpKQotICAgICAgICAmJiBtX29iamVjdFByb3RvdHlwZS0+
cHJvdG90eXBlKCkuaXNOdWxsKCk7CisgICAgICAgICYmIG1fb2JqZWN0UHJvdG90eXBlLT5nZXRQ
cm90b3R5cGVEaXJlY3QoKS5pc051bGwoKTsKIH0KIAogYm9vbCBKU0dsb2JhbE9iamVjdDo6YXJy
YXlQcm90b3R5cGVDaGFpbklzU2FuZSgpCiB7CiAgICAgcmV0dXJuICFoYXNJbmRleGVkUHJvcGVy
dGllcyhtX2FycmF5UHJvdG90eXBlLT5pbmRleGluZ1R5cGUoKSkKLSAgICAgICAgJiYgbV9hcnJh
eVByb3RvdHlwZS0+cHJvdG90eXBlKCkgPT0gbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkKKyAgICAg
ICAgJiYgbV9hcnJheVByb3RvdHlwZS0+Z2V0UHJvdG90eXBlRGlyZWN0KCkgPT0gbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkKICAgICAgICAgJiYgb2JqZWN0UHJvdG90eXBlSXNTYW5lKCk7CiB9CiAK
IGJvb2wgSlNHbG9iYWxPYmplY3Q6OnN0cmluZ1Byb3RvdHlwZUNoYWluSXNTYW5lKCkKIHsKICAg
ICByZXR1cm4gIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG1fc3RyaW5nUHJvdG90eXBlLT5pbmRleGlu
Z1R5cGUoKSkKLSAgICAgICAgJiYgbV9zdHJpbmdQcm90b3R5cGUtPnByb3RvdHlwZSgpID09IG1f
b2JqZWN0UHJvdG90eXBlLmdldCgpCisgICAgICAgICYmIG1fc3RyaW5nUHJvdG90eXBlLT5nZXRQ
cm90b3R5cGVEaXJlY3QoKSA9PSBtX29iamVjdFByb3RvdHlwZS5nZXQoKQogICAgICAgICAmJiBv
YmplY3RQcm90b3R5cGVJc1NhbmUoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNzksNyArMzc5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0
R2xvYmFsT2JqZWN0KHZtLCB0aGlzKTsKICAgICAgICAgbV9ydW50aW1lRmxhZ3MgPSBtX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlLT5qYXZhU2NyaXB0UnVudGltZUZsYWdzKHRoaXMpOwogICAgICAg
ICBpbml0KHZtKTsKLSAgICAgICAgc2V0R2xvYmFsVGhpcyh2bSwgSlNQcm94eTo6Y3JlYXRlKHZt
LCBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIHByb3RvdHlwZSgpLCBQdXJlRm9y
d2FyZGluZ1Byb3h5VHlwZSksIHRoaXMpKTsKKyAgICAgICAgc2V0R2xvYmFsVGhpcyh2bSwgSlNQ
cm94eTo6Y3JlYXRlKHZtLCBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGdldFBy
b3RvdHlwZURpcmVjdCgpLCBQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSksIHRoaXMpKTsKICAgICB9
CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNWYWx1ZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzg0LDggKzc4NCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xv
YmFsRnVuY1QKIAogY2xhc3MgR2xvYmFsRnVuY1Byb3RvR2V0dGVyRnVuY3RvciB7CiBwdWJsaWM6
Ci0gICAgR2xvYmFsRnVuY1Byb3RvR2V0dGVyRnVuY3RvcihKU09iamVjdCogdGhpc09iamVjdCkK
LSAgICAgICAgOiBtX2hhc1NraXBwZWRGaXJzdEZyYW1lKGZhbHNlKQorICAgIEdsb2JhbEZ1bmNQ
cm90b0dldHRlckZ1bmN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCkK
KyAgICAgICAgOiBtX2V4ZWMoZXhlYykKKyAgICAgICAgLCBtX2hhc1NraXBwZWRGaXJzdEZyYW1l
KGZhbHNlKQogICAgICAgICAsIG1fdGhpc09iamVjdCh0aGlzT2JqZWN0KQogICAgICAgICAsIG1f
cmVzdWx0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSkKICAgICB7CkBAIC04MDEsMTIg
KzgwMiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV90aGlzT2JqZWN0
LT5hbGxvd3NBY2Nlc3NGcm9tKHZpc2l0b3ItPmNhbGxGcmFtZSgpKSkKLSAgICAgICAgICAgIG1f
cmVzdWx0ID0gSlNWYWx1ZTo6ZW5jb2RlKG1fdGhpc09iamVjdC0+cHJvdG90eXBlKCkpOworICAg
ICAgICAgICAgbV9yZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUobV90aGlzT2JqZWN0LT5nZXRQcm90
b3R5cGUobV9leGVjLT52bSgpLCBtX2V4ZWMpKTsKIAogICAgICAgICByZXR1cm4gU3RhY2tWaXNp
dG9yOjpEb25lOwogICAgIH0KIAogcHJpdmF0ZToKKyAgICBFeGVjU3RhdGUqIG1fZXhlYzsKICAg
ICBib29sIG1faGFzU2tpcHBlZEZpcnN0RnJhbWU7CiAgICAgSlNPYmplY3QqIG1fdGhpc09iamVj
dDsKICAgICBFbmNvZGVkSlNWYWx1ZSBtX3Jlc3VsdDsKQEAgLTgyMiw3ICs4MjQsMTAgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUAogICAgIGlmICghdGhpc09iamVj
dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT50aGlzVmFsdWUoKS5zeW50
aGVzaXplUHJvdG90eXBlKGV4ZWMpKTsKIAotICAgIEdsb2JhbEZ1bmNQcm90b0dldHRlckZ1bmN0
b3IgZnVuY3Rvcih0aGlzT2JqZWN0KTsKKyAgICBHbG9iYWxGdW5jUHJvdG9HZXR0ZXJGdW5jdG9y
IGZ1bmN0b3IoZXhlYywgdGhpc09iamVjdCk7CisgICAgLy8gVGhpcyBjYW4gdGhyb3cgYnV0IGl0
J3MganVzdCB1bm5lZWRlZCBleHRyYSB3b3JrIHRvIGNoZWNrIGZvciBpdC4gVGhlIHJldHVybgor
ICAgIC8vIHZhbHVlIGZyb20gdGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgYXMgdGhlIHJldHVy
biB2YWx1ZSBmcm9tIGEgaG9zdCBjYWxsLgorICAgIC8vIFRoZXJlZm9yZSwgdGhlIHJldHVybiB2
YWx1ZSBpcyBvbmx5IHVzZWQgaWYgdGhlcmUgd2Fzbid0IGFuIGV4Y2VwdGlvbi4KICAgICBleGVj
LT5pdGVyYXRlKGZ1bmN0b3IpOwogICAgIHJldHVybiBmdW5jdG9yLnJlc3VsdCgpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50LmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3
ICs3Niw3IEBAIGJvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnQKICAgICAv
LyBXZSBkb24ndCBjYWxsIHRocm91Z2ggdG8gSlNPYmplY3QgYmVjYXVzZSB0aGVyZSdzIG5vIHdh
eSB0byBnaXZlIGEgCiAgICAgLy8gbGV4aWNhbCBlbnZpcm9ubWVudCBvYmplY3QgZ2V0dGVyIHBy
b3BlcnRpZXMgb3IgYSBwcm90b3R5cGUuCiAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5oYXNHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwotICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5wcm90b3R5cGUo
KS5pc051bGwoKSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgp
LmlzTnVsbCgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcyLDcgKzI3Miw3IEBAIFN0cmluZyBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZShKU08K
IHsKICAgICBTdHJpbmcgcHJvdG90eXBlRnVuY3Rpb25OYW1lOwogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChvYmplY3QtPnN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGUoKSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IHNs
b3Qob2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAgICAgUHJvcGVydHlOYW1lIGNvbnN0cnVjdG9yKGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvcik7CiAgICAgaWYgKG9iamVjdC0+Z2V0UHJvcGVy
dHlTbG90KGV4ZWMsIGNvbnN0cnVjdG9yLCBzbG90KSkgewogICAgICAgICBpZiAoc2xvdC5pc1Zh
bHVlKCkpIHsKQEAgLTQzMCwxMSArNDMwLDE0IEBAIHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNs
b3coRXhlY1N0YXRlKiAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAob2Jq
LT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlICYmIHByb3BlcnR5TmFtZSAhPSB2bS5wcm9wZXJ0
eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGRuJ3QgdW5jb25kaXRpb25hbGx5IHBlcmZvcm0gW1tTZXRdXSBoZXJlLgorICAgICAgICAgICAg
Ly8gV2UgbmVlZCB0byBkbyBtb3JlIGJlY2F1c2UgdGhpcyBpcyBvYnNlcnZhYmxlIGJlaGF2aW9y
LgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTAxMgogICAgICAgICAgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2Jq
ZWN0Kj4ob2JqKTsKICAgICAgICAgICAgIHByb3h5LT5Qcm94eU9iamVjdDo6cHV0KHByb3h5LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IG9iai0+cHJvdG90eXBlKCk7Cisg
ICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gb2JqLT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAg
ICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBvYmogPSBhc09iamVjdChwcm90b3R5cGUpOwpAQCAtMTIwMSw3ICsxMjA0LDcgQEAgYm9vbCBK
U09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlYwogewogICAgIEFTU0VSVChtZXRob2RU
YWJsZSh2bSktPnRvVGhpcyh0aGlzLCBleGVjLCBOb3RTdHJpY3RNb2RlKSA9PSB0aGlzKTsKIAot
ICAgIGlmICh0aGlzLT5wcm90b3R5cGUoKSA9PSBwcm90b3R5cGUpCisgICAgaWYgKHRoaXMtPmdl
dFByb3RvdHlwZURpcmVjdCgpID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRoaXMtPmlzRXh0ZW5zaWJsZShleGVjKTsKQEAgLTEy
MTUsMTMgKzEyMTgsMTYgQEAgYm9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hl
YwogICAgIH0KIAogICAgIEpTVmFsdWUgbmV4dFByb3RvdHlwZSA9IHByb3RvdHlwZTsKKyAgICBN
ZXRob2RUYWJsZTo6R2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9
IEpTT2JqZWN0OjpnZXRQcm90b3R5cGU7CiAgICAgd2hpbGUgKG5leHRQcm90b3R5cGUgJiYgbmV4
dFByb3RvdHlwZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGlmIChuZXh0UHJvdG90eXBlID09IHRo
aXMpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvd0lmQ2FudFNldCkKICAgICAgICAgICAg
ICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9Ci0gICAgICAgIG5leHRQcm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJvdG90
eXBlKS0+cHJvdG90eXBlKCk7CisgICAgICAgIGlmIChVTkxJS0VMWShhc09iamVjdChuZXh0UHJv
dG90eXBlKS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm90b3R5cGUgIT0gZGVmYXVsdEdldFByb3Rv
dHlwZSkpCisgICAgICAgICAgICBicmVhazsgLy8gV2UncmUgZG9uZS4gU2V0IHRoZSBwcm90b3R5
cGUuCisgICAgICAgIG5leHRQcm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJvdG90eXBlKS0+Z2V0
UHJvdG90eXBlRGlyZWN0KCk7CiAgICAgfQogICAgIHNldFByb3RvdHlwZURpcmVjdCh2bSwgcHJv
dG90eXBlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyMzIsNiArMTIzOCwxMSBAQCBib29sIEpT
T2JqZWN0OjpzZXRQcm90b3R5cGUoSlNPYmplY3QqIG9iCiAgICAgcmV0dXJuIG9iamVjdC0+c2V0
UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYy0+dm0oKSwgZXhlYywgcHJvdG90eXBlLCBzaG91
bGRUaHJvd0lmQ2FudFNldCk7CiB9CiAKK0pTVmFsdWUgSlNPYmplY3Q6OmdldFByb3RvdHlwZShK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqKQoreworICAgIHJldHVybiBvYmplY3QtPmdldFBy
b3RvdHlwZURpcmVjdCgpOworfQorCiBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGUoVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHJvdG90eXBlLCBib29sIHNob3VsZFRocm93SWZD
YW50U2V0KQogewogICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPnNldFByb3RvdHlwZSh0aGlz
LCBleGVjLCBwcm90b3R5cGUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKQEAgLTE1NzIsMTIgKzE1
ODMsMTkgQEAgYm9vbCBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKEV4ZWNTdAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwotICAgIHdoaWxlICgob2JqZWN0ID0g
b2JqZWN0LT5wcm90b3R5cGUoKS5nZXRPYmplY3QoKSkpIHsKKyAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICBKU1ZhbHVlIG9iamVjdFZhbHVlID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4
ZWMpOworICAgICAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIW9iamVjdFZhbHVlLmlzT2JqZWN0KCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KG9iamVjdFZh
bHVlKTsKICAgICAgICAgaWYgKHByb3RvID09IG9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJpdmF0ZUZ1bmNJbnN0
YW5jZU9mKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE1OTAsMjQgKzE2MDgsMjkgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2YQogCiB2b2lkIEpTT2JqZWN0OjpnZXRQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAgIG9iamVj
dC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKLSAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpKQorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBtb2RlKTsKKyAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAob2JqZWN0LT5wcm90b3R5cGUoKS5pc051bGwoKSkKKyAgICBKU1ZhbHVl
IG5leHRQcm90byA9IG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKKyAgICBpZiAoVU5M
SUtFTFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG5leHRQcm90
by5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICBKU09iamVjdCogcHJvdG90eXBlID0gYXNPYmplY3Qob2JqZWN0LT5wcm90b3R5cGUoKSk7
CisgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQcm90byk7CiAgICAgd2hp
bGUoMSkgewogICAgICAgICBpZiAocHJvdG90eXBlLT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygp
Lm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkgewogICAgICAgICAgICAgcHJvdG90eXBlLT5t
ZXRob2RUYWJsZSh2bSktPmdldFByb3BlcnR5TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBtb2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHBy
b3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7Ci0gICAgICAgIGlmIChVTkxJS0VMWShleGVjLT5o
YWRFeGNlcHRpb24oKSkpCisgICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG5leHRQcm90byA9IHByb3RvdHlwZS0+Z2V0UHJv
dG90eXBlKHZtLCBleGVjKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgSlNWYWx1ZSBuZXh0UHJvdG8gPSBwcm90b3R5
cGUtPnByb3RvdHlwZSgpOwogICAgICAgICBpZiAobmV4dFByb3RvLmlzTnVsbCgpKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIHByb3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQcm90byk7CkBA
IC0yMDI3LDcgKzIwNTAsNyBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRC
eUluCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IGN1cnJlbnQtPnByb3RvdHlwZSgpOworICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3VycmVudC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7
CiAgICAgICAgIGlmIChwcm90b3R5cGVWYWx1ZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgCkBAIC0yMDM3LDcgKzIwNjAsNyBAQCBib29sIEpTT2JqZWN0Ojph
dHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluCiAKIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVy
Y2VwdFB1dEJ5SW5kZXhPbkhvbGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVl
IHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewotICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUg
PSBwcm90b3R5cGUoKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gZ2V0UHJvdG90eXBl
RGlyZWN0KCk7CiAgICAgaWYgKHByb3RvdHlwZVZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCkBAIC0zMDI5LDEzICszMDUyLDE2IEBAIHZvaWQgSlNPYmplY3Q6Omdl
dEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEoKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKG1vZGUsIEpTT2JqZWN0UHJvcGVydGll
c01vZGU6OkV4Y2x1ZGUpKTsKLSAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
KQorICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgpLmlzTnVsbCgpKQorICAgIEpTVmFsdWUgbmV4dFBy
b3RvID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAgIGlmIChVTkxJS0VMWSh2
bS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobmV4dFByb3RvLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBKU09iamVjdCogcHJvdG90eXBlID0gYXNPYmpl
Y3Qob2JqZWN0LT5wcm90b3R5cGUoKSk7CisgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGFzT2Jq
ZWN0KG5leHRQcm90byk7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaWYgKHByb3RvdHlw
ZS0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkp
IHsKICAgICAgICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5h
bWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CkBAIC0zMDQ0LDcgKzMw
NzAsOSBAQCB2b2lkIEpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKCiAgICAgICAg
IHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlw
ZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShleGVj
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEpTVmFsdWUg
bmV4dFByb3RvID0gcHJvdG90eXBlLT5wcm90b3R5cGUoKTsKKyAgICAgICAgbmV4dFByb3RvID0g
cHJvdG90eXBlLT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAgICAgICBpZiAoVU5MSUtFTFko
dm0uZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAobmV4dFBy
b3RvLmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHByb3RvdHlwZSA9IGFz
T2JqZWN0KG5leHRQcm90byk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsMTkgQEAgcHVibGlj
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpT
T2JqZWN0Kik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBjYWxjdWxhdGVk
Q2xhc3NOYW1lKEpTT2JqZWN0Kik7CiAKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSgpIGNvbnN0Owor
ICAgIC8vIFRoaXMgaXMgdGhlIGZ1bGx5IHZpcnR1YWwgW1tHZXRQcm90b3R5cGVPZl1dIGludGVy
bmFsIGZ1bmN0aW9uIGRlZmluZWQKKyAgICAvLyBpbiB0aGUgRUNNQVNjcmlwdCA2IHNwZWNpZmlj
YXRpb24uIFVzZSB0aGlzIHdoZW4gZG9pbmcgYSBbW0dldFByb3RvdHlwZU9mXV0gCisgICAgLy8g
b3BlcmF0aW9uIGFzIGRpY3RhdGVkIGluIHRoZSBzcGVjaWZpY2F0aW9uLgorICAgIEpTVmFsdWUg
Z2V0UHJvdG90eXBlKFZNJiwgRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIEpTVmFsdWUgZ2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7CisgICAgLy8g
VGhpcyBnZXRzIHRoZSBwcm90b3R5cGUgZGlyZWN0bHkgb2ZmIG9mIHRoZSBzdHJ1Y3R1cmUuIFRo
aXMgZG9lcyBub3QgZG8KKyAgICAvLyBkeW5hbWljIGRpc3BhdGNoIG9uIHRoZSBnZXRQcm90b3R5
cGUgbWV0aG9kIHRhYmxlIG1ldGhvZC4gSXQgaXMgbm90IHZhbGlkIAorICAgIC8vIHRvIHVzZSB0
aGlzIHdoZW4gcGVyZm9ybWluZyBhIFtbR2V0UHJvdG90eXBlT2ZdXSBvcGVyYXRpb24gaW4gdGhl
IHNwZWNpZmljYXRpb24uCisgICAgLy8gSXQgaXMgdmFsaWQgdG8gdXNlIHRob3VnaCB3aGVuIHlv
dSBrbm93IHRoYXQgeW91IHdhbnQgdG8gZGlyZWN0bHkgZ2V0IGl0CisgICAgLy8gd2l0aG91dCBj
b25zdWx0aW5nIHRoZSBtZXRob2QgdGFibGUuIFRoaXMgaXMgYWtpbiB0byBnZXR0aW5nIHRoZSBb
W1Byb3RvdHlwZV1dCisgICAgLy8gaW50ZXJuYWwgZmllbGQgZGlyZWN0bHkgYXMgZGVzY3JpYmVk
IGluIHRoZSBzcGVjaWZpY2F0aW9uLgorICAgIEpTVmFsdWUgZ2V0UHJvdG90eXBlRGlyZWN0KCkg
Y29uc3Q7CisKICAgICAvLyBUaGlzIHNldHMgdGhlIHByb3RvdHlwZSB3aXRob3V0IGNoZWNraW5n
IGZvciBjeWNsZXMgYW5kIHdpdGhvdXQKICAgICAvLyBkb2luZyBkeW5hbWljIGRpc3BhdGNoIG9u
IFtbU2V0UHJvdG90eXBlT2ZdXSBvcGVyYXRpb24gaW4gdGhlIHNwZWNpZmljYXRpb24uCiAgICAg
Ly8gSXQgaXMgbm90IHZhbGlkIHRvIHVzZSB0aGlzIHdoZW4gcGVyZm9ybWluZyBhIFtbU2V0UHJv
dG90eXBlT2ZdXSBvcGVyYXRpb24gaW4KQEAgLTc1OSw3ICs3NzEsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIEFTU0VSVChp
bmhlcml0cyhpbmZvKCkpKTsKLSAgICAgICAgQVNTRVJUKHByb3RvdHlwZSgpLmlzTnVsbCgpIHx8
IEhlYXA6OmhlYXAodGhpcykgPT0gSGVhcDo6aGVhcChwcm90b3R5cGUoKSkpOworICAgICAgICBB
U1NFUlQoZ2V0UHJvdG90eXBlRGlyZWN0KCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9
PSBIZWFwOjpoZWFwKGdldFByb3RvdHlwZURpcmVjdCgpKSk7CiAgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+aXNPYmplY3QoKSk7CiAgICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAg
fQpAQCAtMTEyNCwxMSArMTEzNiwyMCBAQCBpbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KFZNJiB2
bSwgU3RydWN0CiAgICAgdm0uaGVhcC5hc2NyaWJlT3duZXIodGhpcywgYnV0dGVyZmx5KTsKIH0K
IAotaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OnByb3RvdHlwZSgpIGNvbnN0CitpbmxpbmUgSlNW
YWx1ZSBKU09iamVjdDo6Z2V0UHJvdG90eXBlRGlyZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4g
c3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZSgpOwogfQogCitpbmxpbmUgSlNWYWx1ZSBKU09i
amVjdDo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQoreworICAgIGF1dG8g
Z2V0UHJvdG90eXBlTWV0aG9kID0gbWV0aG9kVGFibGUodm0pLT5nZXRQcm90b3R5cGU7CisgICAg
TWV0aG9kVGFibGU6OkdldFByb3RvdHlwZUZ1bmN0aW9uUHRyIGRlZmF1bHRHZXRQcm90b3R5cGUg
PSBKU09iamVjdDo6Z2V0UHJvdG90eXBlOworICAgIGlmIChMSUtFTFkoZ2V0UHJvdG90eXBlTWV0
aG9kID09IGRlZmF1bHRHZXRQcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gZ2V0UHJvdG90eXBl
RGlyZWN0KCk7CisgICAgcmV0dXJuIGdldFByb3RvdHlwZU1ldGhvZCh0aGlzLCBleGVjKTsKK30K
KwogLy8gSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgbWV0aG9kIHdpdGggYSBQcm9wZXJ0eU5hbWUg
dGhhdCBpcyBhY3R1YWxseSBhbiBpbmRleCwKIC8vIGJ1dCBpZiBzbyB3aWxsIGFsd2F5cyByZXR1
cm4gZmFsc2UgKGRvZXNuJ3Qgc2VhcmNoIGluZGV4IHN0b3JhZ2UpLgogQUxXQVlTX0lOTElORSBi
b29sIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdChWTSYgdm0sIFN0cnVjdHVy
ZSYgc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCkBAIC0xMjA0LDYgKzEyMjUsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6Omdl
dFByb3BlcnR5CiAgICAgICAgICAgICAvLyBwYXJzaW5nIHRoZSBpbnQgYWdhaW4uCiAgICAgICAg
ICAgICByZXR1cm4gb2JqZWN0LT5nZXROb25JbmRleFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogICAgICAgICB9CisgICAgICAgIEFTU0VSVChvYmplY3QtPnR5cGUoKSAh
PSBQcm94eU9iamVjdFR5cGUpOwogICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpzdHJ1
Y3R1cmVJRFRhYmxlLmdldChvYmplY3QtPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBpZiAob2Jq
ZWN0LT5nZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjIzLDExICsxMjQ1LDIx
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHkKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIGF1dG8mIHN0cnVjdHVyZUlEVGFibGUgPSB2bS5oZWFwLnN0cnVj
dHVyZUlEVGFibGUoKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpczsKKyAgICBNZXRob2RU
YWJsZTo6R2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9IEpTT2Jq
ZWN0OjpnZXRQcm90b3R5cGU7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgU3RydWN0dXJl
JiBzdHJ1Y3R1cmUgPSAqc3RydWN0dXJlSURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgp
KTsKICAgICAgICAgaWYgKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBzdHJ1
Y3R1cmUuc3RvcmVkUHJvdG90eXBlKCk7CisgICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRp
b24oKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlOworICAgICAgICBpZiAoTElLRUxZKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFi
bGUuZ2V0UHJvdG90eXBlID09IGRlZmF1bHRHZXRQcm90b3R5cGUgfHwgc2xvdC5pbnRlcm5hbE1l
dGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
KSkKKyAgICAgICAgICAgIHByb3RvdHlwZSA9IHN0cnVjdHVyZS5zdG9yZWRQcm90b3R5cGUoKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwcm90b3R5cGUgPSBvYmplY3QtPmdldFByb3Rv
dHlwZSh2bSwgZXhlYyk7CisgICAgICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIGlmICghcHJvdG90eXBl
LmlzT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG9iamVjdCA9
IGFzT2JqZWN0KHByb3RvdHlwZSk7CkBAIC0xMjQyLDE0ICsxMjc0LDI2IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBKU09iamVjdDo6Z2V0Tm9uSW5kZXgKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIGF1dG8mIHN0cnVjdHVyZUlEVGFibGUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsK
ICAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpczsKKyAgICBNZXRob2RUYWJsZTo6R2V0UHJvdG90
eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90b3R5
cGU7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAq
c3RydWN0dXJlSURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgaWYg
KExJS0VMWSghVHlwZUluZm86Om92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChvYmplY3QtPmlu
bGluZVR5cGVGbGFncygpKSkpIHsKICAgICAgICAgICAgIGlmIChvYmplY3QtPmdldE93bk5vbklu
ZGV4UHJvcGVydHlTbG90KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RydWN0dXJlLmNs
YXNzSW5mbygpLT5tZXRob2RUYWJsZS5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gc3RydWN0dXJlLnN0b3JlZFByb3RvdHlwZSgpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFi
bGUuZ2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSh2
bS5leGNlcHRpb24oKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlOworICAgICAgICBpZiAoTElLRUxZKHN0cnVjdHVy
ZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0UHJvdG90eXBlID09IGRlZmF1bHRHZXRQcm90
b3R5cGUgfHwgc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KSkKKyAgICAgICAgICAgIHByb3RvdHlwZSA9IHN0cnVj
dHVyZS5zdG9yZWRQcm90b3R5cGUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwcm90
b3R5cGUgPSBvYmplY3QtPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CisgICAgICAgICAgICBpZiAo
dm0uZXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CiAgICAgICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkocmV2aXNp
b24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgQUxXQVlTX0lOTElORSBib29s
IEpTT2JqZWN0OjpjYW5QZXJmb3JtRgogICAgICAgICBpZiAob2JqLT5zdHJ1Y3R1cmUodm0pLT5o
YXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkgfHwgb2Jq
LT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgIHByb3RvdHlwZSA9IG9iai0+cHJvdG90eXBlKCk7CisgICAgICAgIHByb3RvdHlw
ZSA9IG9iai0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CiAgICAgICAgIGlmIChwcm90b3R5cGUuaXNO
dWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3
ICs0Nyw3IEBAIHZvaWQgSlNQcm94eTo6c2V0VGFyZ2V0KFZNJiB2bSwgSlNHbG9iYWwKIHsKICAg
ICBBU1NFUlRfQVJHKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0KTsKICAgICBtX3RhcmdldC5z
ZXQodm0sIHRoaXMsIGdsb2JhbE9iamVjdCk7Ci0gICAgc2V0UHJvdG90eXBlRGlyZWN0KHZtLCBn
bG9iYWxPYmplY3QtPnByb3RvdHlwZSgpKTsKKyAgICBzZXRQcm90b3R5cGVEaXJlY3Qodm0sIGds
b2JhbE9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkpOwogCiAgICAgUHJvdG90eXBlTWFwJiBw
cm90b3R5cGVNYXAgPSB2bS5wcm90b3R5cGVNYXA7CiAgICAgaWYgKCFwcm90b3R5cGVNYXAuaXNQ
cm90b3R5cGUodGhpcykpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9u
IDE5NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIGlmIChvYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEob2JqZWN0LCBkYXRhKSA9PSBDb25zdHJ1Y3RUeXBl
OjpOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsICJuZXcudGFyZ2V0IHBhc3NlZCB0byBUeXBlZEFycmF5IGlzIG5vdCBhIHZhbGlkIGNvbnN0
cnVjdG9yLiIpKTsKIAotICAgIGZvciAoOyAhdmFsdWUuaXNOdWxsKCk7IHZhbHVlID0ganNDYXN0
PEpTT2JqZWN0Kj4odmFsdWUpLT5wcm90b3R5cGUoKSkgeworICAgIGZvciAoOyAhdmFsdWUuaXNO
dWxsKCk7IHZhbHVlID0ganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLT5nZXRQcm90b3R5cGVEaXJl
Y3QoKSkgewogICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3IqPih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZmluZCBUeXBlZEFycmF5IGNvbnN0cnVjdG9yIHRo
YXQgaW5oZXJpdHMgZnJvbSBUeXBlZEFycmF5LiIpKTsKICAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcjxKU0ludDhBcnJheT4qPih2YWx1
ZSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw4
ICsxNTAsOSBAQCBDYWxsVHlwZSBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoCiAKIGNs
YXNzIE9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2ZGdW5jdG9yIHsKIHB1YmxpYzoKLSAg
ICBPYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mRnVuY3RvcihKU09iamVjdCogb2JqZWN0
KQotICAgICAgICA6IG1faGFzU2tpcHBlZEZpcnN0RnJhbWUoZmFsc2UpCisgICAgT2JqZWN0Q29u
c3RydWN0b3JHZXRQcm90b3R5cGVPZkZ1bmN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
b2JqZWN0KQorICAgICAgICA6IG1fZXhlYyhleGVjKQorICAgICAgICAsIG1faGFzU2tpcHBlZEZp
cnN0RnJhbWUoZmFsc2UpCiAgICAgICAgICwgbV9vYmplY3Qob2JqZWN0KQogICAgICAgICAsIG1f
cmVzdWx0KGpzVW5kZWZpbmVkKCkpCiAgICAgewpAQCAtMTY3LDExICsxNjgsMTIgQEAgcHVibGlj
OgogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fb2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKHZp
c2l0b3ItPmNhbGxGcmFtZSgpKSkKLSAgICAgICAgICAgIG1fcmVzdWx0ID0gbV9vYmplY3QtPnBy
b3RvdHlwZSgpOworICAgICAgICAgICAgbV9yZXN1bHQgPSBtX29iamVjdC0+Z2V0UHJvdG90eXBl
KG1fZXhlYy0+dm0oKSwgbV9leGVjKTsKICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9u
ZTsKICAgICB9CiAKIHByaXZhdGU6CisgICAgRXhlY1N0YXRlKiBtX2V4ZWM7CiAgICAgYm9vbCBt
X2hhc1NraXBwZWRGaXJzdEZyYW1lOwogICAgIEpTT2JqZWN0KiBtX29iamVjdDsKICAgICBKU1Zh
bHVlIG1fcmVzdWx0OwpAQCAtMTc5LDcgKzE4MSwxMCBAQCBwcml2YXRlOgogCiBKU1ZhbHVlIG9i
amVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
b2JqZWN0KQogewotICAgIE9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2ZGdW5jdG9yIGZ1
bmN0b3Iob2JqZWN0KTsKKyAgICBPYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mRnVuY3Rv
ciBmdW5jdG9yKGV4ZWMsIG9iamVjdCk7CisgICAgLy8gVGhpcyBjYW4gdGhyb3cgYnV0IGl0J3Mg
anVzdCB1bm5lZWRlZCBleHRyYSB3b3JrIHRvIGNoZWNrIGZvciBpdC4gVGhlIHJldHVybgorICAg
IC8vIHZhbHVlIGZyb20gdGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgYXMgdGhlIHJldHVybiB2
YWx1ZSBmcm9tIGEgaG9zdCBjYWxsLgorICAgIC8vIFRoZXJlZm9yZSwgdGhlIHJldHVybiB2YWx1
ZSBpcyBvbmx5IHVzZWQgaWYgdGhlcmUgd2Fzbid0IGFuIGV4Y2VwdGlvbi4KICAgICBleGVjLT5p
dGVyYXRlKGZ1bmN0b3IpOwogICAgIHJldHVybiBmdW5jdG9yLnJlc3VsdCgpOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTQgKzEwMSwxOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgaWYgKCFleGVjLT5hcmd1
bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihmYWxzZSkpOwogCi0gICAgSlNWYWx1ZSB2ID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQo
MCkpLT5wcm90b3R5cGUoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTVmFsdWUg
diA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsK
KyAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBpZiAo
IXYuaXNPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKGZhbHNlKSk7CiAgICAgICAgIGlmICh2ID09IHRoaXNPYmopCiAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7Ci0gICAgICAgIHYgPSBhc09iamVj
dCh2KS0+cHJvdG90eXBlKCk7CisgICAgICAgIHYgPSBhc09iamVjdCh2KS0+Z2V0UHJvdG90eXBl
KHZtLCBleGVjKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKKyAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICB9CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHJl
dmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsMTEgKzkwLDEwIEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQoRXgKICAgICAvLyBGSVhNRTogbWFrZSBpdCBzbyB0aGF0
IGN1c3RvbSBnZXR0ZXJzIHRha2UgYm90aCB0aGUgfHRoaXN8IHZhbHVlIGFuZCB0aGUgc2xvdEJh
c2UgKHByb3BlcnR5IGhvbGRlcikuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NDMyMAogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlmIChMSUtF
TFkocHJveHlPYmplY3RBc09iamVjdC0+aW5oZXJpdHMoUHJveHlPYmplY3Q6OmluZm8oKSkpKQor
ICAgICAgICBpZiAoTElLRUxZKHByb3h5T2JqZWN0QXNPYmplY3QtPnR5cGUoKSA9PSBQcm94eU9i
amVjdFR5cGUpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgU3RydWN0dXJlJiBzdHJ1
Y3R1cmUgPSAqdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHByb3h5T2JqZWN0QXNPYmpl
Y3QtPnN0cnVjdHVyZUlEKCkpOwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHN0cnVjdHVy
ZS5zdG9yZWRQcm90b3R5cGUoKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBwcm94eU9i
amVjdEFzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocHJvdG90eXBlLmlzT2JqZWN0KCkpOwogICAgICAgICBwcm94eU9iamVjdEFzT2JqZWN0ID0g
YXNPYmplY3QocHJvdG90eXBlKTsKICAgICB9CkBAIC0xMDA2LDcgKzEwMDUsOSBAQCBib29sIFBy
b3h5T2JqZWN0OjpwZXJmb3JtU2V0UHJvdG90eXBlKEV4CiAgICAgaWYgKHRhcmdldElzRXh0ZW5z
aWJsZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBKU1ZhbHVlIHRhcmdldFByb3RvdHlw
ZSA9IHRhcmdldC0+cHJvdG90eXBlKCk7CisgICAgSlNWYWx1ZSB0YXJnZXRQcm90b3R5cGUgPSB0
YXJnZXQtPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFzYW1lVmFsdWUoZXhlYywgcHJvdG90eXBl
LCB0YXJnZXRQcm90b3R5cGUpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJQcm94eSAnc2V0UHJvdG90eXBlT2YnIHRyYXAgcmV0dXJuZWQgdHJ1ZSB3aGVu
IGl0cyB0YXJnZXQgaXMgbm9uLWV4dGVuc2libGUgYW5kIHRoZSBuZXcgcHJvdG90eXBlIHZhbHVl
IGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCBwcm90b3R5cGUgdmFsdWUuIEl0IHNob3Vs
ZCBoYXZlIHJldHVybmVkIGZhbHNlLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAko
cmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNyArMjEwLDcgQEAgaW5saW5lIGJv
b2wgU3RydWN0dXJlOjppc1ZhbGlkKEpTR2xvYmFsTwogICAgICAgICBpZiAoYXNPYmplY3QocHJv
dG90eXBlKS0+c3RydWN0dXJlKCkgIT0gY2FjaGVkU3RydWN0dXJlLT5nZXQoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgKytjYWNoZWRTdHJ1Y3R1cmU7Ci0gICAgICAgIHBy
b3RvdHlwZSA9IGFzT2JqZWN0KHByb3RvdHlwZSktPnByb3RvdHlwZSgpOworICAgICAgICBwcm90
b3R5cGUgPSBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICB9
CiAgICAgcmV0dXJuIHByb3RvdHlwZS5pc051bGwoKSAmJiAhKmNhY2hlZFN0cnVjdHVyZTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHktaGFzLXByb3Bl
cnR5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
cHJveHktaGFzLXByb3BlcnR5LmpzCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3Byb3h5LWhhcy1wcm9wZXJ0eS5qcwkod29ya2luZyBjb3B5
KQpAQCAtMzY3LDMgKzM2Nyw3OSBAQCBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgICAgICBhc3Nl
cnQodGhyZXcpOwogICAgIH0KIH0KKworeworICAgIGxldCBlMSA9IG51bGw7CisgICAgbGV0IGUy
ID0gbnVsbDsKKyAgICBsZXQgdDEgPSB7fTsKKyAgICBsZXQgY2FsbGVkMSA9IGZhbHNlOworICAg
IGxldCBoMSA9IHsKKyAgICAgICAgaGFzOiBmdW5jdGlvbih0aGVUYXJnZXQsIHByb3BOYW1lKSB7
CisgICAgICAgICAgICBjYWxsZWQxID0gdHJ1ZTsKKyAgICAgICAgICAgIGUxID0gbmV3IEVycm9y
OworICAgICAgICAgICAgdGhyb3cgZTE7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9OworICAgIGxldCBwMSA9IG5ldyBQcm94eSh0MSwgaDEpOworCisgICAgbGV0
IHQyID0ge307CisgICAgdDIuX19wcm90b19fID0gcDE7CisgICAgbGV0IGgyID0geworICAgICAg
ICBoYXM6IGZ1bmN0aW9uKHRoZVRhcmdldCwgcHJvcE5hbWUpIHsKKyAgICAgICAgICAgIGUyID0g
bmV3IEVycm9yOworICAgICAgICAgICAgdGhyb3cgZTI7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9OworICAgIGxldCBwMiA9IG5ldyBQcm94eSh0MiwgaDIpOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAgbGV0IHRocmV3ID0g
ZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAxMCBpbiBwMjsKKyAgICAgICAgfSBj
YXRjaChlKSB7CisgICAgICAgICAgICBhc3NlcnQoZSA9PT0gZTIpOworICAgICAgICAgICAgdGhy
ZXcgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7CisgICAgICAgIGFz
c2VydCghY2FsbGVkMSk7CisgICAgfQorfQorCit7CisgICAgbGV0IGUxID0gbnVsbDsKKyAgICBs
ZXQgZTIgPSBudWxsOworICAgIGxldCB0MSA9IHt9OworICAgIGxldCBjYWxsZWQxID0gZmFsc2U7
CisgICAgbGV0IGgxID0geworICAgICAgICBoYXM6IGZ1bmN0aW9uKHRoZVRhcmdldCwgcHJvcE5h
bWUpIHsKKyAgICAgICAgICAgIGNhbGxlZDEgPSB0cnVlOworICAgICAgICAgICAgZTEgPSBuZXcg
RXJyb3I7CisgICAgICAgICAgICB0aHJvdyBlMTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH07CisgICAgbGV0IHAxID0gbmV3IFByb3h5KHQxLCBoMSk7CisKKyAg
ICBsZXQgdDIgPSB7fTsKKyAgICB0Mi5fX3Byb3RvX18gPSBwMTsKKyAgICBsZXQgaDIgPSB7Cisg
ICAgICAgIGhhczogZnVuY3Rpb24odGhlVGFyZ2V0LCBwcm9wTmFtZSkgeworICAgICAgICAgICAg
ZTIgPSBuZXcgRXJyb3I7CisgICAgICAgICAgICB0aHJvdyBlMjsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH07CisgICAgbGV0IHAyID0gbmV3IFByb3h5KHQyLCBo
Mik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgeworICAgICAgICBsZXQgdGhy
ZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICJmb28iIGluIHAyOworICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGFzc2VydChlID09PSBlMik7CisgICAgICAg
ICAgICB0aHJldyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAg
ICAgICAgYXNzZXJ0KCFjYWxsZWQxKTsKKyAgICB9Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNTQgQEAKKzIwMTYtMDMtMDYgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgW1tHZXRQcm90b3R5cGVPZl1dIHNob3VsZCBiZSBhIGZ1bGx5IHZpcnR1
YWwgbWV0aG9kIGluIHRoZSBtZXRob2QgdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAwMgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlw
IFBpemxvLgorCisgICAgICAgIENoYW5nZSA6OmdldFByb3RvdHlwZSguKSB0byA6OnByb3RvdHlw
ZSguKSBpbiB2YXJpb3VzIHBsYWNlcyB0byBwcmV2ZW50CisgICAgICAgIGEgbmFtaW5nIGNvbmZs
aWN0IHdpdGggSlNDLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIG5vIG5ldyBmdW5j
dGlvbmFsaXR5IHdhcyBhZGRlZC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNJbWFnZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdl
bmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAoR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Y3JlYXRlUHJv
dG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6cHJvdG90
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0UHJvdG90
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnByb3RvdHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0UHJvdG90eXBlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3RDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OmNyZWF0ZVBy
b3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdDo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0OjpnZXRQcm90b3R5cGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Y3JlYXRlUHJv
dG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpwcm90
b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldFBy
b3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGVQcm90b3R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldFByb3RvdHlwZSk6IERl
bGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZl
bnRUYXJnZXQ6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVu
dFRhcmdldDo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0
OjpnZXRQcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0
aW9uQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEV4Y2VwdGlvbjo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEV4Y2VwdGlvbjo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2Vw
dGlvbjo6Z2V0UHJvdG90eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpjcmVhdGVQ
cm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6
cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6
OmdldFByb3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2U6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RJbnRlcmZhY2U6OnByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RJbnRlcmZhY2U6OmdldFByb3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
cjo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3I6OmdldFByb3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmdldFByb3RvdHlwZSk6IERlbGV0ZWQu
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpjcmVhdGVQ
cm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6cHJv
dG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldFBy
b3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGU6
OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlOjpwcm90b3R5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9kZTo6Z2V0UHJvdG90eXBlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYzo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRl
dGVybWluaXN0aWM6OnByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb25kZXRl
cm1pbmlzdGljOjpnZXRQcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmg6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RPYmpDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0T2JqOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T2JqOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqOjpnZXRQcm90b3R5
cGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZVByb3RvdHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpwcm90b3R5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0UHJv
dG90eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Y3JlYXRlUHJvdG90eXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnByb3RvdHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRQcm90b3R5cGUp
OiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpwcm90b3R5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpnZXRQcm90b3R5cGUp
OiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlw
ZWRlZnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0VHlwZWRlZnM6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RUeXBlZGVmczo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVk
ZWZzOjpnZXRQcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU2F0dHJpYnV0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU2F0dHJpYnV0ZUNvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU2F0dHJp
YnV0ZTo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTYXR0cmlidXRlOjpw
cm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNhdHRyaWJ1dGU6OmdldFByb3RvdHlwZSk6
IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRl
Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU3JlYWRvbmx5OjpjcmVhdGVQcm90b3R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seTo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTcmVhZG9ubHk6OmdldFByb3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuaDoKKwogMjAxNi0wMy0wNiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIEVuYWJsZSBET00g
Y2xhc3MgY3JlYXRlIGZ1bmN0aW9ucyB0byB0YWtlIHBhcmFtZXRlcnMgaW4gY2FzZSBvZiBKU0J1
aWx0aW5Db25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dTaGVsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dTaGVsbC5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3
ICs4NSw3IEBAIHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWYKICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTRE9NV2luZG93OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIDAs
IHByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNET01XaW5kb3cqIGpzRE9NV2luZG93ID0gSlNET01X
aW5kb3c6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCAqZG9tV2luZG93LCB0aGlzKTsKICAgICBwcm90
b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3Qodm0sIGpzRE9NV2luZG93KTsKLSAg
ICBwcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbih2
bSwgSlNFdmVudFRhcmdldDo6Z2V0UHJvdG90eXBlKHZtLCBqc0RPTVdpbmRvdykpOworICAgIHBy
b3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBK
U0V2ZW50VGFyZ2V0Ojpwcm90b3R5cGUodm0sIGpzRE9NV2luZG93KSk7CiAgICAgc2V0V2luZG93
KHZtLCBqc0RPTVdpbmRvdyk7CiAgICAgQVNTRVJUKGpzRE9NV2luZG93LT5nbG9iYWxPYmplY3Qo
KSA9PSBqc0RPTVdpbmRvdyk7CiAgICAgQVNTRVJUKHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkg
PT0ganNET01XaW5kb3cpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFn
ZUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiw3IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRSgK
IAogdGVtcGxhdGU8PiB2b2lkIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU0hUTUxJbWFnZUVsZW1lbnQ6
OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIE5vbmUpOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU0hUTUxJbWFnZUVsZW1lbnQ6OnByb3Rv
dHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIE5vbmUpOwogfQogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNJbWFnZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoVk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2xv
YmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwogICAgICAgICBBU1NF
UlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3Qo
KSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAgICAgICAgIHdvcmtlckdsb2JhbFNj
b3BlUHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtl
ckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlUHJv
dG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oKm1fdm0s
IEpTRXZlbnRUYXJnZXQ6OmdldFByb3RvdHlwZSgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXIuZ2V0KCkpKTsKKyAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUtPnN0cnVj
dHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbigqbV92bSwgSlNFdmVudFRhcmdl
dDo6cHJvdG90eXBlKCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSkpOwog
ICAgICAgICBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0R2xvYmFs
T2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CiAgICAgfQog
ICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0g
bV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDE5NzY0NikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC05ODEsNyArOTgxLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAg
IyBQcm90b3R5cGUKICAgICB1bmxlc3MgKElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpKSB7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIik7Ci0g
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdl
dFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIik7CisgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlw
ZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIik7CiAgICAgfQogCiAgICAgIyBK
U1ZhbHVlIHRvIGltcGxlbWVudGF0aW9uIHR5cGUKQEAgLTIxOTUsMTQgKzIxOTUsMTQgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU09i
amVjdCogJHtjbGFzc05hbWV9OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7
CiAgICAgICAgIGlmICgkaGFzUGFyZW50ICYmICRwYXJlbnRDbGFzc05hbWUgbmUgIkpTQzo6RE9N
Tm9kZUZpbHRlciIpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAke2NsYXNz
TmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCAke3BhcmVu
dENsYXNzTmFtZX06OmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSkpO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJHtjbGFzc05hbWV9UHJvdG90
eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgJHtwYXJlbnRDbGFzc05hbWV9Ojpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCkpKTtcbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgbXkgJHByb3RvdHlwZSA9ICRpbnRlcmZhY2UtPmlzRXhjZXB0aW9uID8gImVycm9yUHJvdG90
eXBlIiA6ICJvYmplY3RQcm90b3R5cGUiOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+JHtwcm90b3R5cGV9KCkpKTtcbiIpOwogICAgICAgICB9CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIAotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIkpTT2JqZWN0KiAke2NsYXNzTmFtZX06OmdldFByb3RvdHlwZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJKU09iamVjdCogJHtjbGFzc05hbWV9Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8
JHtjbGFzc05hbWV9Pih2bSwgZ2xvYmFsT2JqZWN0KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CkBAIC0yNjM2LDcgKzI2MzYsNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIH0gZWxzaWYgKEludGVyZmFjZVJlcXVpcmVzQXR0
cmlidXRlc09uSW5zdGFuY2VGb3JDb21wYXRpYmlsaXR5KCRpbnRlcmZhY2UpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICMgRmFsbGJhY2sgdG8gdHJ5aW5nIHRvIHNlYXJjaGluZyB0aGUgcHJvdG90
eXBlIGNoYWluIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpLmdldE9iamVjdCgpO1xuIik7Ci0gICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBmb3IgKHRoaXNPYmplY3QgPSB0aGlzT2Jq
ZWN0ID8gdGhpc09iamVjdC0+cHJvdG90eXBlKCkuZ2V0T2JqZWN0KCkgOiBudWxscHRyOyB0aGlz
T2JqZWN0OyB0aGlzT2JqZWN0ID0gdGhpc09iamVjdC0+cHJvdG90eXBlKCkuZ2V0T2JqZWN0KCkp
IHtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
Zm9yICh0aGlzT2JqZWN0ID0gdGhpc09iamVjdCA/IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURp
cmVjdCgpLmdldE9iamVjdCgpIDogbnVsbHB0cjsgdGhpc09iamVjdDsgdGhpc09iamVjdCA9IHRo
aXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpLmdldE9iamVjdCgpKSB7XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICBpZiAoKGNhc3Rl
ZFRoaXMgPSAiIC4gR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSkgLiAi
KHRoaXNPYmplY3QpKSlcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgICAgICAgICBicmVhaztcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgfVxuIik7CkBAIC01MDMxLDcgKzUwMzEsNyBAQCBzdWIg
R2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICB9IGVsc2lmICgkaW50ZXJmYWNl
LT5pc0NhbGxiYWNrKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTtcbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgJHtjbGFzc05hbWV9OjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCAke2Ns
YXNzTmFtZX06OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTtcbiIpOwogICAgIH0KIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0
cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIikp
KSwgUmVhZE9ubHkgfCBEb250RW51bSk7XG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVE
T01PYmplY3QuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTMsNyArOTMsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0CiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBK
U1Rlc3RBY3RpdmVET01PYmplY3Q6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojpwcm90b3R5cGUo
dm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJp
bmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0QWN0aXZlRE9NT2JqZWN0IikpKSwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTEyOSw3ICsx
MjksNyBAQCBKU09iamVjdCogSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpjcmVhdGVQCiAgICAgcmV0
dXJuIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAotSlNP
YmplY3QqIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RBY3RpdmVET01PYmplY3Q6
OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
cmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RBY3RpdmVET01PYmplY3Q+KHZtLCBnbG9iYWxP
YmplY3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEFjdGl2ZURPTU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuaAkocmV2aXNpb24g
MTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEFjdGl2ZURPTU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsK
IAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90
eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0
YXRpYyBUZXN0QWN0aXZlRE9NT2JqZWN0KiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxOTc2NDYp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3
IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RDbGFzc1dpdGhKU0J1aWwKIAogdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OmdldFByb3RvdHlwZSh2bSwgJmdsb2Jh
bE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3I6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigw
KSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMTAsNyArMTEwLDcgQEAgSlNPYmplY3Qq
IEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cgogICAgIHJldHVybiBKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkp
OwogfQogCi1KU09iamVjdCogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6Omdl
dFByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVj
dCogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnByb3RvdHlwZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3Rv
dHlwZTxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4odm0sIGdsb2JhbE9iamVj
dCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSBmYWxzZTsKIAogICAgIHN0YXRpYyBKU0M6
OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShK
U0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3IqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Qu
Y3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rl
c3RDdXN0b21Db25zdHJ1Y3QKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEN1c3RvbUNvbnN0cnVj
dG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3Q6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCIpKSksIFJlYWRPbmx5IHwg
RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMDksNyArMTA5LDcgQEAg
SlNPYmplY3QqIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSQogICAgIHJldHVybiBKU1Rl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OmdldFByb3RvdHlwZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdD4odm0sIGdsb2JhbE9iamVjdCk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSBm
YWxzZTsKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpW
TSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0
UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwog
ICAgIHN0YXRpYyBUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqIHRv
V3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0Nl
bGwqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCShyZXZp
c2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3
IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RDdXN0b21OYW1lZEdldHQKIAogdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXI6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OnByb3RvdHlwZSh2bSwgJmdsb2Jh
bE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0
cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RDdXN0b21OYW1lZEdldHRlciIpKSksIFJlYWRPbmx5IHwg
RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMTIsNyArMTEyLDcgQEAg
SlNPYmplY3QqIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpjcmVhdAogICAgIHJldHVybiBKU1Rl
c3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVj
dCogSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldFByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6
OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
cmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcj4odm0sIGdsb2Jh
bE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAkocmV2
aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUg
PSBmYWxzZTsKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlND
OjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCog
Z2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwogICAgIHN0YXRpYyBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIHRvV3JhcHBlZChKU0M6OkpTVmFs
dWUpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNs
b3QmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9u
IDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBA
IHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RFdmVudENvbnN0cnVjdG8KIAogdGVtcGxhdGU8PiB2
b2lkIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RFdmVudENvbnN0cnVj
dG9yOjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVj
dCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhB
U0NJSUxpdGVyYWwoIlRlc3RFdmVudENvbnN0cnVjdG9yIikpKSwgUmVhZE9ubHkgfCBEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDEpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTE1Miw3ICsxNTIsNyBAQCBKU09iamVj
dCogSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlCiAgICAgcmV0dXJuIEpTVGVzdEV2ZW50
Q29uc3RydWN0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpwcm90b3R5cGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRE
T01Qcm90b3R5cGU8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4odm0sIGdsb2JhbE9iamVjdCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDE5NzY0NikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSBmYWxzZTsKIAogICAg
IHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBU
ZXN0RXZlbnRDb25zdHJ1Y3RvciogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcg
Kzc4LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEV2ZW50VGFyZ2V0Q29ucwogCiB0ZW1w
bGF0ZTw+IHZvaWQgSlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3Bl
cnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RFdmVudFRhcmdl
dDo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBKU1Rlc3RFdmVudFRhcmdldDo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0
ZXJhbCgiVGVzdEV2ZW50VGFyZ2V0IikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKIH0KQEAgLTExMCwxMCArMTEwLDEwIEBAIEpTVGVzdEV2ZW50VGFyZ2V0
OjpKU1Rlc3RFdmVudFRhcmdldChTdHIKIAogSlNPYmplY3QqIEpTVGVzdEV2ZW50VGFyZ2V0Ojpj
cmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewot
ICAgIHJldHVybiBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwgSlNFdmVudFRhcmdldDo6Z2V0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qp
KSk7CisgICAgcmV0dXJuIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgZ2xvYmFsT2JqZWN0LCBKU0V2ZW50VGFyZ2V0Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCkpKTsKIH0KIAotSlNPYmplY3QqIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRQcm90b3R5cGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdEV2ZW50
VGFyZ2V0Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewogICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0RXZlbnRUYXJnZXQ+KHZtLCBnbG9i
YWxPYmplY3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgJKHJldmlzaW9uIDE5NzY0
NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dFRhcmdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlID0gZmFsc2U7CiAKICAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6
OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBw
cm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgVGVz
dEV2ZW50VGFyZ2V0KiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhj
ZXB0aW9uLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3
LDcgKzg3LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEV4Y2VwdGlvbkNvbnN0cgogCiB0
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RXhjZXB0aW9u
OjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIEpTVGVzdEV4Y2VwdGlvbjo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJh
bCgiVGVzdEV4Y2VwdGlvbiIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBE
b250RW51bSk7CiB9CkBAIC0xMjEsNyArMTIxLDcgQEAgSlNPYmplY3QqIEpTVGVzdEV4Y2VwdGlv
bjo6Y3JlYXRlUHJvdG90eQogICAgIHJldHVybiBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmVycm9yUHJvdG90eXBlKCkp
KTsKIH0KIAotSlNPYmplY3QqIEpTVGVzdEV4Y2VwdGlvbjo6Z2V0UHJvdG90eXBlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RFeGNlcHRpb246
OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
cmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RFeGNlcHRpb24+KHZtLCBnbG9iYWxPYmplY3Qp
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9v
bCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsKIAogICAgIHN0YXRpYyBKU0M6OkpTT2Jq
ZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAg
ICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZN
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0RXhjZXB0aW9uKiB0b1dy
YXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAkocmV2aXNpb24g
MTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBA
IHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2gKIAogdGVtcGxhdGU8PiB2
b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3Bl
cnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlOjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnByb3RvdHlwZSh2bSwgJmds
b2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0s
IFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlIikpKSwgUmVhZE9u
bHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTEwNCw3ICsxMDQs
NyBAQCBKU09iamVjdCogSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6Y3JlCiAgICAgcmV0dXJu
IEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQog
Ci1KU09iamVjdCogSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6Z2V0UHJvdG90eXBlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogewogICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZT4odm0sIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlLmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhh
c1N0YXRpY1Byb3BlcnR5VGFibGUgPSBmYWxzZTsKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0
KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwg
SlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZSogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6
OkpTQ2VsbCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMTk3NjQ2
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBAQCB0ZW1wbGF0ZTw+IEpT
VmFsdWUgSlNUZXN0SW50ZXJmYWNlQ29uc3RyCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RJbnRlcmZhY2U6OmdldFByb3RvdHlwZSh2bSwgJmdsb2Jh
bE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0SW50ZXJmYWNlOjpwcm90
b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZp
YWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0SW50ZXJmYWNlIikpKSwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICByZWlmeVN0YXRp
Y1Byb3BlcnRpZXModm0sIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0
aGlzKTsKQEAgLTM5OSw3ICszOTksNyBAQCBKU09iamVjdCogSlNUZXN0SW50ZXJmYWNlOjpjcmVh
dGVQcm90b3R5CiAgICAgcmV0dXJuIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0K
IAotSlNPYmplY3QqIEpTVGVzdEludGVyZmFjZTo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RJbnRlcmZhY2U6OnByb3Rv
dHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJu
IGdldERPTVByb3RvdHlwZTxKU1Rlc3RJbnRlcmZhY2U+KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNT
dGF0aWNQcm9wZXJ0eVRhYmxlID0gZmFsc2U7CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCog
Y3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3Rh
dGljIEpTQzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9i
amVjdCopOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgVGVzdEludGVyZmFjZSogdG9XcmFwcGVk
KEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6
OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzksNyArNzksNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
CiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmpl
Y3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Ojpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05v
bnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0p
OwogfQpAQCAtMTIxLDcgKzEyMSw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvcjo6Y3IKICAgICByZXR1cm4gSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2Jq
ZWN0UHJvdG90eXBlKCkpKTsKIH0KIAotSlNPYmplY3QqIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yOjpnZXRQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
SlNPYmplY3QqIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpwcm90b3R5cGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRET01Qcm90b3R5
cGU8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDE5NzY0
NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlID0gZmFsc2U7
CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdldFByb3Rv
dHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKICAgICBERUNMQVJFX0lORk87Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCShyZXZp
c2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcg
Kzc3LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE1lZGlhUXVlcnlMaXN0TAogCiB0ZW1w
bGF0ZTw+IHZvaWQgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6
cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250
cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0p
OwogfQpAQCAtMTEyLDcgKzExMiw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyOjoKICAgICByZXR1cm4gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlw
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qt
Pm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyOjpnZXRQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQorSlNPYmplY3QqIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OnByb3RvdHlwZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERP
TVByb3RvdHlwZTxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPih2bSwgZ2xvYmFsT2JqZWN0
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAko
cmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzU3RhdGljUHJvcGVy
dHlUYWJsZSA9IGZhbHNlOwogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3Rv
dHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAg
ICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CiAgICAgc3RhdGljIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiB0b1dyYXBw
ZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE5
NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCB0ZW1w
bGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvCiAKIHRlbXBsYXRlPD4gdm9pZCBK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6
Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlM
aXRlcmFsKCJUZXN0TmFtZWRDb25zdHJ1Y3RvciIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
UmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMTEsNyArMTExLDcgQEAgdGVtcGxhdGU8PiBK
U1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0bwogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0
UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRl
cmFsKCJBdWRpbyIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51
bSk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgSlNPYmplY3QqIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3I6OmNyZWF0ZQogICAgIHJldHVybiBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJv
dG90eXBlKCkpKTsKIH0KIAotSlNPYmplY3QqIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldFBy
b3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCog
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVk
Q29uc3RydWN0b3I+KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNT
dGF0aWNQcm9wZXJ0eVRhYmxlID0gZmFsc2U7CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCog
Y3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3Rh
dGljIEpTQzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9i
amVjdCopOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgVGVzdE5hbWVkQ29uc3RydWN0b3IqIHRv
V3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0Nl
bGwqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MSw3ICs4MSw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROb2RlQ29uc3Ry
dWN0b3IKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewot
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROb2Rl
OjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIEpTVGVzdE5vZGU6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRl
c3ROb2RlIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsK
IH0KQEAgLTExMywxMCArMTEzLDEwIEBAIEpTVGVzdE5vZGU6OkpTVGVzdE5vZGUoU3RydWN0dXJl
KiBzdHJ1Y3QKIAogSlNPYmplY3QqIEpTVGVzdE5vZGU6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIEpTVGVzdE5vZGVQ
cm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3ROb2RlUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgSlNOb2RlOjpnZXRQcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCkpKTsKKyAgICByZXR1cm4gSlNUZXN0Tm9kZVByb3RvdHlwZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdE5vZGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgZ2xvYmFsT2JqZWN0LCBKU05vZGU6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSkpOwog
fQogCi1KU09iamVjdCogSlNUZXN0Tm9kZTo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3ROb2RlOjpwcm90b3R5cGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRET01Q
cm90b3R5cGU8SlNUZXN0Tm9kZT4odm0sIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgJ
KHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSBmYWxzZTsK
IAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90
eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogCiAgICAg
REVDTEFSRV9JTkZPOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3Bw
CShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcg
KzkzLDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5vbmRldGVybWluaXN0aQogCiB0ZW1w
bGF0ZTw+IHZvaWQgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0g
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5vbmRl
dGVybWluaXN0aWM6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6cHJvdG90eXBlKHZtLCAmZ2xv
YmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwg
U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdE5vbmRldGVybWluaXN0aWMiKSkpLCBSZWFkT25seSB8
IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTMzLDcgKzEzMyw3IEBA
IEpTT2JqZWN0KiBKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpjcmVhdGUKICAgICByZXR1cm4gSlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpT
VGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0
KiBKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpnZXRQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdE5vbmRldGVybWluaXN0aWM6OnBy
b3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0
dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPih2bSwgZ2xvYmFsT2Jq
ZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb25kZXRlcm1pbmlzdGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuaAkocmV2aXNpb24g
MTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vbmRldGVybWluaXN0aWMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzU3RhdGljUHJvcGVydHlUYWJsZSA9IGZhbHNl
OwogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwg
SlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90
b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAg
c3RhdGljIFRlc3ROb25kZXRlcm1pbmlzdGljKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShy
ZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA1LDcgKzUwNSw3IEBAIHRlbXBs
YXRlPD4gSlNWYWx1ZSBKU1Rlc3RPYmpDb25zdHJ1Y3RvcjoKIAogdGVtcGxhdGU8PiB2b2lkIEpT
VGVzdE9iakNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE9iajo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2Jq
ZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RPYmo6OnByb3RvdHlwZSh2bSwg
Jmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygm
dm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RPYmplY3QiKSkpLCBSZWFkT25seSB8IERvbnRF
bnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMiksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2
bSwgSlNUZXN0T2JqQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOwpAQCAtNzYyLDcgKzc2
Miw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RPYmo6OmNyZWF0ZVByb3RvdHlwZShWTSYKICAgICByZXR1
cm4gSlNUZXN0T2JqUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNUZXN0T2Jq
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0T2JqOjpnZXRQcm90
b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpT
VGVzdE9iajo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE9iaj4odm0sIGdsb2JhbE9iamVj
dCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5oCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc1N0YXRpY1Byb3Bl
cnR5VGFibGUgPSB0cnVlOwogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3Rv
dHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAg
ICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CiAgICAgc3RhdGljIFRlc3RPYmoqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6
OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHJl
dmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUw
LDcgKzE1MCw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3QKIAog
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmpl
Y3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpz
Tm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRF
bnVtKTsKIH0KQEAgLTE4NCw3ICsxODQsNyBAQCBKU09iamVjdCogSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6CiAgICAgcmV0dXJuIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90
b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpwcm90b3R5
cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBn
ZXRET01Qcm90b3R5cGU8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4odm0sIGdsb2JhbE9i
amVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc1N0YXRpY1By
b3BlcnR5VGFibGUgPSBmYWxzZTsKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQ
cm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9X
cmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2Vs
bCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCShyZXZpc2lv
biAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAg
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE92ZXJyaWRlQnVpbHRpbgogCiB0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE92ZXJyaWRlQnVpbHRp
bnM6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFT
Q0lJTGl0ZXJhbCgiVGVzdE92ZXJyaWRlQnVpbHRpbnMiKSkpLCBSZWFkT25seSB8IERvbnRFbnVt
KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTE0LDcgKzExNCw3IEBAIEpTT2JqZWN0
KiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpjcmVhdGUKICAgICByZXR1cm4gSlNUZXN0T3ZlcnJp
ZGVCdWlsdGluc1Byb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdE92ZXJy
aWRlQnVpbHRpbnNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zOjpnZXRQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnByb3RvdHlwZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERP
TVByb3RvdHlwZTxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaAkocmV2aXNpb24gMTk3NjQ2KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRl
QnVpbHRpbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzU3RhdGljUHJvcGVydHlUYWJsZSA9IGZhbHNlOwogCiAgICAg
c3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlND
OjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCog
cHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIFRl
c3RPdmVycmlkZUJ1aWx0aW5zKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg0LDcgKzg0LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcAogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpn
ZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6cHJvdG90eXBlKHZtLCAmZ2xv
YmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwg
U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIp
KSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0x
MjMsNyArMTIzLDcgQEAgSlNPYmplY3QqIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludAog
ICAgIHJldHVybiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmdldFByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogewogICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgJKHJldmlzaW9uIDE5
NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyAr
NDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzU3RhdGljUHJvcGVydHlU
YWJsZSA9IGZhbHNlOwogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlw
ZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2Jq
ZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CiAgICAgc3RhdGljIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIHRv
V3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0Nl
bGwqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFR5cGVkZWZzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpT
VGVzdFR5cGVkZWZzQ29uc3RydQogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0VHlwZWRlZnNDb25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBKU1Rlc3RUeXBlZGVmczo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RUeXBlZGVmczo6cHJvdG90eXBlKHZtLCAm
Z2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2
bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdFR5cGVkZWZzIikpKSwgUmVhZE9ubHkgfCBEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDIpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXMo
dm0sIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOwpAQCAtMTk3
LDcgKzE5Nyw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RUeXBlZGVmczo6Y3JlYXRlUHJvdG90eXAKICAg
ICByZXR1cm4gSlNUZXN0VHlwZWRlZnNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAotSlNPYmplY3QqIEpT
VGVzdFR5cGVkZWZzOjpnZXRQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdFR5cGVkZWZzOjpwcm90b3R5cGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8
SlNUZXN0VHlwZWRlZnM+KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZz
LmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlID0g
dHJ1ZTsKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpW
TSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0
UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwog
ICAgIHN0YXRpYyBUZXN0VHlwZWRlZnMqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAJKHJldmlzaW9u
IDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0
dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgdGVtcGxhdGU8PiBK
U1ZhbHVlIEpTYXR0cmlidXRlQ29uc3RydWN0bwogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNhdHRyaWJ1
dGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBKU2F0dHJpYnV0ZTo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU2F0dHJpYnV0ZTo6cHJvdG90eXBlKHZtLCAm
Z2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2
bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiYXR0cmlidXRlIikpKSwgUmVhZE9ubHkgfCBEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCBKU09iamVj
dCogSlNhdHRyaWJ1dGU6OmNyZWF0ZVByb3RvdHlwZShWCiAgICAgcmV0dXJuIEpTYXR0cmlidXRl
UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNhdHRyaWJ1dGVQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmVycm9yUHJv
dG90eXBlKCkpKTsKIH0KIAotSlNPYmplY3QqIEpTYXR0cmlidXRlOjpnZXRQcm90b3R5cGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTYXR0cmlidXRl
Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAg
IHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNhdHRyaWJ1dGU+KHZtLCBnbG9iYWxPYmplY3QpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmli
dXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTYXR0cmlidXRlLmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9w
ZXJ0eVRhYmxlID0gZmFsc2U7CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJv
dG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKICAgICBzdGF0aWMgYXR0cmlidXRlKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVl
KTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25s
eS5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBA
QCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNyZWFkb25seUNvbnN0cnVjdG9yCiAKIHRlbXBsYXRlPD4g
dm9pZCBKU3JlYWRvbmx5Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNyZWFkb25seTo6Z2V0UHJvdG90eXBlKHZtLCAm
Z2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU3JlYWRvbmx5Ojpwcm90
b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZp
YWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJyZWFkb25seSIpKSksIFJlYWRPbmx5
IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMDQsNyArMTA0LDcg
QEAgSlNPYmplY3QqIEpTcmVhZG9ubHk6OmNyZWF0ZVByb3RvdHlwZShWTQogICAgIHJldHVybiBK
U3JlYWRvbmx5UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNyZWFkb25seVBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAotSlNPYmplY3QqIEpTcmVhZG9ubHk6OmdldFByb3Rv
dHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNy
ZWFkb25seTo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTcmVhZG9ubHk+KHZtLCBnbG9iYWxPYmpl
Y3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
cmVhZG9ubHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNyZWFkb25seS5oCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQ
cm9wZXJ0eVRhYmxlID0gZmFsc2U7CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRl
UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgcmVhZG9ubHkqIHRvV3JhcHBlZChKU0M6OkpTVmFs
dWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273153</attachid>
            <date>2016-03-06 16:25:33 -0800</date>
            <delta_ts>2016-03-06 16:25:33 -0800</delta_ts>
            <desc>v4</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>131152</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NjQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMyBA
QAorMjAxNi0wMy0wNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbW0dldFByb3RvdHlwZU9mXV0gc2hvdWxkIGJlIGEgZnVsbHkgdmlydHVhbCBtZXRob2QgaW4g
dGhlIG1ldGhvZCB0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU1MDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBtYWtlcyB1cyBtb3JlIGNvbnNpc3RlbnQgd2l0aCBob3cgdGhlIEVT
NiBzcGVjaWZpY2F0aW9uIG1vZGVscyB0aGUKKyAgICAgICAgW1tHZXRQcm90b3R5cGVPZl1dIHRy
YXAuIE1vdmluZyB0aGlzIG1ldGhvZCBpbnRvIENsYXNzSW5mbzo6bWV0aG9kVGFibGUgCisgICAg
ICAgIGlzIGEgcHJlcmVxdWlzaXRlIGZvciBpbXBsZW1lbnRpbmcgUHJveHkuW1tHZXRQcm90b3R5
cGVPZl1dLiBUaGlzIHBhdGNoCisgICAgICAgIHN0aWxsIGFsbG93cyBkaXJlY3RseSBhY2Nlc3Np
bmcgdGhlIHByb3RvdHlwZSBmb3Igc2l0dWF0aW9ucyB3aGVyZSB0aGlzCisgICAgICAgIGlzIHRo
ZSBkZXNpcmVkIGJlaGF2aW9yLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gZ2V0dGluZyB0aGUgaW50
ZXJuYWwKKyAgICAgICAgW1tQcm90b3R5cGVdXSBmaWVsZCBhcyBkZXNjcmliZWQgaW4gdGhlIHNw
ZWNpZmljYXRpb24uIAorCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAg
KEpTT2JqZWN0R2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvdG90eXBlKToK
KyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxh
Z3MpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKToKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0
YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKToKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNl
b2YpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChmdW5jdGlvbkNyZWF0
ZVByb3h5KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChK
U0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzcGVjaWVz
Q29uc3RydWN0QXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
UHJvdG9GdW5jQmluZCk6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKToK
KyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAgICogcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpoYXNJbnN0YW5jZUJvdW5k
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpnZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzZXRQcm90b3R5cGUpOgorICAgICAg
ICAoSlNDOjpKU0NlbGw6OmdldFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aGFz
TGVnYWN5UHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpsYXN0SW5Qcm90b3R5cGVDaGFpbik6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvYmplY3RQcm90b3R5cGVJc1NhbmUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5cGVDaGFpbklzU2FuZSk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzdHJpbmdQcm90b3R5cGVDaGFpbklzU2FuZSk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpHbG9iYWxGdW5jUHJvdG9HZXR0ZXJG
dW5jdG9yOjpHbG9iYWxGdW5jUHJvdG9HZXR0ZXJGdW5jdG9yKToKKyAgICAgICAgKEpTQzo6R2xv
YmFsRnVuY1Byb3RvR2V0dGVyRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6Omds
b2JhbEZ1bmNQcm90b0dldHRlcik6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9u
bWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXRJbmxpbmVTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZVdp
dGhDeWNsZUNoZWNrKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJpdmF0ZUZ1
bmNJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9u
SG9sZUZvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjphdHRlbXB0VG9JbnRl
cmNlcHRQdXRCeUluZGV4T25Ib2xlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEdlbmVy
aWNQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpKU09iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm90b3R5cGVEaXJlY3Qp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldFByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25J
bmRleFByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpwcm90b3R5cGUpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3h5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6c2V0VGFyZ2V0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdFR5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5
cGVPZkZ1bmN0b3I6Ok9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2ZGdW5jdG9yKToKKyAg
ICAgICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZkZ1bmN0b3I6Om9wZXJh
dG9yKCkpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKToK
KyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om9i
amVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlHZXQpOgorICAgICAgICAoSlNDOjpQ
cm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aXNWYWxpZCk6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL3Byb3h5LWhhcy1wcm9wZXJ0eS5qczoKKyAgICAgICAgKGFzc2Vy
dC5sZXQuaDEuaGFzKToKKyAgICAgICAgKGFzc2VydC5sZXQuaDIuaGFzKToKKyAgICAgICAgKGFz
c2VydCk6CisKIDIwMTYtMDMtMDYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTc2NDUuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMjgsNyArMTIyOCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmUKICAgICBpZiAoIXRhcmdldC5pc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IEpTT2JqZWN0KiBqc1RhcmdldCA9IGFzT2JqZWN0KHRhcmdldC5hc0NlbGwoKSk7Ci0gICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc1RhcmdldC0+cHJvdG90eXBlKCkpOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZt
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNUYXJnZXQtPmdldFByb3RvdHlwZURp
cmVjdCgpKTsKICAgICBKU1Byb3h5KiBwcm94eSA9IEpTUHJveHk6OmNyZWF0ZShleGVjLT52bSgp
LCBzdHJ1Y3R1cmUsIGpzVGFyZ2V0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb3h5
KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCShy
ZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDggKzI2Nyw4IEBAIEpTVmFsdWVSZWYgSlNPYmpl
Y3RHZXRQcm90b3R5cGUoSlNDb250ZXgKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKIAotICAgIEpTT2JqZWN0KiBqc09iamVj
dCA9IHRvSlMob2JqZWN0KTsKLSAgICByZXR1cm4gdG9SZWYoZXhlYywganNPYmplY3QtPnByb3Rv
dHlwZSgpKTsKKyAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7IAorICAgIHJl
dHVybiB0b1JlZihleGVjLCBqc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkpOwogfQogCiB2
b2lkIEpTT2JqZWN0U2V0UHJvdG90eXBlKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCwgSlNWYWx1ZVJlZiB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5Miw2ICsx
MzkyLDE1IEBAIGludDY0X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0RG8KICAgICBy
ZXR1cm4gdHJ5Q29udmVydFRvSW50NTIodmFsdWUpOwogfQogCitzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIHZh
bHVlLCBKU0NlbGwqIHByb3RvKSAvLyBSZXR1cm5zIGpzQm9vbGVhbihUcnVlfEZhbHNlKSBvbiA2
NC1iaXQuCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgaWYgKEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5z
dGFuY2UoZXhlYywgdmFsdWUsIHByb3RvKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJu
IDA7Cit9CisKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVy
TG9nREZHKEV4ZWNTdGF0ZSogZXhlYykgCiB7CiAgICAgZXhlYy0+dm0oKS50eXBlUHJvZmlsZXJM
b2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJMb2cgRnVsbCwgY2FsbGVkIGZy
b20gaW5zaWRlIERGRy4iKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUsOCBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTG9hZFZhcmFyZ3MoCiBpbnQ2NF90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ29udmVydEJveGVkRG91YmxlVG9JbnQ1MihFbmNvZGVkSlNWYWx1ZSk7CiBp
bnQ2NF90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29udmVydERvdWJsZVRvSW50NTIoZG91Ymxl
KTsKIAorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmYXVsdEhhc0luc3RhbmNlKEV4
ZWNTdGF0ZSosIEpTQ2VsbCogdmFsdWUsIEpTQ2VsbCogcHJvdG8pOworCiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RGRyhFeGVjU3RhdGUqKSBXVEZf
SU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBkZWJ1Z09wZXJhdGlvblByaW50U3BlY3Vs
YXRpb25GYWlsdXJlKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKikgV1RGX0lOVEVSTkFMOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQwLDYgKzI3NDAsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvCiAgICAgCiAgICAgLy8gV2FsayB1cCB0
aGUgcHJvdG90eXBlIGNoYWluIG9mIHRoZSB2YWx1ZSAoaW4gc2NyYXRjaFJlZyksIGNvbXBhcmlu
ZyB0byBwcm90b3R5cGVSZWcuCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AoJm1faml0
KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBwZXJmb3JtRGVmYXVsdEhhc0luc3RhbmNlID0g
bV9qaXQuYnJhbmNoOChNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoUHJveHlPYmplY3RUeXBlKSk7CiAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1
cmUoc2NyYXRjaFJlZywgc2NyYXRjaFJlZywgc2NyYXRjaDJSZWcpOwogICAgIG1faml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgU3RydWN0dXJlOjpwcm90b3R5
cGVPZmZzZXQoKSArIENlbGxQYXlsb2FkT2Zmc2V0KSwgc2NyYXRjaFJlZyk7CiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgaXNJbnN0YW5jZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwsIHNjcmF0Y2hSZWcsIHByb3RvdHlwZVJlZyk7CkBAIC0yNzU1LDcgKzI3NTcsMTgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGbwogI2Vsc2UKICAgICBt
X2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCksIHNjcmF0Y2hSZWcpOwog
I2VuZGlmCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcHV0UmVzdWx0ID0gbV9qaXQuanVtcCgp
OworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBkb25lSnVtcHM7IAorICAgIGRvbmVKdW1w
cy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKworICAgIHBlcmZvcm1EZWZhdWx0SGFzSW5zdGFuY2Uu
bGluaygmbV9qaXQpOworICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2hSZWcpOwor
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmYXVsdEhhc0luc3RhbmNlLCBzY3JhdGNoUmVn
LCB2YWx1ZVJlZywgcHJvdG90eXBlUmVnKTsgCisgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhz
Y3JhdGNoUmVnKTsKKyAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHNjcmF0Y2hSZWcp
OworI2VuZGlmCisgICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgIAogICAg
IGlzSW5zdGFuY2UubGluaygmbV9qaXQpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0yNzY0LDcg
KzI3NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvCiAgICAg
bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEpLCBzY3JhdGNoUmVnKTsK
ICNlbmRpZgogICAgIAotICAgIHB1dFJlc3VsdC5saW5rKCZtX2ppdCk7CisgICAgZG9uZUp1bXBz
LmxpbmsoJm1faml0KTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHlw
ZUluZm9GbGFncyhOb2RlKiBub2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTQ3
LDYgKzU5NDcsOCBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBsb29wID0gRlRMX05F
V19CTE9DSyhtX291dCwgKCJJbnN0YW5jZU9mIGxvb3AiKSk7CiAgICAgICAgIExCYXNpY0Jsb2Nr
IG5vdFlldEluc3RhbmNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJJbnN0YW5jZU9mIG5vdCB5
ZXQgaW5zdGFuY2UiKSk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9O
RVdfQkxPQ0sobV9vdXQsICgiSW5zdGFuY2VPZiBjb250aW51YXRpb24iKSk7CisgICAgICAgIExC
YXNpY0Jsb2NrIGxvYWRQcm90b3R5cGVEaXJlY3QgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIklu
c3RhbmNlb2YgZGVmYXVsdFByb3RvdHlwZUZ1bmN0aW9uIikpOworICAgICAgICBMQmFzaWNCbG9j
ayBkZWZhdWx0SGFzSW5zdGFuY2VTbG93ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJJbnN0YW5j
ZW9mIGRlZmF1bHRQcm90b3R5cGVGdW5jdGlvbiIpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1
ZSBjb25kaXRpb247CiAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKQpAQCAtNTk2NCw4ICs1OTY2LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIG9yaWdpbmFsVmFsdWUgPSBtX291dC5hbmNob3IoY2VsbCk7CiAgICAgICAgIG1f
b3V0Lmp1bXAobG9vcCk7CiAgICAgICAgIAotICAgICAgICBtX291dC5hcHBlbmRUbyhsb29wLCBu
b3RZZXRJbnN0YW5jZSk7CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxvb3AsIGxvYWRQcm90b3R5
cGVEaXJlY3QpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBtX291dC5waGkobV9vdXQuaW50NjQs
IG9yaWdpbmFsVmFsdWUpOworICAgICAgICBMVmFsdWUgdHlwZSA9IG1fb3V0LmxvYWQ4WmVyb0V4
dDMyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb1R5cGUpOworICAgICAgICBtX291dC5i
cmFuY2goCisgICAgICAgICAgICBtX291dC5ub3RFcXVhbCh0eXBlLCBtX291dC5jb25zdEludDMy
KFByb3h5T2JqZWN0VHlwZSkpLAorICAgICAgICAgICAgdXN1YWxseShsb2FkUHJvdG90eXBlRGly
ZWN0KSwgcmFyZWx5KGRlZmF1bHRIYXNJbnN0YW5jZVNsb3cpKTsKKworICAgICAgICBtX291dC5h
cHBlbmRUbyhsb2FkUHJvdG90eXBlRGlyZWN0LCBub3RZZXRJbnN0YW5jZSk7CiAgICAgICAgIExW
YWx1ZSBzdHJ1Y3R1cmUgPSBsb2FkU3RydWN0dXJlKHZhbHVlKTsKICAgICAgICAgTFZhbHVlIGN1
cnJlbnRQcm90b3R5cGUgPSBtX291dC5sb2FkNjQoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVy
ZV9wcm90b3R5cGUpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBpc0luc3RhbmNlUmVzdWx0ID0g
bV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKQEAgLTU5NzMsMTQgKzU5ODEsMjIgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmVxdWFsKGN1cnJlbnRQcm90b3R5cGUsIHByb3Rv
dHlwZSksCiAgICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdFlldElu
c3RhbmNlKSk7CiAgICAgICAgIAotICAgICAgICBtX291dC5hcHBlbmRUbyhub3RZZXRJbnN0YW5j
ZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90WWV0SW5zdGFuY2Us
IGRlZmF1bHRIYXNJbnN0YW5jZVNsb3cpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBub3RJbnN0
YW5jZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOwogICAgICAgICBt
X291dC5hZGRJbmNvbWluZ1RvUGhpKHZhbHVlLCBtX291dC5hbmNob3IoY3VycmVudFByb3RvdHlw
ZSkpOwogICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGN1cnJlbnRQcm90b3R5cGUpLCB1bnN1
cmUobG9vcCksIHVuc3VyZShjb250aW51YXRpb24pKTsKKworICAgICAgICBtX291dC5hcHBlbmRU
byhkZWZhdWx0SGFzSW5zdGFuY2VTbG93LCBjb250aW51YXRpb24pOworICAgICAgICAvLyBXZSBj
YW4gdXNlIHRoZSB2YWx1ZSB0aGF0IHdlJ3JlIGxvb3Bpbmcgd2l0aCBiZWNhdXNlIHdlCisgICAg
ICAgIC8vIGNhbiBqdXN0IGNvbnRpbnVlIG9mZiBmcm9tIHdoZXJldmVyIHdlIGJhaWxlZCBmcm9t
IHRoZQorICAgICAgICAvLyBsb29wLgorICAgICAgICBWYWx1ZUZyb21CbG9jayBkZWZhdWx0SGFz
SW5zdGFuY2VSZXN1bHQgPSBtX291dC5hbmNob3IoCisgICAgICAgICAgICB2bUNhbGwobV9vdXQu
Ym9vbGVhbiwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlZmF1bHRIYXNJbnN0YW5jZSksIG1f
Y2FsbEZyYW1lLCB2YWx1ZSwgcHJvdG90eXBlKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOwogICAgICAgICBzZXRCb29sZWFuKAotICAgICAgICAgICAgbV9vdXQucGhpKG1f
b3V0LmJvb2xlYW4sIG5vdENlbGxSZXN1bHQsIGlzSW5zdGFuY2VSZXN1bHQsIG5vdEluc3RhbmNl
UmVzdWx0KSk7CisgICAgICAgICAgICBtX291dC5waGkobV9vdXQuYm9vbGVhbiwgbm90Q2VsbFJl
c3VsdCwgaXNJbnN0YW5jZVJlc3VsdCwgbm90SW5zdGFuY2VSZXN1bHQsIGRlZmF1bHRIYXNJbnN0
YW5jZVJlc3VsdCkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZDdXN0b20o
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNiArMjMzLDggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbgogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEp
LCByZWdUMCk7CiAgICAgTGFiZWwgbG9vcCh0aGlzKTsKIAorICAgIGFkZFNsb3dDYXNlKGJyYW5j
aDgoRXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoUHJveHlPYmplY3RUeXBlKSkpOworCiAgICAgLy8gTG9hZCB0aGUgcHJvdG90
eXBlIG9mIHRoZSBjZWxsIGluIHJlZ1QyLiAgSWYgdGhpcyBpcyBlcXVhbCB0byByZWdUMSAtIFdJ
TiEKICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBudWxsIC0gaWYgd2UgaGF2
ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3QgZ28gYWdhaW4uCiAgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7CkBA
IC0yNjMsNiArMjY1LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoSW5zdHJ1
YwogICAgIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIHZhbHVlKTsKICAgICBsaW5rU2xv
d0Nhc2VJZk5vdEpTQ2VsbChpdGVyLCBwcm90byk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwor
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMSwgcmVn
VDApOwogICAgIGVtaXRMb2FkKHByb3RvLCByZWdUMywgcmVnVDIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTMsNiArMTUzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbgog
ICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwg
cmVnVDApOwogICAgIExhYmVsIGxvb3AodGhpcyk7CiAKKyAgICBhZGRTbG93Q2FzZShicmFuY2g4
KEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKFByb3h5T2JqZWN0VHlwZSkpKTsKKwogICAgIC8vIExvYWQgdGhlIHByb3RvdHlw
ZSBvZiB0aGUgb2JqZWN0IGluIHJlZ1QyLiAgSWYgdGhpcyBpcyBlcXVhbCB0byByZWdUMSAtIFdJ
TiEKICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBudWxsIC0gaWYgd2UgaGF2
ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3QgZ28gYWdhaW4uCiAgICAgZW1pdExv
YWRTdHJ1Y3R1cmUocmVnVDIsIHJlZ1QyLCByZWdUMyk7CkBAIC04NTcsNiArODU5LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoSW5zdHJ1YwogICAgIGxpbmtTbG93Q2FzZUlm
Tm90SlNDZWxsKGl0ZXIsIHZhbHVlKTsKICAgICBsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChpdGVy
LCBwcm90byk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcihwcm90bywgcmVnVDEpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uSW5zdGFuY2VPZiwgZHN0LCByZWdUMCwgcmVnVDEpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzc5LDggKzE3NzksNiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkluCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIEpTVmFsdWUgcHJvdG8gPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3RvKTsKICAgICAK
LSAgICBBU1NFUlQoIXZhbHVlLmlzT2JqZWN0KCkgfHwgIXByb3RvLmlzT2JqZWN0KCkpOwotCiAg
ICAgYm9vbCByZXN1bHQgPSBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGV4ZWMsIHZhbHVl
LCBwcm90byk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2
aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYsNyBAQCB0eXBlZGVmIGludDY0X3QgSklU
X09QRVJBVElPTigqUV9KSVRPcGVyCiB0eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAoKlpf
SklUT3BlcmF0aW9uX0QpKGRvdWJsZSk7CiB0eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAo
KlpfSklUT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwogdHlwZWRlZiBpbnQzMl90IEpJVF9PUEVS
QVRJT04gKCpaX0pJVE9wZXJhdGlvbl9FQykoRXhlY1N0YXRlKiwgSlNDZWxsKik7Cit0eXBlZGVm
IGludDMyX3QgSklUX09QRVJBVElPTiAoKlpfSklUT3BlcmF0aW9uX0VDQykoRXhlY1N0YXRlKiwg
SlNDZWxsKiwgSlNDZWxsKik7CiB0eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAoKlpfSklU
T3BlcmF0aW9uX0VHQykoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqKTsKIHR5
cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRPcGVyYXRpb25fRVNKc3MpKEV4ZWNT
dGF0ZSosIHNpemVfdCwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9O
ICgqWl9KSVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2
aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI2LDcgKzUyNiw2IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9pbnN0YW5jZW8KICAgICBMTElOVF9CRUdJTigpOwogICAgIEpTVmFs
dWUgdmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHByb3RvID0g
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7Ci0gICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpIHx8
ICFwcm90by5pc09iamVjdCgpKTsKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTT2JqZWN0
OjpkZWZhdWx0SGFzSW5zdGFuY2UoZXhlYywgdmFsdWUsIHByb3RvKSkpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEy
MDYsMzQgKzEyMDYsNiBAQCBfbGxpbnRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZToKICAgICBz
dG9yZWkgMSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQogICAgIGRpc3BhdGNoKDQpCiAKLV9s
bGludF9vcF9pbnN0YW5jZW9mOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICAjIEFjdHVhbGx5
IGRvIHRoZSB3b3JrLgotICAgIGxvYWRpIDEyW1BDXSwgdDAKLSAgICBsb2FkaSA0W1BDXSwgdDMK
LSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcElu
c3RhbmNlb2ZTbG93KQotICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5v
cEluc3RhbmNlb2ZTbG93Ci0gICAgbG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BJbnN0YW5jZW9mU2xvdykKLSAgICAK
LSAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQotICAgIG1v
dmUgMSwgdDAKLS5vcEluc3RhbmNlb2ZMb29wOgotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0Ml0sIHQyCi0gICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRP
ZmZzZXRbdDJdLCB0MgotICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQotICAgIGJ0
aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcAotCi0gICAgbW92ZSAwLCB0MAotLm9wSW5zdGFuY2Vv
ZkRvbmU6Ci0gICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQotICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKDQpCi0K
LS5vcEluc3RhbmNlb2ZTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2lu
c3RhbmNlb2YpCi0gICAgZGlzcGF0Y2goNCkKLQogX2xsaW50X29wX2luc3RhbmNlb2ZfY3VzdG9t
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9pbnN0YW5jZW9mX2N1c3RvbSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxOTc2NDYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQko
d29ya2luZyBjb3B5KQpAQCAtMTA5MywzNCArMTA5Myw2IEBAIF9sbGludF9vcF9vdmVycmlkZXNf
aGFzX2luc3RhbmNlOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX2luc3RhbmNlb2Y6
Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCi0gICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQwKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVD
ZWxsKHQwLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCi0gICAgYmJiIEpTQ2VsbDo6bV90eXBlW3Qx
XSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rp
b24oMiwgdDApCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQyLCAub3BJbnN0
YW5jZW9mU2xvdykKLSAgICAKLSAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9IHByb3RvdHlwZSwg
dDIgPSB2YWx1ZQotICAgIG1vdmUgMSwgdDAKLS5vcEluc3RhbmNlb2ZMb29wOgotICAgIGxvYWRT
dHJ1Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmcodDIsIHQzKQotICAgIGxvYWRxIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGVbdDNdLCB0MgotICAgIGJxZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQot
ICAgIGJ0cXogdDIsIHRhZ01hc2ssIC5vcEluc3RhbmNlb2ZMb29wCi0KLSAgICBtb3ZlIDAsIHQw
Ci0ub3BJbnN0YW5jZW9mRG9uZToKLSAgICBvcnEgVmFsdWVGYWxzZSwgdDAKLSAgICBsb2FkaXNG
cm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCi0gICAgc3RvcmVxIHQwLCBbY2ZyLCB0MywgOF0KLSAgICBk
aXNwYXRjaCg0KQotCi0ub3BJbnN0YW5jZW9mU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9pbnN0YW5jZW9mKQotICAgIGRpc3BhdGNoKDQpCi0KIF9sbGludF9vcF9pbnN0
YW5jZW9mX2N1c3RvbToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfaW5zdGFuY2VvZl9jdXN0b20pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAx
OTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE3MDYsNiArMTcwNiwxMSBAQCBfbGxpbnRfb3BfY29w
eV9yZXN0OgogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NvcHlfcmVzdCkKICAgICBkaXNw
YXRjaCg0KQogCitfbGxpbnRfb3BfaW5zdGFuY2VvZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaW5zdGFuY2VvZikKKyAgICBkaXNwYXRj
aCg0KQorCiAKICMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3Vn
aCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgogIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBu
ZXZlciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDcgQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPFNwZWNpZXNDbwogICAgICAgICAvLyBGYXN0IHBhdGgg
aW4gdGhlIG5vcm1hbCBjYXNlIHdoZXJlIHRoZSB1c2VyIGhhcyBub3Qgc2V0IGFuIG93biBjb25z
dHJ1Y3RvciBhbmQgdGhlIEFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyBub3JtYWwuCiAg
ICAgICAgIC8vIFdlIG5lZWQgcHJvdG90eXBlIGNoZWNrIGZvciBzdWJjbGFzc2VzIG9mIEFycmF5
LCB3aGljaCBhcmUgQXJyYXkgb2JqZWN0cyBidXQgaGF2ZSBhIGRpZmZlcmVudCBwcm90b3R5cGUg
YnkgZGVmYXVsdC4KICAgICAgICAgaWYgKExJS0VMWSghdGhpc09iamVjdC0+aGFzQ3VzdG9tUHJv
cGVydGllcygpCi0gICAgICAgICAgICAmJiB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+YXJy
YXlQcm90b3R5cGUoKSA9PSB0aGlzT2JqZWN0LT5wcm90b3R5cGUoKQorICAgICAgICAgICAgJiYg
dGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmFycmF5UHJvdG90eXBlKCkgPT0gdGhpc09iamVj
dC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkKICAgICAgICAgICAgICYmICF0aGlzT2JqZWN0LT5nbG9i
YWxPYmplY3QoKS0+YXJyYXlQcm90b3R5cGUoKS0+ZGlkQ2hhbmdlQ29uc3RydWN0b3JPclNwZWNp
ZXNQcm9wZXJ0aWVzKCkpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKFNwZWNp
ZXNDb25zdHJ1Y3RSZXN1bHQ6OkZhc3RQYXRoLCBudWxscHRyKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTIsNiArMTEyLDkgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIGJvb2wg
KCpTZXRQcm90b3R5cGVGdW5jdGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93SWZDYW50U2V0KTsKICAgICBTZXRQcm90b3R5cGVGdW5jdGlvblB0
ciBzZXRQcm90b3R5cGU7CiAKKyAgICB0eXBlZGVmIEpTVmFsdWUgKCpHZXRQcm90b3R5cGVGdW5j
dGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqKTsKKyAgICBHZXRQcm90b3R5cGVGdW5jdGlv
blB0ciBnZXRQcm90b3R5cGU7CisKICAgICB0eXBlZGVmIHZvaWQgKCpEdW1wVG9TdHJlYW1GdW5j
dGlvblB0cikoY29uc3QgSlNDZWxsKiwgUHJpbnRTdHJlYW0mKTsKICAgICBEdW1wVG9TdHJlYW1G
dW5jdGlvblB0ciBkdW1wVG9TdHJlYW07CiAKQEAgLTE2Niw2ICsxNjksNyBAQCBzdHJ1Y3QgTWV0
aG9kVGFibGUgewogICAgICAgICAmQ2xhc3NOYW1lOjpwcmV2ZW50RXh0ZW5zaW9ucywgXAogICAg
ICAgICAmQ2xhc3NOYW1lOjppc0V4dGVuc2libGUsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6c2V0
UHJvdG90eXBlLCBcCisgICAgICAgICZDbGFzc05hbWU6OmdldFByb3RvdHlwZSwgXAogICAgICAg
ICAmQ2xhc3NOYW1lOjpkdW1wVG9TdHJlYW0sIFwKICAgICAgICAgJkNsYXNzTmFtZTo6ZXN0aW1h
dGVkU2l6ZSBcCiAgICAgfSwgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblBybwogICAgIH0KIAogICAgIEpTU3RyaW5nKiBuYW1lID0gdGFyZ2V0LmdldChleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSkudG9TdHJpbmcoZXhlYyk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCB0YXJnZXRPYmplY3QsIGV4ZWMtPmFyZ3VtZW50KDApLCBib3VuZEFyZ3MsIGxlbmd0aCwgbmFt
ZS0+dmFsdWUoZXhlYykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBleGVjLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZXhlYy0+
YXJndW1lbnQoMCksIGJvdW5kQXJncywgbGVuZ3RoLCBuYW1lLT52YWx1ZShleGVjKSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk3NjQ2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bENvbGxhdG8KICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlKSk7CiAKICAgICAgICAgLy8gYy4gTGV0IGJj
IGJlIEJvdW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgotICAgICAgICBib3Vu
ZENvbXBhcmUgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJn
ZXRPYmplY3QsIGNvbGxhdG9yLCBib3VuZEFyZ3MsIDIsIEFTQ0lJTGl0ZXJhbCgiY29tcGFyZSIp
KTsKKyAgICAgICAgYm91bmRDb21wYXJlID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHN0
YXRlLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgY29sbGF0b3IsIGJvdW5kQXJncywgMiwg
QVNDSUlMaXRlcmFsKCJjb21wYXJlIikpOworICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIC8v
IGQuIFNldCBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIHRvIGJjLgogICAgICAgICBjb2xsYXRv
ci0+c2V0Qm91bmRDb21wYXJlKHZtLCBib3VuZENvbXBhcmUpOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM0LDcgKzEzNCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bERhdGVUaW0KICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1l
bW9yeUVycm9yKHN0YXRlKSk7CiAKICAgICAgICAgLy8gYy4gTGV0IGJmIGJlIEJvdW5kRnVuY3Rp
b25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgotICAgICAgICBib3VuZEZvcm1hdCA9IEpTQm91
bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZHRmLCBi
b3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IikpOworICAgICAgICBib3VuZEZvcm1h
dCA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0YXJn
ZXRPYmplY3QsIGR0ZiwgYm91bmRBcmdzLCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpKTsKKyAg
ICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1ZhbHVlKCkpOwogICAgICAgICAvLyBkLiBTZXQgZHRmLltbYm91bmRGb3JtYXRdXSB0
byBiZi4KICAgICAgICAgZHRmLT5zZXRCb3VuZEZvcm1hdCh2bSwgYm91bmRGb3JtYXQpOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bE51bWJlckYKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlKSk7CiAKICAgICAgICAgLy8gYy4gTGV0IGJmIGJlIEJv
dW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgotICAgICAgICBib3VuZEZvcm1h
dCA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVj
dCwgbmYsIGJvdW5kQXJncywgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSk7CisgICAgICAgIGJv
dW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRlLCBnbG9iYWxPYmpl
Y3QsIHRhcmdldE9iamVjdCwgbmYsIGJvdW5kQXJncywgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQi
KSk7CisgICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICAgICAgLy8gZC4gU2V0IG5mLltbYm91bmRGb3Jt
YXRdXSB0byBiZi4KICAgICAgICAgbmYtPnNldEJvdW5kRm9ybWF0KHZtLCBib3VuZEZvcm1hdCk7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5ICs4
NywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc0luc3RhbmNlCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYm91bmRPYmplY3QtPnRhcmdldEZ1bmN0aW9u
KCktPmhhc0luc3RhbmNlKGV4ZWMsIHZhbHVlKSkpOwogfQogCi1pbmxpbmUgU3RydWN0dXJlKiBn
ZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uKQoraW5saW5lIFN0cnVjdHVyZSogZ2V0Qm91
bmRGdW5jdGlvblN0cnVjdHVyZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uKQogewotICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGFyZ2V0RnVuY3Rpb24tPnN0cnVjdHVyZSh2bSktPnN0b3JlZFByb3Rv
dHlwZSgpOworICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGFyZ2V0RnVuY3Rpb24tPmdldFByb3Rv
dHlwZSh2bSwgZXhlYyk7CisgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgSlNGdW5jdGlvbiogdGFyZ2V0SlNGdW5jdGlvbiA9IGpz
RHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHRhcmdldEZ1bmN0aW9uKTsKIAogICAgIC8vIFdlIG9u
bHkgY2FjaGUgdGhlIHN0cnVjdHVyZSBvZiB0aGUgYm91bmQgZnVuY3Rpb24gaWYgdGhlIGJpbmRl
ZSBpcyBhIEpTRnVuY3Rpb24gc2luY2UgdGhlcmUKQEAgLTExNywxMyArMTE5LDE1IEBAIGlubGlu
ZSBTdHJ1Y3R1cmUqIGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3QKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1KU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1Zh
bHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK0pTQm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0
KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTVmFsdWUgYm91bmRBcmdzLCBp
bnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQ29uc3RydWN0RGF0YSBjb25z
dHJ1Y3REYXRhOwogICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IEpTQzo6Z2V0Q29u
c3RydWN0RGF0YSh0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0YSk7CiAgICAgYm9vbCBjYW5D
b25zdHJ1Y3QgPSBjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7CiAgICAgTmF0
aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihib3VuZEZ1bmN0
aW9uQ2FsbCwgY2FuQ29uc3RydWN0ID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGNhbGxIb3N0
RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLnByb3RvdHlwZS5i
aW5kIHJlc3VsdCIpKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldEJvdW5kRnVuY3Rp
b25TdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24pOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gZ2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSh2bSwgZXhlYywgZ2xv
YmFsT2JqZWN0LCB0YXJnZXRGdW5jdGlvbik7CisgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlv
bigpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBmdW5j
dGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQm91bmRGdW5jdGlvbj4odm0uaGVh
cCkpIEpTQm91bmRGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHRhcmdldEZ1
bmN0aW9uLCBib3VuZFRoaXMsIGJvdW5kQXJncyk7CiAKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3Jl
YXRpb24odm0sIGV4ZWN1dGFibGUsIGxlbmd0aCwgbWFrZVN0cmluZygiYm91bmQgIiwgbmFtZSkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0
aW9uLmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQm91bmRGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKICAgICBjb25zdCBzdGF0aWMgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSB+SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSAmIEJhc2U6
OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgc3RhdGljIEpTQm91bmRGdW5jdGlvbiogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91
bmRUaGlzLCBKU1ZhbHVlIGJvdW5kQXJncywgaW50LCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0
aWMgSlNCb3VuZEZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTVmFsdWUg
Ym91bmRBcmdzLCBpbnQsIGNvbnN0IFN0cmluZyYpOwogICAgIAogICAgIHN0YXRpYyBib29sIGN1
c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCShyZXZpc2lv
biAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSlNWYWx1ZTo6cHV0VG9Q
cmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICBKU1ZhbHVlIHByb3RvdHlwZTsKICAgICBpZiAocHJv
cGVydHlOYW1lICE9IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pIHsKICAg
ICAgICAgZm9yICg7ICFvYmotPnN0cnVjdHVyZSgpLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVy
UHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCk7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsK
LSAgICAgICAgICAgIHByb3RvdHlwZSA9IG9iai0+cHJvdG90eXBlKCk7CisgICAgICAgICAgICBw
cm90b3R5cGUgPSBvYmotPmdldFByb3RvdHlwZURpcmVjdCgpOwogICAgICAgICAgICAgaWYgKHBy
b3RvdHlwZS5pc051bGwoKSkgewogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKQogICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwpAQCAtMTc4LDcgKzE3OCw5IEBAIHZvaWQgSlNW
YWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKLSAgICAgICAgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKKyAgICAgICAg
cHJvdG90eXBlID0gb2JqLT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAgICAgICBpZiAodm0u
ZXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChwcm90b3R5cGUu
aXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw0
ICsyODUsOSBAQCBib29sIEpTQ2VsbDo6c2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhlCiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorSlNWYWx1ZSBKU0NlbGw6OmdldFBy
b3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0ZSopCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw2ICsyMDks
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBw
cmV2ZW50RXh0ZW5zaW9ucyhKU09iamVjdCosIEV4ZWNTdGF0ZSopOwogICAgIHN0YXRpYyBOT19S
RVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgaXNFeHRlbnNpYmxlKEpTT2JqZWN0KiwgRXhlY1N0YXRl
Kik7CiAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBzZXRQcm90b3R5cGUo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBib29sKTsKKyAgICBzdGF0aWMgTk9fUkVU
VVJOX0RVRV9UT19DUkFTSCBKU1ZhbHVlIGdldFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0
ZSopOwogCiAgICAgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVj
dCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MTMsNyArNjEzLDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcgogICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAiJHZtIiksIGRvbGxhclZNLCBEb250RW51bSk7CiAgICAgfQog
Ci0gICAgcmVzZXRQcm90b3R5cGUodm0sIHByb3RvdHlwZSgpKTsKKyAgICByZXNldFByb3RvdHlw
ZSh2bSwgZ2V0UHJvdG90eXBlRGlyZWN0KCkpOwogfQogCiBib29sIEpTR2xvYmFsT2JqZWN0Ojpo
YXNMZWdhY3lQcm9maWxlcigpIGNvbnN0CkBAIC02NjksOCArNjY5LDggQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6YWRkRnVuY3Rpb24oRXhlY1N0YQogc3RhdGljIGlubGluZSBKU09iamVjdCogbGFz
dEluUHJvdG90eXBlQ2hhaW4oSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBKU09iamVjdCogbyA9
IG9iamVjdDsKLSAgICB3aGlsZSAoby0+cHJvdG90eXBlKCkuaXNPYmplY3QoKSkKLSAgICAgICAg
byA9IGFzT2JqZWN0KG8tPnByb3RvdHlwZSgpKTsKKyAgICB3aGlsZSAoby0+Z2V0UHJvdG90eXBl
RGlyZWN0KCkuaXNPYmplY3QoKSkKKyAgICAgICAgbyA9IGFzT2JqZWN0KG8tPmdldFByb3RvdHlw
ZURpcmVjdCgpKTsKICAgICByZXR1cm4gbzsKIH0KIApAQCAtNzI2LDcgKzcyNiw3IEBAIGlubGlu
ZSB2b2lkIE9iamVjdHNXaXRoQnJva2VuSW5kZXhpbmdGaW4KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3Vy
cmVudC0+cHJvdG90eXBlKCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjdXJy
ZW50LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICAgICAgaWYgKHByb3RvdHlwZVZhbHVlLmlz
TnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGN1cnJlbnQgPSBhc09iamVjdChw
cm90b3R5cGVWYWx1ZSk7CkBAIC03ODUsMjAgKzc4NSwyMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
OjpoYXZlQUJhZFRpbWUoVk0mIHZtCiBib29sIEpTR2xvYmFsT2JqZWN0OjpvYmplY3RQcm90b3R5
cGVJc1NhbmUoKQogewogICAgIHJldHVybiAhaGFzSW5kZXhlZFByb3BlcnRpZXMobV9vYmplY3RQ
cm90b3R5cGUtPmluZGV4aW5nVHlwZSgpKQotICAgICAgICAmJiBtX29iamVjdFByb3RvdHlwZS0+
cHJvdG90eXBlKCkuaXNOdWxsKCk7CisgICAgICAgICYmIG1fb2JqZWN0UHJvdG90eXBlLT5nZXRQ
cm90b3R5cGVEaXJlY3QoKS5pc051bGwoKTsKIH0KIAogYm9vbCBKU0dsb2JhbE9iamVjdDo6YXJy
YXlQcm90b3R5cGVDaGFpbklzU2FuZSgpCiB7CiAgICAgcmV0dXJuICFoYXNJbmRleGVkUHJvcGVy
dGllcyhtX2FycmF5UHJvdG90eXBlLT5pbmRleGluZ1R5cGUoKSkKLSAgICAgICAgJiYgbV9hcnJh
eVByb3RvdHlwZS0+cHJvdG90eXBlKCkgPT0gbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkKKyAgICAg
ICAgJiYgbV9hcnJheVByb3RvdHlwZS0+Z2V0UHJvdG90eXBlRGlyZWN0KCkgPT0gbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkKICAgICAgICAgJiYgb2JqZWN0UHJvdG90eXBlSXNTYW5lKCk7CiB9CiAK
IGJvb2wgSlNHbG9iYWxPYmplY3Q6OnN0cmluZ1Byb3RvdHlwZUNoYWluSXNTYW5lKCkKIHsKICAg
ICByZXR1cm4gIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG1fc3RyaW5nUHJvdG90eXBlLT5pbmRleGlu
Z1R5cGUoKSkKLSAgICAgICAgJiYgbV9zdHJpbmdQcm90b3R5cGUtPnByb3RvdHlwZSgpID09IG1f
b2JqZWN0UHJvdG90eXBlLmdldCgpCisgICAgICAgICYmIG1fc3RyaW5nUHJvdG90eXBlLT5nZXRQ
cm90b3R5cGVEaXJlY3QoKSA9PSBtX29iamVjdFByb3RvdHlwZS5nZXQoKQogICAgICAgICAmJiBv
YmplY3RQcm90b3R5cGVJc1NhbmUoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNzksNyArMzc5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0
R2xvYmFsT2JqZWN0KHZtLCB0aGlzKTsKICAgICAgICAgbV9ydW50aW1lRmxhZ3MgPSBtX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlLT5qYXZhU2NyaXB0UnVudGltZUZsYWdzKHRoaXMpOwogICAgICAg
ICBpbml0KHZtKTsKLSAgICAgICAgc2V0R2xvYmFsVGhpcyh2bSwgSlNQcm94eTo6Y3JlYXRlKHZt
LCBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIHByb3RvdHlwZSgpLCBQdXJlRm9y
d2FyZGluZ1Byb3h5VHlwZSksIHRoaXMpKTsKKyAgICAgICAgc2V0R2xvYmFsVGhpcyh2bSwgSlNQ
cm94eTo6Y3JlYXRlKHZtLCBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGdldFBy
b3RvdHlwZURpcmVjdCgpLCBQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSksIHRoaXMpKTsKICAgICB9
CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNWYWx1ZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzg0LDggKzc4NCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xv
YmFsRnVuY1QKIAogY2xhc3MgR2xvYmFsRnVuY1Byb3RvR2V0dGVyRnVuY3RvciB7CiBwdWJsaWM6
Ci0gICAgR2xvYmFsRnVuY1Byb3RvR2V0dGVyRnVuY3RvcihKU09iamVjdCogdGhpc09iamVjdCkK
LSAgICAgICAgOiBtX2hhc1NraXBwZWRGaXJzdEZyYW1lKGZhbHNlKQorICAgIEdsb2JhbEZ1bmNQ
cm90b0dldHRlckZ1bmN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCkK
KyAgICAgICAgOiBtX2V4ZWMoZXhlYykKKyAgICAgICAgLCBtX2hhc1NraXBwZWRGaXJzdEZyYW1l
KGZhbHNlKQogICAgICAgICAsIG1fdGhpc09iamVjdCh0aGlzT2JqZWN0KQogICAgICAgICAsIG1f
cmVzdWx0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSkKICAgICB7CkBAIC04MDEsMTIg
KzgwMiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV90aGlzT2JqZWN0
LT5hbGxvd3NBY2Nlc3NGcm9tKHZpc2l0b3ItPmNhbGxGcmFtZSgpKSkKLSAgICAgICAgICAgIG1f
cmVzdWx0ID0gSlNWYWx1ZTo6ZW5jb2RlKG1fdGhpc09iamVjdC0+cHJvdG90eXBlKCkpOworICAg
ICAgICAgICAgbV9yZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUobV90aGlzT2JqZWN0LT5nZXRQcm90
b3R5cGUobV9leGVjLT52bSgpLCBtX2V4ZWMpKTsKIAogICAgICAgICByZXR1cm4gU3RhY2tWaXNp
dG9yOjpEb25lOwogICAgIH0KIAogcHJpdmF0ZToKKyAgICBFeGVjU3RhdGUqIG1fZXhlYzsKICAg
ICBib29sIG1faGFzU2tpcHBlZEZpcnN0RnJhbWU7CiAgICAgSlNPYmplY3QqIG1fdGhpc09iamVj
dDsKICAgICBFbmNvZGVkSlNWYWx1ZSBtX3Jlc3VsdDsKQEAgLTgyMiw3ICs4MjQsMTAgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUAogICAgIGlmICghdGhpc09iamVj
dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT50aGlzVmFsdWUoKS5zeW50
aGVzaXplUHJvdG90eXBlKGV4ZWMpKTsKIAotICAgIEdsb2JhbEZ1bmNQcm90b0dldHRlckZ1bmN0
b3IgZnVuY3Rvcih0aGlzT2JqZWN0KTsKKyAgICBHbG9iYWxGdW5jUHJvdG9HZXR0ZXJGdW5jdG9y
IGZ1bmN0b3IoZXhlYywgdGhpc09iamVjdCk7CisgICAgLy8gVGhpcyBjYW4gdGhyb3cgYnV0IGl0
J3MganVzdCB1bm5lZWRlZCBleHRyYSB3b3JrIHRvIGNoZWNrIGZvciBpdC4gVGhlIHJldHVybgor
ICAgIC8vIHZhbHVlIGZyb20gdGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgYXMgdGhlIHJldHVy
biB2YWx1ZSBmcm9tIGEgaG9zdCBjYWxsLgorICAgIC8vIFRoZXJlZm9yZSwgdGhlIHJldHVybiB2
YWx1ZSBpcyBvbmx5IHVzZWQgaWYgdGhlcmUgd2Fzbid0IGFuIGV4Y2VwdGlvbi4KICAgICBleGVj
LT5pdGVyYXRlKGZ1bmN0b3IpOwogICAgIHJldHVybiBmdW5jdG9yLnJlc3VsdCgpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50LmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3
ICs3Niw3IEBAIGJvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnQKICAgICAv
LyBXZSBkb24ndCBjYWxsIHRocm91Z2ggdG8gSlNPYmplY3QgYmVjYXVzZSB0aGVyZSdzIG5vIHdh
eSB0byBnaXZlIGEgCiAgICAgLy8gbGV4aWNhbCBlbnZpcm9ubWVudCBvYmplY3QgZ2V0dGVyIHBy
b3BlcnRpZXMgb3IgYSBwcm90b3R5cGUuCiAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5oYXNHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwotICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5wcm90b3R5cGUo
KS5pc051bGwoKSk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgp
LmlzTnVsbCgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcyLDcgKzI3Miw3IEBAIFN0cmluZyBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZShKU08K
IHsKICAgICBTdHJpbmcgcHJvdG90eXBlRnVuY3Rpb25OYW1lOwogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChvYmplY3QtPnN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGUoKSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IHNs
b3Qob2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAgICAgUHJvcGVydHlOYW1lIGNvbnN0cnVjdG9yKGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvcik7CiAgICAgaWYgKG9iamVjdC0+Z2V0UHJvcGVy
dHlTbG90KGV4ZWMsIGNvbnN0cnVjdG9yLCBzbG90KSkgewogICAgICAgICBpZiAoc2xvdC5pc1Zh
bHVlKCkpIHsKQEAgLTQzMCwxMSArNDMwLDE0IEBAIHZvaWQgSlNPYmplY3Q6OnB1dElubGluZVNs
b3coRXhlY1N0YXRlKiAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAob2Jq
LT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlICYmIHByb3BlcnR5TmFtZSAhPSB2bS5wcm9wZXJ0
eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGRuJ3QgdW5jb25kaXRpb25hbGx5IHBlcmZvcm0gW1tTZXRdXSBoZXJlLgorICAgICAgICAgICAg
Ly8gV2UgbmVlZCB0byBkbyBtb3JlIGJlY2F1c2UgdGhpcyBpcyBvYnNlcnZhYmxlIGJlaGF2aW9y
LgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTAxMgogICAgICAgICAgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2Jq
ZWN0Kj4ob2JqKTsKICAgICAgICAgICAgIHByb3h5LT5Qcm94eU9iamVjdDo6cHV0KHByb3h5LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IG9iai0+cHJvdG90eXBlKCk7Cisg
ICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gb2JqLT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAg
ICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBvYmogPSBhc09iamVjdChwcm90b3R5cGUpOwpAQCAtMTIwMSw3ICsxMjA0LDcgQEAgYm9vbCBK
U09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlYwogewogICAgIEFTU0VSVChtZXRob2RU
YWJsZSh2bSktPnRvVGhpcyh0aGlzLCBleGVjLCBOb3RTdHJpY3RNb2RlKSA9PSB0aGlzKTsKIAot
ICAgIGlmICh0aGlzLT5wcm90b3R5cGUoKSA9PSBwcm90b3R5cGUpCisgICAgaWYgKHRoaXMtPmdl
dFByb3RvdHlwZURpcmVjdCgpID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRoaXMtPmlzRXh0ZW5zaWJsZShleGVjKTsKQEAgLTEy
MTUsMTMgKzEyMTgsMTYgQEAgYm9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hl
YwogICAgIH0KIAogICAgIEpTVmFsdWUgbmV4dFByb3RvdHlwZSA9IHByb3RvdHlwZTsKKyAgICBN
ZXRob2RUYWJsZTo6R2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9
IEpTT2JqZWN0OjpnZXRQcm90b3R5cGU7CiAgICAgd2hpbGUgKG5leHRQcm90b3R5cGUgJiYgbmV4
dFByb3RvdHlwZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGlmIChuZXh0UHJvdG90eXBlID09IHRo
aXMpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvd0lmQ2FudFNldCkKICAgICAgICAgICAg
ICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9Ci0gICAgICAgIG5leHRQcm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJvdG90
eXBlKS0+cHJvdG90eXBlKCk7CisgICAgICAgIGlmIChVTkxJS0VMWShhc09iamVjdChuZXh0UHJv
dG90eXBlKS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm90b3R5cGUgIT0gZGVmYXVsdEdldFByb3Rv
dHlwZSkpCisgICAgICAgICAgICBicmVhazsgLy8gV2UncmUgZG9uZS4gU2V0IHRoZSBwcm90b3R5
cGUuCisgICAgICAgIG5leHRQcm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJvdG90eXBlKS0+Z2V0
UHJvdG90eXBlRGlyZWN0KCk7CiAgICAgfQogICAgIHNldFByb3RvdHlwZURpcmVjdCh2bSwgcHJv
dG90eXBlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyMzIsNiArMTIzOCwxMSBAQCBib29sIEpT
T2JqZWN0OjpzZXRQcm90b3R5cGUoSlNPYmplY3QqIG9iCiAgICAgcmV0dXJuIG9iamVjdC0+c2V0
UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYy0+dm0oKSwgZXhlYywgcHJvdG90eXBlLCBzaG91
bGRUaHJvd0lmQ2FudFNldCk7CiB9CiAKK0pTVmFsdWUgSlNPYmplY3Q6OmdldFByb3RvdHlwZShK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqKQoreworICAgIHJldHVybiBvYmplY3QtPmdldFBy
b3RvdHlwZURpcmVjdCgpOworfQorCiBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGUoVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHJvdG90eXBlLCBib29sIHNob3VsZFRocm93SWZD
YW50U2V0KQogewogICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPnNldFByb3RvdHlwZSh0aGlz
LCBleGVjLCBwcm90b3R5cGUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKQEAgLTE1NzIsMTIgKzE1
ODMsMTkgQEAgYm9vbCBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKEV4ZWNTdAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwotICAgIHdoaWxlICgob2JqZWN0ID0g
b2JqZWN0LT5wcm90b3R5cGUoKS5nZXRPYmplY3QoKSkpIHsKKyAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICBKU1ZhbHVlIG9iamVjdFZhbHVlID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4
ZWMpOworICAgICAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIW9iamVjdFZhbHVlLmlzT2JqZWN0KCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KG9iamVjdFZh
bHVlKTsKICAgICAgICAgaWYgKHByb3RvID09IG9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJpdmF0ZUZ1bmNJbnN0
YW5jZU9mKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE1OTAsMjQgKzE2MDgsMjkgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2YQogCiB2b2lkIEpTT2JqZWN0OjpnZXRQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAgIG9iamVj
dC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKLSAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpKQorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBtb2RlKTsKKyAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAob2JqZWN0LT5wcm90b3R5cGUoKS5pc051bGwoKSkKKyAgICBKU1ZhbHVl
IG5leHRQcm90byA9IG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKKyAgICBpZiAoVU5M
SUtFTFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG5leHRQcm90
by5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICBKU09iamVjdCogcHJvdG90eXBlID0gYXNPYmplY3Qob2JqZWN0LT5wcm90b3R5cGUoKSk7
CisgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQcm90byk7CiAgICAgd2hp
bGUoMSkgewogICAgICAgICBpZiAocHJvdG90eXBlLT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygp
Lm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkgewogICAgICAgICAgICAgcHJvdG90eXBlLT5t
ZXRob2RUYWJsZSh2bSktPmdldFByb3BlcnR5TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBtb2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHBy
b3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7Ci0gICAgICAgIGlmIChVTkxJS0VMWShleGVjLT5o
YWRFeGNlcHRpb24oKSkpCisgICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG5leHRQcm90byA9IHByb3RvdHlwZS0+Z2V0UHJv
dG90eXBlKHZtLCBleGVjKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgSlNWYWx1ZSBuZXh0UHJvdG8gPSBwcm90b3R5
cGUtPnByb3RvdHlwZSgpOwogICAgICAgICBpZiAobmV4dFByb3RvLmlzTnVsbCgpKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIHByb3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQcm90byk7CkBA
IC0yMDI3LDcgKzIwNTAsNyBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRC
eUluCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IGN1cnJlbnQtPnByb3RvdHlwZSgpOworICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3VycmVudC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7
CiAgICAgICAgIGlmIChwcm90b3R5cGVWYWx1ZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgCkBAIC0yMDM3LDcgKzIwNjAsNyBAQCBib29sIEpTT2JqZWN0Ojph
dHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluCiAKIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVy
Y2VwdFB1dEJ5SW5kZXhPbkhvbGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVl
IHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewotICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUg
PSBwcm90b3R5cGUoKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gZ2V0UHJvdG90eXBl
RGlyZWN0KCk7CiAgICAgaWYgKHByb3RvdHlwZVZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCkBAIC0zMDI5LDEzICszMDUyLDE2IEBAIHZvaWQgSlNPYmplY3Q6Omdl
dEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEoKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKG1vZGUsIEpTT2JqZWN0UHJvcGVydGll
c01vZGU6OkV4Y2x1ZGUpKTsKLSAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
KQorICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgpLmlzTnVsbCgpKQorICAgIEpTVmFsdWUgbmV4dFBy
b3RvID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAgIGlmIChVTkxJS0VMWSh2
bS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobmV4dFByb3RvLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBKU09iamVjdCogcHJvdG90eXBlID0gYXNPYmpl
Y3Qob2JqZWN0LT5wcm90b3R5cGUoKSk7CisgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGFzT2Jq
ZWN0KG5leHRQcm90byk7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaWYgKHByb3RvdHlw
ZS0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkp
IHsKICAgICAgICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5h
bWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CkBAIC0zMDQ0LDcgKzMw
NzAsOSBAQCB2b2lkIEpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKCiAgICAgICAg
IHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlw
ZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShleGVj
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEpTVmFsdWUg
bmV4dFByb3RvID0gcHJvdG90eXBlLT5wcm90b3R5cGUoKTsKKyAgICAgICAgbmV4dFByb3RvID0g
cHJvdG90eXBlLT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAgICAgICBpZiAoVU5MSUtFTFko
dm0uZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAobmV4dFBy
b3RvLmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHByb3RvdHlwZSA9IGFz
T2JqZWN0KG5leHRQcm90byk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsMTkgQEAgcHVibGlj
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpT
T2JqZWN0Kik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBjYWxjdWxhdGVk
Q2xhc3NOYW1lKEpTT2JqZWN0Kik7CiAKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSgpIGNvbnN0Owor
ICAgIC8vIFRoaXMgaXMgdGhlIGZ1bGx5IHZpcnR1YWwgW1tHZXRQcm90b3R5cGVPZl1dIGludGVy
bmFsIGZ1bmN0aW9uIGRlZmluZWQKKyAgICAvLyBpbiB0aGUgRUNNQVNjcmlwdCA2IHNwZWNpZmlj
YXRpb24uIFVzZSB0aGlzIHdoZW4gZG9pbmcgYSBbW0dldFByb3RvdHlwZU9mXV0gCisgICAgLy8g
b3BlcmF0aW9uIGFzIGRpY3RhdGVkIGluIHRoZSBzcGVjaWZpY2F0aW9uLgorICAgIEpTVmFsdWUg
Z2V0UHJvdG90eXBlKFZNJiwgRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIEpTVmFsdWUgZ2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7CisgICAgLy8g
VGhpcyBnZXRzIHRoZSBwcm90b3R5cGUgZGlyZWN0bHkgb2ZmIG9mIHRoZSBzdHJ1Y3R1cmUuIFRo
aXMgZG9lcyBub3QgZG8KKyAgICAvLyBkeW5hbWljIGRpc3BhdGNoIG9uIHRoZSBnZXRQcm90b3R5
cGUgbWV0aG9kIHRhYmxlIG1ldGhvZC4gSXQgaXMgbm90IHZhbGlkIAorICAgIC8vIHRvIHVzZSB0
aGlzIHdoZW4gcGVyZm9ybWluZyBhIFtbR2V0UHJvdG90eXBlT2ZdXSBvcGVyYXRpb24gaW4gdGhl
IHNwZWNpZmljYXRpb24uCisgICAgLy8gSXQgaXMgdmFsaWQgdG8gdXNlIHRob3VnaCB3aGVuIHlv
dSBrbm93IHRoYXQgeW91IHdhbnQgdG8gZGlyZWN0bHkgZ2V0IGl0CisgICAgLy8gd2l0aG91dCBj
b25zdWx0aW5nIHRoZSBtZXRob2QgdGFibGUuIFRoaXMgaXMgYWtpbiB0byBnZXR0aW5nIHRoZSBb
W1Byb3RvdHlwZV1dCisgICAgLy8gaW50ZXJuYWwgZmllbGQgZGlyZWN0bHkgYXMgZGVzY3JpYmVk
IGluIHRoZSBzcGVjaWZpY2F0aW9uLgorICAgIEpTVmFsdWUgZ2V0UHJvdG90eXBlRGlyZWN0KCkg
Y29uc3Q7CisKICAgICAvLyBUaGlzIHNldHMgdGhlIHByb3RvdHlwZSB3aXRob3V0IGNoZWNraW5n
IGZvciBjeWNsZXMgYW5kIHdpdGhvdXQKICAgICAvLyBkb2luZyBkeW5hbWljIGRpc3BhdGNoIG9u
IFtbU2V0UHJvdG90eXBlT2ZdXSBvcGVyYXRpb24gaW4gdGhlIHNwZWNpZmljYXRpb24uCiAgICAg
Ly8gSXQgaXMgbm90IHZhbGlkIHRvIHVzZSB0aGlzIHdoZW4gcGVyZm9ybWluZyBhIFtbU2V0UHJv
dG90eXBlT2ZdXSBvcGVyYXRpb24gaW4KQEAgLTc1OSw3ICs3NzEsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIEFTU0VSVChp
bmhlcml0cyhpbmZvKCkpKTsKLSAgICAgICAgQVNTRVJUKHByb3RvdHlwZSgpLmlzTnVsbCgpIHx8
IEhlYXA6OmhlYXAodGhpcykgPT0gSGVhcDo6aGVhcChwcm90b3R5cGUoKSkpOworICAgICAgICBB
U1NFUlQoZ2V0UHJvdG90eXBlRGlyZWN0KCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9
PSBIZWFwOjpoZWFwKGdldFByb3RvdHlwZURpcmVjdCgpKSk7CiAgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+aXNPYmplY3QoKSk7CiAgICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAg
fQpAQCAtMTEyNCwxMSArMTEzNiwyMCBAQCBpbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KFZNJiB2
bSwgU3RydWN0CiAgICAgdm0uaGVhcC5hc2NyaWJlT3duZXIodGhpcywgYnV0dGVyZmx5KTsKIH0K
IAotaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OnByb3RvdHlwZSgpIGNvbnN0CitpbmxpbmUgSlNW
YWx1ZSBKU09iamVjdDo6Z2V0UHJvdG90eXBlRGlyZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4g
c3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZSgpOwogfQogCitpbmxpbmUgSlNWYWx1ZSBKU09i
amVjdDo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQoreworICAgIGF1dG8g
Z2V0UHJvdG90eXBlTWV0aG9kID0gbWV0aG9kVGFibGUodm0pLT5nZXRQcm90b3R5cGU7CisgICAg
TWV0aG9kVGFibGU6OkdldFByb3RvdHlwZUZ1bmN0aW9uUHRyIGRlZmF1bHRHZXRQcm90b3R5cGUg
PSBKU09iamVjdDo6Z2V0UHJvdG90eXBlOworICAgIGlmIChMSUtFTFkoZ2V0UHJvdG90eXBlTWV0
aG9kID09IGRlZmF1bHRHZXRQcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gZ2V0UHJvdG90eXBl
RGlyZWN0KCk7CisgICAgcmV0dXJuIGdldFByb3RvdHlwZU1ldGhvZCh0aGlzLCBleGVjKTsKK30K
KwogLy8gSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgbWV0aG9kIHdpdGggYSBQcm9wZXJ0eU5hbWUg
dGhhdCBpcyBhY3R1YWxseSBhbiBpbmRleCwKIC8vIGJ1dCBpZiBzbyB3aWxsIGFsd2F5cyByZXR1
cm4gZmFsc2UgKGRvZXNuJ3Qgc2VhcmNoIGluZGV4IHN0b3JhZ2UpLgogQUxXQVlTX0lOTElORSBi
b29sIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdChWTSYgdm0sIFN0cnVjdHVy
ZSYgc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCkBAIC0xMjA0LDYgKzEyMjUsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6Omdl
dFByb3BlcnR5CiAgICAgICAgICAgICAvLyBwYXJzaW5nIHRoZSBpbnQgYWdhaW4uCiAgICAgICAg
ICAgICByZXR1cm4gb2JqZWN0LT5nZXROb25JbmRleFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogICAgICAgICB9CisgICAgICAgIEFTU0VSVChvYmplY3QtPnR5cGUoKSAh
PSBQcm94eU9iamVjdFR5cGUpOwogICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpzdHJ1
Y3R1cmVJRFRhYmxlLmdldChvYmplY3QtPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBpZiAob2Jq
ZWN0LT5nZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjIzLDExICsxMjQ1LDIx
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHkKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIGF1dG8mIHN0cnVjdHVyZUlEVGFibGUgPSB2bS5oZWFwLnN0cnVj
dHVyZUlEVGFibGUoKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpczsKKyAgICBNZXRob2RU
YWJsZTo6R2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9IEpTT2Jq
ZWN0OjpnZXRQcm90b3R5cGU7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgU3RydWN0dXJl
JiBzdHJ1Y3R1cmUgPSAqc3RydWN0dXJlSURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgp
KTsKICAgICAgICAgaWYgKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBzdHJ1
Y3R1cmUuc3RvcmVkUHJvdG90eXBlKCk7CisgICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRp
b24oKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlOworICAgICAgICBpZiAoTElLRUxZKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFi
bGUuZ2V0UHJvdG90eXBlID09IGRlZmF1bHRHZXRQcm90b3R5cGUgfHwgc2xvdC5pbnRlcm5hbE1l
dGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
KSkKKyAgICAgICAgICAgIHByb3RvdHlwZSA9IHN0cnVjdHVyZS5zdG9yZWRQcm90b3R5cGUoKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwcm90b3R5cGUgPSBvYmplY3QtPmdldFByb3Rv
dHlwZSh2bSwgZXhlYyk7CisgICAgICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIGlmICghcHJvdG90eXBl
LmlzT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG9iamVjdCA9
IGFzT2JqZWN0KHByb3RvdHlwZSk7CkBAIC0xMjQyLDE0ICsxMjc0LDI2IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBKU09iamVjdDo6Z2V0Tm9uSW5kZXgKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIGF1dG8mIHN0cnVjdHVyZUlEVGFibGUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsK
ICAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpczsKKyAgICBNZXRob2RUYWJsZTo6R2V0UHJvdG90
eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90b3R5
cGU7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAq
c3RydWN0dXJlSURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgaWYg
KExJS0VMWSghVHlwZUluZm86Om92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChvYmplY3QtPmlu
bGluZVR5cGVGbGFncygpKSkpIHsKICAgICAgICAgICAgIGlmIChvYmplY3QtPmdldE93bk5vbklu
ZGV4UHJvcGVydHlTbG90KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RydWN0dXJlLmNs
YXNzSW5mbygpLT5tZXRob2RUYWJsZS5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gc3RydWN0dXJlLnN0b3JlZFByb3RvdHlwZSgpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFi
bGUuZ2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSh2
bS5leGNlcHRpb24oKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlOworICAgICAgICBpZiAoTElLRUxZKHN0cnVjdHVy
ZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0UHJvdG90eXBlID09IGRlZmF1bHRHZXRQcm90
b3R5cGUgfHwgc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KSkKKyAgICAgICAgICAgIHByb3RvdHlwZSA9IHN0cnVj
dHVyZS5zdG9yZWRQcm90b3R5cGUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwcm90
b3R5cGUgPSBvYmplY3QtPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CisgICAgICAgICAgICBpZiAo
dm0uZXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CiAgICAgICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkocmV2aXNp
b24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgQUxXQVlTX0lOTElORSBib29s
IEpTT2JqZWN0OjpjYW5QZXJmb3JtRgogICAgICAgICBpZiAob2JqLT5zdHJ1Y3R1cmUodm0pLT5o
YXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkgfHwgb2Jq
LT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgIHByb3RvdHlwZSA9IG9iai0+cHJvdG90eXBlKCk7CisgICAgICAgIHByb3RvdHlw
ZSA9IG9iai0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CiAgICAgICAgIGlmIChwcm90b3R5cGUuaXNO
dWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3
ICs0Nyw3IEBAIHZvaWQgSlNQcm94eTo6c2V0VGFyZ2V0KFZNJiB2bSwgSlNHbG9iYWwKIHsKICAg
ICBBU1NFUlRfQVJHKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0KTsKICAgICBtX3RhcmdldC5z
ZXQodm0sIHRoaXMsIGdsb2JhbE9iamVjdCk7Ci0gICAgc2V0UHJvdG90eXBlRGlyZWN0KHZtLCBn
bG9iYWxPYmplY3QtPnByb3RvdHlwZSgpKTsKKyAgICBzZXRQcm90b3R5cGVEaXJlY3Qodm0sIGds
b2JhbE9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkpOwogCiAgICAgUHJvdG90eXBlTWFwJiBw
cm90b3R5cGVNYXAgPSB2bS5wcm90b3R5cGVNYXA7CiAgICAgaWYgKCFwcm90b3R5cGVNYXAuaXNQ
cm90b3R5cGUodGhpcykpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9u
IDE5NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIGlmIChvYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEob2JqZWN0LCBkYXRhKSA9PSBDb25zdHJ1Y3RUeXBl
OjpOb25lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsICJuZXcudGFyZ2V0IHBhc3NlZCB0byBUeXBlZEFycmF5IGlzIG5vdCBhIHZhbGlkIGNvbnN0
cnVjdG9yLiIpKTsKIAotICAgIGZvciAoOyAhdmFsdWUuaXNOdWxsKCk7IHZhbHVlID0ganNDYXN0
PEpTT2JqZWN0Kj4odmFsdWUpLT5wcm90b3R5cGUoKSkgeworICAgIGZvciAoOyAhdmFsdWUuaXNO
dWxsKCk7IHZhbHVlID0ganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLT5nZXRQcm90b3R5cGVEaXJl
Y3QoKSkgewogICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3IqPih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZmluZCBUeXBlZEFycmF5IGNvbnN0cnVjdG9yIHRo
YXQgaW5oZXJpdHMgZnJvbSBUeXBlZEFycmF5LiIpKTsKICAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcjxKU0ludDhBcnJheT4qPih2YWx1
ZSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw4
ICsxNTAsOSBAQCBDYWxsVHlwZSBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoCiAKIGNs
YXNzIE9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2ZGdW5jdG9yIHsKIHB1YmxpYzoKLSAg
ICBPYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mRnVuY3RvcihKU09iamVjdCogb2JqZWN0
KQotICAgICAgICA6IG1faGFzU2tpcHBlZEZpcnN0RnJhbWUoZmFsc2UpCisgICAgT2JqZWN0Q29u
c3RydWN0b3JHZXRQcm90b3R5cGVPZkZ1bmN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
b2JqZWN0KQorICAgICAgICA6IG1fZXhlYyhleGVjKQorICAgICAgICAsIG1faGFzU2tpcHBlZEZp
cnN0RnJhbWUoZmFsc2UpCiAgICAgICAgICwgbV9vYmplY3Qob2JqZWN0KQogICAgICAgICAsIG1f
cmVzdWx0KGpzVW5kZWZpbmVkKCkpCiAgICAgewpAQCAtMTY3LDExICsxNjgsMTIgQEAgcHVibGlj
OgogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fb2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKHZp
c2l0b3ItPmNhbGxGcmFtZSgpKSkKLSAgICAgICAgICAgIG1fcmVzdWx0ID0gbV9vYmplY3QtPnBy
b3RvdHlwZSgpOworICAgICAgICAgICAgbV9yZXN1bHQgPSBtX29iamVjdC0+Z2V0UHJvdG90eXBl
KG1fZXhlYy0+dm0oKSwgbV9leGVjKTsKICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9u
ZTsKICAgICB9CiAKIHByaXZhdGU6CisgICAgRXhlY1N0YXRlKiBtX2V4ZWM7CiAgICAgYm9vbCBt
X2hhc1NraXBwZWRGaXJzdEZyYW1lOwogICAgIEpTT2JqZWN0KiBtX29iamVjdDsKICAgICBKU1Zh
bHVlIG1fcmVzdWx0OwpAQCAtMTc5LDcgKzE4MSwxMCBAQCBwcml2YXRlOgogCiBKU1ZhbHVlIG9i
amVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
b2JqZWN0KQogewotICAgIE9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2ZGdW5jdG9yIGZ1
bmN0b3Iob2JqZWN0KTsKKyAgICBPYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mRnVuY3Rv
ciBmdW5jdG9yKGV4ZWMsIG9iamVjdCk7CisgICAgLy8gVGhpcyBjYW4gdGhyb3cgYnV0IGl0J3Mg
anVzdCB1bm5lZWRlZCBleHRyYSB3b3JrIHRvIGNoZWNrIGZvciBpdC4gVGhlIHJldHVybgorICAg
IC8vIHZhbHVlIGZyb20gdGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgYXMgdGhlIHJldHVybiB2
YWx1ZSBmcm9tIGEgaG9zdCBjYWxsLgorICAgIC8vIFRoZXJlZm9yZSwgdGhlIHJldHVybiB2YWx1
ZSBpcyBvbmx5IHVzZWQgaWYgdGhlcmUgd2Fzbid0IGFuIGV4Y2VwdGlvbi4KICAgICBleGVjLT5p
dGVyYXRlKGZ1bmN0b3IpOwogICAgIHJldHVybiBmdW5jdG9yLnJlc3VsdCgpOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTQgKzEwMSwxOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgaWYgKCFleGVjLT5hcmd1
bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihmYWxzZSkpOwogCi0gICAgSlNWYWx1ZSB2ID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQo
MCkpLT5wcm90b3R5cGUoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTVmFsdWUg
diA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsK
KyAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBpZiAo
IXYuaXNPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKGZhbHNlKSk7CiAgICAgICAgIGlmICh2ID09IHRoaXNPYmopCiAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7Ci0gICAgICAgIHYgPSBhc09iamVj
dCh2KS0+cHJvdG90eXBlKCk7CisgICAgICAgIHYgPSBhc09iamVjdCh2KS0+Z2V0UHJvdG90eXBl
KHZtLCBleGVjKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKKyAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICB9CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHJl
dmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsMTEgKzkwLDEwIEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQoRXgKICAgICAvLyBGSVhNRTogbWFrZSBpdCBzbyB0aGF0
IGN1c3RvbSBnZXR0ZXJzIHRha2UgYm90aCB0aGUgfHRoaXN8IHZhbHVlIGFuZCB0aGUgc2xvdEJh
c2UgKHByb3BlcnR5IGhvbGRlcikuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NDMyMAogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlmIChMSUtF
TFkocHJveHlPYmplY3RBc09iamVjdC0+aW5oZXJpdHMoUHJveHlPYmplY3Q6OmluZm8oKSkpKQor
ICAgICAgICBpZiAoTElLRUxZKHByb3h5T2JqZWN0QXNPYmplY3QtPnR5cGUoKSA9PSBQcm94eU9i
amVjdFR5cGUpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgU3RydWN0dXJlJiBzdHJ1
Y3R1cmUgPSAqdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHByb3h5T2JqZWN0QXNPYmpl
Y3QtPnN0cnVjdHVyZUlEKCkpOwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHN0cnVjdHVy
ZS5zdG9yZWRQcm90b3R5cGUoKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBwcm94eU9i
amVjdEFzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocHJvdG90eXBlLmlzT2JqZWN0KCkpOwogICAgICAgICBwcm94eU9iamVjdEFzT2JqZWN0ID0g
YXNPYmplY3QocHJvdG90eXBlKTsKICAgICB9CkBAIC0xMDA2LDcgKzEwMDUsOSBAQCBib29sIFBy
b3h5T2JqZWN0OjpwZXJmb3JtU2V0UHJvdG90eXBlKEV4CiAgICAgaWYgKHRhcmdldElzRXh0ZW5z
aWJsZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBKU1ZhbHVlIHRhcmdldFByb3RvdHlw
ZSA9IHRhcmdldC0+cHJvdG90eXBlKCk7CisgICAgSlNWYWx1ZSB0YXJnZXRQcm90b3R5cGUgPSB0
YXJnZXQtPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFzYW1lVmFsdWUoZXhlYywgcHJvdG90eXBl
LCB0YXJnZXRQcm90b3R5cGUpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJQcm94eSAnc2V0UHJvdG90eXBlT2YnIHRyYXAgcmV0dXJuZWQgdHJ1ZSB3aGVu
IGl0cyB0YXJnZXQgaXMgbm9uLWV4dGVuc2libGUgYW5kIHRoZSBuZXcgcHJvdG90eXBlIHZhbHVl
IGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCBwcm90b3R5cGUgdmFsdWUuIEl0IHNob3Vs
ZCBoYXZlIHJldHVybmVkIGZhbHNlLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAko
cmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNyArMjEwLDcgQEAgaW5saW5lIGJv
b2wgU3RydWN0dXJlOjppc1ZhbGlkKEpTR2xvYmFsTwogICAgICAgICBpZiAoYXNPYmplY3QocHJv
dG90eXBlKS0+c3RydWN0dXJlKCkgIT0gY2FjaGVkU3RydWN0dXJlLT5nZXQoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgKytjYWNoZWRTdHJ1Y3R1cmU7Ci0gICAgICAgIHBy
b3RvdHlwZSA9IGFzT2JqZWN0KHByb3RvdHlwZSktPnByb3RvdHlwZSgpOworICAgICAgICBwcm90
b3R5cGUgPSBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICB9
CiAgICAgcmV0dXJuIHByb3RvdHlwZS5pc051bGwoKSAmJiAhKmNhY2hlZFN0cnVjdHVyZTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHktaGFzLXByb3Bl
cnR5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
cHJveHktaGFzLXByb3BlcnR5LmpzCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3Byb3h5LWhhcy1wcm9wZXJ0eS5qcwkod29ya2luZyBjb3B5
KQpAQCAtMzY3LDMgKzM2Nyw3OSBAQCBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgICAgICBhc3Nl
cnQodGhyZXcpOwogICAgIH0KIH0KKworeworICAgIGxldCBlMSA9IG51bGw7CisgICAgbGV0IGUy
ID0gbnVsbDsKKyAgICBsZXQgdDEgPSB7fTsKKyAgICBsZXQgY2FsbGVkMSA9IGZhbHNlOworICAg
IGxldCBoMSA9IHsKKyAgICAgICAgaGFzOiBmdW5jdGlvbih0aGVUYXJnZXQsIHByb3BOYW1lKSB7
CisgICAgICAgICAgICBjYWxsZWQxID0gdHJ1ZTsKKyAgICAgICAgICAgIGUxID0gbmV3IEVycm9y
OworICAgICAgICAgICAgdGhyb3cgZTE7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9OworICAgIGxldCBwMSA9IG5ldyBQcm94eSh0MSwgaDEpOworCisgICAgbGV0
IHQyID0ge307CisgICAgdDIuX19wcm90b19fID0gcDE7CisgICAgbGV0IGgyID0geworICAgICAg
ICBoYXM6IGZ1bmN0aW9uKHRoZVRhcmdldCwgcHJvcE5hbWUpIHsKKyAgICAgICAgICAgIGUyID0g
bmV3IEVycm9yOworICAgICAgICAgICAgdGhyb3cgZTI7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9OworICAgIGxldCBwMiA9IG5ldyBQcm94eSh0MiwgaDIpOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAgbGV0IHRocmV3ID0g
ZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAxMCBpbiBwMjsKKyAgICAgICAgfSBj
YXRjaChlKSB7CisgICAgICAgICAgICBhc3NlcnQoZSA9PT0gZTIpOworICAgICAgICAgICAgdGhy
ZXcgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7CisgICAgICAgIGFz
c2VydCghY2FsbGVkMSk7CisgICAgfQorfQorCit7CisgICAgbGV0IGUxID0gbnVsbDsKKyAgICBs
ZXQgZTIgPSBudWxsOworICAgIGxldCB0MSA9IHt9OworICAgIGxldCBjYWxsZWQxID0gZmFsc2U7
CisgICAgbGV0IGgxID0geworICAgICAgICBoYXM6IGZ1bmN0aW9uKHRoZVRhcmdldCwgcHJvcE5h
bWUpIHsKKyAgICAgICAgICAgIGNhbGxlZDEgPSB0cnVlOworICAgICAgICAgICAgZTEgPSBuZXcg
RXJyb3I7CisgICAgICAgICAgICB0aHJvdyBlMTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH07CisgICAgbGV0IHAxID0gbmV3IFByb3h5KHQxLCBoMSk7CisKKyAg
ICBsZXQgdDIgPSB7fTsKKyAgICB0Mi5fX3Byb3RvX18gPSBwMTsKKyAgICBsZXQgaDIgPSB7Cisg
ICAgICAgIGhhczogZnVuY3Rpb24odGhlVGFyZ2V0LCBwcm9wTmFtZSkgeworICAgICAgICAgICAg
ZTIgPSBuZXcgRXJyb3I7CisgICAgICAgICAgICB0aHJvdyBlMjsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH07CisgICAgbGV0IHAyID0gbmV3IFByb3h5KHQyLCBo
Mik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgeworICAgICAgICBsZXQgdGhy
ZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICJmb28iIGluIHAyOworICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGFzc2VydChlID09PSBlMik7CisgICAgICAg
ICAgICB0aHJldyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAg
ICAgICAgYXNzZXJ0KCFjYWxsZWQxKTsKKyAgICB9Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNTQgQEAKKzIwMTYtMDMtMDYgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgW1tHZXRQcm90b3R5cGVPZl1dIHNob3VsZCBiZSBhIGZ1bGx5IHZpcnR1
YWwgbWV0aG9kIGluIHRoZSBtZXRob2QgdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAwMgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlw
IFBpemxvLgorCisgICAgICAgIENoYW5nZSA6OmdldFByb3RvdHlwZSguKSB0byA6OnByb3RvdHlw
ZSguKSBpbiB2YXJpb3VzIHBsYWNlcyB0byBwcmV2ZW50CisgICAgICAgIGEgbmFtaW5nIGNvbmZs
aWN0IHdpdGggSlNDLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIG5vIG5ldyBmdW5j
dGlvbmFsaXR5IHdhcyBhZGRlZC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNJbWFnZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdl
bmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAoR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Y3JlYXRlUHJv
dG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6cHJvdG90
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0UHJvdG90
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnByb3RvdHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0UHJvdG90eXBlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3RDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OmNyZWF0ZVBy
b3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdDo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0OjpnZXRQcm90b3R5cGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Y3JlYXRlUHJv
dG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpwcm90
b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldFBy
b3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGVQcm90b3R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldFByb3RvdHlwZSk6IERl
bGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZl
bnRUYXJnZXQ6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVu
dFRhcmdldDo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0
OjpnZXRQcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0
aW9uQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEV4Y2VwdGlvbjo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEV4Y2VwdGlvbjo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2Vw
dGlvbjo6Z2V0UHJvdG90eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpjcmVhdGVQ
cm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6
cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6
OmdldFByb3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2U6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RJbnRlcmZhY2U6OnByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RJbnRlcmZhY2U6OmdldFByb3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
cjo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3I6OmdldFByb3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmdldFByb3RvdHlwZSk6IERlbGV0ZWQu
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpjcmVhdGVQ
cm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6cHJv
dG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldFBy
b3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGU6
OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlOjpwcm90b3R5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9kZTo6Z2V0UHJvdG90eXBlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYzo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRl
dGVybWluaXN0aWM6OnByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb25kZXRl
cm1pbmlzdGljOjpnZXRQcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmg6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RPYmpDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0T2JqOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T2JqOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqOjpnZXRQcm90b3R5
cGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZVByb3RvdHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpwcm90b3R5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0UHJv
dG90eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Y3JlYXRlUHJvdG90eXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnByb3RvdHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRQcm90b3R5cGUp
OiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpwcm90b3R5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpnZXRQcm90b3R5cGUp
OiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlw
ZWRlZnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0VHlwZWRlZnM6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RUeXBlZGVmczo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVk
ZWZzOjpnZXRQcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU2F0dHJpYnV0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU2F0dHJpYnV0ZUNvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU2F0dHJp
YnV0ZTo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTYXR0cmlidXRlOjpw
cm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNhdHRyaWJ1dGU6OmdldFByb3RvdHlwZSk6
IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRl
Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU3JlYWRvbmx5OjpjcmVhdGVQcm90b3R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seTo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTcmVhZG9ubHk6OmdldFByb3RvdHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuaDoKKwogMjAxNi0wMy0wNiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIEVuYWJsZSBET00g
Y2xhc3MgY3JlYXRlIGZ1bmN0aW9ucyB0byB0YWtlIHBhcmFtZXRlcnMgaW4gY2FzZSBvZiBKU0J1
aWx0aW5Db25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDksNyAr
MzA5LDcgQEAgSlNET01XaW5kb3cqIHRvSlNET01XaW5kb3coSlNWYWx1ZSB2YWx1ZQogICAgICAg
ICAgICAgcmV0dXJuIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7CiAgICAgICAgIGlmIChj
bGFzc0luZm8gPT0gSlNET01XaW5kb3dTaGVsbDo6aW5mbygpKQogICAgICAgICAgICAgcmV0dXJu
IGpzQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KS0+d2luZG93KCk7Ci0gICAgICAgIHZh
bHVlID0gb2JqZWN0LT5wcm90b3R5cGUoKTsKKyAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdldFBy
b3RvdHlwZURpcmVjdCgpOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9u
IDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBAIHN0YXRpYyBib29sIGpzRE9N
V2luZG93R2V0T3duUHJvcGVydHlTbG8KICAgICAvLyBGSVhNRTogVGhpcyBzZWVtcyBsaWtlIGEg
c2lsbHkgaWRlYS4gSXQgb25seSBzZXJ2ZXMgdG8gc3VwcHJlc3MgbmFtZWQgcHJvcGVydHkgYWNj
ZXNzCiAgICAgLy8gdG8gZnJhbWVzIHRoYXQgaGFwcGVuIHRvIGhhdmUgbmFtZXMgY29ycmVzcG9u
ZGluZyB0byBwcm9wZXJ0aWVzIG9uIHRoZSBwcm90b3R5cGUuCiAgICAgLy8gVGhpcyBzZWVtcyB0
byBvbmx5IHNlcnZlIHRvIGxlYWsgc29tZSBpbmZvcm1hdGlvbiBjcm9zcy1vcmlnaW4uCi0gICAg
SlNWYWx1ZSBwcm90byA9IHRoaXNPYmplY3QtPnByb3RvdHlwZSgpOworICAgIEpTVmFsdWUgcHJv
dG8gPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICBpZiAocHJvdG8uaXNP
YmplY3QoKSAmJiBhc09iamVjdChwcm90byktPmdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpKSB7CiAgICAgICAgIHRoaXNPYmplY3QtPnByaW50RXJyb3JNZXNzYWdlKGVy
cm9yTWVzc2FnZSk7CiAgICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7CkBAIC0xOTIsNyArMTky
LDcgQEAgc3RhdGljIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsbwogCiBzdGF0aWMg
Ym9vbCBqc0RPTVdpbmRvd0dldE93blByb3BlcnR5U2xvdE5hbWVkSXRlbUdldHRlcihKU0RPTVdp
bmRvdyogdGhpc09iamVjdCwgRnJhbWUmIGZyYW1lLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBKU1ZhbHVlIHBy
b3RvID0gdGhpc09iamVjdC0+cHJvdG90eXBlKCk7CisgICAgSlNWYWx1ZSBwcm90byA9IHRoaXNP
YmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOwogICAgIGlmIChwcm90by5pc09iamVjdCgpICYm
IGFzT2JqZWN0KHByb3RvKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1
LDcgKzg1LDcgQEAgdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3coUGFzc1JlZgogICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNET01XaW5kb3c6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
MCwgcHJvdG90eXBlLmdldCgpKTsKICAgICBKU0RPTVdpbmRvdyoganNET01XaW5kb3cgPSBKU0RP
TVdpbmRvdzo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsICpkb21XaW5kb3csIHRoaXMpOwogICAgIHBy
b3RvdHlwZS0+c3RydWN0dXJlKCktPnNldEdsb2JhbE9iamVjdCh2bSwganNET01XaW5kb3cpOwot
ICAgIHByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBKU0V2ZW50VGFyZ2V0OjpnZXRQcm90b3R5cGUodm0sIGpzRE9NV2luZG93KSk7CisgICAg
cHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24odm0s
IEpTRXZlbnRUYXJnZXQ6OnByb3RvdHlwZSh2bSwganNET01XaW5kb3cpKTsKICAgICBzZXRXaW5k
b3codm0sIGpzRE9NV2luZG93KTsKICAgICBBU1NFUlQoanNET01XaW5kb3ctPmdsb2JhbE9iamVj
dCgpID09IGpzRE9NV2luZG93KTsKICAgICBBU1NFUlQocHJvdG90eXBlLT5nbG9iYWxPYmplY3Qo
KSA9PSBqc0RPTVdpbmRvdyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lt
YWdlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDcgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KAogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNJbWFnZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTSFRNTEltYWdlRWxlbWVu
dDo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgTm9uZSk7CisgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTSFRNTEltYWdlRWxlbWVudDo6cHJv
dG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgTm9uZSk7CiB9CiAKIHRlbXBsYXRlPD4gSlNWYWx1
ZSBKU0ltYWdlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaAkocmV2aXNp
b24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50
RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgaWYgKFR5cGU6Omhhc1N0YXRpY1Byb3BlcnR5VGFibGUgJiYg
SlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3Q8VHlwZSwgQmFzZT4oZXhlYywgKlR5cGU6OmluZm8oKS0+
c3RhdGljUHJvcEhhc2hUYWJsZSwgZWxlbWVudCwgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICAgICAgSlNDOjpKU1ZhbHVlIHByb3Rv
ID0gZWxlbWVudC0+cHJvdG90eXBlKCk7CisgICAgICAgICAgICBKU0M6OkpTVmFsdWUgcHJvdG8g
PSBlbGVtZW50LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICAgICAgICAgIGlmIChwcm90by5p
c09iamVjdCgpICYmIEpTQzo6anNDYXN0PEpTQzo6SlNPYmplY3QqPihhc09iamVjdChwcm90bykp
LT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
dG9yYWdlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1N0b3JhZ2VDdXN0b20uY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3
ICs2MSw3IEBAIGJvb2wgSlNTdG9yYWdlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGMKIAogICAg
IHN0YXRpY19hc3NlcnQoIWhhc1N0YXRpY1Byb3BlcnR5VGFibGUsICJUaGlzIGZ1bmN0aW9uIGRv
ZXMgbm90IGhhbmRsZSBzdGF0aWMgaW5zdGFuY2UgcHJvcGVydGllcyIpOwogCi0gICAgSlNWYWx1
ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5wcm90b3R5cGUoKTsKKyAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOwogICAgIGlmIChwcm90b3R5
cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QoZXhl
YywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3Bl
cnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAKQEAgLTEwNiw3ICsxMDYsNyBA
QCBib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBlCiAgICAgUHJvcGVydHlT
bG90IHNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blBy
b3BlcnR5KTsKICAgICBzdGF0aWNfYXNzZXJ0KCFoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlLCAiVGhp
cyBmdW5jdGlvbiBkb2VzIG5vdCBoYW5kbGUgc3RhdGljIGluc3RhbmNlIHByb3BlcnRpZXMiKTsK
IAotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpcy0+cHJvdG90eXBlKCk7CisgICAgSlNWYWx1
ZSBwcm90b3R5cGUgPSB0aGlzLT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKICAgICBpZiAocHJvdG90
eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxMSArOTUs
MTEgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KAogICAgICAgICBB
U1NFUlQoc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3Jh
cHBlcik7CiAgICAgICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c3RydWN0
dXJlKCktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKICAg
ICAgICAgd29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxP
YmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKLSAgICAgICAg
d29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRo
b3V0VHJhbnNpdGlvbigqbV92bSwgSlNFdmVudFRhcmdldDo6Z2V0UHJvdG90eXBlKCptX3ZtLCBt
X3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSkpOworICAgICAgICB3b3JrZXJHbG9iYWxT
Y29wZVByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9u
KCptX3ZtLCBKU0V2ZW50VGFyZ2V0Ojpwcm90b3R5cGUoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2Nv
cGVXcmFwcGVyLmdldCgpKSk7CiAgICAgICAgIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUtPnN0
cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFw
cGVyLmdldCgpKTsKICAgICB9CiAgICAgQVNTRVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVy
LT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7Ci0gICAgQVNT
RVJUKGFzT2JqZWN0KG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5wcm90b3R5cGUoKSktPmds
b2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAgICBBU1NFUlQo
YXNPYmplY3QobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgp
KS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwogCiAgICAg
bV9jb25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJDb25zb2xlQ2xpZW50Pigq
bV93b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPnNl
dENvbnNvbGVDbGllbnQobV9jb25zb2xlQ2xpZW50LmdldCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lv
biAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNDA4LDcgKzQwOCw3IEBAIHN1YiBHZW5lcmF0ZUdl
dE93blByb3BlcnR5U2xvdEJvZHkKICAgICAjIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJp
ZGwvI2Rmbi1uYW1lZC1wcm9wZXJ0eS12aXNpYmlsaXR5CiAgICAgIyBodHRwczovL2hleWNhbS5n
aXRodWIuaW8vd2ViaWRsLyNkZm4tbmFtZWQtcHJvcGVydGllcy1vYmplY3QKICAgICBteSAkcHJv
dG90eXBlQ2hlY2sgPSBzdWIgewotICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBs
LCAiICAgICR7bmFtZXNwYWNlTWF5YmV9SlNWYWx1ZSBwcm90byA9IHRoaXNPYmplY3QtPnByb3Rv
dHlwZSgpO1xuIik7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAg
JHtuYW1lc3BhY2VNYXliZX1KU1ZhbHVlIHByb3RvID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KCk7XG4iKTsKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAg
ICBpZiAocHJvdG8uaXNPYmplY3QoKSAmJiBqc0Nhc3Q8JHtuYW1lc3BhY2VNYXliZX1KU09iamVj
dCo+KHByb3RvKS0+aGFzUHJvcGVydHkoc3RhdGUsIHByb3BlcnR5TmFtZSkpXG4iKTsKICAgICAg
ICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xu
XG4iKTsKICAgICB9OwpAQCAtOTgxLDcgKzk4MSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAg
ICMgUHJvdG90eXBlCiAgICAgdW5sZXNzIChJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSkg
ewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0
KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTtcbiIpOwot
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBn
ZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTtcbiIpOworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5
cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTtcbiIpOwogICAgIH0KIAogICAgICMg
SlNWYWx1ZSB0byBpbXBsZW1lbnRhdGlvbiB0eXBlCkBAIC0yMTk1LDE0ICsyMTk1LDE0IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNP
YmplY3QqICR7Y2xhc3NOYW1lfTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwogICAgICAgICBpZiAoJGhhc1BhcmVudCAmJiAkcGFyZW50Q2xhc3NOYW1lIG5lICJKU0M6OkRP
TU5vZGVGaWx0ZXIiKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gJHtjbGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgJHtjbGFz
c05hbWV9UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgJHtwYXJl
bnRDbGFzc05hbWV9OjpnZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCkpKTtcbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7Y2xhc3NOYW1lfVByb3Rv
dHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsICR7cGFyZW50Q2xhc3NOYW1lfTo6cHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QpKSk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIG15ICRwcm90b3R5cGUgPSAkaW50ZXJmYWNlLT5pc0V4Y2VwdGlvbiA/ICJlcnJvclByb3Rv
dHlwZSIgOiAib2JqZWN0UHJvdG90eXBlIjsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPiR7cHJvdG90eXBlfSgpKSk7XG4iKTsKICAgICAgICAgfQogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJKU09iamVjdCogJHtjbGFzc05hbWV9OjpnZXRQcm90b3R5cGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiSlNPYmplY3QqICR7Y2xhc3NOYW1lfTo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBl
PCR7Y2xhc3NOYW1lfT4odm0sIGdsb2JhbE9iamVjdCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ9XG5cbiIpOwpAQCAtMjMzMyw3ICsyMzMzLDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICB9IGVsc2lmIChJbnRlcmZhY2VSZXF1aXJlc0F0
dHJpYnV0ZXNPbkluc3RhbmNlRm9yQ29tcGF0aWJpbGl0eSgkaW50ZXJmYWNlKSkgewogICAgICAg
ICAgICAgICAgICAgICAjIEZhbGxiYWNrIHRvIHRyeWluZyB0byBzZWFyY2hpbmcgdGhlIHByb3Rv
dHlwZSBjaGFpbiBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLgogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKS5nZXRPYmplY3QoKTtcbiIpOwotICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZm9yICh0aGlzT2JqZWN0ID0gdGhpc09i
amVjdCA/IHRoaXNPYmplY3QtPnByb3RvdHlwZSgpLmdldE9iamVjdCgpIDogbnVsbHB0cjsgdGhp
c09iamVjdDsgdGhpc09iamVjdCA9IHRoaXNPYmplY3QtPnByb3RvdHlwZSgpLmdldE9iamVjdCgp
KSB7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IGZvciAodGhpc09iamVjdCA9IHRoaXNPYmplY3QgPyB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVE
aXJlY3QoKS5nZXRPYmplY3QoKSA6IG51bGxwdHI7IHRoaXNPYmplY3Q7IHRoaXNPYmplY3QgPSB0
aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKS5nZXRPYmplY3QoKSkge1xuIik7CiAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgaWYgKChjYXN0
ZWRUaGlzID0gIiAuIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpIC4g
Iih0aGlzT2JqZWN0KSkpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgICAgICAgICAgYnJlYWs7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIH1cbiIpOwpAQCAtMjYzNiw3ICsyNjM2LDcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICB9IGVsc2lmIChJbnRlcmZh
Y2VSZXF1aXJlc0F0dHJpYnV0ZXNPbkluc3RhbmNlRm9yQ29tcGF0aWJpbGl0eSgkaW50ZXJmYWNl
KSkgewogICAgICAgICAgICAgICAgICAgICAjIEZhbGxiYWNrIHRvIHRyeWluZyB0byBzZWFyY2hp
bmcgdGhlIHByb3RvdHlwZSBjaGFpbiBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLgogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKS5nZXRPYmplY3QoKTtcbiIpOwotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZm9yICh0aGlzT2Jq
ZWN0ID0gdGhpc09iamVjdCA/IHRoaXNPYmplY3QtPnByb3RvdHlwZSgpLmdldE9iamVjdCgpIDog
bnVsbHB0cjsgdGhpc09iamVjdDsgdGhpc09iamVjdCA9IHRoaXNPYmplY3QtPnByb3RvdHlwZSgp
LmdldE9iamVjdCgpKSB7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIGZvciAodGhpc09iamVjdCA9IHRoaXNPYmplY3QgPyB0aGlzT2JqZWN0LT5n
ZXRQcm90b3R5cGVEaXJlY3QoKS5nZXRPYmplY3QoKSA6IG51bGxwdHI7IHRoaXNPYmplY3Q7IHRo
aXNPYmplY3QgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKS5nZXRPYmplY3QoKSkg
e1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAg
ICAgaWYgKChjYXN0ZWRUaGlzID0gIiAuIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRp
bnRlcmZhY2UpIC4gIih0aGlzT2JqZWN0KSkpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICAgICAgYnJlYWs7XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIH1cbiIpOwpAQCAtNTAyNywxMSAr
NTAyNywxMSBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICAjIG9m
IHdoZXRoZXIgdGhlIGludGVyZmFjZSB3YXMgZGVjbGFyZWQgd2l0aCB0aGUgW05vSW50ZXJmYWNl
T2JqZWN0XSBleHRlbmRlZCBhdHRyaWJ1dGUuCiAgICAgIyBodHRwczovL2hleWNhbS5naXRodWIu
aW8vd2ViaWRsLyNpbnRlcmZhY2UtcHJvdG90eXBlLW9iamVjdAogICAgIGlmIChJc0RPTUdsb2Jh
bE9iamVjdCgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC5w
cm90b3R5cGUoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIik7CisgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdCgpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7XG4iKTsKICAgICB9IGVsc2lmICgkaW50ZXJmYWNl
LT5pc0NhbGxiYWNrKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTtcbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgJHtjbGFzc05hbWV9OjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCAke2Ns
YXNzTmFtZX06OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTtcbiIpOwogICAgIH0KIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0
cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIikp
KSwgUmVhZE9ubHkgfCBEb250RW51bSk7XG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVE
T01PYmplY3QuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTMsNyArOTMsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0CiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBK
U1Rlc3RBY3RpdmVET01PYmplY3Q6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojpwcm90b3R5cGUo
dm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJp
bmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0QWN0aXZlRE9NT2JqZWN0IikpKSwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTEyOSw3ICsx
MjksNyBAQCBKU09iamVjdCogSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpjcmVhdGVQCiAgICAgcmV0
dXJuIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAotSlNP
YmplY3QqIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RBY3RpdmVET01PYmplY3Q6
OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
cmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RBY3RpdmVET01PYmplY3Q+KHZtLCBnbG9iYWxP
YmplY3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEFjdGl2ZURPTU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuaAkocmV2aXNpb24g
MTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEFjdGl2ZURPTU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsK
IAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90
eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0
YXRpYyBUZXN0QWN0aXZlRE9NT2JqZWN0KiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxOTc2NDYp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3
IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RDbGFzc1dpdGhKU0J1aWwKIAogdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OmdldFByb3RvdHlwZSh2bSwgJmdsb2Jh
bE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3I6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigw
KSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMTAsNyArMTEwLDcgQEAgSlNPYmplY3Qq
IEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cgogICAgIHJldHVybiBKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkp
OwogfQogCi1KU09iamVjdCogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6Omdl
dFByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVj
dCogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnByb3RvdHlwZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3Rv
dHlwZTxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4odm0sIGdsb2JhbE9iamVj
dCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSBmYWxzZTsKIAogICAgIHN0YXRpYyBKU0M6
OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShK
U0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3IqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Qu
Y3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rl
c3RDdXN0b21Db25zdHJ1Y3QKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEN1c3RvbUNvbnN0cnVj
dG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3Q6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCIpKSksIFJlYWRPbmx5IHwg
RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMDksNyArMTA5LDcgQEAg
SlNPYmplY3QqIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSQogICAgIHJldHVybiBKU1Rl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OmdldFByb3RvdHlwZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdD4odm0sIGdsb2JhbE9iamVjdCk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSBm
YWxzZTsKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpW
TSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0
UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwog
ICAgIHN0YXRpYyBUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqIHRv
V3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0Nl
bGwqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCShyZXZp
c2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3
IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RDdXN0b21OYW1lZEdldHQKIAogdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXI6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OnByb3RvdHlwZSh2bSwgJmdsb2Jh
bE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0
cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RDdXN0b21OYW1lZEdldHRlciIpKSksIFJlYWRPbmx5IHwg
RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMTIsNyArMTEyLDcgQEAg
SlNPYmplY3QqIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpjcmVhdAogICAgIHJldHVybiBKU1Rl
c3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVj
dCogSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldFByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6
OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
cmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcj4odm0sIGdsb2Jh
bE9iamVjdCk7CiB9CkBAIC0xMjksNyArMTI5LDcgQEAgYm9vbCBKU1Rlc3RDdXN0b21OYW1lZEdl
dHRlcjo6Z2V0T3duUHJvcAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKICAgICBpZiAoQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3Qs
IHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBK
U1ZhbHVlIHByb3RvID0gdGhpc09iamVjdC0+cHJvdG90eXBlKCk7CisgICAgSlNWYWx1ZSBwcm90
byA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOwogICAgIGlmIChwcm90by5pc09i
amVjdCgpICYmIGpzQ2FzdDxKU09iamVjdCo+KHByb3RvKS0+aGFzUHJvcGVydHkoc3RhdGUsIHBy
b3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyLmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9v
bCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlID0gZmFsc2U7CiAKICAgICBzdGF0aWMgSlNDOjpKU09i
amVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0g
ICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpW
TSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgVGVzdEN1c3RvbU5hbWVkR2V0
dGVyKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RXZlbnRD
b25zdHJ1Y3RvCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2Jq
ZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpw
cm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRy
aXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0RXZlbnRDb25zdHJ1Y3Rv
ciIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBA
IC0xNTIsNyArMTUyLDcgQEAgSlNPYmplY3QqIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmNyZWF0
ZQogICAgIHJldHVybiBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkp
KTsKIH0KIAotSlNPYmplY3QqIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldFByb3RvdHlwZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdEV2ZW50Q29uc3RydWN0
b3I+KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5oCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9w
ZXJ0eVRhYmxlID0gZmFsc2U7CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJv
dG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKICAgICBzdGF0aWMgVGVzdEV2ZW50Q29uc3RydWN0b3IqIHRvV3JhcHBlZChK
U0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
VGFyZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rl
c3RFdmVudFRhcmdldENvbnMKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0Q29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVj
dCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RXZlbnRUYXJnZXQ6OnByb3RvdHlw
ZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0
cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RFdmVudFRhcmdldCIpKSksIFJlYWRP
bmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMTAsMTAgKzEx
MCwxMCBAQCBKU1Rlc3RFdmVudFRhcmdldDo6SlNUZXN0RXZlbnRUYXJnZXQoU3RyCiAKIEpTT2Jq
ZWN0KiBKU1Rlc3RFdmVudFRhcmdldDo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gSlNUZXN0RXZlbnRUYXJnZXRQcm90
b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIEpTRXZlbnRUYXJnZXQ6OmdldFBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSkpOworICAgIHJldHVybiBKU1Rlc3RFdmVudFRhcmdl
dFByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdEV2ZW50VGFyZ2V0UHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgSlNFdmVudFRhcmdldDo6
cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RFdmVu
dFRhcmdldDo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKK0pTT2JqZWN0KiBKU1Rlc3RFdmVudFRhcmdldDo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpT
VGVzdEV2ZW50VGFyZ2V0Pih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KQEAgLTEzMSw3ICsxMzEsNyBA
QCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsCiAgICAgfQogICAgIGlm
IChCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIEpTVmFsdWUgcHJvdG8gPSB0aGlz
T2JqZWN0LT5wcm90b3R5cGUoKTsKKyAgICBKU1ZhbHVlIHByb3RvID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KCk7CiAgICAgaWYgKHByb3RvLmlzT2JqZWN0KCkgJiYganNDYXN0PEpT
T2JqZWN0Kj4ocHJvdG8pLT5oYXNQcm9wZXJ0eShzdGF0ZSwgcHJvcGVydHlOYW1lKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAkocmV2aXNpb24g
MTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSBmYWxzZTsKIAog
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBl
KEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmpl
Y3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRp
YyBUZXN0RXZlbnRUYXJnZXQqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODcsNyArODcsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RXhjZXB0aW9uQ29uc3Ry
CiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewot
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RFeGNl
cHRpb246OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgSlNUZXN0RXhjZXB0aW9uOjpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlM
aXRlcmFsKCJUZXN0RXhjZXB0aW9uIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKIH0KQEAgLTEyMSw3ICsxMjEsNyBAQCBKU09iamVjdCogSlNUZXN0RXhj
ZXB0aW9uOjpjcmVhdGVQcm90b3R5CiAgICAgcmV0dXJuIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlw
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZXJyb3JQcm90b3R5
cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0RXhjZXB0aW9uOjpnZXRQcm90b3R5cGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdEV4Y2Vw
dGlvbjo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsK
ICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdEV4Y2VwdGlvbj4odm0sIGdsb2JhbE9i
amVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5oCShyZXZpc2lvbiAxOTc2NDYpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSB0cnVlOwogCiAgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIFRlc3RFeGNlcHRpb24q
IHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxs
Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCShyZXZp
c2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcw
LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEdlbmVyYXRlSXNSZWFjaAogCiB0ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0g
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGU6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6cHJvdG90eXBlKHZt
LCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5n
KCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUiKSkpLCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTA0LDcg
KzEwNCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpjcmUKICAgICBy
ZXR1cm4gSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7
CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpnZXRQcm90b3R5cGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGU6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGUuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgaGFzU3RhdGljUHJvcGVydHlUYWJsZSA9IGZhbHNlOwogCiAgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwot
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6
Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIFRlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQzo6SlNDZWxsKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAx
OTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDcgKzI1Myw3IEBAIHRlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VDb25zdHIKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEludGVyZmFjZTo6Z2V0UHJvdG90eXBlKHZtLCAm
Z2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RJbnRlcmZhY2U6
OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9u
dHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RJbnRlcmZhY2UiKSkp
LCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHJlaWZ5
U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVl
cywgKnRoaXMpOwpAQCAtMzk5LDcgKzM5OSw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RJbnRlcmZhY2U6
OmNyZWF0ZVByb3RvdHkKICAgICByZXR1cm4gSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkp
OwogfQogCi1KU09iamVjdCogSlNUZXN0SW50ZXJmYWNlOjpnZXRQcm90b3R5cGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdEludGVyZmFjZTo6
cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBy
ZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdEludGVyZmFjZT4odm0sIGdsb2JhbE9iamVjdCk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29s
IGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSBmYWxzZTsKIAogICAgIHN0YXRpYyBKU0M6OkpTT2Jq
ZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAg
ICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZN
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0SW50ZXJmYWNlKiB0b1dy
YXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCos
IEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03OSw3ICs3OSw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RKU0J1aWx0aW5D
b25zdHIKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldFByb3RvdHlwZSh2bSwgJmdsb2Jh
bE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvciIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250
RW51bSk7CiB9CkBAIC0xMjEsNyArMTIxLDcgQEAgSlNPYmplY3QqIEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yOjpjcgogICAgIHJldHVybiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3Rv
dHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3I6OmdldFByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCitKU09iamVjdCogSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OnByb3RvdHlwZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVBy
b3RvdHlwZTxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4odm0sIGdsb2JhbE9iamVjdCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAkocmV2aXNpb24g
MTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSBm
YWxzZTsKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpW
TSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0
UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAogICAgIERFQ0xBUkVfSU5G
TzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAJ
KHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzcsNyArNzcsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMCiAK
IHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2Jq
ZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyOjpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lciIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250
RW51bSk7CiB9CkBAIC0xMTIsNyArMTEyLDcgQEAgSlNPYmplY3QqIEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXI6OgogICAgIHJldHVybiBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJv
dG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAotSlNPYmplY3QqIEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXI6OmdldFByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6cHJvdG90
eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4g
Z2V0RE9NUHJvdG90eXBlPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+KHZtLCBnbG9iYWxP
YmplY3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5oCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQ
cm9wZXJ0eVRhYmxlID0gZmFsc2U7CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRl
UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIHRv
V3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0Nl
bGwqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAkocmV2aXNp
b24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBA
IHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG8KIAogdGVtcGxhdGU8PiB2
b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yOjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVj
dCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhB
U0NJSUxpdGVyYWwoIlRlc3ROYW1lZENvbnN0cnVjdG9yIikpKSwgUmVhZE9ubHkgfCBEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTExMSw3ICsxMTEsNyBAQCB0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
OjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJ
SUxpdGVyYWwoIkF1ZGlvIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERv
bnRFbnVtKTsKIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCBKU09iamVjdCogSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvcjo6Y3JlYXRlCiAgICAgcmV0dXJuIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5
cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmpl
Y3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6
Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2Jq
ZWN0KiBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvcj4odm0sIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29s
IGhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSBmYWxzZTsKIAogICAgIHN0YXRpYyBKU0M6OkpTT2Jq
ZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAg
ICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZN
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBUZXN0TmFtZWRDb25zdHJ1Y3Rv
ciogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6
OkpTQ2VsbCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5vZGVD
b25zdHJ1Y3RvcgogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVz
dE5vZGU6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgSlNUZXN0Tm9kZTo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJh
bCgiVGVzdE5vZGUiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVu
dW0pOwogfQpAQCAtMTEzLDEwICsxMTMsMTAgQEAgSlNUZXN0Tm9kZTo6SlNUZXN0Tm9kZShTdHJ1
Y3R1cmUqIHN0cnVjdAogCiBKU09iamVjdCogSlNUZXN0Tm9kZTo6Y3JlYXRlUHJvdG90eXBlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gSlNUZXN0
Tm9kZVByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdE5vZGVQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU05vZGU6OmdldFByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0KSkpOworICAgIHJldHVybiBKU1Rlc3ROb2RlUHJvdG90eXBlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNUZXN0Tm9kZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCBnbG9iYWxPYmplY3QsIEpTTm9kZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qp
KSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3ROb2RlOjpnZXRQcm90b3R5cGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdE5vZGU6OnByb3RvdHlw
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdl
dERPTVByb3RvdHlwZTxKU1Rlc3ROb2RlPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
ZGUuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzU3RhdGljUHJvcGVydHlUYWJsZSA9IGZh
bHNlOwogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZN
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQ
cm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAK
ICAgICBERUNMQVJFX0lORk87CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Yy5jcHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTMsNyArOTMsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpCiAK
IHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYzo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpwcm90b3R5cGUodm0s
ICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmco
JnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIpKSksIFJlYWRP
bmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMzMsNyArMTMz
LDcgQEAgSlNPYmplY3QqIEpTVGVzdE5vbmRldGVybWluaXN0aWM6OmNyZWF0ZQogICAgIHJldHVy
biBKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAotSlNP
YmplY3QqIEpTVGVzdE5vbmRldGVybWluaXN0aWM6OmdldFByb3RvdHlwZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Yzo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAg
ICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE5vbmRldGVybWluaXN0aWM+KHZtLCBnbG9i
YWxPYmplY3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oCShyZXZp
c2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlID0g
ZmFsc2U7CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6
Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdl
dFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
ICAgICBzdGF0aWMgVGVzdE5vbmRldGVybWluaXN0aWMqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUp
OwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDUsNyArNTA1LDcgQEAg
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE9iakNvbnN0cnVjdG9yOgogCiB0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0T2JqOjpnZXRQcm90b3R5cGUodm0sICZnbG9i
YWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE9iajo6cHJvdG90eXBl
KHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3Ry
aW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdE9iamVjdCIpKSksIFJlYWRPbmx5IHwg
RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigyKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0
aWVzKHZtLCBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7CkBAIC03NjIs
NyArNzYyLDcgQEAgSlNPYmplY3QqIEpTVGVzdE9iajo6Y3JlYXRlUHJvdG90eXBlKFZNJgogICAg
IHJldHVybiBKU1Rlc3RPYmpQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rl
c3RPYmpQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RPYmo6Omdl
dFByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVj
dCogSlNUZXN0T2JqOjpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogewogICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0T2JqPih2bSwgZ2xvYmFs
T2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzU3RhdGlj
UHJvcGVydHlUYWJsZSA9IHRydWU7CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRl
UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgVGVzdE9iaiogdG9XcmFwcGVkKEpTQzo6SlNWYWx1
ZSk7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xv
dCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTAsNyArMTUwLDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25z
dAogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldFByb3RvdHlwZSh2bSwgJmdsb2Jh
bE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFt
ZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwg
RG9udEVudW0pOwogfQpAQCAtMTg0LDcgKzE4NCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjoKICAgICByZXR1cm4gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1Byb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpnZXRQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnBy
b3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0
dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPih2bSwgZ2xv
YmFsT2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzU3Rh
dGljUHJvcGVydHlUYWJsZSA9IGZhbHNlOwogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNy
ZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
KiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6
SlNDZWxsKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAJKHJl
dmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzks
NyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0T3ZlcnJpZGVCdWlsdGluCiAKIHRlbXBsYXRl
PD4gdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0T3ZlcnJpZGVC
dWlsdGluczo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpwcm90b3R5cGUodm0sICZnbG9iYWxP
YmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJp
bmcoQVNDSUlMaXRlcmFsKCJUZXN0T3ZlcnJpZGVCdWlsdGlucyIpKSksIFJlYWRPbmx5IHwgRG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMTQsNyArMTE0LDcgQEAgSlNP
YmplY3QqIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmNyZWF0ZQogICAgIHJldHVybiBKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAotSlNPYmplY3QqIEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldFByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6cHJvdG90
eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4g
Z2V0RE9NUHJvdG90eXBlPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+KHZtLCBnbG9iYWxPYmplY3Qp
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJyaWRlQnVpbHRpbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oCShyZXZpc2lvbiAxOTc2
NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cnJpZGVCdWlsdGlucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlID0gZmFsc2U7CiAK
ICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdldFByb3RvdHlw
ZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OkpTT2Jq
ZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0
aWMgVGVzdE92ZXJyaWRlQnVpbHRpbnMqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuY3BwCShyZXZpc2lvbiAxOTc2NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U2Vy
aWFsaXplZFNjcmlwCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2U6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpwcm90b3R5cGUodm0s
ICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmco
JnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0K
QEAgLTEyMyw3ICsxMjMsNyBAQCBKU09iamVjdCogSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50CiAgICAgcmV0dXJuIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3Rv
dHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAotSlNPYmplY3QqIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2U+KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAkocmV2aXNp
b24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNTdGF0aWNQcm9w
ZXJ0eVRhYmxlID0gZmFsc2U7CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJv
dG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKICAgICBzdGF0aWMgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6
OkpTQ2VsbCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHJldmlzaW9uIDE5NzY0NikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVm
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0VHlwZWRlZnNDb25zdHJ1CiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RUeXBlZGVm
c0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIEpTVGVzdFR5cGVkZWZzOjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmpl
Y3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFR5cGVkZWZzOjpwcm90b3R5cGUo
dm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJp
bmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0VHlwZWRlZnMiKSkpLCBSZWFkT25seSB8
IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVy
dGllcyh2bSwgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7CkBA
IC0xOTcsNyArMTk3LDcgQEAgSlNPYmplY3QqIEpTVGVzdFR5cGVkZWZzOjpjcmVhdGVQcm90b3R5
cAogICAgIHJldHVybiBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVj
dCogSlNUZXN0VHlwZWRlZnM6OmdldFByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0VHlwZWRlZnM6OnByb3RvdHlwZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3Rv
dHlwZTxKU1Rlc3RUeXBlZGVmcz4odm0sIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFi
bGUgPSB0cnVlOwogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShK
U0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0
KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CiAgICAgc3RhdGljIFRlc3RUeXBlZGVmcyogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAkocmV2
aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTYXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCB0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNhdHRyaWJ1dGVDb25zdHJ1Y3RvCiAKIHRlbXBsYXRlPD4gdm9pZCBKU2F0
dHJpYnV0ZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIEpTYXR0cmlidXRlOjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxP
YmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTYXR0cmlidXRlOjpwcm90b3R5cGUo
dm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJp
bmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJhdHRyaWJ1dGUiKSkpLCBSZWFkT25seSB8IERv
bnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTA4LDcgKzEwOCw3IEBAIEpT
T2JqZWN0KiBKU2F0dHJpYnV0ZTo6Y3JlYXRlUHJvdG90eXBlKFYKICAgICByZXR1cm4gSlNhdHRy
aWJ1dGVQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU2F0dHJpYnV0ZVByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZXJy
b3JQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNhdHRyaWJ1dGU6OmdldFByb3RvdHlw
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNhdHRy
aWJ1dGU6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
CiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU2F0dHJpYnV0ZT4odm0sIGdsb2JhbE9iamVj
dCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNh
dHRyaWJ1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNhdHRyaWJ1dGUuaAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc1N0YXRp
Y1Byb3BlcnR5VGFibGUgPSBmYWxzZTsKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVh
dGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpK
U0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBhdHRyaWJ1dGUqIHRvV3JhcHBlZChKU0M6OkpT
VmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3Jl
YWRvbmx5LmNwcAkocmV2aXNpb24gMTk3NjQ2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3
MCw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU3JlYWRvbmx5Q29uc3RydWN0b3IKIAogdGVtcGxh
dGU8PiB2b2lkIEpTcmVhZG9ubHlDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU3JlYWRvbmx5OjpnZXRQcm90b3R5cGUo
dm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Cisg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTcmVhZG9ubHk6
OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9u
dHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoInJlYWRvbmx5IikpKSwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTEwNCw3ICsx
MDQsNyBAQCBKU09iamVjdCogSlNyZWFkb25seTo6Y3JlYXRlUHJvdG90eXBlKFZNCiAgICAgcmV0
dXJuIEpTcmVhZG9ubHlQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU3JlYWRv
bmx5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNyZWFkb25seTo6Z2V0
UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0
KiBKU3JlYWRvbmx5Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogewogICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNyZWFkb25seT4odm0sIGdsb2Jh
bE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNyZWFkb25seS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmgJKHJldmlzaW9uIDE5NzY0NikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc1N0
YXRpY1Byb3BlcnR5VGFibGUgPSBmYWxzZTsKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBj
cmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlND
OjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyByZWFkb25seSogdG9XcmFwcGVkKEpTQzo6
SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>