<?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>234022</bug_id>
          
          <creation_ts>2021-12-08 11:31:16 -0800</creation_ts>
          <short_desc>Prepare for transition to C++20</short_desc>
          <delta_ts>2021-12-09 16:26:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=233963</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1821666</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-08 11:31:16 -0800</bug_when>
    <thetext>Prepare for transition to C++20</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821675</commentid>
    <comment_count>1</comment_count>
      <attachid>446397</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-08 11:38:49 -0800</bug_when>
    <thetext>Created attachment 446397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821860</commentid>
    <comment_count>2</comment_count>
      <attachid>446455</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-08 16:40:28 -0800</bug_when>
    <thetext>Created attachment 446455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822342</commentid>
    <comment_count>3</comment_count>
      <attachid>446455</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-09 14:38:28 -0800</bug_when>
    <thetext>Comment on attachment 446455
Patch

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

r=me with one fix.

&gt; Tools/TestWebKitAPI/Tests/WTF/Expected.cpp:-297
&gt; -    NonCopyable(NonCopyable&amp;&amp;) = default;
&gt; -    NonCopyable(const NonCopyable&amp;) = delete;
&gt; -    NonCopyable&amp; operator=(const NonCopyable&amp;) = delete;
&gt; -    NonCopyable&amp; operator=(NonCopyable&amp;&amp;) = default;

We should use `WTF_MAKE_NONCOPYABLE` here to make it noncopyable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822371</commentid>
    <comment_count>4</comment_count>
      <attachid>446618</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-09 15:11:36 -0800</bug_when>
    <thetext>Created attachment 446618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822395</commentid>
    <comment_count>5</comment_count>
      <attachid>446618</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-09 15:47:49 -0800</bug_when>
    <thetext>Comment on attachment 446618
Patch

For some reason that didn&apos;t compile.  I removed that change from this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822416</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-09 16:25:36 -0800</bug_when>
    <thetext>http://trac.webkit.org/r286816</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822417</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-09 16:26:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/86296640&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446397</attachid>
            <date>2021-12-08 11:38:49 -0800</date>
            <delta_ts>2021-12-08 16:40:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234022-20211208113848.patch</filename>
            <type>text/plain</type>
            <size>94697</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YzM3ZDdiNzVmMjY1ZjM3ZDYwMjZjNmRlNTFiNTU1M2NkNmQ1ZThkLi5kMGM4ZGFkM2UzNTM5N2Zj
MzYzMWI5Y2E2OWU1MjE4M2I0ZWIzZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMS0xMi0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIFByZXBhcmUgZm9yIHRyYW5zaXRpb24gdG8gQysrMjAKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDAyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUv
U3VwZXJTYW1wbGVyLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9TdXBlclNhbXBsZXIuaDoKKyAg
ICAgICAgKiBoZWFwL0dDU2VnbWVudGVkQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6R0NTZWdtZW50
ZWRBcnJheUl0ZXJhdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6R0NTZWdt
ZW50ZWRBcnJheUl0ZXJhdG9yOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKEpTQzo6R0NT
ZWdtZW50ZWRBcnJheUl0ZXJhdG9yOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6R0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yOjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBqaXQvUmVnaXN0ZXJTZXQuaDoKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Oml0ZXJh
dG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Oml0ZXJh
dG9yOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Oml0ZXJh
dG9yOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6Oml0
ZXJhdG9yOjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6
CisgICAgICAgIChKU0M6OlNjb3BlUmVmOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6U2NvcGVSZWY6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoSlNDOjpTY29wZVJlZjo6
b3BlcmF0b3I9PSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNjb3BlUmVmOjpvcGVyYXRvciE9
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICog
cnVudGltZS9HZW5lcmljT2Zmc2V0Lmg6CisgICAgICAgIChKU0M6OkdlbmVyaWNPZmZzZXQ6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpHZW5lcmljT2Zmc2V0OjpvcGVyYXRvciE9
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY09mZnNldDo6b3BlcmF0b3I8IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6R2VuZXJpY09mZnNldDo6b3BlcmF0b3I+IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6R2VuZXJpY09mZnNldDo6b3BlcmF0b3I8PSBjb25zdCk6CisgICAgICAgIChKU0M6Okdl
bmVyaWNPZmZzZXQ6Om9wZXJhdG9yPj0gY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVy
dHlUYWJsZS5oOgorCiAyMDIxLTEyLTA3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29t
PgogCiAgICAgICAgIFR5cGVkQXJyYXkgcHJvdG90eXBlIHNldCBzaG91bGQgZ28gZG93biB0aGUg
ZmFzdCBwYXRoIHdoZW4gdXNpbmcgbm9uIGNsYW1wZWQgaW50ZWdlciB0eXBlcyBvZiB0aGUgc2Ft
ZSBieXRlIHNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCmluZGV4IDgwYWY3
NWQ2MmM5NTY3ZWVmNzZhYzU1OWYzMmI5MzAzYTI4ZDNlMmQuLmNhMDg3MTEyMTNhODJkYmFjODY1
NjlhZGRjOWM2Njk0Y2UzOTA2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTEyLTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHJlcGFyZSBmb3IgdHJhbnNpdGlvbiB0byBD
KysyMAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0
MDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBT
b3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjOgorICAgICAgICAqIFNvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYWVjX2R1bXAuY2M6Cisg
ICAgICAgICogU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9h
ZWNfZHVtcC5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL3V0aWxpdHkvZGVsYXlfZXN0aW1hdG9yX3dyYXBwZXIuY2M6CisgICAgICAgICogU291cmNl
L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3ZhZF9hdWRpb19wcm9jLmg6Cisg
ICAgICAgICogU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9tZWRpYV9vcHRfdXRp
bC5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmFjZV9jaGVja2VyLmg6Cisg
ICAgICAgICogU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0cy91bml0X2Jhc2UuaDoKKyAgICAg
ICAgKHdlYnJ0Yzo6cnRjX3VuaXRzX2ltcGw6OlVuaXRCYXNlOjpvcGVyYXRvcj09IGNvbnN0KToK
KyAgICAgICAgKHdlYnJ0Yzo6cnRjX3VuaXRzX2ltcGw6OlVuaXRCYXNlOjpvcGVyYXRvciE9IGNv
bnN0KToKKyAgICAgICAgKHdlYnJ0Yzo6cnRjX3VuaXRzX2ltcGw6OlVuaXRCYXNlOjpvcGVyYXRv
cjw9IGNvbnN0KToKKyAgICAgICAgKHdlYnJ0Yzo6cnRjX3VuaXRzX2ltcGw6OlVuaXRCYXNlOjpv
cGVyYXRvcj49IGNvbnN0KToKKyAgICAgICAgKHdlYnJ0Yzo6cnRjX3VuaXRzX2ltcGw6OlVuaXRC
YXNlOjpvcGVyYXRvcj4gY29uc3QpOgorICAgICAgICAod2VicnRjOjpydGNfdW5pdHNfaW1wbDo6
VW5pdEJhc2U6Om9wZXJhdG9yPCBjb25zdCk6CisKIDIwMjEtMTItMDYgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIENsb3NlIFdlYlJUQyBhbGxvY2F0aW9uIHNl
cXVlbmNlIHNoYXJlZCBzb2NrZXQgaW4gY2FzZSBvZiBzZXF1ZW5jZSBuZXR3b3JrIGZhaWx1cmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMTExNWVkZjNiMjY3NmY3NzJkN2Q3NDYxMzhjODAyYmVhMzMxZjkzNS4uNzAzZTBhMDQ1
ODY1ZDExMDZkNDY1YjU3NmRiNTc3NTVjN2E2MDhmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAy
MS0xMi0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFByZXBhcmUgZm9yIHRyYW5zaXRpb24gdG8gQysrMjAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDAyMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIEMrKzIwLCB2b2xpdGlsZSBpcyBkZXBy
ZWNhdGVkLCBvcGVyYXRvcj09IGlzIHN0cmljdGVyIChyZWxhdGVkIHRvIHRoZSBpbnRyb2R1Y3Rp
b24gb2Ygb3BlcmF0b3IgPD0+KSwKKyAgICAgICAgYW5kIG9wZXJhdGlvbnMgb24gZW51bXMgb2Yg
ZGlmZmVyZW50IHR5cGVzIGFyZSBzdHJpY3RlciB0b28uICBUaGlzIGRvZXMgdGhlIGNoYW5nZXMg
d2UgY2FuIGRvIGJlZm9yZQorICAgICAgICB0aGUgdHJhbnNpdGlvbiwgd2hpY2ggd2lsbCBiZSBk
b25lIGluIGJ1ZyAyMzM5NjMuCisKKyAgICAgICAgKiB3dGYvRGF0ZU1hdGguaDoKKyAgICAgICAg
KFdURjo6TG9jYWxUaW1lT2Zmc2V0OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6
TG9jYWxUaW1lT2Zmc2V0OjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdURjo6TG9jYWxU
aW1lT2Zmc2V0OjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6TG9jYWxUaW1l
T2Zmc2V0OjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rv
ci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9ySW1wbDo6b3BlcmF0b3I9PSBjb25zdCk6
CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JJbXBsOjpvcGVyYXRvciE9IGNvbnN0KToKKyAg
ICAgICAgKiB3dGYvR2VuZXJpY1RpbWVNaXhpbi5oOgorICAgICAgICAoV1RGOjpHZW5lcmljVGlt
ZU1peGluOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6R2VuZXJpY1RpbWVNaXhp
bjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXVEY6OkdlbmVyaWNUaW1lTWl4aW46Om9w
ZXJhdG9yPCBjb25zdCk6CisgICAgICAgIChXVEY6OkdlbmVyaWNUaW1lTWl4aW46Om9wZXJhdG9y
PiBjb25zdCk6CisgICAgICAgIChXVEY6OkdlbmVyaWNUaW1lTWl4aW46Om9wZXJhdG9yPD0gY29u
c3QpOgorICAgICAgICAoV1RGOjpHZW5lcmljVGltZU1peGluOjpvcGVyYXRvcj49IGNvbnN0KToK
KyAgICAgICAgKiB3dGYvSXRlcmF0b3JBZGFwdG9ycy5oOgorICAgICAgICAoV1RGOjpGaWx0ZXJJ
dGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXVEY6OkZpbHRlckl0ZXJhdG9y
OjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhbnNmb3JtSXRlcmF0b3I6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFuc2Zvcm1JdGVyYXRvcjo6b3BlcmF0
b3IhPSBjb25zdCk6CisgICAgICAgICogd3RmL0xpdmVuZXNzLmg6CisgICAgICAgIChXVEY6Okxp
dmVuZXNzOjpMb2NhbENhbGM6Okl0ZXJhYmxlOjppdGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6
CisgICAgICAgIChXVEY6OkxpdmVuZXNzOjpMb2NhbENhbGM6Okl0ZXJhYmxlOjppdGVyYXRvcjo6
b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXVEY6OkxpdmVuZXNzOjpMb2NhbENhbGM6Okl0
ZXJhYmxlOjppdGVyYXRvcjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Okxp
dmVuZXNzOjpMb2NhbENhbGM6Okl0ZXJhYmxlOjppdGVyYXRvcjo6b3BlcmF0b3IhPSk6IERlbGV0
ZWQuCisKIDIwMjEtMTItMDggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHU3RyZWFtZXJdIEVuYWJsZSBtZWRpYVNvdXJjZUlubGluZVBhaW50aW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMmNlZDhkZmUyNDIyODg1ZWEyMjUwZGUzM2ZmMmY0NGJjM2FkYTYwOS4u
NjVhNDZhYTdiMzQ2ZDZmZjI1MDg1NDlkOTI5NjNlYzQ4NTMwZjcwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDg2IEBACisyMDIxLTEyLTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHJlcGFyZSBmb3IgdHJhbnNpdGlvbiB0byBDKysyMAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MDIyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbldpdGhvdXRNZXRhZGF0YTo6b3BlcmF0b3I9PSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uV2l0aFN0cmlu
Z01ldGFkYXRhOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9JbW11dGFibGVORkFOb2RlQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkltbXV0YWJsZU5GQU5vZGVCdWlsZGVyOjpGYWtlUmFuZ2VJdGVyYXRvcjo6b3Bl
cmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1t
dXRhYmxlTkZBTm9kZUJ1aWxkZXI6OkZha2VSYW5nZUl0ZXJhdG9yOjpvcGVyYXRvciE9IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkFOb2Rl
QnVpbGRlcjo6RmFrZVJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQU5vZGVCdWlsZGVyOjpG
YWtlUmFuZ2VJdGVyYXRvcjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUhhbmRsZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogcGFnZS9tYWMvSW1h
Z2VPdmVybGF5Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3Zlcmxh
eUNvbnRyb2xsZXI6OnVwZGF0ZURhdGFEZXRlY3RvckhpZ2hsaWdodHMpOgorICAgICAgICAqIHBh
Z2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWlsZFBob25lTnVtYmVySGlnaGxpZ2h0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWlsZFNlbGVjdGlv
bkhpZ2hsaWdodCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5h
dGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6
Z2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0ZpbGVSZWFkZXI6OmNsaWVudERhdGFGb3JtYXQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb246OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbik6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JJ
T1MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6Y29uZmln
dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRhcHRv
ck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpjb25m
aWd1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFu
YWdlcjo6ZW5zdXJlTW9uaXRvckZvckRpc3BsYXlJRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveEl0
ZXJhdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVy
YXRvcjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94SXRlcmF0
b3I6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJh
dG9yOjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Q
aXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVZJbWFnZUNH
SW1hZ2VGb3JtYXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dEdMQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4
dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCaXRtYXBJ
bWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Q0dCYWNrZW5kOjpjb3B5Q0dJbWFnZUZvckVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVz
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6
ZW5zdXJlUGxhdGZvcm1Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9Q
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVy
Q29uZm9ybWVyQ1Y6OmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0
ZXJhdG9yOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IhPSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVu
dFRyYW5zZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5z
Zm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
U2tld1RyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlRXJyb3I6Om1hcFBsYXRmb3JtRXJyb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9HYXBS
ZWN0cy5oOgorICAgICAgICAoV2ViQ29yZTo6R2FwUmVjdHM6Om9wZXJhdG9yPT0gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R2FwUmVjdHM6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R2FwUmVjdHM6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2FwUmVjdHM6Om9wZXJhdG9yIT0pOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpz
ZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KToKKwogMjAyMS0xMi0w
OCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBDYXNj
YWRlIExheWVyc10gVXBkYXRlIENTU09NIHRvIHRoZSBzcGVjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY4N2ZkNzk4
YzIxOTU1ZWQxNTg5NDVkYTk3YzhiZjY5ZTNjYTBiM2QuLmUwYzMwOTNmNGM4NzRjNzJiODczNzUx
NDE1OTUyMDljMzM1M2NhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMTItMDgg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBQ
cmVwYXJlIGZvciB0cmFuc2l0aW9uIHRvIEMrKzIwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFGb3JtYXRSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1hdFJlYWRlcjo6
ZGlkUGFyc2VUcmFja3MpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIv
TWVkaWFTYW1wbGVDdXJzb3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNhbXBsZUN1cnNv
cjo6Z2V0U2FtcGxlTWFwIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMgX3NldFJlcXVpcmVzUGFn
ZVZpc2liaWxpdHlUb1BsYXlBdWRpbzpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRSZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25u
ZWN0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjo6c2V0UmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbik6CisKIDIw
MjEtMTItMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IEtWTyB3b3JrIGZvciBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5fY2FwdGl2ZVBvcnRhbE1vZGVFbmFi
bGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxv
Yy9DaGFuZ2VMb2cKaW5kZXggMTQ4NTllMjQ0MWE3MTVjNGY5ZmVjMzJiNzg1MmVlN2RmMDkyMTI0
YS4uODcxNDRjNjFkN2IxMTllNjNkYzQ3OWViOWJlMTQ2YjQwZTdiMjVhMCAxMDA2NDQKLS0tIGEv
U291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDIxLTEyLTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHJlcGFyZSBmb3IgdHJhbnNpdGlvbiB0byBDKysy
MAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MDIy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBibWFs
bG9jL0xpc3QuaDoKKyAgICAgICAgKGJtYWxsb2M6Okxpc3Q6Oml0ZXJhdG9yOjpvcGVyYXRvciE9
IGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6Okxpc3Q6Oml0ZXJhdG9yOjpvcGVyYXRvciE9KTog
RGVsZXRlZC4KKwogMjAyMS0xMi0wOCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW2xpYnBhc10gUmVtb3ZlIHRoZSBzdGFsZSBTa2lwTGlzdFRlc3RzLmNw
cCBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJT
YW1wbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIu
Y3BwCmluZGV4IDJlYjk1ZjY3NDczYzQzN2RlZWMwNjQ2OGUwN2UwMTg1OGZlMjMwNGIuLjVmNjYz
YjJmZjVhNWUzY2UwOGNlNDEyOTViODBhOWI3MTA2Yzg5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi12b2xhdGlsZSB1aW50MzJfdCBnX3N1cGVyU2FtcGxlckNvdW50
Owotdm9sYXRpbGUgYm9vbCBnX3N1cGVyU2FtcGxlckVuYWJsZWQ7CitzdGQ6OmF0b21pYzx1aW50
MzJfdD4gZ19zdXBlclNhbXBsZXJDb3VudDsKK3N0ZDo6YXRvbWljPGJvb2w+IGdfc3VwZXJTYW1w
bGVyRW5hYmxlZDsKIAogc3RhdGljIExvY2sgbG9jazsKIHN0YXRpYyBkb3VibGUgaW4gV1RGX0dV
QVJERURfQllfTE9DSyhsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdXBlclNhbXBsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dXBlclNhbXBsZXIuaAppbmRleCAwOTZiZDg1MmQ2OWEwYjkwMThlYjI3YTFiNTQ5MDAxOTExMzRm
MTBmLi42MTM3Yzk1ODNhODRhMjc0ODA1NzJkYzljMWJiYjJlNzhhNmY1MjA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC0yOSw3ICsyOSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBNYWNyb0Fzc2VtYmxlcjsKIAotZXh0ZXJuIEpT
X0VYUE9SVF9QUklWQVRFIHZvbGF0aWxlIHVpbnQzMl90IGdfc3VwZXJTYW1wbGVyQ291bnQ7Citl
eHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgc3RkOjphdG9taWM8dWludDMyX3Q+IGdfc3VwZXJTYW1w
bGVyQ291bnQ7CiAKIHZvaWQgaW5pdGlhbGl6ZVN1cGVyU2FtcGxlcigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmgKaW5kZXggZDJmYjc5NGI1YTdj
MTcyZGFmNTg1NWMwMjBkODM1NTkzMDQ3YmFmNy4uMGI0ODcyOWZiMzcyMjllNGJlY2Y1YTE3MjEy
NjA1ZjUxOGZiN2ZiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NT
ZWdtZW50ZWRBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVu
dGVkQXJyYXkuaApAQCAtMTI3LDEyICsxMjcsMTIgQEAgcHVibGljOgogICAgIFQmIG9wZXJhdG9y
KigpIHsgcmV0dXJuIGdldCgpOyB9CiAgICAgVCYgb3BlcmF0b3ItPigpIHsgcmV0dXJuIGdldCgp
OyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9y
JiBvdGhlcikKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR0NTZWdtZW50ZWRBcnJheUl0ZXJh
dG9yJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2N1cnJlbnRTZWdtZW50
ID09IG90aGVyLm1fY3VycmVudFNlZ21lbnQgJiYgbV9jdXJyZW50T2Zmc2V0ID09IG90aGVyLm1f
Y3VycmVudE9mZnNldDsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR0NTZWdt
ZW50ZWRBcnJheUl0ZXJhdG9yJiBvdGhlcikKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR0NT
ZWdtZW50ZWRBcnJheUl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlZ2lzdGVyU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lz
dGVyU2V0LmgKaW5kZXggZDNjN2E3NzRjYzk0Zjk4NzcxNzFkNTRkNjg1N2I0MTRhNmQ5YWNiYS4u
YzllMzdmNDk0NzRjZjc1ODI2ZDRjMTVjMzkxOWZjYzViNmUwOGI4MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaApAQCAtMTY2LDEyICsxNjYsMTIgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKQorICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gbV9pdGVyID09IG90aGVyLm1faXRlcjsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikKKyAgICAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBjYzExODc1ODg5OTZmNDU3MjY3MTczMDk2OWY0
MmZkODdjN2FlNjdlLi40NGEyZWJhMDkyMDY1YTkwYTNiYzhhMTFmZWVkZGMzZGFmYzY1ODdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTk1MCwxMyArOTUwLDEzIEBA
IHN0cnVjdCBTY29wZVJlZiB7CiAgICAgICAgIHJldHVybiBTY29wZVJlZihtX3Njb3BlU3RhY2ss
IG1faW5kZXggLSAxKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NvcGVS
ZWYmIG90aGVyKQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY29wZVJlZiYgb3RoZXIpIGNv
bnN0CiAgICAgewogICAgICAgICBBU1NFUlQob3RoZXIubV9zY29wZVN0YWNrID09IG1fc2NvcGVT
dGFjayk7CiAgICAgICAgIHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7CiAgICAgfQog
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNjb3BlUmVmJiBvdGhlcikKKyAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgU2NvcGVSZWYmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlclRva2Vucy5oCmluZGV4IDMxODM0OWU2NzQzYmQwZWIwYjQwYTJkODA2NWQ2MmM5
ODkwYmEwM2YuLmFkMmEwY2QzMjIyYWEzZTE5ZDFkNTUzY2RkOTQ5NmE1MTk2ZDhhMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMzYsNyArMzYs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIElkZW50aWZpZXI7CiAKLWVudW0geworI2Rl
ZmluZSBCSU5BUllfT1BfUFJFQ0VERU5DRShwcmVjKSAoKChwcmVjKSA8PCBCaW5hcnlPcFRva2Vu
UHJlY2VkZW5jZVNoaWZ0KSB8ICgocHJlYykgPDwgKEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNlU2hp
ZnQgKyBCaW5hcnlPcFRva2VuQWxsb3dzSW5QcmVjZWRlbmNlQWRkaXRpb25hbFNoaWZ0KSkpCisj
ZGVmaW5lIElOX09QX1BSRUNFREVOQ0UocHJlYykgKChwcmVjKSA8PCAoQmluYXJ5T3BUb2tlblBy
ZWNlZGVuY2VTaGlmdCArIEJpbmFyeU9wVG9rZW5BbGxvd3NJblByZWNlZGVuY2VBZGRpdGlvbmFs
U2hpZnQpKQorCitlbnVtIEpTVG9rZW5UeXBlIHsKICAgICAvLyBUb2tlbiBCaXRmaWVsZDogMGIw
MDAwMDAwMDBSVEUwMElJSUlQUFBQS1VYWFhYWFhYWAogICAgIC8vIFIgPSByaWdodC1hc3NvY2lh
dGl2ZSBiaXQKICAgICAvLyBUID0gdW50ZXJtaW5hdGVkIGVycm9yIGZsYWcKQEAgLTU0LDEzICs1
Nyw5IEBAIGVudW0gewogICAgIEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNlTWFzayA9IDE1IDw8IEJp
bmFyeU9wVG9rZW5QcmVjZWRlbmNlU2hpZnQsCiAgICAgQ2FuQmVFcnJvclRva2VuRmxhZyA9IDEg
PDwgKEJpbmFyeU9wVG9rZW5BbGxvd3NJblByZWNlZGVuY2VBZGRpdGlvbmFsU2hpZnQgKyBCaW5h
cnlPcFRva2VuUHJlY2VkZW5jZVNoaWZ0ICsgNiksCiAgICAgVW50ZXJtaW5hdGVkQ2FuQmVFcnJv
clRva2VuRmxhZyA9IENhbkJlRXJyb3JUb2tlbkZsYWcgPDwgMSwKLSAgICBSaWdodEFzc29jaWF0
aXZlQmluYXJ5T3BUb2tlbkZsYWcgPSBVbnRlcm1pbmF0ZWRDYW5CZUVycm9yVG9rZW5GbGFnIDw8
IDEKLX07CisgICAgUmlnaHRBc3NvY2lhdGl2ZUJpbmFyeU9wVG9rZW5GbGFnID0gVW50ZXJtaW5h
dGVkQ2FuQmVFcnJvclRva2VuRmxhZyA8PCAxLAogCi0jZGVmaW5lIEJJTkFSWV9PUF9QUkVDRURF
TkNFKHByZWMpICgoKHByZWMpIDw8IEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNlU2hpZnQpIHwgKChw
cmVjKSA8PCAoQmluYXJ5T3BUb2tlblByZWNlZGVuY2VTaGlmdCArIEJpbmFyeU9wVG9rZW5BbGxv
d3NJblByZWNlZGVuY2VBZGRpdGlvbmFsU2hpZnQpKSkKLSNkZWZpbmUgSU5fT1BfUFJFQ0VERU5D
RShwcmVjKSAoKHByZWMpIDw8IChCaW5hcnlPcFRva2VuUHJlY2VkZW5jZVNoaWZ0ICsgQmluYXJ5
T3BUb2tlbkFsbG93c0luUHJlY2VkZW5jZUFkZGl0aW9uYWxTaGlmdCkpCiAKLWVudW0gSlNUb2tl
blR5cGUgewogICAgIE5VTExUT0tFTiA9IEtleXdvcmRUb2tlbkZsYWcsCiAgICAgVFJVRVRPS0VO
LAogICAgIEZBTFNFVE9LRU4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmljT2Zmc2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmljT2Zmc2V0LmgKaW5kZXggMDE1NGRhNjNmNzM2Zjc2Njk0MzRiYzE5NTFhY2UyNzI5MGE2MjU5
NS4uMTQxM2I1MTQxMjhkMzNmZmUyOGUzMTIzMTEwNjMzODg1YjE0NDBkOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY09mZnNldC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNPZmZzZXQuaApAQCAtNjAsMjkgKzYwLDI5
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OwogICAgIH0KICAgICAKLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVCYgb3RoZXIpIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEdlbmVyaWNPZmZzZXQmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fb2Zmc2V0ID09IG90aGVyLm9mZnNldFVuY2hlY2tlZCgpOworICAgICAgICByZXR1cm4gbV9v
ZmZzZXQgPT0gb3RoZXIubV9vZmZzZXQ7CiAgICAgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBUJiBvdGhlcikgY29uc3QKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR2VuZXJpY09mZnNl
dCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9vZmZzZXQgIT0gb3RoZXIu
b2Zmc2V0VW5jaGVja2VkKCk7CisgICAgICAgIHJldHVybiBtX29mZnNldCAhPSBvdGhlci5tX29m
ZnNldDsKICAgICB9Ci0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgVCYgb3RoZXIpIGNvbnN0Cisg
ICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgR2VuZXJpY09mZnNldCYgb3RoZXIpIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gbV9vZmZzZXQgPCBvdGhlci5vZmZzZXRVbmNoZWNrZWQoKTsKKyAg
ICAgICAgcmV0dXJuIG1fb2Zmc2V0IDwgb3RoZXIubV9vZmZzZXQ7CiAgICAgfQotICAgIGJvb2wg
b3BlcmF0b3I+KGNvbnN0IFQmIG90aGVyKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0
IEdlbmVyaWNPZmZzZXQmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2Zm
c2V0ID4gb3RoZXIub2Zmc2V0VW5jaGVja2VkKCk7CisgICAgICAgIHJldHVybiBtX29mZnNldCA+
IG90aGVyLm1fb2Zmc2V0OwogICAgIH0KLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgVCYgb3Ro
ZXIpIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IEdlbmVyaWNPZmZzZXQmIG90aGVy
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0IDw9IG90aGVyLm9mZnNldFVu
Y2hlY2tlZCgpOworICAgICAgICByZXR1cm4gbV9vZmZzZXQgPD0gb3RoZXIubV9vZmZzZXQ7CiAg
ICAgfQotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUJiBvdGhlcikgY29uc3QKKyAgICBib29s
IG9wZXJhdG9yPj0oY29uc3QgR2VuZXJpY09mZnNldCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gbV9vZmZzZXQgPj0gb3RoZXIub2Zmc2V0VW5jaGVja2VkKCk7CisgICAgICAg
IHJldHVybiBtX29mZnNldCA+PSBvdGhlci5tX29mZnNldDsKICAgICB9CiAgICAgCiAgICAgVCBv
cGVyYXRvcisoaW50IHZhbHVlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlUYWJsZS5oCmluZGV4IGY3OTU3YmZiNGU0YWUwMTQ4ZTU1YTcwODNiMTU0NGVj
ODAxOTAzYjYuLjc5OTBlYjYwODFkYTQyNjJmOGQwM2FiMjgyY2U5OWJmNDI5YTI0MTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgKQEAgLTkxLDEy
ICs5MSwxMiBAQCBjbGFzcyBQcm9wZXJ0eVRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3Qgb3JkZXJlZF9pdGVyYXRvcjxUPiYgb3RoZXIpCisgICAgICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBvcmRlcmVkX2l0ZXJhdG9yPFQ+JiBvdGhlcikgY29uc3QKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWVQdHIgPT0gb3RoZXIubV92YWx1ZVB0cjsKICAg
ICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBvcmRlcmVkX2l0ZXJhdG9y
PFQ+JiBvdGhlcikKKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG9yZGVyZWRfaXRlcmF0
b3I8VD4mIG90aGVyKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV92YWx1
ZVB0ciAhPSBvdGhlci5tX3ZhbHVlUHRyOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRl
ci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9h
dWRpby93YXZfaGVhZGVyLmNjCmluZGV4IDY1ZDhiZTViODkxNGIzYjYwMDc5MTc0NmQxYzVlNWNi
YmRiNGNlMjMuLjIyMzdhYzBmYjdmNjU4MzkyZTNjMmZkMDg1YWNkODM5YWQwNzYwNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9h
dWRpby93YXZfaGVhZGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjCkBAIC04MCw2ICs4MCw3IEBAIGNv
bnN0IHVpbnQzMl90IGtGbXRJZWVlRmxvYXRTdWJjaHVua1NpemUgPQogLy8gcmVhZCBhdWRpbyBz
YW1wbGVzLgogI3ByYWdtYSBwYWNrKDIpCiBzdHJ1Y3QgV2F2SGVhZGVyUGNtIHsKKyAgV2F2SGVh
ZGVyUGNtKCkgPSBkZWZhdWx0OwogICBXYXZIZWFkZXJQY20oY29uc3QgV2F2SGVhZGVyUGNtJikg
PSBkZWZhdWx0OwogICBXYXZIZWFkZXJQY20mIG9wZXJhdG9yPShjb25zdCBXYXZIZWFkZXJQY20m
KSA9IGRlZmF1bHQ7CiAgIFJpZmZIZWFkZXIgcmlmZjsKQEAgLTk1LDYgKzk2LDcgQEAgc3RhdGlj
X2Fzc2VydChzaXplb2YoV2F2SGVhZGVyUGNtKSA9PSBrUGNtV2F2SGVhZGVyU2l6ZSwKIC8vIFdB
ViBpbXBsZW1lbnRhdGlvbi4KICNwcmFnbWEgcGFjaygyKQogc3RydWN0IFdhdkhlYWRlckllZWVG
bG9hdCB7CisgIFdhdkhlYWRlckllZWVGbG9hdCgpID0gZGVmYXVsdDsKICAgV2F2SGVhZGVySWVl
ZUZsb2F0KGNvbnN0IFdhdkhlYWRlckllZWVGbG9hdCYpID0gZGVmYXVsdDsKICAgV2F2SGVhZGVy
SWVlZUZsb2F0JiBvcGVyYXRvcj0oY29uc3QgV2F2SGVhZGVySWVlZUZsb2F0JikgPSBkZWZhdWx0
OwogICBSaWZmSGVhZGVyIHJpZmY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hZWNf
ZHVtcC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2FlY19kdW1wLmNjCmluZGV4IDY3ODA5ZDBkY2Jj
YzM0NzBiMjFhYzQ1YzM5YWQwOTBmODVjNDUwM2YuLjI5MWUzNGU5NTliOWRkZWU3ZDdmMDQwYzNm
ZDlkZTZiOWY4YjU0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2FlY19kdW1wLmNj
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMv
YXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2FlY19kdW1wLmNjCkBAIC0xNyw3ICsxNyw4IEBAIElu
dGVybmFsQVBNQ29uZmlnOjpJbnRlcm5hbEFQTUNvbmZpZyhJbnRlcm5hbEFQTUNvbmZpZyYmKSA9
IGRlZmF1bHQ7CiBJbnRlcm5hbEFQTUNvbmZpZyYgSW50ZXJuYWxBUE1Db25maWc6Om9wZXJhdG9y
PShjb25zdCBJbnRlcm5hbEFQTUNvbmZpZyYpID0KICAgICBkZWZhdWx0OwogCi1ib29sIEludGVy
bmFsQVBNQ29uZmlnOjpvcGVyYXRvcj09KGNvbnN0IEludGVybmFsQVBNQ29uZmlnJiBvdGhlcikg
eworYm9vbCBJbnRlcm5hbEFQTUNvbmZpZzo6b3BlcmF0b3I9PShjb25zdCBJbnRlcm5hbEFQTUNv
bmZpZyYgb3RoZXIpIGNvbnN0Cit7CiAgIHJldHVybiBhZWNfZW5hYmxlZCA9PSBvdGhlci5hZWNf
ZW5hYmxlZCAmJgogICAgICAgICAgYWVjX2RlbGF5X2Fnbm9zdGljX2VuYWJsZWQgPT0gb3RoZXIu
YWVjX2RlbGF5X2Fnbm9zdGljX2VuYWJsZWQgJiYKICAgICAgICAgIGFlY19kcmlmdF9jb21wZW5z
YXRpb25fZW5hYmxlZCA9PQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYWVjX2R1bXAu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVk
aW9fcHJvY2Vzc2luZy9pbmNsdWRlL2FlY19kdW1wLmgKaW5kZXggYTc3NjlkOTk3MzkyODhmMjMw
OTU1ODRmYjlmMjYwMzQ2ZTg5NzFjOS4uMDc0NzdkMmY4MjlkZGIyODZhYzk1OTE4M2IwNzU1OThl
MzAzZDgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYWVjX2R1bXAuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvaW5jbHVkZS9hZWNfZHVtcC5oCkBAIC0zMSw3ICszMSw3IEBAIHN0cnVjdCBJbnRl
cm5hbEFQTUNvbmZpZyB7CiAgIEludGVybmFsQVBNQ29uZmlnJiBvcGVyYXRvcj0oY29uc3QgSW50
ZXJuYWxBUE1Db25maWcmKTsKICAgSW50ZXJuYWxBUE1Db25maWcmIG9wZXJhdG9yPShJbnRlcm5h
bEFQTUNvbmZpZyYmKSA9IGRlbGV0ZTsKIAotICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50ZXJu
YWxBUE1Db25maWcmIG90aGVyKTsKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludGVybmFsQVBN
Q29uZmlnJiBvdGhlcikgY29uc3Q7CiAKICAgYm9vbCBhZWNfZW5hYmxlZCA9IGZhbHNlOwogICBi
b29sIGFlY19kZWxheV9hZ25vc3RpY19lbmFibGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nl
c3NpbmcvdXRpbGl0eS9kZWxheV9lc3RpbWF0b3Jfd3JhcHBlci5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGls
aXR5L2RlbGF5X2VzdGltYXRvcl93cmFwcGVyLmNjCmluZGV4IDUyMWE4YTA5OTdlYjQ4OTQ2ZTJm
NDY0NzUxZjYzNDJmNTkzMDMwMGQuLjg2OTRkODgwNjNkZTc0ZjVmMTkxOTEwYjZhYjY0NDhhYmE1
ZjBmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L2RlbGF5X2VzdGltYXRvcl93cmFw
cGVyLmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L2RlbGF5X2VzdGltYXRvcl93cmFwcGVyLmNj
CkBAIC0yMSw4ICsyMSw3IEBAIG5hbWVzcGFjZSB3ZWJydGMgewogCiAvLyBPbmx5IGJpdCBga0Jh
bmRGaXJzdGAgdGhyb3VnaCBiaXQgYGtCYW5kTGFzdGAgYXJlIHByb2Nlc3NlZCBhbmQKIC8vIGBr
QmFuZEZpcnN0YCAtIGBrQmFuZExhc3RgIG11c3QgYmUgPCAzMi4KLWVudW0geyBrQmFuZEZpcnN0
ID0gMTIgfTsKLWVudW0geyBrQmFuZExhc3QgPSA0MyB9OworZW51bSB7IGtCYW5kRmlyc3QgPSAx
Miwga0JhbmRMYXN0ID0gNDMgfTsKIAogc3RhdGljIF9faW5saW5lIHVpbnQzMl90IFNldEJpdCh1
aW50MzJfdCBpbiwgaW50IHBvcykgewogICB1aW50MzJfdCBtYXNrID0gKDEgPDwgcG9zKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVs
ZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvdmFkX2F1ZGlvX3Byb2MuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQv
dmFkX2F1ZGlvX3Byb2MuaAppbmRleCA0YTcxY2UzODAwYjcxNGNmYjJiYmMwMGI4NTMyYjNmODI0
NGUzZWU1Li4yY2ZlOTBjOTA5OGVlODdmNjBmNWJhNzliNjE0ZjkyY2Y1MzM2NzE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvdmFkL3ZhZF9hdWRpb19wcm9jLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC92
YWRfYXVkaW9fcHJvYy5oCkBAIC00NywyNyArNDcsMjAgQEAgY2xhc3MgVmFkQXVkaW9Qcm9jIHsK
ICAgdm9pZCBSbXMoZG91YmxlKiBybXMsIHNpemVfdCBsZW5ndGhfcm1zKTsKICAgdm9pZCBSZXNl
dEJ1ZmZlcigpOwogCisgICAgLy8gVE9ETyh0dXJhanMpOiBtYXliZSBkZWZpbmluZyB0aGlzIGF0
IGEgaGlnaGVyIGxldmVsIChtYXliZSBlbnVtKSBzbyB0aGF0CisgICAgLy8gYWxsIHRoZSBjb2Rl
IHJlY29nbml6ZSBpdCBhcyAibm8tZXJyb3IuIgorICAgIGVudW0gOiBpbnQgeyBrTm9FcnJvciA9
IDAgfTsKKwogICAvLyBUbyBjb21wdXRlIHNwZWN0cmFsIHBlYWsgd2UgcGVyZm9ybSBMUEMgYW5h
bHlzaXMgdG8gZ2V0IHNwZWN0cmFsIGVudmVsb3BlLgogICAvLyBGb3IgZXZlcnkgMzAgbXMgd2Ug
Y29tcHV0ZSAzIHNwZWN0cmFsIHBlYWsgdGhlcmUgZm9yIDMgTFBDIGFuYWx5c2lzLgogICAvLyBM
UEMgaXMgY29tcHV0ZWQgb3ZlciAxNSBtcyBvZiB3aW5kb3dlZCBhdWRpby4gRm9yIGV2ZXJ5IDEw
IG1zIHN1Yi1mcmFtZQogICAvLyB3ZSBuZWVkIDUgbXMgb2YgcGFzdCBzaWduYWwgdG8gY3JlYXRl
IHRoZSBpbnB1dCBvZiBMUEMgYW5hbHlzaXMuCiAgIGVudW0gOiBzaXplX3QgewotICAgIGtOdW1Q
YXN0U2lnbmFsU2FtcGxlcyA9IHN0YXRpY19jYXN0PHNpemVfdD4oa1NhbXBsZVJhdGVIeiAvIDIw
MCkKLSAgfTsKLQotICAvLyBUT0RPKHR1cmFqcyk6IG1heWJlIGRlZmluaW5nIHRoaXMgYXQgYSBo
aWdoZXIgbGV2ZWwgKG1heWJlIGVudW0pIHNvIHRoYXQKLSAgLy8gYWxsIHRoZSBjb2RlIHJlY29n
bml6ZSBpdCBhcyAibm8tZXJyb3IuIgotICBlbnVtIDogaW50IHsga05vRXJyb3IgPSAwIH07Ci0K
LSAgZW51bSA6IHNpemVfdCB7IGtOdW0xMG1zU3ViZnJhbWVzID0gMyB9OwotICBlbnVtIDogc2l6
ZV90IHsKLSAgICBrTnVtU3ViZnJhbWVTYW1wbGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihrU2Ft
cGxlUmF0ZUh6IC8gMTAwKQotICB9OwotICBlbnVtIDogc2l6ZV90IHsKKyAgICBrTnVtUGFzdFNp
Z25hbFNhbXBsZXMgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGtTYW1wbGVSYXRlSHogLyAyMDApLAor
ICAgIGtOdW0xMG1zU3ViZnJhbWVzID0gMywKKyAgICBrTnVtU3ViZnJhbWVTYW1wbGVzID0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihrU2FtcGxlUmF0ZUh6IC8gMTAwKSwKICAgICAvLyBTYW1wbGVzIGlu
IDMwIG1zIEAgZ2l2ZW4gc2FtcGxpbmcgcmF0ZS4KLSAgICBrTnVtU2FtcGxlc1RvUHJvY2VzcyA9
IGtOdW0xMG1zU3ViZnJhbWVzICoga051bVN1YmZyYW1lU2FtcGxlcwotICB9OwotICBlbnVtIDog
c2l6ZV90IHsKKyAgICBrTnVtU2FtcGxlc1RvUHJvY2VzcyA9IGtOdW0xMG1zU3ViZnJhbWVzICog
a051bVN1YmZyYW1lU2FtcGxlcywKICAgICBrQnVmZmVyTGVuZ3RoID0ga051bVBhc3RTaWduYWxT
YW1wbGVzICsga051bVNhbXBsZXNUb1Byb2Nlc3MKICAgfTsKICAgZW51bSA6IHNpemVfdCB7IGtJ
cExlbmd0aCA9IGtEZnRTaXplID4+IDEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL21lZGlhX29wdF91
dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L3ZpZGVvX2NvZGluZy9tZWRpYV9vcHRfdXRpbC5oCmluZGV4IDFkOThlYTZjYTQ5YzFlZGMyMzc0
Y2E3MTIzOTc2ZjU2NmU5NDJlZDAuLjNmNTU2MjZkNTJkNzdhZTdjNjhiNWY1YmFhZmVhOTgwY2Ji
MTE3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL21lZGlhX29wdF91dGlsLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvbWVk
aWFfb3B0X3V0aWwuaApAQCAtMjYsMTAgKzI2LDEyIEBAIG5hbWVzcGFjZSBtZWRpYV9vcHRpbWl6
YXRpb24gewogLy8gTnVtYmVyIG9mIHRpbWUgcGVyaW9kcyB1c2VkIGZvciAobWF4KSB3aW5kb3cg
ZmlsdGVyIGZvciBwYWNrZXQgbG9zcwogLy8gVE9ETyhtYXJwYW4pOiBzZXQgcmVhc29uYWJsZSB3
aW5kb3cgc2l6ZSBmb3IgZmlsdGVyZWQgcGFja2V0IGxvc3MsCiAvLyBhZGp1c3RtZW50IHNob3Vs
ZCBiZSBiYXNlZCBvbiBsb2dnZWQvcmVhbCBkYXRhIG9mIGxvc3Mgc3RhdHMvY29ycmVsYXRpb24u
Ci1lbnVtIHsga0xvc3NQckhpc3RvcnlTaXplID0gMTAgfTsKK2VudW0geworICAgIGtMb3NzUHJI
aXN0b3J5U2l6ZSA9IDEwLAogCiAvLyAxMDAwIG1zLCB0b3RhbCBmaWx0ZXIgbGVuZ3RoIGlzIChr
TG9zc1BySGlzdG9yeVNpemUgKiAxMDAwKSBtcwotZW51bSB7IGtMb3NzUHJTaG9ydEZpbHRlcldp
bk1zID0gMTAwMCB9OworICAgIGtMb3NzUHJTaG9ydEZpbHRlcldpbk1zID0gMTAwMAorfTsKIAog
Ly8gVGhlIHR5cGUgb2YgZmlsdGVyIHVzZWQgb24gdGhlIHJlY2VpdmVkIHBhY2tldCBsb3NzIHJl
cG9ydHMuCiBlbnVtIEZpbHRlclBhY2tldExvc3NNb2RlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhY2VfY2hlY2tlci5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmFj
ZV9jaGVja2VyLmgKaW5kZXggNGQ1NzQ2MDFlYjBiNGJhNjJhY2U1Y2RiNDZkNjkwYTM0MTNmYTNm
Zi4uOWY5YmEwNWFkNGZhNTc5NWM3YTBjNjMxZDFiMzVkZGZhYzNhYTcwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmFjZV9j
aGVja2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgUlRDX0xPQ0tB
QkxFIFJhY2VDaGVja2VyIHsKICAgdm9pZCBSZWxlYXNlKCkgY29uc3QgUlRDX1VOTE9DS19GVU5D
VElPTigpOwogCiAgIC8vIFZvbGF0aWxlIHRvIHByZXZlbnQgY29kZSBiZWluZyBvcHRpbWl6ZWQg
YXdheSBpbiBBY3F1aXJlKCkvUmVsZWFzZSgpLgotICBtdXRhYmxlIHZvbGF0aWxlIGludCBhY2Nl
c3NfY291bnRfID0gMDsKKyAgbXV0YWJsZSBzdGQ6OmF0b21pYzxpbnQ+IGFjY2Vzc19jb3VudF8g
PSAwOwogICBtdXRhYmxlIHZvbGF0aWxlIFBsYXRmb3JtVGhyZWFkUmVmIGFjY2Vzc2luZ190aHJl
YWRfOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcnRjX2Jhc2UvdW5pdHMvdW5pdF9iYXNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0cy91bml0X2Jhc2UuaAppbmRleCA3
MTk2YmFlMzQ2Mjc5OTNmYTJhMzI2MjhjNDVkNTY1ZGZiZWI4ZjZjLi5hM2QyNDcyMTkzMmZiMjc0
ODEwYWFhNWVmZTU1ZDI0NGI4OTBhYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0cy91bml0X2Jhc2UuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0cy91
bml0X2Jhc2UuaApAQCAtNTAsMjIgKzUwLDIyIEBAIGNsYXNzIFVuaXRCYXNlIHsKICAgICByZXR1
cm4gdmFsdWVfID09IE1pbnVzSW5maW5pdHlWYWwoKTsKICAgfQogCi0gIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPT0oY29uc3QgVW5pdF9UJiBvdGhlcikgY29uc3QgeworICBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFVuaXRCYXNlJiBvdGhlcikgY29uc3QgewogICAgIHJldHVybiB2
YWx1ZV8gPT0gb3RoZXIudmFsdWVfOwogICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0o
Y29uc3QgVW5pdF9UJiBvdGhlcikgY29uc3QgeworICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFVuaXRCYXNlJiBvdGhlcikgY29uc3QgewogICAgIHJldHVybiB2YWx1ZV8gIT0gb3Ro
ZXIudmFsdWVfOwogICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3QgVW5pdF9U
JiBvdGhlcikgY29uc3QgeworICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFVuaXRC
YXNlJiBvdGhlcikgY29uc3QgewogICAgIHJldHVybiB2YWx1ZV8gPD0gb3RoZXIudmFsdWVfOwog
ICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgVW5pdF9UJiBvdGhlcikgY29u
c3QgeworICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFVuaXRCYXNlJiBvdGhlcikg
Y29uc3QgewogICAgIHJldHVybiB2YWx1ZV8gPj0gb3RoZXIudmFsdWVfOwogICB9Ci0gIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBVbml0X1QmIG90aGVyKSBjb25zdCB7CisgIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBVbml0QmFzZSYgb3RoZXIpIGNvbnN0IHsKICAgICBy
ZXR1cm4gdmFsdWVfID4gb3RoZXIudmFsdWVfOwogICB9Ci0gIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPChjb25zdCBVbml0X1QmIG90aGVyKSBjb25zdCB7CisgIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPChjb25zdCBVbml0QmFzZSYgb3RoZXIpIGNvbnN0IHsKICAgICByZXR1cm4gdmFsdWVfIDwg
b3RoZXIudmFsdWVfOwogICB9CiAgIGNvbnN0ZXhwciBVbml0X1QgUm91bmRUbyhjb25zdCBVbml0
X1QmIHJlc29sdXRpb24pIGNvbnN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RhdGVN
YXRoLmggYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCmluZGV4IDdiYjI3ZTk5NzZmYjE0ZTA2
ZmE0ZWU0ODU1MzYxN2ZjYTA2ZDhkN2IuLjA3ZGRmMzg1NDYzM2NiNWU0Y2E5Njc5MzU5YzA0OGYx
MzM5NWU0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKKysrIGIvU291
cmNlL1dURi93dGYvRGF0ZU1hdGguaApAQCAtNjYsMTIgKzY2LDEyIEBAIHN0cnVjdCBMb2NhbFRp
bWVPZmZzZXQgewogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTG9j
YWxUaW1lT2Zmc2V0JiBvdGhlcikKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTG9jYWxUaW1l
T2Zmc2V0JiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpc0RTVCA9PSBvdGhl
ci5pc0RTVCAmJiBvZmZzZXQgPT0gb3RoZXIub2Zmc2V0OwogICAgIH0KIAotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBMb2NhbFRpbWVPZmZzZXQmIG90aGVyKQorICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBMb2NhbFRpbWVPZmZzZXQmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIGlzRFNUICE9IG90aGVyLmlzRFNUIHx8IG9mZnNldCAhPSBvdGhlci5vZmZzZXQ7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dU
Ri93dGYvRmFzdEJpdFZlY3Rvci5oCmluZGV4IDQzYjQ0MTA0NDdiODkxMDNlYjRjYWI1MDBkYjU0
Yjc5MGIzZWY2MDYuLmI1MWU3Y2RmOGJiNTQ0MTQxODZlZDQwMDhiNmU4ZGVmMDE3NmI1OGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9GYXN0Qml0VmVjdG9yLmgKQEAgLTI4MSw4ICsyODEsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgc2l6ZV90IGFycmF5TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gZmFzdEJpdFZlY3RvckFycmF5
TGVuZ3RoKG51bUJpdHMoKSk7IH0KICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcj4K
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3RoZXImIG90aGVyKSBjb25zdAorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBGYXN0Qml0VmVjdG9ySW1wbCYgb3RoZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAobnVtQml0cygpICE9IG90aGVyLm51bUJpdHMoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI5Myw4ICsyOTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcj4KLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgT3RoZXImIG90aGVyKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBGYXN0Qml0VmVjdG9ySW1wbCYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvR2VuZXJpY1RpbWVNaXhpbi5oIGIvU291cmNlL1dURi93dGYvR2VuZXJpY1RpbWVNaXhpbi5o
CmluZGV4IGFiYmVlMGFlZWRmYzM4Y2I3NDQ0Y2ExMjA0YTYzNjAyYjZhNDg2ODAuLjQxMjA5NGI1
N2MwZTRkNTNiNGE2ZTMyMmVhNzQ0ODVhMDc2NmFjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0dlbmVyaWNUaW1lTWl4aW4uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9HZW5lcmljVGltZU1p
eGluLmgKQEAgLTg0LDMyICs4NCwzMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTZWNvbmRz
KG1fdmFsdWUgLSBvdGhlci5tX3ZhbHVlKTsKICAgICB9CiAKLSAgICBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj09KERlcml2ZWRUaW1lIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPT0oY29uc3QgR2VuZXJpY1RpbWVNaXhpbiYgb3RoZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOwogICAgIH0KIAotICAgIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yIT0oRGVyaXZlZFRpbWUgb3RoZXIpIGNvbnN0CisgICAgY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBHZW5lcmljVGltZU1peGluJiBvdGhlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX3ZhbHVlICE9IG90aGVyLm1fdmFsdWU7CiAgICAgfQog
Ci0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KERlcml2ZWRUaW1lIG90aGVyKSBjb25zdAor
ICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBHZW5lcmljVGltZU1peGluJiBvdGhl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3ZhbHVlIDwgb3RoZXIubV92YWx1ZTsK
ICAgICB9CiAKLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oRGVyaXZlZFRpbWUgb3RoZXIp
IGNvbnN0CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IEdlbmVyaWNUaW1lTWl4
aW4mIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdmFsdWUgPiBvdGhlci5t
X3ZhbHVlOwogICAgIH0KIAotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oRGVyaXZlZFRp
bWUgb3RoZXIpIGNvbnN0CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBHZW5l
cmljVGltZU1peGluJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3ZhbHVl
IDw9IG90aGVyLm1fdmFsdWU7CiAgICAgfQogCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+
PShEZXJpdmVkVGltZSBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49
KGNvbnN0IEdlbmVyaWNUaW1lTWl4aW4mIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fdmFsdWUgPj0gb3RoZXIubV92YWx1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9JdGVyYXRvckFkYXB0b3JzLmggYi9Tb3VyY2UvV1RGL3d0Zi9JdGVyYXRvckFkYXB0
b3JzLmgKaW5kZXggNzE5ZGI4ZDMyYWVhNWVhZTI0OTRiNjYyYTJlYjc5YTQxODZjMzA3YS4uYTRl
MDdlYmEyOGI4NjNhYmViNDY5MzcyNWM5YjIzM2EyMmYyM2I0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvSXRlcmF0b3JBZGFwdG9ycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0l0ZXJhdG9y
QWRhcHRvcnMuaApAQCAtNTksOCArNTksOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbV9p
dGVyOwogICAgIH0KIAotICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oRmlsdGVySXRlcmF0b3Im
IG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXIgPT0gb3RoZXIubV9pdGVyOyB9Ci0gICAgaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShGaWx0ZXJJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1faXRlciAhPSBvdGhlci5tX2l0ZXI7IH0KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEZpbHRlckl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyID09IG90aGVy
Lm1faXRlcjsgfQorICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVySXRlcmF0
b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXIgIT0gb3RoZXIubV9pdGVyOyB9CiAKIHBy
aXZhdGU6CiAgICAgY29uc3QgUHJlZGljYXRlIG1fcHJlZDsKQEAgLTk1LDggKzk1LDggQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV90cmFuc2Zvcm0oKm1faXRlcik7CiAgICAgfQogCi0gICAg
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShUcmFuc2Zvcm1JdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIG1faXRlciA9PSBvdGhlci5tX2l0ZXI7IH0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KFRyYW5zZm9ybUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyICE9IG90
aGVyLm1faXRlcjsgfQorICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3Jt
SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXIgPT0gb3RoZXIubV9pdGVyOyB9
CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUcmFuc2Zvcm1JdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG1faXRlciAhPSBvdGhlci5tX2l0ZXI7IH0KIAogcHJpdmF0ZToK
ICAgICBjb25zdCBUcmFuc2Zvcm0gbV90cmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9MaXZlbmVzcy5oIGIvU291cmNlL1dURi93dGYvTGl2ZW5lc3MuaAppbmRleCA0NjlkZjNm
MzE1MGE3ZTI5MzBhNGJkMzk5Yjc3OWE2NGQwYWVmYTA4Li5jMmY4Zjk2MjZiOGJhMzU2MTczNjgx
ODhiYWQ0ZWQ3MWIxYjI3M2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9MaXZlbmVzcy5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0xpdmVuZXNzLmgKQEAgLTk0LDggKzk0LDggQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9hZGFwdGVyLmluZGV4VG9WYWx1ZSgqbV9z
cGFyY2VTZXRJdGVyYXRvcik7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gbV9zcGFyY2VT
ZXRJdGVyYXRvciA9PSBvdGhlci5tX3NwYXJjZVNldEl0ZXJhdG9yOyB9Ci0gICAgICAgICAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gbV9zcGFy
Y2VTZXRJdGVyYXRvciAhPSBvdGhlci5tX3NwYXJjZVNldEl0ZXJhdG9yOyB9CisgICAgICAgICAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gbV9zcGFyY2VTZXRJdGVyYXRvciA9PSBvdGhlci5tX3NwYXJjZVNldEl0ZXJhdG9yOyB9Cisg
ICAgICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gbV9zcGFyY2VTZXRJdGVyYXRvciAhPSBvdGhlci5tX3NwYXJjZVNldEl0ZXJh
dG9yOyB9CiAKICAgICAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgQWRhcHRlciYg
bV9hZGFwdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbkFjdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmgKaW5kZXggMDE5ODg5NjdjNDI3YjQ1ZjY5YzI3
MjRmNjBiNmQ2MTNmZjk1MTgxYS4uYWQzYjkxN2NiNDdkMmM2ZmFkMDI2NjU3Zjg2MGIzOWJjYTc4
ZDMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkFjdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oCkBAIC02Nyw3ICs2Nyw3IEBAIHVzaW5nIFNlcmlh
bGl6ZWRBY3Rpb25CeXRlID0gdWludDhfdDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IEFjdGlvbldpdGhvdXRNZXRhZGF0YSB7CiAgICAgVCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJl
dHVybiB7IH07IH0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWN0aW9uV2l0aG91dE1ldGFkYXRh
JikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50
OF90PiYpIGNvbnN0IHsgfQogICAgIHN0YXRpYyBUIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWlu
dDhfdD4pIHsgcmV0dXJuIHsgfTsgfQogICAgIHN0YXRpYyBzaXplX3Qgc2VyaWFsaXplZExlbmd0
aChTcGFuPGNvbnN0IHVpbnQ4X3Q+KSB7IHJldHVybiAwOyB9CkBAIC03Niw3ICs3Niw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBY3Rpb25XaXRob3V0TWV0YWRhdGEgewogdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IEFjdGlvbldpdGhTdHJpbmdNZXRhZGF0YSB7CiAgICAgY29u
c3QgU3RyaW5nIHN0cmluZzsKICAgICBUIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsg
eyBzdHJpbmcuaXNvbGF0ZWRDb3B5KCkgfSB9OyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFQmIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5zdHJpbmcgPT0gdGhpcy0+c3RyaW5nOyB9
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFjdGlvbldpdGhTdHJpbmdNZXRhZGF0YSYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLnN0cmluZyA9PSB0aGlzLT5zdHJpbmc7IH0KICAgICB2
b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mIHZlY3RvcikgY29uc3QgeyBzZXJpYWxpemVT
dHJpbmcodmVjdG9yLCBzdHJpbmcpOyB9CiAgICAgc3RhdGljIFQgZGVzZXJpYWxpemUoU3Bhbjxj
b25zdCB1aW50OF90PiBzcGFuKSB7IHJldHVybiB7IHsgZGVzZXJpYWxpemVTdHJpbmcoc3Bhbikg
fSB9OyB9CiAgICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWlu
dDhfdD4gc3BhbikgeyByZXR1cm4gc3RyaW5nU2VyaWFsaXplZExlbmd0aChzcGFuKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9k
ZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5G
QU5vZGVCdWlsZGVyLmgKaW5kZXggNzJiODY3N2FjZDMzNjFlNzk2NTU2NDQ2NzMzOWY5Y2VlM2Qz
ZWRjYi4uZTlkZDZiMzJkNDVkZjVmYzI5N2M3NjRjYzliMmUxN2JkYTMzY2UyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkFO
b2RlQnVpbGRlci5oCkBAIC05MSwxMSArOTEsMTEgQEAgcHVibGljOgogICAgICAgICBDaGFyYWN0
ZXJUeXBlIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gcmFuZ2UuZmlyc3Q7IH0KICAgICAgICAgQ2hh
cmFjdGVyVHlwZSBsYXN0KCkgY29uc3QgeyByZXR1cm4gcmFuZ2UubGFzdDsgfQogICAgICAgICB1
aW50MzJfdCBkYXRhKCkgY29uc3QgeyByZXR1cm4gdGFyZ2V0SWQ7IH0KLSAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEZha2VSYW5nZUl0ZXJhdG9yJiBvdGhlcikKKyAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEZha2VSYW5nZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmlzRW5kID09IG90aGVyLmlzRW5kOwogICAgICAg
ICB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGYWtlUmFuZ2VJdGVyYXRvciYgb3Ro
ZXIpIHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBGYWtlUmFuZ2VJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOyB9CiAgICAgICAgIEZha2VSYW5nZUl0ZXJhdG9yIG9wZXJhdG9yKysoKQogICAg
ICAgICB7CiAgICAgICAgICAgICBpc0VuZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oCmluZGV4IDgyYTBkNzU3NjE0OGM2
YzI2NjBhZjUxMjYzY2RlMWQ4ODExYTE2ZWMuLmZlMGM1ZWUxZDA5YTI1ZjNkNThkNDgyOWE4ZmZj
YjY2ZGQ4YmU4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oCkBAIC03Myw2ICs3Myw3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZSYgb3BlcmF0b3I9KGNvbnN0IENhY2hlZFJlc291cmNlSGFuZGxlJiBvKSB7
IHNldFJlc291cmNlKG8uZ2V0KCkpOyByZXR1cm4gKnRoaXM7IH0KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBDYWNoZWRSZXNvdXJjZUhhbmRsZSYgb3BlcmF0b3I9KGNvbnN0IENhY2hlZFJlc291
cmNlSGFuZGxlPFU+JiBvKSB7IHNldFJlc291cmNlKG8uZ2V0KCkpOyByZXR1cm4gKnRoaXM7IH0K
IAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZSYgbykgY29u
c3QgeyByZXR1cm4gb3BlcmF0b3I9PShzdGF0aWNfY2FzdDxjb25zdCBDYWNoZWRSZXNvdXJjZUhh
bmRsZUJhc2UmPihvKSk7IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGVCYXNlJiBvKSBjb25zdCB7IHJldHVybiBnZXQoKSA9PSBvLmdldCgpOyB9CiAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSYgbykgY29uc3Qg
eyByZXR1cm4gZ2V0KCkgIT0gby5nZXQoKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9JbWFnZU92ZXJsYXlDb250cm9sbGVyTWFjLm1tCmluZGV4IDNiYjYyOTQ4NTEx
YzQzYWQ4ZWFlZjc5ZWJkODFlYmM3NDMxYzhkNTcuLmRhMzY4ODI4MjIyZGVhNjBhNDkxYjQ4N2Vk
NTZlMTMxY2JkOGQ3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ltYWdl
T3ZlcmxheUNvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvSW1h
Z2VPdmVybGF5Q29udHJvbGxlck1hYy5tbQpAQCAtOTAsOSArOTAsOSBAQCB2b2lkIEltYWdlT3Zl
cmxheUNvbnRyb2xsZXI6OnVwZGF0ZURhdGFEZXRlY3RvckhpZ2hsaWdodHMoY29uc3QgSFRNTEVs
ZW1lbnQmIG92ZQogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdGVhY2ggRGF0YURldGVj
dG9ySGlnaGxpZ2h0IHRvIHJlbmRlciBxdWFkcyBpbnN0ZWFkIG9mIGFsd2F5cyBmYWxsaW5nIGJh
Y2sgdG8gYXhpcy1hbGlnbmVkIGJvdW5kaW5nIHJlY3RzLgogI2lmIEhBVkUoRERfSElHSExJR0hU
X0NSRUFURV9XSVRIX1NDQUxFKQotICAgICAgICBhdXRvIGhpZ2hsaWdodCA9IGFkb3B0Q0YoUEFM
Ojpzb2Z0TGlua19EYXRhRGV0ZWN0b3JzX0RESGlnaGxpZ2h0Q3JlYXRlV2l0aFJlY3RzSW5WaXNp
YmxlUmVjdFdpdGhTdHlsZVNjYWxlQW5kRGlyZWN0aW9uKG51bGxwdHIsICZlbGVtZW50Qm91bmRz
LCAxLCBtYWluRnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKSwgRERIaWdobGlnaHRTdHls
ZUJ1YmJsZVN0YW5kYXJkIHwgRERIaWdobGlnaHRTdHlsZVN0YW5kYXJkSWNvbkFycm93LCBZRVMs
IE5TV3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwsIE5PLCBZRVMsIDApKTsKKyAgICAgICAgYXV0byBo
aWdobGlnaHQgPSBhZG9wdENGKFBBTDo6c29mdExpbmtfRGF0YURldGVjdG9yc19EREhpZ2hsaWdo
dENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJlY3RXaXRoU3R5bGVTY2FsZUFuZERpcmVjdGlvbihu
dWxscHRyLCAmZWxlbWVudEJvdW5kcywgMSwgbWFpbkZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRS
ZWN0KCksIHN0YXRpY19jYXN0PERESGlnaGxpZ2h0U3R5bGU+KERESGlnaGxpZ2h0U3R5bGVCdWJi
bGVTdGFuZGFyZCkgfCBzdGF0aWNfY2FzdDxEREhpZ2hsaWdodFN0eWxlPihEREhpZ2hsaWdodFN0
eWxlU3RhbmRhcmRJY29uQXJyb3cpLCBZRVMsIE5TV3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwsIE5P
LCBZRVMsIDApKTsKICNlbHNlCi0gICAgICAgIGF1dG8gaGlnaGxpZ2h0ID0gYWRvcHRDRihQQUw6
OnNvZnRMaW5rX0RhdGFEZXRlY3RvcnNfRERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2li
bGVSZWN0V2l0aFN0eWxlQW5kRGlyZWN0aW9uKG51bGxwdHIsICZlbGVtZW50Qm91bmRzLCAxLCBt
YWluRnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKSwgRERIaWdobGlnaHRTdHlsZUJ1YmJs
ZVN0YW5kYXJkIHwgRERIaWdobGlnaHRTdHlsZVN0YW5kYXJkSWNvbkFycm93LCBZRVMsIE5TV3Jp
dGluZ0RpcmVjdGlvbk5hdHVyYWwsIE5PLCBZRVMpKTsKKyAgICAgICAgYXV0byBoaWdobGlnaHQg
PSBhZG9wdENGKFBBTDo6c29mdExpbmtfRGF0YURldGVjdG9yc19EREhpZ2hsaWdodENyZWF0ZVdp
dGhSZWN0c0luVmlzaWJsZVJlY3RXaXRoU3R5bGVBbmREaXJlY3Rpb24obnVsbHB0ciwgJmVsZW1l
bnRCb3VuZHMsIDEsIG1haW5GcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLCBzdGF0aWNf
Y2FzdDxEREhpZ2hsaWdodFN0eWxlPihEREhpZ2hsaWdodFN0eWxlQnViYmxlU3RhbmRhcmQpIHwg
c3RhdGljX2Nhc3Q8RERIaWdobGlnaHRTdHlsZT4oRERIaWdobGlnaHRTdHlsZVN0YW5kYXJkSWNv
bkFycm93KSwgWUVTLCBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1cmFsLCBOTywgWUVTKSk7CiAjZW5k
aWYKICAgICAgICAgbV9kYXRhRGV0ZWN0b3JDb250YWluZXJzQW5kSGlnaGxpZ2h0cy5hcHBlbmQo
eyBlbGVtZW50LCBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmNyZWF0ZUZvckltYWdlT3ZlcmxheSgq
bV9wYWdlLCAqdGhpcywgV1RGTW92ZShoaWdobGlnaHQpLCAqbWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZShlbGVtZW50LmdldCgpKSkgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KaW5kZXggZGNmMWFjNjEwM2ZkMmUz
ODdjZjIxM2I4YTc2Njg5YjZlY2Q2YWZlOS4uZTYzNjg5NDUyYjhmMTBjMzgwZTZmMGVkNzMxNDI3
MDg5ZmFjMThlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNP
dmVybGF5Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyLm1tCkBAIC0zNjgsOSArMzY4LDkgQEAgdm9pZCBTZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyOjpidWlsZFBob25lTnVtYmVySGlnaGxpZ2h0cygpCiAKICAgICAgICAg
Q0dSZWN0IGNnUmVjdCA9IHJlY3Q7CiAjaWYgSEFWRShERF9ISUdITElHSFRfQ1JFQVRFX1dJVEhf
U0NBTEUpCi0gICAgICAgIGF1dG8gZGRIaWdobGlnaHQgPSBhZG9wdENGKFBBTDo6c29mdExpbmtf
RGF0YURldGVjdG9yc19EREhpZ2hsaWdodENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJlY3RXaXRo
U3R5bGVTY2FsZUFuZERpcmVjdGlvbihudWxscHRyLCAmY2dSZWN0LCAxLCBtYWluRnJhbWVWaWV3
LnZpc2libGVDb250ZW50UmVjdCgpLCBEREhpZ2hsaWdodFN0eWxlQnViYmxlU3RhbmRhcmQgfCBE
REhpZ2hsaWdodFN0eWxlU3RhbmRhcmRJY29uQXJyb3csIFlFUywgTlNXcml0aW5nRGlyZWN0aW9u
TmF0dXJhbCwgTk8sIFlFUywgMCkpOworICAgICAgICBhdXRvIGRkSGlnaGxpZ2h0ID0gYWRvcHRD
RihQQUw6OnNvZnRMaW5rX0RhdGFEZXRlY3RvcnNfRERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJ
blZpc2libGVSZWN0V2l0aFN0eWxlU2NhbGVBbmREaXJlY3Rpb24obnVsbHB0ciwgJmNnUmVjdCwg
MSwgbWFpbkZyYW1lVmlldy52aXNpYmxlQ29udGVudFJlY3QoKSwgc3RhdGljX2Nhc3Q8RERIaWdo
bGlnaHRTdHlsZT4oRERIaWdobGlnaHRTdHlsZUJ1YmJsZVN0YW5kYXJkKSB8IHN0YXRpY19jYXN0
PERESGlnaGxpZ2h0U3R5bGU+KERESGlnaGxpZ2h0U3R5bGVTdGFuZGFyZEljb25BcnJvdyksIFlF
UywgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8sIFlFUywgMCkpOwogI2Vsc2UKLSAgICAg
ICAgYXV0byBkZEhpZ2hsaWdodCA9IGFkb3B0Q0YoUEFMOjpzb2Z0TGlua19EYXRhRGV0ZWN0b3Jz
X0RESGlnaGxpZ2h0Q3JlYXRlV2l0aFJlY3RzSW5WaXNpYmxlUmVjdFdpdGhTdHlsZUFuZERpcmVj
dGlvbihudWxscHRyLCAmY2dSZWN0LCAxLCBtYWluRnJhbWVWaWV3LnZpc2libGVDb250ZW50UmVj
dCgpLCBEREhpZ2hsaWdodFN0eWxlQnViYmxlU3RhbmRhcmQgfCBEREhpZ2hsaWdodFN0eWxlU3Rh
bmRhcmRJY29uQXJyb3csIFlFUywgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8sIFlFUykp
OworICAgICAgICBhdXRvIGRkSGlnaGxpZ2h0ID0gYWRvcHRDRihQQUw6OnNvZnRMaW5rX0RhdGFE
ZXRlY3RvcnNfRERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2libGVSZWN0V2l0aFN0eWxl
QW5kRGlyZWN0aW9uKG51bGxwdHIsICZjZ1JlY3QsIDEsIG1haW5GcmFtZVZpZXcudmlzaWJsZUNv
bnRlbnRSZWN0KCksIHN0YXRpY19jYXN0PERESGlnaGxpZ2h0U3R5bGU+KERESGlnaGxpZ2h0U3R5
bGVCdWJibGVTdGFuZGFyZCkgfCBzdGF0aWNfY2FzdDxEREhpZ2hsaWdodFN0eWxlPihEREhpZ2hs
aWdodFN0eWxlU3RhbmRhcmRJY29uQXJyb3cpLCBZRVMsIE5TV3JpdGluZ0RpcmVjdGlvbk5hdHVy
YWwsIE5PLCBZRVMpKTsKICNlbmRpZgogICAgICAgICBhdXRvIGhpZ2hsaWdodCA9IERhdGFEZXRl
Y3RvckhpZ2hsaWdodDo6Y3JlYXRlRm9yVGVsZXBob25lTnVtYmVyKG1fcGFnZSwgKnRoaXMsIFdU
Rk1vdmUoZGRIaWdobGlnaHQpLCBXVEZNb3ZlKHJhbmdlKSk7CiAgICAgICAgIG1faGlnaGxpZ2h0
cy5hZGQoaGlnaGxpZ2h0LmdldCgpKTsKQEAgLTQxMyw5ICs0MTMsOSBAQCB2b2lkIFNlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXI6OmJ1aWxkU2VsZWN0aW9uSGlnaGxpZ2h0KCkKICAgICAgICAgaWYg
KCFjZ1JlY3RzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgQ0dSZWN0IHZpc2libGVSZWN0ID0g
bWFpbkZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAjaWYgSEFWRShERF9ISUdITElH
SFRfQ1JFQVRFX1dJVEhfU0NBTEUpCi0gICAgICAgICAgICBhdXRvIGRkSGlnaGxpZ2h0ID0gYWRv
cHRDRihQQUw6OnNvZnRMaW5rX0RhdGFEZXRlY3RvcnNfRERIaWdobGlnaHRDcmVhdGVXaXRoUmVj
dHNJblZpc2libGVSZWN0V2l0aFN0eWxlU2NhbGVBbmREaXJlY3Rpb24obnVsbHB0ciwgY2dSZWN0
cy5iZWdpbigpLCBjZ1JlY3RzLnNpemUoKSwgdmlzaWJsZVJlY3QsIERESGlnaGxpZ2h0U3R5bGVC
dWJibGVOb25lIHwgRERIaWdobGlnaHRTdHlsZVN0YW5kYXJkSWNvbkFycm93IHwgRERIaWdobGln
aHRTdHlsZUJ1dHRvblNob3dBbHdheXMsIFlFUywgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwg
Tk8sIFlFUywgMCkpOworICAgICAgICAgICAgYXV0byBkZEhpZ2hsaWdodCA9IGFkb3B0Q0YoUEFM
Ojpzb2Z0TGlua19EYXRhRGV0ZWN0b3JzX0RESGlnaGxpZ2h0Q3JlYXRlV2l0aFJlY3RzSW5WaXNp
YmxlUmVjdFdpdGhTdHlsZVNjYWxlQW5kRGlyZWN0aW9uKG51bGxwdHIsIGNnUmVjdHMuYmVnaW4o
KSwgY2dSZWN0cy5zaXplKCksIHZpc2libGVSZWN0LCBzdGF0aWNfY2FzdDxEREhpZ2hsaWdodFN0
eWxlPihEREhpZ2hsaWdodFN0eWxlQnViYmxlTm9uZSkgfCBzdGF0aWNfY2FzdDxEREhpZ2hsaWdo
dFN0eWxlPihEREhpZ2hsaWdodFN0eWxlU3RhbmRhcmRJY29uQXJyb3cpIHwgc3RhdGljX2Nhc3Q8
RERIaWdobGlnaHRTdHlsZT4oRERIaWdobGlnaHRTdHlsZUJ1dHRvblNob3dBbHdheXMpLCBZRVMs
IE5TV3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwsIE5PLCBZRVMsIDApKTsKICNlbHNlCi0gICAgICAg
ICAgICBhdXRvIGRkSGlnaGxpZ2h0ID0gYWRvcHRDRihQQUw6OnNvZnRMaW5rX0RhdGFEZXRlY3Rv
cnNfRERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2libGVSZWN0V2l0aFN0eWxlQW5kRGly
ZWN0aW9uKG51bGxwdHIsIGNnUmVjdHMuYmVnaW4oKSwgY2dSZWN0cy5zaXplKCksIHZpc2libGVS
ZWN0LCBEREhpZ2hsaWdodFN0eWxlQnViYmxlTm9uZSB8IERESGlnaGxpZ2h0U3R5bGVTdGFuZGFy
ZEljb25BcnJvdyB8IERESGlnaGxpZ2h0U3R5bGVCdXR0b25TaG93QWx3YXlzLCBZRVMsIE5TV3Jp
dGluZ0RpcmVjdGlvbk5hdHVyYWwsIE5PLCBZRVMpKTsKKyAgICAgICAgICAgIGF1dG8gZGRIaWdo
bGlnaHQgPSBhZG9wdENGKFBBTDo6c29mdExpbmtfRGF0YURldGVjdG9yc19EREhpZ2hsaWdodENy
ZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJlY3RXaXRoU3R5bGVBbmREaXJlY3Rpb24obnVsbHB0ciwg
Y2dSZWN0cy5iZWdpbigpLCBjZ1JlY3RzLnNpemUoKSwgdmlzaWJsZVJlY3QsIHN0YXRpY19jYXN0
PERESGlnaGxpZ2h0U3R5bGU+KERESGlnaGxpZ2h0U3R5bGVCdWJibGVOb25lKSB8IHN0YXRpY19j
YXN0PERESGlnaGxpZ2h0U3R5bGU+KERESGlnaGxpZ2h0U3R5bGVTdGFuZGFyZEljb25BcnJvdykg
fCBzdGF0aWNfY2FzdDxEREhpZ2hsaWdodFN0eWxlPihEREhpZ2hsaWdodFN0eWxlQnV0dG9uU2hv
d0Fsd2F5cyksIFlFUywgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8sIFlFUykpOwogI2Vu
ZGlmCiAgICAgICAgICAgICBhdXRvIGhpZ2hsaWdodCA9IERhdGFEZXRlY3RvckhpZ2hsaWdodDo6
Y3JlYXRlRm9yU2VsZWN0aW9uKG1fcGFnZSwgKnRoaXMsIFdURk1vdmUoZGRIaWdobGlnaHQpLCBX
VEZNb3ZlKCpzZWxlY3Rpb25SYW5nZSkpOwogICAgICAgICAgICAgbV9oaWdobGlnaHRzLmFkZCho
aWdobGlnaHQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKaW5kZXggMzA5NmMwZWZi
OWQwOTFiMTI3ZDEzZTIwMzdkNWMwMzM0YjEzNjA3YS4uNWEzYzk0NWU1YmUwNWUyYTcwNzUxY2Uy
OTQ5MGIyMzc0MDQ3NmMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC0xNzAsNyAr
MTcwLDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmdldEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3IKICAgICBjb25zdCBpbnQgYml0c1BlckJ5
dGUgPSA4OwogICAgIHN0cmVhbUZvcm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0
ZSgpOwogICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007
Ci0gICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZl
RmxvYXRQYWNrZWQgfCBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZDsKKyAgICBzdHJl
YW1Gb3JtYXQubUZvcm1hdEZsYWdzID0gc3RhdGljX2Nhc3Q8QXVkaW9Gb3JtYXRGbGFncz4oa0F1
ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCkgfCBzdGF0aWNfY2FzdDxBdWRpb0Zvcm1h
dEZsYWdzPihrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZCk7CiAgICAgc3RyZWFtRm9y
bWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5dGVzUGVyRmxvYXQ7CiAgICAgc3RyZWFtRm9ybWF0Lm1G
cmFtZXNQZXJQYWNrZXQgPSAxOwogICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5
dGVzUGVyRmxvYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKaW5kZXggMmNkNzg0MjllMjg1ZGU5
YWViNzExMmY2MzY2ZmYyMTJkMzU2MjY5Yi4uNTA2MDMyMzgwM2IxYTNiMTdmNDczODY2ZWE5N2Iz
YTgyOTBlMjAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcApAQCAtNTIxLDcgKzUyMSw3IEBA
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBBdWRpb0ZpbGVSZWFkZXI6OmNsaWVudERhdGFG
b3JtYXQoY29uc3QgQXVkaW9TdHJlYW1CCiAgICAgY29uc3QgaW50IGJ5dGVzUGVyRmxvYXQgPSBz
aXplb2YoRmxvYXQzMik7CiAgICAgY29uc3QgaW50IGJpdHNQZXJCeXRlID0gODsKICAgICBvdXRG
b3JtYXQubUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOwotICAgIG91dEZvcm1hdC5t
Rm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlv
Rm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAgb3V0Rm9ybWF0Lm1Gb3JtYXRGbGFncyA9
IHN0YXRpY19jYXN0PEF1ZGlvRm9ybWF0RmxhZ3M+KGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxv
YXRQYWNrZWQpIHwgc3RhdGljX2Nhc3Q8QXVkaW9Gb3JtYXRGbGFncz4oa0F1ZGlvRm9ybWF0Rmxh
Z0lzTm9uSW50ZXJsZWF2ZWQpOwogICAgIG91dEZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPSBvdXRG
b3JtYXQubUJ5dGVzUGVyRnJhbWUgPSBieXRlc1BlckZsb2F0OwogICAgIG91dEZvcm1hdC5tRnJh
bWVzUGVyUGFja2V0ID0gMTsKICAgICBvdXRGb3JtYXQubUJpdHNQZXJDaGFubmVsID0gYml0c1Bl
ckJ5dGUgKiBieXRlc1BlckZsb2F0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5jcHAKaW5k
ZXggOTVmZDEzOTEzZjU1YTUyZTM0NGI5OTJkZGFiNGQzMmY5MjEwODAyMS4uNTdjYzE0MjhkNWNl
OTY2NDA5NmIzYWZiZDZiMDkwNmNkOThmMjAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24uY3BwCkBAIC00OCw3ICs0OCw3IEBAIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjo6Q0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uKGRvdWJsZSBzYW1wbGVSYXRlLCB1aW50MzJfdCBuCiAgICAgbV9z
dHJlYW1EZXNjcmlwdGlvbi5tQ2hhbm5lbHNQZXJGcmFtZSA9IG51bUNoYW5uZWxzOwogICAgIG1f
c3RyZWFtRGVzY3JpcHRpb24ubUJ5dGVzUGVyRnJhbWUgPSAwOwogICAgIG1fc3RyZWFtRGVzY3Jp
cHRpb24ubUJ5dGVzUGVyUGFja2V0ID0gMDsKLSAgICBtX3N0cmVhbURlc2NyaXB0aW9uLm1Gb3Jt
YXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRW5kaWFuIHwga0F1ZGlvRm9ybWF0Rmxh
Z0lzUGFja2VkOworICAgIG1fc3RyZWFtRGVzY3JpcHRpb24ubUZvcm1hdEZsYWdzID0gc3RhdGlj
X2Nhc3Q8QXVkaW9Gb3JtYXRGbGFncz4oa0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVFbmRpYW4pIHwg
c3RhdGljX2Nhc3Q8QXVkaW9Gb3JtYXRGbGFncz4oa0F1ZGlvRm9ybWF0RmxhZ0lzUGFja2VkKTsK
ICAgICBtX3N0cmVhbURlc2NyaXB0aW9uLm1SZXNlcnZlZCA9IDA7CiAKICAgICBpbnQgd29yZHNp
emU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oCmluZGV4IDI2YmE4Yzg1YzU0M2NkYmJiMTZk
YmJjNjBmY2Q1NmFiMGQwOGFhYzUuLjYzYWVjNjM2YTAzZWZjNTY2MDUzZTdkZmJjYWRmM2M5NDE5
NGY0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oCkBAIC02MCw2ICs2MCw3IEBAIHB1
YmxpYzoKICAgICB1aW50MzJfdCBieXRlc1BlclBhY2tldCgpIGNvbnN0OwogICAgIHVpbnQzMl90
IGZvcm1hdEZsYWdzKCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3BlcmF0b3I9PShzdGF0
aWNfY2FzdDxjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJj4ob3RoZXIpKTsgfQogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIG90aGVyKSBj
b25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uJiBvdGhlcikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mIG90aGVyKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcApp
bmRleCBmODkxMDdmZmIxYzNmNTNiZTMxOWFhMzg2ODE0Nzc0YmI0ZDI3YTQ3Li40MGE5ODZlYThh
ZjhkOGY2YWM1MGRhMDY1YWQxNGU5OTA4OWM0OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JJ
T1MuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgQXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6Y29u
ZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyCiAgICAgY29u
c3RleHByIGludCBiaXRzUGVyQnl0ZSA9IDg7CiAgICAgc3RyZWFtRm9ybWF0Lm1TYW1wbGVSYXRl
ID0gaGFyZHdhcmVTYW1wbGVSYXRlOwogICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0SUQgPSBrQXVk
aW9Gb3JtYXRMaW5lYXJQQ007Ci0gICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRGbGFncyA9IGtBdWRp
b0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQgfCBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRl
cmxlYXZlZDsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0gc3RhdGljX2Nhc3Q8QXVk
aW9Gb3JtYXRGbGFncz4oa0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCkgfCBzdGF0
aWNfY2FzdDxBdWRpb0Zvcm1hdEZsYWdzPihrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZl
ZCk7CiAgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5dGVzUGVyRmxvYXQ7CiAg
ICAgc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAxOwogICAgIHN0cmVhbUZvcm1hdC5t
Qnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRhcHRvck1hYy5j
cHAKaW5kZXggNzE0Y2NlODg2MjU3NTE4NjFkNWUyYjg1MTMxM2E4OWQwNDEyZWFjYi4uNGE4M2Rj
OTY2MjQ4MGU3MzVjMjY2ZDA2ODAwOWYzZTBjNDlmMWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb091dHB1dFVuaXRBZGFw
dG9yTWFjLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6
OmNvbmZpZ3VyZShmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlcgogICAg
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CiAgICAgc3RyZWFtRm9y
bWF0Lm1TYW1wbGVSYXRlID0gaGFyZHdhcmVTYW1wbGVSYXRlOwogICAgIHN0cmVhbUZvcm1hdC5t
Rm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007Ci0gICAgc3RyZWFtRm9ybWF0Lm1Gb3Jt
YXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQgfCBrQXVkaW9Gb3Jt
YXRGbGFnSXNOb25JbnRlcmxlYXZlZDsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0g
c3RhdGljX2Nhc3Q8QXVkaW9Gb3JtYXRGbGFncz4oa0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9h
dFBhY2tlZCkgfCBzdGF0aWNfY2FzdDxBdWRpb0Zvcm1hdEZsYWdzPihrQXVkaW9Gb3JtYXRGbGFn
SXNOb25JbnRlcmxlYXZlZCk7CiAgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5
dGVzUGVyRmxvYXQ7CiAgICAgc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAxOwogICAg
IHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hbmFnZXIuY3BwCmluZGV4IDdiOWI5ZDliNDQ5M2FmODk2YmJmMTQ2NDMzMDZj
ODNiM2Q1YTk1MTkuLjk1YzI3YjNkNmY3ZDEzOWRlNWI2OTM4ZTgxYzAzMDVmYjQ4Mjc4NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIERpc3Bs
YXlSZWZyZXNoTW9uaXRvciogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZW5zdXJlTW9u
aXRvckZvckRpc3BsYXlJRChQCiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0
cmVhbSA8PCAiW1dlYl0gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZW5zdXJlTW9uaXRv
ckZvckRpc3BsYXlJRCgpIC0gY3JlYXRlZCBtb25pdG9yICIgPDwgbW9uaXRvci5nZXQoKSA8PCAi
IGZvciBkaXNwbGF5ICIgPDwgZGlzcGxheUlEKTsKICAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3Iq
IHJlc3VsdCA9IG1vbml0b3IuZ2V0KCk7Ci0gICAgbV9tb25pdG9ycy5hcHBlbmQoeyBXVEZNb3Zl
KG1vbml0b3IpIH0pOworICAgIG1fbW9uaXRvcnMuYXBwZW5kKERpc3BsYXlSZWZyZXNoTW9uaXRv
cldyYXBwZXIgeyBXVEZNb3ZlKG1vbml0b3IpIH0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaAppbmRleCBmNzZlZTMzMWVmNGEyZTdlODdmZDk2
M2Y1NmU2NGFhZmRmZDI3ZTM4Li5kZmE5NmI0YjQ5NzE3YTgxOTdlYjA5Nzk3ZDNlMjAyYzYxZjM1
NDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5
UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oCkBAIC02Niw3ICs2Niw2IEBAIHBy
aXZhdGU6CiAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBlbnN1cmVNb25pdG9yRm9yRGlzcGxh
eUlEKFBsYXRmb3JtRGlzcGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5Kik7CiAK
ICAgICBzdHJ1Y3QgRGlzcGxheVJlZnJlc2hNb25pdG9yV3JhcHBlciB7Ci0gICAgICAgIERpc3Bs
YXlSZWZyZXNoTW9uaXRvcldyYXBwZXIoRGlzcGxheVJlZnJlc2hNb25pdG9yV3JhcHBlciYmKSA9
IGRlZmF1bHQ7CiAgICAgICAgIH5EaXNwbGF5UmVmcmVzaE1vbml0b3JXcmFwcGVyKCkKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKG1vbml0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmgKaW5kZXggNGQ1
YjgwYTExMWMzYTNiMzM0MmNjM2ZhYmM5MDI5MTM2OGE5NzI4Ny4uZTdhMTRiOWFmMGExZWI0ZjU0
ODMwNjZkYTFkNDE4Yjk3ZDA2MDAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaApAQCAtNDI2LDEwICs0
MjYsNiBAQCBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IEZvbnRTZWxlY3Rp
b25SZXF1ZXN0JiByZXF1ZXN0KQogc3RydWN0IEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMgewog
ICAgIHVzaW5nIFJhbmdlID0gRm9udFNlbGVjdGlvblJhbmdlOwogCi0gICAgRm9udFNlbGVjdGlv
bkNhcGFiaWxpdGllcygpID0gZGVmYXVsdDsKLSAgICBGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVz
KGNvbnN0IEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMmKSA9IGRlZmF1bHQ7Ci0gICAgRm9udFNl
bGVjdGlvbkNhcGFiaWxpdGllcyYgb3BlcmF0b3I9KGNvbnN0IEZvbnRTZWxlY3Rpb25DYXBhYmls
aXRpZXMmKSA9IGRlZmF1bHQ7Ci0KICAgICBjb25zdGV4cHIgc3RkOjp0dXBsZTxSYW5nZSwgUmFu
Z2UsIFJhbmdlPiB0aWVkKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBXVEY6OnRpZSh3
ZWlnaHQsIHdpZHRoLCBzbG9wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAyY2JiY2M1NjYzZmU1ODgwN2QxMDM2
MDZmNWI1MWEwZmY4ZTU2MmRmLi40OTQ4OGM1OTk2MzIxZmJmNjUyMjI3N2JhMGM5NjllNTA3MGZk
NWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKQEAgLTYzLDEyICs2MywxMiBAQCBwdWJsaWM6CiAgICAgVUNoYXIgY3Vy
cmVudCgpIGNvbnN0IHsgcmV0dXJuICgqbV90ZXh0UnVuKVttX29mZnNldF07IH0KICAgICBVQ2hh
ckRpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBhdEVuZCgpID8gVV9PVEhFUl9O
RVVUUkFMIDogdV9jaGFyRGlyZWN0aW9uKGN1cnJlbnQoKSk7IH0KIAotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKQorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0ICYmIG1fdGV4dFJ1biA9PSBvdGhlci5tX3RleHRS
dW47CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRCb3hJdGVyYXRvciYg
b3RoZXIpIHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9
PShvdGhlcik7IH0KIAogcHJpdmF0ZToKICAgICBjb25zdCBUZXh0UnVuKiBtX3RleHRSdW47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNv
bnZlcnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZm
ZXJDb252ZXJzaW9uLmNwcAppbmRleCBiYjJhYjg5OTBlNzFjOGIxNmFjMTMzZTIzODBhYTkyZmMz
YWUxZDhhLi4zYzgzMTQ1MmEyYWZjYTcyZjgyMWJhOWI0MDlkMWY1MWU5NzMyNWExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVy
Q29udmVyc2lvbi5jcHAKQEAgLTQ1LDE1ICs0NSwxNSBAQCBzdGF0aWMgaW5saW5lIHZJbWFnZV9D
R0ltYWdlRm9ybWF0IG1ha2VWSW1hZ2VDR0ltYWdlRm9ybWF0KGNvbnN0IFBpeGVsQnVmZmVyRm9y
bQogICAgICAgICBzd2l0Y2ggKGZvcm1hdC5waXhlbEZvcm1hdCkgewogICAgICAgICBjYXNlIFBp
eGVsRm9ybWF0OjpSR0JBODoKICAgICAgICAgICAgIGlmIChmb3JtYXQuYWxwaGFGb3JtYXQgPT0g
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3R1cGxlKDh1LCAzMnUsIGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnIHwg
a0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3R1cGxlKDh1LCAzMnUsIHN0YXRpY19jYXN0PENHQml0bWFwSW5mbz4oa0NHQml0
bWFwQnl0ZU9yZGVyMzJCaWcpIHwgc3RhdGljX2Nhc3Q8Q0dCaXRtYXBJbmZvPihrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKDh1LCAzMnUsIGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmln
IHwga0NHSW1hZ2VBbHBoYUxhc3QpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dHVwbGUoOHUsIDMydSwgc3RhdGljX2Nhc3Q8Q0dCaXRtYXBJbmZvPihrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkJpZykgfCBzdGF0aWNfY2FzdDxDR0JpdG1hcEluZm8+KGtDR0ltYWdlQWxwaGFMYXN0KSk7
CiAKICAgICAgICAgY2FzZSBQaXhlbEZvcm1hdDo6QkdSQTg6CiAgICAgICAgICAgICBpZiAoZm9y
bWF0LmFscGhhRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSg4dSwgMzJ1LCBrQ0dCaXRt
YXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoOHUsIDMydSwgc3RhdGljX2Nh
c3Q8Q0dCaXRtYXBJbmZvPihrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSkgfCBzdGF0aWNfY2Fz
dDxDR0JpdG1hcEluZm8+KGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKDh1LCAz
MnUsIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYUZpcnN0KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKDh1LCAzMnUsIHN0YXRpY19jYXN0
PENHQml0bWFwSW5mbz4oa0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHwgc3RhdGljX2Nhc3Q8
Q0dCaXRtYXBJbmZvPihrQ0dJbWFnZUFscGhhRmlyc3QpKTsKIAogICAgICAgICBjYXNlIFBpeGVs
Rm9ybWF0OjpSR0IxMDoKICAgICAgICAgY2FzZSBQaXhlbEZvcm1hdDo6UkdCMTBBODoKQEAgLTYz
LDcgKzYzLDcgQEAgc3RhdGljIGlubGluZSB2SW1hZ2VfQ0dJbWFnZUZvcm1hdCBtYWtlVkltYWdl
Q0dJbWFnZUZvcm1hdChjb25zdCBQaXhlbEJ1ZmZlckZvcm0KICAgICAgICAgLy8gV2UgY3VycmVu
dGx5IG9ubHkgc3VwcG9ydCA4IGJpdCBwaXhlbCBmb3JtYXRzIGZvciB0aGVzZSBjb252ZXJzaW9u
cy4KIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV90dXBsZSg4dSwgMzJ1LCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdl
QWxwaGFGaXJzdCk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoOHUsIDMydSwgc3Rh
dGljX2Nhc3Q8Q0dCaXRtYXBJbmZvPihrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSkgfCBzdGF0
aWNfY2FzdDxDR0JpdG1hcEluZm8+KGtDR0ltYWdlQWxwaGFGaXJzdCkpOwogICAgIH0oZm9ybWF0
KTsKIAogICAgIHZJbWFnZV9DR0ltYWdlRm9ybWF0IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5j
cHAKaW5kZXggYWY0YzE3ZDUxZmE1OWY0Njg4ZGY0Mzk2NTM1MThmNWNhMGRhYWYyMi4uOWEzODQ4
ZDkyMjVkMDllNTcwZmFhMDA4MzAwNzIzM2NmZWY2OGNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5j
cHAKQEAgLTM2MCw3ICszNjAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgICAgICAv
LyBhbHBoYSBjaGFubmVsLiBDcmVhdGlvbiBvZiBhIGJpdG1hcCBjb250ZXh0IHdpdGggYW4gYWxw
aGEgY2hhbm5lbAogICAgICAgICAvLyBkb2Vzbid0IHNlZW0gdG8gd29yayB1bmxlc3MgaXQncyBw
cmVtdWx0aXBsaWVkLgogICAgICAgICBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENv
bnRleHRDcmVhdGUoMCwgbV9pbWFnZVdpZHRoLCBtX2ltYWdlSGVpZ2h0LCA4LCBtX2ltYWdlV2lk
dGggKiA0LAotICAgICAgICAgICAgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVBy
ZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOworICAgICAgICAg
ICAgc1JHQkNvbG9yU3BhY2VSZWYoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkRmlyc3QpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0JpdG1hcEJ5
dGVPcmRlcjMySG9zdCkpKTsKICAgICAgICAgaWYgKCFiaXRtYXBDb250ZXh0KQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKaW5kZXggOGI4OWU3ZmMy
ODQ5YjUwNjllNDcxMjc5NzM3YjBiNjBjMTEyMjA4YS4uMWFjMWJhM2U0NmZmNTQ5NmM4ZDZiMDcy
NTBmMTZhOTBlOTBjNmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcApAQCAtMTAwLDcgKzEw
MCw3IEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5n
SWZOZWVkZWQoUmVmUHRyPE5hdGl2ZUltYWdlPiYmCiAgICAgaWYgKHJlc29sdXRpb25TY2FsZSA9
PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKICAg
ICAgICAgaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVj
ZXNzYXJ5KGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGJhY2tlbmRTaXplKSk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlKDAsIGxvZ2ljYWxTaXplLndpZHRoKCksIGxvZ2ljYWxTaXplLmhlaWdodCgpLCA4LCA0ICog
bG9naWNhbFNpemUud2lkdGgoKSwgY29sb3JTcGFjZUZvckJpdG1hcChpbWFnZS0+Y29sb3JTcGFj
ZSgpKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRl
cjMySG9zdCkpOworICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4
dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZS53aWR0aCgpLCBsb2dpY2FsU2l6ZS5oZWlnaHQoKSwgOCwg
NCAqIGxvZ2ljYWxTaXplLndpZHRoKCksIGNvbG9yU3BhY2VGb3JCaXRtYXAoaW1hZ2UtPmNvbG9y
U3BhY2UoKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGll
ZEZpcnN0KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Qp
KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dCbGVu
ZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgpLCBG
bG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSkpOwogICAgICAgICBGbG9h
dFNpemUgaW1hZ2VTaXplSW5Vc2VyU3BhY2UgPSBsb2dpY2FsU2l6ZTsKQEAgLTE5NCw3ICsxOTQs
NyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlDR0lt
YWdlRm9yRW5jb2RpbmcoQ0ZTdHJpbmdSZWYgZAogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICAgICAgYXV0byBpbWFnZVNpemUgPSBwaXhlbEJ1ZmZlci0+c2l6ZSgpOwotICAgICAg
ICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNp
emUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHBpeGVsQnVmZmVyLT5m
b3JtYXQoKS5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dCaXRtYXBCeXRlT3Jk
ZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgp
LCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAgICByZXR1cm4g
YWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0
KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHBpeGVsQnVmZmVyLT5mb3JtYXQoKS5j
b2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NH
Qml0bWFwQnl0ZU9yZGVyRGVmYXVsdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHSW1hZ2VB
bHBoYU5vbmVTa2lwTGFzdCksIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRl
cmluZ0ludGVudERlZmF1bHQpKTsKICAgICB9CiAKICAgICBpZiAocmVzb2x1dGlvblNjYWxlKCkg
PT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpIHsK
QEAgLTIwOCw3ICsyMDgsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQ6OmNvcHlDR0ltYWdlRm9yRW5jb2RpbmcoQ0ZTdHJpbmdSZWYgZAogICAgIGlmICghbmF0
aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gaW1hZ2UgPSBuYXRp
dmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dC
aXRtYXBDb250ZXh0Q3JlYXRlKDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUo
KS5oZWlnaHQoKSwgOCwgNCAqIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgY29sb3JTcGFjZUZvckJp
dG1hcChjb2xvclNwYWNlKCkpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NH
Qml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0Jp
dG1hcENvbnRleHRDcmVhdGUoMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgp
LmhlaWdodCgpLCA4LCA0ICogYmFja2VuZFNpemUoKS53aWR0aCgpLCBjb2xvclNwYWNlRm9yQml0
bWFwKGNvbG9yU3BhY2UoKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZEZpcnN0KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkhvc3QpKSk7CiAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtD
R0JsZW5kTW9kZUNvcHkpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwg
Q0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tlbmRTaXplKCkuaGVp
Z2h0KCkpKTsKICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFr
ZSgwLCAwLCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0KCkpLCBp
bWFnZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKaW5kZXggMDA1
YTdlZjM3M2NiOWM0MjEwYzM0OTEzZWJjZjQ0N2E4MjJmMjNmZi4uYmY0MjAwOTMyYzcxNGY0MWNm
MDAyZWM5ZmI3YTE1MzM1N2JjMjA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
LmNwcApAQCAtODEsNyArODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoYwogICAgIHNpemVf
dCBudW1CeXRlcyA9IGJhY2tlbmRTaXplLmhlaWdodCgpICogYnl0ZXNQZXJSb3c7CiAgICAgdmVy
aWZ5SW1hZ2VCdWZmZXJJc0JpZ0Vub3VnaChkYXRhLCBudW1CeXRlcyk7CiAKLSAgICBhdXRvIGNn
Q29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGRhdGEsIGJhY2tlbmRTaXpl
LndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCA4LCBieXRlc1BlclJvdywgcGFyYW1ldGVy
cy5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CisgICAgYXV0byBjZ0NvbnRl
eHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShkYXRhLCBiYWNrZW5kU2l6ZS53aWR0
aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgYnl0ZXNQZXJSb3csIHBhcmFtZXRlcnMuY29s
b3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0lt
YWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0Jp
dG1hcEJ5dGVPcmRlcjMySG9zdCkpKTsKICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKQEAgLTE0NSw3ICsxNDUsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IElt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eQogICAgICAgICBhdXRvIGJhY2tlbmRTaXplID0gdGhpcy0+YmFja2VuZFNpemUoKTsKICAgICAg
ICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKAogICAg
ICAgICAgICAgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIDMy
LCBieXRlc1BlclJvdygpLAotICAgICAgICAgICAgY29sb3JTcGFjZSgpLnBsYXRmb3JtQ29sb3JT
cGFjZSgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9y
ZGVyMzJIb3N0LCBtX2RhdGFQcm92aWRlci5nZXQoKSwKKyAgICAgICAgICAgIGNvbG9yU3BhY2Uo
KS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkRmlyc3QpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0JpdG1hcEJ5
dGVPcmRlcjMySG9zdCksIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAgICAgICAgMCwgdHJ1
ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGls
aXRpZXNDRy5jcHAKaW5kZXggYWVkZGRmMDlhMTEyNDM2N2Q1MWEwNGUwMzcwMmUxOTgyYmQwOTA1
Yi4uZjk1ZGU5NGY5Yzg3NDc0N2I2MzU3ODFiNmNlMmMyNmFmNjQ2ZGYwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXND
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJVdGlsaXRpZXNDRy5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMgYm9vbCBlbmNvZGUo
Y29uc3QgUGl4ZWxCdWZmZXImIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpv
cHRpbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IHNvdXJj
ZS5zaXplKCk7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNp
emUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0
aCgpLCBzb3VyY2UuZm9ybWF0KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NH
Qml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGRhdGFBbHBoYUluZm8sIGRhdGFQcm92aWRlci5nZXQo
KSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKKyAgICBhdXRvIGltYWdl
ID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVp
Z2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHNvdXJjZS5mb3JtYXQoKS5jb2xv
clNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHQml0
bWFwQnl0ZU9yZGVyRGVmYXVsdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGF0YUFscGhhSW5m
byksIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1
bHQpKTsKIAogICAgIHJldHVybiBlbmNvZGUoaW1hZ2UuZ2V0KCksIGRlc3RpbmF0aW9uVVRJLmdl
dCgpLCBxdWFsaXR5LCBmdW5jdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCmluZGV4IDg4MjRmZjkxN2EwYzdi
OGFmZDIwYmVlNzU1MTI4YWQ3MGQzYWUyMmIuLmFkZTQ5YWRhYzRmMjVkZTgyYzY1ODk1YmUzODRh
YWNmZTAyY2U1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL05hdGl2ZUltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCkBAIC01MCw3ICs1MCw3IEBAIENvbG9yIE5hdGl2ZUlt
YWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAogICAgICAgICByZXR1cm4gQ29sb3Io
KTsKIAogICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKLSAgICBhdXRvIGJpdG1h
cENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwg
c2l6ZW9mKHBpeGVsKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKKyAgICBhdXRvIGJpdG1hcENv
bnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwgc2l6
ZW9mKHBpeGVsKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NH
Qml0bWFwQnl0ZU9yZGVyMzJCaWcpKSk7CiAKICAgICBpZiAoIWJpdG1hcENvbnRleHQpCiAgICAg
ICAgIHJldHVybiBDb2xvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4IDAxMTE2NWNlMTFhYmNlNjc1YzRiNDdiZjkx
NWQ0YzgxZTZjZWU5OTUuLjdlMDA2ZWZkMmUzNjNlOTI5YWMyNDZjYTBjMTY2YjQwMzM4YzJiZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UubW0KQEAgLTI5OSw3ICsyOTksNyBAQCBDR0NvbnRleHRSZWYgSU9TdXJmYWNlOjplbnN1
cmVQbGF0Zm9ybUNvbnRleHQoY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKICAgICBpZiAo
bV9jZ0NvbnRleHQpCiAgICAgICAgIHJldHVybiBtX2NnQ29udGV4dC5nZXQoKTsKIAotICAgIENH
Qml0bWFwSW5mbyBiaXRtYXBJbmZvID0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8
IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdDsKKyAgICBDR0JpdG1hcEluZm8gYml0bWFwSW5mbyA9
IHN0YXRpY19jYXN0PENHQml0bWFwSW5mbz4oa0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJz
dCkgfCBzdGF0aWNfY2FzdDxDR0JpdG1hcEluZm8+KGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCk7
CiAKICAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IDg7CiAgICAgc2l6ZV90IGJpdHNQZXJQ
aXhlbCA9IDMyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcAppbmRleCA1ZmFhMzFmYjk4MjI5
NDQwMDVmYmY4ZGEzMWE5N2QwNmY0ZTgzZTA0Li5iMjYzNzY5Mjk1NDE1ZDM4MDNiMWIwY2JmNGFh
ZThkZjNmN2E4OWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcApAQCAtMTU4LDcgKzE1
OCw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOjpjcmVh
dGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihDVlBpeGVsCiAgICAgICAgIGJ1ZmZlciA9IGFkb3B0Q0Yo
b3V0cHV0QnVmZmVyKTsKICAgICB9CiAKLSAgICBDR0JpdG1hcEluZm8gYml0bWFwSW5mbyA9IGtD
R0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYUZpcnN0OworICAgIENHQml0
bWFwSW5mbyBiaXRtYXBJbmZvID0gc3RhdGljX2Nhc3Q8Q0dCaXRtYXBJbmZvPihrQ0dCaXRtYXBC
eXRlT3JkZXIzMkxpdHRsZSkgfCBzdGF0aWNfY2FzdDxDR0JpdG1hcEluZm8+KGtDR0ltYWdlQWxw
aGFGaXJzdCk7CiAgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVz
UGVyUm93KGJ1ZmZlci5nZXQoKSk7CiAgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBieXRlc1BlclJv
dyAqIGhlaWdodDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKaW5kZXgg
ZGMyNzllYzRmMGY4ZWNiMTYwMjU2NDg4NjgzOTNiOTViNWZlNDAzNC4uZGYwNjQwNmRjYWI2OGEy
OWFjMDI5NTY5MGEwYzllMzVmZTNlNjM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVyYXRvci5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICAgICAgY2xlYXJDdXJyZW50
SXRlbSgpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3Ro
ZXIpIHsgcmV0dXJuICZtX2Rpc3BsYXlMaXN0ID09ICZvdGhlci5tX2Rpc3BsYXlMaXN0ICYmIG1f
Y3Vyc29yID09IG90aGVyLm1fY3Vyc29yOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0
ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAmbV9kaXNwbGF5
TGlzdCA9PSAmb3RoZXIubV9kaXNwbGF5TGlzdCAmJiBtX2N1cnNvciA9PSBvdGhlci5tX2N1cnNv
cjsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgdm9pZCBvcGVyYXRvcisrKCkgeyBhZHZh
bmNlKCk7IH0KIAogICAgIHN0cnVjdCBWYWx1ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5o
CmluZGV4IDUwNTVjNWVkNDU2ZDEwZWFkY2RkZjEyYjkwMjQ4OWU5MjJjOTIwMzIuLjkyNWJkZjIy
NTFkMjZmYzkwZjc5MTgyZTQ0NTZhOTUwYTNhYzFlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFu
c2Zlci5oCkBAIC0zNyw4ICszNyw2IEBAIGVudW0gQ29tcG9uZW50VHJhbnNmZXJUeXBlIHsKIH07
CiAKIHN0cnVjdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHsKLSAgICBDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uKCkgPSBkZWZhdWx0OwotCiAgICAgQ29tcG9uZW50VHJhbnNmZXJUeXBlIHR5
cGUgeyBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTiB9OwogCiAgICAgZmxvYXQgc2xv
cGUgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmgK
aW5kZXggN2IwMWJhZmQ1MTM3ZTU5MGIxODU0Y2RkYjg2YzI3MTQzYjE2OWYzNi4uM2ZjNTYyYTBj
YmViMDhlYzc1ODc3YjkxN2ZkOTRhNDlmNDNlZmQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0
cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaApAQCAtNTIsNiArNTIsNyBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBpc1JlcHJlc2VudGFibGVJbjJEKCkgY29uc3QgZmluYWw7CiAKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24mIG90aGVyKSBjb25zdCB7
IHJldHVybiBvcGVyYXRvcj09KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiY+
KG90aGVyKSk7IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9u
JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0IG92ZXJyaWRlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5z
Zm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaAppbmRleCBhZWE2YjkxM2M3YTU4MjExNzBh
NDg5OGMzYzliNDY2OTVjNzI5MDAxLi42ZWM4OTdiNjA3YjE3N2Y3MDE2NjdkMTdkNzNiODA3ZmIx
OTA1NGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAg
LTU1LDYgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzSWRlbnRpdHkoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2EgPT0gMSAmJiBtX2IgPT0gMCAmJiBtX2MgPT0gMCAmJiBtX2QgPT0g
MSAmJiBtX2UgPT0gMCAmJiBtX2YgPT0gMDsgfQogICAgIGJvb2wgaXNBZmZlY3RlZEJ5VHJhbnNm
b3JtT3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIWlzSWRlbnRpdHkoKTsgfQogCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIG9wZXJhdG9yPT0oc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9uJj4ob3RoZXIpKTsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRTaXplJikgY29uc3Qgb3ZlcnJpZGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVy
c3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uaAppbmRleCA3
NDE3NTU2ODQ3NTE5YjVhODY3OGRiYjNlYjFiNmJhMzAwZWFlMDVjLi42MDM4N2UxZTk0ZTZmYjNj
MWEyY2M5ZTNiNjRlYmU0OGQ5NzAwOTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVj
dGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC01NCw2ICs1NCw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBpc0FmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAhaXNJZGVudGl0eSgpOyB9CiAgICAgYm9vbCBpc1JlcHJlc2VudGFibGVJbjJEKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQZXJz
cGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG9wZXJhdG9y
PT0oc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJj4ob3RoZXIpKTsgfQogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGZsb2F0VmFsdWUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVU
cmFuc2Zvcm1PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXggNTgyOWIyY2Y4ZjY3YTZh
NzBkMGEzODA1Y2E2ODg2YjFjMjczNmY3NC4uNDRjMDg3MjkzNjhhN2YyODhiZTVlNDNlNDAyMWFh
M2EwNjc5NjkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5o
CkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgeigpIGNvbnN0IHsgcmV0dXJu
IG1fejsgfQogICAgIGRvdWJsZSBhbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5nbGU7IH0KIAor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24mIG90aGVy
KSBjb25zdCB7IHJldHVybiBvcGVyYXRvcj09KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybU9w
ZXJhdGlvbiY+KG90aGVyKSk7IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3Jt
T3BlcmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBSZWY8VHJhbnNmb3JtT3BlcmF0aW9u
PiBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGNvbnN0IEJsZW5kaW5nQ29u
dGV4dCYsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2UpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9y
bU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oCmluZGV4IDdiNDdhNGM1M2NjN2U1ZTBkYzU1NjIz
MGNmYmMwZWU3NTNlMmUyYjkuLmFmYzA5Yjk0NTc4NmJhNjE3ODRkNmM5ZjMwMGUyYTY5MWMwNTM3
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1NjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTUyLDYg
KzUyLDcgQEAgcHVibGljOgogICAgIGRvdWJsZSB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9CiAg
ICAgZG91YmxlIHooKSBjb25zdCB7IHJldHVybiBtX3o7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG9w
ZXJhdG9yPT0oc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJj4ob3RoZXIpKTsg
fQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mKSBjb25zdCBm
aW5hbDsKIAogICAgIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbiogZnJvbSwgY29uc3QgQmxlbmRpbmdDb250ZXh0JiwgYm9vbCBibGVuZFRvSWRl
bnRpdHkgPSBmYWxzZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2tld1RyYW5zZm9ybU9wZXJhdGlv
bi5oCmluZGV4IDE2MTAzNTQ1NWE2YTM2ZTExZWRkYWZlNWYyNjllNjQ4OTA1Y2UyODkuLjdmMmYw
NjkxZGM1N2QwZWVkM2FiNDJiMTEyMjEyNjQ5OTc2NjcyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2tld1RyYW5zZm9ybU9wZXJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2tl
d1RyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC01MCw2ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBpc0lkZW50aXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbmdsZVggPT0gMCAmJiBt
X2FuZ2xlWSA9PSAwOyB9CiAgICAgYm9vbCBpc0FmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAhaXNJZGVudGl0eSgpOyB9CiAKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU2tld1RyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG9wZXJhdG9yPT0oc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJj4ob3RoZXIp
KTsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRTaXplJikgY29uc3Qgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCmluZGV4IDAwMGY0Yzc5ZWZlNGQ4ZWQzNGEy
MDU5M2YzY2VmYzdiMjdmYjhlODYuLmFiNmE3ZDRkMjMxMTA5MTRkMzMwMzIzNDUxMTNlZjMyYjM1
OGUxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24u
aApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzSWRlbnRpdHkoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAhZmxvYXRWYWx1ZUZvckxlbmd0aChtX3gsIDEpICYmICFmbG9hdFZh
bHVlRm9yTGVuZ3RoKG1feSwgMSkgJiYgIWZsb2F0VmFsdWVGb3JMZW5ndGgobV96LCAxKTsgfQog
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbiYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIG9wZXJhdG9yPT0oc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNm
b3JtT3BlcmF0aW9uJj4ob3RoZXIpKTsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFu
c2Zvcm1PcGVyYXRpb24mKSBjb25zdCBmaW5hbDsKIAogICAgIFJlZjxUcmFuc2Zvcm1PcGVyYXRp
b24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgY29uc3QgQmxlbmRpbmdD
b250ZXh0JiwgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBmYWxzZSkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5t
bQppbmRleCBlZmExMjcyY2ZlZGNkZDk4Njg1MTdlNzIzMzQ4ZmM5MzJkNTZiM2Q4Li4yNWZjZGE3
YTEwMTZlOTEzNmRmMmMwMzMyN2UwNWZhNGU5MzYxM2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KQEAgLTEz
Niw4ICsxMzYsOCBAQCBjb25zdCBTdHJpbmcmIFJlc291cmNlRXJyb3I6OmdldENGRXJyb3JEb21h
aW5DRk5ldHdvcmsoKSBjb25zdAogCiB2b2lkIFJlc291cmNlRXJyb3I6Om1hcFBsYXRmb3JtRXJy
b3IoKQogewotICAgIHN0YXRpY19hc3NlcnQoTlNVUkxFcnJvclRpbWVkT3V0ID09IGtDRlVSTEVy
cm9yVGltZWRPdXQsICJOU1VSTEVycm9yVGltZWRPdXQgbmVlZHMgdG8gZXF1YWwga0NGVVJMRXJy
b3JUaW1lZE91dCIpOwotICAgIHN0YXRpY19hc3NlcnQoTlNVUkxFcnJvckNhbmNlbGxlZCA9PSBr
Q0ZVUkxFcnJvckNhbmNlbGxlZCwgIk5TVVJMRXJyb3JDYW5jZWxsZWQgbmVlZHMgdG8gZXF1YWwg
a0NGVVJMRXJyb3JDYW5jZWxsZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PE5T
SW50ZWdlcj4oTlNVUkxFcnJvclRpbWVkT3V0KSA9PSBzdGF0aWNfY2FzdDxOU0ludGVnZXI+KGtD
RlVSTEVycm9yVGltZWRPdXQpLCAiTlNVUkxFcnJvclRpbWVkT3V0IG5lZWRzIHRvIGVxdWFsIGtD
RlVSTEVycm9yVGltZWRPdXQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PE5TSW50
ZWdlcj4oTlNVUkxFcnJvckNhbmNlbGxlZCkgPT0gc3RhdGljX2Nhc3Q8TlNJbnRlZ2VyPihrQ0ZV
UkxFcnJvckNhbmNlbGxlZCksICJOU1VSTEVycm9yQ2FuY2VsbGVkIG5lZWRzIHRvIGVxdWFsIGtD
RlVSTEVycm9yQ2FuY2VsbGVkIik7CiAKICAgICBpZiAoIW1fcGxhdGZvcm1FcnJvcikKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dhcFJlY3Rz
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2FwUmVjdHMuaAppbmRleCA3MGY3ZWEzZmI1
NmQ1YWRlY2QyYmUwZWFmMDg2NzA5NWVlNWIwZTMwLi43ZWM0OTNjZDE0ZWYxMmUyODk0OWQ4YTI4
ZGU0OTY5M2EzZmEyNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2Fw
UmVjdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2FwUmVjdHMuaApAQCAtNDQs
MTEgKzQ0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR2FwUmVjdHMm
IG90aGVyKQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR2FwUmVjdHMmIG90aGVyKSBj
b25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9sZWZ0ID09IG90aGVyLmxlZnQo
KSAmJiBtX2NlbnRlciA9PSBvdGhlci5jZW50ZXIoKSAmJiBtX3JpZ2h0ID09IG90aGVyLnJpZ2h0
KCk7CiAgICAgICAgIH0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEdhcFJlY3RzJiBv
dGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEdhcFJlY3RzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIExheW91dFJlY3QgbV9sZWZ0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggMDVjOWE1YzMyMDEw
YWQxZjdlYmFkNjg3MmZkMmEzN2ZjYWYxNDZkOS4uNWRhOTFlZTBlYWI0ZmRmZjkyMWZjNjc4N2Fh
MjM0NGNkMWNmNGYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuY3BwCkBAIC01NjYsMTMgKzU2NiwxMyBAQCBFeGNlcHRpb25Pcjx2b2lkPiAgSW50ZXJuYWxT
ZXR0aW5nczo6c2V0U2hvdWxkRGVhY3RpdmF0ZUF1ZGlvU2Vzc2lvbihib29sIHNob3VsZAogICAg
IHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsU2V0dGluZ3M6OnNl
dFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkoYm9vbCByZXF1aXJlcykK
K0V4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsU2V0dGluZ3M6OnNldFNob3VsZE1vY2tCb2xkU3lz
dGVtRm9udEZvckFjY2Vzc2liaWxpdHkoYm9vbCBzaG91bGQpCiB7CiAgICAgaWYgKCFtX3BhZ2Up
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKLSAgICBS
ZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNj
ZXNzaWJpbGl0eShyZXF1aXJlcyk7CisgICAgUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnNldFNo
b3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkoc2hvdWxkKTsKICAgICAvLyBG
SVhNRTogQ2FsbCBzZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KCkg
b24gYWxsIHdvcmtlcnMuCi0gICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuc2V0U2hv
dWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eShyZXF1aXJlcyk7CisgICAgRm9u
dENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9y
QWNjZXNzaWJpbGl0eShzaG91bGQpOwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJl
YWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFGb3JtYXRSZWFkZXIuY3BwCmluZGV4IDg4Mjg0ZmFiZmM4Y2ZlZWM4MDc2NjVhZWIxNTRkNGQ3
YjUzYTVmMzQuLjljZGVkOTY5MzUxNWNiZGI5MjVmNTk1NGExNmY0YmFmMDY3YTMxNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZv
cm1hdFJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgTWVk
aWFGb3JtYXRSZWFkZXI6OmRpZFBhcnNlVHJhY2tzKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6
OkluaXRpYWxpemF0aW9uCiAgICAgaWYgKGVycm9yQ29kZSkKICAgICAgICAgRVJST1JfTE9HX0lG
X1BPU1NJQkxFKExPR0lERU5USUZJRVIsIGVycm9yQ29kZSk7CiAKLSAgICBtX3BhcnNlVHJhY2tz
U3RhdHVzID0gZXJyb3JDb2RlID8ga01UUGx1Z2luRm9ybWF0UmVhZGVyRXJyb3JfUGFyc2luZ0Zh
aWx1cmUgOiBub0VycjsKKyAgICBtX3BhcnNlVHJhY2tzU3RhdHVzID0gZXJyb3JDb2RlID8gc3Rh
dGljX2Nhc3Q8T1NTdGF0dXM+KGtNVFBsdWdpbkZvcm1hdFJlYWRlckVycm9yX1BhcnNpbmdGYWls
dXJlKSA6IG5vRXJyOwogICAgIG1fZHVyYXRpb24gPSBXVEZNb3ZlKHNlZ21lbnQuZHVyYXRpb24p
OwogCiAgICAgZm9yIChhdXRvJiB2aWRlb1RyYWNrIDogc2VnbWVudC52aWRlb1RyYWNrcykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01l
ZGlhU2FtcGxlQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAKaW5kZXggNWUzOTgyZDAyYmY3MTczZmRiNTBi
MGQ2NjQzOWFlMDVhYjU5MTgzMS4uNmFhMDIzYzY2NTYzNDMyNWI3NDhiYjNkNzU1ODYwZDA5NDdl
MGI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwCkBAIC0yNDAsNyArMjQwLDcg
QEAgT1NTdGF0dXMgTWVkaWFTYW1wbGVDdXJzb3I6OmdldFNhbXBsZU1hcChGdW5jdGlvbiYmIGZ1
bmN0aW9uKSBjb25zdAogICAgIG1fdHJhY2tSZWFkZXItPndhaXRGb3JTYW1wbGUoWyZdKFNhbXBs
ZU1hcCYgc2FtcGxlcywgYm9vbCBoYXNBbGxTYW1wbGVzKSB7CiAgICAgICAgIGlmICghc2FtcGxl
cy5zaXplKCkpCiAgICAgICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInRyYWNrICIs
IG1fdHJhY2tSZWFkZXItPnRyYWNrSUQoKSwgIiBmaW5pc2hlZCBwYXJzaW5nIHdpdGggbm8gc2Ft
cGxlcy4iKTsKLSAgICAgICAgc3RhdHVzID0gc2FtcGxlcy5zaXplKCkgPyBmdW5jdGlvbihzYW1w
bGVzLCBoYXNBbGxTYW1wbGVzKSA6IGtNVFBsdWdpblNhbXBsZUN1cnNvckVycm9yX05vU2FtcGxl
czsKKyAgICAgICAgc3RhdHVzID0gc2FtcGxlcy5zaXplKCkgPyBmdW5jdGlvbihzYW1wbGVzLCBo
YXNBbGxTYW1wbGVzKSA6IHN0YXRpY19jYXN0PE9TU3RhdHVzPihrTVRQbHVnaW5TYW1wbGVDdXJz
b3JFcnJvcl9Ob1NhbXBsZXMpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9KTsKICAgICBy
ZXR1cm4gc3RhdHVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcmVmZXJlbmNlcy5tbQppbmRleCA2ZWVlOThkNjI3YmNhYmFlYTQwMDRjMjM4OTA0ZDRkZTli
NTA0OWNjLi5kMGVlMWY5Njc4ZDU4YjA1ZmNlOWQ1NGExNTg3ODRlZjdlYzY5YzMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQpA
QCAtMTUxOSw5ICsxNTE5LDkgQEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlua0JlaGF2aW9y
IHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICAgICByZXR1cm4g
X3ByZWZlcmVuY2VzLT5yZXF1aXJlc1BhZ2VWaXNpYmlsaXR5VG9QbGF5QXVkaW8oKTsKIH0KIAot
LSAodm9pZClfc2V0UmVxdWlyZXNQYWdlVmlzaWJpbGl0eVRvUGxheUF1ZGlvOihCT09MKXJlcXVp
cmVzCistICh2b2lkKV9zZXRSZXF1aXJlc1BhZ2VWaXNpYmlsaXR5VG9QbGF5QXVkaW86KEJPT0wp
cmVxdWlyZXNWaXNpYmlsaXR5CiB7Ci0gICAgX3ByZWZlcmVuY2VzLT5zZXRSZXF1aXJlc1BhZ2VW
aXNpYmlsaXR5VG9QbGF5QXVkaW8ocmVxdWlyZXMpOworICAgIF9wcmVmZXJlbmNlcy0+c2V0UmVx
dWlyZXNQYWdlVmlzaWJpbGl0eVRvUGxheUF1ZGlvKHJlcXVpcmVzVmlzaWJpbGl0eSk7CiB9CiAK
IC0gKEJPT0wpX2ZpbGVTeXN0ZW1BY2Nlc3NFbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24ubW0KaW5kZXggNTIzNjY0MTA2MGFlYmJjNGVmM2Q1MTZkNjhlOGZhZTE2
ODc2ZGIwZC4uOWNmNzk1YzVjMWIyNTcwZGEyODM3MGQ0ZTJkMDQ4NjNiM2RhODA5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQpAQCAtNDgxLDkgKzQ4MSw5IEBA
IHN0YXRpYyB2b2lkIGNoZWNrVVJMQXJndW1lbnQoTlNVUkwgKnVybCkKICAgICByZXR1cm4gX2Nv
bmZpZ3VyYXRpb24tPnJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb24oKTsKIH0KIAot
LSAodm9pZClzZXRSZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uOihCT09MKXJlcXVp
cmVzCistICh2b2lkKXNldFJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb246KEJPT0wp
cmVxdWlyZXNTZWN1cmVQcm94eQogewotICAgIF9jb25maWd1cmF0aW9uLT5zZXRSZXF1aXJlc1Nl
Y3VyZUhUVFBTUHJveHlDb25uZWN0aW9uKHJlcXVpcmVzKTsKKyAgICBfY29uZmlndXJhdGlvbi0+
c2V0UmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbihyZXF1aXJlc1NlY3VyZVByb3h5
KTsKIH0KIAogLSAoQk9PTClzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRl
c3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4IDNlODg1Mzk1
NzY4OWU3MDljMmY2MjZjZGJkMzQ3NzE0MTQ0YzI3YzkuLmUyM2IyMzY5ZWQzYWY3ZWM2NzA4ZTBi
YzcxOTNkMmM0MDYwNjFkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aApAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZXZlbnRzU3lzdGVt
SFRUUFByb3h5QXV0aGVudGljYXRpb24oYm9vbCBwcmV2ZW50cykgeyBtX3ByZXZlbnRzU3lzdGVt
SFRUUFByb3h5QXV0aGVudGljYXRpb24gPSBwcmV2ZW50czsgfQogCiAgICAgYm9vbCByZXF1aXJl
c1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJlc1Nl
Y3VyZUhUVFBTUHJveHlDb25uZWN0aW9uOyB9OwotICAgIHZvaWQgc2V0UmVxdWlyZXNTZWN1cmVI
VFRQU1Byb3h5Q29ubmVjdGlvbihib29sIHJlcXVpcmVzKSB7IG1fcmVxdWlyZXNTZWN1cmVIVFRQ
U1Byb3h5Q29ubmVjdGlvbiA9IHJlcXVpcmVzOyB9CisgICAgdm9pZCBzZXRSZXF1aXJlc1NlY3Vy
ZUhUVFBTUHJveHlDb25uZWN0aW9uKGJvb2wgcmVxdWlyZXNTZWN1cmVQcm94eSkgeyBtX3JlcXVp
cmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb24gPSByZXF1aXJlc1NlY3VyZVByb3h5OyB9CiAK
ICAgICBib29sIHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JU
ZXN0aW5nOyB9CiAgICAgdm9pZCBzZXRTaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVh
ZEZvclRlc3RpbmcoYm9vbCBzaG91bGRSdW5Pbk1haW5UaHJlYWQpIHsgbV9zaG91bGRSdW5TZXJ2
aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3RpbmcgPSBzaG91bGRSdW5Pbk1haW5UaHJlYWQ7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGlzdC5oIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9MaXN0LmgKaW5kZXggNjM5ZWRjOWU0ZjZlY2IzM2EzZmZiY2U1MzEzMGQy
MmIyOThhYzJhNi4uMjVlMTFjNTk3MGU2NWQ2NjdiZTQxMzZkYjU4YmNhZjlhZWNkZjYzMyAxMDA2
NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MaXN0LmgKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9MaXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgTGlzdCB7CiAgICAgICAg
IFQqIG9wZXJhdG9yKigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX25vZGUpOyB9CiAgICAg
ICAgIFQqIG9wZXJhdG9yLT4oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9ub2RlKTsgfQog
Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJu
IG1fbm9kZSAhPSBvdGhlci5tX25vZGU7IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9ub2RlICE9IG90aGVyLm1fbm9kZTsg
fQogCiAgICAgICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKICAgICAgICAgewpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDAwMWJjNGZkZDZjYWE1
OTZlYjZiNmZmYThiNzBjOTNlYzEzZTczNGQuLmU3Zjc5NmU1NDU1N2YzNWIzNzY0YTc5ZmM3MTBl
NWM0YTEwYjg1OGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0xMi0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFByZXBhcmUgZm9yIHRyYW5zaXRpb24g
dG8gQysrMjAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDAyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcDoKKyAgICAgICAgKGNy
ZWF0ZUJpdG1hcENvbnRleHQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4
cGVjdGVkLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQ
VVByb2Nlc3MubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLV2ViVmlld1NuYXBzaG90Lm1tOgorICAgICAgICAoVEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL1NuYXBzaG90Vmlh
UmVuZGVySW5Db250ZXh0Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6Y29sb3JBdFBvaW50IGNvbnN0KToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwOgorICAgICAgICAoV1RS
OjpjcmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZSk6CisKIDIwMjEtMTItMDggIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEtWTyB3b3JrIGZvciBXS1dlYnBh
Z2VQcmVmZXJlbmNlcy5fY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcAppbmRleCBiNGJmYWZiMTA0MGY3Njkx
MmJlMGVhNjBhYTUzN2U3YmEwZmE0NTkwLi5hMTM1NzNkMmUyMDk4NDhjMWY4YzZjY2YxZWNmMjQ5
ZjUzYjg2OGNhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBT
dXBwb3J0Q0cuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBv
cnRDRy5jcHAKQEAgLTEzNSw5ICsxMzUsOSBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRl
Qml0bWFwQ29udGV4dChzaXplX3QgcGl4ZWxzV2lkZSwgc2l6ZV90IHBpeGVsc0hpZ2gsCiAgICAg
CiAgICAgLy8gQ3JlYXRpbmcgdGhpcyBiaXRtYXAgaW4gdGhlIGRldmljZSBjb2xvciBzcGFjZSBw
cmV2ZW50cyBhbnkgY29sb3IgY29udmVyc2lvbiB3aGVuIHRoZSBpbWFnZSBvZiB0aGUgd2ViIHZp
ZXcgaXMgZHJhd24gaW50byBpdC4KICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xv
clNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7Ci0gICAgYXV0
byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoYnVmZmVyLCBwaXhlbHNX
aWRlLCBwaXhlbHNIaWdoLCA4LCByb3dCeXRlcywgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOworICAg
IGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJ1ZmZlciwgcGl4
ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNvbG9yU3BhY2UuZ2V0KCksIHN0YXRp
Y19jYXN0PHVpbnQzMl90PihrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSB8IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKSk7CiAgICAgaWYgKCFj
b250ZXh0KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRHVtcFJlbmRlclRyZWU6IENHQml0bWFw
Q29udGV4dENyZWF0ZSglcCwgJXp1LCAlenUsIDgsICV6dSwgJXAsIDB4JXgpIGZhaWxlZFxuIiwg
YnVmZmVyLCBwaXhlbHNIaWdoLCBwaXhlbHNXaWRlLCByb3dCeXRlcywgY29sb3JTcGFjZS5nZXQo
KSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMy
SG9zdCk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRHVtcFJlbmRlclRyZWU6IENHQml0bWFwQ29u
dGV4dENyZWF0ZSglcCwgJXp1LCAlenUsIDgsICV6dSwgJXAsIDB4JXgpIGZhaWxlZFxuIiwgYnVm
ZmVyLCBwaXhlbHNIaWdoLCBwaXhlbHNXaWRlLCByb3dCeXRlcywgY29sb3JTcGFjZS5nZXQoKSwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpIHwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOwogICAgICAg
ICBmcmVlKGJ1ZmZlcik7CiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhw
ZWN0ZWQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCmlu
ZGV4IDJhMDZmOGJhNWNhOWZlYjQ5MmEzNTIyYzVjNjU1MDEzOGQyMjM3ZTUuLjViYzBhYTY5ZGZl
ZTA5ZTAyZDYyMmIxN2Y2NTk1MGY1ZGU3ZWY5YTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9FeHBlY3RlZC5jcHAKQEAgLTI5MSwxMCArMjkxLDYgQEAgVEVTVChXVEZfRXhwZWN0
ZWQsIHZvaWQpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgTm9uQ29weWFibGUgewot
ICAgIE5vbkNvcHlhYmxlKE5vbkNvcHlhYmxlJiYpID0gZGVmYXVsdDsKLSAgICBOb25Db3B5YWJs
ZShjb25zdCBOb25Db3B5YWJsZSYpID0gZGVsZXRlOwotICAgIE5vbkNvcHlhYmxlJiBvcGVyYXRv
cj0oY29uc3QgTm9uQ29weWFibGUmKSA9IGRlbGV0ZTsKLSAgICBOb25Db3B5YWJsZSYgb3BlcmF0
b3I9KE5vbkNvcHlhYmxlJiYpID0gZGVmYXVsdDsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Tm9uQ29weWFibGU8VD4mIG90aGVyKSBjb25zdCB7IHJldHVybiB2YWx1ZSA9PSBvdGhlci52YWx1
ZTsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb25Db3B5YWJsZTxUPiYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIHZhbHVlICE9IG90aGVyLnZhbHVlOyB9CiAgICAgVCB2YWx1ZTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR1BVUHJvY2Vzcy5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR1BVUHJvY2Vzcy5tbQpp
bmRleCA0NGM4YThkZTk4MGNjYzEwMmIyMTdhYTg2OWFlYjhjOGU1NTBmNjJhLi4yZjEwNjk0NDRh
N2UxODcwY2QyZGE5MmJhZDc5Y2IyODljN2QwYjQ2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVByb2Nlc3MubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tCkBAIC01MTIsNyArNTEyLDcg
QEAgVEVTVChHUFVQcm9jZXNzLCBDYW52YXNCYXNpY0NyYXNoSGFuZGxpbmcpCiAgICAgICAgIE5T
SW50ZWdlciB2aWV3SGVpZ2h0SW5QaXhlbHMgPSB2aWV3SGVpZ2h0ICogYmFja2luZ1NjYWxlRmFj
dG9yOwogCiAgICAgICAgIHVpbnQ4X3QgKnJnYmEgPSAodW5zaWduZWQgY2hhciAqKWNhbGxvYyh2
aWV3V2lkdGhJblBpeGVscyAqIHZpZXdIZWlnaHRJblBpeGVscyAqIDQsIHNpemVvZih1bnNpZ25l
ZCBjaGFyKSk7Ci0gICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlKHJnYmEsIHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0SW5QaXhlbHMsIDgsIDQg
KiB2aWV3V2lkdGhJblBpeGVscywgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11
bHRpcGxpZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKKyAgICAgICAgYXV0byBj
b250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocmdiYSwgdmlld1dpZHRoSW5Q
aXhlbHMsIHZpZXdIZWlnaHRJblBpeGVscywgOCwgNCAqIHZpZXdXaWR0aEluUGl4ZWxzLCBjb2xv
clNwYWNlLmdldCgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRMYXN0KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3JkZXIzMkJp
ZykpKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1h
a2UoMCwgMCwgdmlld1dpZHRoSW5QaXhlbHMsIHZpZXdIZWlnaHRJblBpeGVscyksIGNnSW1hZ2Uu
Z2V0KCkpOwogCiAgICAgICAgIE5TSW50ZWdlciBwaXhlbEluZGV4ID0gZ2V0UGl4ZWxJbmRleCg1
MCwgNTAsIHZpZXdXaWR0aEluUGl4ZWxzKTsKQEAgLTU2Nyw3ICs1NjcsNyBAQCBURVNUKEdQVVBy
b2Nlc3MsIENhbnZhc0Jhc2ljQ3Jhc2hIYW5kbGluZykKICAgICAgICAgTlNJbnRlZ2VyIHZpZXdI
ZWlnaHRJblBpeGVscyA9IHZpZXdIZWlnaHQgKiBiYWNraW5nU2NhbGVGYWN0b3I7CiAKICAgICAg
ICAgdWludDhfdCAqcmdiYSA9ICh1bnNpZ25lZCBjaGFyICopY2FsbG9jKHZpZXdXaWR0aEluUGl4
ZWxzICogdmlld0hlaWdodEluUGl4ZWxzICogNCwgc2l6ZW9mKHVuc2lnbmVkIGNoYXIpKTsKLSAg
ICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocmdiYSwg
dmlld1dpZHRoSW5QaXhlbHMsIHZpZXdIZWlnaHRJblBpeGVscywgOCwgNCAqIHZpZXdXaWR0aElu
UGl4ZWxzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Qg
fCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOworICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZShyZ2JhLCB2aWV3V2lkdGhJblBpeGVscywgdmlld0hl
aWdodEluUGl4ZWxzLCA4LCA0ICogdmlld1dpZHRoSW5QaXhlbHMsIGNvbG9yU3BhY2UuZ2V0KCks
IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpIHwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSkpOwogICAgICAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCB2aWV3
V2lkdGhJblBpeGVscywgdmlld0hlaWdodEluUGl4ZWxzKSwgY2dJbWFnZS5nZXQoKSk7CiAKICAg
ICAgICAgTlNJbnRlZ2VyIHBpeGVsSW5kZXggPSBnZXRQaXhlbEluZGV4KDUwLCA1MCwgdmlld1dp
ZHRoSW5QaXhlbHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS1dlYlZpZXdTbmFwc2hvdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tXZWJWaWV3U25hcHNob3QubW0KaW5kZXggNTZmNWYxMTlhMTE3OGUyMGZj
ZmRhODA5OThlYTU3MWI2YzFhMWQzYS4uMjk1ZmIyZmZhOTJkOGVjZWY5ZDcyZWFjZmViNzY0N2Q1
YTQ0YWMyYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS1dlYlZpZXdTbmFwc2hvdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLV2ViVmlld1NuYXBzaG90Lm1tCkBAIC0yNzksNyArMjc5LDcgQEAgVEVTVChX
S1dlYlZpZXcsIFNuYXBzaG90SW1hZ2VCYXNlQ2FzZSkKICAgICAgICAgTlNJbnRlZ2VyIHZpZXdI
ZWlnaHRJblBpeGVscyA9IHZpZXdIZWlnaHQgKiBiYWNraW5nU2NhbGVGYWN0b3I7CiAKICAgICAg
ICAgdWludDhfdCAqcmdiYSA9ICh1bnNpZ25lZCBjaGFyICopY2FsbG9jKHZpZXdXaWR0aEluUGl4
ZWxzICogdmlld0hlaWdodEluUGl4ZWxzICogNCwgc2l6ZW9mKHVuc2lnbmVkIGNoYXIpKTsKLSAg
ICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocmdiYSwg
dmlld1dpZHRoSW5QaXhlbHMsIHZpZXdIZWlnaHRJblBpeGVscywgOCwgNCAqIHZpZXdXaWR0aElu
UGl4ZWxzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Qg
fCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOworICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZShyZ2JhLCB2aWV3V2lkdGhJblBpeGVscywgdmlld0hl
aWdodEluUGl4ZWxzLCA4LCA0ICogdmlld1dpZHRoSW5QaXhlbHMsIGNvbG9yU3BhY2UuZ2V0KCks
IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpIHwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSkpOwogICAgICAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCB2aWV3
V2lkdGhJblBpeGVscywgdmlld0hlaWdodEluUGl4ZWxzKSwgY2dJbWFnZS5nZXQoKSk7CiAKICAg
ICAgICAgTlNJbnRlZ2VyIHBpeGVsSW5kZXggPSBnZXRQaXhlbEluZGV4KDAsIDAsIHZpZXdXaWR0
aEluUGl4ZWxzKTsKQEAgLTQyNSw3ICs0MjUsNyBAQCBURVNUKFdLV2ViVmlldywgU25hcHNob3RJ
bWFnZUxhcmdlQXN5bmNEZWNvZGluZykKICAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJl
Zj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwog
CiAgICAgICAgIHVpbnQ4X3QgKnJnYmEgPSAodW5zaWduZWQgY2hhciAqKWNhbGxvYyh2aWV3V2lk
dGggKiB2aWV3SGVpZ2h0ICogNCwgc2l6ZW9mKHVuc2lnbmVkIGNoYXIpKTsKLSAgICAgICAgYXV0
byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocmdiYSwgdmlld1dpZHRo
LCB2aWV3SGVpZ2h0LCA4LCA0ICogdmlld1dpZHRoLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOworICAg
ICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShyZ2JhLCB2
aWV3V2lkdGgsIHZpZXdIZWlnaHQsIDgsIDQgKiB2aWV3V2lkdGgsIGNvbG9yU3BhY2UuZ2V0KCks
IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpIHwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSkpOwogICAgICAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCB2aWV3
V2lkdGgsIHZpZXdIZWlnaHQpLCBjZ0ltYWdlLmdldCgpKTsKIAogICAgICAgICAvLyBUb3AtbGVm
dCBjb3JuZXIgb2YgdGhlIGRpdiAoMCwgMCwgMTAwLCAxMDApCkBAIC01MDAsNyArNTAwLDcgQEAg
VEVTVChXS1dlYlZpZXcsIFNuYXBzaG90QWZ0ZXJTY3JlZW5VcGRhdGVzKQogICAgICAgICBOU0lu
dGVnZXIgdmlld0hlaWdodEluUGl4ZWxzID0gdmlld0hlaWdodCAqIGJhY2tpbmdTY2FsZUZhY3Rv
cjsKICAgICAgICAgCiAgICAgICAgIHVpbnQ4X3QgKnJnYmEgPSAodW5zaWduZWQgY2hhciAqKWNh
bGxvYyh2aWV3V2lkdGhJblBpeGVscyAqIHZpZXdIZWlnaHRJblBpeGVscyAqIDQsIHNpemVvZih1
bnNpZ25lZCBjaGFyKSk7Ci0gICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKHJnYmEsIHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0SW5QaXhlbHMs
IDgsIDQgKiB2aWV3V2lkdGhJblBpeGVscywgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBo
YVByZW11bHRpcGxpZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKKyAgICAgICAg
YXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocmdiYSwgdmlld1dp
ZHRoSW5QaXhlbHMsIHZpZXdIZWlnaHRJblBpeGVscywgOCwgNCAqIHZpZXdXaWR0aEluUGl4ZWxz
LCBjb2xvclNwYWNlLmdldCgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHSW1hZ2VBbHBoYVBy
ZW11bHRpcGxpZWRMYXN0KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkJpZykpKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENH
UmVjdE1ha2UoMCwgMCwgdmlld1dpZHRoSW5QaXhlbHMsIHZpZXdIZWlnaHRJblBpeGVscyksIGNn
SW1hZ2UuZ2V0KCkpOwogICAgICAgICAKICAgICAgICAgTlNJbnRlZ2VyIHBpeGVsSW5kZXggPSBn
ZXRQaXhlbEluZGV4KDAsIDAsIHZpZXdXaWR0aEluUGl4ZWxzKTsKQEAgLTU2Myw3ICs1NjMsNyBA
QCBURVNUKFdLV2ViVmlldywgU25hcHNob3RXaXRob3V0QWZ0ZXJTY3JlZW5VcGRhdGVzKQogICAg
ICAgICBOU0ludGVnZXIgdmlld0hlaWdodEluUGl4ZWxzID0gdmlld0hlaWdodCAqIGJhY2tpbmdT
Y2FsZUZhY3RvcjsKICAgICAgICAgCiAgICAgICAgIHVpbnQ4X3QgKnJnYmEgPSAodW5zaWduZWQg
Y2hhciAqKWNhbGxvYyh2aWV3V2lkdGhJblBpeGVscyAqIHZpZXdIZWlnaHRJblBpeGVscyAqIDQs
IHNpemVvZih1bnNpZ25lZCBjaGFyKSk7Ci0gICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0Yo
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlKHJnYmEsIHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0
SW5QaXhlbHMsIDgsIDQgKiB2aWV3V2lkdGhJblBpeGVscywgY29sb3JTcGFjZS5nZXQoKSwga0NH
SW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsK
KyAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocmdi
YSwgdmlld1dpZHRoSW5QaXhlbHMsIHZpZXdIZWlnaHRJblBpeGVscywgOCwgNCAqIHZpZXdXaWR0
aEluUGl4ZWxzLCBjb2xvclNwYWNlLmdldCgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRt
YXBCeXRlT3JkZXIzMkJpZykpKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQu
Z2V0KCksIENHUmVjdE1ha2UoMCwgMCwgdmlld1dpZHRoSW5QaXhlbHMsIHZpZXdIZWlnaHRJblBp
eGVscyksIGNnSW1hZ2UuZ2V0KCkpOwogCiAgICAgICAgIE5TSW50ZWdlciBwaXhlbEluZGV4ID0g
Z2V0UGl4ZWxJbmRleCgwLCAwLCB2aWV3V2lkdGhJblBpeGVscyk7CkBAIC02MjEsNyArNjIxLDcg
QEAgVEVTVChXS1dlYlZpZXcsIFNuYXBzaG90V2ViR0wpCiAgICAgICAgIE5TSW50ZWdlciB2aWV3
SGVpZ2h0SW5QaXhlbHMgPSB2aWV3SGVpZ2h0ICogYmFja2luZ1NjYWxlRmFjdG9yOwogCiAgICAg
ICAgIHVpbnQ4X3QgKnJnYmEgPSAodW5zaWduZWQgY2hhciAqKWNhbGxvYyh2aWV3V2lkdGhJblBp
eGVscyAqIHZpZXdIZWlnaHRJblBpeGVscyAqIDQsIHNpemVvZih1bnNpZ25lZCBjaGFyKSk7Ci0g
ICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHJnYmEs
IHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0SW5QaXhlbHMsIDgsIDQgKiB2aWV3V2lkdGhJ
blBpeGVscywgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0
IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKKyAgICAgICAgYXV0byBjb250ZXh0ID0gYWRv
cHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocmdiYSwgdmlld1dpZHRoSW5QaXhlbHMsIHZpZXdI
ZWlnaHRJblBpeGVscywgOCwgNCAqIHZpZXdXaWR0aEluUGl4ZWxzLCBjb2xvclNwYWNlLmdldCgp
LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSB8
IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpKTsKICAgICAg
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgdmll
d1dpZHRoSW5QaXhlbHMsIHZpZXdIZWlnaHRJblBpeGVscyksIGNnSW1hZ2UuZ2V0KCkpOwogCiAg
ICAgICAgIE5TSW50ZWdlciBwaXhlbEluZGV4ID0gZ2V0UGl4ZWxJbmRleCgwLCAwLCB2aWV3V2lk
dGhJblBpeGVscyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dExlZ2FjeS9pb3MvU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQu
bW0KaW5kZXggZGE5MDE4MzkwNDg2Y2VlMWY2MDQwOTc5ODZhMzYyNTNlMjU4NTAzMi4uNzQyMGIz
NjhlODAxNTVmZWEwZDA4YWE5MDExYjkxNmRhZTA3ZTc5NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL1NuYXBzaG90VmlhUmVuZGVySW5Db250
ZXh0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy9T
bmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbQpAQCAtODgsNyArODgsNyBAQCBURVNUKFdlYktp
dExlZ2FjeSwgUmVuZGVySW5Db250ZXh0U25hcHNob3QpCiAgICAgdW5zaWduZWQgY2hhciogcGl4
ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY2FsbG9jKHdpZHRoICogaGVp
Z2h0LCA0KSk7CiAgICAgCiAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFj
ZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAgIGF1dG8gY29u
dGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsQnVmZmVyLCB3aWR0aCwg
aGVpZ2h0LCA4LCA0ICogd2lkdGgsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7CisgICAgYXV0byBjb250
ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWxCdWZmZXIsIHdpZHRoLCBo
ZWlnaHQsIDgsIDQgKiB3aWR0aCwgY29sb3JTcGFjZS5nZXQoKSwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oa0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKSk7CiAgICAgCiAgICAgLy8gRmxpcCB0aGUgY29u
dGV4dAogICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQuZ2V0KCksIDEsIC0xKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW0KaW5kZXggNTBlMWNmODBj
OGFiYWQ4YWE1NzVmZDg0MDgwZTdkMTA5YjRhZWQxYi4uOTI0N2JkZTRjOGQ2YjA4ODU3MjYyYjNh
ZTNlN2ViZTc0ZTZjMmM0YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0UERGRG9jdW1lbnQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERG
RG9jdW1lbnQubW0KQEAgLTEzMCw3ICsxMzAsNyBAQCBXZWJDb3JlOjpDb2xvciBUZXN0UERGUGFn
ZTo6Y29sb3JBdFBvaW50KGludCB4LCBpbnQgeSkgY29uc3QKIHsKICAgICBhdXRvIGJvdW5kc1Jl
Y3QgPSBib3VuZHMoKTsKICAgICBhdXRvIGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFj
ZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7Ci0gICAgYXV0byBjb250ZXh0ID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoTlVMTCwgYm91bmRzUmVjdC5zaXplLndpZHRo
LCBib3VuZHNSZWN0LnNpemUuaGVpZ2h0LCA4LCAwLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOworICAg
IGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKE5VTEwsIGJvdW5k
c1JlY3Quc2l6ZS53aWR0aCwgYm91bmRzUmVjdC5zaXplLmhlaWdodCwgOCwgMCwgY29sb3JTcGFj
ZS5nZXQoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVk
TGFzdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKSk7
CiAKICAgICBhdXRvIGNnUGFnZSA9IG1fcGFnZS5nZXQoKS5wYWdlUmVmOwogICAgIENHQ29udGV4
dERyYXdQREZQYWdlV2l0aEFubm90YXRpb25zKGNvbnRleHQuZ2V0KCksIGNnUGFnZSwgbnVsbHB0
cik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9u
Q0cuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcApp
bmRleCAzNjkzNDk0ZTBlYTdhZTE4MmQyZWI2YTg2OTI3NWUwM2ZjNTliYzkwLi4zNTljY2JhNTM0
YWY2MTgzM2ZlZTU5OGEwNjc1M2Y2YzI4ZDIyYzIxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIFJl
dGFpblB0cjxDR0NvbnRleHRSZWY+IGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdlKENHSW1hZ2VS
ZWYgaW1hZ2UpCiAKICAgICAvLyBDcmVhdGluZyB0aGlzIGJpdG1hcCBpbiB0aGUgZGV2aWNlIGNv
bG9yIHNwYWNlIHNob3VsZCBwcmV2ZW50IGFueSBjb2xvciBjb252ZXJzaW9uIHdoZW4gdGhlIGlt
YWdlIG9mIHRoZSB3ZWIgdmlldyBpcyBkcmF3biBpbnRvIGl0LgogICAgIGF1dG8gY29sb3JTcGFj
ZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAgIGF1dG8gY29u
dGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIHBpeGVsc1dpZGUsIHBpeGVs
c0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CisgICAgYXV0byBjb250
ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgcGl4ZWxzV2lkZSwgcGl4ZWxz
SGlnaCwgOCwgcm93Qnl0ZXMsIGNvbG9yU3BhY2UuZ2V0KCksIHN0YXRpY19jYXN0PHVpbnQzMl90
PihrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90
PihrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKSk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446455</attachid>
            <date>2021-12-08 16:40:28 -0800</date>
            <delta_ts>2021-12-09 15:11:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234022-20211208164027.patch</filename>
            <type>text/plain</type>
            <size>89477</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDIxLTEyLTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUHJlcGFyZSBmb3IgdHJhbnNpdGlvbiB0byBDKysyMAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MDIyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9TdXBlclNhbXBs
ZXIuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oOgorICAgICAgICAqIGhl
YXAvR0NTZWdtZW50ZWRBcnJheS5oOgorICAgICAgICAoSlNDOjpHQ1NlZ21lbnRlZEFycmF5SXRl
cmF0b3I6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpHQ1NlZ21lbnRlZEFycmF5
SXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoSlNDOjpHQ1NlZ21lbnRlZEFy
cmF5SXRlcmF0b3I6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHQ1NlZ21l
bnRlZEFycmF5SXRlcmF0b3I6Om9wZXJhdG9yIT0pOiBEZWxldGVkLgorICAgICAgICAqIGppdC9S
ZWdpc3RlclNldC5oOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6aXRlcmF0b3I6Om9wZXJh
dG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6aXRlcmF0b3I6Om9wZXJh
dG9yIT0gY29uc3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6aXRlcmF0b3I6Om9wZXJh
dG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6aXRlcmF0b3I6Om9w
ZXJhdG9yIT0pOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAg
KEpTQzo6U2NvcGVSZWY6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpTY29wZVJl
Zjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChKU0M6OlNjb3BlUmVmOjpvcGVyYXRvcj09
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U2NvcGVSZWY6Om9wZXJhdG9yIT0pOiBEZWxldGVk
LgorICAgICAgICAqIHBhcnNlci9QYXJzZXJUb2tlbnMuaDoKKyAgICAgICAgKiBydW50aW1lL0dl
bmVyaWNPZmZzZXQuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY09mZnNldDo6b3BlcmF0b3I9PSBj
b25zdCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNPZmZzZXQ6Om9wZXJhdG9yIT0gY29uc3QpOgor
ICAgICAgICAoSlNDOjpHZW5lcmljT2Zmc2V0OjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAo
SlNDOjpHZW5lcmljT2Zmc2V0OjpvcGVyYXRvcj4gY29uc3QpOgorICAgICAgICAoSlNDOjpHZW5l
cmljT2Zmc2V0OjpvcGVyYXRvcjw9IGNvbnN0KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY09mZnNl
dDo6b3BlcmF0b3I+PSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmg6
CisKIDIwMjEtMTItMDggIEFzdW11IFRha2lrYXdhICA8YXN1bXVAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBTdXBwb3J0IFdlYkFzc2VtYmx5Lk1lbW9yeSBpbXBvcnRzIGluIFdhc20vRVNNIG1vZHVs
ZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1w
bGVyLmNwcAkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N1cGVyU2FtcGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLXZvbGF0aWxlIHVpbnQzMl90IGdfc3VwZXJTYW1wbGVyQ291bnQ7
Ci12b2xhdGlsZSBib29sIGdfc3VwZXJTYW1wbGVyRW5hYmxlZDsKK3N0ZDo6YXRvbWljPHVpbnQz
Ml90PiBnX3N1cGVyU2FtcGxlckNvdW50Oworc3RkOjphdG9taWM8Ym9vbD4gZ19zdXBlclNhbXBs
ZXJFbmFibGVkOwogCiBzdGF0aWMgTG9jayBsb2NrOwogc3RhdGljIGRvdWJsZSBpbiBXVEZfR1VB
UkRFRF9CWV9MT0NLKGxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N1cGVyU2FtcGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdXBlclNhbXBsZXIuaAkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMSAr
MjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxhdG9taWM+CisKIG5hbWVzcGFj
ZSBKU0MgewogCiBjbGFzcyBNYWNyb0Fzc2VtYmxlcjsKIAotZXh0ZXJuIEpTX0VYUE9SVF9QUklW
QVRFIHZvbGF0aWxlIHVpbnQzMl90IGdfc3VwZXJTYW1wbGVyQ291bnQ7CitleHRlcm4gSlNfRVhQ
T1JUX1BSSVZBVEUgc3RkOjphdG9taWM8dWludDMyX3Q+IGdfc3VwZXJTYW1wbGVyQ291bnQ7CiAK
IHZvaWQgaW5pdGlhbGl6ZVN1cGVyU2FtcGxlcigpOwogCkBAIC0zOSwxOSArNDEsMTkgQEAgcHVi
bGljOgogICAgICAgICA6IG1fZG9TYW1wbGUoZG9TYW1wbGUpCiAgICAgewogICAgICAgICBpZiAo
bV9kb1NhbXBsZSkKLSAgICAgICAgICAgIGdfc3VwZXJTYW1wbGVyQ291bnQrKzsKKyAgICAgICAg
ICAgICsrZ19zdXBlclNhbXBsZXJDb3VudDsKICAgICB9CiAKICAgICB+U3VwZXJTYW1wbGVyU2Nv
cGUoKQogICAgIHsKICAgICAgICAgaWYgKG1fZG9TYW1wbGUpCi0gICAgICAgICAgICBnX3N1cGVy
U2FtcGxlckNvdW50LS07CisgICAgICAgICAgICAtLWdfc3VwZXJTYW1wbGVyQ291bnQ7CiAgICAg
fQogCiAgICAgdm9pZCByZWxlYXNlKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RvU2FtcGxl
KTsKLSAgICAgICAgZ19zdXBlclNhbXBsZXJDb3VudC0tOworICAgICAgICAtLWdfc3VwZXJTYW1w
bGVyQ291bnQ7CiAgICAgICAgIG1fZG9TYW1wbGUgPSBmYWxzZTsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmgJKHJldmlzaW9u
IDI4Njc1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXku
aAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDEyICsxMjcsMTIgQEAgcHVibGljOgogICAgIFQmIG9w
ZXJhdG9yKigpIHsgcmV0dXJuIGdldCgpOyB9CiAgICAgVCYgb3BlcmF0b3ItPigpIHsgcmV0dXJu
IGdldCgpOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR0NTZWdtZW50ZWRBcnJheUl0
ZXJhdG9yJiBvdGhlcikKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR0NTZWdtZW50ZWRBcnJh
eUl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2N1cnJlbnRT
ZWdtZW50ID09IG90aGVyLm1fY3VycmVudFNlZ21lbnQgJiYgbV9jdXJyZW50T2Zmc2V0ID09IG90
aGVyLm1fY3VycmVudE9mZnNldDsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
R0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yJiBvdGhlcikKKyAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlZ2lzdGVyU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZWdpc3RlclNldC5oCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NiwxMiArMTY2
LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikKKyAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIG1faXRlciA9PSBvdGhlci5tX2l0ZXI7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3Ro
ZXIpCisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCShyZXZpc2lvbiAy
ODY3NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC05NTAsMTMgKzk1MCwxMyBAQCBzdHJ1Y3QgU2NvcGVSZWYgewogICAgICAgICBy
ZXR1cm4gU2NvcGVSZWYobV9zY29wZVN0YWNrLCBtX2luZGV4IC0gMSk7CiAgICAgfQogCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNjb3BlUmVmJiBvdGhlcikKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgU2NvcGVSZWYmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG90
aGVyLm1fc2NvcGVTdGFjayA9PSBtX3Njb3BlU3RhY2spOwogICAgICAgICByZXR1cm4gbV9pbmRl
eCA9PSBvdGhlci5tX2luZGV4OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
Y29wZVJlZiYgb3RoZXIpCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNjb3BlUmVmJiBvdGhl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgJKHJl
dmlzaW9uIDI4Njc1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9r
ZW5zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBJZGVudGlmaWVyOwogCi1lbnVtIHsKKyNkZWZpbmUgQklOQVJZX09QX1BSRUNFREVO
Q0UocHJlYykgKCgocHJlYykgPDwgQmluYXJ5T3BUb2tlblByZWNlZGVuY2VTaGlmdCkgfCAoKHBy
ZWMpIDw8IChCaW5hcnlPcFRva2VuUHJlY2VkZW5jZVNoaWZ0ICsgQmluYXJ5T3BUb2tlbkFsbG93
c0luUHJlY2VkZW5jZUFkZGl0aW9uYWxTaGlmdCkpKQorI2RlZmluZSBJTl9PUF9QUkVDRURFTkNF
KHByZWMpICgocHJlYykgPDwgKEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNlU2hpZnQgKyBCaW5hcnlP
cFRva2VuQWxsb3dzSW5QcmVjZWRlbmNlQWRkaXRpb25hbFNoaWZ0KSkKKworZW51bSBKU1Rva2Vu
VHlwZSB7CiAgICAgLy8gVG9rZW4gQml0ZmllbGQ6IDBiMDAwMDAwMDAwUlRFMDBJSUlJUFBQUEtV
WFhYWFhYWFgKICAgICAvLyBSID0gcmlnaHQtYXNzb2NpYXRpdmUgYml0CiAgICAgLy8gVCA9IHVu
dGVybWluYXRlZCBlcnJvciBmbGFnCkBAIC01NCwxMyArNTcsOSBAQCBlbnVtIHsKICAgICBCaW5h
cnlPcFRva2VuUHJlY2VkZW5jZU1hc2sgPSAxNSA8PCBCaW5hcnlPcFRva2VuUHJlY2VkZW5jZVNo
aWZ0LAogICAgIENhbkJlRXJyb3JUb2tlbkZsYWcgPSAxIDw8IChCaW5hcnlPcFRva2VuQWxsb3dz
SW5QcmVjZWRlbmNlQWRkaXRpb25hbFNoaWZ0ICsgQmluYXJ5T3BUb2tlblByZWNlZGVuY2VTaGlm
dCArIDYpLAogICAgIFVudGVybWluYXRlZENhbkJlRXJyb3JUb2tlbkZsYWcgPSBDYW5CZUVycm9y
VG9rZW5GbGFnIDw8IDEsCi0gICAgUmlnaHRBc3NvY2lhdGl2ZUJpbmFyeU9wVG9rZW5GbGFnID0g
VW50ZXJtaW5hdGVkQ2FuQmVFcnJvclRva2VuRmxhZyA8PCAxCi19OworICAgIFJpZ2h0QXNzb2Np
YXRpdmVCaW5hcnlPcFRva2VuRmxhZyA9IFVudGVybWluYXRlZENhbkJlRXJyb3JUb2tlbkZsYWcg
PDwgMSwKIAotI2RlZmluZSBCSU5BUllfT1BfUFJFQ0VERU5DRShwcmVjKSAoKChwcmVjKSA8PCBC
aW5hcnlPcFRva2VuUHJlY2VkZW5jZVNoaWZ0KSB8ICgocHJlYykgPDwgKEJpbmFyeU9wVG9rZW5Q
cmVjZWRlbmNlU2hpZnQgKyBCaW5hcnlPcFRva2VuQWxsb3dzSW5QcmVjZWRlbmNlQWRkaXRpb25h
bFNoaWZ0KSkpCi0jZGVmaW5lIElOX09QX1BSRUNFREVOQ0UocHJlYykgKChwcmVjKSA8PCAoQmlu
YXJ5T3BUb2tlblByZWNlZGVuY2VTaGlmdCArIEJpbmFyeU9wVG9rZW5BbGxvd3NJblByZWNlZGVu
Y2VBZGRpdGlvbmFsU2hpZnQpKQogCi1lbnVtIEpTVG9rZW5UeXBlIHsKICAgICBOVUxMVE9LRU4g
PSBLZXl3b3JkVG9rZW5GbGFnLAogICAgIFRSVUVUT0tFTiwKICAgICBGQUxTRVRPS0VOLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY09mZnNldC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNPZmZzZXQuaAkocmV2
aXNpb24gMjg2NzUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY09m
ZnNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwyOSArNjAsMjkgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbV9vZmZzZXQ7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBUJiBvdGhlcikgY29uc3QKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR2VuZXJpY09mZnNl
dCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9vZmZzZXQgPT0gb3RoZXIu
b2Zmc2V0VW5jaGVja2VkKCk7CisgICAgICAgIHJldHVybiBtX29mZnNldCA9PSBvdGhlci5tX29m
ZnNldDsKICAgICB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIG90aGVyKSBjb25zdAor
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBHZW5lcmljT2Zmc2V0JiBvdGhlcikgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX29mZnNldCAhPSBvdGhlci5vZmZzZXRVbmNoZWNrZWQoKTsK
KyAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ICE9IG90aGVyLm1fb2Zmc2V0OwogICAgIH0KLSAgICBi
b29sIG9wZXJhdG9yPChjb25zdCBUJiBvdGhlcikgY29uc3QKKyAgICBib29sIG9wZXJhdG9yPChj
b25zdCBHZW5lcmljT2Zmc2V0JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBt
X29mZnNldCA8IG90aGVyLm9mZnNldFVuY2hlY2tlZCgpOworICAgICAgICByZXR1cm4gbV9vZmZz
ZXQgPCBvdGhlci5tX29mZnNldDsKICAgICB9Ci0gICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgVCYg
b3RoZXIpIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgR2VuZXJpY09mZnNldCYgb3Ro
ZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9vZmZzZXQgPiBvdGhlci5vZmZzZXRV
bmNoZWNrZWQoKTsKKyAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID4gb3RoZXIubV9vZmZzZXQ7CiAg
ICAgfQotICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBUJiBvdGhlcikgY29uc3QKKyAgICBib29s
IG9wZXJhdG9yPD0oY29uc3QgR2VuZXJpY09mZnNldCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gbV9vZmZzZXQgPD0gb3RoZXIub2Zmc2V0VW5jaGVja2VkKCk7CisgICAgICAg
IHJldHVybiBtX29mZnNldCA8PSBvdGhlci5tX29mZnNldDsKICAgICB9Ci0gICAgYm9vbCBvcGVy
YXRvcj49KGNvbnN0IFQmIG90aGVyKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBH
ZW5lcmljT2Zmc2V0JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX29mZnNl
dCA+PSBvdGhlci5vZmZzZXRVbmNoZWNrZWQoKTsKKyAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID49
IG90aGVyLm1fb2Zmc2V0OwogICAgIH0KICAgICAKICAgICBUIG9wZXJhdG9yKyhpbnQgdmFsdWUp
IGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlU
YWJsZS5oCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDEyICs5MSwxMiBAQCBjbGFz
cyBQcm9wZXJ0eVRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsCiAgICAgICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qgb3JkZXJl
ZF9pdGVyYXRvcjxUPiYgb3RoZXIpCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBvcmRl
cmVkX2l0ZXJhdG9yPFQ+JiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIG1fdmFsdWVQdHIgPT0gb3RoZXIubV92YWx1ZVB0cjsKICAgICAgICAgfQogCi0gICAgICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBvcmRlcmVkX2l0ZXJhdG9yPFQ+JiBvdGhlcikKKyAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG9yZGVyZWRfaXRlcmF0b3I8VD4mIG90aGVyKSBjb25z
dAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZVB0ciAhPSBvdGhlci5tX3Zh
bHVlUHRyOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI4Njc1MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0xMi0wOCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFByZXBhcmUg
Zm9yIHRyYW5zaXRpb24gdG8gQysrMjAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDAyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5j
YzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNs
dWRlL2FlY19kdW1wLmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19w
cm9jZXNzaW5nL2luY2x1ZGUvYWVjX2R1bXAuaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L2RlbGF5X2VzdGltYXRvcl93cmFwcGVyLmNj
OgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC92
YWRfYXVkaW9fcHJvYy5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19j
b2RpbmcvbWVkaWFfb3B0X3V0aWwuaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3J0Y19iYXNl
L3JhY2VfY2hlY2tlci5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5pdHMv
dW5pdF9iYXNlLmg6CisgICAgICAgICh3ZWJydGM6OnJ0Y191bml0c19pbXBsOjpVbml0QmFzZTo6
b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICh3ZWJydGM6OnJ0Y191bml0c19pbXBsOjpVbml0
QmFzZTo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgICh3ZWJydGM6OnJ0Y191bml0c19pbXBs
OjpVbml0QmFzZTo6b3BlcmF0b3I8PSBjb25zdCk6CisgICAgICAgICh3ZWJydGM6OnJ0Y191bml0
c19pbXBsOjpVbml0QmFzZTo6b3BlcmF0b3I+PSBjb25zdCk6CisgICAgICAgICh3ZWJydGM6OnJ0
Y191bml0c19pbXBsOjpVbml0QmFzZTo6b3BlcmF0b3I+IGNvbnN0KToKKyAgICAgICAgKHdlYnJ0
Yzo6cnRjX3VuaXRzX2ltcGw6OlVuaXRCYXNlOjpvcGVyYXRvcjwgY29uc3QpOgorCiAyMDIxLTEy
LTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDbG9zZSBX
ZWJSVEMgYWxsb2NhdGlvbiBzZXF1ZW5jZSBzaGFyZWQgc29ja2V0IGluIGNhc2Ugb2Ygc2VxdWVu
Y2UgbmV0d29yayBmYWlsdXJlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5jYwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hl
YWRlci5jYwkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9oZWFkZXIuY2MJKHdvcmtpbmcgY29weSkK
QEAgLTgwLDYgKzgwLDcgQEAgY29uc3QgdWludDMyX3Qga0ZtdEllZWVGbG9hdFN1YmNodW5rU2l6
ZQogLy8gcmVhZCBhdWRpbyBzYW1wbGVzLgogI3ByYWdtYSBwYWNrKDIpCiBzdHJ1Y3QgV2F2SGVh
ZGVyUGNtIHsKKyAgV2F2SGVhZGVyUGNtKCkgPSBkZWZhdWx0OwogICBXYXZIZWFkZXJQY20oY29u
c3QgV2F2SGVhZGVyUGNtJikgPSBkZWZhdWx0OwogICBXYXZIZWFkZXJQY20mIG9wZXJhdG9yPShj
b25zdCBXYXZIZWFkZXJQY20mKSA9IGRlZmF1bHQ7CiAgIFJpZmZIZWFkZXIgcmlmZjsKQEAgLTk1
LDYgKzk2LDcgQEAgc3RhdGljX2Fzc2VydChzaXplb2YoV2F2SGVhZGVyUGNtKSA9PSBrUAogLy8g
V0FWIGltcGxlbWVudGF0aW9uLgogI3ByYWdtYSBwYWNrKDIpCiBzdHJ1Y3QgV2F2SGVhZGVySWVl
ZUZsb2F0IHsKKyAgV2F2SGVhZGVySWVlZUZsb2F0KCkgPSBkZWZhdWx0OwogICBXYXZIZWFkZXJJ
ZWVlRmxvYXQoY29uc3QgV2F2SGVhZGVySWVlZUZsb2F0JikgPSBkZWZhdWx0OwogICBXYXZIZWFk
ZXJJZWVlRmxvYXQmIG9wZXJhdG9yPShjb25zdCBXYXZIZWFkZXJJZWVlRmxvYXQmKSA9IGRlZmF1
bHQ7CiAgIFJpZmZIZWFkZXIgcmlmZjsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2FlY19kdW1w
LmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2FlY19kdW1wLmNjCShyZXZpc2lv
biAyODY3NTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9t
b2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hZWNfZHVtcC5jYwkod29ya2luZyBjb3B5
KQpAQCAtMTcsNyArMTcsOCBAQCBJbnRlcm5hbEFQTUNvbmZpZzo6SW50ZXJuYWxBUE1Db25maWco
SW50CiBJbnRlcm5hbEFQTUNvbmZpZyYgSW50ZXJuYWxBUE1Db25maWc6Om9wZXJhdG9yPShjb25z
dCBJbnRlcm5hbEFQTUNvbmZpZyYpID0KICAgICBkZWZhdWx0OwogCi1ib29sIEludGVybmFsQVBN
Q29uZmlnOjpvcGVyYXRvcj09KGNvbnN0IEludGVybmFsQVBNQ29uZmlnJiBvdGhlcikgeworYm9v
bCBJbnRlcm5hbEFQTUNvbmZpZzo6b3BlcmF0b3I9PShjb25zdCBJbnRlcm5hbEFQTUNvbmZpZyYg
b3RoZXIpIGNvbnN0Cit7CiAgIHJldHVybiBhZWNfZW5hYmxlZCA9PSBvdGhlci5hZWNfZW5hYmxl
ZCAmJgogICAgICAgICAgYWVjX2RlbGF5X2Fnbm9zdGljX2VuYWJsZWQgPT0gb3RoZXIuYWVjX2Rl
bGF5X2Fnbm9zdGljX2VuYWJsZWQgJiYKICAgICAgICAgIGFlY19kcmlmdF9jb21wZW5zYXRpb25f
ZW5hYmxlZCA9PQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYWVjX2R1bXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hZWNfZHVtcC5oCShyZXZpc2lvbiAyODY3NTApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3By
b2Nlc3NpbmcvaW5jbHVkZS9hZWNfZHVtcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBAIHN0cnVjdCBJbnRlcm5hbEFQTUNvbmZpZyB7CiAgIEludGVybmFsQVBNQ29uZmlnJiBvcGVy
YXRvcj0oY29uc3QgSW50ZXJuYWxBUE1Db25maWcmKTsKICAgSW50ZXJuYWxBUE1Db25maWcmIG9w
ZXJhdG9yPShJbnRlcm5hbEFQTUNvbmZpZyYmKSA9IGRlbGV0ZTsKIAotICBib29sIG9wZXJhdG9y
PT0oY29uc3QgSW50ZXJuYWxBUE1Db25maWcmIG90aGVyKTsKKyAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEludGVybmFsQVBNQ29uZmlnJiBvdGhlcikgY29uc3Q7CiAKICAgYm9vbCBhZWNfZW5hYmxl
ZCA9IGZhbHNlOwogICBib29sIGFlY19kZWxheV9hZ25vc3RpY19lbmFibGVkID0gZmFsc2U7Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9kZWxheV9lc3RpbWF0b3Jfd3JhcHBlci5jYwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9kZWxheV9lc3RpbWF0b3Jfd3JhcHBlci5jYwkocmV2
aXNpb24gMjg2NzUwKQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0aWxpdHkvZGVsYXlfZXN0aW1hdG9yX3dyYXBw
ZXIuY2MJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDcgQEAgbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKIC8vIE9ubHkgYml0IGBrQmFuZEZpcnN0YCB0aHJvdWdoIGJpdCBga0JhbmRMYXN0YCBhcmUg
cHJvY2Vzc2VkIGFuZAogLy8gYGtCYW5kRmlyc3RgIC0gYGtCYW5kTGFzdGAgbXVzdCBiZSA8IDMy
LgotZW51bSB7IGtCYW5kRmlyc3QgPSAxMiB9OwotZW51bSB7IGtCYW5kTGFzdCA9IDQzIH07Citl
bnVtIHsga0JhbmRGaXJzdCA9IDEyLCBrQmFuZExhc3QgPSA0MyB9OwogCiBzdGF0aWMgX19pbmxp
bmUgdWludDMyX3QgU2V0Qml0KHVpbnQzMl90IGluLCBpbnQgcG9zKSB7CiAgIHVpbnQzMl90IG1h
c2sgPSAoMSA8PCBwb3MpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC92YWRfYXVkaW9fcHJvYy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy92YWQvdmFkX2F1ZGlvX3Byb2MuaAkocmV2aXNpb24gMjg2
NzUwKQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxl
cy9hdWRpb19wcm9jZXNzaW5nL3ZhZC92YWRfYXVkaW9fcHJvYy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NywyNyArNDcsMjAgQEAgY2xhc3MgVmFkQXVkaW9Qcm9jIHsKICAgdm9pZCBSbXMoZG91Ymxl
KiBybXMsIHNpemVfdCBsZW5ndGhfcm1zKTsKICAgdm9pZCBSZXNldEJ1ZmZlcigpOwogCisgICAg
Ly8gVE9ETyh0dXJhanMpOiBtYXliZSBkZWZpbmluZyB0aGlzIGF0IGEgaGlnaGVyIGxldmVsICht
YXliZSBlbnVtKSBzbyB0aGF0CisgICAgLy8gYWxsIHRoZSBjb2RlIHJlY29nbml6ZSBpdCBhcyAi
bm8tZXJyb3IuIgorICAgIGVudW0gOiBpbnQgeyBrTm9FcnJvciA9IDAgfTsKKwogICAvLyBUbyBj
b21wdXRlIHNwZWN0cmFsIHBlYWsgd2UgcGVyZm9ybSBMUEMgYW5hbHlzaXMgdG8gZ2V0IHNwZWN0
cmFsIGVudmVsb3BlLgogICAvLyBGb3IgZXZlcnkgMzAgbXMgd2UgY29tcHV0ZSAzIHNwZWN0cmFs
IHBlYWsgdGhlcmUgZm9yIDMgTFBDIGFuYWx5c2lzLgogICAvLyBMUEMgaXMgY29tcHV0ZWQgb3Zl
ciAxNSBtcyBvZiB3aW5kb3dlZCBhdWRpby4gRm9yIGV2ZXJ5IDEwIG1zIHN1Yi1mcmFtZQogICAv
LyB3ZSBuZWVkIDUgbXMgb2YgcGFzdCBzaWduYWwgdG8gY3JlYXRlIHRoZSBpbnB1dCBvZiBMUEMg
YW5hbHlzaXMuCiAgIGVudW0gOiBzaXplX3QgewotICAgIGtOdW1QYXN0U2lnbmFsU2FtcGxlcyA9
IHN0YXRpY19jYXN0PHNpemVfdD4oa1NhbXBsZVJhdGVIeiAvIDIwMCkKLSAgfTsKLQotICAvLyBU
T0RPKHR1cmFqcyk6IG1heWJlIGRlZmluaW5nIHRoaXMgYXQgYSBoaWdoZXIgbGV2ZWwgKG1heWJl
IGVudW0pIHNvIHRoYXQKLSAgLy8gYWxsIHRoZSBjb2RlIHJlY29nbml6ZSBpdCBhcyAibm8tZXJy
b3IuIgotICBlbnVtIDogaW50IHsga05vRXJyb3IgPSAwIH07Ci0KLSAgZW51bSA6IHNpemVfdCB7
IGtOdW0xMG1zU3ViZnJhbWVzID0gMyB9OwotICBlbnVtIDogc2l6ZV90IHsKLSAgICBrTnVtU3Vi
ZnJhbWVTYW1wbGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihrU2FtcGxlUmF0ZUh6IC8gMTAwKQot
ICB9OwotICBlbnVtIDogc2l6ZV90IHsKKyAgICBrTnVtUGFzdFNpZ25hbFNhbXBsZXMgPSBzdGF0
aWNfY2FzdDxzaXplX3Q+KGtTYW1wbGVSYXRlSHogLyAyMDApLAorICAgIGtOdW0xMG1zU3ViZnJh
bWVzID0gMywKKyAgICBrTnVtU3ViZnJhbWVTYW1wbGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihr
U2FtcGxlUmF0ZUh6IC8gMTAwKSwKICAgICAvLyBTYW1wbGVzIGluIDMwIG1zIEAgZ2l2ZW4gc2Ft
cGxpbmcgcmF0ZS4KLSAgICBrTnVtU2FtcGxlc1RvUHJvY2VzcyA9IGtOdW0xMG1zU3ViZnJhbWVz
ICoga051bVN1YmZyYW1lU2FtcGxlcwotICB9OwotICBlbnVtIDogc2l6ZV90IHsKKyAgICBrTnVt
U2FtcGxlc1RvUHJvY2VzcyA9IGtOdW0xMG1zU3ViZnJhbWVzICoga051bVN1YmZyYW1lU2FtcGxl
cywKICAgICBrQnVmZmVyTGVuZ3RoID0ga051bVBhc3RTaWduYWxTYW1wbGVzICsga051bVNhbXBs
ZXNUb1Byb2Nlc3MKICAgfTsKICAgZW51bSA6IHNpemVfdCB7IGtJcExlbmd0aCA9IGtEZnRTaXpl
ID4+IDEgfTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L21vZHVsZXMvdmlkZW9fY29kaW5nL21lZGlhX29wdF91dGlsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rp
bmcvbWVkaWFfb3B0X3V0aWwuaAkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvbWVkaWFfb3B0
X3V0aWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDEyIEBAIG5hbWVzcGFjZSBtZWRp
YV9vcHRpbWl6YXRpb24gewogLy8gTnVtYmVyIG9mIHRpbWUgcGVyaW9kcyB1c2VkIGZvciAobWF4
KSB3aW5kb3cgZmlsdGVyIGZvciBwYWNrZXQgbG9zcwogLy8gVE9ETyhtYXJwYW4pOiBzZXQgcmVh
c29uYWJsZSB3aW5kb3cgc2l6ZSBmb3IgZmlsdGVyZWQgcGFja2V0IGxvc3MsCiAvLyBhZGp1c3Rt
ZW50IHNob3VsZCBiZSBiYXNlZCBvbiBsb2dnZWQvcmVhbCBkYXRhIG9mIGxvc3Mgc3RhdHMvY29y
cmVsYXRpb24uCi1lbnVtIHsga0xvc3NQckhpc3RvcnlTaXplID0gMTAgfTsKK2VudW0geworICAg
IGtMb3NzUHJIaXN0b3J5U2l6ZSA9IDEwLAogCiAvLyAxMDAwIG1zLCB0b3RhbCBmaWx0ZXIgbGVu
Z3RoIGlzIChrTG9zc1BySGlzdG9yeVNpemUgKiAxMDAwKSBtcwotZW51bSB7IGtMb3NzUHJTaG9y
dEZpbHRlcldpbk1zID0gMTAwMCB9OworICAgIGtMb3NzUHJTaG9ydEZpbHRlcldpbk1zID0gMTAw
MAorfTsKIAogLy8gVGhlIHR5cGUgb2YgZmlsdGVyIHVzZWQgb24gdGhlIHJlY2VpdmVkIHBhY2tl
dCBsb3NzIHJlcG9ydHMuCiBlbnVtIEZpbHRlclBhY2tldExvc3NNb2RlIHsKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0Y19iYXNlL3JhY2VfY2hlY2tl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3JhY2VfY2hlY2tlci5oCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS9yYWNlX2NoZWNrZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgInJ0Y19iYXNlL2No
ZWNrcy5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3BsYXRmb3JtX3RocmVhZF90eXBlcy5oIgogI2lu
Y2x1ZGUgInJ0Y19iYXNlL3RocmVhZF9hbm5vdGF0aW9ucy5oIgorI2luY2x1ZGUgPGF0b21pYz4K
IAogbmFtZXNwYWNlIHJ0YyB7CiAKQEAgLTMzLDcgKzM0LDcgQEAgY2xhc3MgUlRDX0xPQ0tBQkxF
IFJhY2VDaGVja2VyIHsKICAgdm9pZCBSZWxlYXNlKCkgY29uc3QgUlRDX1VOTE9DS19GVU5DVElP
TigpOwogCiAgIC8vIFZvbGF0aWxlIHRvIHByZXZlbnQgY29kZSBiZWluZyBvcHRpbWl6ZWQgYXdh
eSBpbiBBY3F1aXJlKCkvUmVsZWFzZSgpLgotICBtdXRhYmxlIHZvbGF0aWxlIGludCBhY2Nlc3Nf
Y291bnRfID0gMDsKKyAgbXV0YWJsZSBzdGQ6OmF0b21pYzxpbnQ+IGFjY2Vzc19jb3VudF8gPSAw
OwogICBtdXRhYmxlIHZvbGF0aWxlIFBsYXRmb3JtVGhyZWFkUmVmIGFjY2Vzc2luZ190aHJlYWRf
OwogfTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvdW5pdHMvdW5pdF9iYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5pdHMvdW5pdF9iYXNlLmgJKHJl
dmlzaW9uIDI4Njc1MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3J0Y19iYXNlL3VuaXRzL3VuaXRfYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwyMiAr
NTAsMjIgQEAgY2xhc3MgVW5pdEJhc2UgewogICAgIHJldHVybiB2YWx1ZV8gPT0gTWludXNJbmZp
bml0eVZhbCgpOwogICB9CiAKLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVbml0
X1QmIG90aGVyKSBjb25zdCB7CisgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVW5p
dEJhc2UmIG90aGVyKSBjb25zdCB7CiAgICAgcmV0dXJuIHZhbHVlXyA9PSBvdGhlci52YWx1ZV87
CiAgIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVbml0X1QmIG90aGVyKSBj
b25zdCB7CisgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgVW5pdEJhc2UmIG90aGVy
KSBjb25zdCB7CiAgICAgcmV0dXJuIHZhbHVlXyAhPSBvdGhlci52YWx1ZV87CiAgIH0KLSAgY29u
c3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBVbml0X1QmIG90aGVyKSBjb25zdCB7CisgIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3QgVW5pdEJhc2UmIG90aGVyKSBjb25zdCB7CiAg
ICAgcmV0dXJuIHZhbHVlXyA8PSBvdGhlci52YWx1ZV87CiAgIH0KLSAgY29uc3RleHByIGJvb2wg
b3BlcmF0b3I+PShjb25zdCBVbml0X1QmIG90aGVyKSBjb25zdCB7CisgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPj0oY29uc3QgVW5pdEJhc2UmIG90aGVyKSBjb25zdCB7CiAgICAgcmV0dXJuIHZh
bHVlXyA+PSBvdGhlci52YWx1ZV87CiAgIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNv
bnN0IFVuaXRfVCYgb3RoZXIpIGNvbnN0IHsKKyAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNv
bnN0IFVuaXRCYXNlJiBvdGhlcikgY29uc3QgewogICAgIHJldHVybiB2YWx1ZV8gPiBvdGhlci52
YWx1ZV87CiAgIH0KLSAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVuaXRfVCYgb3Ro
ZXIpIGNvbnN0IHsKKyAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVuaXRCYXNlJiBv
dGhlcikgY29uc3QgewogICAgIHJldHVybiB2YWx1ZV8gPCBvdGhlci52YWx1ZV87CiAgIH0KICAg
Y29uc3RleHByIFVuaXRfVCBSb3VuZFRvKGNvbnN0IFVuaXRfVCYgcmVzb2x1dGlvbikgY29uc3Qg
ewpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI4Njc1MCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjEtMTItMDggIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBQcmVwYXJlIGZvciB0cmFuc2l0
aW9uIHRvIEMrKzIwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbiBDKysyMCwgdm9saXRpbGUgaXMgZGVwcmVjYXRlZCwgb3BlcmF0b3I9PSBpcyBzdHJp
Y3RlciAocmVsYXRlZCB0byB0aGUgaW50cm9kdWN0aW9uIG9mIG9wZXJhdG9yIDw9PiksCisgICAg
ICAgIGFuZCBvcGVyYXRpb25zIG9uIGVudW1zIG9mIGRpZmZlcmVudCB0eXBlcyBhcmUgc3RyaWN0
ZXIgdG9vLiAgVGhpcyBkb2VzIHRoZSBjaGFuZ2VzIHdlIGNhbiBkbyBiZWZvcmUKKyAgICAgICAg
dGhlIHRyYW5zaXRpb24sIHdoaWNoIHdpbGwgYmUgZG9uZSBpbiBidWcgMjMzOTYzLgorCisgICAg
ICAgICogd3RmL0RhdGVNYXRoLmg6CisgICAgICAgIChXVEY6OkxvY2FsVGltZU9mZnNldDo6b3Bl
cmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXVEY6OkxvY2FsVGltZU9mZnNldDo6b3BlcmF0b3Ih
PSBjb25zdCk6CisgICAgICAgIChXVEY6OkxvY2FsVGltZU9mZnNldDo6b3BlcmF0b3I9PSk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OkxvY2FsVGltZU9mZnNldDo6b3BlcmF0b3IhPSk6IERlbGV0
ZWQuCisgICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJp
dFZlY3RvckltcGw6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVj
dG9ySW1wbDo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgICogd3RmL0dlbmVyaWNUaW1lTWl4
aW4uaDoKKyAgICAgICAgKFdURjo6R2VuZXJpY1RpbWVNaXhpbjo6b3BlcmF0b3I9PSBjb25zdCk6
CisgICAgICAgIChXVEY6OkdlbmVyaWNUaW1lTWl4aW46Om9wZXJhdG9yIT0gY29uc3QpOgorICAg
ICAgICAoV1RGOjpHZW5lcmljVGltZU1peGluOjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAo
V1RGOjpHZW5lcmljVGltZU1peGluOjpvcGVyYXRvcj4gY29uc3QpOgorICAgICAgICAoV1RGOjpH
ZW5lcmljVGltZU1peGluOjpvcGVyYXRvcjw9IGNvbnN0KToKKyAgICAgICAgKFdURjo6R2VuZXJp
Y1RpbWVNaXhpbjo6b3BlcmF0b3I+PSBjb25zdCk6CisgICAgICAgICogd3RmL0l0ZXJhdG9yQWRh
cHRvcnMuaDoKKyAgICAgICAgKFdURjo6RmlsdGVySXRlcmF0b3I6Om9wZXJhdG9yPT0gY29uc3Qp
OgorICAgICAgICAoV1RGOjpGaWx0ZXJJdGVyYXRvcjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAg
ICAgIChXVEY6OlRyYW5zZm9ybUl0ZXJhdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAg
KFdURjo6VHJhbnNmb3JtSXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAqIHd0
Zi9MaXZlbmVzcy5oOgorICAgICAgICAoV1RGOjpMaXZlbmVzczo6TG9jYWxDYWxjOjpJdGVyYWJs
ZTo6aXRlcmF0b3I6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV1RGOjpMaXZlbmVzczo6
TG9jYWxDYWxjOjpJdGVyYWJsZTo6aXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAg
ICAoV1RGOjpMaXZlbmVzczo6TG9jYWxDYWxjOjpJdGVyYWJsZTo6aXRlcmF0b3I6Om9wZXJhdG9y
PT0pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpMaXZlbmVzczo6TG9jYWxDYWxjOjpJdGVyYWJs
ZTo6aXRlcmF0b3I6Om9wZXJhdG9yIT0pOiBEZWxldGVkLgorCiAyMDIxLTEyLTA4ICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBF
bmFibGUgbWVkaWFTb3VyY2VJbmxpbmVQYWludGluZwpJbmRleDogU291cmNlL1dURi93dGYvRGF0
ZU1hdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCShyZXZpc2lv
biAyODY3NTApCisrKyBTb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NiwxMiArNjYsMTIgQEAgc3RydWN0IExvY2FsVGltZU9mZnNldCB7CiAgICAgewogICAgIH0K
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMb2NhbFRpbWVPZmZzZXQmIG90aGVyKQorICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBMb2NhbFRpbWVPZmZzZXQmIG90aGVyKSBjb25zdAogICAg
IHsKICAgICAgICAgcmV0dXJuIGlzRFNUID09IG90aGVyLmlzRFNUICYmIG9mZnNldCA9PSBvdGhl
ci5vZmZzZXQ7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExvY2FsVGltZU9m
ZnNldCYgb3RoZXIpCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExvY2FsVGltZU9mZnNldCYg
b3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaXNEU1QgIT0gb3RoZXIuaXNEU1Qg
fHwgb2Zmc2V0ICE9IG90aGVyLm9mZnNldDsKICAgICB9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9G
YXN0Qml0VmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rv
ci5oCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4MSw4ICsyODEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6
ZV90IGFycmF5TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gZmFzdEJpdFZlY3RvckFycmF5TGVuZ3Ro
KG51bUJpdHMoKSk7IH0KICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcj4KLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgT3RoZXImIG90aGVyKSBjb25zdAorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBGYXN0Qml0VmVjdG9ySW1wbCYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAobnVtQml0cygpICE9IG90aGVyLm51bUJpdHMoKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTI5Myw4ICsyOTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcj4KLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgT3RoZXImIG90aGVyKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBGYXN0Qml0VmVjdG9ySW1wbCYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQpJbmRleDogU291cmNlL1dURi93dGYvR2VuZXJpY1Rp
bWVNaXhpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0dlbmVyaWNUaW1lTWl4aW4u
aAkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNlL1dURi93dGYvR2VuZXJpY1RpbWVNaXhpbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC04NCwzMiArODQsMzIgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gU2Vjb25kcyhtX3ZhbHVlIC0gb3RoZXIubV92YWx1ZSk7CiAgICAgfQogCi0gICAgY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I9PShEZXJpdmVkVGltZSBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdlbmVyaWNUaW1lTWl4aW4mIG90aGVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsKICAgICB9CiAK
LSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KERlcml2ZWRUaW1lIG90aGVyKSBjb25zdAor
ICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgR2VuZXJpY1RpbWVNaXhpbiYgb3Ro
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV92YWx1ZSAhPSBvdGhlci5tX3ZhbHVl
OwogICAgIH0KIAotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChEZXJpdmVkVGltZSBvdGhl
cikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgR2VuZXJpY1RpbWVN
aXhpbiYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV92YWx1ZSA8IG90aGVy
Lm1fdmFsdWU7CiAgICAgfQogCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KERlcml2ZWRU
aW1lIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBHZW5l
cmljVGltZU1peGluJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3ZhbHVl
ID4gb3RoZXIubV92YWx1ZTsKICAgICB9CiAKLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9
KERlcml2ZWRUaW1lIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0o
Y29uc3QgR2VuZXJpY1RpbWVNaXhpbiYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbV92YWx1ZSA8PSBvdGhlci5tX3ZhbHVlOwogICAgIH0KIAotICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPj0oRGVyaXZlZFRpbWUgb3RoZXIpIGNvbnN0CisgICAgY29uc3RleHByIGJvb2wg
b3BlcmF0b3I+PShjb25zdCBHZW5lcmljVGltZU1peGluJiBvdGhlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX3ZhbHVlID49IG90aGVyLm1fdmFsdWU7CiAgICAgfQpJbmRleDogU291
cmNlL1dURi93dGYvSXRlcmF0b3JBZGFwdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0l0ZXJhdG9yQWRhcHRvcnMuaAkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNlL1dURi93
dGYvSXRlcmF0b3JBZGFwdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw4ICs1OSw4IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuICptX2l0ZXI7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShGaWx0ZXJJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faXRlciA9
PSBvdGhlci5tX2l0ZXI7IH0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KEZpbHRlckl0ZXJh
dG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyICE9IG90aGVyLm1faXRlcjsgfQorICAg
IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVySXRlcmF0b3ImIG90aGVyKSBjb25z
dCB7IHJldHVybiBtX2l0ZXIgPT0gb3RoZXIubV9pdGVyOyB9CisgICAgaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBGaWx0ZXJJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faXRl
ciAhPSBvdGhlci5tX2l0ZXI7IH0KIAogcHJpdmF0ZToKICAgICBjb25zdCBQcmVkaWNhdGUgbV9w
cmVkOwpAQCAtOTUsOCArOTUsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3RyYW5zZm9y
bSgqbV9pdGVyKTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFRyYW5zZm9y
bUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyID09IG90aGVyLm1faXRlcjsg
fQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oVHJhbnNmb3JtSXRlcmF0b3ImIG90aGVyKSBj
b25zdCB7IHJldHVybiBtX2l0ZXIgIT0gb3RoZXIubV9pdGVyOyB9CisgICAgaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1JdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1faXRlciA9PSBvdGhlci5tX2l0ZXI7IH0KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFRyYW5zZm9ybUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyICE9IG90
aGVyLm1faXRlcjsgfQogCiBwcml2YXRlOgogICAgIGNvbnN0IFRyYW5zZm9ybSBtX3RyYW5zZm9y
bTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0xpdmVuZXNzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvTGl2ZW5lc3MuaAkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNlL1dURi93dGYv
TGl2ZW5lc3MuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsOCArOTQsOCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBtX2FkYXB0ZXIuaW5kZXhUb1ZhbHVlKCptX3NwYXJjZVNl
dEl0ZXJhdG9yKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSB7IHJldHVybiBtX3NwYXJjZVNldEl0ZXJh
dG9yID09IG90aGVyLm1fc3BhcmNlU2V0SXRlcmF0b3I7IH0KLSAgICAgICAgICAgICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSB7IHJldHVybiBtX3NwYXJjZVNldEl0
ZXJhdG9yICE9IG90aGVyLm1fc3BhcmNlU2V0SXRlcmF0b3I7IH0KKyAgICAgICAgICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3Nw
YXJjZVNldEl0ZXJhdG9yID09IG90aGVyLm1fc3BhcmNlU2V0SXRlcmF0b3I7IH0KKyAgICAgICAg
ICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX3NwYXJjZVNldEl0ZXJhdG9yICE9IG90aGVyLm1fc3BhcmNlU2V0SXRlcmF0b3I7IH0K
IAogICAgICAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBBZGFwdGVyJiBtX2FkYXB0
ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4NiBAQAorMjAyMS0xMi0wOCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFByZXBh
cmUgZm9yIHRyYW5zaXRpb24gdG8gQysrMjAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNDAyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFj
dGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25XaXRo
b3V0TWV0YWRhdGE6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvbldpdGhTdHJpbmdNZXRhZGF0YTo6b3BlcmF0b3I9PSBjb25zdCk6
CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkFOb2RlQnVp
bGRlcjo6RmFrZVJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQU5vZGVCdWlsZGVyOjpGYWtlUmFu
Z2VJdGVyYXRvcjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXI6OkZha2VSYW5nZUl0ZXJhdG9yOjpv
cGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpJbW11dGFibGVORkFOb2RlQnVpbGRlcjo6RmFrZVJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yIT0p
OiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VIYW5kbGU6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAqIHBhZ2UvbWFjL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXJNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250cm9sbGVyOjp1cGRhdGVEYXRhRGV0ZWN0
b3JIaWdobGlnaHRzKToKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9s
bGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6YnVp
bGRQaG9uZU51bWJlckhpZ2hsaWdodHMpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcjo6YnVpbGRTZWxlY3Rpb25IaWdobGlnaHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
bik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpjbGllbnREYXRhRm9ybWF0
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
OjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6Y29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OmVuc3VyZU1vbml0b3JGb3JEaXNwbGF5
SUQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1h
bmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3Jp
dGhtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om1ha2VWSW1hZ2VDR0ltYWdlRm9ybWF0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUNHSW1hZ2VGb3JFbmNv
ZGluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVu
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOjpjcmVhdGVJbWFnZUZyb21Q
aXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IhPSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVy
YXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yIT0pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3Rp
dmVUcmFuc2Zvcm1PcGVyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjptYXBQbGF0Zm9ybUVycm9y
KToKKyAgICAgICAgKiByZW5kZXJpbmcvR2FwUmVjdHMuaDoKKyAgICAgICAgKFdlYkNvcmU6Okdh
cFJlY3RzOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdhcFJlY3RzOjpv
cGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdhcFJlY3RzOjpvcGVyYXRvcj09
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhcFJlY3RzOjpvcGVyYXRvciE9KTogRGVs
ZXRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9y
QWNjZXNzaWJpbGl0eSk6CisKIDIwMjEtMTItMDggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1ZUVF0gRml4IHZhcmlvdXMgaXNzdWVzIHdpdGggY29tcGxpY2F0
ZWQgcmVuZGVyaW5nIG9mIFZUVCBjdWVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmgJKHJldmlz
aW9uIDI4Njc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25BY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgdXNpbmcg
U2VyaWFsaXplZEFjdGlvbkJ5dGUgPSB1aW50OF90OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgQWN0aW9uV2l0aG91dE1ldGFkYXRhIHsKICAgICBUIGlzb2xhdGVkQ29weSgpIGNvbnN0
IHsgcmV0dXJuIHsgfTsgfQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJikgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBY3Rpb25XaXRob3V0TWV0
YWRhdGEmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBzZXJpYWxpemUoVmVjdG9y
PHVpbnQ4X3Q+JikgY29uc3QgeyB9CiAgICAgc3RhdGljIFQgZGVzZXJpYWxpemUoU3Bhbjxjb25z
dCB1aW50OF90PikgeyByZXR1cm4geyB9OyB9CiAgICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVk
TGVuZ3RoKFNwYW48Y29uc3QgdWludDhfdD4pIHsgcmV0dXJuIDA7IH0KQEAgLTc2LDcgKzc2LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFjdGlvbldpdGhvdQogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IEFjdGlvbldpdGhTdHJpbmdNZXRhZGF0YSB7CiAgICAgY29uc3QgU3Ry
aW5nIHN0cmluZzsKICAgICBUIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgeyBzdHJp
bmcuaXNvbGF0ZWRDb3B5KCkgfSB9OyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIG90
aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5zdHJpbmcgPT0gdGhpcy0+c3RyaW5nOyB9CisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEFjdGlvbldpdGhTdHJpbmdNZXRhZGF0YSYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIG90aGVyLnN0cmluZyA9PSB0aGlzLT5zdHJpbmc7IH0KICAgICB2b2lkIHNl
cmlhbGl6ZShWZWN0b3I8dWludDhfdD4mIHZlY3RvcikgY29uc3QgeyBzZXJpYWxpemVTdHJpbmco
dmVjdG9yLCBzdHJpbmcpOyB9CiAgICAgc3RhdGljIFQgZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1
aW50OF90PiBzcGFuKSB7IHJldHVybiB7IHsgZGVzZXJpYWxpemVTdHJpbmcoc3BhbikgfSB9OyB9
CiAgICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWludDhfdD4g
c3BhbikgeyByZXR1cm4gc3RyaW5nU2VyaWFsaXplZExlbmd0aChzcGFuKTsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVO
RkFOb2RlQnVpbGRlci5oCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkFOb2RlQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC05MSwxMSArOTEsMTEgQEAgcHVibGljOgogICAgICAgICBDaGFyYWN0ZXJUeXBlIGZpcnN0KCkg
Y29uc3QgeyByZXR1cm4gcmFuZ2UuZmlyc3Q7IH0KICAgICAgICAgQ2hhcmFjdGVyVHlwZSBsYXN0
KCkgY29uc3QgeyByZXR1cm4gcmFuZ2UubGFzdDsgfQogICAgICAgICB1aW50MzJfdCBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gdGFyZ2V0SWQ7IH0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEZha2VSYW5nZUl0ZXJhdG9yJiBvdGhlcikKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEZha2VSYW5nZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIHRoaXMtPmlzRW5kID09IG90aGVyLmlzRW5kOwogICAgICAgICB9Ci0gICAgICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBGYWtlUmFuZ2VJdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGYWtlUmFu
Z2VJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAg
ICAgICAgIEZha2VSYW5nZUl0ZXJhdG9yIG9wZXJhdG9yKysoKQogICAgICAgICB7CiAgICAgICAg
ICAgICBpc0VuZCA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaAkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZSYg
b3BlcmF0b3I9KGNvbnN0IENhY2hlZFJlc291cmNlSGFuZGxlJiBvKSB7IHNldFJlc291cmNlKG8u
Z2V0KCkpOyByZXR1cm4gKnRoaXM7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBDYWNoZWRS
ZXNvdXJjZUhhbmRsZSYgb3BlcmF0b3I9KGNvbnN0IENhY2hlZFJlc291cmNlSGFuZGxlPFU+JiBv
KSB7IHNldFJlc291cmNlKG8uZ2V0KCkpOyByZXR1cm4gKnRoaXM7IH0KIAorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZSYgbykgY29uc3QgeyByZXR1cm4gb3Bl
cmF0b3I9PShzdGF0aWNfY2FzdDxjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UmPihvKSk7
IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlJiBv
KSBjb25zdCB7IHJldHVybiBnZXQoKSA9PSBvLmdldCgpOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSYgbykgY29uc3QgeyByZXR1cm4gZ2V0KCkg
IT0gby5nZXQoKTsgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ltYWdlT3Zl
cmxheUNvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gMjg2NzUwKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtOTAsOSArOTAsOSBAQCB2b2lkIEltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnVw
ZGF0ZURhdGFECiAKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0ZWFjaCBEYXRhRGV0ZWN0
b3JIaWdobGlnaHQgdG8gcmVuZGVyIHF1YWRzIGluc3RlYWQgb2YgYWx3YXlzIGZhbGxpbmcgYmFj
ayB0byBheGlzLWFsaWduZWQgYm91bmRpbmcgcmVjdHMuCiAjaWYgSEFWRShERF9ISUdITElHSFRf
Q1JFQVRFX1dJVEhfU0NBTEUpCi0gICAgICAgIGF1dG8gaGlnaGxpZ2h0ID0gYWRvcHRDRihQQUw6
OnNvZnRMaW5rX0RhdGFEZXRlY3RvcnNfRERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2li
bGVSZWN0V2l0aFN0eWxlU2NhbGVBbmREaXJlY3Rpb24obnVsbHB0ciwgJmVsZW1lbnRCb3VuZHMs
IDEsIG1haW5GcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLCBEREhpZ2hsaWdodFN0eWxl
QnViYmxlU3RhbmRhcmQgfCBEREhpZ2hsaWdodFN0eWxlU3RhbmRhcmRJY29uQXJyb3csIFlFUywg
TlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8sIFlFUywgMCkpOworICAgICAgICBhdXRvIGhp
Z2hsaWdodCA9IGFkb3B0Q0YoUEFMOjpzb2Z0TGlua19EYXRhRGV0ZWN0b3JzX0RESGlnaGxpZ2h0
Q3JlYXRlV2l0aFJlY3RzSW5WaXNpYmxlUmVjdFdpdGhTdHlsZVNjYWxlQW5kRGlyZWN0aW9uKG51
bGxwdHIsICZlbGVtZW50Qm91bmRzLCAxLCBtYWluRnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJl
Y3QoKSwgc3RhdGljX2Nhc3Q8RERIaWdobGlnaHRTdHlsZT4oRERIaWdobGlnaHRTdHlsZUJ1YmJs
ZVN0YW5kYXJkKSB8IHN0YXRpY19jYXN0PERESGlnaGxpZ2h0U3R5bGU+KERESGlnaGxpZ2h0U3R5
bGVTdGFuZGFyZEljb25BcnJvdyksIFlFUywgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8s
IFlFUywgMCkpOwogI2Vsc2UKLSAgICAgICAgYXV0byBoaWdobGlnaHQgPSBhZG9wdENGKFBBTDo6
c29mdExpbmtfRGF0YURldGVjdG9yc19EREhpZ2hsaWdodENyZWF0ZVdpdGhSZWN0c0luVmlzaWJs
ZVJlY3RXaXRoU3R5bGVBbmREaXJlY3Rpb24obnVsbHB0ciwgJmVsZW1lbnRCb3VuZHMsIDEsIG1h
aW5GcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLCBEREhpZ2hsaWdodFN0eWxlQnViYmxl
U3RhbmRhcmQgfCBEREhpZ2hsaWdodFN0eWxlU3RhbmRhcmRJY29uQXJyb3csIFlFUywgTlNXcml0
aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8sIFlFUykpOworICAgICAgICBhdXRvIGhpZ2hsaWdodCA9
IGFkb3B0Q0YoUEFMOjpzb2Z0TGlua19EYXRhRGV0ZWN0b3JzX0RESGlnaGxpZ2h0Q3JlYXRlV2l0
aFJlY3RzSW5WaXNpYmxlUmVjdFdpdGhTdHlsZUFuZERpcmVjdGlvbihudWxscHRyLCAmZWxlbWVu
dEJvdW5kcywgMSwgbWFpbkZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCksIHN0YXRpY19j
YXN0PERESGlnaGxpZ2h0U3R5bGU+KERESGlnaGxpZ2h0U3R5bGVCdWJibGVTdGFuZGFyZCkgfCBz
dGF0aWNfY2FzdDxEREhpZ2hsaWdodFN0eWxlPihEREhpZ2hsaWdodFN0eWxlU3RhbmRhcmRJY29u
QXJyb3cpLCBZRVMsIE5TV3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwsIE5PLCBZRVMpKTsKICNlbmRp
ZgogICAgICAgICBtX2RhdGFEZXRlY3RvckNvbnRhaW5lcnNBbmRIaWdobGlnaHRzLmFwcGVuZCh7
IGVsZW1lbnQsIERhdGFEZXRlY3RvckhpZ2hsaWdodDo6Y3JlYXRlRm9ySW1hZ2VPdmVybGF5KCpt
X3BhZ2UsICp0aGlzLCBXVEZNb3ZlKGhpZ2hsaWdodCksICptYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
KGVsZW1lbnQuZ2V0KCkpKSB9KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDI4Njc1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTM2OCw5ICszNjgsOSBAQCB2b2lkIFNlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXI6OmJ1aWxkUGhvCiAKICAgICAgICAgQ0dSZWN0IGNnUmVjdCA9IHJlY3Q7CiAj
aWYgSEFWRShERF9ISUdITElHSFRfQ1JFQVRFX1dJVEhfU0NBTEUpCi0gICAgICAgIGF1dG8gZGRI
aWdobGlnaHQgPSBhZG9wdENGKFBBTDo6c29mdExpbmtfRGF0YURldGVjdG9yc19EREhpZ2hsaWdo
dENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJlY3RXaXRoU3R5bGVTY2FsZUFuZERpcmVjdGlvbihu
dWxscHRyLCAmY2dSZWN0LCAxLCBtYWluRnJhbWVWaWV3LnZpc2libGVDb250ZW50UmVjdCgpLCBE
REhpZ2hsaWdodFN0eWxlQnViYmxlU3RhbmRhcmQgfCBEREhpZ2hsaWdodFN0eWxlU3RhbmRhcmRJ
Y29uQXJyb3csIFlFUywgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8sIFlFUywgMCkpOwor
ICAgICAgICBhdXRvIGRkSGlnaGxpZ2h0ID0gYWRvcHRDRihQQUw6OnNvZnRMaW5rX0RhdGFEZXRl
Y3RvcnNfRERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2libGVSZWN0V2l0aFN0eWxlU2Nh
bGVBbmREaXJlY3Rpb24obnVsbHB0ciwgJmNnUmVjdCwgMSwgbWFpbkZyYW1lVmlldy52aXNpYmxl
Q29udGVudFJlY3QoKSwgc3RhdGljX2Nhc3Q8RERIaWdobGlnaHRTdHlsZT4oRERIaWdobGlnaHRT
dHlsZUJ1YmJsZVN0YW5kYXJkKSB8IHN0YXRpY19jYXN0PERESGlnaGxpZ2h0U3R5bGU+KERESGln
aGxpZ2h0U3R5bGVTdGFuZGFyZEljb25BcnJvdyksIFlFUywgTlNXcml0aW5nRGlyZWN0aW9uTmF0
dXJhbCwgTk8sIFlFUywgMCkpOwogI2Vsc2UKLSAgICAgICAgYXV0byBkZEhpZ2hsaWdodCA9IGFk
b3B0Q0YoUEFMOjpzb2Z0TGlua19EYXRhRGV0ZWN0b3JzX0RESGlnaGxpZ2h0Q3JlYXRlV2l0aFJl
Y3RzSW5WaXNpYmxlUmVjdFdpdGhTdHlsZUFuZERpcmVjdGlvbihudWxscHRyLCAmY2dSZWN0LCAx
LCBtYWluRnJhbWVWaWV3LnZpc2libGVDb250ZW50UmVjdCgpLCBEREhpZ2hsaWdodFN0eWxlQnVi
YmxlU3RhbmRhcmQgfCBEREhpZ2hsaWdodFN0eWxlU3RhbmRhcmRJY29uQXJyb3csIFlFUywgTlNX
cml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8sIFlFUykpOworICAgICAgICBhdXRvIGRkSGlnaGxp
Z2h0ID0gYWRvcHRDRihQQUw6OnNvZnRMaW5rX0RhdGFEZXRlY3RvcnNfRERIaWdobGlnaHRDcmVh
dGVXaXRoUmVjdHNJblZpc2libGVSZWN0V2l0aFN0eWxlQW5kRGlyZWN0aW9uKG51bGxwdHIsICZj
Z1JlY3QsIDEsIG1haW5GcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KCksIHN0YXRpY19jYXN0
PERESGlnaGxpZ2h0U3R5bGU+KERESGlnaGxpZ2h0U3R5bGVCdWJibGVTdGFuZGFyZCkgfCBzdGF0
aWNfY2FzdDxEREhpZ2hsaWdodFN0eWxlPihEREhpZ2hsaWdodFN0eWxlU3RhbmRhcmRJY29uQXJy
b3cpLCBZRVMsIE5TV3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwsIE5PLCBZRVMpKTsKICNlbmRpZgog
ICAgICAgICBhdXRvIGhpZ2hsaWdodCA9IERhdGFEZXRlY3RvckhpZ2hsaWdodDo6Y3JlYXRlRm9y
VGVsZXBob25lTnVtYmVyKG1fcGFnZSwgKnRoaXMsIFdURk1vdmUoZGRIaWdobGlnaHQpLCBXVEZN
b3ZlKHJhbmdlKSk7CiAgICAgICAgIG1faGlnaGxpZ2h0cy5hZGQoaGlnaGxpZ2h0LmdldCgpKTsK
QEAgLTQxMyw5ICs0MTMsOSBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmJ1aWxk
U2VsCiAgICAgICAgIGlmICghY2dSZWN0cy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIENHUmVj
dCB2aXNpYmxlUmVjdCA9IG1haW5GcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpOwogI2lm
IEhBVkUoRERfSElHSExJR0hUX0NSRUFURV9XSVRIX1NDQUxFKQotICAgICAgICAgICAgYXV0byBk
ZEhpZ2hsaWdodCA9IGFkb3B0Q0YoUEFMOjpzb2Z0TGlua19EYXRhRGV0ZWN0b3JzX0RESGlnaGxp
Z2h0Q3JlYXRlV2l0aFJlY3RzSW5WaXNpYmxlUmVjdFdpdGhTdHlsZVNjYWxlQW5kRGlyZWN0aW9u
KG51bGxwdHIsIGNnUmVjdHMuYmVnaW4oKSwgY2dSZWN0cy5zaXplKCksIHZpc2libGVSZWN0LCBE
REhpZ2hsaWdodFN0eWxlQnViYmxlTm9uZSB8IERESGlnaGxpZ2h0U3R5bGVTdGFuZGFyZEljb25B
cnJvdyB8IERESGlnaGxpZ2h0U3R5bGVCdXR0b25TaG93QWx3YXlzLCBZRVMsIE5TV3JpdGluZ0Rp
cmVjdGlvbk5hdHVyYWwsIE5PLCBZRVMsIDApKTsKKyAgICAgICAgICAgIGF1dG8gZGRIaWdobGln
aHQgPSBhZG9wdENGKFBBTDo6c29mdExpbmtfRGF0YURldGVjdG9yc19EREhpZ2hsaWdodENyZWF0
ZVdpdGhSZWN0c0luVmlzaWJsZVJlY3RXaXRoU3R5bGVTY2FsZUFuZERpcmVjdGlvbihudWxscHRy
LCBjZ1JlY3RzLmJlZ2luKCksIGNnUmVjdHMuc2l6ZSgpLCB2aXNpYmxlUmVjdCwgc3RhdGljX2Nh
c3Q8RERIaWdobGlnaHRTdHlsZT4oRERIaWdobGlnaHRTdHlsZUJ1YmJsZU5vbmUpIHwgc3RhdGlj
X2Nhc3Q8RERIaWdobGlnaHRTdHlsZT4oRERIaWdobGlnaHRTdHlsZVN0YW5kYXJkSWNvbkFycm93
KSB8IHN0YXRpY19jYXN0PERESGlnaGxpZ2h0U3R5bGU+KERESGlnaGxpZ2h0U3R5bGVCdXR0b25T
aG93QWx3YXlzKSwgWUVTLCBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1cmFsLCBOTywgWUVTLCAwKSk7
CiAjZWxzZQotICAgICAgICAgICAgYXV0byBkZEhpZ2hsaWdodCA9IGFkb3B0Q0YoUEFMOjpzb2Z0
TGlua19EYXRhRGV0ZWN0b3JzX0RESGlnaGxpZ2h0Q3JlYXRlV2l0aFJlY3RzSW5WaXNpYmxlUmVj
dFdpdGhTdHlsZUFuZERpcmVjdGlvbihudWxscHRyLCBjZ1JlY3RzLmJlZ2luKCksIGNnUmVjdHMu
c2l6ZSgpLCB2aXNpYmxlUmVjdCwgRERIaWdobGlnaHRTdHlsZUJ1YmJsZU5vbmUgfCBEREhpZ2hs
aWdodFN0eWxlU3RhbmRhcmRJY29uQXJyb3cgfCBEREhpZ2hsaWdodFN0eWxlQnV0dG9uU2hvd0Fs
d2F5cywgWUVTLCBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1cmFsLCBOTywgWUVTKSk7CisgICAgICAg
ICAgICBhdXRvIGRkSGlnaGxpZ2h0ID0gYWRvcHRDRihQQUw6OnNvZnRMaW5rX0RhdGFEZXRlY3Rv
cnNfRERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2libGVSZWN0V2l0aFN0eWxlQW5kRGly
ZWN0aW9uKG51bGxwdHIsIGNnUmVjdHMuYmVnaW4oKSwgY2dSZWN0cy5zaXplKCksIHZpc2libGVS
ZWN0LCBzdGF0aWNfY2FzdDxEREhpZ2hsaWdodFN0eWxlPihEREhpZ2hsaWdodFN0eWxlQnViYmxl
Tm9uZSkgfCBzdGF0aWNfY2FzdDxEREhpZ2hsaWdodFN0eWxlPihEREhpZ2hsaWdodFN0eWxlU3Rh
bmRhcmRJY29uQXJyb3cpIHwgc3RhdGljX2Nhc3Q8RERIaWdobGlnaHRTdHlsZT4oRERIaWdobGln
aHRTdHlsZUJ1dHRvblNob3dBbHdheXMpLCBZRVMsIE5TV3JpdGluZ0RpcmVjdGlvbk5hdHVyYWws
IE5PLCBZRVMpKTsKICNlbmRpZgogICAgICAgICAgICAgYXV0byBoaWdobGlnaHQgPSBEYXRhRGV0
ZWN0b3JIaWdobGlnaHQ6OmNyZWF0ZUZvclNlbGVjdGlvbihtX3BhZ2UsICp0aGlzLCBXVEZNb3Zl
KGRkSGlnaGxpZ2h0KSwgV1RGTW92ZSgqc2VsZWN0aW9uUmFuZ2UpKTsKICAgICAgICAgICAgIG1f
aGlnaGxpZ2h0cy5hZGQoaGlnaGxpZ2h0LmdldCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNv
Y29hLmNwcAkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcw
LDcgKzE3MCw3IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpnZXRBdWRpb1N0cmUKICAg
ICBjb25zdCBpbnQgYml0c1BlckJ5dGUgPSA4OwogICAgIHN0cmVhbUZvcm1hdC5tU2FtcGxlUmF0
ZSA9IGhhcmR3YXJlU2FtcGxlUmF0ZSgpOwogICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0SUQgPSBr
QXVkaW9Gb3JtYXRMaW5lYXJQQ007Ci0gICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRGbGFncyA9IGtB
dWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQgfCBrQXVkaW9Gb3JtYXRGbGFnSXNOb25J
bnRlcmxlYXZlZDsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0gc3RhdGljX2Nhc3Q8
QXVkaW9Gb3JtYXRGbGFncz4oa0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCkgfCBz
dGF0aWNfY2FzdDxBdWRpb0Zvcm1hdEZsYWdzPihrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxl
YXZlZCk7CiAgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5dGVzUGVyRmxvYXQ7
CiAgICAgc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAxOwogICAgIHN0cmVhbUZvcm1h
dC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29j
b2EuY3BwCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMSw3
ICs1MjEsNyBAQCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gQXVkaW9GaWxlUmVhCiAgICAg
Y29uc3QgaW50IGJ5dGVzUGVyRmxvYXQgPSBzaXplb2YoRmxvYXQzMik7CiAgICAgY29uc3QgaW50
IGJpdHNQZXJCeXRlID0gODsKICAgICBvdXRGb3JtYXQubUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0
TGluZWFyUENNOwotICAgIG91dEZvcm1hdC5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFn
c05hdGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7Cisg
ICAgb3V0Rm9ybWF0Lm1Gb3JtYXRGbGFncyA9IHN0YXRpY19jYXN0PEF1ZGlvRm9ybWF0RmxhZ3M+
KGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQpIHwgc3RhdGljX2Nhc3Q8QXVkaW9G
b3JtYXRGbGFncz4oa0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQpOwogICAgIG91dEZv
cm1hdC5tQnl0ZXNQZXJQYWNrZXQgPSBvdXRGb3JtYXQubUJ5dGVzUGVyRnJhbWUgPSBieXRlc1Bl
ckZsb2F0OwogICAgIG91dEZvcm1hdC5tRnJhbWVzUGVyUGFja2V0ID0gMTsKICAgICBvdXRGb3Jt
YXQubUJpdHNQZXJDaGFubmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3BwCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbjo6Q0FBdWRpb1N0cmVhbUQKICAgICBtX3N0cmVhbURlc2NyaXB0aW9uLm1DaGFubmVsc1Bl
ckZyYW1lID0gbnVtQ2hhbm5lbHM7CiAgICAgbV9zdHJlYW1EZXNjcmlwdGlvbi5tQnl0ZXNQZXJG
cmFtZSA9IDA7CiAgICAgbV9zdHJlYW1EZXNjcmlwdGlvbi5tQnl0ZXNQZXJQYWNrZXQgPSAwOwot
ICAgIG1fc3RyZWFtRGVzY3JpcHRpb24ubUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NO
YXRpdmVFbmRpYW4gfCBrQXVkaW9Gb3JtYXRGbGFnSXNQYWNrZWQ7CisgICAgbV9zdHJlYW1EZXNj
cmlwdGlvbi5tRm9ybWF0RmxhZ3MgPSBzdGF0aWNfY2FzdDxBdWRpb0Zvcm1hdEZsYWdzPihrQXVk
aW9Gb3JtYXRGbGFnc05hdGl2ZUVuZGlhbikgfCBzdGF0aWNfY2FzdDxBdWRpb0Zvcm1hdEZsYWdz
PihrQXVkaW9Gb3JtYXRGbGFnSXNQYWNrZWQpOwogICAgIG1fc3RyZWFtRGVzY3JpcHRpb24ubVJl
c2VydmVkID0gMDsKIAogICAgIGludCB3b3Jkc2l6ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbi5oCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NjAsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgdWludDMyX3QgYnl0ZXNQZXJQYWNrZXQoKSBjb25z
dDsKICAgICB1aW50MzJfdCBmb3JtYXRGbGFncygpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG9wZXJhdG9yPT0oc3RhdGljX2Nhc3Q8Y29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiY+KG90
aGVyKSk7IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uJiBvdGhlcikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBvdGhlcikgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvT3V0
cHV0VW5pdEFkYXB0b3JJT1MuY3BwCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpj
b25maWd1cmUoZgogICAgIGNvbnN0ZXhwciBpbnQgYml0c1BlckJ5dGUgPSA4OwogICAgIHN0cmVh
bUZvcm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0ZTsKICAgICBzdHJlYW1Gb3Jt
YXQubUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOwotICAgIHN0cmVhbUZvcm1hdC5t
Rm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlv
Rm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRGbGFn
cyA9IHN0YXRpY19jYXN0PEF1ZGlvRm9ybWF0RmxhZ3M+KGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZl
RmxvYXRQYWNrZWQpIHwgc3RhdGljX2Nhc3Q8QXVkaW9Gb3JtYXRGbGFncz4oa0F1ZGlvRm9ybWF0
RmxhZ0lzTm9uSW50ZXJsZWF2ZWQpOwogICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQg
PSBieXRlc1BlckZsb2F0OwogICAgIHN0cmVhbUZvcm1hdC5tRnJhbWVzUGVyUGFja2V0ID0gMTsK
ICAgICBzdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgPSBieXRlc1BlckZsb2F0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JN
YWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcAkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgQXVkaW9PdXRwdXRVbml0QWRh
cHRvcjo6Y29uZmlndXJlKGYKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFt
Rm9ybWF0OwogICAgIHN0cmVhbUZvcm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0
ZTsKICAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOwot
ICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZs
b2F0UGFja2VkIHwga0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAgc3RyZWFt
Rm9ybWF0Lm1Gb3JtYXRGbGFncyA9IHN0YXRpY19jYXN0PEF1ZGlvRm9ybWF0RmxhZ3M+KGtBdWRp
b0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQpIHwgc3RhdGljX2Nhc3Q8QXVkaW9Gb3JtYXRG
bGFncz4oa0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQpOwogICAgIHN0cmVhbUZvcm1h
dC5tQnl0ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZsb2F0OwogICAgIHN0cmVhbUZvcm1hdC5tRnJh
bWVzUGVyUGFja2V0ID0gMTsKICAgICBzdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgPSBieXRl
c1BlckZsb2F0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAJKHJldmlz
aW9uIDI4Njc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBA
IERpc3BsYXlSZWZyZXNoTW9uaXRvciogRGlzcGxheVJlZnJlc2hNb24KIAogICAgIExPR19XSVRI
X1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJbV2ViXSBEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYW5hZ2VyOjplbnN1cmVNb25pdG9yRm9yRGlzcGxheUlEKCkgLSBjcmVhdGVkIG1vbml0b3Ig
IiA8PCBtb25pdG9yLmdldCgpIDw8ICIgZm9yIGRpc3BsYXkgIiA8PCBkaXNwbGF5SUQpOwogICAg
IERpc3BsYXlSZWZyZXNoTW9uaXRvciogcmVzdWx0ID0gbW9uaXRvci5nZXQoKTsKLSAgICBtX21v
bml0b3JzLmFwcGVuZCh7IFdURk1vdmUobW9uaXRvcikgfSk7CisgICAgbV9tb25pdG9ycy5hcHBl
bmQoRGlzcGxheVJlZnJlc2hNb25pdG9yV3JhcHBlciB7IFdURk1vdmUobW9uaXRvcikgfSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIu
aAkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2
Niw2IEBAIHByaXZhdGU6CiAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBlbnN1cmVNb25pdG9y
Rm9yRGlzcGxheUlEKFBsYXRmb3JtRGlzcGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0
b3J5Kik7CiAKICAgICBzdHJ1Y3QgRGlzcGxheVJlZnJlc2hNb25pdG9yV3JhcHBlciB7Ci0gICAg
ICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvcldyYXBwZXIoRGlzcGxheVJlZnJlc2hNb25pdG9yV3Jh
cHBlciYmKSA9IGRlZmF1bHQ7CiAgICAgICAgIH5EaXNwbGF5UmVmcmVzaE1vbml0b3JXcmFwcGVy
KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1vbml0b3IpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29y
aXRobS5oCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyNiwxMCAr
NDI2LDYgQEAgaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBGbwogc3RydWN0
IEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMgewogICAgIHVzaW5nIFJhbmdlID0gRm9udFNlbGVj
dGlvblJhbmdlOwogCi0gICAgRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcygpID0gZGVmYXVsdDsK
LSAgICBGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGNvbnN0IEZvbnRTZWxlY3Rpb25DYXBhYmls
aXRpZXMmKSA9IGRlZmF1bHQ7Ci0gICAgRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcyYgb3BlcmF0
b3I9KGNvbnN0IEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMmKSA9IGRlZmF1bHQ7Ci0KICAgICBj
b25zdGV4cHIgc3RkOjp0dXBsZTxSYW5nZSwgUmFuZ2UsIFJhbmdlPiB0aWVkKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBXVEY6OnRpZSh3ZWlnaHQsIHdpZHRoLCBzbG9wZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDI4Njc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDEyICs2Mywx
MiBAQCBwdWJsaWM6CiAgICAgVUNoYXIgY3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICgqbV90ZXh0
UnVuKVttX29mZnNldF07IH0KICAgICBVQ2hhckRpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7
IHJldHVybiBhdEVuZCgpID8gVV9PVEhFUl9ORVVUUkFMIDogdV9jaGFyRGlyZWN0aW9uKGN1cnJl
bnQoKSk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90
aGVyKQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0ICYm
IG1fdGV4dFJ1biA9PSBvdGhlci5tX3RleHRSdW47CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFRleHRCb3hJdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICFvcGVyYXRvcj09KG90
aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVy
KSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAogcHJpdmF0ZToKICAgICBj
b25zdCBUZXh0UnVuKiBtX3RleHRSdW47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAJKHJldmlz
aW9uIDI4Njc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVm
ZmVyQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE1ICs0NSwxNSBAQCBzdGF0
aWMgaW5saW5lIHZJbWFnZV9DR0ltYWdlRm9ybWF0IG1ha2VWCiAgICAgICAgIHN3aXRjaCAoZm9y
bWF0LnBpeGVsRm9ybWF0KSB7CiAgICAgICAgIGNhc2UgUGl4ZWxGb3JtYXQ6OlJHQkE4OgogICAg
ICAgICAgICAgaWYgKGZvcm1hdC5hbHBoYUZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpQcmVtdWx0aXBsaWVkKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUo
OHUsIDMydSwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZExhc3QpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoOHUsIDMy
dSwgc3RhdGljX2Nhc3Q8Q0dCaXRtYXBJbmZvPihrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykgfCBz
dGF0aWNfY2FzdDxDR0JpdG1hcEluZm8+KGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkp
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVw
bGUoOHUsIDMydSwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcgfCBrQ0dJbWFnZUFscGhhTGFzdCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSg4dSwgMzJ1LCBzdGF0aWNf
Y2FzdDxDR0JpdG1hcEluZm8+KGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSB8IHN0YXRpY19jYXN0
PENHQml0bWFwSW5mbz4oa0NHSW1hZ2VBbHBoYUxhc3QpKTsKIAogICAgICAgICBjYXNlIFBpeGVs
Rm9ybWF0OjpCR1JBODoKICAgICAgICAgICAgIGlmIChmb3JtYXQuYWxwaGFGb3JtYXQgPT0gQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3R1cGxlKDh1LCAzMnUsIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwg
a0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV90dXBsZSg4dSwgMzJ1LCBzdGF0aWNfY2FzdDxDR0JpdG1hcEluZm8+KGtDR0Jp
dG1hcEJ5dGVPcmRlcjMyTGl0dGxlKSB8IHN0YXRpY19jYXN0PENHQml0bWFwSW5mbz4oa0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoOHUsIDMydSwga0NHQml0bWFwQnl0ZU9yZGVy
MzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhRmlyc3QpOworICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdHVwbGUoOHUsIDMydSwgc3RhdGljX2Nhc3Q8Q0dCaXRtYXBJbmZvPihrQ0dCaXRt
YXBCeXRlT3JkZXIzMkxpdHRsZSkgfCBzdGF0aWNfY2FzdDxDR0JpdG1hcEluZm8+KGtDR0ltYWdl
QWxwaGFGaXJzdCkpOwogCiAgICAgICAgIGNhc2UgUGl4ZWxGb3JtYXQ6OlJHQjEwOgogICAgICAg
ICBjYXNlIFBpeGVsRm9ybWF0OjpSR0IxMEE4OgpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgaW5s
aW5lIHZJbWFnZV9DR0ltYWdlRm9ybWF0IG1ha2VWCiAgICAgICAgIC8vIFdlIGN1cnJlbnRseSBv
bmx5IHN1cHBvcnQgOCBiaXQgcGl4ZWwgZm9ybWF0cyBmb3IgdGhlc2UgY29udmVyc2lvbnMuCiAK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dHVwbGUoOHUsIDMydSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhh
Rmlyc3QpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKDh1LCAzMnUsIHN0YXRpY19j
YXN0PENHQml0bWFwSW5mbz4oa0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHwgc3RhdGljX2Nh
c3Q8Q0dCaXRtYXBJbmZvPihrQ0dJbWFnZUFscGhhRmlyc3QpKTsKICAgICB9KGZvcm1hdCk7CiAK
ICAgICB2SW1hZ2VfQ0dJbWFnZUZvcm1hdCByZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENH
LmNwcAkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MCw3ICsz
NjAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4CiAgICAgICAg
IC8vIGFscGhhIGNoYW5uZWwuIENyZWF0aW9uIG9mIGEgYml0bWFwIGNvbnRleHQgd2l0aCBhbiBh
bHBoYSBjaGFubmVsCiAgICAgICAgIC8vIGRvZXNuJ3Qgc2VlbSB0byB3b3JrIHVubGVzcyBpdCdz
IHByZW11bHRpcGxpZWQuCiAgICAgICAgIGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFw
Q29udGV4dENyZWF0ZSgwLCBtX2ltYWdlV2lkdGgsIG1faW1hZ2VIZWlnaHQsIDgsIG1faW1hZ2VX
aWR0aCAqIDQsCi0gICAgICAgICAgICBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhh
UHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CisgICAgICAg
ICAgICBzUkdCQ29sb3JTcGFjZVJlZigpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRGaXJzdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHQml0bWFw
Qnl0ZU9yZGVyMzJIb3N0KSkpOwogICAgICAgICBpZiAoIWJpdG1hcENvbnRleHQpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAJKHJldmlz
aW9uIDI4Njc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0
YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWYKICAgICBpZiAocmVzb2x1dGlv
blNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6
WWVzKQogICAgICAgICBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoY3JlYXRlQ3JvcHBlZElt
YWdlSWZOZWNlc3NhcnkoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgYmFja2VuZFNpemUp
KTsKICAgICBlbHNlIHsKLSAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENv
bnRleHRDcmVhdGUoMCwgbG9naWNhbFNpemUud2lkdGgoKSwgbG9naWNhbFNpemUuaGVpZ2h0KCks
IDgsIDQgKiBsb2dpY2FsU2l6ZS53aWR0aCgpLCBjb2xvclNwYWNlRm9yQml0bWFwKGltYWdlLT5j
b2xvclNwYWNlKCkpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFw
Qnl0ZU9yZGVyMzJIb3N0KSk7CisgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRt
YXBDb250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxTaXplLndpZHRoKCksIGxvZ2ljYWxTaXplLmhlaWdo
dCgpLCA4LCA0ICogbG9naWNhbFNpemUud2lkdGgoKSwgY29sb3JTcGFjZUZvckJpdG1hcChpbWFn
ZS0+Y29sb3JTcGFjZSgpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkRmlyc3QpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0JpdG1hcEJ5dGVPcmRl
cjMySG9zdCkpKTsKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCks
IGtDR0JsZW5kTW9kZUNvcHkpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQu
Z2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplKSk7CiAgICAg
ICAgIEZsb2F0U2l6ZSBpbWFnZVNpemVJblVzZXJTcGFjZSA9IGxvZ2ljYWxTaXplOwpAQCAtMTk0
LDcgKzE5NCw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2UKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGF1dG8gaW1hZ2VTaXplID0gcGl4
ZWxCdWZmZXItPnNpemUoKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShp
bWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6
ZS53aWR0aCgpLCBwaXhlbEJ1ZmZlci0+Zm9ybWF0KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9y
U3BhY2UoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tp
cExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERl
ZmF1bHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUu
d2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgp
LCBwaXhlbEJ1ZmZlci0+Zm9ybWF0KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQpIHwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QpLCBkYXRhUHJvdmlkZXIu
Z2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgfQogCiAg
ICAgaWYgKHJlc29sdXRpb25TY2FsZSgpID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFBy
ZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7CkBAIC0yMDgsNyArMjA4LDcgQEAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZQogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gaW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpOwotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlKDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSwgOCwg
NCAqIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgY29sb3JTcGFjZUZvckJpdG1hcChjb2xvclNwYWNl
KCkpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVy
MzJIb3N0KSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGUoMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgpLmhlaWdodCgpLCA4LCA0
ICogYmFja2VuZFNpemUoKS53aWR0aCgpLCBjb2xvclNwYWNlRm9yQml0bWFwKGNvbG9yU3BhY2Uo
KSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0
KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKSk7CiAg
ICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkp
OwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAw
LCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0KCkpKTsKICAgICBD
R0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5k
U2l6ZSgpLndpZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCShyZXZpc2lvbiAyODY3NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZQogICAgIHNpemVfdCBudW1CeXRlcyA9IGJh
Y2tlbmRTaXplLmhlaWdodCgpICogYnl0ZXNQZXJSb3c7CiAgICAgdmVyaWZ5SW1hZ2VCdWZmZXJJ
c0JpZ0Vub3VnaChkYXRhLCBudW1CeXRlcyk7CiAKLSAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGRhdGEsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tl
bmRTaXplLmhlaWdodCgpLCA4LCBieXRlc1BlclJvdywgcGFyYW1ldGVycy5jb2xvclNwYWNlLnBs
YXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NH
Qml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CisgICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENH
Qml0bWFwQ29udGV4dENyZWF0ZShkYXRhLCBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6
ZS5oZWlnaHQoKSwgOCwgYnl0ZXNQZXJSb3csIHBhcmFtZXRlcnMuY29sb3JTcGFjZS5wbGF0Zm9y
bUNvbG9yU3BhY2UoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0ltYWdlQWxwaGFQcmVtdWx0
aXBsaWVkRmlyc3QpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0JpdG1hcEJ5dGVPcmRlcjMy
SG9zdCkpKTsKICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
QEAgLTE0NSw3ICsxNDUsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRt
YXBCCiAgICAgICAgIGF1dG8gYmFja2VuZFNpemUgPSB0aGlzLT5iYWNrZW5kU2l6ZSgpOwogICAg
ICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoCiAg
ICAgICAgICAgICBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwg
MzIsIGJ5dGVzUGVyUm93KCksCi0gICAgICAgICAgICBjb2xvclNwYWNlKCkucGxhdGZvcm1Db2xv
clNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRl
T3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAorICAgICAgICAgICAgY29sb3JTcGFj
ZSgpLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRGaXJzdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHQml0bWFw
Qnl0ZU9yZGVyMzJIb3N0KSwgbV9kYXRhUHJvdmlkZXIuZ2V0KCksCiAgICAgICAgICAgICAwLCB0
cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkpOwogICAgIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJVdGlsaXRpZXNDRy5jcHAJKHJldmlzaW9uIDI4Njc1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIGJvb2wgZW5jb2RlKGNvbnN0IFBpeGVs
QnVmZmVyJiBzbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9
IHNvdXJjZS5zaXplKCk7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShp
bWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6
ZS53aWR0aCgpLCBzb3VyY2UuZm9ybWF0KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2Uo
KSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGRhdGFBbHBoYUluZm8sIGRhdGFQcm92aWRl
ci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKKyAgICBhdXRv
IGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNp
emUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHNvdXJjZS5mb3JtYXQo
KS5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
a0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGF0YUFs
cGhhSW5mbyksIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVu
dERlZmF1bHQpKTsKIAogICAgIHJldHVybiBlbmNvZGUoaW1hZ2UuZ2V0KCksIGRlc3RpbmF0aW9u
VVRJLmdldCgpLCBxdWFsaXR5LCBmdW5jdGlvbik7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAkocmV2aXNp
b24gMjg2NzUwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZl
SW1hZ2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgQ29sb3IgTmF0aXZl
SW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcgogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAog
ICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKLSAgICBhdXRvIGJpdG1hcENvbnRl
eHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwgc2l6ZW9m
KHBpeGVsKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRM
YXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKKyAgICBhdXRvIGJpdG1hcENvbnRleHQg
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwgc2l6ZW9mKHBp
eGVsKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0ltYWdl
QWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHQml0bWFw
Qnl0ZU9yZGVyMzJCaWcpKSk7CiAKICAgICBpZiAoIWJpdG1hcENvbnRleHQpCiAgICAgICAgIHJl
dHVybiBDb2xvcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvSU9TdXJmYWNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTksNyArMjk5LDcgQEAgQ0dDb250ZXh0UmVmIElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZv
cm1DbwogICAgIGlmIChtX2NnQ29udGV4dCkKICAgICAgICAgcmV0dXJuIG1fY2dDb250ZXh0Lmdl
dCgpOwogCi0gICAgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0OworICAgIENHQml0bWFwSW5m
byBiaXRtYXBJbmZvID0gc3RhdGljX2Nhc3Q8Q0dCaXRtYXBJbmZvPihrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZEZpcnN0KSB8IHN0YXRpY19jYXN0PENHQml0bWFwSW5mbz4oa0NHQml0bWFwQnl0
ZU9yZGVyMzJIb3N0KTsKIAogICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gODsKICAgICBz
aXplX3QgYml0c1BlclBpeGVsID0gMzI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNw
cAkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsx
NTgsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGl4ZWxCdWZmZXJDb25mb3JtCiAgICAgICAg
IGJ1ZmZlciA9IGFkb3B0Q0Yob3V0cHV0QnVmZmVyKTsKICAgICB9CiAKLSAgICBDR0JpdG1hcElu
Zm8gYml0bWFwSW5mbyA9IGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBo
YUZpcnN0OworICAgIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvID0gc3RhdGljX2Nhc3Q8Q0dCaXRt
YXBJbmZvPihrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSkgfCBzdGF0aWNfY2FzdDxDR0JpdG1h
cEluZm8+KGtDR0ltYWdlQWxwaGFGaXJzdCk7CiAgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ1ZQ
aXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93KGJ1ZmZlci5nZXQoKSk7CiAgICAgc2l6ZV90IGJ5dGVM
ZW5ndGggPSBieXRlc1BlclJvdyAqIGhlaWdodDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVyYXRvci5oCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICAgICAgY2xlYXJDdXJyZW50
SXRlbSgpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3Ro
ZXIpIHsgcmV0dXJuICZtX2Rpc3BsYXlMaXN0ID09ICZvdGhlci5tX2Rpc3BsYXlMaXN0ICYmIG1f
Y3Vyc29yID09IG90aGVyLm1fY3Vyc29yOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0
ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAmbV9kaXNwbGF5
TGlzdCA9PSAmb3RoZXIubV9kaXNwbGF5TGlzdCAmJiBtX2N1cnNvciA9PSBvdGhlci5tX2N1cnNv
cjsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgdm9pZCBvcGVyYXRvcisrKCkgeyBhZHZh
bmNlKCk7IH0KIAogICAgIHN0cnVjdCBWYWx1ZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJh
bnNmZXIuaAkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDggKzM3LDYgQEAgZW51bSBDb21wb25lbnRUcmFuc2ZlclR5cGUgewogfTsKIAogc3RydWN0IENv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gewotICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24o
KSA9IGRlZmF1bHQ7Ci0KICAgICBDb21wb25lbnRUcmFuc2ZlclR5cGUgdHlwZSB7IEZFQ09NUE9O
RU5UVFJBTlNGRVJfVFlQRV9VTktOT1dOIH07CiAKICAgICBmbG9hdCBzbG9wZSB7IDAgfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4M0RU
cmFuc2Zvcm1PcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmgJKHJldmlz
aW9uIDI4Njc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiAr
NTIsNyBAQCBwcml2YXRlOiAgICAKIAogICAgIGJvb2wgaXNSZXByZXNlbnRhYmxlSW4yRCgpIGNv
bnN0IGZpbmFsOwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hdHJpeDNEVHJhbnNmb3Jt
T3BlcmF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3BlcmF0b3I9PShzdGF0aWNfY2FzdDxj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mPihvdGhlcikpOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBh
cHBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFNpemUmKSBj
b25zdCBvdmVycmlkZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbi5oCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw2ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0lkZW50aXR5KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9hID09IDEgJiYgbV9iID09IDAgJiYgbV9jID09IDAgJiYgbV9k
ID09IDEgJiYgbV9lID09IDAgJiYgbV9mID09IDA7IH0KICAgICBib29sIGlzQWZmZWN0ZWRCeVRy
YW5zZm9ybU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFpc0lkZW50aXR5KCk7IH0K
IAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24mIG90
aGVyKSBjb25zdCB7IHJldHVybiBvcGVyYXRvcj09KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbiY+KG90aGVyKSk7IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNm
b3JtT3BlcmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGFwcGx5KFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0IG92ZXJyaWRl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNw
ZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlv
bi5oCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU0LDYgKzU0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWZmZWN0ZWRCeVRyYW5z
Zm9ybU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFpc0lkZW50aXR5KCk7IH0KICAg
ICBib29sIGlzUmVwcmVzZW50YWJsZUluMkQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0
aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3BlcmF0b3I9PShzdGF0aWNfY2FzdDxjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb24mPihvdGhlcikpOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFRyYW5zZm9ybU9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RkOjpvcHRpb25h
bDxmbG9hdD4gZmxvYXRWYWx1ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmgJKHJldmlzaW9uIDI4Njc1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIGRvdWJsZSB6KCkg
Y29uc3QgeyByZXR1cm4gbV96OyB9CiAgICAgZG91YmxlIGFuZ2xlKCkgY29uc3QgeyByZXR1cm4g
bV9hbmdsZTsgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG9wZXJhdG9yPT0oc3RhdGljX2Nhc3Q8Y29u
c3QgVHJhbnNmb3JtT3BlcmF0aW9uJj4ob3RoZXIpKTsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFJlZjxUcmFu
c2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgY29u
c3QgQmxlbmRpbmdDb250ZXh0JiwgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBmYWxzZSkgZmluYWw7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NjYWxl
VHJhbnNmb3JtT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oCShyZXZpc2lv
biAyODY3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1NjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcg
QEAgcHVibGljOgogICAgIGRvdWJsZSB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9CiAgICAgZG91
YmxlIHooKSBjb25zdCB7IHJldHVybiBtX3o7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG9wZXJhdG9y
PT0oc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJj4ob3RoZXIpKTsgfQogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mKSBjb25zdCBmaW5hbDsK
IAogICAgIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbiogZnJvbSwgY29uc3QgQmxlbmRpbmdDb250ZXh0JiwgYm9vbCBibGVuZFRvSWRlbnRpdHkg
PSBmYWxzZSkgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRp
b24uaAkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9Ta2V3VHJhbnNmb3JtT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDYgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzSWRlbnRpdHkoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2FuZ2xlWCA9PSAwICYmIG1fYW5nbGVZID09IDA7IH0KICAgICBib29s
IGlzQWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFp
c0lkZW50aXR5KCk7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTa2V3VHJhbnNmb3Jt
T3BlcmF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3BlcmF0b3I9PShzdGF0aWNfY2FzdDxj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mPihvdGhlcikpOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBh
cHBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFNpemUmKSBj
b25zdCBvdmVycmlkZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbi5oCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNJZGVudGl0
eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFmbG9hdFZhbHVlRm9yTGVuZ3RoKG1feCwgMSkgJiYg
IWZsb2F0VmFsdWVGb3JMZW5ndGgobV95LCAxKSAmJiAhZmxvYXRWYWx1ZUZvckxlbmd0aChtX3os
IDEpOyB9CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3Bl
cmF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3BlcmF0b3I9PShzdGF0aWNfY2FzdDxjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb24mPihvdGhlcikpOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVmPFRyYW5zZm9y
bU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBjb25zdCBC
bGVuZGluZ0NvbnRleHQmLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSBmaW5hbDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VFcnJvck1hYy5tbQkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTM2LDggKzEzNiw4IEBAIGNvbnN0IFN0cmluZyYgUmVzb3VyY2VFcnJvcjo6Z2V0Q0ZFcnJvckQK
IAogdm9pZCBSZXNvdXJjZUVycm9yOjptYXBQbGF0Zm9ybUVycm9yKCkKIHsKLSAgICBzdGF0aWNf
YXNzZXJ0KE5TVVJMRXJyb3JUaW1lZE91dCA9PSBrQ0ZVUkxFcnJvclRpbWVkT3V0LCAiTlNVUkxF
cnJvclRpbWVkT3V0IG5lZWRzIHRvIGVxdWFsIGtDRlVSTEVycm9yVGltZWRPdXQiKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KE5TVVJMRXJyb3JDYW5jZWxsZWQgPT0ga0NGVVJMRXJyb3JDYW5jZWxsZWQs
ICJOU1VSTEVycm9yQ2FuY2VsbGVkIG5lZWRzIHRvIGVxdWFsIGtDRlVSTEVycm9yQ2FuY2VsbGVk
Iik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxOU0ludGVnZXI+KE5TVVJMRXJyb3JU
aW1lZE91dCkgPT0gc3RhdGljX2Nhc3Q8TlNJbnRlZ2VyPihrQ0ZVUkxFcnJvclRpbWVkT3V0KSwg
Ik5TVVJMRXJyb3JUaW1lZE91dCBuZWVkcyB0byBlcXVhbCBrQ0ZVUkxFcnJvclRpbWVkT3V0Iik7
CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxOU0ludGVnZXI+KE5TVVJMRXJyb3JDYW5j
ZWxsZWQpID09IHN0YXRpY19jYXN0PE5TSW50ZWdlcj4oa0NGVVJMRXJyb3JDYW5jZWxsZWQpLCAi
TlNVUkxFcnJvckNhbmNlbGxlZCBuZWVkcyB0byBlcXVhbCBrQ0ZVUkxFcnJvckNhbmNlbGxlZCIp
OwogCiAgICAgaWYgKCFtX3BsYXRmb3JtRXJyb3IpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HYXBSZWN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HYXBSZWN0cy5oCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR2FwUmVjdHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgICAgIH0KIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR2FwUmVjdHMmIG90aGVy
KQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR2FwUmVjdHMmIG90aGVyKSBjb25zdAog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9sZWZ0ID09IG90aGVyLmxlZnQoKSAmJiBt
X2NlbnRlciA9PSBvdGhlci5jZW50ZXIoKSAmJiBtX3JpZ2h0ID09IG90aGVyLnJpZ2h0KCk7CiAg
ICAgICAgIH0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEdhcFJlY3RzJiBvdGhlcikg
eyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEdhcFJlY3RzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0K
IAogICAgIHByaXZhdGU6CiAgICAgICAgIExheW91dFJlY3QgbV9sZWZ0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAyODY3NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NjYsMTMgKzU2NiwxMyBAQCBFeGNlcHRpb25Pcjx2b2lkPiAgSW50ZXJuYWxT
ZXR0aW5nczo6c2V0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gSW50
ZXJuYWxTZXR0aW5nczo6c2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0
eShib29sIHJlcXVpcmVzKQorRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxTZXR0aW5nczo6c2V0
U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eShib29sIHNob3VsZCkKIHsK
ICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nl
c3NFcnJvciB9OwotICAgIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5zZXRTaG91bGRNb2NrQm9s
ZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KHJlcXVpcmVzKTsKKyAgICBSZW5kZXJUaGVtZTo6
c2luZ2xldG9uKCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eShz
aG91bGQpOwogICAgIC8vIEZJWE1FOiBDYWxsIHNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZv
ckFjY2Vzc2liaWxpdHkoKSBvbiBhbGwgd29ya2Vycy4KLSAgICBGb250Q2FjaGU6OmZvckN1cnJl
bnRUaHJlYWQoKS5zZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KHJl
cXVpcmVzKTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zZXRTaG91bGRNb2Nr
Qm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KHNob3VsZCk7CiAgICAgcmV0dXJuIHsgfTsK
IH0KIApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4Njc1MSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMTItMDggIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBQcmVwYXJl
IGZvciB0cmFuc2l0aW9uIHRvIEMrKzIwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzQwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3Jt
YXRSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUGFy
c2VUcmFja3MpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFT
YW1wbGVDdXJzb3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNhbXBsZUN1cnNvcjo6Z2V0
U2FtcGxlTWFwIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVy
ZW5jZXMubW06CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMgX3NldFJlcXVpcmVzUGFnZVZpc2li
aWxpdHlUb1BsYXlBdWRpbzpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRSZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9u
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbjo6c2V0UmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbik6CisKIDIwMjEtMTIt
MDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBBZGQgU1BJIHRvIGxvYWQgYSByZXNvdXJjZSBpbiB0aGUgY29udGV4dCBvZiBhIHBhZ2UKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1h
dFJlYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAkocmV2aXNpb24gMjg2NzUwKQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVh
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgTWVkaWFGb3Jt
YXRSZWFkZXI6OmRpZFBhcnNlVHJhY2tzKFMKICAgICBpZiAoZXJyb3JDb2RlKQogICAgICAgICBF
UlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgZXJyb3JDb2RlKTsKIAotICAgIG1f
cGFyc2VUcmFja3NTdGF0dXMgPSBlcnJvckNvZGUgPyBrTVRQbHVnaW5Gb3JtYXRSZWFkZXJFcnJv
cl9QYXJzaW5nRmFpbHVyZSA6IG5vRXJyOworICAgIG1fcGFyc2VUcmFja3NTdGF0dXMgPSBlcnJv
ckNvZGUgPyBzdGF0aWNfY2FzdDxPU1N0YXR1cz4oa01UUGx1Z2luRm9ybWF0UmVhZGVyRXJyb3Jf
UGFyc2luZ0ZhaWx1cmUpIDogbm9FcnI7CiAgICAgbV9kdXJhdGlvbiA9IFdURk1vdmUoc2VnbWVu
dC5kdXJhdGlvbik7CiAKICAgICBmb3IgKGF1dG8mIHZpZGVvVHJhY2sgOiBzZWdtZW50LnZpZGVv
VHJhY2tzKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAJKHJldmlzaW9u
IDI4Njc1MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYVNhbXBsZUN1cnNvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBP
U1N0YXR1cyBNZWRpYVNhbXBsZUN1cnNvcjo6Z2V0U2FtcGxlTWFwCiAgICAgbV90cmFja1JlYWRl
ci0+d2FpdEZvclNhbXBsZShbJl0oU2FtcGxlTWFwJiBzYW1wbGVzLCBib29sIGhhc0FsbFNhbXBs
ZXMpIHsKICAgICAgICAgaWYgKCFzYW1wbGVzLnNpemUoKSkKICAgICAgICAgICAgIEVSUk9SX0xP
RyhMT0dJREVOVElGSUVSLCAidHJhY2sgIiwgbV90cmFja1JlYWRlci0+dHJhY2tJRCgpLCAiIGZp
bmlzaGVkIHBhcnNpbmcgd2l0aCBubyBzYW1wbGVzLiIpOwotICAgICAgICBzdGF0dXMgPSBzYW1w
bGVzLnNpemUoKSA/IGZ1bmN0aW9uKHNhbXBsZXMsIGhhc0FsbFNhbXBsZXMpIDoga01UUGx1Z2lu
U2FtcGxlQ3Vyc29yRXJyb3JfTm9TYW1wbGVzOworICAgICAgICBzdGF0dXMgPSBzYW1wbGVzLnNp
emUoKSA/IGZ1bmN0aW9uKHNhbXBsZXMsIGhhc0FsbFNhbXBsZXMpIDogc3RhdGljX2Nhc3Q8T1NT
dGF0dXM+KGtNVFBsdWdpblNhbXBsZUN1cnNvckVycm9yX05vU2FtcGxlcyk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0pOwogICAgIHJldHVybiBzdGF0dXM7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQkocmV2aXNp
b24gMjg2NzUwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVy
ZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1MTksOSArMTUxOSw5IEBAIC0gKEJPT0wpX3Jl
cXVpcmVzUGFnZVZpc2liaWxpdHlUb1BsYXlBdWQKICAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5y
ZXF1aXJlc1BhZ2VWaXNpYmlsaXR5VG9QbGF5QXVkaW8oKTsKIH0KIAotLSAodm9pZClfc2V0UmVx
dWlyZXNQYWdlVmlzaWJpbGl0eVRvUGxheUF1ZGlvOihCT09MKXJlcXVpcmVzCistICh2b2lkKV9z
ZXRSZXF1aXJlc1BhZ2VWaXNpYmlsaXR5VG9QbGF5QXVkaW86KEJPT0wpcmVxdWlyZXNWaXNpYmls
aXR5CiB7Ci0gICAgX3ByZWZlcmVuY2VzLT5zZXRSZXF1aXJlc1BhZ2VWaXNpYmlsaXR5VG9QbGF5
QXVkaW8ocmVxdWlyZXMpOworICAgIF9wcmVmZXJlbmNlcy0+c2V0UmVxdWlyZXNQYWdlVmlzaWJp
bGl0eVRvUGxheUF1ZGlvKHJlcXVpcmVzVmlzaWJpbGl0eSk7CiB9CiAKIC0gKEJPT0wpX2ZpbGVT
eXN0ZW1BY2Nlc3NFbmFibGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLm1tCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ4MSw5ICs0ODEsOSBAQCAtIChCT09MKXJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNv
bm5lY3RpCiAgICAgcmV0dXJuIF9jb25maWd1cmF0aW9uLT5yZXF1aXJlc1NlY3VyZUhUVFBTUHJv
eHlDb25uZWN0aW9uKCk7CiB9CiAKLS0gKHZvaWQpc2V0UmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5
Q29ubmVjdGlvbjooQk9PTClyZXF1aXJlcworLSAodm9pZClzZXRSZXF1aXJlc1NlY3VyZUhUVFBT
UHJveHlDb25uZWN0aW9uOihCT09MKXJlcXVpcmVzU2VjdXJlUHJveHkKIHsKLSAgICBfY29uZmln
dXJhdGlvbi0+c2V0UmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbihyZXF1aXJlcyk7
CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rp
b24ocmVxdWlyZXNTZWN1cmVQcm94eSk7CiB9CiAKIC0gKEJPT0wpc2hvdWxkUnVuU2VydmljZVdv
cmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI4Njc1MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmV2ZW50c1N5
c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uKGJvb2wgcHJldmVudHMpIHsgbV9wcmV2ZW50c1N5
c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uID0gcHJldmVudHM7IH0KIAogICAgIGJvb2wgcmVx
dWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWly
ZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbjsgfTsKLSAgICB2b2lkIHNldFJlcXVpcmVzU2Vj
dXJlSFRUUFNQcm94eUNvbm5lY3Rpb24oYm9vbCByZXF1aXJlcykgeyBtX3JlcXVpcmVzU2VjdXJl
SFRUUFNQcm94eUNvbm5lY3Rpb24gPSByZXF1aXJlczsgfQorICAgIHZvaWQgc2V0UmVxdWlyZXNT
ZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbihib29sIHJlcXVpcmVzU2VjdXJlUHJveHkpIHsgbV9y
ZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uID0gcmVxdWlyZXNTZWN1cmVQcm94eTsg
fQogCiAgICAgYm9vbCBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3Rp
bmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFk
Rm9yVGVzdGluZzsgfQogICAgIHZvaWQgc2V0U2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5U
aHJlYWRGb3JUZXN0aW5nKGJvb2wgc2hvdWxkUnVuT25NYWluVGhyZWFkKSB7IG1fc2hvdWxkUnVu
U2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nID0gc2hvdWxkUnVuT25NYWluVGhy
ZWFkOyB9CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODY3NTApCisrKyBTb3VyY2UvYm1hbGxv
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0wOCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFBy
ZXBhcmUgZm9yIHRyYW5zaXRpb24gdG8gQysrMjAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDAyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogYm1hbGxvYy9MaXN0Lmg6CisgICAgICAgIChibWFsbG9j
OjpMaXN0OjppdGVyYXRvcjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChibWFsbG9jOjpM
aXN0OjppdGVyYXRvcjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuCisKIDIwMjEtMTItMDggIFphbiBE
b2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtsaWJwYXNdIEd1YXJk
IERhcndpbi1zcGVjaWZpYyBtYWxsb2Mgem9uZSB1c2FnZSBpbiBtYm1hbGxvYyBzb3VyY2VzCklu
ZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0xpc3QuaAkocmV2aXNpb24gMjg2NzUwKQorKysgU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9MaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3Mg
TGlzdCB7CiAgICAgICAgIFQqIG9wZXJhdG9yKigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFQqPiht
X25vZGUpOyB9CiAgICAgICAgIFQqIG9wZXJhdG9yLT4oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxU
Kj4obV9ub2RlKTsgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYg
b3RoZXIpIHsgcmV0dXJuIG1fbm9kZSAhPSBvdGhlci5tX25vZGU7IH0KKyAgICAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9ub2RlICE9
IG90aGVyLm1fbm9kZTsgfQogCiAgICAgICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKICAgICAg
ICAgewpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjg2NzUxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMjEtMTItMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBQcmVwYXJlIGZvciB0cmFuc2l0aW9uIHRvIEMrKzIw
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQwMjIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHA6CisgICAgICAgIChjcmVhdGVCaXRt
YXBDb250ZXh0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5j
cHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNz
Lm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS1dlYlZpZXdTbmFwc2hvdC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy9TbmFwc2hvdFZpYVJlbmRlcklu
Q29udGV4dC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VGVzdFBERlBhZ2U6OmNvbG9yQXRQb2ludCBjb25zdCk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcDoKKyAgICAgICAgKFdUUjo6Y3JlYXRl
Q0dDb250ZXh0RnJvbUNHSW1hZ2UpOgorCiAyMDIxLTEyLTA4ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFNQSSB0byBsb2FkIGEgcmVz
b3VyY2UgaW4gdGhlIGNvbnRleHQgb2YgYSBwYWdlCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAJKHJldmlzaW9uIDI4Njc1MCkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNSw5ICsxMzUsOSBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFw
Q29udGV4CiAgICAgCiAgICAgLy8gQ3JlYXRpbmcgdGhpcyBiaXRtYXAgaW4gdGhlIGRldmljZSBj
b2xvciBzcGFjZSBwcmV2ZW50cyBhbnkgY29sb3IgY29udmVyc2lvbiB3aGVuIHRoZSBpbWFnZSBv
ZiB0aGUgd2ViIHZpZXcgaXMgZHJhd24gaW50byBpdC4KICAgICBSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPiBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0Io
KSk7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoYnVm
ZmVyLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCA4LCByb3dCeXRlcywgY29sb3JTcGFjZS5nZXQo
KSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMy
SG9zdCkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
KGJ1ZmZlciwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNvbG9yU3BhY2Uu
Z2V0KCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZp
cnN0KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKSk7
CiAgICAgaWYgKCFjb250ZXh0KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRHVtcFJlbmRlclRy
ZWU6IENHQml0bWFwQ29udGV4dENyZWF0ZSglcCwgJXp1LCAlenUsIDgsICV6dSwgJXAsIDB4JXgp
IGZhaWxlZFxuIiwgYnVmZmVyLCBwaXhlbHNIaWdoLCBwaXhlbHNXaWRlLCByb3dCeXRlcywgY29s
b3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1h
cEJ5dGVPcmRlcjMySG9zdCk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRHVtcFJlbmRlclRyZWU6
IENHQml0bWFwQ29udGV4dENyZWF0ZSglcCwgJXp1LCAlenUsIDgsICV6dSwgJXAsIDB4JXgpIGZh
aWxlZFxuIiwgYnVmZmVyLCBwaXhlbHNIaWdoLCBwaXhlbHNXaWRlLCByb3dCeXRlcywgY29sb3JT
cGFjZS5nZXQoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkRmlyc3QpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9z
dCkpOwogICAgICAgICBmcmVlKGJ1ZmZlcik7CiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvRXhwZWN0ZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0V4cGVjdGVkLmNwcAkocmV2aXNpb24gMjg2NzUwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsMTAgKzI5MSw2
IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB2b2lkKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3Ry
dWN0IE5vbkNvcHlhYmxlIHsKLSAgICBOb25Db3B5YWJsZShOb25Db3B5YWJsZSYmKSA9IGRlZmF1
bHQ7Ci0gICAgTm9uQ29weWFibGUoY29uc3QgTm9uQ29weWFibGUmKSA9IGRlbGV0ZTsKLSAgICBO
b25Db3B5YWJsZSYgb3BlcmF0b3I9KGNvbnN0IE5vbkNvcHlhYmxlJikgPSBkZWxldGU7Ci0gICAg
Tm9uQ29weWFibGUmIG9wZXJhdG9yPShOb25Db3B5YWJsZSYmKSA9IGRlZmF1bHQ7CiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE5vbkNvcHlhYmxlPFQ+JiBvdGhlcikgY29uc3QgeyByZXR1cm4g
dmFsdWUgPT0gb3RoZXIudmFsdWU7IH0KICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9uQ29w
eWFibGU8VD4mIG90aGVyKSBjb25zdCB7IHJldHVybiB2YWx1ZSAhPSBvdGhlci52YWx1ZTsgfQog
ICAgIFQgdmFsdWU7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0dQVVByb2Nlc3MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tCShyZXZpc2lvbiAyODY3NTApCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVByb2Nlc3MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTUxMiw3ICs1MTIsNyBAQCBURVNUKEdQVVByb2Nlc3MsIENhbnZhc0Jhc2ljQ3Jhc2hIYW5k
bGluCiAgICAgICAgIE5TSW50ZWdlciB2aWV3SGVpZ2h0SW5QaXhlbHMgPSB2aWV3SGVpZ2h0ICog
YmFja2luZ1NjYWxlRmFjdG9yOwogCiAgICAgICAgIHVpbnQ4X3QgKnJnYmEgPSAodW5zaWduZWQg
Y2hhciAqKWNhbGxvYyh2aWV3V2lkdGhJblBpeGVscyAqIHZpZXdIZWlnaHRJblBpeGVscyAqIDQs
IHNpemVvZih1bnNpZ25lZCBjaGFyKSk7Ci0gICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0Yo
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlKHJnYmEsIHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0
SW5QaXhlbHMsIDgsIDQgKiB2aWV3V2lkdGhJblBpeGVscywgY29sb3JTcGFjZS5nZXQoKSwga0NH
SW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsK
KyAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocmdi
YSwgdmlld1dpZHRoSW5QaXhlbHMsIHZpZXdIZWlnaHRJblBpeGVscywgOCwgNCAqIHZpZXdXaWR0
aEluUGl4ZWxzLCBjb2xvclNwYWNlLmdldCgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRt
YXBCeXRlT3JkZXIzMkJpZykpKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQu
Z2V0KCksIENHUmVjdE1ha2UoMCwgMCwgdmlld1dpZHRoSW5QaXhlbHMsIHZpZXdIZWlnaHRJblBp
eGVscyksIGNnSW1hZ2UuZ2V0KCkpOwogCiAgICAgICAgIE5TSW50ZWdlciBwaXhlbEluZGV4ID0g
Z2V0UGl4ZWxJbmRleCg1MCwgNTAsIHZpZXdXaWR0aEluUGl4ZWxzKTsKQEAgLTU2Nyw3ICs1Njcs
NyBAQCBURVNUKEdQVVByb2Nlc3MsIENhbnZhc0Jhc2ljQ3Jhc2hIYW5kbGluCiAgICAgICAgIE5T
SW50ZWdlciB2aWV3SGVpZ2h0SW5QaXhlbHMgPSB2aWV3SGVpZ2h0ICogYmFja2luZ1NjYWxlRmFj
dG9yOwogCiAgICAgICAgIHVpbnQ4X3QgKnJnYmEgPSAodW5zaWduZWQgY2hhciAqKWNhbGxvYyh2
aWV3V2lkdGhJblBpeGVscyAqIHZpZXdIZWlnaHRJblBpeGVscyAqIDQsIHNpemVvZih1bnNpZ25l
ZCBjaGFyKSk7Ci0gICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlKHJnYmEsIHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0SW5QaXhlbHMsIDgsIDQg
KiB2aWV3V2lkdGhJblBpeGVscywgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11
bHRpcGxpZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKKyAgICAgICAgYXV0byBj
b250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocmdiYSwgdmlld1dpZHRoSW5Q
aXhlbHMsIHZpZXdIZWlnaHRJblBpeGVscywgOCwgNCAqIHZpZXdXaWR0aEluUGl4ZWxzLCBjb2xv
clNwYWNlLmdldCgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRMYXN0KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3JkZXIzMkJp
ZykpKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1h
a2UoMCwgMCwgdmlld1dpZHRoSW5QaXhlbHMsIHZpZXdIZWlnaHRJblBpeGVscyksIGNnSW1hZ2Uu
Z2V0KCkpOwogCiAgICAgICAgIE5TSW50ZWdlciBwaXhlbEluZGV4ID0gZ2V0UGl4ZWxJbmRleCg1
MCwgNTAsIHZpZXdXaWR0aEluUGl4ZWxzKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3U25hcHNob3QubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdTbmFwc2hvdC5tbQkocmV2
aXNpb24gMjg2NzUwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1dlYlZpZXdTbmFwc2hvdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjc5LDcgKzI3OSw3IEBAIFRF
U1QoV0tXZWJWaWV3LCBTbmFwc2hvdEltYWdlQmFzZUNhc2UpCiAgICAgICAgIE5TSW50ZWdlciB2
aWV3SGVpZ2h0SW5QaXhlbHMgPSB2aWV3SGVpZ2h0ICogYmFja2luZ1NjYWxlRmFjdG9yOwogCiAg
ICAgICAgIHVpbnQ4X3QgKnJnYmEgPSAodW5zaWduZWQgY2hhciAqKWNhbGxvYyh2aWV3V2lkdGhJ
blBpeGVscyAqIHZpZXdIZWlnaHRJblBpeGVscyAqIDQsIHNpemVvZih1bnNpZ25lZCBjaGFyKSk7
Ci0gICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHJn
YmEsIHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0SW5QaXhlbHMsIDgsIDQgKiB2aWV3V2lk
dGhJblBpeGVscywgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRM
YXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKKyAgICAgICAgYXV0byBjb250ZXh0ID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocmdiYSwgdmlld1dpZHRoSW5QaXhlbHMsIHZp
ZXdIZWlnaHRJblBpeGVscywgOCwgNCAqIHZpZXdXaWR0aEluUGl4ZWxzLCBjb2xvclNwYWNlLmdl
dCgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0
KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpKTsKICAg
ICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwg
dmlld1dpZHRoSW5QaXhlbHMsIHZpZXdIZWlnaHRJblBpeGVscyksIGNnSW1hZ2UuZ2V0KCkpOwog
CiAgICAgICAgIE5TSW50ZWdlciBwaXhlbEluZGV4ID0gZ2V0UGl4ZWxJbmRleCgwLCAwLCB2aWV3
V2lkdGhJblBpeGVscyk7CkBAIC00MjUsNyArNDI1LDcgQEAgVEVTVChXS1dlYlZpZXcsIFNuYXBz
aG90SW1hZ2VMYXJnZUFzeW5jRAogICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBj
b2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CiAKICAg
ICAgICAgdWludDhfdCAqcmdiYSA9ICh1bnNpZ25lZCBjaGFyICopY2FsbG9jKHZpZXdXaWR0aCAq
IHZpZXdIZWlnaHQgKiA0LCBzaXplb2YodW5zaWduZWQgY2hhcikpOwotICAgICAgICBhdXRvIGNv
bnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShyZ2JhLCB2aWV3V2lkdGgsIHZp
ZXdIZWlnaHQsIDgsIDQgKiB2aWV3V2lkdGgsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7CisgICAgICAg
IGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHJnYmEsIHZpZXdX
aWR0aCwgdmlld0hlaWdodCwgOCwgNCAqIHZpZXdXaWR0aCwgY29sb3JTcGFjZS5nZXQoKSwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgfCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oa0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKSk7CiAgICAgICAgIENH
Q29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIHZpZXdXaWR0
aCwgdmlld0hlaWdodCksIGNnSW1hZ2UuZ2V0KCkpOwogCiAgICAgICAgIC8vIFRvcC1sZWZ0IGNv
cm5lciBvZiB0aGUgZGl2ICgwLCAwLCAxMDAsIDEwMCkKQEAgLTUwMCw3ICs1MDAsNyBAQCBURVNU
KFdLV2ViVmlldywgU25hcHNob3RBZnRlclNjcmVlblVwZGF0CiAgICAgICAgIE5TSW50ZWdlciB2
aWV3SGVpZ2h0SW5QaXhlbHMgPSB2aWV3SGVpZ2h0ICogYmFja2luZ1NjYWxlRmFjdG9yOwogICAg
ICAgICAKICAgICAgICAgdWludDhfdCAqcmdiYSA9ICh1bnNpZ25lZCBjaGFyICopY2FsbG9jKHZp
ZXdXaWR0aEluUGl4ZWxzICogdmlld0hlaWdodEluUGl4ZWxzICogNCwgc2l6ZW9mKHVuc2lnbmVk
IGNoYXIpKTsKLSAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRD
cmVhdGUocmdiYSwgdmlld1dpZHRoSW5QaXhlbHMsIHZpZXdIZWlnaHRJblBpeGVscywgOCwgNCAq
IHZpZXdXaWR0aEluUGl4ZWxzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOworICAgICAgICBhdXRvIGNv
bnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShyZ2JhLCB2aWV3V2lkdGhJblBp
eGVscywgdmlld0hlaWdodEluUGl4ZWxzLCA4LCA0ICogdmlld1dpZHRoSW5QaXhlbHMsIGNvbG9y
U3BhY2UuZ2V0KCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZExhc3QpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmln
KSkpOwogICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFr
ZSgwLCAwLCB2aWV3V2lkdGhJblBpeGVscywgdmlld0hlaWdodEluUGl4ZWxzKSwgY2dJbWFnZS5n
ZXQoKSk7CiAgICAgICAgIAogICAgICAgICBOU0ludGVnZXIgcGl4ZWxJbmRleCA9IGdldFBpeGVs
SW5kZXgoMCwgMCwgdmlld1dpZHRoSW5QaXhlbHMpOwpAQCAtNTYzLDcgKzU2Myw3IEBAIFRFU1Qo
V0tXZWJWaWV3LCBTbmFwc2hvdFdpdGhvdXRBZnRlclNjcmUKICAgICAgICAgTlNJbnRlZ2VyIHZp
ZXdIZWlnaHRJblBpeGVscyA9IHZpZXdIZWlnaHQgKiBiYWNraW5nU2NhbGVGYWN0b3I7CiAgICAg
ICAgIAogICAgICAgICB1aW50OF90ICpyZ2JhID0gKHVuc2lnbmVkIGNoYXIgKiljYWxsb2Modmll
d1dpZHRoSW5QaXhlbHMgKiB2aWV3SGVpZ2h0SW5QaXhlbHMgKiA0LCBzaXplb2YodW5zaWduZWQg
Y2hhcikpOwotICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENy
ZWF0ZShyZ2JhLCB2aWV3V2lkdGhJblBpeGVscywgdmlld0hlaWdodEluUGl4ZWxzLCA4LCA0ICog
dmlld1dpZHRoSW5QaXhlbHMsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0
aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7CisgICAgICAgIGF1dG8gY29u
dGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHJnYmEsIHZpZXdXaWR0aEluUGl4
ZWxzLCB2aWV3SGVpZ2h0SW5QaXhlbHMsIDgsIDQgKiB2aWV3V2lkdGhJblBpeGVscywgY29sb3JT
cGFjZS5nZXQoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkTGFzdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcp
KSk7CiAgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtl
KDAsIDAsIHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0SW5QaXhlbHMpLCBjZ0ltYWdlLmdl
dCgpKTsKIAogICAgICAgICBOU0ludGVnZXIgcGl4ZWxJbmRleCA9IGdldFBpeGVsSW5kZXgoMCwg
MCwgdmlld1dpZHRoSW5QaXhlbHMpOwpAQCAtNjIxLDcgKzYyMSw3IEBAIFRFU1QoV0tXZWJWaWV3
LCBTbmFwc2hvdFdlYkdMKQogICAgICAgICBOU0ludGVnZXIgdmlld0hlaWdodEluUGl4ZWxzID0g
dmlld0hlaWdodCAqIGJhY2tpbmdTY2FsZUZhY3RvcjsKIAogICAgICAgICB1aW50OF90ICpyZ2Jh
ID0gKHVuc2lnbmVkIGNoYXIgKiljYWxsb2Modmlld1dpZHRoSW5QaXhlbHMgKiB2aWV3SGVpZ2h0
SW5QaXhlbHMgKiA0LCBzaXplb2YodW5zaWduZWQgY2hhcikpOwotICAgICAgICBhdXRvIGNvbnRl
eHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShyZ2JhLCB2aWV3V2lkdGhJblBpeGVs
cywgdmlld0hlaWdodEluUGl4ZWxzLCA4LCA0ICogdmlld1dpZHRoSW5QaXhlbHMsIGNvbG9yU3Bh
Y2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVP
cmRlcjMyQmlnKSk7CisgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlKHJnYmEsIHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0SW5QaXhlbHMsIDgs
IDQgKiB2aWV3V2lkdGhJblBpeGVscywgY29sb3JTcGFjZS5nZXQoKSwgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgfCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oa0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKSk7CiAgICAgICAgIENHQ29udGV4dERyYXdJ
bWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIHZpZXdXaWR0aEluUGl4ZWxzLCB2
aWV3SGVpZ2h0SW5QaXhlbHMpLCBjZ0ltYWdlLmdldCgpKTsKIAogICAgICAgICBOU0ludGVnZXIg
cGl4ZWxJbmRleCA9IGdldFBpeGVsSW5kZXgoMCwgMCwgdmlld1dpZHRoSW5QaXhlbHMpOwpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL1NuYXBzaG90Vmlh
UmVuZGVySW5Db250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0TGVnYWN5L2lvcy9TbmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbQkocmV2aXNp
b24gMjg2NzUwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9z
L1NuYXBzaG90VmlhUmVuZGVySW5Db250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4
OCw3IEBAIFRFU1QoV2ViS2l0TGVnYWN5LCBSZW5kZXJJbkNvbnRleHRTbmFwc2gKICAgICB1bnNp
Z25lZCBjaGFyKiBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihjYWxs
b2Mod2lkdGggKiBoZWlnaHQsIDQpKTsKICAgICAKICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNl
UmVmPiBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7
Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWxC
dWZmZXIsIHdpZHRoLCBoZWlnaHQsIDgsIDQgKiB3aWR0aCwgY29sb3JTcGFjZS5nZXQoKSwga0NH
SW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsK
KyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbEJ1
ZmZlciwgd2lkdGgsIGhlaWdodCwgOCwgNCAqIHdpZHRoLCBjb2xvclNwYWNlLmdldCgpLCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oa0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSB8IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpKTsKICAgICAKICAgICAv
LyBGbGlwIHRoZSBjb250ZXh0CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dC5nZXQoKSwg
MSwgLTEpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1l
bnQubW0JKHJldmlzaW9uIDI4Njc1MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFBERkRvY3VtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgV2ViQ29y
ZTo6Q29sb3IgVGVzdFBERlBhZ2U6OmNvbG9yQXRQb2ludAogewogICAgIGF1dG8gYm91bmRzUmVj
dCA9IGJvdW5kcygpOwogICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNl
Q3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKLSAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShOVUxMLCBib3VuZHNSZWN0LnNpemUud2lkdGgs
IGJvdW5kc1JlY3Quc2l6ZS5oZWlnaHQsIDgsIDAsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdl
QWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7CisgICAg
YXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoTlVMTCwgYm91bmRz
UmVjdC5zaXplLndpZHRoLCBib3VuZHNSZWN0LnNpemUuaGVpZ2h0LCA4LCAwLCBjb2xvclNwYWNl
LmdldCgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRM
YXN0KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpKTsK
IAogICAgIGF1dG8gY2dQYWdlID0gbV9wYWdlLmdldCgpLnBhZ2VSZWY7CiAgICAgQ0dDb250ZXh0
RHJhd1BERlBhZ2VXaXRoQW5ub3RhdGlvbnMoY29udGV4dC5nZXQoKSwgY2dQYWdlLCBudWxscHRy
KTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNH
LmNwcAkocmV2aXNpb24gMjg2NzUwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0
SW52b2NhdGlvbkNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPENHQ29udGV4dFJlZj4gY3JlYXRlQ0dDCiAKICAgICAvLyBDcmVhdGluZyB0aGlz
IGJpdG1hcCBpbiB0aGUgZGV2aWNlIGNvbG9yIHNwYWNlIHNob3VsZCBwcmV2ZW50IGFueSBjb2xv
ciBjb252ZXJzaW9uIHdoZW4gdGhlIGltYWdlIG9mIHRoZSB3ZWIgdmlldyBpcyBkcmF3biBpbnRv
IGl0LgogICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2
aWNlUkdCKCkpOwotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlKDAsIHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5dGVzLCBjb2xvclNwYWNlLmdl
dCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVy
MzJIb3N0KSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGUoMCwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNvbG9yU3BhY2UuZ2V0
KCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0
KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKSk7CiAg
ICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446618</attachid>
            <date>2021-12-09 15:11:36 -0800</date>
            <delta_ts>2021-12-09 16:23:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234022-20211209151135.patch</filename>
            <type>text/plain</type>
            <size>88812</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2ODAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDIxLTEyLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUHJlcGFyZSBmb3IgdHJhbnNpdGlvbiB0byBDKysyMAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MDIyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICAqIGJ5dGVjb2RlL1N1cGVyU2FtcGxl
ci5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmg6CisgICAgICAgICogaGVh
cC9HQ1NlZ21lbnRlZEFycmF5Lmg6CisgICAgICAgIChKU0M6OkdDU2VnbWVudGVkQXJyYXlJdGVy
YXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkdDU2VnbWVudGVkQXJyYXlJ
dGVyYXRvcjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChKU0M6OkdDU2VnbWVudGVkQXJy
YXlJdGVyYXRvcjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdDU2VnbWVu
dGVkQXJyYXlJdGVyYXRvcjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L1Jl
Z2lzdGVyU2V0Lmg6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjppdGVyYXRvcjo6b3BlcmF0
b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjppdGVyYXRvcjo6b3BlcmF0
b3IhPSBjb25zdCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjppdGVyYXRvcjo6b3BlcmF0
b3I9PSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjppdGVyYXRvcjo6b3Bl
cmF0b3IhPSk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAo
SlNDOjpTY29wZVJlZjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OlNjb3BlUmVm
OjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NvcGVSZWY6Om9wZXJhdG9yPT0p
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTY29wZVJlZjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQu
CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2Vu
ZXJpY09mZnNldC5oOgorICAgICAgICAoSlNDOjpHZW5lcmljT2Zmc2V0OjpvcGVyYXRvcj09IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY09mZnNldDo6b3BlcmF0b3IhPSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNPZmZzZXQ6Om9wZXJhdG9yPCBjb25zdCk6CisgICAgICAgIChK
U0M6OkdlbmVyaWNPZmZzZXQ6Om9wZXJhdG9yPiBjb25zdCk6CisgICAgICAgIChKU0M6OkdlbmVy
aWNPZmZzZXQ6Om9wZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoSlNDOjpHZW5lcmljT2Zmc2V0
OjpvcGVyYXRvcj49IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5VGFibGUuaDoK
KwogMjAyMS0xMi0wOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQcm9jZWR1cmU6OnNldE5lZWRzUENUb09yaWdpbk1hcCBzaG91bGQgY2FsbCBDb2RlOjpmb3Jj
ZVByZXNlcnZhdGlvbk9mQjNPcmlnaW5zCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAkocmV2aXNpb24gMjg2ODAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDggKzMzLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvbGF0aWxlIHVpbnQzMl90
IGdfc3VwZXJTYW1wbGVyQ291bnQ7Ci12b2xhdGlsZSBib29sIGdfc3VwZXJTYW1wbGVyRW5hYmxl
ZDsKK3N0ZDo6YXRvbWljPHVpbnQzMl90PiBnX3N1cGVyU2FtcGxlckNvdW50Oworc3RkOjphdG9t
aWM8Ym9vbD4gZ19zdXBlclNhbXBsZXJFbmFibGVkOwogCiBzdGF0aWMgTG9jayBsb2NrOwogc3Rh
dGljIGRvdWJsZSBpbiBXVEZfR1VBUkRFRF9CWV9MT0NLKGxvY2spOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuaAkocmV2aXNpb24gMjg2ODAy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSwxMSArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
IDxhdG9taWM+CisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBNYWNyb0Fzc2VtYmxlcjsKIAot
ZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIHZvbGF0aWxlIHVpbnQzMl90IGdfc3VwZXJTYW1wbGVy
Q291bnQ7CitleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgc3RkOjphdG9taWM8dWludDMyX3Q+IGdf
c3VwZXJTYW1wbGVyQ291bnQ7CiAKIHZvaWQgaW5pdGlhbGl6ZVN1cGVyU2FtcGxlcigpOwogCkBA
IC0zOSwxOSArNDEsMTkgQEAgcHVibGljOgogICAgICAgICA6IG1fZG9TYW1wbGUoZG9TYW1wbGUp
CiAgICAgewogICAgICAgICBpZiAobV9kb1NhbXBsZSkKLSAgICAgICAgICAgIGdfc3VwZXJTYW1w
bGVyQ291bnQrKzsKKyAgICAgICAgICAgICsrZ19zdXBlclNhbXBsZXJDb3VudDsKICAgICB9CiAK
ICAgICB+U3VwZXJTYW1wbGVyU2NvcGUoKQogICAgIHsKICAgICAgICAgaWYgKG1fZG9TYW1wbGUp
Ci0gICAgICAgICAgICBnX3N1cGVyU2FtcGxlckNvdW50LS07CisgICAgICAgICAgICAtLWdfc3Vw
ZXJTYW1wbGVyQ291bnQ7CiAgICAgfQogCiAgICAgdm9pZCByZWxlYXNlKCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChtX2RvU2FtcGxlKTsKLSAgICAgICAgZ19zdXBlclNhbXBsZXJDb3VudC0tOwor
ICAgICAgICAtLWdfc3VwZXJTYW1wbGVyQ291bnQ7CiAgICAgICAgIG1fZG9TYW1wbGUgPSBmYWxz
ZTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVk
QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1NlZ21l
bnRlZEFycmF5LmgJKHJldmlzaW9uIDI4NjgwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0dDU2VnbWVudGVkQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDEyICsxMjcsMTIg
QEAgcHVibGljOgogICAgIFQmIG9wZXJhdG9yKigpIHsgcmV0dXJuIGdldCgpOyB9CiAgICAgVCYg
b3BlcmF0b3ItPigpIHsgcmV0dXJuIGdldCgpOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yJiBvdGhlcikKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX2N1cnJlbnRTZWdtZW50ID09IG90aGVyLm1fY3VycmVudFNlZ21lbnQgJiYg
bV9jdXJyZW50T2Zmc2V0ID09IG90aGVyLm1fY3VycmVudE9mZnNldDsKICAgICB9CiAKLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yJiBvdGhlcikKKyAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yJiBvdGhlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCShyZXZpc2lvbiAyODY4
MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE2NiwxMiArMTY2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAq
dGhpczsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IGl0ZXJhdG9yJiBvdGhlcikKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1faXRlciA9PSBv
dGhlci5tX2l0ZXI7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBpdGVyYXRvciYgb3RoZXIpCisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBp
dGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCShyZXZpc2lvbiAyODY4MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NTAsMTMgKzk1MCwxMyBAQCBzdHJ1Y3Qg
U2NvcGVSZWYgewogICAgICAgICByZXR1cm4gU2NvcGVSZWYobV9zY29wZVN0YWNrLCBtX2luZGV4
IC0gMSk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjb3BlUmVmJiBvdGhl
cikKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NvcGVSZWYmIG90aGVyKSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUKG90aGVyLm1fc2NvcGVTdGFjayA9PSBtX3Njb3BlU3RhY2spOwog
ICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogICAgIH0KIAotICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBTY29wZVJlZiYgb3RoZXIpCisgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFNjb3BlUmVmJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlclRva2Vucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyVG9rZW5zLmgJKHJldmlzaW9uIDI4NjgwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBJZGVudGlmaWVyOwogCi1lbnVtIHsKKyNkZWZp
bmUgQklOQVJZX09QX1BSRUNFREVOQ0UocHJlYykgKCgocHJlYykgPDwgQmluYXJ5T3BUb2tlblBy
ZWNlZGVuY2VTaGlmdCkgfCAoKHByZWMpIDw8IChCaW5hcnlPcFRva2VuUHJlY2VkZW5jZVNoaWZ0
ICsgQmluYXJ5T3BUb2tlbkFsbG93c0luUHJlY2VkZW5jZUFkZGl0aW9uYWxTaGlmdCkpKQorI2Rl
ZmluZSBJTl9PUF9QUkVDRURFTkNFKHByZWMpICgocHJlYykgPDwgKEJpbmFyeU9wVG9rZW5QcmVj
ZWRlbmNlU2hpZnQgKyBCaW5hcnlPcFRva2VuQWxsb3dzSW5QcmVjZWRlbmNlQWRkaXRpb25hbFNo
aWZ0KSkKKworZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgLy8gVG9rZW4gQml0ZmllbGQ6IDBiMDAw
MDAwMDAwUlRFMDBJSUlJUFBQUEtVWFhYWFhYWFgKICAgICAvLyBSID0gcmlnaHQtYXNzb2NpYXRp
dmUgYml0CiAgICAgLy8gVCA9IHVudGVybWluYXRlZCBlcnJvciBmbGFnCkBAIC01NCwxMyArNTcs
OSBAQCBlbnVtIHsKICAgICBCaW5hcnlPcFRva2VuUHJlY2VkZW5jZU1hc2sgPSAxNSA8PCBCaW5h
cnlPcFRva2VuUHJlY2VkZW5jZVNoaWZ0LAogICAgIENhbkJlRXJyb3JUb2tlbkZsYWcgPSAxIDw8
IChCaW5hcnlPcFRva2VuQWxsb3dzSW5QcmVjZWRlbmNlQWRkaXRpb25hbFNoaWZ0ICsgQmluYXJ5
T3BUb2tlblByZWNlZGVuY2VTaGlmdCArIDYpLAogICAgIFVudGVybWluYXRlZENhbkJlRXJyb3JU
b2tlbkZsYWcgPSBDYW5CZUVycm9yVG9rZW5GbGFnIDw8IDEsCi0gICAgUmlnaHRBc3NvY2lhdGl2
ZUJpbmFyeU9wVG9rZW5GbGFnID0gVW50ZXJtaW5hdGVkQ2FuQmVFcnJvclRva2VuRmxhZyA8PCAx
Ci19OworICAgIFJpZ2h0QXNzb2NpYXRpdmVCaW5hcnlPcFRva2VuRmxhZyA9IFVudGVybWluYXRl
ZENhbkJlRXJyb3JUb2tlbkZsYWcgPDwgMSwKIAotI2RlZmluZSBCSU5BUllfT1BfUFJFQ0VERU5D
RShwcmVjKSAoKChwcmVjKSA8PCBCaW5hcnlPcFRva2VuUHJlY2VkZW5jZVNoaWZ0KSB8ICgocHJl
YykgPDwgKEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNlU2hpZnQgKyBCaW5hcnlPcFRva2VuQWxsb3dz
SW5QcmVjZWRlbmNlQWRkaXRpb25hbFNoaWZ0KSkpCi0jZGVmaW5lIElOX09QX1BSRUNFREVOQ0Uo
cHJlYykgKChwcmVjKSA8PCAoQmluYXJ5T3BUb2tlblByZWNlZGVuY2VTaGlmdCArIEJpbmFyeU9w
VG9rZW5BbGxvd3NJblByZWNlZGVuY2VBZGRpdGlvbmFsU2hpZnQpKQogCi1lbnVtIEpTVG9rZW5U
eXBlIHsKICAgICBOVUxMVE9LRU4gPSBLZXl3b3JkVG9rZW5GbGFnLAogICAgIFRSVUVUT0tFTiwK
ICAgICBGQUxTRVRPS0VOLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJpY09mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNPZmZzZXQuaAkocmV2aXNpb24gMjg2ODAyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJpY09mZnNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwyOSArNjAs
MjkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CiAgICAgfQogICAgIAotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiBvdGhlcikgY29uc3QKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgR2VuZXJpY09mZnNldCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gbV9vZmZzZXQgPT0gb3RoZXIub2Zmc2V0VW5jaGVja2VkKCk7CisgICAgICAgIHJldHVybiBt
X29mZnNldCA9PSBvdGhlci5tX29mZnNldDsKICAgICB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFQmIG90aGVyKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBHZW5lcmljT2Zm
c2V0JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX29mZnNldCAhPSBvdGhl
ci5vZmZzZXRVbmNoZWNrZWQoKTsKKyAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ICE9IG90aGVyLm1f
b2Zmc2V0OwogICAgIH0KLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBUJiBvdGhlcikgY29uc3QK
KyAgICBib29sIG9wZXJhdG9yPChjb25zdCBHZW5lcmljT2Zmc2V0JiBvdGhlcikgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX29mZnNldCA8IG90aGVyLm9mZnNldFVuY2hlY2tlZCgpOwor
ICAgICAgICByZXR1cm4gbV9vZmZzZXQgPCBvdGhlci5tX29mZnNldDsKICAgICB9Ci0gICAgYm9v
bCBvcGVyYXRvcj4oY29uc3QgVCYgb3RoZXIpIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcj4oY29u
c3QgR2VuZXJpY09mZnNldCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9v
ZmZzZXQgPiBvdGhlci5vZmZzZXRVbmNoZWNrZWQoKTsKKyAgICAgICAgcmV0dXJuIG1fb2Zmc2V0
ID4gb3RoZXIubV9vZmZzZXQ7CiAgICAgfQotICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBUJiBv
dGhlcikgY29uc3QKKyAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgR2VuZXJpY09mZnNldCYgb3Ro
ZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9vZmZzZXQgPD0gb3RoZXIub2Zmc2V0
VW5jaGVja2VkKCk7CisgICAgICAgIHJldHVybiBtX29mZnNldCA8PSBvdGhlci5tX29mZnNldDsK
ICAgICB9Ci0gICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFQmIG90aGVyKSBjb25zdAorICAgIGJv
b2wgb3BlcmF0b3I+PShjb25zdCBHZW5lcmljT2Zmc2V0JiBvdGhlcikgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBtX29mZnNldCA+PSBvdGhlci5vZmZzZXRVbmNoZWNrZWQoKTsKKyAgICAg
ICAgcmV0dXJuIG1fb2Zmc2V0ID49IG90aGVyLm1fb2Zmc2V0OwogICAgIH0KICAgICAKICAgICBU
IG9wZXJhdG9yKyhpbnQgdmFsdWUpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCShyZXZpc2lvbiAyODY4MDIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTkxLDEyICs5MSwxMiBAQCBjbGFzcyBQcm9wZXJ0eVRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2Vs
CiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3Qgb3JkZXJlZF9pdGVyYXRvcjxUPiYgb3RoZXIpCisgICAgICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBvcmRlcmVkX2l0ZXJhdG9yPFQ+JiBvdGhlcikgY29uc3QKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWVQdHIgPT0gb3RoZXIubV92YWx1ZVB0cjsK
ICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBvcmRlcmVkX2l0ZXJh
dG9yPFQ+JiBvdGhlcikKKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG9yZGVyZWRfaXRl
cmF0b3I8VD4mIG90aGVyKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV92
YWx1ZVB0ciAhPSBvdGhlci5tX3ZhbHVlUHRyOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NjgwMikKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBA
QAorMjAyMS0xMi0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFByZXBhcmUgZm9yIHRyYW5zaXRpb24gdG8gQysrMjAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDAyMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL2NvbW1v
bl9hdWRpby93YXZfaGVhZGVyLmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9h
dWRpb19wcm9jZXNzaW5nL2luY2x1ZGUvYWVjX2R1bXAuY2M6CisgICAgICAgICogU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9hZWNfZHVtcC5oOgorICAgICAg
ICAqIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3V0aWxpdHkvZGVsYXlf
ZXN0aW1hdG9yX3dyYXBwZXIuY2M6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1
ZGlvX3Byb2Nlc3NpbmcvdmFkL3ZhZF9hdWRpb19wcm9jLmg6CisgICAgICAgICogU291cmNlL3dl
YnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9tZWRpYV9vcHRfdXRpbC5oOgorICAgICAgICAqIFNv
dXJjZS93ZWJydGMvcnRjX2Jhc2UvcmFjZV9jaGVja2VyLmg6CisgICAgICAgICogU291cmNlL3dl
YnJ0Yy9ydGNfYmFzZS91bml0cy91bml0X2Jhc2UuaDoKKyAgICAgICAgKHdlYnJ0Yzo6cnRjX3Vu
aXRzX2ltcGw6OlVuaXRCYXNlOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKHdlYnJ0Yzo6
cnRjX3VuaXRzX2ltcGw6OlVuaXRCYXNlOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKHdl
YnJ0Yzo6cnRjX3VuaXRzX2ltcGw6OlVuaXRCYXNlOjpvcGVyYXRvcjw9IGNvbnN0KToKKyAgICAg
ICAgKHdlYnJ0Yzo6cnRjX3VuaXRzX2ltcGw6OlVuaXRCYXNlOjpvcGVyYXRvcj49IGNvbnN0KToK
KyAgICAgICAgKHdlYnJ0Yzo6cnRjX3VuaXRzX2ltcGw6OlVuaXRCYXNlOjpvcGVyYXRvcj4gY29u
c3QpOgorICAgICAgICAod2VicnRjOjpydGNfdW5pdHNfaW1wbDo6VW5pdEJhc2U6Om9wZXJhdG9y
PCBjb25zdCk6CisKIDIwMjEtMTItMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIENsb3NlIFdlYlJUQyBhbGxvY2F0aW9uIHNlcXVlbmNlIHNoYXJlZCBzb2Nr
ZXQgaW4gY2FzZSBvZiBzZXF1ZW5jZSBuZXR3b3JrIGZhaWx1cmUKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNj
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjCShyZXZpc2lvbiAyODY4MDIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRl
ci5jYwkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsNyBAQCBjb25zdCB1aW50MzJfdCBrRm10
SWVlZUZsb2F0U3ViY2h1bmtTaXplCiAvLyByZWFkIGF1ZGlvIHNhbXBsZXMuCiAjcHJhZ21hIHBh
Y2soMikKIHN0cnVjdCBXYXZIZWFkZXJQY20geworICBXYXZIZWFkZXJQY20oKSA9IGRlZmF1bHQ7
CiAgIFdhdkhlYWRlclBjbShjb25zdCBXYXZIZWFkZXJQY20mKSA9IGRlZmF1bHQ7CiAgIFdhdkhl
YWRlclBjbSYgb3BlcmF0b3I9KGNvbnN0IFdhdkhlYWRlclBjbSYpID0gZGVmYXVsdDsKICAgUmlm
ZkhlYWRlciByaWZmOwpAQCAtOTUsNiArOTYsNyBAQCBzdGF0aWNfYXNzZXJ0KHNpemVvZihXYXZI
ZWFkZXJQY20pID09IGtQCiAvLyBXQVYgaW1wbGVtZW50YXRpb24uCiAjcHJhZ21hIHBhY2soMikK
IHN0cnVjdCBXYXZIZWFkZXJJZWVlRmxvYXQgeworICBXYXZIZWFkZXJJZWVlRmxvYXQoKSA9IGRl
ZmF1bHQ7CiAgIFdhdkhlYWRlckllZWVGbG9hdChjb25zdCBXYXZIZWFkZXJJZWVlRmxvYXQmKSA9
IGRlZmF1bHQ7CiAgIFdhdkhlYWRlckllZWVGbG9hdCYgb3BlcmF0b3I9KGNvbnN0IFdhdkhlYWRl
ckllZWVGbG9hdCYpID0gZGVmYXVsdDsKICAgUmlmZkhlYWRlciByaWZmOwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNz
aW5nL2luY2x1ZGUvYWVjX2R1bXAuY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2luY2x1ZGUv
YWVjX2R1bXAuY2MJKHJldmlzaW9uIDI4NjgwMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2FlY19k
dW1wLmNjCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw3ICsxNyw4IEBAIEludGVybmFsQVBNQ29uZmln
OjpJbnRlcm5hbEFQTUNvbmZpZyhJbnQKIEludGVybmFsQVBNQ29uZmlnJiBJbnRlcm5hbEFQTUNv
bmZpZzo6b3BlcmF0b3I9KGNvbnN0IEludGVybmFsQVBNQ29uZmlnJikgPQogICAgIGRlZmF1bHQ7
CiAKLWJvb2wgSW50ZXJuYWxBUE1Db25maWc6Om9wZXJhdG9yPT0oY29uc3QgSW50ZXJuYWxBUE1D
b25maWcmIG90aGVyKSB7Citib29sIEludGVybmFsQVBNQ29uZmlnOjpvcGVyYXRvcj09KGNvbnN0
IEludGVybmFsQVBNQ29uZmlnJiBvdGhlcikgY29uc3QKK3sKICAgcmV0dXJuIGFlY19lbmFibGVk
ID09IG90aGVyLmFlY19lbmFibGVkICYmCiAgICAgICAgICBhZWNfZGVsYXlfYWdub3N0aWNfZW5h
YmxlZCA9PSBvdGhlci5hZWNfZGVsYXlfYWdub3N0aWNfZW5hYmxlZCAmJgogICAgICAgICAgYWVj
X2RyaWZ0X2NvbXBlbnNhdGlvbl9lbmFibGVkID09CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvaW5jbHVkZS9h
ZWNfZHVtcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2FlY19kdW1wLmgJKHJl
dmlzaW9uIDI4NjgwMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9pbmNsdWRlL2FlY19kdW1wLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDcgKzMxLDcgQEAgc3RydWN0IEludGVybmFsQVBNQ29uZmlnIHsKICAgSW50
ZXJuYWxBUE1Db25maWcmIG9wZXJhdG9yPShjb25zdCBJbnRlcm5hbEFQTUNvbmZpZyYpOwogICBJ
bnRlcm5hbEFQTUNvbmZpZyYgb3BlcmF0b3I9KEludGVybmFsQVBNQ29uZmlnJiYpID0gZGVsZXRl
OwogCi0gIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbnRlcm5hbEFQTUNvbmZpZyYgb3RoZXIpOwor
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50ZXJuYWxBUE1Db25maWcmIG90aGVyKSBjb25zdDsK
IAogICBib29sIGFlY19lbmFibGVkID0gZmFsc2U7CiAgIGJvb2wgYWVjX2RlbGF5X2Fnbm9zdGlj
X2VuYWJsZWQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L2RlbGF5X2VzdGltYXRv
cl93cmFwcGVyLmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy91dGlsaXR5L2RlbGF5X2VzdGlt
YXRvcl93cmFwcGVyLmNjCShyZXZpc2lvbiAyODY4MDIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdXRpbGl0eS9k
ZWxheV9lc3RpbWF0b3Jfd3JhcHBlci5jYwkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsNyBA
QCBuYW1lc3BhY2Ugd2VicnRjIHsKIAogLy8gT25seSBiaXQgYGtCYW5kRmlyc3RgIHRocm91Z2gg
Yml0IGBrQmFuZExhc3RgIGFyZSBwcm9jZXNzZWQgYW5kCiAvLyBga0JhbmRGaXJzdGAgLSBga0Jh
bmRMYXN0YCBtdXN0IGJlIDwgMzIuCi1lbnVtIHsga0JhbmRGaXJzdCA9IDEyIH07Ci1lbnVtIHsg
a0JhbmRMYXN0ID0gNDMgfTsKK2VudW0geyBrQmFuZEZpcnN0ID0gMTIsIGtCYW5kTGFzdCA9IDQz
IH07CiAKIHN0YXRpYyBfX2lubGluZSB1aW50MzJfdCBTZXRCaXQodWludDMyX3QgaW4sIGludCBw
b3MpIHsKICAgdWludDMyX3QgbWFzayA9ICgxIDw8IHBvcyk7CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFk
L3ZhZF9hdWRpb19wcm9jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL3ZhZC92YWRfYXVkaW9f
cHJvYy5oCShyZXZpc2lvbiAyODY4MDIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvdmFkL3ZhZF9hdWRpb19wcm9j
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDI3ICs0NywyMCBAQCBjbGFzcyBWYWRBdWRpb1Byb2Mg
ewogICB2b2lkIFJtcyhkb3VibGUqIHJtcywgc2l6ZV90IGxlbmd0aF9ybXMpOwogICB2b2lkIFJl
c2V0QnVmZmVyKCk7CiAKKyAgICAvLyBUT0RPKHR1cmFqcyk6IG1heWJlIGRlZmluaW5nIHRoaXMg
YXQgYSBoaWdoZXIgbGV2ZWwgKG1heWJlIGVudW0pIHNvIHRoYXQKKyAgICAvLyBhbGwgdGhlIGNv
ZGUgcmVjb2duaXplIGl0IGFzICJuby1lcnJvci4iCisgICAgZW51bSA6IGludCB7IGtOb0Vycm9y
ID0gMCB9OworCiAgIC8vIFRvIGNvbXB1dGUgc3BlY3RyYWwgcGVhayB3ZSBwZXJmb3JtIExQQyBh
bmFseXNpcyB0byBnZXQgc3BlY3RyYWwgZW52ZWxvcGUuCiAgIC8vIEZvciBldmVyeSAzMCBtcyB3
ZSBjb21wdXRlIDMgc3BlY3RyYWwgcGVhayB0aGVyZSBmb3IgMyBMUEMgYW5hbHlzaXMuCiAgIC8v
IExQQyBpcyBjb21wdXRlZCBvdmVyIDE1IG1zIG9mIHdpbmRvd2VkIGF1ZGlvLiBGb3IgZXZlcnkg
MTAgbXMgc3ViLWZyYW1lCiAgIC8vIHdlIG5lZWQgNSBtcyBvZiBwYXN0IHNpZ25hbCB0byBjcmVh
dGUgdGhlIGlucHV0IG9mIExQQyBhbmFseXNpcy4KICAgZW51bSA6IHNpemVfdCB7Ci0gICAga051
bVBhc3RTaWduYWxTYW1wbGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihrU2FtcGxlUmF0ZUh6IC8g
MjAwKQotICB9OwotCi0gIC8vIFRPRE8odHVyYWpzKTogbWF5YmUgZGVmaW5pbmcgdGhpcyBhdCBh
IGhpZ2hlciBsZXZlbCAobWF5YmUgZW51bSkgc28gdGhhdAotICAvLyBhbGwgdGhlIGNvZGUgcmVj
b2duaXplIGl0IGFzICJuby1lcnJvci4iCi0gIGVudW0gOiBpbnQgeyBrTm9FcnJvciA9IDAgfTsK
LQotICBlbnVtIDogc2l6ZV90IHsga051bTEwbXNTdWJmcmFtZXMgPSAzIH07Ci0gIGVudW0gOiBz
aXplX3QgewotICAgIGtOdW1TdWJmcmFtZVNhbXBsZXMgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGtT
YW1wbGVSYXRlSHogLyAxMDApCi0gIH07Ci0gIGVudW0gOiBzaXplX3QgeworICAgIGtOdW1QYXN0
U2lnbmFsU2FtcGxlcyA9IHN0YXRpY19jYXN0PHNpemVfdD4oa1NhbXBsZVJhdGVIeiAvIDIwMCks
CisgICAga051bTEwbXNTdWJmcmFtZXMgPSAzLAorICAgIGtOdW1TdWJmcmFtZVNhbXBsZXMgPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KGtTYW1wbGVSYXRlSHogLyAxMDApLAogICAgIC8vIFNhbXBsZXMg
aW4gMzAgbXMgQCBnaXZlbiBzYW1wbGluZyByYXRlLgotICAgIGtOdW1TYW1wbGVzVG9Qcm9jZXNz
ID0ga051bTEwbXNTdWJmcmFtZXMgKiBrTnVtU3ViZnJhbWVTYW1wbGVzCi0gIH07Ci0gIGVudW0g
OiBzaXplX3QgeworICAgIGtOdW1TYW1wbGVzVG9Qcm9jZXNzID0ga051bTEwbXNTdWJmcmFtZXMg
KiBrTnVtU3ViZnJhbWVTYW1wbGVzLAogICAgIGtCdWZmZXJMZW5ndGggPSBrTnVtUGFzdFNpZ25h
bFNhbXBsZXMgKyBrTnVtU2FtcGxlc1RvUHJvY2VzcwogICB9OwogICBlbnVtIDogc2l6ZV90IHsg
a0lwTGVuZ3RoID0ga0RmdFNpemUgPj4gMSB9OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvbWVkaWFfb3B0X3V0aWwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9tZWRpYV9vcHRfdXRpbC5oCShyZXZpc2lvbiAyODY4MDIp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL3Zp
ZGVvX2NvZGluZy9tZWRpYV9vcHRfdXRpbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYs
MTIgQEAgbmFtZXNwYWNlIG1lZGlhX29wdGltaXphdGlvbiB7CiAvLyBOdW1iZXIgb2YgdGltZSBw
ZXJpb2RzIHVzZWQgZm9yIChtYXgpIHdpbmRvdyBmaWx0ZXIgZm9yIHBhY2tldCBsb3NzCiAvLyBU
T0RPKG1hcnBhbik6IHNldCByZWFzb25hYmxlIHdpbmRvdyBzaXplIGZvciBmaWx0ZXJlZCBwYWNr
ZXQgbG9zcywKIC8vIGFkanVzdG1lbnQgc2hvdWxkIGJlIGJhc2VkIG9uIGxvZ2dlZC9yZWFsIGRh
dGEgb2YgbG9zcyBzdGF0cy9jb3JyZWxhdGlvbi4KLWVudW0geyBrTG9zc1BySGlzdG9yeVNpemUg
PSAxMCB9OworZW51bSB7CisgICAga0xvc3NQckhpc3RvcnlTaXplID0gMTAsCiAKIC8vIDEwMDAg
bXMsIHRvdGFsIGZpbHRlciBsZW5ndGggaXMgKGtMb3NzUHJIaXN0b3J5U2l6ZSAqIDEwMDApIG1z
Ci1lbnVtIHsga0xvc3NQclNob3J0RmlsdGVyV2luTXMgPSAxMDAwIH07CisgICAga0xvc3NQclNo
b3J0RmlsdGVyV2luTXMgPSAxMDAwCit9OwogCiAvLyBUaGUgdHlwZSBvZiBmaWx0ZXIgdXNlZCBv
biB0aGUgcmVjZWl2ZWQgcGFja2V0IGxvc3MgcmVwb3J0cy4KIGVudW0gRmlsdGVyUGFja2V0TG9z
c01vZGUgewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
cnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvcmFjZV9jaGVja2VyLmgJKHJldmlzaW9u
IDI4NjgwMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3J0
Y19iYXNlL3JhY2VfY2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw2ICsxNCw3IEBACiAj
aW5jbHVkZSAicnRjX2Jhc2UvY2hlY2tzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvcGxhdGZvcm1f
dGhyZWFkX3R5cGVzLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvdGhyZWFkX2Fubm90YXRpb25zLmgi
CisjaW5jbHVkZSA8YXRvbWljPgogCiBuYW1lc3BhY2UgcnRjIHsKIApAQCAtMzMsNyArMzQsNyBA
QCBjbGFzcyBSVENfTE9DS0FCTEUgUmFjZUNoZWNrZXIgewogICB2b2lkIFJlbGVhc2UoKSBjb25z
dCBSVENfVU5MT0NLX0ZVTkNUSU9OKCk7CiAKICAgLy8gVm9sYXRpbGUgdG8gcHJldmVudCBjb2Rl
IGJlaW5nIG9wdGltaXplZCBhd2F5IGluIEFjcXVpcmUoKS9SZWxlYXNlKCkuCi0gIG11dGFibGUg
dm9sYXRpbGUgaW50IGFjY2Vzc19jb3VudF8gPSAwOworICBtdXRhYmxlIHN0ZDo6YXRvbWljPGlu
dD4gYWNjZXNzX2NvdW50XyA9IDA7CiAgIG11dGFibGUgdm9sYXRpbGUgUGxhdGZvcm1UaHJlYWRS
ZWYgYWNjZXNzaW5nX3RocmVhZF87CiB9OwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91bml0cy91bml0X2Jhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9ydGNfYmFzZS91
bml0cy91bml0X2Jhc2UuaAkocmV2aXNpb24gMjg2ODAyKQorKysgU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcnRjX2Jhc2UvdW5pdHMvdW5pdF9iYXNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUwLDIyICs1MCwyMiBAQCBjbGFzcyBVbml0QmFzZSB7CiAgICAgcmV0dXJu
IHZhbHVlXyA9PSBNaW51c0luZmluaXR5VmFsKCk7CiAgIH0KIAotICBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFVuaXRfVCYgb3RoZXIpIGNvbnN0IHsKKyAgY29uc3RleHByIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBVbml0QmFzZSYgb3RoZXIpIGNvbnN0IHsKICAgICByZXR1cm4gdmFs
dWVfID09IG90aGVyLnZhbHVlXzsKICAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFVuaXRfVCYgb3RoZXIpIGNvbnN0IHsKKyAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBVbml0QmFzZSYgb3RoZXIpIGNvbnN0IHsKICAgICByZXR1cm4gdmFsdWVfICE9IG90aGVy
LnZhbHVlXzsKICAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFVuaXRfVCYg
b3RoZXIpIGNvbnN0IHsKKyAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBVbml0QmFz
ZSYgb3RoZXIpIGNvbnN0IHsKICAgICByZXR1cm4gdmFsdWVfIDw9IG90aGVyLnZhbHVlXzsKICAg
fQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFVuaXRfVCYgb3RoZXIpIGNvbnN0
IHsKKyAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBVbml0QmFzZSYgb3RoZXIpIGNv
bnN0IHsKICAgICByZXR1cm4gdmFsdWVfID49IG90aGVyLnZhbHVlXzsKICAgfQotICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgVW5pdF9UJiBvdGhlcikgY29uc3QgeworICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgVW5pdEJhc2UmIG90aGVyKSBjb25zdCB7CiAgICAgcmV0
dXJuIHZhbHVlXyA+IG90aGVyLnZhbHVlXzsKICAgfQotICBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cjwoY29uc3QgVW5pdF9UJiBvdGhlcikgY29uc3QgeworICBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cjwoY29uc3QgVW5pdEJhc2UmIG90aGVyKSBjb25zdCB7CiAgICAgcmV0dXJuIHZhbHVlXyA8IG90
aGVyLnZhbHVlXzsKICAgfQogICBjb25zdGV4cHIgVW5pdF9UIFJvdW5kVG8oY29uc3QgVW5pdF9U
JiByZXNvbHV0aW9uKSBjb25zdCB7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2ODAyKQorKysgU291cmNl
L1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MCBAQAorMjAyMS0xMi0w
OSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFByZXBhcmUgZm9yIHRyYW5zaXRpb24gdG8gQysrMjAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDAyMgorCisgICAgICAgIFJldmlld2VkIGJ5IFl1
c3VrZSBTdXp1a2kuCisKKyAgICAgICAgSW4gQysrMjAsIHZvbGl0aWxlIGlzIGRlcHJlY2F0ZWQs
IG9wZXJhdG9yPT0gaXMgc3RyaWN0ZXIgKHJlbGF0ZWQgdG8gdGhlIGludHJvZHVjdGlvbiBvZiBv
cGVyYXRvciA8PT4pLAorICAgICAgICBhbmQgb3BlcmF0aW9ucyBvbiBlbnVtcyBvZiBkaWZmZXJl
bnQgdHlwZXMgYXJlIHN0cmljdGVyIHRvby4gIFRoaXMgZG9lcyB0aGUgY2hhbmdlcyB3ZSBjYW4g
ZG8gYmVmb3JlCisgICAgICAgIHRoZSB0cmFuc2l0aW9uLCB3aGljaCB3aWxsIGJlIGRvbmUgaW4g
YnVnIDIzMzk2My4KKworICAgICAgICAqIHd0Zi9EYXRlTWF0aC5oOgorICAgICAgICAoV1RGOjpM
b2NhbFRpbWVPZmZzZXQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV1RGOjpMb2NhbFRp
bWVPZmZzZXQ6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV1RGOjpMb2NhbFRpbWVPZmZz
ZXQ6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpMb2NhbFRpbWVPZmZzZXQ6
Om9wZXJhdG9yIT0pOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmg6Cisg
ICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JJbXBsOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKFdURjo6RmFzdEJpdFZlY3RvckltcGw6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAq
IHd0Zi9HZW5lcmljVGltZU1peGluLmg6CisgICAgICAgIChXVEY6OkdlbmVyaWNUaW1lTWl4aW46
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV1RGOjpHZW5lcmljVGltZU1peGluOjpvcGVy
YXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdURjo6R2VuZXJpY1RpbWVNaXhpbjo6b3BlcmF0b3I8
IGNvbnN0KToKKyAgICAgICAgKFdURjo6R2VuZXJpY1RpbWVNaXhpbjo6b3BlcmF0b3I+IGNvbnN0
KToKKyAgICAgICAgKFdURjo6R2VuZXJpY1RpbWVNaXhpbjo6b3BlcmF0b3I8PSBjb25zdCk6Cisg
ICAgICAgIChXVEY6OkdlbmVyaWNUaW1lTWl4aW46Om9wZXJhdG9yPj0gY29uc3QpOgorICAgICAg
ICAqIHd0Zi9JdGVyYXRvckFkYXB0b3JzLmg6CisgICAgICAgIChXVEY6OkZpbHRlckl0ZXJhdG9y
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6RmlsdGVySXRlcmF0b3I6Om9wZXJh
dG9yIT0gY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFuc2Zvcm1JdGVyYXRvcjo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChXVEY6OlRyYW5zZm9ybUl0ZXJhdG9yOjpvcGVyYXRvciE9IGNv
bnN0KToKKyAgICAgICAgKiB3dGYvTGl2ZW5lc3MuaDoKKyAgICAgICAgKFdURjo6TGl2ZW5lc3M6
OkxvY2FsQ2FsYzo6SXRlcmFibGU6Oml0ZXJhdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKFdURjo6TGl2ZW5lc3M6OkxvY2FsQ2FsYzo6SXRlcmFibGU6Oml0ZXJhdG9yOjpvcGVyYXRv
ciE9IGNvbnN0KToKKyAgICAgICAgKFdURjo6TGl2ZW5lc3M6OkxvY2FsQ2FsYzo6SXRlcmFibGU6
Oml0ZXJhdG9yOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6TGl2ZW5lc3M6
OkxvY2FsQ2FsYzo6SXRlcmFibGU6Oml0ZXJhdG9yOjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKwog
MjAyMS0xMi0wOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
RW5hYmxlIDpmb2N1cy12aXNpYmxlIHBzZXVkby1jbGFzcyBieSBkZWZhdWx0CkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9EYXRlTWF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RhdGVN
YXRoLmgJKHJldmlzaW9uIDI4NjgwMikKKysrIFNvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDEyICs2NiwxMiBAQCBzdHJ1Y3QgTG9jYWxUaW1lT2Zmc2V0IHsK
ICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExvY2FsVGltZU9mZnNl
dCYgb3RoZXIpCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExvY2FsVGltZU9mZnNldCYgb3Ro
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaXNEU1QgPT0gb3RoZXIuaXNEU1QgJiYg
b2Zmc2V0ID09IG90aGVyLm9mZnNldDsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgTG9jYWxUaW1lT2Zmc2V0JiBvdGhlcikKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTG9j
YWxUaW1lT2Zmc2V0JiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpc0RTVCAh
PSBvdGhlci5pc0RTVCB8fCBvZmZzZXQgIT0gb3RoZXIub2Zmc2V0OwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9GYXN0Qml0VmVjdG9yLmgJKHJldmlzaW9uIDI4NjgwMikKKysrIFNvdXJjZS9XVEYvd3RmL0Zh
c3RCaXRWZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDggKzI4MSw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICBzaXplX3QgYXJyYXlMZW5ndGgoKSBjb25zdCB7IHJldHVybiBmYXN0Qml0VmVj
dG9yQXJyYXlMZW5ndGgobnVtQml0cygpKTsgfQogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE90aGVyPgotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPdGhlciYgb3RoZXIpIGNvbnN0Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZhc3RCaXRWZWN0b3JJbXBsJiBvdGhlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmIChudW1CaXRzKCkgIT0gb3RoZXIubnVtQml0cygpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjkzLDggKzI5Miw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyPgot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPdGhlciYgb3RoZXIpIGNvbnN0CisgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEZhc3RCaXRWZWN0b3JJbXBsJiBvdGhlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9HZW5lcmljVGltZU1peGluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvR2Vu
ZXJpY1RpbWVNaXhpbi5oCShyZXZpc2lvbiAyODY4MDIpCisrKyBTb3VyY2UvV1RGL3d0Zi9HZW5l
cmljVGltZU1peGluLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDMyICs4NCwzMiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBTZWNvbmRzKG1fdmFsdWUgLSBvdGhlci5tX3ZhbHVlKTsKICAgICB9
CiAKLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KERlcml2ZWRUaW1lIG90aGVyKSBjb25z
dAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgR2VuZXJpY1RpbWVNaXhpbiYg
b3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV92YWx1ZSA9PSBvdGhlci5tX3Zh
bHVlOwogICAgIH0KIAotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oRGVyaXZlZFRpbWUg
b3RoZXIpIGNvbnN0CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBHZW5lcmlj
VGltZU1peGluJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3ZhbHVlICE9
IG90aGVyLm1fdmFsdWU7CiAgICAgfQogCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KERl
cml2ZWRUaW1lIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25z
dCBHZW5lcmljVGltZU1peGluJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBt
X3ZhbHVlIDwgb3RoZXIubV92YWx1ZTsKICAgICB9CiAKLSAgICBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvcj4oRGVyaXZlZFRpbWUgb3RoZXIpIGNvbnN0CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0
b3I+KGNvbnN0IEdlbmVyaWNUaW1lTWl4aW4mIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fdmFsdWUgPiBvdGhlci5tX3ZhbHVlOwogICAgIH0KIAotICAgIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPD0oRGVyaXZlZFRpbWUgb3RoZXIpIGNvbnN0CisgICAgY29uc3RleHByIGJv
b2wgb3BlcmF0b3I8PShjb25zdCBHZW5lcmljVGltZU1peGluJiBvdGhlcikgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBtX3ZhbHVlIDw9IG90aGVyLm1fdmFsdWU7CiAgICAgfQogCi0gICAg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShEZXJpdmVkVGltZSBvdGhlcikgY29uc3QKKyAgICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IEdlbmVyaWNUaW1lTWl4aW4mIG90aGVyKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdmFsdWUgPj0gb3RoZXIubV92YWx1ZTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9JdGVyYXRvckFkYXB0b3JzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvSXRlcmF0b3JBZGFwdG9ycy5oCShyZXZpc2lvbiAyODY4MDIpCisr
KyBTb3VyY2UvV1RGL3d0Zi9JdGVyYXRvckFkYXB0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5
LDggKzU5LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKm1faXRlcjsKICAgICB9CiAKLSAg
ICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KEZpbHRlckl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gbV9pdGVyID09IG90aGVyLm1faXRlcjsgfQotICAgIGlubGluZSBib29sIG9wZXJhdG9y
IT0oRmlsdGVySXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXIgIT0gb3RoZXIu
bV9pdGVyOyB9CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJJdGVyYXRv
ciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faXRlciA9PSBvdGhlci5tX2l0ZXI7IH0KKyAgICBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZpbHRlckl0ZXJhdG9yJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gbV9pdGVyICE9IG90aGVyLm1faXRlcjsgfQogCiBwcml2YXRlOgogICAgIGNvbnN0
IFByZWRpY2F0ZSBtX3ByZWQ7CkBAIC05NSw4ICs5NSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1fdHJhbnNmb3JtKCptX2l0ZXIpOwogICAgIH0KIAotICAgIGlubGluZSBib29sIG9wZXJh
dG9yPT0oVHJhbnNmb3JtSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXIgPT0g
b3RoZXIubV9pdGVyOyB9Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShUcmFuc2Zvcm1JdGVy
YXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faXRlciAhPSBvdGhlci5tX2l0ZXI7IH0KKyAg
ICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybUl0ZXJhdG9yJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gbV9pdGVyID09IG90aGVyLm1faXRlcjsgfQorICAgIGlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgVHJhbnNmb3JtSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX2l0ZXIgIT0gb3RoZXIubV9pdGVyOyB9CiAKIHByaXZhdGU6CiAgICAgY29uc3QgVHJhbnNm
b3JtIG1fdHJhbnNmb3JtOwpJbmRleDogU291cmNlL1dURi93dGYvTGl2ZW5lc3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9MaXZlbmVzcy5oCShyZXZpc2lvbiAyODY4MDIpCisrKyBT
b3VyY2UvV1RGL3d0Zi9MaXZlbmVzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw4ICs5NCw4IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fYWRhcHRlci5pbmRleFRvVmFs
dWUoKm1fc3BhcmNlU2V0SXRlcmF0b3IpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuIG1f
c3BhcmNlU2V0SXRlcmF0b3IgPT0gb3RoZXIubV9zcGFyY2VTZXRJdGVyYXRvcjsgfQotICAgICAg
ICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJu
IG1fc3BhcmNlU2V0SXRlcmF0b3IgIT0gb3RoZXIubV9zcGFyY2VTZXRJdGVyYXRvcjsgfQorICAg
ICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG1fc3BhcmNlU2V0SXRlcmF0b3IgPT0gb3RoZXIubV9zcGFyY2VTZXRJdGVyYXRv
cjsgfQorICAgICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3BhcmNlU2V0SXRlcmF0b3IgIT0gb3RoZXIubV9zcGFyY2VT
ZXRJdGVyYXRvcjsgfQogCiAgICAgICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgICAgIEFk
YXB0ZXImIG1fYWRhcHRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NjgwMikKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBACisy
MDIxLTEyLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUHJlcGFyZSBmb3IgdHJhbnNpdGlvbiB0byBDKysyMAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MDIyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25BY3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uV2l0aG91dE1ldGFkYXRhOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25XaXRoU3RyaW5nTWV0YWRhdGE6Om9wZXJh
dG9yPT0gY29uc3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQU5v
ZGVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRh
YmxlTkZBTm9kZUJ1aWxkZXI6OkZha2VSYW5nZUl0ZXJhdG9yOjpvcGVyYXRvcj09IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkFOb2RlQnVp
bGRlcjo6RmFrZVJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQU5vZGVCdWlsZGVyOjpGYWtlUmFu
Z2VJdGVyYXRvcjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXI6OkZha2VSYW5nZUl0ZXJhdG9y
OjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlSGFuZGxlOjpv
cGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL21hYy9JbWFnZU92ZXJsYXlDb250cm9s
bGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dXBk
YXRlRGF0YURldGVjdG9ySGlnaGxpZ2h0cyk6CisgICAgICAgICogcGFnZS9tYWMvU2VydmljZXNP
dmVybGF5Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXI6OmJ1aWxkUGhvbmVOdW1iZXJIaWdobGlnaHRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmJ1aWxkU2VsZWN0aW9uSGlnaGxpZ2h0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpnZXRBdWRpb1N0cmVhbUJh
c2ljRGVzY3JpcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmls
ZVJlYWRlckNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y2xp
ZW50RGF0YUZvcm1hdCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbjo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpjb25maWd1cmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNvbmZpZ3VyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjplbnN1cmVNb25p
dG9yRm9yRGlzcGxheUlEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNl
bGVjdGlvbkFsZ29yaXRobS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9y
PT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvciE9
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3I9PSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yIT0p
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVy
c2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlVkltYWdlQ0dJbWFnZUZvcm1hdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5n
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlD
R0ltYWdlRm9yRW5jb2RpbmcgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjplbmNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2
ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVs
U29saWRDb2xvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9T
dXJmYWNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNv
bnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9y
bWVyQ1YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXJDb25mb3JtZXJDVjo6Y3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9y
IT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJ
dGVyYXRvcjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3Bl
cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhU
cmFuc2Zvcm1PcGVyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Ta2V3VHJhbnNmb3JtT3Bl
cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xh
dGVUcmFuc2Zvcm1PcGVyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZUVycm9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6bWFw
UGxhdGZvcm1FcnJvcik6CisgICAgICAgICogcmVuZGVyaW5nL0dhcFJlY3RzLmg6CisgICAgICAg
IChXZWJDb3JlOjpHYXBSZWN0czo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHYXBSZWN0czo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHYXBSZWN0
czo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHYXBSZWN0czo6b3Bl
cmF0b3IhPSk6IERlbGV0ZWQuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnNldFNob3VsZE1vY2tCb2xk
U3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkpOgorCiAyMDIxLTEyLTA5ICBBbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFRyeSBub3QgdG8gaW5jbHVk
ZSBub24tY29udGVudCB0eXBlIG9mIGlubGluZSBib3hlcyBpbiB0aGUgdmlzdWFsIHJlb3JkZXJp
bmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25BY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaAkocmV2aXNpb24gMjg2ODAyKQorKysgU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCB1c2luZyBTZXJpYWxpemVkQWN0aW9uQnl0ZSA9
IHVpbnQ4X3Q7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBY3Rpb25XaXRob3V0TWV0
YWRhdGEgewogICAgIFQgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyB9OyB9Ci0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFQmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEFjdGlvbldpdGhvdXRNZXRhZGF0YSYpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KICAgICB2b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mKSBjb25zdCB7IH0K
ICAgICBzdGF0aWMgVCBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KSB7IHJldHVybiB7
IH07IH0KICAgICBzdGF0aWMgc2l6ZV90IHNlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50
OF90PikgeyByZXR1cm4gMDsgfQpAQCAtNzYsNyArNzYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQWN0aW9uV2l0aG91CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQWN0aW9u
V2l0aFN0cmluZ01ldGFkYXRhIHsKICAgICBjb25zdCBTdHJpbmcgc3RyaW5nOwogICAgIFQgaXNv
bGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyB7IHN0cmluZy5pc29sYXRlZENvcHkoKSB9IH07
IH0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90
aGVyLnN0cmluZyA9PSB0aGlzLT5zdHJpbmc7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
QWN0aW9uV2l0aFN0cmluZ01ldGFkYXRhJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIuc3Ry
aW5nID09IHRoaXMtPnN0cmluZzsgfQogICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90
PiYgdmVjdG9yKSBjb25zdCB7IHNlcmlhbGl6ZVN0cmluZyh2ZWN0b3IsIHN0cmluZyk7IH0KICAg
ICBzdGF0aWMgVCBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pIHsgcmV0dXJu
IHsgeyBkZXNlcmlhbGl6ZVN0cmluZyhzcGFuKSB9IH07IH0KICAgICBzdGF0aWMgc2l6ZV90IHNl
cmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKSB7IHJldHVybiBzdHJpbmdT
ZXJpYWxpemVkTGVuZ3RoKHNwYW4pOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9JbW11dGFibGVORkFOb2RlQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmgJKHJldmlz
aW9uIDI4NjgwMikKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJs
ZU5GQU5vZGVCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDExICs5MSwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIENoYXJhY3RlclR5cGUgZmlyc3QoKSBjb25zdCB7IHJldHVybiByYW5nZS5m
aXJzdDsgfQogICAgICAgICBDaGFyYWN0ZXJUeXBlIGxhc3QoKSBjb25zdCB7IHJldHVybiByYW5n
ZS5sYXN0OyB9CiAgICAgICAgIHVpbnQzMl90IGRhdGEoKSBjb25zdCB7IHJldHVybiB0YXJnZXRJ
ZDsgfQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmFrZVJhbmdlSXRlcmF0b3ImIG90
aGVyKQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmFrZVJhbmdlSXRlcmF0b3ImIG90
aGVyKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy0+aXNFbmQgPT0g
b3RoZXIuaXNFbmQ7CiAgICAgICAgIH0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZh
a2VSYW5nZUl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAg
ICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZha2VSYW5nZUl0ZXJhdG9yJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAgICAgRmFrZVJhbmdlSXRlcmF0
b3Igb3BlcmF0b3IrKygpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlzRW5kID0gdHJ1ZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhh
bmRsZS5oCShyZXZpc2lvbiAyODY4MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsNyBAQCBw
dWJsaWM6IAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlJiBvcGVyYXRvcj0oY29uc3QgQ2FjaGVk
UmVzb3VyY2VIYW5kbGUmIG8pIHsgc2V0UmVzb3VyY2Uoby5nZXQoKSk7IHJldHVybiAqdGhpczsg
fQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IENhY2hlZFJlc291cmNlSGFuZGxlJiBvcGVyYXRv
cj0oY29uc3QgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8VT4mIG8pIHsgc2V0UmVzb3VyY2Uoby5nZXQo
KSk7IHJldHVybiAqdGhpczsgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhY2hlZFJl
c291cmNlSGFuZGxlJiBvKSBjb25zdCB7IHJldHVybiBvcGVyYXRvcj09KHN0YXRpY19jYXN0PGNv
bnN0IENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSY+KG8pKTsgfQogICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UmIG8pIGNvbnN0IHsgcmV0dXJuIGdldCgp
ID09IG8uZ2V0KCk7IH0KICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ2FjaGVkUmVzb3VyY2VI
YW5kbGVCYXNlJiBvKSBjb25zdCB7IHJldHVybiBnZXQoKSAhPSBvLmdldCgpOyB9CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9JbWFnZU92ZXJsYXlDb250cm9s
bGVyTWFjLm1tCShyZXZpc2lvbiAyODY4MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9J
bWFnZU92ZXJsYXlDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MCw5ICs5MCw5
IEBAIHZvaWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dXBkYXRlRGF0YUQKIAogICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHRlYWNoIERhdGFEZXRlY3RvckhpZ2hsaWdodCB0byByZW5kZXIg
cXVhZHMgaW5zdGVhZCBvZiBhbHdheXMgZmFsbGluZyBiYWNrIHRvIGF4aXMtYWxpZ25lZCBib3Vu
ZGluZyByZWN0cy4KICNpZiBIQVZFKEREX0hJR0hMSUdIVF9DUkVBVEVfV0lUSF9TQ0FMRSkKLSAg
ICAgICAgYXV0byBoaWdobGlnaHQgPSBhZG9wdENGKFBBTDo6c29mdExpbmtfRGF0YURldGVjdG9y
c19EREhpZ2hsaWdodENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJlY3RXaXRoU3R5bGVTY2FsZUFu
ZERpcmVjdGlvbihudWxscHRyLCAmZWxlbWVudEJvdW5kcywgMSwgbWFpbkZyYW1lVmlldy0+dmlz
aWJsZUNvbnRlbnRSZWN0KCksIERESGlnaGxpZ2h0U3R5bGVCdWJibGVTdGFuZGFyZCB8IERESGln
aGxpZ2h0U3R5bGVTdGFuZGFyZEljb25BcnJvdywgWUVTLCBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1
cmFsLCBOTywgWUVTLCAwKSk7CisgICAgICAgIGF1dG8gaGlnaGxpZ2h0ID0gYWRvcHRDRihQQUw6
OnNvZnRMaW5rX0RhdGFEZXRlY3RvcnNfRERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2li
bGVSZWN0V2l0aFN0eWxlU2NhbGVBbmREaXJlY3Rpb24obnVsbHB0ciwgJmVsZW1lbnRCb3VuZHMs
IDEsIG1haW5GcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLCBzdGF0aWNfY2FzdDxEREhp
Z2hsaWdodFN0eWxlPihEREhpZ2hsaWdodFN0eWxlQnViYmxlU3RhbmRhcmQpIHwgc3RhdGljX2Nh
c3Q8RERIaWdobGlnaHRTdHlsZT4oRERIaWdobGlnaHRTdHlsZVN0YW5kYXJkSWNvbkFycm93KSwg
WUVTLCBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1cmFsLCBOTywgWUVTLCAwKSk7CiAjZWxzZQotICAg
ICAgICBhdXRvIGhpZ2hsaWdodCA9IGFkb3B0Q0YoUEFMOjpzb2Z0TGlua19EYXRhRGV0ZWN0b3Jz
X0RESGlnaGxpZ2h0Q3JlYXRlV2l0aFJlY3RzSW5WaXNpYmxlUmVjdFdpdGhTdHlsZUFuZERpcmVj
dGlvbihudWxscHRyLCAmZWxlbWVudEJvdW5kcywgMSwgbWFpbkZyYW1lVmlldy0+dmlzaWJsZUNv
bnRlbnRSZWN0KCksIERESGlnaGxpZ2h0U3R5bGVCdWJibGVTdGFuZGFyZCB8IERESGlnaGxpZ2h0
U3R5bGVTdGFuZGFyZEljb25BcnJvdywgWUVTLCBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1cmFsLCBO
TywgWUVTKSk7CisgICAgICAgIGF1dG8gaGlnaGxpZ2h0ID0gYWRvcHRDRihQQUw6OnNvZnRMaW5r
X0RhdGFEZXRlY3RvcnNfRERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2libGVSZWN0V2l0
aFN0eWxlQW5kRGlyZWN0aW9uKG51bGxwdHIsICZlbGVtZW50Qm91bmRzLCAxLCBtYWluRnJhbWVW
aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKSwgc3RhdGljX2Nhc3Q8RERIaWdobGlnaHRTdHlsZT4o
RERIaWdobGlnaHRTdHlsZUJ1YmJsZVN0YW5kYXJkKSB8IHN0YXRpY19jYXN0PERESGlnaGxpZ2h0
U3R5bGU+KERESGlnaGxpZ2h0U3R5bGVTdGFuZGFyZEljb25BcnJvdyksIFlFUywgTlNXcml0aW5n
RGlyZWN0aW9uTmF0dXJhbCwgTk8sIFlFUykpOwogI2VuZGlmCiAgICAgICAgIG1fZGF0YURldGVj
dG9yQ29udGFpbmVyc0FuZEhpZ2hsaWdodHMuYXBwZW5kKHsgZWxlbWVudCwgRGF0YURldGVjdG9y
SGlnaGxpZ2h0OjpjcmVhdGVGb3JJbWFnZU92ZXJsYXkoKm1fcGFnZSwgKnRoaXMsIFdURk1vdmUo
aGlnaGxpZ2h0KSwgKm1ha2VSYW5nZVNlbGVjdGluZ05vZGUoZWxlbWVudC5nZXQoKSkpIH0pOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNP
dmVybGF5Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjg2ODAyKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzY4LDkgKzM2OCw5IEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6YnVpbGRQaG8K
IAogICAgICAgICBDR1JlY3QgY2dSZWN0ID0gcmVjdDsKICNpZiBIQVZFKEREX0hJR0hMSUdIVF9D
UkVBVEVfV0lUSF9TQ0FMRSkKLSAgICAgICAgYXV0byBkZEhpZ2hsaWdodCA9IGFkb3B0Q0YoUEFM
Ojpzb2Z0TGlua19EYXRhRGV0ZWN0b3JzX0RESGlnaGxpZ2h0Q3JlYXRlV2l0aFJlY3RzSW5WaXNp
YmxlUmVjdFdpdGhTdHlsZVNjYWxlQW5kRGlyZWN0aW9uKG51bGxwdHIsICZjZ1JlY3QsIDEsIG1h
aW5GcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KCksIERESGlnaGxpZ2h0U3R5bGVCdWJibGVT
dGFuZGFyZCB8IERESGlnaGxpZ2h0U3R5bGVTdGFuZGFyZEljb25BcnJvdywgWUVTLCBOU1dyaXRp
bmdEaXJlY3Rpb25OYXR1cmFsLCBOTywgWUVTLCAwKSk7CisgICAgICAgIGF1dG8gZGRIaWdobGln
aHQgPSBhZG9wdENGKFBBTDo6c29mdExpbmtfRGF0YURldGVjdG9yc19EREhpZ2hsaWdodENyZWF0
ZVdpdGhSZWN0c0luVmlzaWJsZVJlY3RXaXRoU3R5bGVTY2FsZUFuZERpcmVjdGlvbihudWxscHRy
LCAmY2dSZWN0LCAxLCBtYWluRnJhbWVWaWV3LnZpc2libGVDb250ZW50UmVjdCgpLCBzdGF0aWNf
Y2FzdDxEREhpZ2hsaWdodFN0eWxlPihEREhpZ2hsaWdodFN0eWxlQnViYmxlU3RhbmRhcmQpIHwg
c3RhdGljX2Nhc3Q8RERIaWdobGlnaHRTdHlsZT4oRERIaWdobGlnaHRTdHlsZVN0YW5kYXJkSWNv
bkFycm93KSwgWUVTLCBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1cmFsLCBOTywgWUVTLCAwKSk7CiAj
ZWxzZQotICAgICAgICBhdXRvIGRkSGlnaGxpZ2h0ID0gYWRvcHRDRihQQUw6OnNvZnRMaW5rX0Rh
dGFEZXRlY3RvcnNfRERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2libGVSZWN0V2l0aFN0
eWxlQW5kRGlyZWN0aW9uKG51bGxwdHIsICZjZ1JlY3QsIDEsIG1haW5GcmFtZVZpZXcudmlzaWJs
ZUNvbnRlbnRSZWN0KCksIERESGlnaGxpZ2h0U3R5bGVCdWJibGVTdGFuZGFyZCB8IERESGlnaGxp
Z2h0U3R5bGVTdGFuZGFyZEljb25BcnJvdywgWUVTLCBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1cmFs
LCBOTywgWUVTKSk7CisgICAgICAgIGF1dG8gZGRIaWdobGlnaHQgPSBhZG9wdENGKFBBTDo6c29m
dExpbmtfRGF0YURldGVjdG9yc19EREhpZ2hsaWdodENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJl
Y3RXaXRoU3R5bGVBbmREaXJlY3Rpb24obnVsbHB0ciwgJmNnUmVjdCwgMSwgbWFpbkZyYW1lVmll
dy52aXNpYmxlQ29udGVudFJlY3QoKSwgc3RhdGljX2Nhc3Q8RERIaWdobGlnaHRTdHlsZT4oRERI
aWdobGlnaHRTdHlsZUJ1YmJsZVN0YW5kYXJkKSB8IHN0YXRpY19jYXN0PERESGlnaGxpZ2h0U3R5
bGU+KERESGlnaGxpZ2h0U3R5bGVTdGFuZGFyZEljb25BcnJvdyksIFlFUywgTlNXcml0aW5nRGly
ZWN0aW9uTmF0dXJhbCwgTk8sIFlFUykpOwogI2VuZGlmCiAgICAgICAgIGF1dG8gaGlnaGxpZ2h0
ID0gRGF0YURldGVjdG9ySGlnaGxpZ2h0OjpjcmVhdGVGb3JUZWxlcGhvbmVOdW1iZXIobV9wYWdl
LCAqdGhpcywgV1RGTW92ZShkZEhpZ2hsaWdodCksIFdURk1vdmUocmFuZ2UpKTsKICAgICAgICAg
bV9oaWdobGlnaHRzLmFkZChoaWdobGlnaHQuZ2V0KCkpOwpAQCAtNDEzLDkgKzQxMyw5IEBAIHZv
aWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6YnVpbGRTZWwKICAgICAgICAgaWYgKCFjZ1Jl
Y3RzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgQ0dSZWN0IHZpc2libGVSZWN0ID0gbWFpbkZy
YW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAjaWYgSEFWRShERF9ISUdITElHSFRfQ1JF
QVRFX1dJVEhfU0NBTEUpCi0gICAgICAgICAgICBhdXRvIGRkSGlnaGxpZ2h0ID0gYWRvcHRDRihQ
QUw6OnNvZnRMaW5rX0RhdGFEZXRlY3RvcnNfRERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJblZp
c2libGVSZWN0V2l0aFN0eWxlU2NhbGVBbmREaXJlY3Rpb24obnVsbHB0ciwgY2dSZWN0cy5iZWdp
bigpLCBjZ1JlY3RzLnNpemUoKSwgdmlzaWJsZVJlY3QsIERESGlnaGxpZ2h0U3R5bGVCdWJibGVO
b25lIHwgRERIaWdobGlnaHRTdHlsZVN0YW5kYXJkSWNvbkFycm93IHwgRERIaWdobGlnaHRTdHls
ZUJ1dHRvblNob3dBbHdheXMsIFlFUywgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8sIFlF
UywgMCkpOworICAgICAgICAgICAgYXV0byBkZEhpZ2hsaWdodCA9IGFkb3B0Q0YoUEFMOjpzb2Z0
TGlua19EYXRhRGV0ZWN0b3JzX0RESGlnaGxpZ2h0Q3JlYXRlV2l0aFJlY3RzSW5WaXNpYmxlUmVj
dFdpdGhTdHlsZVNjYWxlQW5kRGlyZWN0aW9uKG51bGxwdHIsIGNnUmVjdHMuYmVnaW4oKSwgY2dS
ZWN0cy5zaXplKCksIHZpc2libGVSZWN0LCBzdGF0aWNfY2FzdDxEREhpZ2hsaWdodFN0eWxlPihE
REhpZ2hsaWdodFN0eWxlQnViYmxlTm9uZSkgfCBzdGF0aWNfY2FzdDxEREhpZ2hsaWdodFN0eWxl
PihEREhpZ2hsaWdodFN0eWxlU3RhbmRhcmRJY29uQXJyb3cpIHwgc3RhdGljX2Nhc3Q8RERIaWdo
bGlnaHRTdHlsZT4oRERIaWdobGlnaHRTdHlsZUJ1dHRvblNob3dBbHdheXMpLCBZRVMsIE5TV3Jp
dGluZ0RpcmVjdGlvbk5hdHVyYWwsIE5PLCBZRVMsIDApKTsKICNlbHNlCi0gICAgICAgICAgICBh
dXRvIGRkSGlnaGxpZ2h0ID0gYWRvcHRDRihQQUw6OnNvZnRMaW5rX0RhdGFEZXRlY3RvcnNfRERI
aWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2libGVSZWN0V2l0aFN0eWxlQW5kRGlyZWN0aW9u
KG51bGxwdHIsIGNnUmVjdHMuYmVnaW4oKSwgY2dSZWN0cy5zaXplKCksIHZpc2libGVSZWN0LCBE
REhpZ2hsaWdodFN0eWxlQnViYmxlTm9uZSB8IERESGlnaGxpZ2h0U3R5bGVTdGFuZGFyZEljb25B
cnJvdyB8IERESGlnaGxpZ2h0U3R5bGVCdXR0b25TaG93QWx3YXlzLCBZRVMsIE5TV3JpdGluZ0Rp
cmVjdGlvbk5hdHVyYWwsIE5PLCBZRVMpKTsKKyAgICAgICAgICAgIGF1dG8gZGRIaWdobGlnaHQg
PSBhZG9wdENGKFBBTDo6c29mdExpbmtfRGF0YURldGVjdG9yc19EREhpZ2hsaWdodENyZWF0ZVdp
dGhSZWN0c0luVmlzaWJsZVJlY3RXaXRoU3R5bGVBbmREaXJlY3Rpb24obnVsbHB0ciwgY2dSZWN0
cy5iZWdpbigpLCBjZ1JlY3RzLnNpemUoKSwgdmlzaWJsZVJlY3QsIHN0YXRpY19jYXN0PERESGln
aGxpZ2h0U3R5bGU+KERESGlnaGxpZ2h0U3R5bGVCdWJibGVOb25lKSB8IHN0YXRpY19jYXN0PERE
SGlnaGxpZ2h0U3R5bGU+KERESGlnaGxpZ2h0U3R5bGVTdGFuZGFyZEljb25BcnJvdykgfCBzdGF0
aWNfY2FzdDxEREhpZ2hsaWdodFN0eWxlPihEREhpZ2hsaWdodFN0eWxlQnV0dG9uU2hvd0Fsd2F5
cyksIFlFUywgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8sIFlFUykpOwogI2VuZGlmCiAg
ICAgICAgICAgICBhdXRvIGhpZ2hsaWdodCA9IERhdGFEZXRlY3RvckhpZ2hsaWdodDo6Y3JlYXRl
Rm9yU2VsZWN0aW9uKG1fcGFnZSwgKnRoaXMsIFdURk1vdmUoZGRIaWdobGlnaHQpLCBXVEZNb3Zl
KCpzZWxlY3Rpb25SYW5nZSkpOwogICAgICAgICAgICAgbV9oaWdobGlnaHRzLmFkZChoaWdobGln
aHQuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCShyZXZpc2lvbiAyODY4
MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0
aW9uQ29jb2EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBBdWRp
b0Rlc3RpbmF0aW9uQ29jb2E6OmdldEF1ZGlvU3RyZQogICAgIGNvbnN0IGludCBiaXRzUGVyQnl0
ZSA9IDg7CiAgICAgc3RyZWFtRm9ybWF0Lm1TYW1wbGVSYXRlID0gaGFyZHdhcmVTYW1wbGVSYXRl
KCk7CiAgICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsK
LSAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVG
bG9hdFBhY2tlZCB8IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVkOworICAgIHN0cmVh
bUZvcm1hdC5tRm9ybWF0RmxhZ3MgPSBzdGF0aWNfY2FzdDxBdWRpb0Zvcm1hdEZsYWdzPihrQXVk
aW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkKSB8IHN0YXRpY19jYXN0PEF1ZGlvRm9ybWF0
RmxhZ3M+KGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVkKTsKICAgICBzdHJlYW1Gb3Jt
YXQubUJ5dGVzUGVyUGFja2V0ID0gYnl0ZXNQZXJGbG9hdDsKICAgICBzdHJlYW1Gb3JtYXQubUZy
YW1lc1BlclBhY2tldCA9IDE7CiAgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZyYW1lID0gYnl0
ZXNQZXJGbG9hdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRmlsZVJlYWRlckNvY29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAJKHJldmlzaW9uIDI4Njgw
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRl
ckNvY29hLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIxLDcgKzUyMSw3IEBAIEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbiBBdWRpb0ZpbGVSZWEKICAgICBjb25zdCBpbnQgYnl0ZXNQZXJGbG9h
dCA9IHNpemVvZihGbG9hdDMyKTsKICAgICBjb25zdCBpbnQgYml0c1BlckJ5dGUgPSA4OwogICAg
IG91dEZvcm1hdC5tRm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007Ci0gICAgb3V0Rm9y
bWF0Lm1Gb3JtYXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQgfCBr
QXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZDsKKyAgICBvdXRGb3JtYXQubUZvcm1hdEZs
YWdzID0gc3RhdGljX2Nhc3Q8QXVkaW9Gb3JtYXRGbGFncz4oa0F1ZGlvRm9ybWF0RmxhZ3NOYXRp
dmVGbG9hdFBhY2tlZCkgfCBzdGF0aWNfY2FzdDxBdWRpb0Zvcm1hdEZsYWdzPihrQXVkaW9Gb3Jt
YXRGbGFnSXNOb25JbnRlcmxlYXZlZCk7CiAgICAgb3V0Rm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9
IG91dEZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CiAgICAgb3V0Rm9ybWF0
Lm1GcmFtZXNQZXJQYWNrZXQgPSAxOwogICAgIG91dEZvcm1hdC5tQml0c1BlckNoYW5uZWwgPSBi
aXRzUGVyQnl0ZSAqIGJ5dGVzUGVyRmxvYXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbi5jcHAJKHJldmlzaW9uIDI4NjgwMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDcgKzQ4LDcgQEAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpDQUF1ZGlvU3RyZWFtRAog
ICAgIG1fc3RyZWFtRGVzY3JpcHRpb24ubUNoYW5uZWxzUGVyRnJhbWUgPSBudW1DaGFubmVsczsK
ICAgICBtX3N0cmVhbURlc2NyaXB0aW9uLm1CeXRlc1BlckZyYW1lID0gMDsKICAgICBtX3N0cmVh
bURlc2NyaXB0aW9uLm1CeXRlc1BlclBhY2tldCA9IDA7Ci0gICAgbV9zdHJlYW1EZXNjcmlwdGlv
bi5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUVuZGlhbiB8IGtBdWRpb0Zv
cm1hdEZsYWdJc1BhY2tlZDsKKyAgICBtX3N0cmVhbURlc2NyaXB0aW9uLm1Gb3JtYXRGbGFncyA9
IHN0YXRpY19jYXN0PEF1ZGlvRm9ybWF0RmxhZ3M+KGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRW5k
aWFuKSB8IHN0YXRpY19jYXN0PEF1ZGlvRm9ybWF0RmxhZ3M+KGtBdWRpb0Zvcm1hdEZsYWdJc1Bh
Y2tlZCk7CiAgICAgbV9zdHJlYW1EZXNjcmlwdGlvbi5tUmVzZXJ2ZWQgPSAwOwogCiAgICAgaW50
IHdvcmRzaXplOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgJKHJldmlzaW9uIDI4
NjgwMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBAIHB1YmxpYzoK
ICAgICB1aW50MzJfdCBieXRlc1BlclBhY2tldCgpIGNvbnN0OwogICAgIHVpbnQzMl90IGZvcm1h
dEZsYWdzKCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3BlcmF0b3I9PShzdGF0aWNfY2Fz
dDxjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJj4ob3RoZXIpKTsgfQogICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIG90aGVyKSBjb25zdDsK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBv
dGhlcikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIG90aGVyKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAJ
KHJldmlzaW9uIDI4NjgwMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYs
NyBAQCB2b2lkIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNvbmZpZ3VyZShmCiAgICAgY29uc3Rl
eHByIGludCBiaXRzUGVyQnl0ZSA9IDg7CiAgICAgc3RyZWFtRm9ybWF0Lm1TYW1wbGVSYXRlID0g
aGFyZHdhcmVTYW1wbGVSYXRlOwogICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0SUQgPSBrQXVkaW9G
b3JtYXRMaW5lYXJQQ007Ci0gICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRGbGFncyA9IGtBdWRpb0Zv
cm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQgfCBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxl
YXZlZDsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0gc3RhdGljX2Nhc3Q8QXVkaW9G
b3JtYXRGbGFncz4oa0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCkgfCBzdGF0aWNf
Y2FzdDxBdWRpb0Zvcm1hdEZsYWdzPihrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZCk7
CiAgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5dGVzUGVyRmxvYXQ7CiAgICAg
c3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAxOwogICAgIHN0cmVhbUZvcm1hdC5tQnl0
ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JN
YWMuY3BwCShyZXZpc2lvbiAyODY4MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDcgKzczLDcgQEAgdm9pZCBBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpjb25maWd1cmUoZgogICAg
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CiAgICAgc3RyZWFtRm9y
bWF0Lm1TYW1wbGVSYXRlID0gaGFyZHdhcmVTYW1wbGVSYXRlOwogICAgIHN0cmVhbUZvcm1hdC5t
Rm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007Ci0gICAgc3RyZWFtRm9ybWF0Lm1Gb3Jt
YXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQgfCBrQXVkaW9Gb3Jt
YXRGbGFnSXNOb25JbnRlcmxlYXZlZDsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0g
c3RhdGljX2Nhc3Q8QXVkaW9Gb3JtYXRGbGFncz4oa0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9h
dFBhY2tlZCkgfCBzdGF0aWNfY2FzdDxBdWRpb0Zvcm1hdEZsYWdzPihrQXVkaW9Gb3JtYXRGbGFn
SXNOb25JbnRlcmxlYXZlZCk7CiAgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5
dGVzUGVyRmxvYXQ7CiAgICAgc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAxOwogICAg
IHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNw
bGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjg2ODAyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgRGlzcGxheVJlZnJlc2hNb25pdG9y
KiBEaXNwbGF5UmVmcmVzaE1vbgogCiAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaW5rLCBz
dHJlYW0gPDwgIltXZWJdIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OmVuc3VyZU1vbml0
b3JGb3JEaXNwbGF5SUQoKSAtIGNyZWF0ZWQgbW9uaXRvciAiIDw8IG1vbml0b3IuZ2V0KCkgPDwg
IiBmb3IgZGlzcGxheSAiIDw8IGRpc3BsYXlJRCk7CiAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9y
KiByZXN1bHQgPSBtb25pdG9yLmdldCgpOwotICAgIG1fbW9uaXRvcnMuYXBwZW5kKHsgV1RGTW92
ZShtb25pdG9yKSB9KTsKKyAgICBtX21vbml0b3JzLmFwcGVuZChEaXNwbGF5UmVmcmVzaE1vbml0
b3JXcmFwcGVyIHsgV1RGTW92ZShtb25pdG9yKSB9KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oCShyZXZpc2lvbiAyODY4MDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JN
YW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDYgQEAgcHJpdmF0ZToKICAgICBE
aXNwbGF5UmVmcmVzaE1vbml0b3IqIGVuc3VyZU1vbml0b3JGb3JEaXNwbGF5SUQoUGxhdGZvcm1E
aXNwbGF5SUQsIERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqKTsKIAogICAgIHN0cnVjdCBE
aXNwbGF5UmVmcmVzaE1vbml0b3JXcmFwcGVyIHsKLSAgICAgICAgRGlzcGxheVJlZnJlc2hNb25p
dG9yV3JhcHBlcihEaXNwbGF5UmVmcmVzaE1vbml0b3JXcmFwcGVyJiYpID0gZGVmYXVsdDsKICAg
ICAgICAgfkRpc3BsYXlSZWZyZXNoTW9uaXRvcldyYXBwZXIoKQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAobW9uaXRvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmgJKHJldmlzaW9uIDI4Njgw
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdv
cml0aG0uaAkod29ya2luZyBjb3B5KQpAQCAtNDI2LDEwICs0MjYsNiBAQCBpbmxpbmUgdm9pZCBh
ZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IEZvCiBzdHJ1Y3QgRm9udFNlbGVjdGlvbkNhcGFiaWxp
dGllcyB7CiAgICAgdXNpbmcgUmFuZ2UgPSBGb250U2VsZWN0aW9uUmFuZ2U7CiAKLSAgICBGb250
U2VsZWN0aW9uQ2FwYWJpbGl0aWVzKCkgPSBkZWZhdWx0OwotICAgIEZvbnRTZWxlY3Rpb25DYXBh
YmlsaXRpZXMoY29uc3QgRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcyYpID0gZGVmYXVsdDsKLSAg
ICBGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzJiBvcGVyYXRvcj0oY29uc3QgRm9udFNlbGVjdGlv
bkNhcGFiaWxpdGllcyYpID0gZGVmYXVsdDsKLQogICAgIGNvbnN0ZXhwciBzdGQ6OnR1cGxlPFJh
bmdlLCBSYW5nZSwgUmFuZ2U+IHRpZWQoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIFdU
Rjo6dGllKHdlaWdodCwgd2lkdGgsIHNsb3BlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gMjg2
ODAyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTIgKzYzLDEyIEBAIHB1YmxpYzoKICAgICBVQ2hh
ciBjdXJyZW50KCkgY29uc3QgeyByZXR1cm4gKCptX3RleHRSdW4pW21fb2Zmc2V0XTsgfQogICAg
IFVDaGFyRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGF0RW5kKCkgPyBVX09U
SEVSX05FVVRSQUwgOiB1X2NoYXJEaXJlY3Rpb24oY3VycmVudCgpKTsgfQogCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFRleHRCb3hJdGVyYXRvciYgb3RoZXIpCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFRleHRCb3hJdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gbV9vZmZzZXQgPT0gb3RoZXIubV9vZmZzZXQgJiYgbV90ZXh0UnVuID09IG90aGVyLm1f
dGV4dFJ1bjsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4dEJveEl0ZXJh
dG9yJiBvdGhlcikgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CisgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFRleHRCb3hJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVy
YXRvcj09KG90aGVyKTsgfQogCiBwcml2YXRlOgogICAgIGNvbnN0IFRleHRSdW4qIG1fdGV4dFJ1
bjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29u
dmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMjg2ODAyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsMTUgKzQ1LDE1IEBAIHN0YXRpYyBpbmxpbmUgdkltYWdlX0NHSW1h
Z2VGb3JtYXQgbWFrZVYKICAgICAgICAgc3dpdGNoIChmb3JtYXQucGl4ZWxGb3JtYXQpIHsKICAg
ICAgICAgY2FzZSBQaXhlbEZvcm1hdDo6UkdCQTg6CiAgICAgICAgICAgICBpZiAoZm9ybWF0LmFs
cGhhRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSg4dSwgMzJ1LCBrQ0dCaXRtYXBCeXRl
T3JkZXIzMkJpZyB8IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSg4dSwgMzJ1LCBzdGF0aWNfY2FzdDxDR0JpdG1h
cEluZm8+KGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSB8IHN0YXRpY19jYXN0PENHQml0bWFwSW5m
bz4oa0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSg4dSwgMzJ1LCBrQ0dCaXRtYXBC
eXRlT3JkZXIzMkJpZyB8IGtDR0ltYWdlQWxwaGFMYXN0KTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3R1cGxlKDh1LCAzMnUsIHN0YXRpY19jYXN0PENHQml0bWFwSW5mbz4oa0NH
Qml0bWFwQnl0ZU9yZGVyMzJCaWcpIHwgc3RhdGljX2Nhc3Q8Q0dCaXRtYXBJbmZvPihrQ0dJbWFn
ZUFscGhhTGFzdCkpOwogCiAgICAgICAgIGNhc2UgUGl4ZWxGb3JtYXQ6OkJHUkE4OgogICAgICAg
ICAgICAgaWYgKGZvcm1hdC5hbHBoYUZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQ
cmVtdWx0aXBsaWVkKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoOHUs
IDMydSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZEZpcnN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKDh1LCAz
MnUsIHN0YXRpY19jYXN0PENHQml0bWFwSW5mbz4oa0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUp
IHwgc3RhdGljX2Nhc3Q8Q0dCaXRtYXBJbmZvPihrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZp
cnN0KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV90dXBsZSg4dSwgMzJ1LCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxw
aGFGaXJzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSg4dSwgMzJ1
LCBzdGF0aWNfY2FzdDxDR0JpdG1hcEluZm8+KGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlKSB8
IHN0YXRpY19jYXN0PENHQml0bWFwSW5mbz4oa0NHSW1hZ2VBbHBoYUZpcnN0KSk7CiAKICAgICAg
ICAgY2FzZSBQaXhlbEZvcm1hdDo6UkdCMTA6CiAgICAgICAgIGNhc2UgUGl4ZWxGb3JtYXQ6OlJH
QjEwQTg6CkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBpbmxpbmUgdkltYWdlX0NHSW1hZ2VGb3Jt
YXQgbWFrZVYKICAgICAgICAgLy8gV2UgY3VycmVudGx5IG9ubHkgc3VwcG9ydCA4IGJpdCBwaXhl
bCBmb3JtYXRzIGZvciB0aGVzZSBjb252ZXJzaW9ucy4KIAogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSg4dSwgMzJ1LCBrQ0dCaXRt
YXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFGaXJzdCk7CisgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdHVwbGUoOHUsIDMydSwgc3RhdGljX2Nhc3Q8Q0dCaXRtYXBJbmZvPihrQ0dC
aXRtYXBCeXRlT3JkZXIzMkxpdHRsZSkgfCBzdGF0aWNfY2FzdDxDR0JpdG1hcEluZm8+KGtDR0lt
YWdlQWxwaGFGaXJzdCkpOwogICAgIH0oZm9ybWF0KTsKIAogICAgIHZJbWFnZV9DR0ltYWdlRm9y
bWF0IHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dEdMQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCShyZXZpc2lvbiAyODY4MDIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRH
TENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYwLDcgKzM2MCw3IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXgKICAgICAgICAgLy8gYWxwaGEgY2hhbm5lbC4gQ3Jl
YXRpb24gb2YgYSBiaXRtYXAgY29udGV4dCB3aXRoIGFuIGFscGhhIGNoYW5uZWwKICAgICAgICAg
Ly8gZG9lc24ndCBzZWVtIHRvIHdvcmsgdW5sZXNzIGl0J3MgcHJlbXVsdGlwbGllZC4KICAgICAg
ICAgYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIG1faW1h
Z2VXaWR0aCwgbV9pbWFnZUhlaWdodCwgOCwgbV9pbWFnZVdpZHRoICogNCwKLSAgICAgICAgICAg
IHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBr
Q0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKKyAgICAgICAgICAgIHNSR0JDb2xvclNwYWNlUmVm
KCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0
KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKSk7CiAg
ICAgICAgIGlmICghYml0bWFwQ29udGV4dCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAkocmV2aXNpb24gMjg2ODAyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3Jl
YXRlQml0bWFwSW1hZ2VBZgogICAgIGlmIChyZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2
ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCiAgICAgICAgIGltYWdlID0g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShpbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBiYWNrZW5kU2l6ZSkpOwogICAgIGVsc2UgewotICAgICAg
ICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBsb2dpY2Fs
U2l6ZS53aWR0aCgpLCBsb2dpY2FsU2l6ZS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplLndp
ZHRoKCksIGNvbG9yU3BhY2VGb3JCaXRtYXAoaW1hZ2UtPmNvbG9yU3BhY2UoKSksIGtDR0ltYWdl
QWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKKyAg
ICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgbG9n
aWNhbFNpemUud2lkdGgoKSwgbG9naWNhbFNpemUuaGVpZ2h0KCksIDgsIDQgKiBsb2dpY2FsU2l6
ZS53aWR0aCgpLCBjb2xvclNwYWNlRm9yQml0bWFwKGltYWdlLT5jb2xvclNwYWNlKCkpLCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oa0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkgfCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oa0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSkpOwogICAgICAgICBD
R0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAg
ICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0
UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUpKTsKICAgICAgICAgRmxvYXRTaXplIGltYWdlU2l6
ZUluVXNlclNwYWNlID0gbG9naWNhbFNpemU7CkBAIC0xOTQsNyArMTk0LDcgQEAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAgICAgYXV0byBpbWFnZVNpemUgPSBwaXhlbEJ1ZmZlci0+c2l6ZSgpOwotICAg
ICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFn
ZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHBpeGVsQnVmZmVy
LT5mb3JtYXQoKS5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dCaXRtYXBCeXRl
T3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdl
dCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAgICByZXR1
cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVp
Z2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHBpeGVsQnVmZmVyLT5mb3JtYXQo
KS5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
a0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHSW1h
Z2VBbHBoYU5vbmVTa2lwTGFzdCksIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1Jl
bmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICB9CiAKICAgICBpZiAocmVzb2x1dGlvblNjYWxl
KCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMp
IHsKQEAgLTIwOCw3ICsyMDgsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXJD
R0JhY2tlCiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7Ci0gICAgYXV0byBj
b250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgYmFja2VuZFNpemUoKS53
aWR0aCgpLCBiYWNrZW5kU2l6ZSgpLmhlaWdodCgpLCA4LCA0ICogYmFja2VuZFNpemUoKS53aWR0
aCgpLCBjb2xvclNwYWNlRm9yQml0bWFwKGNvbG9yU3BhY2UoKSksIGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKKyAgICBhdXRvIGNv
bnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBiYWNrZW5kU2l6ZSgpLndp
ZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBiYWNrZW5kU2l6ZSgpLndpZHRo
KCksIGNvbG9yU3BhY2VGb3JCaXRtYXAoY29sb3JTcGFjZSgpKSwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpIHwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpKTsKICAgICBDR0NvbnRleHRTZXRCbGVuZE1v
ZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgQ0dDb250ZXh0Q2xpcFRv
UmVjdChjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplKCkud2lkdGgo
KSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSkpOwogICAgIENHQ29udGV4dERyYXdJbWFnZShjb250
ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2Vu
ZFNpemUoKS5oZWlnaHQoKSksIGltYWdlLmdldCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZC5jcHAJKHJldmlzaW9uIDI4NjgwMikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlCiAgICAgc2l6ZV90IG51bUJ5dGVzID0gYmFja2VuZFNpemUuaGVpZ2h0KCkgKiBi
eXRlc1BlclJvdzsKICAgICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGRhdGEsIG51bUJ5
dGVzKTsKIAotICAgIGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGUoZGF0YSwgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIGJ5
dGVzUGVyUm93LCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Qp
KTsKKyAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGRh
dGEsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCA4LCBieXRlc1Bl
clJvdywgcGFyYW1ldGVycy5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oa0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkgfCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oa0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSkpOwogICAgIGlmICghY2dD
b250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTQ1LDcgKzE0NSw3IEBAIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDR0JpdG1hcEIKICAgICAgICAgYXV0byBiYWNr
ZW5kU2l6ZSA9IHRoaXMtPmJhY2tlbmRTaXplKCk7CiAgICAgICAgIHJldHVybiBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSgKICAgICAgICAgICAgIGJhY2tlbmRTaXpl
LndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCA4LCAzMiwgYnl0ZXNQZXJSb3coKSwKLSAg
ICAgICAgICAgIGNvbG9yU3BhY2UoKS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHSW1hZ2VBbHBo
YVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwgbV9kYXRhUHJv
dmlkZXIuZ2V0KCksCisgICAgICAgICAgICBjb2xvclNwYWNlKCkucGxhdGZvcm1Db2xvclNwYWNl
KCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0
KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpLCBtX2Rh
dGFQcm92aWRlci5nZXQoKSwKICAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVu
dERlZmF1bHQpKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAko
cmV2aXNpb24gMjg2ODAyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcs
NyBAQCBzdGF0aWMgYm9vbCBlbmNvZGUoY29uc3QgUGl4ZWxCdWZmZXImIHNvCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGF1dG8gaW1hZ2VTaXplID0gc291cmNlLnNpemUoKTsKLSAgICBh
dXRvIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFn
ZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHNvdXJjZS5mb3Jt
YXQoKS5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dCaXRtYXBCeXRlT3JkZXJE
ZWZhdWx0IHwgZGF0YUFscGhhSW5mbywgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NH
UmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHSW1h
Z2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQg
KiBpbWFnZVNpemUud2lkdGgoKSwgc291cmNlLmZvcm1hdCgpLmNvbG9yU3BhY2UucGxhdGZvcm1D
b2xvclNwYWNlKCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3JkZXJEZWZh
dWx0KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihkYXRhQWxwaGFJbmZvKSwgZGF0YVByb3ZpZGVy
LmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogCiAgICAgcmV0
dXJuIGVuY29kZShpbWFnZS5nZXQoKSwgZGVzdGluYXRpb25VVEkuZ2V0KCksIHF1YWxpdHksIGZ1
bmN0aW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05h
dGl2ZUltYWdlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCShyZXZpc2lvbiAyODY4MDIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNyArNTAsNyBAQCBDb2xvciBOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xp
ZENvbG9yCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgdW5zaWduZWQgY2hhciBwaXhl
bFs0XTsgLy8gUkdCQQotICAgIGF1dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKHBpeGVsLCAxLCAxLCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFj
ZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkJpZykpOworICAgIGF1dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlKHBpeGVsLCAxLCAxLCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJl
ZigpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0
KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpKTsKIAog
ICAgIGlmICghYml0bWFwQ29udGV4dCkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNl
Lm1tCShyZXZpc2lvbiAyODY4MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5OSw3ICsyOTksNyBAQCBD
R0NvbnRleHRSZWYgSU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvCiAgICAgaWYgKG1fY2dDb250
ZXh0KQogICAgICAgICByZXR1cm4gbV9jZ0NvbnRleHQuZ2V0KCk7CiAKLSAgICBDR0JpdG1hcElu
Zm8gYml0bWFwSW5mbyA9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRt
YXBCeXRlT3JkZXIzMkhvc3Q7CisgICAgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBzdGF0aWNf
Y2FzdDxDR0JpdG1hcEluZm8+KGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpIHwgc3Rh
dGljX2Nhc3Q8Q0dCaXRtYXBJbmZvPihrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpOwogCiAgICAg
c2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSA4OwogICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSAz
MjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVy
Q29uZm9ybWVyQ1YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3BwCShyZXZpc2lvbiAyODY4MDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1l
ckNWLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDcgKzE1OCw3IEBAIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBQaXhlbEJ1ZmZlckNvbmZvcm0KICAgICAgICAgYnVmZmVyID0gYWRvcHRDRihvdXRw
dXRCdWZmZXIpOwogICAgIH0KIAotICAgIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvID0ga0NHQml0
bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhRmlyc3Q7CisgICAgQ0dCaXRtYXBJ
bmZvIGJpdG1hcEluZm8gPSBzdGF0aWNfY2FzdDxDR0JpdG1hcEluZm8+KGtDR0JpdG1hcEJ5dGVP
cmRlcjMyTGl0dGxlKSB8IHN0YXRpY19jYXN0PENHQml0bWFwSW5mbz4oa0NHSW1hZ2VBbHBoYUZp
cnN0KTsKICAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJS
b3coYnVmZmVyLmdldCgpKTsKICAgICBzaXplX3QgYnl0ZUxlbmd0aCA9IGJ5dGVzUGVyUm93ICog
aGVpZ2h0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgJKHJl
dmlzaW9uIDI4NjgwMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5
LDggQEAgcHVibGljOgogICAgICAgICBjbGVhckN1cnJlbnRJdGVtKCk7CiAgICAgfQogCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gJm1fZGlzcGxh
eUxpc3QgPT0gJm90aGVyLm1fZGlzcGxheUxpc3QgJiYgbV9jdXJzb3IgPT0gb3RoZXIubV9jdXJz
b3I7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRv
ciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICZtX2Rpc3BsYXlMaXN0ID09ICZvdGhlci5tX2Rpc3Bs
YXlMaXN0ICYmIG1fY3Vyc29yID09IG90aGVyLm1fY3Vyc29yOyB9CisgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7IH0KICAgICB2b2lkIG9wZXJhdG9yKysoKSB7IGFkdmFuY2UoKTsgfQogCiAgICAgc3RydWN0
IFZhbHVlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb25lbnRUcmFuc2Zlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCShyZXZpc2lvbiAyODY4
MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9u
ZW50VHJhbnNmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsNiBAQCBlbnVtIENvbXBv
bmVudFRyYW5zZmVyVHlwZSB7CiB9OwogCiBzdHJ1Y3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
biB7Ci0gICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbigpID0gZGVmYXVsdDsKLQogICAgIENv
bXBvbmVudFRyYW5zZmVyVHlwZSB0eXBlIHsgRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1VOS05P
V04gfTsKIAogICAgIGZsb2F0IHNsb3BlIHsgMCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
TWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaAkocmV2aXNpb24gMjg2ODAyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9w
ZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIHByaXZhdGU6ICAgIAog
CiAgICAgYm9vbCBpc1JlcHJlc2VudGFibGVJbjJEKCkgY29uc3QgZmluYWw7CiAKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24mIG90aGVyKSBjb25z
dCB7IHJldHVybiBvcGVyYXRvcj09KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlv
biY+KG90aGVyKSk7IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0IG92ZXJyaWRlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9y
bU9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmgJKHJldmlzaW9uIDI4Njgw
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4
VHJhbnNmb3JtT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIGlzSWRlbnRpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Eg
PT0gMSAmJiBtX2IgPT0gMCAmJiBtX2MgPT0gMCAmJiBtX2QgPT0gMSAmJiBtX2UgPT0gMCAmJiBt
X2YgPT0gMDsgfQogICAgIGJvb2wgaXNBZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIWlzSWRlbnRpdHkoKTsgfQogCisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG9w
ZXJhdG9yPT0oc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJj4ob3RoZXIpKTsg
fQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSwgY29uc3QgRmxvYXRTaXplJikgY29uc3Qgb3ZlcnJpZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgJKHJldmlzaW9uIDI4NjgwMikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3Rp
dmVUcmFuc2Zvcm1PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNBZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIWlzSWRlbnRpdHkoKTsgfQogICAgIGJvb2wgaXNSZXByZXNlbnRhYmxl
SW4yRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24mIG90aGVyKSBjb25zdCB7IHJl
dHVybiBvcGVyYXRvcj09KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiY+KG90
aGVyKSk7IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJikg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBmbG9hdFZhbHVlKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAko
cmV2aXNpb24gMjg2ODAyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTMs
NiArNTMsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIHooKSBjb25zdCB7IHJldHVybiBtX3o7IH0K
ICAgICBkb3VibGUgYW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2FuZ2xlOyB9CiAKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gb3BlcmF0b3I9PShzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24m
PihvdGhlcikpOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlv
biYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQo
Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmLCBi
b29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1NjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgJKHJldmlzaW9uIDI4NjgwMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFuc2Zvcm1PcGVyYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgZG91Ymxl
IHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KICAgICBkb3VibGUgeigpIGNvbnN0IHsgcmV0dXJu
IG1fejsgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0
aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3BlcmF0b3I9PShzdGF0aWNfY2FzdDxjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb24mPihvdGhlcikpOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFRyYW5zZm9ybU9wZXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVmPFRyYW5zZm9ybU9w
ZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBjb25zdCBCbGVu
ZGluZ0NvbnRleHQmLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSBmaW5hbDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2tld1RyYW5zZm9y
bU9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5oCShyZXZpc2lvbiAyODY4MDIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NrZXdUcmFu
c2Zvcm1PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYW5nbGVY
ID09IDAgJiYgbV9hbmdsZVkgPT0gMDsgfQogICAgIGJvb2wgaXNBZmZlY3RlZEJ5VHJhbnNmb3Jt
T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIWlzSWRlbnRpdHkoKTsgfQogCisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24mIG90aGVyKSBjb25z
dCB7IHJldHVybiBvcGVyYXRvcj09KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlv
biY+KG90aGVyKSk7IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0IG92ZXJyaWRlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgJKHJldmlzaW9u
IDI4NjgwMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2
LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0lkZW50aXR5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gIWZsb2F0VmFsdWVGb3JMZW5ndGgobV94LCAxKSAmJiAhZmxvYXRWYWx1ZUZvckxlbmd0aCht
X3ksIDEpICYmICFmbG9hdFZhbHVlRm9yTGVuZ3RoKG1feiwgMSk7IH0KIAorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24mIG90aGVyKSBjb25zdCB7
IHJldHVybiBvcGVyYXRvcj09KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiY+
KG90aGVyKSk7IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9u
JikgY29uc3QgZmluYWw7CiAKICAgICBSZWY8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYsIGJvb2wg
YmxlbmRUb0lkZW50aXR5ID0gZmFsc2UpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCShyZXZp
c2lvbiAyODY4MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNv
dXJjZUVycm9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsOCArMTM2LDggQEAgY29uc3Qg
U3RyaW5nJiBSZXNvdXJjZUVycm9yOjpnZXRDRkVycm9yRAogCiB2b2lkIFJlc291cmNlRXJyb3I6
Om1hcFBsYXRmb3JtRXJyb3IoKQogewotICAgIHN0YXRpY19hc3NlcnQoTlNVUkxFcnJvclRpbWVk
T3V0ID09IGtDRlVSTEVycm9yVGltZWRPdXQsICJOU1VSTEVycm9yVGltZWRPdXQgbmVlZHMgdG8g
ZXF1YWwga0NGVVJMRXJyb3JUaW1lZE91dCIpOwotICAgIHN0YXRpY19hc3NlcnQoTlNVUkxFcnJv
ckNhbmNlbGxlZCA9PSBrQ0ZVUkxFcnJvckNhbmNlbGxlZCwgIk5TVVJMRXJyb3JDYW5jZWxsZWQg
bmVlZHMgdG8gZXF1YWwga0NGVVJMRXJyb3JDYW5jZWxsZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PE5TSW50ZWdlcj4oTlNVUkxFcnJvclRpbWVkT3V0KSA9PSBzdGF0aWNfY2Fz
dDxOU0ludGVnZXI+KGtDRlVSTEVycm9yVGltZWRPdXQpLCAiTlNVUkxFcnJvclRpbWVkT3V0IG5l
ZWRzIHRvIGVxdWFsIGtDRlVSTEVycm9yVGltZWRPdXQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0
YXRpY19jYXN0PE5TSW50ZWdlcj4oTlNVUkxFcnJvckNhbmNlbGxlZCkgPT0gc3RhdGljX2Nhc3Q8
TlNJbnRlZ2VyPihrQ0ZVUkxFcnJvckNhbmNlbGxlZCksICJOU1VSTEVycm9yQ2FuY2VsbGVkIG5l
ZWRzIHRvIGVxdWFsIGtDRlVSTEVycm9yQ2FuY2VsbGVkIik7CiAKICAgICBpZiAoIW1fcGxhdGZv
cm1FcnJvcikKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0dhcFJlY3RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dhcFJl
Y3RzLmgJKHJldmlzaW9uIDI4NjgwMikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HYXBS
ZWN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMSArNDQsMTEgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBHYXBSZWN0cyYgb3RoZXIpCisgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBHYXBSZWN0cyYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBtX2xlZnQgPT0gb3RoZXIubGVmdCgpICYmIG1fY2VudGVyID09IG90aGVyLmNlbnRl
cigpICYmIG1fcmlnaHQgPT0gb3RoZXIucmlnaHQoKTsKICAgICAgICAgfQotICAgICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgR2FwUmVjdHMmIG90aGVyKSB7IHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsgfQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR2FwUmVjdHMmIG90aGVyKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgTGF5b3V0UmVjdCBtX2xlZnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5jcHAJKHJldmlzaW9uIDI4NjgwMikKKysrIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2NiwxMyArNTY2
LDEzIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+ICBJbnRlcm5hbFNldHRpbmdzOjpzZXQKICAgICByZXR1
cm4geyB9OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbFNldHRpbmdzOjpzZXRTaG91
bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KGJvb2wgcmVxdWlyZXMpCitFeGNl
cHRpb25Pcjx2b2lkPiBJbnRlcm5hbFNldHRpbmdzOjpzZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZv
bnRGb3JBY2Nlc3NpYmlsaXR5KGJvb2wgc2hvdWxkKQogewogICAgIGlmICghbV9wYWdlKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07Ci0gICAgUmVuZGVy
VGhlbWU6OnNpbmdsZXRvbigpLnNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2li
aWxpdHkocmVxdWlyZXMpOworICAgIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5zZXRTaG91bGRN
b2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KHNob3VsZCk7CiAgICAgLy8gRklYTUU6
IENhbGwgc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSgpIG9uIGFs
bCB3b3JrZXJzLgotICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnNldFNob3VsZE1v
Y2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkocmVxdWlyZXMpOworICAgIEZvbnRDYWNo
ZTo6Zm9yQ3VycmVudFRocmVhZCgpLnNldFNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vz
c2liaWxpdHkoc2hvdWxkKTsKICAgICByZXR1cm4geyB9OwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2
aXNpb24gMjg2ODAyKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMSBAQAorMjAyMS0xMi0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFByZXBhcmUgZm9yIHRyYW5zaXRpb24gdG8gQysr
MjAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDAy
MgorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6OmRpZFBhcnNlVHJhY2tzKToKKyAgICAgICAgKiBT
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFTYW1wbGVDdXJzb3I6OmdldFNhbXBsZU1hcCBjb25zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtX
S1ByZWZlcmVuY2VzIF9zZXRSZXF1aXJlc1BhZ2VWaXNpYmlsaXR5VG9QbGF5QXVkaW86XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0
UmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFJlcXVpcmVzU2VjdXJl
SFRUUFNQcm94eUNvbm5lY3Rpb24pOgorCiAyMDIxLTEyLTA5ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dQRV0gQ3Jhc2ggdW5kZXIgV2ViUHJvY2Vzc1Byb3h5
OjpzZXRJc0luUHJvY2Vzc0NhY2hlIHdoZW4gY2xvc2luZyB3ZWIgdmlldyBpbiBkZWJ1ZyBidWls
ZHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRp
YUZvcm1hdFJlYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAkocmV2aXNpb24gMjg2ODAy
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9y
bWF0UmVhZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgTWVk
aWFGb3JtYXRSZWFkZXI6OmRpZFBhcnNlVHJhY2tzKFMKICAgICBpZiAoZXJyb3JDb2RlKQogICAg
ICAgICBFUlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgZXJyb3JDb2RlKTsKIAot
ICAgIG1fcGFyc2VUcmFja3NTdGF0dXMgPSBlcnJvckNvZGUgPyBrTVRQbHVnaW5Gb3JtYXRSZWFk
ZXJFcnJvcl9QYXJzaW5nRmFpbHVyZSA6IG5vRXJyOworICAgIG1fcGFyc2VUcmFja3NTdGF0dXMg
PSBlcnJvckNvZGUgPyBzdGF0aWNfY2FzdDxPU1N0YXR1cz4oa01UUGx1Z2luRm9ybWF0UmVhZGVy
RXJyb3JfUGFyc2luZ0ZhaWx1cmUpIDogbm9FcnI7CiAgICAgbV9kdXJhdGlvbiA9IFdURk1vdmUo
c2VnbWVudC5kdXJhdGlvbik7CiAKICAgICBmb3IgKGF1dG8mIHZpZGVvVHJhY2sgOiBzZWdtZW50
LnZpZGVvVHJhY2tzKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAJKHJl
dmlzaW9uIDI4NjgwMikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJl
YWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MCw3ICsyNDAs
NyBAQCBPU1N0YXR1cyBNZWRpYVNhbXBsZUN1cnNvcjo6Z2V0U2FtcGxlTWFwCiAgICAgbV90cmFj
a1JlYWRlci0+d2FpdEZvclNhbXBsZShbJl0oU2FtcGxlTWFwJiBzYW1wbGVzLCBib29sIGhhc0Fs
bFNhbXBsZXMpIHsKICAgICAgICAgaWYgKCFzYW1wbGVzLnNpemUoKSkKICAgICAgICAgICAgIEVS
Uk9SX0xPRyhMT0dJREVOVElGSUVSLCAidHJhY2sgIiwgbV90cmFja1JlYWRlci0+dHJhY2tJRCgp
LCAiIGZpbmlzaGVkIHBhcnNpbmcgd2l0aCBubyBzYW1wbGVzLiIpOwotICAgICAgICBzdGF0dXMg
PSBzYW1wbGVzLnNpemUoKSA/IGZ1bmN0aW9uKHNhbXBsZXMsIGhhc0FsbFNhbXBsZXMpIDoga01U
UGx1Z2luU2FtcGxlQ3Vyc29yRXJyb3JfTm9TYW1wbGVzOworICAgICAgICBzdGF0dXMgPSBzYW1w
bGVzLnNpemUoKSA/IGZ1bmN0aW9uKHNhbXBsZXMsIGhhc0FsbFNhbXBsZXMpIDogc3RhdGljX2Nh
c3Q8T1NTdGF0dXM+KGtNVFBsdWdpblNhbXBsZUN1cnNvckVycm9yX05vU2FtcGxlcyk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0pOwogICAgIHJldHVybiBzdGF0dXM7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQko
cmV2aXNpb24gMjg2ODAyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1MTksOSArMTUxOSw5IEBAIC0gKEJP
T0wpX3JlcXVpcmVzUGFnZVZpc2liaWxpdHlUb1BsYXlBdWQKICAgICByZXR1cm4gX3ByZWZlcmVu
Y2VzLT5yZXF1aXJlc1BhZ2VWaXNpYmlsaXR5VG9QbGF5QXVkaW8oKTsKIH0KIAotLSAodm9pZClf
c2V0UmVxdWlyZXNQYWdlVmlzaWJpbGl0eVRvUGxheUF1ZGlvOihCT09MKXJlcXVpcmVzCistICh2
b2lkKV9zZXRSZXF1aXJlc1BhZ2VWaXNpYmlsaXR5VG9QbGF5QXVkaW86KEJPT0wpcmVxdWlyZXNW
aXNpYmlsaXR5CiB7Ci0gICAgX3ByZWZlcmVuY2VzLT5zZXRSZXF1aXJlc1BhZ2VWaXNpYmlsaXR5
VG9QbGF5QXVkaW8ocmVxdWlyZXMpOworICAgIF9wcmVmZXJlbmNlcy0+c2V0UmVxdWlyZXNQYWdl
VmlzaWJpbGl0eVRvUGxheUF1ZGlvKHJlcXVpcmVzVmlzaWJpbGl0eSk7CiB9CiAKIC0gKEJPT0wp
X2ZpbGVTeXN0ZW1BY2Nlc3NFbmFibGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAyODY4MDIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQ4MSw5ICs0ODEsOSBAQCAtIChCT09MKXJlcXVpcmVzU2VjdXJlSFRUUFNQ
cm94eUNvbm5lY3RpCiAgICAgcmV0dXJuIF9jb25maWd1cmF0aW9uLT5yZXF1aXJlc1NlY3VyZUhU
VFBTUHJveHlDb25uZWN0aW9uKCk7CiB9CiAKLS0gKHZvaWQpc2V0UmVxdWlyZXNTZWN1cmVIVFRQ
U1Byb3h5Q29ubmVjdGlvbjooQk9PTClyZXF1aXJlcworLSAodm9pZClzZXRSZXF1aXJlc1NlY3Vy
ZUhUVFBTUHJveHlDb25uZWN0aW9uOihCT09MKXJlcXVpcmVzU2VjdXJlUHJveHkKIHsKLSAgICBf
Y29uZmlndXJhdGlvbi0+c2V0UmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbihyZXF1
aXJlcyk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNv
bm5lY3Rpb24ocmVxdWlyZXNTZWN1cmVQcm94eSk7CiB9CiAKIC0gKEJPT0wpc2hvdWxkUnVuU2Vy
dmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI4NjgwMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmV2
ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uKGJvb2wgcHJldmVudHMpIHsgbV9wcmV2
ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uID0gcHJldmVudHM7IH0KIAogICAgIGJv
b2wgcmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbjsgfTsKLSAgICB2b2lkIHNldFJlcXVp
cmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb24oYm9vbCByZXF1aXJlcykgeyBtX3JlcXVpcmVz
U2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb24gPSByZXF1aXJlczsgfQorICAgIHZvaWQgc2V0UmVx
dWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbihib29sIHJlcXVpcmVzU2VjdXJlUHJveHkp
IHsgbV9yZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uID0gcmVxdWlyZXNTZWN1cmVQ
cm94eTsgfQogCiAgICAgYm9vbCBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZv
clRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWlu
VGhyZWFkRm9yVGVzdGluZzsgfQogICAgIHZvaWQgc2V0U2hvdWxkUnVuU2VydmljZVdvcmtlcnNP
bk1haW5UaHJlYWRGb3JUZXN0aW5nKGJvb2wgc2hvdWxkUnVuT25NYWluVGhyZWFkKSB7IG1fc2hv
dWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nID0gc2hvdWxkUnVuT25N
YWluVGhyZWFkOyB9CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODY4MDIpCisrKyBTb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0x
Mi0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIFByZXBhcmUgZm9yIHRyYW5zaXRpb24gdG8gQysrMjAKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDAyMgorCisgICAgICAgIFJldmlld2VkIGJ5
IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBibWFsbG9jL0xpc3QuaDoKKyAgICAgICAgKGJt
YWxsb2M6Okxpc3Q6Oml0ZXJhdG9yOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKGJtYWxs
b2M6Okxpc3Q6Oml0ZXJhdG9yOjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKwogMjAyMS0xMi0wOSAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2xpYnBhc10g
Rml4IHVwIG1pc3NpbmcgaGVhZGVyIGluY2x1ZGVzIGFuZCBidWlsZCBndWFyZHMgaW4gdW5pdCB0
ZXN0cwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MaXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9MaXN0LmgJKHJldmlzaW9uIDI4NjgwMikKKysrIFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBA
IGNsYXNzIExpc3QgewogICAgICAgICBUKiBvcGVyYXRvciooKSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxUKj4obV9ub2RlKTsgfQogICAgICAgICBUKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8VCo+KG1fbm9kZSk7IH0KIAotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRl
cmF0b3ImIG90aGVyKSB7IHJldHVybiBtX25vZGUgIT0gb3RoZXIubV9ub2RlOyB9CisgICAgICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1f
bm9kZSAhPSBvdGhlci5tX25vZGU7IH0KIAogICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygp
CiAgICAgICAgIHsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI4NjgwMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIxLTEyLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHJlcGFyZSBmb3IgdHJhbnNpdGlvbiB0
byBDKysyMAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM0MDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHA6CisgICAgICAgIChjcmVh
dGVCaXRtYXBDb250ZXh0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0dQVVByb2Nlc3MubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1NuYXBzaG90Lm1tOgorICAgICAgICAoVEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL1NuYXBz
aG90VmlhUmVuZGVySW5Db250ZXh0Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW06CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6Y29sb3JBdFBvaW50IGNvbnN0KToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwOgorICAgICAg
ICAoV1RSOjpjcmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZSk6CisKIDIwMjEtMTItMDggIEJKIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBw
cm92aWRlIGEgd2F5IGZvciBfV0tJbnNwZWN0b3JFeHRlbnNpb24gY2xpZW50cyB0byBiZSB0byBu
b3RpZmllZCB3aGVuIGFuIGV4dGVuc2lvbiB0YWIgbmF2aWdhdGVzCkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAJKHJldmlzaW9uIDI4Njgw
MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzNSw5ICsxMzUsOSBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3Jl
YXRlQml0bWFwQ29udGV4CiAgICAgCiAgICAgLy8gQ3JlYXRpbmcgdGhpcyBiaXRtYXAgaW4gdGhl
IGRldmljZSBjb2xvciBzcGFjZSBwcmV2ZW50cyBhbnkgY29sb3IgY29udmVyc2lvbiB3aGVuIHRo
ZSBpbWFnZSBvZiB0aGUgd2ViIHZpZXcgaXMgZHJhd24gaW50byBpdC4KICAgICBSZXRhaW5QdHI8
Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVE
ZXZpY2VSR0IoKSk7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRD
cmVhdGUoYnVmZmVyLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCA4LCByb3dCeXRlcywgY29sb3JT
cGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5
dGVPcmRlcjMySG9zdCkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlKGJ1ZmZlciwgcGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgOCwgcm93Qnl0ZXMsIGNv
bG9yU3BhY2UuZ2V0KCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZEZpcnN0KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dCaXRtYXBCeXRlT3JkZXIz
Mkhvc3QpKSk7CiAgICAgaWYgKCFjb250ZXh0KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRHVt
cFJlbmRlclRyZWU6IENHQml0bWFwQ29udGV4dENyZWF0ZSglcCwgJXp1LCAlenUsIDgsICV6dSwg
JXAsIDB4JXgpIGZhaWxlZFxuIiwgYnVmZmVyLCBwaXhlbHNIaWdoLCBwaXhlbHNXaWRlLCByb3dC
eXRlcywgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8
IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRHVtcFJl
bmRlclRyZWU6IENHQml0bWFwQ29udGV4dENyZWF0ZSglcCwgJXp1LCAlenUsIDgsICV6dSwgJXAs
IDB4JXgpIGZhaWxlZFxuIiwgYnVmZmVyLCBwaXhlbHNIaWdoLCBwaXhlbHNXaWRlLCByb3dCeXRl
cywgY29sb3JTcGFjZS5nZXQoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkRmlyc3QpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0JpdG1hcEJ5dGVP
cmRlcjMySG9zdCkpOwogICAgICAgICBmcmVlKGJ1ZmZlcik7CiAgICAgICAgIGJ1ZmZlciA9IG51
bGxwdHI7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR1BVUHJvY2Vzcy5tbQkocmV2aXNpb24gMjg2
ODAyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNz
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MTIsNyArNTEyLDcgQEAgVEVTVChHUFVQcm9jZXNzLCBD
YW52YXNCYXNpY0NyYXNoSGFuZGxpbgogICAgICAgICBOU0ludGVnZXIgdmlld0hlaWdodEluUGl4
ZWxzID0gdmlld0hlaWdodCAqIGJhY2tpbmdTY2FsZUZhY3RvcjsKIAogICAgICAgICB1aW50OF90
ICpyZ2JhID0gKHVuc2lnbmVkIGNoYXIgKiljYWxsb2Modmlld1dpZHRoSW5QaXhlbHMgKiB2aWV3
SGVpZ2h0SW5QaXhlbHMgKiA0LCBzaXplb2YodW5zaWduZWQgY2hhcikpOwotICAgICAgICBhdXRv
IGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShyZ2JhLCB2aWV3V2lkdGhJ
blBpeGVscywgdmlld0hlaWdodEluUGl4ZWxzLCA4LCA0ICogdmlld1dpZHRoSW5QaXhlbHMsIGNv
bG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1h
cEJ5dGVPcmRlcjMyQmlnKSk7CisgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRt
YXBDb250ZXh0Q3JlYXRlKHJnYmEsIHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0SW5QaXhl
bHMsIDgsIDQgKiB2aWV3V2lkdGhJblBpeGVscywgY29sb3JTcGFjZS5nZXQoKSwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgfCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oa0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKSk7CiAgICAgICAgIENHQ29udGV4
dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIHZpZXdXaWR0aEluUGl4
ZWxzLCB2aWV3SGVpZ2h0SW5QaXhlbHMpLCBjZ0ltYWdlLmdldCgpKTsKIAogICAgICAgICBOU0lu
dGVnZXIgcGl4ZWxJbmRleCA9IGdldFBpeGVsSW5kZXgoNTAsIDUwLCB2aWV3V2lkdGhJblBpeGVs
cyk7CkBAIC01NjcsNyArNTY3LDcgQEAgVEVTVChHUFVQcm9jZXNzLCBDYW52YXNCYXNpY0NyYXNo
SGFuZGxpbgogICAgICAgICBOU0ludGVnZXIgdmlld0hlaWdodEluUGl4ZWxzID0gdmlld0hlaWdo
dCAqIGJhY2tpbmdTY2FsZUZhY3RvcjsKIAogICAgICAgICB1aW50OF90ICpyZ2JhID0gKHVuc2ln
bmVkIGNoYXIgKiljYWxsb2Modmlld1dpZHRoSW5QaXhlbHMgKiB2aWV3SGVpZ2h0SW5QaXhlbHMg
KiA0LCBzaXplb2YodW5zaWduZWQgY2hhcikpOwotICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZShyZ2JhLCB2aWV3V2lkdGhJblBpeGVscywgdmlld0hl
aWdodEluUGl4ZWxzLCA4LCA0ICogdmlld1dpZHRoSW5QaXhlbHMsIGNvbG9yU3BhY2UuZ2V0KCks
IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmln
KSk7CisgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
KHJnYmEsIHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0SW5QaXhlbHMsIDgsIDQgKiB2aWV3
V2lkdGhJblBpeGVscywgY29sb3JTcGFjZS5nZXQoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NH
Qml0bWFwQnl0ZU9yZGVyMzJCaWcpKSk7CiAgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250
ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0
SW5QaXhlbHMpLCBjZ0ltYWdlLmdldCgpKTsKIAogICAgICAgICBOU0ludGVnZXIgcGl4ZWxJbmRl
eCA9IGdldFBpeGVsSW5kZXgoNTAsIDUwLCB2aWV3V2lkdGhJblBpeGVscyk7CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1NuYXBzaG90Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJW
aWV3U25hcHNob3QubW0JKHJldmlzaW9uIDI4NjgwMikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3U25hcHNob3QubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI3OSw3ICsyNzksNyBAQCBURVNUKFdLV2ViVmlldywgU25hcHNob3RJbWFnZUJhc2VDYXNlKQog
ICAgICAgICBOU0ludGVnZXIgdmlld0hlaWdodEluUGl4ZWxzID0gdmlld0hlaWdodCAqIGJhY2tp
bmdTY2FsZUZhY3RvcjsKIAogICAgICAgICB1aW50OF90ICpyZ2JhID0gKHVuc2lnbmVkIGNoYXIg
KiljYWxsb2Modmlld1dpZHRoSW5QaXhlbHMgKiB2aWV3SGVpZ2h0SW5QaXhlbHMgKiA0LCBzaXpl
b2YodW5zaWduZWQgY2hhcikpOwotICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZShyZ2JhLCB2aWV3V2lkdGhJblBpeGVscywgdmlld0hlaWdodEluUGl4
ZWxzLCA4LCA0ICogdmlld1dpZHRoSW5QaXhlbHMsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdl
QWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7CisgICAg
ICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHJnYmEsIHZp
ZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0SW5QaXhlbHMsIDgsIDQgKiB2aWV3V2lkdGhJblBp
eGVscywgY29sb3JTcGFjZS5nZXQoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkTGFzdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHQml0bWFwQnl0
ZU9yZGVyMzJCaWcpKSk7CiAgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgp
LCBDR1JlY3RNYWtlKDAsIDAsIHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVpZ2h0SW5QaXhlbHMp
LCBjZ0ltYWdlLmdldCgpKTsKIAogICAgICAgICBOU0ludGVnZXIgcGl4ZWxJbmRleCA9IGdldFBp
eGVsSW5kZXgoMCwgMCwgdmlld1dpZHRoSW5QaXhlbHMpOwpAQCAtNDI1LDcgKzQyNSw3IEBAIFRF
U1QoV0tXZWJWaWV3LCBTbmFwc2hvdEltYWdlTGFyZ2VBc3luY0QKICAgICAgICAgUmV0YWluUHRy
PENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRl
RGV2aWNlUkdCKCkpOwogCiAgICAgICAgIHVpbnQ4X3QgKnJnYmEgPSAodW5zaWduZWQgY2hhciAq
KWNhbGxvYyh2aWV3V2lkdGggKiB2aWV3SGVpZ2h0ICogNCwgc2l6ZW9mKHVuc2lnbmVkIGNoYXIp
KTsKLSAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUo
cmdiYSwgdmlld1dpZHRoLCB2aWV3SGVpZ2h0LCA4LCA0ICogdmlld1dpZHRoLCBjb2xvclNwYWNl
LmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkJpZykpOworICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4
dENyZWF0ZShyZ2JhLCB2aWV3V2lkdGgsIHZpZXdIZWlnaHQsIDgsIDQgKiB2aWV3V2lkdGgsIGNv
bG9yU3BhY2UuZ2V0KCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZExhc3QpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0JpdG1hcEJ5dGVPcmRlcjMy
QmlnKSkpOwogICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0
TWFrZSgwLCAwLCB2aWV3V2lkdGgsIHZpZXdIZWlnaHQpLCBjZ0ltYWdlLmdldCgpKTsKIAogICAg
ICAgICAvLyBUb3AtbGVmdCBjb3JuZXIgb2YgdGhlIGRpdiAoMCwgMCwgMTAwLCAxMDApCkBAIC01
MDAsNyArNTAwLDcgQEAgVEVTVChXS1dlYlZpZXcsIFNuYXBzaG90QWZ0ZXJTY3JlZW5VcGRhdAog
ICAgICAgICBOU0ludGVnZXIgdmlld0hlaWdodEluUGl4ZWxzID0gdmlld0hlaWdodCAqIGJhY2tp
bmdTY2FsZUZhY3RvcjsKICAgICAgICAgCiAgICAgICAgIHVpbnQ4X3QgKnJnYmEgPSAodW5zaWdu
ZWQgY2hhciAqKWNhbGxvYyh2aWV3V2lkdGhJblBpeGVscyAqIHZpZXdIZWlnaHRJblBpeGVscyAq
IDQsIHNpemVvZih1bnNpZ25lZCBjaGFyKSk7Ci0gICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHJnYmEsIHZpZXdXaWR0aEluUGl4ZWxzLCB2aWV3SGVp
Z2h0SW5QaXhlbHMsIDgsIDQgKiB2aWV3V2lkdGhJblBpeGVscywgY29sb3JTcGFjZS5nZXQoKSwg
a0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcp
KTsKKyAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUo
cmdiYSwgdmlld1dpZHRoSW5QaXhlbHMsIHZpZXdIZWlnaHRJblBpeGVscywgOCwgNCAqIHZpZXdX
aWR0aEluUGl4ZWxzLCBjb2xvclNwYWNlLmdldCgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NH
SW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dC
aXRtYXBCeXRlT3JkZXIzMkJpZykpKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRl
eHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgdmlld1dpZHRoSW5QaXhlbHMsIHZpZXdIZWlnaHRJ
blBpeGVscyksIGNnSW1hZ2UuZ2V0KCkpOwogICAgICAgICAKICAgICAgICAgTlNJbnRlZ2VyIHBp
eGVsSW5kZXggPSBnZXRQaXhlbEluZGV4KDAsIDAsIHZpZXdXaWR0aEluUGl4ZWxzKTsKQEAgLTU2
Myw3ICs1NjMsNyBAQCBURVNUKFdLV2ViVmlldywgU25hcHNob3RXaXRob3V0QWZ0ZXJTY3JlCiAg
ICAgICAgIE5TSW50ZWdlciB2aWV3SGVpZ2h0SW5QaXhlbHMgPSB2aWV3SGVpZ2h0ICogYmFja2lu
Z1NjYWxlRmFjdG9yOwogICAgICAgICAKICAgICAgICAgdWludDhfdCAqcmdiYSA9ICh1bnNpZ25l
ZCBjaGFyICopY2FsbG9jKHZpZXdXaWR0aEluUGl4ZWxzICogdmlld0hlaWdodEluUGl4ZWxzICog
NCwgc2l6ZW9mKHVuc2lnbmVkIGNoYXIpKTsKLSAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRD
RihDR0JpdG1hcENvbnRleHRDcmVhdGUocmdiYSwgdmlld1dpZHRoSW5QaXhlbHMsIHZpZXdIZWln
aHRJblBpeGVscywgOCwgNCAqIHZpZXdXaWR0aEluUGl4ZWxzLCBjb2xvclNwYWNlLmdldCgpLCBr
Q0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykp
OworICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShy
Z2JhLCB2aWV3V2lkdGhJblBpeGVscywgdmlld0hlaWdodEluUGl4ZWxzLCA4LCA0ICogdmlld1dp
ZHRoSW5QaXhlbHMsIGNvbG9yU3BhY2UuZ2V0KCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0Jp
dG1hcEJ5dGVPcmRlcjMyQmlnKSkpOwogICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4
dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCB2aWV3V2lkdGhJblBpeGVscywgdmlld0hlaWdodElu
UGl4ZWxzKSwgY2dJbWFnZS5nZXQoKSk7CiAKICAgICAgICAgTlNJbnRlZ2VyIHBpeGVsSW5kZXgg
PSBnZXRQaXhlbEluZGV4KDAsIDAsIHZpZXdXaWR0aEluUGl4ZWxzKTsKQEAgLTYyMSw3ICs2MjEs
NyBAQCBURVNUKFdLV2ViVmlldywgU25hcHNob3RXZWJHTCkKICAgICAgICAgTlNJbnRlZ2VyIHZp
ZXdIZWlnaHRJblBpeGVscyA9IHZpZXdIZWlnaHQgKiBiYWNraW5nU2NhbGVGYWN0b3I7CiAKICAg
ICAgICAgdWludDhfdCAqcmdiYSA9ICh1bnNpZ25lZCBjaGFyICopY2FsbG9jKHZpZXdXaWR0aElu
UGl4ZWxzICogdmlld0hlaWdodEluUGl4ZWxzICogNCwgc2l6ZW9mKHVuc2lnbmVkIGNoYXIpKTsK
LSAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocmdi
YSwgdmlld1dpZHRoSW5QaXhlbHMsIHZpZXdIZWlnaHRJblBpeGVscywgOCwgNCAqIHZpZXdXaWR0
aEluUGl4ZWxzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExh
c3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOworICAgICAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShyZ2JhLCB2aWV3V2lkdGhJblBpeGVscywgdmll
d0hlaWdodEluUGl4ZWxzLCA4LCA0ICogdmlld1dpZHRoSW5QaXhlbHMsIGNvbG9yU3BhY2UuZ2V0
KCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Qp
IHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSkpOwogICAg
ICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCB2
aWV3V2lkdGhJblBpeGVscywgdmlld0hlaWdodEluUGl4ZWxzKSwgY2dJbWFnZS5nZXQoKSk7CiAK
ICAgICAgICAgTlNJbnRlZ2VyIHBpeGVsSW5kZXggPSBnZXRQaXhlbEluZGV4KDAsIDAsIHZpZXdX
aWR0aEluUGl4ZWxzKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVn
YWN5L2lvcy9TbmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvU25hcHNob3RWaWFSZW5kZXJJ
bkNvbnRleHQubW0JKHJldmlzaW9uIDI4NjgwMikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0TGVnYWN5L2lvcy9TbmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBURVNUKFdlYktpdExlZ2FjeSwgUmVuZGVySW5Db250
ZXh0U25hcHNoCiAgICAgdW5zaWduZWQgY2hhciogcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4oY2FsbG9jKHdpZHRoICogaGVpZ2h0LCA0KSk7CiAgICAgCiAgICAgUmV0
YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNl
Q3JlYXRlRGV2aWNlUkdCKCkpOwotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKHBpeGVsQnVmZmVyLCB3aWR0aCwgaGVpZ2h0LCA4LCA0ICogd2lkdGgsIGNv
bG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1h
cEJ5dGVPcmRlcjMyQmlnKSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENv
bnRleHRDcmVhdGUocGl4ZWxCdWZmZXIsIHdpZHRoLCBoZWlnaHQsIDgsIDQgKiB3aWR0aCwgY29s
b3JTcGFjZS5nZXQoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0ltYWdlQWxwaGFQcmVtdWx0
aXBsaWVkTGFzdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHQml0bWFwQnl0ZU9yZGVyMzJC
aWcpKSk7CiAgICAgCiAgICAgLy8gRmxpcCB0aGUgY29udGV4dAogICAgIENHQ29udGV4dFNjYWxl
Q1RNKGNvbnRleHQuZ2V0KCksIDEsIC0xKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFBERkRvY3VtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFBERkRvY3VtZW50Lm1tCShyZXZpc2lvbiAyODY4MDIpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMw
LDcgKzEzMCw3IEBAIFdlYkNvcmU6OkNvbG9yIFRlc3RQREZQYWdlOjpjb2xvckF0UG9pbnQKIHsK
ICAgICBhdXRvIGJvdW5kc1JlY3QgPSBib3VuZHMoKTsKICAgICBhdXRvIGNvbG9yU3BhY2UgPSBh
ZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7Ci0g
ICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoTlVMTCwgYm91
bmRzUmVjdC5zaXplLndpZHRoLCBib3VuZHNSZWN0LnNpemUuaGVpZ2h0LCA4LCAwLCBjb2xvclNw
YWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRl
T3JkZXIzMkJpZykpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlKE5VTEwsIGJvdW5kc1JlY3Quc2l6ZS53aWR0aCwgYm91bmRzUmVjdC5zaXplLmhlaWdo
dCwgOCwgMCwgY29sb3JTcGFjZS5nZXQoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtDR0ltYWdl
QWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHQml0bWFw
Qnl0ZU9yZGVyMzJCaWcpKSk7CiAKICAgICBhdXRvIGNnUGFnZSA9IG1fcGFnZS5nZXQoKS5wYWdl
UmVmOwogICAgIENHQ29udGV4dERyYXdQREZQYWdlV2l0aEFubm90YXRpb25zKGNvbnRleHQuZ2V0
KCksIGNnUGFnZSwgbnVsbHB0cik7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rl
c3RJbnZvY2F0aW9uQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y2cvVGVzdEludm9jYXRpb25DRy5jcHAJKHJldmlzaW9uIDI4NjgwMikKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
LDcgKzUzLDcgQEAgc3RhdGljIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNyZWF0ZUNHQwogCiAg
ICAgLy8gQ3JlYXRpbmcgdGhpcyBiaXRtYXAgaW4gdGhlIGRldmljZSBjb2xvciBzcGFjZSBzaG91
bGQgcHJldmVudCBhbnkgY29sb3IgY29udmVyc2lvbiB3aGVuIHRoZSBpbWFnZSBvZiB0aGUgd2Vi
IHZpZXcgaXMgZHJhd24gaW50byBpdC4KICAgICBhdXRvIGNvbG9yU3BhY2UgPSBhZG9wdENGKENH
Q29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENG
KENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCA4LCByb3dC
eXRlcywgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8
IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0Yo
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gsIDgsIHJvd0J5
dGVzLCBjb2xvclNwYWNlLmdldCgpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHSW1hZ2VBbHBo
YVByZW11bHRpcGxpZWRGaXJzdCkgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oa0NHQml0bWFwQnl0
ZU9yZGVyMzJIb3N0KSkpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>