<?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>227164</bug_id>
          
          <creation_ts>2021-06-18 03:22:05 -0700</creation_ts>
          <short_desc>Add CheckedRef</short_desc>
          <delta_ts>2021-08-02 14:46:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</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=226158</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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1770971</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-18 03:22:05 -0700</bug_when>
    <thetext>Add CheckedRef, which is a reference version of CheckedPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771126</commentid>
    <comment_count>1</comment_count>
      <attachid>431805</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-19 14:08:00 -0700</bug_when>
    <thetext>Created attachment 431805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771151</commentid>
    <comment_count>2</comment_count>
      <attachid>431815</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-20 00:30:05 -0700</bug_when>
    <thetext>Created attachment 431815
Updated for ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771587</commentid>
    <comment_count>3</comment_count>
      <attachid>431815</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-06-21 20:45:03 -0700</bug_when>
    <thetext>Comment on attachment 431815
Updated for ToT

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

Do you need to fix style checker errors?

&gt; Source/WTF/wtf/CheckedPtr.h:67
&gt; +        : CheckedPtr(other.m_ptr)

I think you needd to unwrap here.
PtrTraits::unwrap(other.m_ptr)
Or, more simply other.get().

&gt; Source/WTF/wtf/CheckedPtr.h:85
&gt; +        ASSERT(m_ptr);

CheckedPtr can accept nullptr. Why do you check ASSERT(m_ptr)?
And, the type of m_ptr is PtrTraits::StorageType. Do  you need to unwrap? ASSERT(PtrTraits::unwrap(m_ptr))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771590</commentid>
    <comment_count>4</comment_count>
      <attachid>431815</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-06-21 20:55:46 -0700</bug_when>
    <thetext>Comment on attachment 431815
Updated for ToT

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

&gt; Source/WTF/wtf/CheckedRef.h:47
&gt; +        : m_ptr(&amp;object)

Can you store a raw pointer directly to PtrTraits::StorageType? Do you need to use PtrTraits::exchange?

&gt; Source/WTF/wtf/CheckedRef.h:60
&gt; +        : m_ptr { other.m_ptr }

Can you store a OtherPtrTraits::StorageType directly to PtrTraits::StorageType?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771595</commentid>
    <comment_count>5</comment_count>
      <attachid>431815</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-06-21 21:10:51 -0700</bug_when>
    <thetext>Comment on attachment 431815
Updated for ToT

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

&gt; Source/WTF/wtf/CheckedRef.h:171
&gt; +template&lt;typename T, typename PtrTraits = RawPtrTraits&lt;T&gt;&gt; inline CheckedRef&lt;T, PtrTraits&gt; makeCheckedRef(T&amp; reference)

You removed makeCheckedPtr. Why do you add makeCheckedRef?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772612</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-25 03:23:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/79770147&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780319</commentid>
    <comment_count>7</comment_count>
      <attachid>431815</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-07-28 22:59:00 -0700</bug_when>
    <thetext>Comment on attachment 431815
Updated for ToT

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

&gt;&gt; Source/WTF/wtf/CheckedPtr.h:67
&gt;&gt; +        : CheckedPtr(other.m_ptr)
&gt; 
&gt; I think you needd to unwrap here.
&gt; PtrTraits::unwrap(other.m_ptr)
&gt; Or, more simply other.get().

Good point. Fixed.

&gt;&gt; Source/WTF/wtf/CheckedPtr.h:85
&gt;&gt; +        ASSERT(m_ptr);
&gt; 
&gt; CheckedPtr can accept nullptr. Why do you check ASSERT(m_ptr)?
&gt; And, the type of m_ptr is PtrTraits::StorageType. Do  you need to unwrap? ASSERT(PtrTraits::unwrap(m_ptr))

Actually, we should just assert get().
We need to assert this because it&apos;s possible for someone to use-after-move on other, which case m_ptr will be nullptr.

&gt;&gt; Source/WTF/wtf/CheckedRef.h:60
&gt;&gt; +        : m_ptr { other.m_ptr }
&gt; 
&gt; Can you store a OtherPtrTraits::StorageType directly to PtrTraits::StorageType?

Good point. We should call other.get() here as well.

&gt;&gt; Source/WTF/wtf/CheckedRef.h:171
&gt;&gt; +template&lt;typename T, typename PtrTraits = RawPtrTraits&lt;T&gt;&gt; inline CheckedRef&lt;T, PtrTraits&gt; makeCheckedRef(T&amp; reference)
&gt; 
&gt; You removed makeCheckedPtr. Why do you add makeCheckedRef?

Oops, forgot to remove this. Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780337</commentid>
    <comment_count>8</comment_count>
      <attachid>434505</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-07-29 02:20:45 -0700</bug_when>
    <thetext>Created attachment 434505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780389</commentid>
    <comment_count>9</comment_count>
      <attachid>434505</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-07-29 08:56:11 -0700</bug_when>
    <thetext>Comment on attachment 434505
Patch

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

&gt; Source/WTF/wtf/CheckedRef.h:33
&gt; +

Please add a comment here summarizing what this class is for. CheckedPtr.h needs one too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780550</commentid>
    <comment_count>10</comment_count>
      <attachid>434505</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-29 13:40:22 -0700</bug_when>
    <thetext>Comment on attachment 434505
Patch

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

&gt; Source/WTF/wtf/CheckedPtr.h:82
&gt; +    CheckedPtr(const CheckedRef&lt;T, PtrTraits&gt;&amp;&amp; other)

The const here seems wrong. If this is an rvalue reference it should not have const. Not sure why there are no tests that fail because of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780581</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-07-29 14:55:47 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #9)
&gt; Comment on attachment 434505 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=434505&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/CheckedRef.h:33
&gt; &gt; +
&gt; 
&gt; Please add a comment here summarizing what this class is for. CheckedPtr.h
&gt; needs one too.

Why? When did it become customary to add such a comment? I don&apos;t recall having that kind of discussion on webkit-dev.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780586</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-07-29 15:05:24 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; Comment on attachment 434505 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=434505&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/CheckedPtr.h:82
&gt; &gt; +    CheckedPtr(const CheckedRef&lt;T, PtrTraits&gt;&amp;&amp; other)
&gt; 
&gt; The const here seems wrong. If this is an rvalue reference it should not
&gt; have const. Not sure why there are no tests that fail because of this.

Oh, that must be because we have also have:

    template&lt;typename OtherType, typename OtherPtrTraits&gt; CheckedPtr(CheckedRef&lt;OtherType, OtherPtrTraits&gt;&amp;&amp; other)
        : m_ptr { other.releasePtr() }
    {
        ASSERT(get());
    }

I guess we can remove this const version. No need to have two of the same function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780588</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-29 15:09:05 -0700</bug_when>
    <thetext>Sometimes we need a non-template constructor because of how that affects overload resolution; something about non-template constructors working with implicit conversions in a way that a template one does not. Presumably we could construct a test for those cases. For now, fine to land without it, but it would be good to be consistent across all our smart pointer templates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780595</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-07-29 15:15:22 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #13)
&gt; Sometimes we need a non-template constructor because of how that affects
&gt; overload resolution; something about non-template constructors working with
&gt; implicit conversions in a way that a template one does not. Presumably we
&gt; could construct a test for those cases. For now, fine to land without it,
&gt; but it would be good to be consistent across all our smart pointer templates.

Oh, uncanny. I guess I do have a test case for this somehow because the compilation fails without it. Not sure why constness doesn&apos;t matter. Just removed const for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780598</commentid>
    <comment_count>15</comment_count>
      <attachid>434578</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-07-29 15:23:12 -0700</bug_when>
    <thetext>Created attachment 434578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781391</commentid>
    <comment_count>16</comment_count>
      <attachid>434578</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-08-02 14:29:30 -0700</bug_when>
    <thetext>Comment on attachment 434578
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781398</commentid>
    <comment_count>17</comment_count>
      <attachid>434578</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-08-02 14:46:33 -0700</bug_when>
    <thetext>Comment on attachment 434578
Patch

Clearing flags on attachment: 434578

Committed r280559 (240183@main): &lt;https://commits.webkit.org/240183@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781399</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-08-02 14:46:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431805</attachid>
            <date>2021-06-19 14:08:00 -0700</date>
            <delta_ts>2021-06-20 00:30:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227164-20210619140759.patch</filename>
            <type>text/plain</type>
            <size>40646</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4Mzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFiNWJjN2Y0M2JjNzA3ODM2YTVmM2Yw
NzIyNjRjNTYwNjNiNjA1ZTIuLmRhNjM5MDVjNjNiZGE3YzY1MDRmNjc2NDdmNTE1NjAzNGFkZmQ2
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMjEtMDYtMTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIENoZWNrZWRSZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzE2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpa2UgcjI3ODM0NCwgdGhpcyBwYXRjaCBp
bnRyb2R1Y2VzIGEgbmV3IHR5cGUgb2Ygc21hcnQgcG9pbnRlciwgQ2hlY2tlZFJlZiwKKyAgICAg
ICAgd2hpY2ggbGV0cyBlYWNoIG9iamVjdCBrZWVwIHRyYWNrIG9mIHBvaW50ZXJzIHBvaW50aW5n
IHRvIHRoZSBvYmplY3QuCisKKyAgICAgICAgQXMgd2l0aCBDaGVja2VkUHRyLCB0aGUgcHVycG9z
ZSBvZiB0aGUgaW50ZXJuYWwgY291bnRlciBmb3IgQ2hlY2tlZFJlZiBpcworICAgICAgICB0byBy
ZWxlYXNlIGFzc2VydCB0aGF0IHRoZXJlIGlzIG5vIG91dHN0YW5kaW5nIHBvaW50ZXIgYXQgdGhl
IHRpbWUgb2YgZGVzdHJ1Y3Rpb24KKyAgICAgICAgaW5zdGVhZCBvZiBrZWVwaW5nIHRoZSBvYmpl
Y3QgYWxpdmUgd2hlbiB0aGVyZSBpcyBvbmUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIHJl
bW92ZXMgbWFrZUNoZWNrZWRQdHIgaW4gZmF2b3Igb2YgdXNpbmcgQ2hlY2tlZFB0ciB3aXRoCisg
ICAgICAgIHRlbXBsYXRlIGFyZ3VtZW50IGRlZHVjdGlvbiBpbiBDKysxNy4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvQ2hlY2tlZFB0ci5oOgorICAgICAgICAoV1RGOjpDaGVja2Vk
UHRyOjpDaGVja2VkUHRyKTogQWRkZWQgdmFyaWFudHMgd2hpY2ggdGFrZSBDaGVja2VkUmVmIGFz
IGFyZ3VtZW50cy4KKyAgICAgICAgKFdURjo6bWFrZUNoZWNrZWRQdHIpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpDYW5NYWtlQ2hlY2tlZFB0cik6IE1vdmVkIHRvIENoZWNrZWRSZWYuaAorICAg
ICAgICAqIHd0Zi9DaGVja2VkUmVmLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVm
Ojp+Q2hlY2tlZFJlZik6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVmOjpDaGVja2Vk
UmVmKTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWY6OmlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWY6OmlzSGFzaFRh
YmxlRW1wdHlWYWx1ZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVmOjpo
YXNoVGFibGVFbXB0eVZhbHVlKTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWY6OnB0
ckFsbG93aW5nSGFzaFRhYmxlRW1wdHlWYWx1ZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV1RG
OjpDaGVja2VkUmVmOjpwdHJBbGxvd2luZ0hhc2hUYWJsZUVtcHR5VmFsdWUpOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6Q2hlY2tlZFJlZjo6cHRyIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXVEY6
OkNoZWNrZWRSZWY6OnB0cik6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVmOjpnZXQg
Y29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tlZFJlZjo6Z2V0KTogQWRkZWQuCisg
ICAgICAgIChXVEY6OkNoZWNrZWRSZWY6Om9wZXJhdG9yLT4gY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdURjo6Q2hlY2tlZFJlZjo6b3BlcmF0b3ItPik6IEFkZGVkLgorICAgICAgICAoV1RGOjpD
aGVja2VkUmVmOjpvcGVyYXRvciBjb25zdCBUJiBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV1RG
OjpDaGVja2VkUmVmOjpvcGVyYXRvciBUJik6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2Vk
UmVmOjpvcGVyYXRvciEgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tlZFJlZjo6
b3BlcmF0b3I9KTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWY6OnJlbGVhc2VQdHIp
OiBBZGRlZC4gUmV0dXJucyBtX3B0ciB3aXRob3V0IGNhbGxpbmcgZGVjcmVtZW50UHRyQ291bnQu
CisgICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCBvZiBsZWFrUHRyIGluIFJlZiBidXQgd2UgZG9u
J3QgY2FsbCB0aGlzIHRoYXQgc2luY2UgQ2hlY2tlZFJlZiBvcgorICAgICAgICBDaGVja2VkUHRy
IGlzIGdlbmVyYWxseSBub3QgdXNlZCB0byBtYW5hZ2UgdGhlIG9iamVjdCBsaWZldGltZS4KKyAg
ICAgICAgKFdURjo6Q2hlY2tlZFJlZjo6cG9pc29uKTogQWRkZWQuCisgICAgICAgIChXVEY6OkNo
ZWNrZWRSZWY6OnVucG9pc29uKTogQWRkZWQuCisgICAgICAgIChXVEY6Om1ha2VDaGVja2VkUmVm
KToKKyAgICAgICAgKFdURjo6aXMpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tlZFJlZkhh
c2hUcmFpdHMpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tlZFJlZkhhc2hUcmFpdHM6OmVt
cHR5VmFsdWUpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tlZFJlZkhhc2hUcmFpdHM6OmNv
bnN0cnVjdEVtcHR5VmFsdWUpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tlZFJlZkhhc2hU
cmFpdHM6OmlzRW1wdHlWYWx1ZSk6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVmSGFz
aFRyYWl0czo6cGVlayk6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVmSGFzaFRyYWl0
czo6dGFrZSk6IEFkZGVkLgorICAgICAgICAoV1RGOjpDYW5NYWtlQ2hlY2tlZFB0cik6IE1vdmVk
IGZyb20gQ2hlY2tlZFB0ci5oCisgICAgICAgICogd3RmL0ZvcndhcmQuaDoKKwogMjAyMS0wNi0w
MiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgV1RGOjpW
ZWN0b3Igb3ZlcmxvYWRzIHRha2luZyBpbmRleCBhcyBDaGVja2VkPHNpemVfdD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk4NDNiOThmMWU0Nzc2NTdiNWE5
MDgzYzIwZjZkODZmZDk5ZDhiZDAuLjQ5ZDE4OTgyM2M4YmE4MWI5ZWI0YTIyOWM4NDE5M2ViNGYy
M2E5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTEw
LDYgKzUxMCw3IEBACiAJCTlCQjkxRjUxMjY0OEVBNEQwMEE1NjIxNyAvKiBDaGVja2VkUHRyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENoZWNrZWRQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOUJDNzBGMDQxNzZDMzc5RDAwMTAxREVDIC8qIEF0b21TdHJpbmdUYWJsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdG9tU3RyaW5nVGFibGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkQ4RjQwQTE3NkMyQUQ4MDAwMkQ4NjUgLyogQXRv
bVN0cmluZ1RhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF0b21TdHJpbmdUYWJsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5QkYwMDEzNDI2N0M0Q0NGMDBEQ0ZCM0YgLyogQ2hlY2tl
ZFJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDaGVja2VkUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlDNjdDNTQyNTg5MzQ4RTI4NUI0OTY5OSAvKiBJbmRleGVkQ29udGFpbmVySXRl
cmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZXhlZENvbnRhaW5l
ckl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQjg5Qjg3MjIxRTAw
MEYwMEVCNENFQSAvKiBTREtWYXJpYW50LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IFNES1ZhcmlhbnQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUEzMEQ0MTJDMUYwREUwQkEwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtOTg1LDYgKzk4Niw3IEBACiAJCQkJQThBNDcyNkExNTFBODI1QTAwNDEyM0ZG
IC8qIENoZWNrZWRBcml0aG1ldGljLmggKi8sCiAJCQkJQThBNDcyNkIxNTFBODI1QTAwNDEyM0ZG
IC8qIENoZWNrZWRCb29sZWFuLmggKi8sCiAJCQkJOUJCOTFGNTEyNjQ4RUE0RDAwQTU2MjE3IC8q
IENoZWNrZWRQdHIuaCAqLywKKwkJCQk5QkYwMDEzNDI2N0M0Q0NGMDBEQ0ZCM0YgLyogQ2hlY2tl
ZFJlZi5oICovLAogCQkJCTBGNjZCMjgwMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuY3Bw
ICovLAogCQkJCTBGNjZCMjgxMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuaCAqLywKIAkJ
CQkwRkM0RURFNTE2OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQcmludGVyLmggKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0CmluZGV4IDhjZjdmOTliMjQxN2MxZjFhNWVmYjBiY2M5Nzc5NTNkYmZjN2ViNDAu
LmNkN2JjNzI3MDY0YTljZWVkOTllN2M4NjFjNmZjMDhjOTg5NWRmNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0CkBAIC0yOSw2ICsyOSw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBDaGVj
a2VkQXJpdGhtZXRpYy5oCiAgICAgQ2hlY2tlZEJvb2xlYW4uaAogICAgIENoZWNrZWRQdHIuaAor
ICAgIENoZWNrZWRSZWYuaAogICAgIENsb2NrVHlwZS5oCiAgICAgQ29tbWFQcmludGVyLmgKICAg
ICBDb21wYWN0UG9pbnRlclR1cGxlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NoZWNr
ZWRQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRQdHIuaAppbmRleCA0NWMyYTExNjFkMTEz
MjRhOGNiZWQyYzMwZmIzOWQyNmM2MTFkYzkzLi5iMTZmZWQwZDBjMTFmNzE0MmE1YTVhNjlkNGVm
NWE1ZTZlZWI1MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkUHRyLmgKKysr
IGIvU291cmNlL1dURi93dGYvQ2hlY2tlZFB0ci5oCkBAIC0yNSwyMSArMjUsMjAgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9S
YXdQdHJUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZFJlZi5oPgogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzID0gUmF3UHRy
VHJhaXRzPFQ+PgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzPgogY2xh
c3MgQ2hlY2tlZFB0ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAK
LSAgICBDaGVja2VkUHRyKCkKKyAgICBjb25zdGV4cHIgQ2hlY2tlZFB0cigpCiAgICAgICAgIDog
bV9wdHIobnVsbHB0cikKICAgICB7IH0KIAotICAgIENoZWNrZWRQdHIoc3RkOjpudWxscHRyX3Qp
CisgICAgY29uc3RleHByIENoZWNrZWRQdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIDogbV9w
dHIobnVsbHB0cikKICAgICB7IH0KIApAQCAtNjUsMTUgKzY0LDMzIEBAIHB1YmxpYzoKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1lIE90aGVyUHRyVHJh
aXRzPiBDaGVja2VkUHRyKGNvbnN0IENoZWNrZWRQdHI8T3RoZXJUeXBlLCBPdGhlclB0clRyYWl0
cz4mIG90aGVyKQotICAgICAgICA6IG1fcHRyIHsgb3RoZXIubV9wdHIgfQotICAgIHsKLSAgICAg
ICAgcmVmSWZOb3ROdWxsKCk7Ci0gICAgfQorICAgICAgICA6IENoZWNrZWRQdHIob3RoZXIubV9w
dHIpCisgICAgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1l
IE90aGVyUHRyVHJhaXRzPiBDaGVja2VkUHRyKENoZWNrZWRQdHI8T3RoZXJUeXBlLCBPdGhlclB0
clRyYWl0cz4mJiBvdGhlcikKICAgICAgICAgOiBtX3B0ciB7IFB0clRyYWl0czo6ZXhjaGFuZ2Uo
b3RoZXIubV9wdHIsIG51bGxwdHIpIH0KICAgICB7IH0KIAorICAgIENoZWNrZWRQdHIoY29uc3Qg
Q2hlY2tlZFJlZjxULCBQdHJUcmFpdHM+JiBvdGhlcikKKyAgICAgICAgOiBDaGVja2VkUHRyKG90
aGVyLm1fcHRyKQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJUeXBlLCB0
eXBlbmFtZSBPdGhlclB0clRyYWl0cz4gQ2hlY2tlZFB0cihjb25zdCBDaGVja2VkUmVmPE90aGVy
VHlwZSwgT3RoZXJQdHJUcmFpdHM+JiBvdGhlcikKKyAgICAgICAgOiBDaGVja2VkUHRyKG90aGVy
Lm1fcHRyKQorICAgIHsgfQorCisgICAgQ2hlY2tlZFB0cihjb25zdCBDaGVja2VkUmVmPFQsIFB0
clRyYWl0cz4mJiBvdGhlcikKKyAgICAgICAgOiBtX3B0ciB7IG90aGVyLnJlbGVhc2VQdHIoKSB9
CisgICAgeworICAgICAgICBBU1NFUlQobV9wdHIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE90aGVyVHlwZSwgdHlwZW5hbWUgT3RoZXJQdHJUcmFpdHM+IENoZWNrZWRQdHIoQ2hl
Y2tlZFJlZjxPdGhlclR5cGUsIE90aGVyUHRyVHJhaXRzPiYmIG90aGVyKQorICAgICAgICA6IG1f
cHRyIHsgb3RoZXIucmVsZWFzZVB0cigpIH0KKyAgICB7CisgICAgICAgIEFTU0VSVChtX3B0cik7
CisgICAgfQorCiAgICAgQ2hlY2tlZFB0cihIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQogICAg
ICAgICA6IG1fcHRyKFB0clRyYWl0czo6aGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpCiAgICAgeyB9
CkBAIC0xNjMsMTYgKzE4MCw2IEBAIHByaXZhdGU6CiAgICAgdHlwZW5hbWUgUHRyVHJhaXRzOjpT
dG9yYWdlVHlwZSBtX3B0cjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFB0
clRyYWl0cyA9IFJhd1B0clRyYWl0czxUPj4gaW5saW5lIENoZWNrZWRQdHI8VCwgUHRyVHJhaXRz
PiBtYWtlQ2hlY2tlZFB0cihUKiBwb2ludGVyKQotewotICAgIHJldHVybiBwb2ludGVyOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQdHJUcmFpdHMgPSBSYXdQdHJUcmFpdHM8
VD4+IGlubGluZSBDaGVja2VkUHRyPFQsIFB0clRyYWl0cz4gbWFrZUNoZWNrZWRQdHIoVCYgcmVm
ZXJlbmNlKQotewotICAgIHJldHVybiAmcmVmZXJlbmNlOwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzPgogc3RydWN0IEdldFB0ckhlbHBlcjxDaGVja2VkUHRy
PFQsIFB0clRyYWl0cz4+IHsKICAgICB0eXBlZGVmIFQqIFB0clR5cGU7CkBAIC0xOTYsMTcgKzIw
Myw2IEBAIGlubGluZSBib29sIGlzKGNvbnN0IENoZWNrZWRQdHI8QXJnVHlwZSwgQXJnUHRyVHJh
aXRzPiYgc291cmNlKQogICAgIHJldHVybiBpczxFeHBlY3RlZFR5cGU+KHNvdXJjZS5nZXQoKSk7
CiB9CiAKLWNsYXNzIENhbk1ha2VDaGVja2VkUHRyIHsKLXB1YmxpYzoKLSAgICB+Q2FuTWFrZUNo
ZWNrZWRQdHIoKSB7IFJFTEVBU0VfQVNTRVJUKCFtX2NvdW50KTsgfQotCi0gICAgdWludDE2X3Qg
cHRyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50OyB9Ci0gICAgdm9pZCBpbmNyZW1lbnRQ
dHJDb3VudCgpIHsgKyttX2NvdW50OyB9Ci0gICAgdm9pZCBkZWNyZW1lbnRQdHJDb3VudCgpIHsg
QVNTRVJUKG1fY291bnQpOyAtLW1fY291bnQ7IH0KLXByaXZhdGU6Ci0gICAgdWludDE2X3QgbV9j
b3VudCB7IDAgfTsKLX07Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBIYXNoVHJhaXRz
PENoZWNrZWRQdHI8UD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPENoZWNrZWRQdHI8UD4+IHsK
ICAgICBzdGF0aWMgUCogZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIApAQCAtMjI4
LDYgKzIyNCw0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBEZWZhdWx0SGFzaDxDaGVj
a2VkUHRyPFA+PiA6IFB0ckhhc2g8Q2hlY2tlZFB0cjxQPj4KIH0gLy8gbmFtZXNwYWNlIFdURgog
CiB1c2luZyBXVEY6OkNoZWNrZWRQdHI7Ci11c2luZyBXVEY6OkNhbk1ha2VDaGVja2VkUHRyOwot
dXNpbmcgV1RGOjptYWtlQ2hlY2tlZFB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Q2hlY2tlZFJlZi5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZFJlZi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYz
YjNiYjkxN2YyNTVjNTQ3MzllNDRjOGJmZDg1ZDEwNzgyODkyYzcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkUmVmLmgKQEAgLTAsMCArMSwyNDIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvUmF3UHRyVHJhaXRzLmg+CisKK25hbWVz
cGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQdHJUcmFpdHM+Citj
bGFzcyBDaGVja2VkUmVmIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KworICAgIH5DaGVja2VkUmVmKCkKKyAgICB7CisgICAgICAgIHVucG9pc29uKCp0aGlzKTsKKyAg
ICAgICAgaWYgKGF1dG8qIHB0ciA9IFB0clRyYWl0czo6ZXhjaGFuZ2UobV9wdHIsIG51bGxwdHIp
KQorICAgICAgICAgICAgUHRyVHJhaXRzOjp1bndyYXAocHRyKS0+ZGVjcmVtZW50UHRyQ291bnQo
KTsKKyAgICB9CisKKyAgICBDaGVja2VkUmVmKFQmIG9iamVjdCkKKyAgICAgICAgOiBtX3B0cigm
b2JqZWN0KQorICAgIHsKKyAgICAgICAgUHRyVHJhaXRzOjp1bndyYXAobV9wdHIpLT5pbmNyZW1l
bnRQdHJDb3VudCgpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgQ2hlY2tlZFJlZihjb25z
dCBDaGVja2VkUmVmJiBvdGhlcikKKyAgICAgICAgOiBtX3B0ciB7IG90aGVyLm1fcHRyIH0KKyAg
ICB7CisgICAgICAgIFB0clRyYWl0czo6dW53cmFwKG1fcHRyKS0+aW5jcmVtZW50UHRyQ291bnQo
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1lIE90
aGVyUHRyVHJhaXRzPgorICAgIENoZWNrZWRSZWYoY29uc3QgQ2hlY2tlZFJlZjxPdGhlclR5cGUs
IE90aGVyUHRyVHJhaXRzPiYgb3RoZXIpCisgICAgICAgIDogbV9wdHIgeyBvdGhlci5tX3B0ciB9
CisgICAgeworICAgICAgICBQdHJUcmFpdHM6OnVud3JhcChtX3B0ciktPmluY3JlbWVudFB0ckNv
dW50KCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBDaGVja2VkUmVmKENoZWNrZWRSZWYm
JiBvdGhlcikKKyAgICAgICAgOiBtX3B0ciB7IG90aGVyLnJlbGVhc2VQdHIoKSB9CisgICAgewor
ICAgICAgICBBU1NFUlQobV9wdHIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90
aGVyVHlwZSwgdHlwZW5hbWUgT3RoZXJQdHJUcmFpdHM+CisgICAgQ2hlY2tlZFJlZihDaGVja2Vk
UmVmPE90aGVyVHlwZSwgT3RoZXJQdHJUcmFpdHM+JiYgb3RoZXIpCisgICAgICAgIDogbV9wdHIg
eyBvdGhlci5yZWxlYXNlUHRyKCkgfQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcHRyKTsKKyAg
ICB9CisKKyAgICBDaGVja2VkUmVmKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9wdHIo
UHRyVHJhaXRzOjpoYXNoVGFibGVEZWxldGVkVmFsdWUoKSkgeyB9CisgICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFB0clRyYWl0czo6aXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUobV9wdHIpOyB9CisKKyAgICBDaGVja2VkUmVmKEhhc2hUYWJsZUVtcHR5VmFs
dWVUeXBlKSA6IG1fcHRyKGhhc2hUYWJsZUVtcHR5VmFsdWUoKSkgeyB9CisgICAgYm9vbCBpc0hh
c2hUYWJsZUVtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBoYXNoVGFibGVFbXB0
eVZhbHVlKCk7IH0KKyAgICBzdGF0aWMgVCogaGFzaFRhYmxlRW1wdHlWYWx1ZSgpIHsgcmV0dXJu
IG51bGxwdHI7IH0KKworICAgIGNvbnN0IFQqIHB0ckFsbG93aW5nSGFzaFRhYmxlRW1wdHlWYWx1
ZSgpIGNvbnN0IHsgQVNTRVJUKG1fcHRyIHx8IGlzSGFzaFRhYmxlRW1wdHlWYWx1ZSgpKTsgcmV0
dXJuIFB0clRyYWl0czo6dW53cmFwKG1fcHRyKTsgfQorICAgIFQqIHB0ckFsbG93aW5nSGFzaFRh
YmxlRW1wdHlWYWx1ZSgpIHsgQVNTRVJUKG1fcHRyIHx8IGlzSGFzaFRhYmxlRW1wdHlWYWx1ZSgp
KTsgcmV0dXJuIFB0clRyYWl0czo6dW53cmFwKG1fcHRyKTsgfQorCisgICAgQUxXQVlTX0lOTElO
RSBjb25zdCBUKiBwdHIoKSBjb25zdCB7IHJldHVybiBQdHJUcmFpdHM6OnVud3JhcChtX3B0cik7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIFQqIHB0cigpIHsgcmV0dXJuIFB0clRyYWl0czo6dW53cmFw
KG1fcHRyKTsgfQorICAgIEFMV0FZU19JTkxJTkUgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyBBU1NF
UlQocHRyKCkpOyByZXR1cm4gKnB0cigpOyB9CisgICAgQUxXQVlTX0lOTElORSBUJiBnZXQoKSB7
IEFTU0VSVChwdHIoKSk7IHJldHVybiAqcHRyKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0
IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBwdHIoKTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgVCogb3BlcmF0b3ItPigpIHsgcmV0dXJuIHB0cigpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IG9wZXJhdG9yIGNvbnN0IFQmKCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIG9wZXJhdG9yIFQmKCkgeyByZXR1cm4gZ2V0KCk7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWdldCgpOyB9CisKKyAgICBDaGVja2Vk
UmVmJiBvcGVyYXRvcj0oVCYgcmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgdW5wb2lzb24oKnRo
aXMpOworICAgICAgICBDaGVja2VkUmVmIGNvcHkgeyByZWZlcmVuY2UgfTsKKyAgICAgICAgUHRy
VHJhaXRzOjpzd2FwKG1fcHRyLCBjb3B5Lm1fcHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKworICAgIENoZWNrZWRSZWYmIG9wZXJhdG9yPShjb25zdCBDaGVja2VkUmVmJiBvdGhl
cikKKyAgICB7CisgICAgICAgIHVucG9pc29uKCp0aGlzKTsKKyAgICAgICAgQ2hlY2tlZFJlZiBj
b3B5IHsgb3RoZXIgfTsKKyAgICAgICAgUHRyVHJhaXRzOjpzd2FwKG1fcHRyLCBjb3B5Lm1fcHRy
KTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE90aGVyVHlwZSwgdHlwZW5hbWUgT3RoZXJQdHJUcmFpdHM+IENoZWNrZWRSZWYmIG9wZXJhdG9y
PShjb25zdCBDaGVja2VkUmVmPE90aGVyVHlwZSwgT3RoZXJQdHJUcmFpdHM+JiBvdGhlcikKKyAg
ICB7CisgICAgICAgIHVucG9pc29uKCp0aGlzKTsKKyAgICAgICAgQ2hlY2tlZFJlZiBjb3B5IHsg
b3RoZXIgfTsKKyAgICAgICAgUHRyVHJhaXRzOjpzd2FwKG1fcHRyLCBjb3B5Lm1fcHRyKTsKKyAg
ICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIENoZWNrZWRSZWYmIG9wZXJhdG9yPShD
aGVja2VkUmVmJiYgb3RoZXIpCisgICAgeworICAgICAgICB1bnBvaXNvbigqdGhpcyk7CisgICAg
ICAgIENoZWNrZWRSZWYgbW92ZWQgeyBXVEZNb3ZlKG90aGVyKSB9OworICAgICAgICBQdHJUcmFp
dHM6OnN3YXAobV9wdHIsIG1vdmVkLm1fcHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyVHlwZSwgdHlwZW5hbWUgT3RoZXJQdHJU
cmFpdHM+IENoZWNrZWRSZWYmIG9wZXJhdG9yPShDaGVja2VkUmVmPE90aGVyVHlwZSwgT3RoZXJQ
dHJUcmFpdHM+JiYgb3RoZXIpCisgICAgeworICAgICAgICB1bnBvaXNvbigqdGhpcyk7CisgICAg
ICAgIENoZWNrZWRSZWYgbW92ZWQgeyBXVEZNb3ZlKG90aGVyKSB9OworICAgICAgICBQdHJUcmFp
dHM6OnN3YXAobV9wdHIsIG1vdmVkLm1fcHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1l
IE90aGVyUHRyVHJhaXRzPiBmcmllbmQgY2xhc3MgQ2hlY2tlZFJlZjsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1lIE90aGVyUHRyVHJhaXRzPiBmcmllbmQgY2xhc3Mg
Q2hlY2tlZFB0cjsKKworICAgIFQqIHJlbGVhc2VQdHIoKQorICAgIHsKKyAgICAgICAgVCogcHRy
ID0gUHRyVHJhaXRzOjpleGNoYW5nZShtX3B0ciwgbnVsbHB0cik7CisgICAgICAgIHBvaXNvbigq
dGhpcyk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisjaWYgQVNBTl9FTkFCTEVECisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9iamVjdFR5cGU+CisgICAgdm9pZCBwb2lzb24oT2JqZWN0
VHlwZSYgb2JqZWN0KQorICAgIHsKKyAgICAgICAgX19hc2FuX3BvaXNvbl9tZW1vcnlfcmVnaW9u
KCZvYmplY3QsIHNpemVvZihPYmplY3RUeXBlKSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIE9iamVjdFR5cGU+CisgICAgdm9pZCB1bnBvaXNvbihPYmplY3RUeXBlJiBvYmplY3Qp
CisgICAgeworICAgICAgICBpZiAoX19hc2FuX2FkZHJlc3NfaXNfcG9pc29uZWQoJm9iamVjdCkp
CisgICAgICAgICAgICBfX2FzYW5fdW5wb2lzb25fbWVtb3J5X3JlZ2lvbigmb2JqZWN0LCBzaXpl
b2YoT2JqZWN0VHlwZSkpOworICAgIH0KKyNlbHNlCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9i
amVjdFR5cGU+IHZvaWQgcG9pc29uKE9iamVjdFR5cGUmKSB7IH0KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgT2JqZWN0VHlwZT4gdm9pZCB1bnBvaXNvbihPYmplY3RUeXBlJikgeyB9CisjZW5kaWYK
KworICAgIHR5cGVuYW1lIFB0clRyYWl0czo6U3RvcmFnZVR5cGUgbV9wdHI7Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQdHJUcmFpdHMgPSBSYXdQdHJUcmFpdHM8VD4+IGlu
bGluZSBDaGVja2VkUmVmPFQsIFB0clRyYWl0cz4gbWFrZUNoZWNrZWRSZWYoVCYgcmVmZXJlbmNl
KQoreworICAgIHJldHVybiByZWZlcmVuY2U7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBQdHJUcmFpdHM+CitzdHJ1Y3QgR2V0UHRySGVscGVyPENoZWNrZWRSZWY8VCwgUHRy
VHJhaXRzPj4geworICAgIHR5cGVkZWYgVCogUHRyVHlwZTsKKyAgICBzdGF0aWMgVCogZ2V0UHRy
KGNvbnN0IENoZWNrZWRSZWY8VCwgUHRyVHJhaXRzPiYgcCkgeyByZXR1cm4gY29uc3RfY2FzdDxU
Kj4ocC5wdHIoKSk7IH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgor
c3RydWN0IElzU21hcnRQdHI8Q2hlY2tlZFJlZjxULCBVPj4geworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCB2YWx1ZSA9IHRydWU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5
cGUsIHR5cGVuYW1lIEFyZ1R5cGUsIHR5cGVuYW1lIEFyZ1B0clRyYWl0cz4KK2lubGluZSBib29s
IGlzKENoZWNrZWRSZWY8QXJnVHlwZSwgQXJnUHRyVHJhaXRzPiYgc291cmNlKQoreworICAgIHJl
dHVybiBpczxFeHBlY3RlZFR5cGU+KHNvdXJjZS5nZXQoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJnVHlwZSwgdHlwZW5hbWUgQXJnUHRyVHJhaXRz
PgoraW5saW5lIGJvb2wgaXMoY29uc3QgQ2hlY2tlZFJlZjxBcmdUeXBlLCBBcmdQdHJUcmFpdHM+
JiBzb3VyY2UpCit7CisgICAgcmV0dXJuIGlzPEV4cGVjdGVkVHlwZT4oc291cmNlLmdldCgpKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IENoZWNrZWRSZWZIYXNoVHJhaXRzIDog
U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPENoZWNrZWRSZWY8UD4+IHsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7CisgICAgc3RhdGljIENoZWNrZWRSZWY8
UD4gZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIEhhc2hUYWJsZUVtcHR5VmFsdWU7IH0KKworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZT4KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3RFbXB0eVZhbHVlKENo
ZWNrZWRSZWY8UD4mIHNsb3QpCisgICAgeworICAgICAgICBuZXcgKE5vdE51bGwsIHN0ZDo6YWRk
cmVzc29mKHNsb3QpKSBDaGVja2VkUmVmPFA+KEhhc2hUYWJsZUVtcHR5VmFsdWUpOworICAgIH0K
KworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRy
dWU7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IENoZWNrZWRSZWY8UD4mIHZh
bHVlKSB7IHJldHVybiB2YWx1ZS5pc0hhc2hUYWJsZUVtcHR5VmFsdWUoKTsgfQorCisgICAgdXNp
bmcgUGVla1R5cGUgPSBQKjsKKyAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhjb25zdCBDaGVja2Vk
UmVmPFA+JiB2YWx1ZSkgeyByZXR1cm4gY29uc3RfY2FzdDxQZWVrVHlwZT4odmFsdWUucHRyQWxs
b3dpbmdIYXNoVGFibGVFbXB0eVZhbHVlKCkpOyB9CisgICAgc3RhdGljIFBlZWtUeXBlIHBlZWso
UCogdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9CisKKyAgICB1c2luZyBUYWtlVHlwZSA9IENoZWNr
ZWRQdHI8UD47CisgICAgc3RhdGljIFRha2VUeXBlIHRha2UoQ2hlY2tlZFJlZjxQPiYmIHZhbHVl
KSB7IHJldHVybiBpc0VtcHR5VmFsdWUodmFsdWUpID8gbnVsbHB0ciA6IENoZWNrZWRQdHI8UD4o
V1RGTW92ZSh2YWx1ZSkpOyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFz
aFRyYWl0czxDaGVja2VkUmVmPFA+PiA6IENoZWNrZWRSZWZIYXNoVHJhaXRzPFA+IHsgfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFB0ckhhc2g8Q2hlY2tlZFJlZjxQPj4gOiBQdHJI
YXNoQmFzZTxDaGVja2VkUmVmPFA+LCBJc1NtYXJ0UHRyPENoZWNrZWRSZWY8UD4+Ojp2YWx1ZT4g
eworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IERlZmF1bHRIYXNo
PENoZWNrZWRSZWY8UD4+IDogUHRySGFzaDxDaGVja2VkUmVmPFA+PiB7IH07CisKK2NsYXNzIENh
bk1ha2VDaGVja2VkUHRyIHsKK3B1YmxpYzoKKyAgICB+Q2FuTWFrZUNoZWNrZWRQdHIoKSB7IFJF
TEVBU0VfQVNTRVJUKCFtX2NvdW50KTsgfQorCisgICAgdWludDE2X3QgcHRyQ291bnQoKSBjb25z
dCB7IHJldHVybiBtX2NvdW50OyB9CisgICAgdm9pZCBpbmNyZW1lbnRQdHJDb3VudCgpIHsgKytt
X2NvdW50OyB9CisgICAgdm9pZCBkZWNyZW1lbnRQdHJDb3VudCgpIHsgQVNTRVJUKG1fY291bnQp
OyAtLW1fY291bnQ7IH0KK3ByaXZhdGU6CisgICAgdWludDE2X3QgbV9jb3VudCB7IDAgfTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkNhbk1ha2VDaGVja2VkUHRyOwor
dXNpbmcgV1RGOjpDaGVja2VkUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRm9yd2Fy
ZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IGQyOTVjZmViNWQ4N2Y3OTA2NjY3
NWVkNWUxMDgwYjYyODJlNTU3N2IuLjU1MGYwMDVkMzkxMTE1MzNlNGU3M2FlMGI5ZTI5YmUzYzA5
NGMzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTcyLDYgKzcyLDggQEAgdGVtcGxhdGU8dHlwZW5hbWU+IGNs
YXNzIE9wdGlvblNldDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBQYWNrZWQ7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgPSBhbGlnbm9mKFQpPiBjbGFzcyBQYWNrZWRBbGlnbmVkUHRy
OwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBSYXdQdHJUcmFpdHM7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSA9IFJhd1B0clRyYWl0czxUPj4gY2xhc3MgQ2hlY2tlZFJlZjsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gUmF3UHRyVHJhaXRzPFQ+PiBjbGFzcyBDaGVj
a2VkUHRyOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBSYXdQdHJUcmFpdHM8VD4+
IGNsYXNzIFJlZjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gUmF3UHRyVHJhaXRz
PFQ+LCB0eXBlbmFtZSA9IERlZmF1bHRSZWZEZXJlZlRyYWl0czxUPj4gY2xhc3MgUmVmUHRyOwog
dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFJldGFpblB0cjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxODYyZDFiODBmMzZjYmZhZTlmOGY4NGU2
MTMyOTlmMjgxMTBhMTIzLi4zMDk3ODA2OGRhOTIxY2VlMWZmNjBmYWY2ZDFkODRlMmMwNDE4YjQz
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMjEtMDYtMTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgQWRkIENoZWNrZWRSZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNzE2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIHNvbWUgdW5pdCB0ZXN0cyBmb3IgQ2hlY2tlZFJlZiBh
bmQgdXBkYXRlZCB0aGUgdW5pdCB0ZXN0cworICAgICAgICBmb3IgQ2hlY2tlZFB0ciBwZXIgdGhl
IHJlbW92YWwgb2YgbWFrZUNoZWNrZWRQdHIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9DaGVja2VkUHRyLmNwcDoKKyAgICAgICAgKFdURl9DaGVja2VkUHRy
LkNoZWNrZWRSZWYpOiBBZGRlZAorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0No
ZWNrZWRSZWYuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEkuLkNoZWNrZWRPYmpl
Y3QpOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEkuLkRlcml2ZWRDaGVja2VkT2JqZWN0
KTogQWRkZWQuCisgICAgICAgIChXVEZfQ2hlY2tlZFJlZi5CYXNpYyk6IEFkZGVkLgorICAgICAg
ICAoV1RGX0NoZWNrZWRSZWYuRGVyaXZlZENsYXNzKTogQWRkZWQuCisgICAgICAgIChXVEZfQ2hl
Y2tlZFJlZi5IYXNoU2V0KTogQWRkZWQuCisKIDIwMjEtMDYtMDIgIFJvYiBCdWlzICA8cmJ1aXNA
aWdhbGlhLmNvbT4KIAogICAgICAgICBTcGxpdCBGaWxsSW5saW5lUGF0aC9TdHJva2VJbmxpbmVQ
YXRoCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYzNTEzMjFjMjk4MmE5MWViNGM2Y2MyN2U0
NDVhMTczZWM0ZDVkMGQuLjMyNGE1YWMyMTJmODgzMzQ2ZTcwNjAwYjBkNjY0NjJmZTdmNjQ5Mzcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTYsNiArOTE2LDcgQEAKIAkJOUJENkQzQTcx
RjdCMjFEQzAwQkQ0OTYyIC8qIHBhc3RlLWltYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJENkQzQTYxRjdCMjFDQzAwQkQ0OTYy
IC8qIHBhc3RlLWltYWdlLmh0bWwgKi87IH07CiAJCTlCRENDRDg3MUY3RDBCMDcwMDAwOUExOCAv
KiBQYXN0ZUltYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUJEQ0NEODUxRjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gKi87IH07CiAJ
CTlCREQ5NTU4MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkREOTU1NjFGODM2ODM2MDBEMjBDNjAg
LyogUGFzdGVSVEZELm1tICovOyB9OworCQk5QkYwMDEzMzI2N0M0QzU5MDBEQ0ZCM0YgLyogQ2hl
Y2tlZFJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QkYwMDEzMjI2N0M0QzU5MDBEQ0ZCM0YgLyogQ2hlY2tlZFJlZi5jcHAgKi87IH07CiAJCTlC
RjM1NkNEMjAyRDQ1ODUwMEY3MTE2MCAvKiBtc28tbGlzdC5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRjM1NkNDMjAyRDQ0RjIwMEY3
MTE2MCAvKiBtc28tbGlzdC5odG1sICovOyB9OwogCQk5QzY0REMzMjFENzYxOThBMDA0QjU5OEUg
LyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlDNjREQzMxMUQ3NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQuY3BwICovOyB9OwogCQlBMTBGMDQ3RTFFM0FEMjlDMDBDOTVFMTkg
LyogTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMEYwNDdDMUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5hZ2Vy
RXh0cmFzLm1tICovOyB9OwpAQCAtMjYzMCw2ICsyNjMxLDcgQEAKIAkJOUJENkQzQTYxRjdCMjFD
QzAwQkQ0OTYyIC8qIHBhc3RlLWltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicGFzdGUtaW1hZ2UuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRENDRDg1MUY3RDBCMDcwMDAwOUEx
OCAvKiBQYXN0ZUltYWdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVJbWFnZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJERDk1NTYxRjgzNjgzNjAwRDIwQzYwIC8q
IFBhc3RlUlRGRC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3RlUlRGRC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUJGMDAxMzIyNjdDNEM1OTAwRENGQjNGIC8qIENoZWNr
ZWRSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2hlY2tlZFJlZi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlCRjM1NkNDMjAyRDQ0RjIwMEY3MTE2MCAvKiBtc28tbGlzdC5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gIm1zby1saXN0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5QzY0REMzMTFENzYxOThBMDA0QjU5OEUgLyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFlvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMEYwNDdDMUUz
QUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gTlNGaWxlTWFuYWdlckV4dHJhcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0MTgsNiArNDQyMCw3IEBACiAJCQkJMDQ1MUE1QTYyMzVF
NDM4RTAwOURGOTQ1IC8qIEJ1bXBQb2ludGVyQWxsb2NhdG9yLmNwcCAqLywKIAkJCQlBN0E5NjZE
QTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLywK
IAkJCQk5QkJDQTRERTI2NUFDQTVCMDBERkU3MjMgLyogQ2hlY2tlZFB0ci5jcHAgKi8sCisJCQkJ
OUJGMDAxMzIyNjdDNEM1OTAwRENGQjNGIC8qIENoZWNrZWRSZWYuY3BwICovLAogCQkJCUUzMDJC
REE5MjQwNEI5MjMwMDg2NTI3NyAvKiBDb21wYWN0UmVmUHRyVHVwbGUuY3BwICovLAogCQkJCTlC
MEMwNTE4MjRGREZCNzAwMEYyRkUzMSAvKiBDb21wYWN0VW5pcXVlUHRyVHVwbGUuY3BwICovLAog
CQkJCTBGMzBDQjVCMUZDRTE3OTIwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAg
Ki8sCkBAIC01MTgxLDYgKzUxODQsNyBAQAogCQkJCTA0REIyMzk2MjM1RTQzRUMwMDMyOEYxNyAv
KiBCdW1wUG9pbnRlckFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBMDFE
MEE1OTBDMDBGRUJDRjMgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTlCQkNBNERGMjY1QUNBNUIwMERGRTcyMyAvKiBDaGVja2VkUHRyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTlCRjAwMTMzMjY3QzRDNTkwMERDRkIzRiAvKiBDaGVja2VkUmVm
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMDJCREFBMjQwNEI5MjQwMDg2NTI3NyAvKiBDb21w
YWN0UmVmUHRyVHVwbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUIwQzA1MTkyNEZERkI3RDAw
RjJGRTMxIC8qIENvbXBhY3RVbmlxdWVQdHJUdXBsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjMwQ0I1QzFGQ0UxNzk2MDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9DaGVj
a2VkUHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRQdHIuY3Bw
CmluZGV4IGY0NTY3NzUzOTVjMzQ5MmRjMWUwNDBkZGM2ZGQ1NGJlYTYwYjYzYjAuLjM5NmU0Y2Iz
NjJkMTRlZjMxYTY1MjdkN2NjNTkxNWIzMDkyMGQzNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRQdHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0NoZWNrZWRQdHIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFRFU1QoV1RGX0No
ZWNrZWRQdHIsIEJhc2ljKQogICAgICAgICBDaGVja2VkT2JqZWN0IGNoZWNrZWRPYmplY3Q7CiAg
ICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDApOwogICAgICAgICB7
Ci0gICAgICAgICAgICBhdXRvIHB0ciA9IG1ha2VDaGVja2VkUHRyKGNoZWNrZWRPYmplY3QpOwor
ICAgICAgICAgICAgQ2hlY2tlZFB0ciBwdHIgeyAmY2hlY2tlZE9iamVjdCB9OwogICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoISFwdHIpOwogICAgICAgICAgICAgRVhQRUNUX0VRKHB0ci5nZXQoKSwg
JmNoZWNrZWRPYmplY3QpOwogICAgICAgICAgICAgRVhQRUNUX0VRKHB0ci0+c29tZUZ1bmN0aW9u
KCksIC03KTsKQEAgLTY0LDcgKzY0LDcgQEAgVEVTVChXVEZfQ2hlY2tlZFB0ciwgQmFzaWMpCiAg
ICAgICAgIENoZWNrZWRPYmplY3QgY2hlY2tlZE9iamVjdDsKICAgICAgICAgRVhQRUNUX0VRKGNo
ZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CiAKLSAgICAgICAgYXV0byBwdHIgPSBtYWtlQ2hl
Y2tlZFB0cihjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgQ2hlY2tlZFB0ciBwdHIgPSB7ICZjaGVj
a2VkT2JqZWN0IH07CiAgICAgICAgIEVYUEVDVF9UUlVFKCEhcHRyKTsKICAgICAgICAgRVhQRUNU
X0VRKHB0ci5nZXQoKSwgJmNoZWNrZWRPYmplY3QpOwogICAgICAgICBFWFBFQ1RfRVEocHRyLT5z
b21lRnVuY3Rpb24oKSwgLTcpOwpAQCAtODAsMTkgKzgwLDE5IEBAIFRFU1QoV1RGX0NoZWNrZWRQ
dHIsIEJhc2ljKQogICAgICAgICBDaGVja2VkT2JqZWN0IGNoZWNrZWRPYmplY3Q7CiAgICAgICAg
IEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDApOwogCi0gICAgICAgIGF1dG8g
cHRyMSA9IG1ha2VDaGVja2VkUHRyKGNoZWNrZWRPYmplY3QpOworICAgICAgICBDaGVja2VkUHRy
IHB0cjEgeyAmY2hlY2tlZE9iamVjdCB9OwogICAgICAgICBFWFBFQ1RfVFJVRSghIXB0cjEpOwog
ICAgICAgICBFWFBFQ1RfRVEocHRyMS5nZXQoKSwgJmNoZWNrZWRPYmplY3QpOwogICAgICAgICBF
WFBFQ1RfRVEocHRyMS0+c29tZUZ1bmN0aW9uKCksIC03KTsKICAgICAgICAgRVhQRUNUX0VRKGNo
ZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMSk7CiAKLSAgICAgICAgY29uc3QgQ2hlY2tlZFB0cjxD
aGVja2VkT2JqZWN0PiBwdHIyID0gbWFrZUNoZWNrZWRQdHIoJmNoZWNrZWRPYmplY3QpOworICAg
ICAgICBjb25zdCBDaGVja2VkUHRyIHB0cjIgeyAmY2hlY2tlZE9iamVjdCB9OwogICAgICAgICBF
WFBFQ1RfVFJVRSghIXB0cjIpOwogICAgICAgICBFWFBFQ1RfRVEocHRyMi5nZXQoKSwgJmNoZWNr
ZWRPYmplY3QpOwogICAgICAgICBFWFBFQ1RfRVEocHRyMi0+c29tZUZ1bmN0aW9uKCksIC03KTsK
ICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMik7CiAKLSAgICAg
ICAgQ2hlY2tlZFB0cjxDaGVja2VkT2JqZWN0PiBwdHIzID0gcHRyMjsKKyAgICAgICAgQ2hlY2tl
ZFB0ciBwdHIzID0gcHRyMjsKICAgICAgICAgRVhQRUNUX1RSVUUoISFwdHIzKTsKICAgICAgICAg
RVhQRUNUX0VRKHB0cjMuZ2V0KCksICZjaGVja2VkT2JqZWN0KTsKICAgICAgICAgRVhQRUNUX0VR
KGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMyk7CkBAIC0xMTEsNiArMTExLDc5IEBAIFRFU1Qo
V1RGX0NoZWNrZWRQdHIsIEJhc2ljKQogICAgIH0KIH0KIAorVEVTVChXVEZfQ2hlY2tlZFB0ciwg
Q2hlY2tlZFJlZikKK3sKKyAgICB7CisgICAgICAgIENoZWNrZWRPYmplY3QgY2hlY2tlZE9iamVj
dDsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CisgICAg
ICAgIHsKKyAgICAgICAgICAgIENoZWNrZWRSZWYgcmVmIHsgY2hlY2tlZE9iamVjdCB9OworICAg
ICAgICAgICAgRVhQRUNUX0VRKHJlZi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICAg
ICAgRVhQRUNUX0VRKHJlZi0+c29tZUZ1bmN0aW9uKCksIC03KTsKKyAgICAgICAgICAgIEVYUEVD
VF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDEpOworICAgICAgICAgICAgQ2hlY2tlZFB0
ciBwdHIgeyByZWYgfTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZWYucHRyKCksICZjaGVja2Vk
T2JqZWN0KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZWYtPnNvbWVGdW5jdGlvbigpLCAtNyk7
CisgICAgICAgICAgICBFWFBFQ1RfRVEocHRyLmdldCgpLCAmY2hlY2tlZE9iamVjdCk7CisgICAg
ICAgICAgICBFWFBFQ1RfRVEocHRyLT5zb21lRnVuY3Rpb24oKSwgLTcpOworICAgICAgICAgICAg
RVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMik7CisgICAgICAgIH0KKyAgICAg
ICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CisgICAgfQorCisgICAg
eworICAgICAgICBEZXJpdmVkQ2hlY2tlZE9iamVjdCBjaGVja2VkT2JqZWN0OworICAgICAgICBF
WFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKKyAgICAgICAgeworICAgICAg
ICAgICAgQ2hlY2tlZFJlZjxEZXJpdmVkQ2hlY2tlZE9iamVjdD4gcmVmIHsgY2hlY2tlZE9iamVj
dCB9OworICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOwor
ICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi0+c29tZUZ1bmN0aW9uKCksIC03KTsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDEpOworICAgICAgICAgICAg
Q2hlY2tlZFB0cjxDaGVja2VkT2JqZWN0PiBwdHIgeyByZWYgfTsKKyAgICAgICAgICAgIEVYUEVD
VF9FUShyZWYucHRyKCksICZjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShy
ZWYtPnNvbWVGdW5jdGlvbigpLCAtNyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocHRyLmdldCgp
LCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocHRyLT5zb21lRnVuY3Rp
b24oKSwgLTcpOworICAgICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQo
KSwgMik7CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291
bnQoKSwgMCk7CisgICAgfQorCisgICAgeworICAgICAgICBDaGVja2VkT2JqZWN0IGNoZWNrZWRP
YmplY3Q7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDApOwor
ICAgICAgICB7CisgICAgICAgICAgICBDaGVja2VkUmVmIHJlZiB7IGNoZWNrZWRPYmplY3QgfTsK
KyAgICAgICAgICAgIEVYUEVDVF9FUShyZWYucHRyKCksICZjaGVja2VkT2JqZWN0KTsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUShyZWYtPnNvbWVGdW5jdGlvbigpLCAtNyk7CisgICAgICAgICAgICBF
WFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKKyAgICAgICAgICAgIENoZWNr
ZWRQdHIgcHRyIHsgV1RGTW92ZShyZWYpIH07CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLnB0
cigpLCBudWxscHRyKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShwdHIuZ2V0KCksICZjaGVja2Vk
T2JqZWN0KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShwdHItPnNvbWVGdW5jdGlvbigpLCAtNyk7
CisgICAgICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKKyAg
ICAgICAgfQorICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIERlcml2ZWRDaGVja2VkT2JqZWN0IGNoZWNrZWRPYmpl
Y3Q7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDApOworICAg
ICAgICB7CisgICAgICAgICAgICBDaGVja2VkUmVmPERlcml2ZWRDaGVja2VkT2JqZWN0PiByZWYg
eyBjaGVja2VkT2JqZWN0IH07CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCAmY2hl
Y2tlZE9iamVjdCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLT5zb21lRnVuY3Rpb24oKSwg
LTcpOworICAgICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMSk7
CisgICAgICAgICAgICBDaGVja2VkUHRyPENoZWNrZWRPYmplY3Q+IHB0ciB7IFdURk1vdmUocmVm
KSB9OworICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi5wdHIoKSwgbnVsbHB0cik7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEocHRyLmdldCgpLCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAgICAgICBF
WFBFQ1RfRVEocHRyLT5zb21lRnVuY3Rpb24oKSwgLTcpOworICAgICAgICAgICAgRVhQRUNUX0VR
KGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMSk7CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNU
X0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CisgICAgfQorfQorCiBURVNUKFdURl9D
aGVja2VkUHRyLCBEZXJpdmVkQ2xhc3MpCiB7CiAgICAgewpAQCAtMTIyLDcgKzE5NSw3IEBAIFRF
U1QoV1RGX0NoZWNrZWRQdHIsIERlcml2ZWRDbGFzcykKICAgICAgICAgRGVyaXZlZENoZWNrZWRP
YmplY3QgY2hlY2tlZE9iamVjdDsKICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRy
Q291bnQoKSwgMCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gcHRyID0gbWFrZUNoZWNr
ZWRQdHIoY2hlY2tlZE9iamVjdCk7CisgICAgICAgICAgICBDaGVja2VkUHRyIHB0ciA9IHsgJmNo
ZWNrZWRPYmplY3QgfTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKCEhcHRyKTsKICAgICAgICAg
ICAgIEVYUEVDVF9FUShwdHIuZ2V0KCksICZjaGVja2VkT2JqZWN0KTsKICAgICAgICAgICAgIEVY
UEVDVF9FUShwdHItPnNvbWVGdW5jdGlvbigpLCAtNyk7CkBAIC0xMzUsNyArMjA4LDcgQEAgVEVT
VChXVEZfQ2hlY2tlZFB0ciwgRGVyaXZlZENsYXNzKQogICAgICAgICBDaGVja2VkT2JqZWN0IGNo
ZWNrZWRPYmplY3Q7CiAgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCks
IDApOwogCi0gICAgICAgIENoZWNrZWRQdHI8Q2hlY2tlZE9iamVjdD4gcHRyID0gbWFrZUNoZWNr
ZWRQdHIoY2hlY2tlZE9iamVjdCk7CisgICAgICAgIENoZWNrZWRQdHI8Q2hlY2tlZE9iamVjdD4g
cHRyIHsgJmNoZWNrZWRPYmplY3QgfTsKICAgICAgICAgRVhQRUNUX1RSVUUoISFwdHIpOwogICAg
ICAgICBFWFBFQ1RfRVEocHRyLmdldCgpLCAmY2hlY2tlZE9iamVjdCk7CiAgICAgICAgIEVYUEVD
VF9FUShwdHItPnNvbWVGdW5jdGlvbigpLCAtNyk7CkBAIC0xNTEsNyArMjI0LDcgQEAgVEVTVChX
VEZfQ2hlY2tlZFB0ciwgRGVyaXZlZENsYXNzKQogICAgICAgICBEZXJpdmVkQ2hlY2tlZE9iamVj
dCBjaGVja2VkT2JqZWN0OwogICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3Vu
dCgpLCAwKTsKIAotICAgICAgICBDaGVja2VkUHRyPERlcml2ZWRDaGVja2VkT2JqZWN0PiBwdHIx
ID0gbWFrZUNoZWNrZWRQdHIoY2hlY2tlZE9iamVjdCk7CisgICAgICAgIENoZWNrZWRQdHI8RGVy
aXZlZENoZWNrZWRPYmplY3Q+IHB0cjEgeyAmY2hlY2tlZE9iamVjdCB9OwogICAgICAgICBFWFBF
Q1RfVFJVRSghIXB0cjEpOwogICAgICAgICBFWFBFQ1RfRVEocHRyMS5nZXQoKSwgJmNoZWNrZWRP
YmplY3QpOwogICAgICAgICBFWFBFQ1RfRVEocHRyMS0+c29tZUZ1bmN0aW9uKCksIC03KTsKQEAg
LTE4OSw3ICsyNjIsNyBAQCBURVNUKFdURl9DaGVja2VkUHRyLCBIYXNoU2V0KQogICAgICAgICBD
aGVja2VkT2JqZWN0IGNoZWNrZWRPYmplY3Q7CiAgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2Jq
ZWN0LnB0ckNvdW50KCksIDApOwogCi0gICAgICAgIGF1dG8gcHRyID0gbWFrZUNoZWNrZWRQdHIo
Y2hlY2tlZE9iamVjdCk7CisgICAgICAgIENoZWNrZWRQdHIgcHRyID0geyAmY2hlY2tlZE9iamVj
dCB9OwogICAgICAgICBFWFBFQ1RfRVEocHRyLmdldCgpLCAmY2hlY2tlZE9iamVjdCk7CiAgICAg
ICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDEpOwogCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9DaGVja2VkUmVmLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRSZWYuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjN2MxYzll
YjVjNzA5ZTUyZTkxNmM2YzE2NWY0ZDQ3ZTUxNTMxMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9DaGVja2VkUmVmLmNwcApAQCAtMCwwICsxLDMyMSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlV0aWxpdGll
cy5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkUmVmLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIFdURjo6Q2hlY2tlZFJlZjsKK3Vz
aW5nIFdURjo6bWFrZUNoZWNrZWRSZWY7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
bmFtZXNwYWNlIHsKKworY2xhc3MgQ2hlY2tlZE9iamVjdCA6IHB1YmxpYyBDYW5NYWtlQ2hlY2tl
ZFB0ciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2hlY2tlZE9iamVjdCk7CitwdWJsaWM6
CisgICAgQ2hlY2tlZE9iamVjdChpbnQgdmFsdWUgPSAtNykKKyAgICAgICAgOiBtX3ZhbHVlKHZh
bHVlKQorICAgIHsgfQorICAgIAorICAgIH5DaGVja2VkT2JqZWN0KCkgPSBkZWZhdWx0OworCisg
ICAgaW50IHNvbWVGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworcHJpdmF0
ZToKKyAgICBpbnQgbV92YWx1ZTsKK307CisKK2NsYXNzIERlcml2ZWRDaGVja2VkT2JqZWN0IDog
cHVibGljIENoZWNrZWRPYmplY3QgeworcHVibGljOgorICAgIERlcml2ZWRDaGVja2VkT2JqZWN0
KGludCB2YWx1ZSA9IC0xMSkKKyAgICAgICAgOiBDaGVja2VkT2JqZWN0KHZhbHVlKQorICAgIHsg
fQorfTsKKworVEVTVChXVEZfQ2hlY2tlZFJlZiwgQmFzaWMpCit7CisgICAgeworICAgICAgICBD
aGVja2VkT2JqZWN0IGNoZWNrZWRPYmplY3Q7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2Jq
ZWN0LnB0ckNvdW50KCksIDApOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ2hlY2tlZE9iamVj
dCBjaGVja2VkT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3Vu
dCgpLCAwKTsKKyAgICAgICAgeworICAgICAgICAgICAgQ2hlY2tlZFJlZiByZWYgPSBjaGVja2Vk
T2JqZWN0OworICAgICAgICAgICAgRVhQRUNUX0VRKCZyZWYuZ2V0KCksICZjaGVja2VkT2JqZWN0
KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZWYucHRyKCksICZjaGVja2VkT2JqZWN0KTsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShyZWYtPnNvbWVGdW5jdGlvbigpLCAtNyk7CisgICAgICAgICAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Q2hlY2tlZE9iamVjdCY+KHJlZikuc29tZUZ1bmN0aW9u
KCksIC03KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCks
IDEpOworICAgICAgICB9CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50
KCksIDApOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ2hlY2tlZE9iamVjdCBjaGVja2VkT2Jq
ZWN0OworICAgICAgICBDaGVja2VkT2JqZWN0IGFub3RoZXJPYmplY3Q7CisgICAgICAgIEVYUEVD
VF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDApOworCisgICAgICAgIENoZWNrZWRSZWYg
cmVmID0gY2hlY2tlZE9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKHJlZi5wdHIoKSwgJmNoZWNr
ZWRPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEocmVmLT5zb21lRnVuY3Rpb24oKSwgLTcpOwor
ICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Q2hlY2tlZE9iamVjdCY+KHJlZikuc29tZUZ1
bmN0aW9uKCksIC03KTsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQo
KSwgMSk7CisKKyAgICAgICAgcmVmID0gYW5vdGhlck9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VR
KHJlZi5wdHIoKSwgJmFub3RoZXJPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9i
amVjdC5wdHJDb3VudCgpLCAwKTsKKyAgICAgICAgRVhQRUNUX0VRKGFub3RoZXJPYmplY3QucHRy
Q291bnQoKSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICBDaGVja2VkT2JqZWN0IGNoZWNr
ZWRPYmplY3Q7CisgICAgICAgIENoZWNrZWRPYmplY3QgYW5vdGhlck9iamVjdDsKKyAgICAgICAg
RVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CisKKyAgICAgICAgQ2hlY2tl
ZFJlZiByZWYxID0gY2hlY2tlZE9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKHJlZjEucHRyKCks
ICZjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgRVhQRUNUX0VRKHJlZjEtPnNvbWVGdW5jdGlvbigp
LCAtNyk7CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxDaGVja2VkT2JqZWN0Jj4ocmVm
MSkuc29tZUZ1bmN0aW9uKCksIC03KTsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3Qu
cHRyQ291bnQoKSwgMSk7CisKKyAgICAgICAgY29uc3QgQ2hlY2tlZFJlZiByZWYyID0gY2hlY2tl
ZE9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKHJlZjIucHRyKCksICZjaGVja2VkT2JqZWN0KTsK
KyAgICAgICAgRVhQRUNUX0VRKHJlZjIuZ2V0KCkuc29tZUZ1bmN0aW9uKCksIC03KTsKKyAgICAg
ICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IENoZWNrZWRPYmplY3QmPihyZWYyKS5zb21l
RnVuY3Rpb24oKSwgLTcpOworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3Vu
dCgpLCAyKTsKKworICAgICAgICBDaGVja2VkUmVmIHJlZjMgPSByZWYyOworICAgICAgICBFWFBF
Q1RfRVEocmVmMy5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEoY2hl
Y2tlZE9iamVjdC5wdHJDb3VudCgpLCAzKTsKKworICAgICAgICByZWYxID0gYW5vdGhlck9iamVj
dDsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMik7CisgICAg
ICAgIEVYUEVDVF9FUShhbm90aGVyT2JqZWN0LnB0ckNvdW50KCksIDEpOworICAgICAgICBFWFBF
Q1RfRVEocmVmMS5wdHIoKSwgJmFub3RoZXJPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEocmVm
Mi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEocmVmMy5wdHIoKSwg
JmNoZWNrZWRPYmplY3QpOworCisgICAgICAgIHJlZjEgPSBXVEZNb3ZlKHJlZjMpOworICAgICAg
ICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAyKTsKKyAgICAgICAgRVhQRUNU
X0VRKGFub3RoZXJPYmplY3QucHRyQ291bnQoKSwgMCk7CisgICAgICAgIEVYUEVDVF9FUShyZWYx
LnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShyZWYyLnB0cigpLCAm
Y2hlY2tlZE9iamVjdCk7CisgICAgfQorfQorCitURVNUKFdURl9DaGVja2VkUmVmLCBEZXJpdmVk
Q2xhc3MpCit7CisgICAgeworICAgICAgICBEZXJpdmVkQ2hlY2tlZE9iamVjdCBjaGVja2VkT2Jq
ZWN0OworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKKyAg
ICAgICAgeworICAgICAgICAgICAgQ2hlY2tlZFJlZiByZWYgPSBjaGVja2VkT2JqZWN0OworICAg
ICAgICAgICAgRVhQRUNUX0VRKCZyZWYuZ2V0KCksICZjaGVja2VkT2JqZWN0KTsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUShyZWYucHRyKCksICZjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxEZXJpdmVkQ2hlY2tlZE9iamVjdCY+KHJlZikuc29tZUZ1bmN0
aW9uKCksIC0xMSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLT5zb21lRnVuY3Rpb24oKSwg
LTExKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDEp
OworICAgICAgICB9CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCks
IDApOworICAgIH0KKworICAgIHsKKyAgICAgICAgRGVyaXZlZENoZWNrZWRPYmplY3QgY2hlY2tl
ZE9iamVjdDsKKyAgICAgICAgRGVyaXZlZENoZWNrZWRPYmplY3QgYW5vdGhlck9iamVjdDsKKyAg
ICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CisgICAgICAgIEVY
UEVDVF9FUShhbm90aGVyT2JqZWN0LnB0ckNvdW50KCksIDApOworCisgICAgICAgIENoZWNrZWRS
ZWY8Q2hlY2tlZE9iamVjdD4gcmVmID0gY2hlY2tlZE9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VR
KHJlZi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEocmVmLT5zb21l
RnVuY3Rpb24oKSwgLTExKTsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PENoZWNrZWRP
YmplY3QmPihyZWYpLnNvbWVGdW5jdGlvbigpLCAtMTEpOworICAgICAgICBFWFBFQ1RfRVEoY2hl
Y2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKKyAgICAgICAgRVhQRUNUX0VRKGFub3RoZXJPYmpl
Y3QucHRyQ291bnQoKSwgMCk7CisKKyAgICAgICAgcmVmID0gYW5vdGhlck9iamVjdDsKKyAgICAg
ICAgRVhQRUNUX0VRKHJlZi5wdHIoKSwgJmFub3RoZXJPYmplY3QpOworICAgICAgICBFWFBFQ1Rf
RVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKKyAgICAgICAgRVhQRUNUX0VRKGFub3Ro
ZXJPYmplY3QucHRyQ291bnQoKSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICBEZXJpdmVk
Q2hlY2tlZE9iamVjdCBjaGVja2VkT2JqZWN0IHsgMTAgfTsKKyAgICAgICAgRGVyaXZlZENoZWNr
ZWRPYmplY3QgYW5vdGhlck9iamVjdCB7IDIwIH07CisgICAgICAgIEVYUEVDVF9FUShjaGVja2Vk
T2JqZWN0LnB0ckNvdW50KCksIDApOworICAgICAgICBFWFBFQ1RfRVEoYW5vdGhlck9iamVjdC5w
dHJDb3VudCgpLCAwKTsKKworICAgICAgICBDaGVja2VkUmVmPERlcml2ZWRDaGVja2VkT2JqZWN0
PiByZWYxID0gY2hlY2tlZE9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKHJlZjEucHRyKCksICZj
aGVja2VkT2JqZWN0KTsKKyAgICAgICAgRVhQRUNUX0VRKHJlZjEtPnNvbWVGdW5jdGlvbigpLCAx
MCk7CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxDaGVja2VkT2JqZWN0Jj4ocmVmMSku
c29tZUZ1bmN0aW9uKCksIDEwKTsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRy
Q291bnQoKSwgMSk7CisgICAgICAgIEVYUEVDVF9FUShhbm90aGVyT2JqZWN0LnB0ckNvdW50KCks
IDApOworCisgICAgICAgIGNvbnN0IENoZWNrZWRSZWY8Q2hlY2tlZE9iamVjdD4gcmVmMiA9IHJl
ZjE7CisgICAgICAgIEVYUEVDVF9FUShyZWYyLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAg
ICAgIEVYUEVDVF9FUShyZWYyLT5zb21lRnVuY3Rpb24oKSwgMTApOworICAgICAgICBFWFBFQ1Rf
RVEoc3RhdGljX2Nhc3Q8Y29uc3QgQ2hlY2tlZE9iamVjdCY+KHJlZjIpLnNvbWVGdW5jdGlvbigp
LCAxMCk7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDIpOwor
ICAgICAgICBFWFBFQ1RfRVEoYW5vdGhlck9iamVjdC5wdHJDb3VudCgpLCAwKTsKKworICAgICAg
ICBDaGVja2VkUmVmPENoZWNrZWRPYmplY3Q+IHJlZjMgPSByZWYxOworICAgICAgICBFWFBFQ1Rf
RVEocmVmMy5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEoc3RhdGlj
X2Nhc3Q8Q2hlY2tlZE9iamVjdCY+KHJlZjMpLnNvbWVGdW5jdGlvbigpLCAxMCk7CisgICAgICAg
IEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDMpOworICAgICAgICBFWFBFQ1Rf
RVEoYW5vdGhlck9iamVjdC5wdHJDb3VudCgpLCAwKTsKKworICAgICAgICByZWYxID0gYW5vdGhl
ck9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMik7
CisgICAgICAgIEVYUEVDVF9FUShhbm90aGVyT2JqZWN0LnB0ckNvdW50KCksIDEpOworICAgICAg
ICBFWFBFQ1RfRVEocmVmMS5wdHIoKSwgJmFub3RoZXJPYmplY3QpOworICAgICAgICBFWFBFQ1Rf
RVEocmVmMS0+c29tZUZ1bmN0aW9uKCksIDIwKTsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19j
YXN0PENoZWNrZWRPYmplY3QmPihyZWYxKS5zb21lRnVuY3Rpb24oKSwgMjApOworICAgICAgICBF
WFBFQ1RfRVEocmVmMi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEo
cmVmMy5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworCisgICAgICAgIENoZWNrZWRSZWY8Q2hlY2tl
ZE9iamVjdD4gcmVmNCA9IFdURk1vdmUocmVmMSk7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2Vk
T2JqZWN0LnB0ckNvdW50KCksIDIpOworICAgICAgICBFWFBFQ1RfRVEoYW5vdGhlck9iamVjdC5w
dHJDb3VudCgpLCAxKTsKKyAgICAgICAgRVhQRUNUX0VRKHJlZjIucHRyKCksICZjaGVja2VkT2Jq
ZWN0KTsKKyAgICAgICAgRVhQRUNUX0VRKHJlZjMucHRyKCksICZjaGVja2VkT2JqZWN0KTsKKyAg
ICAgICAgRVhQRUNUX0VRKHJlZjQucHRyKCksICZhbm90aGVyT2JqZWN0KTsKKyAgICAgICAgRVhQ
RUNUX0VRKHN0YXRpY19jYXN0PENoZWNrZWRPYmplY3QmPihyZWY0KS5zb21lRnVuY3Rpb24oKSwg
MjApOworICAgICAgICBFWFBFQ1RfRVEocmVmNC0+c29tZUZ1bmN0aW9uKCksIDIwKTsKKworICAg
ICAgICByZWYxID0gY2hlY2tlZE9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmpl
Y3QucHRyQ291bnQoKSwgMyk7CisgICAgICAgIEVYUEVDVF9FUShhbm90aGVyT2JqZWN0LnB0ckNv
dW50KCksIDEpOworICAgICAgICBFWFBFQ1RfRVEocmVmMS5wdHIoKSwgJmNoZWNrZWRPYmplY3Qp
OworICAgICAgICBFWFBFQ1RfRVEocmVmMS0+c29tZUZ1bmN0aW9uKCksIDEwKTsKKyAgICAgICAg
RVhQRUNUX0VRKHJlZjIucHRyKCksICZjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgRVhQRUNUX0VR
KHJlZjMucHRyKCksICZjaGVja2VkT2JqZWN0KTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0NoZWNr
ZWRSZWYsIEhhc2hTZXQpCit7CisgICAgeworICAgICAgICBDaGVja2VkT2JqZWN0IGNoZWNrZWRP
YmplY3Q7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDApOwor
CisgICAgICAgIEhhc2hTZXQ8Q2hlY2tlZFJlZjxDaGVja2VkT2JqZWN0Pj4gc2V0OworICAgICAg
ICB7CisgICAgICAgICAgICBDaGVja2VkUmVmIHJlZiA9IGNoZWNrZWRPYmplY3Q7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAgICAgICBF
WFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKKworICAgICAgICAgICAgc2V0
LmFkZChyZWYpOworICAgICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQo
KSwgMik7CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291
bnQoKSwgMSk7CisgICAgfQorCisgICAgeworICAgICAgICBDaGVja2VkT2JqZWN0IG9iamVjdDE7
CisgICAgICAgIERlcml2ZWRDaGVja2VkT2JqZWN0IG9iamVjdDI7CisgICAgICAgIEVYUEVDVF9F
UShvYmplY3QxLnB0ckNvdW50KCksIDApOworICAgICAgICBFWFBFQ1RfRVEob2JqZWN0Mi5wdHJD
b3VudCgpLCAwKTsKKworICAgICAgICBIYXNoU2V0PENoZWNrZWRSZWY8Q2hlY2tlZE9iamVjdD4+
IHNldDsKKyAgICAgICAgc2V0LmFkZChvYmplY3QxKTsKKyAgICAgICAgRVhQRUNUX0VRKG9iamVj
dDEucHRyQ291bnQoKSwgMSk7CisgICAgICAgIEVYUEVDVF9FUShvYmplY3QyLnB0ckNvdW50KCks
IDApOworICAgICAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMob2JqZWN0MSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRhaW5zKG9iamVjdDIpKTsKKworICAgICAgICBzZXQuYWRk
KG9iamVjdDEpOworICAgICAgICBFWFBFQ1RfRVEob2JqZWN0MS5wdHJDb3VudCgpLCAxKTsKKyAg
ICAgICAgRVhQRUNUX0VRKG9iamVjdDIucHRyQ291bnQoKSwgMCk7CisgICAgICAgIEVYUEVDVF9U
UlVFKHNldC5jb250YWlucyhvYmplY3QxKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShzZXQuY29u
dGFpbnMob2JqZWN0MikpOworCisgICAgICAgIHsKKyAgICAgICAgICAgIENoZWNrZWRSZWY8RGVy
aXZlZENoZWNrZWRPYmplY3Q+IHJlZiB7IG9iamVjdDIgfTsKKyAgICAgICAgICAgIHNldC5hZGQo
cmVmKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShvYmplY3QxLnB0ckNvdW50KCksIDEpOworICAg
ICAgICAgICAgRVhQRUNUX0VRKG9iamVjdDIucHRyQ291bnQoKSwgMik7CisgICAgICAgICAgICBF
WFBFQ1RfVFJVRShzZXQuY29udGFpbnMob2JqZWN0MSkpOworICAgICAgICAgICAgRVhQRUNUX1RS
VUUoc2V0LmNvbnRhaW5zKG9iamVjdDIpKTsKKyAgICAgICAgfQorCisgICAgICAgIEVYUEVDVF9F
UShvYmplY3QxLnB0ckNvdW50KCksIDEpOworICAgICAgICBFWFBFQ1RfRVEob2JqZWN0Mi5wdHJD
b3VudCgpLCAxKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKG9iamVjdDEpKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKG9iamVjdDIpKTsKKworICAgICAgICBz
ZXQucmVtb3ZlKG9iamVjdDEpOworICAgICAgICBFWFBFQ1RfRVEob2JqZWN0MS5wdHJDb3VudCgp
LCAwKTsKKyAgICAgICAgRVhQRUNUX0VRKG9iamVjdDIucHRyQ291bnQoKSwgMSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMob2JqZWN0MSkpOworICAgICAgICBFWFBFQ1RfVFJV
RShzZXQuY29udGFpbnMob2JqZWN0MikpOworICAgIH0KKworICAgIHsKKyAgICAgICAgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxDaGVja2VkT2JqZWN0Pj4gb2JqZWN0czsKKyAgICAgICAgb2JqZWN0
cy5hcHBlbmQobWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Q2hlY2tlZE9iamVjdD4o
MCkpOworICAgICAgICBFWFBFQ1RfRVEob2JqZWN0c1swXS0+cHRyQ291bnQoKSwgMCk7CisKKyAg
ICAgICAgSGFzaFNldDxDaGVja2VkUmVmPENoZWNrZWRPYmplY3Q+PiBzZXQ7CisgICAgICAgIHNl
dC5hZGQoKm9iamVjdHNbMF0uZ2V0KCkpOworICAgICAgICBhdXRvIGluaXRpYWxDYXBhY2l0eSA9
IHNldC5jYXBhY2l0eSgpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IHNldC5jYXBh
Y2l0eSgpID09IGluaXRpYWxDYXBhY2l0eTsgKytpKSB7CisgICAgICAgICAgICBpZiAoaSAlIDIp
CisgICAgICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQobWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8RGVyaXZlZENoZWNrZWRPYmplY3Q+KGkgKyAxKSk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQobWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8Q2hlY2tlZE9iamVjdD4oaSArIDEpKTsKKyAgICAgICAgICAgIHNldC5hZGQoKm9i
amVjdHMubGFzdCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoYXV0byYgb2JqZWN0IDog
b2JqZWN0cykgeworICAgICAgICAgICAgRVhQRUNUX0VRKG9iamVjdC0+cHRyQ291bnQoKSwgMSk7
CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMoKm9iamVjdCkpOworICAgICAg
ICB9CisKKyAgICAgICAgVmVjdG9yPGJvb2w+IHNlZW47CisgICAgICAgIHNlZW4ucmVzaXplKG9i
amVjdHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogc2V0KQorICAgICAgICAg
ICAgc2VlbltpdGVtLT5zb21lRnVuY3Rpb24oKV0gPSB0cnVlOworICAgICAgICBmb3IgKGF1dG8g
dmFsdWUgOiBzZWVuKQorICAgICAgICAgICAgRVhQRUNUX1RSVUUodmFsdWUpOworCisgICAgICAg
IGF1dG8gc2V0VmVjdG9yID0gV1RGOjpjb3B5VG9WZWN0b3Ioc2V0KTsKKworICAgICAgICBmb3Ig
KGF1dG8mIG9iamVjdCA6IG9iamVjdHMpCisgICAgICAgICAgICBFWFBFQ1RfRVEob2JqZWN0LT5w
dHJDb3VudCgpLCAyKTsKKyAgICB9Cit9CisKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431815</attachid>
            <date>2021-06-20 00:30:05 -0700</date>
            <delta_ts>2021-07-29 02:20:42 -0700</delta_ts>
            <desc>Updated for ToT</desc>
            <filename>bug-227164-20210620003004.patch</filename>
            <type>text/plain</type>
            <size>40117</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzkwNTEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDIxLTA2LTIwICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBDaGVja2VkUmVmCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcxNjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMaWtlIHIyNzgzNDQsIHRoaXMgcGF0Y2gg
aW50cm9kdWNlcyBhIG5ldyB0eXBlIG9mIHNtYXJ0IHBvaW50ZXIsIENoZWNrZWRSZWYsCisgICAg
ICAgIHdoaWNoIGxldHMgZWFjaCBvYmplY3Qga2VlcCB0cmFjayBvZiBwb2ludGVycyBwb2ludGlu
ZyB0byB0aGUgb2JqZWN0LgorCisgICAgICAgIEFzIHdpdGggQ2hlY2tlZFB0ciwgdGhlIHB1cnBv
c2Ugb2YgdGhlIGludGVybmFsIGNvdW50ZXIgZm9yIENoZWNrZWRSZWYgaXMKKyAgICAgICAgdG8g
cmVsZWFzZSBhc3NlcnQgdGhhdCB0aGVyZSBpcyBubyBvdXRzdGFuZGluZyBwb2ludGVyIGF0IHRo
ZSB0aW1lIG9mIGRlc3RydWN0aW9uCisgICAgICAgIGluc3RlYWQgb2Yga2VlcGluZyB0aGUgb2Jq
ZWN0IGFsaXZlIHdoZW4gdGhlcmUgaXMgb25lLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBy
ZW1vdmVzIG1ha2VDaGVja2VkUHRyIGluIGZhdm9yIG9mIHVzaW5nIENoZWNrZWRQdHIgd2l0aAor
ICAgICAgICB0ZW1wbGF0ZSBhcmd1bWVudCBkZWR1Y3Rpb24gaW4gQysrMTcuCisKKyAgICAgICAg
KiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogd3RmL0NoZWNrZWRQdHIuaDoKKyAgICAgICAgKFdURjo6Q2hlY2tl
ZFB0cjo6Q2hlY2tlZFB0cik6IEFkZGVkIHZhcmlhbnRzIHdoaWNoIHRha2UgQ2hlY2tlZFJlZiBh
cyBhcmd1bWVudHMuCisgICAgICAgIChXVEY6Om1ha2VDaGVja2VkUHRyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6Q2FuTWFrZUNoZWNrZWRQdHIpOiBNb3ZlZCB0byBDaGVja2VkUmVmLmgKKyAg
ICAgICAgKiB3dGYvQ2hlY2tlZFJlZi5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tlZFJl
Zjo6fkNoZWNrZWRSZWYpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tlZFJlZjo6Q2hlY2tl
ZFJlZik6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVmOjppc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVmOjppc0hhc2hU
YWJsZUVtcHR5VmFsdWUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tlZFJlZjo6
aGFzaFRhYmxlRW1wdHlWYWx1ZSk6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVmOjpw
dHJBbGxvd2luZ0hhc2hUYWJsZUVtcHR5VmFsdWUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdU
Rjo6Q2hlY2tlZFJlZjo6cHRyQWxsb3dpbmdIYXNoVGFibGVFbXB0eVZhbHVlKTogQWRkZWQuCisg
ICAgICAgIChXVEY6OkNoZWNrZWRSZWY6OnB0ciBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV1RG
OjpDaGVja2VkUmVmOjpwdHIpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tlZFJlZjo6Z2V0
IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWY6OmdldCk6IEFkZGVkLgor
ICAgICAgICAoV1RGOjpDaGVja2VkUmVmOjpvcGVyYXRvci0+IGNvbnN0KTogQWRkZWQuCisgICAg
ICAgIChXVEY6OkNoZWNrZWRSZWY6Om9wZXJhdG9yLT4pOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
Q2hlY2tlZFJlZjo6b3BlcmF0b3IgY29uc3QgVCYgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdU
Rjo6Q2hlY2tlZFJlZjo6b3BlcmF0b3IgVCYpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tl
ZFJlZjo6b3BlcmF0b3IhIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWY6
Om9wZXJhdG9yPSk6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVmOjpyZWxlYXNlUHRy
KTogQWRkZWQuIFJldHVybnMgbV9wdHIgd2l0aG91dCBjYWxsaW5nIGRlY3JlbWVudFB0ckNvdW50
LgorICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgb2YgbGVha1B0ciBpbiBSZWYgYnV0IHdlIGRv
bid0IGNhbGwgdGhpcyB0aGF0IHNpbmNlIENoZWNrZWRSZWYgb3IKKyAgICAgICAgQ2hlY2tlZFB0
ciBpcyBnZW5lcmFsbHkgbm90IHVzZWQgdG8gbWFuYWdlIHRoZSBvYmplY3QgbGlmZXRpbWUuCisg
ICAgICAgIChXVEY6OkNoZWNrZWRSZWY6OnBvaXNvbik6IEFkZGVkLgorICAgICAgICAoV1RGOjpD
aGVja2VkUmVmOjp1bnBvaXNvbik6IEFkZGVkLgorICAgICAgICAoV1RGOjptYWtlQ2hlY2tlZFJl
Zik6CisgICAgICAgIChXVEY6OmlzKTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWZI
YXNoVHJhaXRzKTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWZIYXNoVHJhaXRzOjpl
bXB0eVZhbHVlKTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWZIYXNoVHJhaXRzOjpj
b25zdHJ1Y3RFbXB0eVZhbHVlKTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWZIYXNo
VHJhaXRzOjppc0VtcHR5VmFsdWUpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tlZFJlZkhh
c2hUcmFpdHM6OnBlZWspOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tlZFJlZkhhc2hUcmFp
dHM6OnRha2UpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2FuTWFrZUNoZWNrZWRQdHIpOiBNb3Zl
ZCBmcm9tIENoZWNrZWRQdHIuaAorICAgICAgICAqIHd0Zi9Gb3J3YXJkLmg6CisKIDIwMjEtMDYt
MTkgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IFNwYW4g
aW4gQmFzZTY0LmgKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjc5MDUxKQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTExLDYgKzUxMSw3IEBACiAJCTlCQjkxRjUxMjY0
OEVBNEQwMEE1NjIxNyAvKiBDaGVja2VkUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoZWNrZWRQdHIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJDNzBGMDQxNzZDMzc5RDAwMTAxREVD
IC8qIEF0b21TdHJpbmdUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBdG9tU3RyaW5nVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
QkQ4RjQwQTE3NkMyQUQ4MDAwMkQ4NjUgLyogQXRvbVN0cmluZ1RhYmxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF0b21TdHJpbmdUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkYw
MDEzNDI2N0M0Q0NGMDBEQ0ZCM0YgLyogQ2hlY2tlZFJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGVj
a2VkUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRTE1MzM1MjY3MUYwMEYw
MEM3RDA5NiAvKiBXZWFrSGFzaE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrSGFzaE1hcC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QzY3QzU0MjU4OTM0OEUyODVCNDk2OTkgLyog
SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMUI4OUI4NzIyMUUwMDBGMDBFQjRDRUEgLyogU0RLVmFyaWFudC54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBTREtWYXJpYW50LnhjY29uZmlnOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTkxLDYgKzk5Miw3IEBACiAJCQkJQThBNDcyNkExNTFB
ODI1QTAwNDEyM0ZGIC8qIENoZWNrZWRBcml0aG1ldGljLmggKi8sCiAJCQkJQThBNDcyNkIxNTFB
ODI1QTAwNDEyM0ZGIC8qIENoZWNrZWRCb29sZWFuLmggKi8sCiAJCQkJOUJCOTFGNTEyNjQ4RUE0
RDAwQTU2MjE3IC8qIENoZWNrZWRQdHIuaCAqLywKKwkJCQk5QkYwMDEzNDI2N0M0Q0NGMDBEQ0ZC
M0YgLyogQ2hlY2tlZFJlZi5oICovLAogCQkJCTBGNjZCMjgwMURDOTdCQUIwMDRBMUQzRiAvKiBD
bG9ja1R5cGUuY3BwICovLAogCQkJCTBGNjZCMjgxMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5
cGUuaCAqLywKIAkJCQkwRkM0RURFNTE2OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQcmludGVyLmgg
Ki8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjc5MDUxKQorKysgU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAg
c2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIENoZWNrZWRBcml0aG1ldGljLmgKICAgICBDaGVj
a2VkQm9vbGVhbi5oCiAgICAgQ2hlY2tlZFB0ci5oCisgICAgQ2hlY2tlZFJlZi5oCiAgICAgQ2xv
Y2tUeXBlLmgKICAgICBDb21tYVByaW50ZXIuaAogICAgIENvbXBhY3RQb2ludGVyVHVwbGUuaApJ
bmRleDogU291cmNlL1dURi93dGYvQ2hlY2tlZFB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL0NoZWNrZWRQdHIuaAkocmV2aXNpb24gMjc5MDUxKQorKysgU291cmNlL1dURi93dGYv
Q2hlY2tlZFB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwyMSArMjUsMjAgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9SYXdQ
dHJUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZFJlZi5oPgogCiBuYW1lc3BhY2UgV1RG
IHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzID0gUmF3UHRyVHJh
aXRzPFQ+PgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzPgogY2xhc3Mg
Q2hlY2tlZFB0ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAKLSAg
ICBDaGVja2VkUHRyKCkKKyAgICBjb25zdGV4cHIgQ2hlY2tlZFB0cigpCiAgICAgICAgIDogbV9w
dHIobnVsbHB0cikKICAgICB7IH0KIAotICAgIENoZWNrZWRQdHIoc3RkOjpudWxscHRyX3QpCisg
ICAgY29uc3RleHByIENoZWNrZWRQdHIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIDogbV9wdHIo
bnVsbHB0cikKICAgICB7IH0KIApAQCAtNjUsMTUgKzY0LDMzIEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1lIE90aGVyUHRyVHJhaXRz
PiBDaGVja2VkUHRyKGNvbnN0IENoZWNrZWRQdHI8T3RoZXJUeXBlLCBPdGhlclB0clRyYWl0cz4m
IG90aGVyKQotICAgICAgICA6IG1fcHRyIHsgb3RoZXIubV9wdHIgfQotICAgIHsKLSAgICAgICAg
cmVmSWZOb3ROdWxsKCk7Ci0gICAgfQorICAgICAgICA6IENoZWNrZWRQdHIob3RoZXIubV9wdHIp
CisgICAgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1lIE90
aGVyUHRyVHJhaXRzPiBDaGVja2VkUHRyKENoZWNrZWRQdHI8T3RoZXJUeXBlLCBPdGhlclB0clRy
YWl0cz4mJiBvdGhlcikKICAgICAgICAgOiBtX3B0ciB7IFB0clRyYWl0czo6ZXhjaGFuZ2Uob3Ro
ZXIubV9wdHIsIG51bGxwdHIpIH0KICAgICB7IH0KIAorICAgIENoZWNrZWRQdHIoY29uc3QgQ2hl
Y2tlZFJlZjxULCBQdHJUcmFpdHM+JiBvdGhlcikKKyAgICAgICAgOiBDaGVja2VkUHRyKG90aGVy
Lm1fcHRyKQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJUeXBlLCB0eXBl
bmFtZSBPdGhlclB0clRyYWl0cz4gQ2hlY2tlZFB0cihjb25zdCBDaGVja2VkUmVmPE90aGVyVHlw
ZSwgT3RoZXJQdHJUcmFpdHM+JiBvdGhlcikKKyAgICAgICAgOiBDaGVja2VkUHRyKG90aGVyLm1f
cHRyKQorICAgIHsgfQorCisgICAgQ2hlY2tlZFB0cihjb25zdCBDaGVja2VkUmVmPFQsIFB0clRy
YWl0cz4mJiBvdGhlcikKKyAgICAgICAgOiBtX3B0ciB7IG90aGVyLnJlbGVhc2VQdHIoKSB9Cisg
ICAgeworICAgICAgICBBU1NFUlQobV9wdHIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE90aGVyVHlwZSwgdHlwZW5hbWUgT3RoZXJQdHJUcmFpdHM+IENoZWNrZWRQdHIoQ2hlY2tl
ZFJlZjxPdGhlclR5cGUsIE90aGVyUHRyVHJhaXRzPiYmIG90aGVyKQorICAgICAgICA6IG1fcHRy
IHsgb3RoZXIucmVsZWFzZVB0cigpIH0KKyAgICB7CisgICAgICAgIEFTU0VSVChtX3B0cik7Cisg
ICAgfQorCiAgICAgQ2hlY2tlZFB0cihIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQogICAgICAg
ICA6IG1fcHRyKFB0clRyYWl0czo6aGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpCiAgICAgeyB9CkBA
IC0xNjMsMTYgKzE4MCw2IEBAIHByaXZhdGU6CiAgICAgdHlwZW5hbWUgUHRyVHJhaXRzOjpTdG9y
YWdlVHlwZSBtX3B0cjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFB0clRy
YWl0cyA9IFJhd1B0clRyYWl0czxUPj4gaW5saW5lIENoZWNrZWRQdHI8VCwgUHRyVHJhaXRzPiBt
YWtlQ2hlY2tlZFB0cihUKiBwb2ludGVyKQotewotICAgIHJldHVybiBwb2ludGVyOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQdHJUcmFpdHMgPSBSYXdQdHJUcmFpdHM8VD4+
IGlubGluZSBDaGVja2VkUHRyPFQsIFB0clRyYWl0cz4gbWFrZUNoZWNrZWRQdHIoVCYgcmVmZXJl
bmNlKQotewotICAgIHJldHVybiAmcmVmZXJlbmNlOwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgUHRyVHJhaXRzPgogc3RydWN0IEdldFB0ckhlbHBlcjxDaGVja2VkUHRyPFQs
IFB0clRyYWl0cz4+IHsKICAgICB0eXBlZGVmIFQqIFB0clR5cGU7CkBAIC0xOTYsMTcgKzIwMyw2
IEBAIGlubGluZSBib29sIGlzKGNvbnN0IENoZWNrZWRQdHI8QXJnVHlwZSwKICAgICByZXR1cm4g
aXM8RXhwZWN0ZWRUeXBlPihzb3VyY2UuZ2V0KCkpOwogfQogCi1jbGFzcyBDYW5NYWtlQ2hlY2tl
ZFB0ciB7Ci1wdWJsaWM6Ci0gICAgfkNhbk1ha2VDaGVja2VkUHRyKCkgeyBSRUxFQVNFX0FTU0VS
VCghbV9jb3VudCk7IH0KLQotICAgIHVpbnQxNl90IHB0ckNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9jb3VudDsgfQotICAgIHZvaWQgaW5jcmVtZW50UHRyQ291bnQoKSB7ICsrbV9jb3VudDsgfQot
ICAgIHZvaWQgZGVjcmVtZW50UHRyQ291bnQoKSB7IEFTU0VSVChtX2NvdW50KTsgLS1tX2NvdW50
OyB9Ci1wcml2YXRlOgotICAgIHVpbnQxNl90IG1fY291bnQgeyAwIH07Ci19OwotCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFzaFRyYWl0czxDaGVja2VkUHRyPFA+PiA6IFNpbXBsZUNs
YXNzSGFzaFRyYWl0czxDaGVja2VkUHRyPFA+PiB7CiAgICAgc3RhdGljIFAqIGVtcHR5VmFsdWUo
KSB7IHJldHVybiBudWxscHRyOyB9CiAKQEAgLTIyOCw2ICsyMjQsNCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBQPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcg
V1RGOjpDaGVja2VkUHRyOwotdXNpbmcgV1RGOjpDYW5NYWtlQ2hlY2tlZFB0cjsKLXVzaW5nIFdU
Rjo6bWFrZUNoZWNrZWRQdHI7CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NoZWNrZWRSZWYuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DaGVja2VkUmVmLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dURi93dGYvQ2hlY2tlZFJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1Jhd1B0clRy
YWl0cy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgUHRyVHJhaXRzPgorY2xhc3MgQ2hlY2tlZFJlZiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisKKyAgICB+Q2hlY2tlZFJlZigpCisgICAgeworICAgICAgICB1bnBv
aXNvbigqdGhpcyk7CisgICAgICAgIGlmIChhdXRvKiBwdHIgPSBQdHJUcmFpdHM6OmV4Y2hhbmdl
KG1fcHRyLCBudWxscHRyKSkKKyAgICAgICAgICAgIFB0clRyYWl0czo6dW53cmFwKHB0ciktPmRl
Y3JlbWVudFB0ckNvdW50KCk7CisgICAgfQorCisgICAgQ2hlY2tlZFJlZihUJiBvYmplY3QpCisg
ICAgICAgIDogbV9wdHIoJm9iamVjdCkKKyAgICB7CisgICAgICAgIFB0clRyYWl0czo6dW53cmFw
KG1fcHRyKS0+aW5jcmVtZW50UHRyQ291bnQoKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IENoZWNrZWRSZWYoY29uc3QgQ2hlY2tlZFJlZiYgb3RoZXIpCisgICAgICAgIDogbV9wdHIgeyBv
dGhlci5tX3B0ciB9CisgICAgeworICAgICAgICBQdHJUcmFpdHM6OnVud3JhcChtX3B0ciktPmlu
Y3JlbWVudFB0ckNvdW50KCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJU
eXBlLCB0eXBlbmFtZSBPdGhlclB0clRyYWl0cz4KKyAgICBDaGVja2VkUmVmKGNvbnN0IENoZWNr
ZWRSZWY8T3RoZXJUeXBlLCBPdGhlclB0clRyYWl0cz4mIG90aGVyKQorICAgICAgICA6IG1fcHRy
IHsgb3RoZXIubV9wdHIgfQorICAgIHsKKyAgICAgICAgUHRyVHJhaXRzOjp1bndyYXAobV9wdHIp
LT5pbmNyZW1lbnRQdHJDb3VudCgpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgQ2hlY2tl
ZFJlZihDaGVja2VkUmVmJiYgb3RoZXIpCisgICAgICAgIDogbV9wdHIgeyBvdGhlci5yZWxlYXNl
UHRyKCkgfQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcHRyKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1lIE90aGVyUHRyVHJhaXRzPgorICAgIENo
ZWNrZWRSZWYoQ2hlY2tlZFJlZjxPdGhlclR5cGUsIE90aGVyUHRyVHJhaXRzPiYmIG90aGVyKQor
ICAgICAgICA6IG1fcHRyIHsgb3RoZXIucmVsZWFzZVB0cigpIH0KKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3B0cik7CisgICAgfQorCisgICAgQ2hlY2tlZFJlZihIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKSA6IG1fcHRyKFB0clRyYWl0czo6aGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpIHsgfQor
ICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBQdHJUcmFp
dHM6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKG1fcHRyKTsgfQorCisgICAgQ2hlY2tlZFJlZihI
YXNoVGFibGVFbXB0eVZhbHVlVHlwZSkgOiBtX3B0cihoYXNoVGFibGVFbXB0eVZhbHVlKCkpIHsg
fQorICAgIGJvb2wgaXNIYXNoVGFibGVFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIg
PT0gaGFzaFRhYmxlRW1wdHlWYWx1ZSgpOyB9CisgICAgc3RhdGljIFQqIGhhc2hUYWJsZUVtcHR5
VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICBjb25zdCBUKiBwdHJBbGxvd2luZ0hh
c2hUYWJsZUVtcHR5VmFsdWUoKSBjb25zdCB7IEFTU0VSVChtX3B0ciB8fCBpc0hhc2hUYWJsZUVt
cHR5VmFsdWUoKSk7IHJldHVybiBQdHJUcmFpdHM6OnVud3JhcChtX3B0cik7IH0KKyAgICBUKiBw
dHJBbGxvd2luZ0hhc2hUYWJsZUVtcHR5VmFsdWUoKSB7IEFTU0VSVChtX3B0ciB8fCBpc0hhc2hU
YWJsZUVtcHR5VmFsdWUoKSk7IHJldHVybiBQdHJUcmFpdHM6OnVud3JhcChtX3B0cik7IH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgY29uc3QgVCogcHRyKCkgY29uc3QgeyByZXR1cm4gUHRyVHJhaXRz
Ojp1bndyYXAobV9wdHIpOyB9CisgICAgQUxXQVlTX0lOTElORSBUKiBwdHIoKSB7IHJldHVybiBQ
dHJUcmFpdHM6OnVud3JhcChtX3B0cik7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IFQmIGdl
dCgpIGNvbnN0IHsgQVNTRVJUKHB0cigpKTsgcmV0dXJuICpwdHIoKTsgfQorICAgIEFMV0FZU19J
TkxJTkUgVCYgZ2V0KCkgeyBBU1NFUlQocHRyKCkpOyByZXR1cm4gKnB0cigpOyB9CisgICAgQUxX
QVlTX0lOTElORSBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gcHRyKCk7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIFQqIG9wZXJhdG9yLT4oKSB7IHJldHVybiBwdHIoKTsgfQorCisg
ICAgQUxXQVlTX0lOTElORSBvcGVyYXRvciBjb25zdCBUJigpIGNvbnN0IHsgcmV0dXJuIGdldCgp
OyB9CisgICAgQUxXQVlTX0lOTElORSBvcGVyYXRvciBUJigpIHsgcmV0dXJuIGdldCgpOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFnZXQoKTsg
fQorCisgICAgQ2hlY2tlZFJlZiYgb3BlcmF0b3I9KFQmIHJlZmVyZW5jZSkKKyAgICB7CisgICAg
ICAgIHVucG9pc29uKCp0aGlzKTsKKyAgICAgICAgQ2hlY2tlZFJlZiBjb3B5IHsgcmVmZXJlbmNl
IH07CisgICAgICAgIFB0clRyYWl0czo6c3dhcChtX3B0ciwgY29weS5tX3B0cik7CisgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBDaGVja2VkUmVmJiBvcGVyYXRvcj0oY29uc3Qg
Q2hlY2tlZFJlZiYgb3RoZXIpCisgICAgeworICAgICAgICB1bnBvaXNvbigqdGhpcyk7CisgICAg
ICAgIENoZWNrZWRSZWYgY29weSB7IG90aGVyIH07CisgICAgICAgIFB0clRyYWl0czo6c3dhcCht
X3B0ciwgY29weS5tX3B0cik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1lIE90aGVyUHRyVHJhaXRzPiBDaGVj
a2VkUmVmJiBvcGVyYXRvcj0oY29uc3QgQ2hlY2tlZFJlZjxPdGhlclR5cGUsIE90aGVyUHRyVHJh
aXRzPiYgb3RoZXIpCisgICAgeworICAgICAgICB1bnBvaXNvbigqdGhpcyk7CisgICAgICAgIENo
ZWNrZWRSZWYgY29weSB7IG90aGVyIH07CisgICAgICAgIFB0clRyYWl0czo6c3dhcChtX3B0ciwg
Y29weS5tX3B0cik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBDaGVja2Vk
UmVmJiBvcGVyYXRvcj0oQ2hlY2tlZFJlZiYmIG90aGVyKQorICAgIHsKKyAgICAgICAgdW5wb2lz
b24oKnRoaXMpOworICAgICAgICBDaGVja2VkUmVmIG1vdmVkIHsgV1RGTW92ZShvdGhlcikgfTsK
KyAgICAgICAgUHRyVHJhaXRzOjpzd2FwKG1fcHRyLCBtb3ZlZC5tX3B0cik7CisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUsIHR5
cGVuYW1lIE90aGVyUHRyVHJhaXRzPiBDaGVja2VkUmVmJiBvcGVyYXRvcj0oQ2hlY2tlZFJlZjxP
dGhlclR5cGUsIE90aGVyUHRyVHJhaXRzPiYmIG90aGVyKQorICAgIHsKKyAgICAgICAgdW5wb2lz
b24oKnRoaXMpOworICAgICAgICBDaGVja2VkUmVmIG1vdmVkIHsgV1RGTW92ZShvdGhlcikgfTsK
KyAgICAgICAgUHRyVHJhaXRzOjpzd2FwKG1fcHRyLCBtb3ZlZC5tX3B0cik7CisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Ro
ZXJUeXBlLCB0eXBlbmFtZSBPdGhlclB0clRyYWl0cz4gZnJpZW5kIGNsYXNzIENoZWNrZWRSZWY7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJUeXBlLCB0eXBlbmFtZSBPdGhlclB0clRyYWl0
cz4gZnJpZW5kIGNsYXNzIENoZWNrZWRQdHI7CisKKyAgICBUKiByZWxlYXNlUHRyKCkKKyAgICB7
CisgICAgICAgIFQqIHB0ciA9IFB0clRyYWl0czo6ZXhjaGFuZ2UobV9wdHIsIG51bGxwdHIpOwor
ICAgICAgICBwb2lzb24oKnRoaXMpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworI2lm
IEFTQU5fRU5BQkxFRAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPYmplY3RUeXBlPgorICAgIHZv
aWQgcG9pc29uKE9iamVjdFR5cGUmIG9iamVjdCkKKyAgICB7CisgICAgICAgIF9fYXNhbl9wb2lz
b25fbWVtb3J5X3JlZ2lvbigmb2JqZWN0LCBzaXplb2YoT2JqZWN0VHlwZSkpOworICAgIH0KKwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPYmplY3RUeXBlPgorICAgIHZvaWQgdW5wb2lzb24oT2Jq
ZWN0VHlwZSYgb2JqZWN0KQorICAgIHsKKyAgICAgICAgaWYgKF9fYXNhbl9hZGRyZXNzX2lzX3Bv
aXNvbmVkKCZvYmplY3QpKQorICAgICAgICAgICAgX19hc2FuX3VucG9pc29uX21lbW9yeV9yZWdp
b24oJm9iamVjdCwgc2l6ZW9mKE9iamVjdFR5cGUpKTsKKyAgICB9CisjZWxzZQorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBPYmplY3RUeXBlPiB2b2lkIHBvaXNvbihPYmplY3RUeXBlJikgeyB9Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9iamVjdFR5cGU+IHZvaWQgdW5wb2lzb24oT2JqZWN0VHlw
ZSYpIHsgfQorI2VuZGlmCisKKyAgICB0eXBlbmFtZSBQdHJUcmFpdHM6OlN0b3JhZ2VUeXBlIG1f
cHRyOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzID0gUmF3
UHRyVHJhaXRzPFQ+PiBpbmxpbmUgQ2hlY2tlZFJlZjxULCBQdHJUcmFpdHM+IG1ha2VDaGVja2Vk
UmVmKFQmIHJlZmVyZW5jZSkKK3sKKyAgICByZXR1cm4gcmVmZXJlbmNlOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzPgorc3RydWN0IEdldFB0ckhlbHBlcjxD
aGVja2VkUmVmPFQsIFB0clRyYWl0cz4+IHsKKyAgICB0eXBlZGVmIFQqIFB0clR5cGU7CisgICAg
c3RhdGljIFQqIGdldFB0cihjb25zdCBDaGVja2VkUmVmPFQsIFB0clRyYWl0cz4mIHApIHsgcmV0
dXJuIGNvbnN0X2Nhc3Q8VCo+KHAucHRyKCkpOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4KK3N0cnVjdCBJc1NtYXJ0UHRyPENoZWNrZWRSZWY8VCwgVT4+IHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSB0cnVlOworfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlLCB0eXBlbmFtZSBBcmdQdHJUcmFp
dHM+CitpbmxpbmUgYm9vbCBpcyhDaGVja2VkUmVmPEFyZ1R5cGUsIEFyZ1B0clRyYWl0cz4mIHNv
dXJjZSkKK3sKKyAgICByZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3VyY2UuZ2V0KCkpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGUsIHR5cGVu
YW1lIEFyZ1B0clRyYWl0cz4KK2lubGluZSBib29sIGlzKGNvbnN0IENoZWNrZWRSZWY8QXJnVHlw
ZSwgQXJnUHRyVHJhaXRzPiYgc291cmNlKQoreworICAgIHJldHVybiBpczxFeHBlY3RlZFR5cGU+
KHNvdXJjZS5nZXQoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBDaGVja2Vk
UmVmSGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxDaGVja2VkUmVmPFA+PiB7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOworICAgIHN0
YXRpYyBDaGVja2VkUmVmPFA+IGVtcHR5VmFsdWUoKSB7IHJldHVybiBIYXNoVGFibGVFbXB0eVZh
bHVlOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWU+CisgICAgc3RhdGljIHZvaWQgY29uc3Ry
dWN0RW1wdHlWYWx1ZShDaGVja2VkUmVmPFA+JiBzbG90KQorICAgIHsKKyAgICAgICAgbmV3IChO
b3ROdWxsLCBzdGQ6OmFkZHJlc3NvZihzbG90KSkgQ2hlY2tlZFJlZjxQPihIYXNoVGFibGVFbXB0
eVZhbHVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzSXNFbXB0eVZh
bHVlRnVuY3Rpb24gPSB0cnVlOworICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBD
aGVja2VkUmVmPFA+JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuaXNIYXNoVGFibGVFbXB0eVZhbHVl
KCk7IH0KKworICAgIHVzaW5nIFBlZWtUeXBlID0gUCo7CisgICAgc3RhdGljIFBlZWtUeXBlIHBl
ZWsoY29uc3QgQ2hlY2tlZFJlZjxQPiYgdmFsdWUpIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UGVla1R5
cGU+KHZhbHVlLnB0ckFsbG93aW5nSGFzaFRhYmxlRW1wdHlWYWx1ZSgpKTsgfQorICAgIHN0YXRp
YyBQZWVrVHlwZSBwZWVrKFAqIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQorCisgICAgdXNpbmcg
VGFrZVR5cGUgPSBDaGVja2VkUHRyPFA+OworICAgIHN0YXRpYyBUYWtlVHlwZSB0YWtlKENoZWNr
ZWRSZWY8UD4mJiB2YWx1ZSkgeyByZXR1cm4gaXNFbXB0eVZhbHVlKHZhbHVlKSA/IG51bGxwdHIg
OiBDaGVja2VkUHRyPFA+KFdURk1vdmUodmFsdWUpKTsgfQorfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8Q2hlY2tlZFJlZjxQPj4gOiBDaGVja2VkUmVmSGFzaFRy
YWl0czxQPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBQdHJIYXNoPENoZWNr
ZWRSZWY8UD4+IDogUHRySGFzaEJhc2U8Q2hlY2tlZFJlZjxQPiwgSXNTbWFydFB0cjxDaGVja2Vk
UmVmPFA+Pjo6dmFsdWU+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFA+IHN0
cnVjdCBEZWZhdWx0SGFzaDxDaGVja2VkUmVmPFA+PiA6IFB0ckhhc2g8Q2hlY2tlZFJlZjxQPj4g
eyB9OworCitjbGFzcyBDYW5NYWtlQ2hlY2tlZFB0ciB7CitwdWJsaWM6CisgICAgfkNhbk1ha2VD
aGVja2VkUHRyKCkgeyBSRUxFQVNFX0FTU0VSVCghbV9jb3VudCk7IH0KKworICAgIHVpbnQxNl90
IHB0ckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsgfQorICAgIHZvaWQgaW5jcmVtZW50
UHRyQ291bnQoKSB7ICsrbV9jb3VudDsgfQorICAgIHZvaWQgZGVjcmVtZW50UHRyQ291bnQoKSB7
IEFTU0VSVChtX2NvdW50KTsgLS1tX2NvdW50OyB9Citwcml2YXRlOgorICAgIHVpbnQxNl90IG1f
Y291bnQgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDYW5N
YWtlQ2hlY2tlZFB0cjsKK3VzaW5nIFdURjo6Q2hlY2tlZFJlZjsKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL0ZvcndhcmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgJKHJl
dmlzaW9uIDI3OTA1MSkKKysrIFNvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAkod29ya2luZyBjb3B5
KQpAQCAtNzIsNiArNzIsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgT3B0aW9uU2V0Owog
dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFBhY2tlZDsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCA9IGFsaWdub2YoVCk+IGNsYXNzIFBhY2tlZEFsaWduZWRQdHI7CiB0ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IFJhd1B0clRyYWl0czsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
ID0gUmF3UHRyVHJhaXRzPFQ+PiBjbGFzcyBDaGVja2VkUmVmOwordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBSYXdQdHJUcmFpdHM8VD4+IGNsYXNzIENoZWNrZWRQdHI7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IFJhd1B0clRyYWl0czxUPj4gY2xhc3MgUmVmOwogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBSYXdQdHJUcmFpdHM8VD4sIHR5cGVuYW1lID0g
RGVmYXVsdFJlZkRlcmVmVHJhaXRzPFQ+PiBjbGFzcyBSZWZQdHI7CiB0ZW1wbGF0ZTx0eXBlbmFt
ZT4gY2xhc3MgUmV0YWluUHRyOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5MDUxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDYtMjAgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIENoZWNrZWRSZWYKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzE2NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHNvbWUgdW5pdCB0ZXN0
cyBmb3IgQ2hlY2tlZFJlZiBhbmQgdXBkYXRlZCB0aGUgdW5pdCB0ZXN0cworICAgICAgICBmb3Ig
Q2hlY2tlZFB0ciBwZXIgdGhlIHJlbW92YWwgb2YgbWFrZUNoZWNrZWRQdHIuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9DaGVja2VkUHRyLmNwcDoKKyAgICAg
ICAgKFdURl9DaGVja2VkUHRyLkNoZWNrZWRSZWYpOiBBZGRlZAorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRSZWYuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJL
aXRBUEkuLkNoZWNrZWRPYmplY3QpOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEkuLkRl
cml2ZWRDaGVja2VkT2JqZWN0KTogQWRkZWQuCisgICAgICAgIChXVEZfQ2hlY2tlZFJlZi5CYXNp
Yyk6IEFkZGVkLgorICAgICAgICAoV1RGX0NoZWNrZWRSZWYuRGVyaXZlZENsYXNzKTogQWRkZWQu
CisgICAgICAgIChXVEZfQ2hlY2tlZFJlZi5IYXNoU2V0KTogQWRkZWQuCisKIDIwMjEtMDYtMTkg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJldmVydGluZyByMjc4Njk5LgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI3OTA1MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05MTgsNiArOTE4LDcgQEAK
IAkJOUJENkQzQTcxRjdCMjFEQzAwQkQ0OTYyIC8qIHBhc3RlLWltYWdlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJENkQzQTYxRjdC
MjFDQzAwQkQ0OTYyIC8qIHBhc3RlLWltYWdlLmh0bWwgKi87IH07CiAJCTlCRENDRDg3MUY3RDBC
MDcwMDAwOUExOCAvKiBQYXN0ZUltYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUJEQ0NEODUxRjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2Uu
bW0gKi87IH07CiAJCTlCREQ5NTU4MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkREOTU1NjFGODM2
ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tICovOyB9OworCQk5QkYwMDEzMzI2N0M0QzU5MDBE
Q0ZCM0YgLyogQ2hlY2tlZFJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QkYwMDEzMjI2N0M0QzU5MDBEQ0ZCM0YgLyogQ2hlY2tlZFJlZi5jcHAg
Ki87IH07CiAJCTlCRjM1NkNEMjAyRDQ1ODUwMEY3MTE2MCAvKiBtc28tbGlzdC5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRjM1NkND
MjAyRDQ0RjIwMEY3MTE2MCAvKiBtc28tbGlzdC5odG1sICovOyB9OwogCQk5QzY0REMzMjFENzYx
OThBMDA0QjU5OEUgLyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlDNjREQzMxMUQ3NjE5OEEwMDRCNTk4
RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwICovOyB9OwogCQlBMTBGMDQ3RTFFM0FE
MjlDMDBDOTVFMTkgLyogTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMEYwNDdDMUUzQUQyOUMwMEM5NUUxOSAvKiBO
U0ZpbGVNYW5hZ2VyRXh0cmFzLm1tICovOyB9OwpAQCAtMjYzNiw2ICsyNjM3LDcgQEAKIAkJOUJE
NkQzQTYxRjdCMjFDQzAwQkQ0OTYyIC8qIHBhc3RlLWltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicGFz
dGUtaW1hZ2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRENDRDg1MUY3
RDBCMDcwMDAwOUExOCAvKiBQYXN0ZUltYWdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFz
dGVJbWFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJERDk1NTYxRjgzNjgz
NjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3RlUlRG
RC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUJGMDAxMzIyNjdDNEM1OTAwRENG
QjNGIC8qIENoZWNrZWRSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2hlY2tlZFJlZi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRjM1NkNDMjAyRDQ0RjIwMEY3MTE2MCAv
KiBtc28tbGlzdC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm1zby1saXN0Lmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5QzY0REMzMTFENzYxOThBMDA0QjU5OEUgLyogWW91VHViZVBsdWdp
blJlcGxhY2VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFlv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExMEYwNDdDMUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTlNGaWxlTWFuYWdlckV4dHJhcy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0MjYsNiArNDQyOCw3IEBACiAJCQkJ
MDQ1MUE1QTYyMzVFNDM4RTAwOURGOTQ1IC8qIEJ1bXBQb2ludGVyQWxsb2NhdG9yLmNwcCAqLywK
IAkJCQlBN0E5NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRp
b25zLmNwcCAqLywKIAkJCQk5QkJDQTRERTI2NUFDQTVCMDBERkU3MjMgLyogQ2hlY2tlZFB0ci5j
cHAgKi8sCisJCQkJOUJGMDAxMzIyNjdDNEM1OTAwRENGQjNGIC8qIENoZWNrZWRSZWYuY3BwICov
LAogCQkJCUUzMDJCREE5MjQwNEI5MjMwMDg2NTI3NyAvKiBDb21wYWN0UmVmUHRyVHVwbGUuY3Bw
ICovLAogCQkJCTlCMEMwNTE4MjRGREZCNzAwMEYyRkUzMSAvKiBDb21wYWN0VW5pcXVlUHRyVHVw
bGUuY3BwICovLAogCQkJCTBGMzBDQjVCMUZDRTE3OTIwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRy
SGFzaFNldC5jcHAgKi8sCkBAIC01MTkyLDYgKzUxOTUsNyBAQAogCQkJCTA0REIyMzk2MjM1RTQz
RUMwMDMyOEYxNyAvKiBCdW1wUG9pbnRlckFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3QzgzREVBMDFEMEE1OTBDMDBGRUJDRjMgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlCQkNBNERGMjY1QUNBNUIwMERGRTcyMyAvKiBDaGVj
a2VkUHRyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlCRjAwMTMzMjY3QzRDNTkwMERDRkIzRiAv
KiBDaGVja2VkUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMDJCREFBMjQwNEI5MjQwMDg2
NTI3NyAvKiBDb21wYWN0UmVmUHRyVHVwbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUIwQzA1
MTkyNEZERkI3RDAwRjJGRTMxIC8qIENvbXBhY3RVbmlxdWVQdHJUdXBsZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjMwQ0I1QzFGQ0UxNzk2MDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hT
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9DaGVja2VkUHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9DaGVja2VkUHRyLmNwcAkocmV2aXNpb24gMjc5MDUxKQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQ2hlY2tlZFB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUx
LDcgQEAgVEVTVChXVEZfQ2hlY2tlZFB0ciwgQmFzaWMpCiAgICAgICAgIENoZWNrZWRPYmplY3Qg
Y2hlY2tlZE9iamVjdDsKICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQo
KSwgMCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gcHRyID0gbWFrZUNoZWNrZWRQdHIo
Y2hlY2tlZE9iamVjdCk7CisgICAgICAgICAgICBDaGVja2VkUHRyIHB0ciB7ICZjaGVja2VkT2Jq
ZWN0IH07CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRSghIXB0cik7CiAgICAgICAgICAgICBFWFBF
Q1RfRVEocHRyLmdldCgpLCAmY2hlY2tlZE9iamVjdCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEo
cHRyLT5zb21lRnVuY3Rpb24oKSwgLTcpOwpAQCAtNjQsNyArNjQsNyBAQCBURVNUKFdURl9DaGVj
a2VkUHRyLCBCYXNpYykKICAgICAgICAgQ2hlY2tlZE9iamVjdCBjaGVja2VkT2JqZWN0OwogICAg
ICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKIAotICAgICAgICBh
dXRvIHB0ciA9IG1ha2VDaGVja2VkUHRyKGNoZWNrZWRPYmplY3QpOworICAgICAgICBDaGVja2Vk
UHRyIHB0ciA9IHsgJmNoZWNrZWRPYmplY3QgfTsKICAgICAgICAgRVhQRUNUX1RSVUUoISFwdHIp
OwogICAgICAgICBFWFBFQ1RfRVEocHRyLmdldCgpLCAmY2hlY2tlZE9iamVjdCk7CiAgICAgICAg
IEVYUEVDVF9FUShwdHItPnNvbWVGdW5jdGlvbigpLCAtNyk7CkBAIC04MCwxOSArODAsMTkgQEAg
VEVTVChXVEZfQ2hlY2tlZFB0ciwgQmFzaWMpCiAgICAgICAgIENoZWNrZWRPYmplY3QgY2hlY2tl
ZE9iamVjdDsKICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7
CiAKLSAgICAgICAgYXV0byBwdHIxID0gbWFrZUNoZWNrZWRQdHIoY2hlY2tlZE9iamVjdCk7Cisg
ICAgICAgIENoZWNrZWRQdHIgcHRyMSB7ICZjaGVja2VkT2JqZWN0IH07CiAgICAgICAgIEVYUEVD
VF9UUlVFKCEhcHRyMSk7CiAgICAgICAgIEVYUEVDVF9FUShwdHIxLmdldCgpLCAmY2hlY2tlZE9i
amVjdCk7CiAgICAgICAgIEVYUEVDVF9FUShwdHIxLT5zb21lRnVuY3Rpb24oKSwgLTcpOwogICAg
ICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKIAotICAgICAgICBj
b25zdCBDaGVja2VkUHRyPENoZWNrZWRPYmplY3Q+IHB0cjIgPSBtYWtlQ2hlY2tlZFB0cigmY2hl
Y2tlZE9iamVjdCk7CisgICAgICAgIGNvbnN0IENoZWNrZWRQdHIgcHRyMiB7ICZjaGVja2VkT2Jq
ZWN0IH07CiAgICAgICAgIEVYUEVDVF9UUlVFKCEhcHRyMik7CiAgICAgICAgIEVYUEVDVF9FUShw
dHIyLmdldCgpLCAmY2hlY2tlZE9iamVjdCk7CiAgICAgICAgIEVYUEVDVF9FUShwdHIyLT5zb21l
RnVuY3Rpb24oKSwgLTcpOwogICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3Vu
dCgpLCAyKTsKIAotICAgICAgICBDaGVja2VkUHRyPENoZWNrZWRPYmplY3Q+IHB0cjMgPSBwdHIy
OworICAgICAgICBDaGVja2VkUHRyIHB0cjMgPSBwdHIyOwogICAgICAgICBFWFBFQ1RfVFJVRSgh
IXB0cjMpOwogICAgICAgICBFWFBFQ1RfRVEocHRyMy5nZXQoKSwgJmNoZWNrZWRPYmplY3QpOwog
ICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAzKTsKQEAgLTExMSw2
ICsxMTEsNzkgQEAgVEVTVChXVEZfQ2hlY2tlZFB0ciwgQmFzaWMpCiAgICAgfQogfQogCitURVNU
KFdURl9DaGVja2VkUHRyLCBDaGVja2VkUmVmKQoreworICAgIHsKKyAgICAgICAgQ2hlY2tlZE9i
amVjdCBjaGVja2VkT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJD
b3VudCgpLCAwKTsKKyAgICAgICAgeworICAgICAgICAgICAgQ2hlY2tlZFJlZiByZWYgeyBjaGVj
a2VkT2JqZWN0IH07CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCAmY2hlY2tlZE9i
amVjdCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLT5zb21lRnVuY3Rpb24oKSwgLTcpOwor
ICAgICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMSk7CisgICAg
ICAgICAgICBDaGVja2VkUHRyIHB0ciB7IHJlZiB9OworICAgICAgICAgICAgRVhQRUNUX0VRKHJl
Zi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi0+c29t
ZUZ1bmN0aW9uKCksIC03KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShwdHIuZ2V0KCksICZjaGVj
a2VkT2JqZWN0KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShwdHItPnNvbWVGdW5jdGlvbigpLCAt
Nyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAyKTsK
KyAgICAgICAgfQorICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAw
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIERlcml2ZWRDaGVja2VkT2JqZWN0IGNoZWNrZWRP
YmplY3Q7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDApOwor
ICAgICAgICB7CisgICAgICAgICAgICBDaGVja2VkUmVmPERlcml2ZWRDaGVja2VkT2JqZWN0PiBy
ZWYgeyBjaGVja2VkT2JqZWN0IH07CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCAm
Y2hlY2tlZE9iamVjdCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLT5zb21lRnVuY3Rpb24o
KSwgLTcpOworICAgICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwg
MSk7CisgICAgICAgICAgICBDaGVja2VkUHRyPENoZWNrZWRPYmplY3Q+IHB0ciB7IHJlZiB9Owor
ICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAg
ICAgICAgRVhQRUNUX0VRKHJlZi0+c29tZUZ1bmN0aW9uKCksIC03KTsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShwdHIuZ2V0KCksICZjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgICAgIEVYUEVDVF9F
UShwdHItPnNvbWVGdW5jdGlvbigpLCAtNyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoY2hlY2tl
ZE9iamVjdC5wdHJDb3VudCgpLCAyKTsKKyAgICAgICAgfQorICAgICAgICBFWFBFQ1RfRVEoY2hl
Y2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENoZWNr
ZWRPYmplY3QgY2hlY2tlZE9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3Qu
cHRyQ291bnQoKSwgMCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIENoZWNrZWRSZWYgcmVmIHsg
Y2hlY2tlZE9iamVjdCB9OworICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi5wdHIoKSwgJmNoZWNr
ZWRPYmplY3QpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi0+c29tZUZ1bmN0aW9uKCksIC03
KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDEpOwor
ICAgICAgICAgICAgQ2hlY2tlZFB0ciBwdHIgeyBXVEZNb3ZlKHJlZikgfTsKKyAgICAgICAgICAg
IEVYUEVDVF9FUShyZWYucHRyKCksIG51bGxwdHIpOworICAgICAgICAgICAgRVhQRUNUX0VRKHB0
ci5nZXQoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICAgICAgRVhQRUNUX0VRKHB0ci0+c29t
ZUZ1bmN0aW9uKCksIC03KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0
ckNvdW50KCksIDEpOworICAgICAgICB9CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0
LnB0ckNvdW50KCksIDApOworICAgIH0KKworICAgIHsKKyAgICAgICAgRGVyaXZlZENoZWNrZWRP
YmplY3QgY2hlY2tlZE9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRy
Q291bnQoKSwgMCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIENoZWNrZWRSZWY8RGVyaXZlZENo
ZWNrZWRPYmplY3Q+IHJlZiB7IGNoZWNrZWRPYmplY3QgfTsKKyAgICAgICAgICAgIEVYUEVDVF9F
UShyZWYucHRyKCksICZjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZWYt
PnNvbWVGdW5jdGlvbigpLCAtNyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVj
dC5wdHJDb3VudCgpLCAxKTsKKyAgICAgICAgICAgIENoZWNrZWRQdHI8Q2hlY2tlZE9iamVjdD4g
cHRyIHsgV1RGTW92ZShyZWYpIH07CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCBu
dWxscHRyKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShwdHIuZ2V0KCksICZjaGVja2VkT2JqZWN0
KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShwdHItPnNvbWVGdW5jdGlvbigpLCAtNyk7CisgICAg
ICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKKyAgICAgICAg
fQorICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKKyAgICB9
Cit9CisKIFRFU1QoV1RGX0NoZWNrZWRQdHIsIERlcml2ZWRDbGFzcykKIHsKICAgICB7CkBAIC0x
MjIsNyArMTk1LDcgQEAgVEVTVChXVEZfQ2hlY2tlZFB0ciwgRGVyaXZlZENsYXNzKQogICAgICAg
ICBEZXJpdmVkQ2hlY2tlZE9iamVjdCBjaGVja2VkT2JqZWN0OwogICAgICAgICBFWFBFQ1RfRVEo
Y2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKICAgICAgICAgewotICAgICAgICAgICAgYXV0
byBwdHIgPSBtYWtlQ2hlY2tlZFB0cihjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgICAgIENoZWNr
ZWRQdHIgcHRyID0geyAmY2hlY2tlZE9iamVjdCB9OwogICAgICAgICAgICAgRVhQRUNUX1RSVUUo
ISFwdHIpOwogICAgICAgICAgICAgRVhQRUNUX0VRKHB0ci5nZXQoKSwgJmNoZWNrZWRPYmplY3Qp
OwogICAgICAgICAgICAgRVhQRUNUX0VRKHB0ci0+c29tZUZ1bmN0aW9uKCksIC03KTsKQEAgLTEz
NSw3ICsyMDgsNyBAQCBURVNUKFdURl9DaGVja2VkUHRyLCBEZXJpdmVkQ2xhc3MpCiAgICAgICAg
IENoZWNrZWRPYmplY3QgY2hlY2tlZE9iamVjdDsKICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRP
YmplY3QucHRyQ291bnQoKSwgMCk7CiAKLSAgICAgICAgQ2hlY2tlZFB0cjxDaGVja2VkT2JqZWN0
PiBwdHIgPSBtYWtlQ2hlY2tlZFB0cihjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgQ2hlY2tlZFB0
cjxDaGVja2VkT2JqZWN0PiBwdHIgeyAmY2hlY2tlZE9iamVjdCB9OwogICAgICAgICBFWFBFQ1Rf
VFJVRSghIXB0cik7CiAgICAgICAgIEVYUEVDVF9FUShwdHIuZ2V0KCksICZjaGVja2VkT2JqZWN0
KTsKICAgICAgICAgRVhQRUNUX0VRKHB0ci0+c29tZUZ1bmN0aW9uKCksIC03KTsKQEAgLTE1MSw3
ICsyMjQsNyBAQCBURVNUKFdURl9DaGVja2VkUHRyLCBEZXJpdmVkQ2xhc3MpCiAgICAgICAgIERl
cml2ZWRDaGVja2VkT2JqZWN0IGNoZWNrZWRPYmplY3Q7CiAgICAgICAgIEVYUEVDVF9FUShjaGVj
a2VkT2JqZWN0LnB0ckNvdW50KCksIDApOwogCi0gICAgICAgIENoZWNrZWRQdHI8RGVyaXZlZENo
ZWNrZWRPYmplY3Q+IHB0cjEgPSBtYWtlQ2hlY2tlZFB0cihjaGVja2VkT2JqZWN0KTsKKyAgICAg
ICAgQ2hlY2tlZFB0cjxEZXJpdmVkQ2hlY2tlZE9iamVjdD4gcHRyMSB7ICZjaGVja2VkT2JqZWN0
IH07CiAgICAgICAgIEVYUEVDVF9UUlVFKCEhcHRyMSk7CiAgICAgICAgIEVYUEVDVF9FUShwdHIx
LmdldCgpLCAmY2hlY2tlZE9iamVjdCk7CiAgICAgICAgIEVYUEVDVF9FUShwdHIxLT5zb21lRnVu
Y3Rpb24oKSwgLTcpOwpAQCAtMTg5LDcgKzI2Miw3IEBAIFRFU1QoV1RGX0NoZWNrZWRQdHIsIEhh
c2hTZXQpCiAgICAgICAgIENoZWNrZWRPYmplY3QgY2hlY2tlZE9iamVjdDsKICAgICAgICAgRVhQ
RUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CiAKLSAgICAgICAgYXV0byBwdHIg
PSBtYWtlQ2hlY2tlZFB0cihjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgQ2hlY2tlZFB0ciBwdHIg
PSB7ICZjaGVja2VkT2JqZWN0IH07CiAgICAgICAgIEVYUEVDVF9FUShwdHIuZ2V0KCksICZjaGVj
a2VkT2JqZWN0KTsKICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwg
MSk7CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRSZWYuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRSZWYu
Y3BwCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NoZWNr
ZWRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8
d3RmL0NoZWNrZWRSZWYuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKwordXNpbmcgV1RGOjpDaGVja2VkUmVmOwordXNpbmcgV1RGOjptYWtlQ2hl
Y2tlZFJlZjsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCituYW1lc3BhY2UgeworCitj
bGFzcyBDaGVja2VkT2JqZWN0IDogcHVibGljIENhbk1ha2VDaGVja2VkUHRyIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShDaGVja2VkT2JqZWN0KTsKK3B1YmxpYzoKKyAgICBDaGVja2VkT2Jq
ZWN0KGludCB2YWx1ZSA9IC03KQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgeyB9Cisg
ICAgCisgICAgfkNoZWNrZWRPYmplY3QoKSA9IGRlZmF1bHQ7CisKKyAgICBpbnQgc29tZUZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorCitwcml2YXRlOgorICAgIGludCBtX3Zh
bHVlOworfTsKKworY2xhc3MgRGVyaXZlZENoZWNrZWRPYmplY3QgOiBwdWJsaWMgQ2hlY2tlZE9i
amVjdCB7CitwdWJsaWM6CisgICAgRGVyaXZlZENoZWNrZWRPYmplY3QoaW50IHZhbHVlID0gLTEx
KQorICAgICAgICA6IENoZWNrZWRPYmplY3QodmFsdWUpCisgICAgeyB9Cit9OworCitURVNUKFdU
Rl9DaGVja2VkUmVmLCBCYXNpYykKK3sKKyAgICB7CisgICAgICAgIENoZWNrZWRPYmplY3QgY2hl
Y2tlZE9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwg
MCk7CisgICAgfQorCisgICAgeworICAgICAgICBDaGVja2VkT2JqZWN0IGNoZWNrZWRPYmplY3Q7
CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDApOworICAgICAg
ICB7CisgICAgICAgICAgICBDaGVja2VkUmVmIHJlZiA9IGNoZWNrZWRPYmplY3Q7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEoJnJlZi5nZXQoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICAgICAg
RVhQRUNUX0VRKHJlZi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICAgICAgRVhQRUNU
X0VRKHJlZi0+c29tZUZ1bmN0aW9uKCksIC03KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxDaGVja2VkT2JqZWN0Jj4ocmVmKS5zb21lRnVuY3Rpb24oKSwgLTcpOworICAgICAg
ICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMSk7CisgICAgICAgIH0K
KyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CisgICAgfQor
CisgICAgeworICAgICAgICBDaGVja2VkT2JqZWN0IGNoZWNrZWRPYmplY3Q7CisgICAgICAgIENo
ZWNrZWRPYmplY3QgYW5vdGhlck9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmpl
Y3QucHRyQ291bnQoKSwgMCk7CisKKyAgICAgICAgQ2hlY2tlZFJlZiByZWYgPSBjaGVja2VkT2Jq
ZWN0OworICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAg
ICAgIEVYUEVDVF9FUShyZWYtPnNvbWVGdW5jdGlvbigpLCAtNyk7CisgICAgICAgIEVYUEVDVF9F
UShzdGF0aWNfY2FzdDxDaGVja2VkT2JqZWN0Jj4ocmVmKS5zb21lRnVuY3Rpb24oKSwgLTcpOwor
ICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKKworICAgICAg
ICByZWYgPSBhbm90aGVyT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCAmYW5v
dGhlck9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCks
IDApOworICAgICAgICBFWFBFQ1RfRVEoYW5vdGhlck9iamVjdC5wdHJDb3VudCgpLCAxKTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIENoZWNrZWRPYmplY3QgY2hlY2tlZE9iamVjdDsKKyAgICAg
ICAgQ2hlY2tlZE9iamVjdCBhbm90aGVyT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tl
ZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKKworICAgICAgICBDaGVja2VkUmVmIHJlZjEgPSBjaGVj
a2VkT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEocmVmMS5wdHIoKSwgJmNoZWNrZWRPYmplY3Qp
OworICAgICAgICBFWFBFQ1RfRVEocmVmMS0+c29tZUZ1bmN0aW9uKCksIC03KTsKKyAgICAgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PENoZWNrZWRPYmplY3QmPihyZWYxKS5zb21lRnVuY3Rpb24o
KSwgLTcpOworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsK
KworICAgICAgICBjb25zdCBDaGVja2VkUmVmIHJlZjIgPSBjaGVja2VkT2JqZWN0OworICAgICAg
ICBFWFBFQ1RfRVEocmVmMi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICBFWFBFQ1Rf
RVEocmVmMi5nZXQoKS5zb21lRnVuY3Rpb24oKSwgLTcpOworICAgICAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8Y29uc3QgQ2hlY2tlZE9iamVjdCY+KHJlZjIpLnNvbWVGdW5jdGlvbigpLCAtNyk7
CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDIpOworCisgICAg
ICAgIENoZWNrZWRSZWYgcmVmMyA9IHJlZjI7CisgICAgICAgIEVYUEVDVF9FUShyZWYzLnB0cigp
LCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNv
dW50KCksIDMpOworCisgICAgICAgIHJlZjEgPSBhbm90aGVyT2JqZWN0OworICAgICAgICBFWFBF
Q1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAyKTsKKyAgICAgICAgRVhQRUNUX0VRKGFu
b3RoZXJPYmplY3QucHRyQ291bnQoKSwgMSk7CisgICAgICAgIEVYUEVDVF9FUShyZWYxLnB0cigp
LCAmYW5vdGhlck9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShyZWYyLnB0cigpLCAmY2hlY2tl
ZE9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShyZWYzLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7
CisKKyAgICAgICAgcmVmMSA9IFdURk1vdmUocmVmMyk7CisgICAgICAgIEVYUEVDVF9FUShjaGVj
a2VkT2JqZWN0LnB0ckNvdW50KCksIDIpOworICAgICAgICBFWFBFQ1RfRVEoYW5vdGhlck9iamVj
dC5wdHJDb3VudCgpLCAwKTsKKyAgICAgICAgRVhQRUNUX0VRKHJlZjEucHRyKCksICZjaGVja2Vk
T2JqZWN0KTsKKyAgICAgICAgRVhQRUNUX0VRKHJlZjIucHRyKCksICZjaGVja2VkT2JqZWN0KTsK
KyAgICB9Cit9CisKK1RFU1QoV1RGX0NoZWNrZWRSZWYsIERlcml2ZWRDbGFzcykKK3sKKyAgICB7
CisgICAgICAgIERlcml2ZWRDaGVja2VkT2JqZWN0IGNoZWNrZWRPYmplY3Q7CisgICAgICAgIEVY
UEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDApOworICAgICAgICB7CisgICAgICAg
ICAgICBDaGVja2VkUmVmIHJlZiA9IGNoZWNrZWRPYmplY3Q7CisgICAgICAgICAgICBFWFBFQ1Rf
RVEoJnJlZi5nZXQoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJl
Zi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19j
YXN0PERlcml2ZWRDaGVja2VkT2JqZWN0Jj4ocmVmKS5zb21lRnVuY3Rpb24oKSwgLTExKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShyZWYtPnNvbWVGdW5jdGlvbigpLCAtMTEpOworICAgICAgICAg
ICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMSk7CisgICAgICAgIH0KKyAg
ICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CisgICAgfQorCisg
ICAgeworICAgICAgICBEZXJpdmVkQ2hlY2tlZE9iamVjdCBjaGVja2VkT2JqZWN0OworICAgICAg
ICBEZXJpdmVkQ2hlY2tlZE9iamVjdCBhbm90aGVyT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEo
Y2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKKyAgICAgICAgRVhQRUNUX0VRKGFub3RoZXJP
YmplY3QucHRyQ291bnQoKSwgMCk7CisKKyAgICAgICAgQ2hlY2tlZFJlZjxDaGVja2VkT2JqZWN0
PiByZWYgPSBjaGVja2VkT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCAmY2hl
Y2tlZE9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShyZWYtPnNvbWVGdW5jdGlvbigpLCAtMTEp
OworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Q2hlY2tlZE9iamVjdCY+KHJlZikuc29t
ZUZ1bmN0aW9uKCksIC0xMSk7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNv
dW50KCksIDEpOworICAgICAgICBFWFBFQ1RfRVEoYW5vdGhlck9iamVjdC5wdHJDb3VudCgpLCAw
KTsKKworICAgICAgICByZWYgPSBhbm90aGVyT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEocmVm
LnB0cigpLCAmYW5vdGhlck9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0
LnB0ckNvdW50KCksIDApOworICAgICAgICBFWFBFQ1RfRVEoYW5vdGhlck9iamVjdC5wdHJDb3Vu
dCgpLCAxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIERlcml2ZWRDaGVja2VkT2JqZWN0IGNo
ZWNrZWRPYmplY3QgeyAxMCB9OworICAgICAgICBEZXJpdmVkQ2hlY2tlZE9iamVjdCBhbm90aGVy
T2JqZWN0IHsgMjAgfTsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQo
KSwgMCk7CisgICAgICAgIEVYUEVDVF9FUShhbm90aGVyT2JqZWN0LnB0ckNvdW50KCksIDApOwor
CisgICAgICAgIENoZWNrZWRSZWY8RGVyaXZlZENoZWNrZWRPYmplY3Q+IHJlZjEgPSBjaGVja2Vk
T2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEocmVmMS5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOwor
ICAgICAgICBFWFBFQ1RfRVEocmVmMS0+c29tZUZ1bmN0aW9uKCksIDEwKTsKKyAgICAgICAgRVhQ
RUNUX0VRKHN0YXRpY19jYXN0PENoZWNrZWRPYmplY3QmPihyZWYxKS5zb21lRnVuY3Rpb24oKSwg
MTApOworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGFub3RoZXJPYmplY3QucHRyQ291bnQoKSwgMCk7CisKKyAgICAgICAg
Y29uc3QgQ2hlY2tlZFJlZjxDaGVja2VkT2JqZWN0PiByZWYyID0gcmVmMTsKKyAgICAgICAgRVhQ
RUNUX0VRKHJlZjIucHRyKCksICZjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgRVhQRUNUX0VRKHJl
ZjItPnNvbWVGdW5jdGlvbigpLCAxMCk7CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxj
b25zdCBDaGVja2VkT2JqZWN0Jj4ocmVmMikuc29tZUZ1bmN0aW9uKCksIDEwKTsKKyAgICAgICAg
RVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMik7CisgICAgICAgIEVYUEVDVF9F
UShhbm90aGVyT2JqZWN0LnB0ckNvdW50KCksIDApOworCisgICAgICAgIENoZWNrZWRSZWY8Q2hl
Y2tlZE9iamVjdD4gcmVmMyA9IHJlZjE7CisgICAgICAgIEVYUEVDVF9FUShyZWYzLnB0cigpLCAm
Y2hlY2tlZE9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxDaGVja2VkT2Jq
ZWN0Jj4ocmVmMykuc29tZUZ1bmN0aW9uKCksIDEwKTsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNr
ZWRPYmplY3QucHRyQ291bnQoKSwgMyk7CisgICAgICAgIEVYUEVDVF9FUShhbm90aGVyT2JqZWN0
LnB0ckNvdW50KCksIDApOworCisgICAgICAgIHJlZjEgPSBhbm90aGVyT2JqZWN0OworICAgICAg
ICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAyKTsKKyAgICAgICAgRVhQRUNU
X0VRKGFub3RoZXJPYmplY3QucHRyQ291bnQoKSwgMSk7CisgICAgICAgIEVYUEVDVF9FUShyZWYx
LnB0cigpLCAmYW5vdGhlck9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShyZWYxLT5zb21lRnVu
Y3Rpb24oKSwgMjApOworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Q2hlY2tlZE9iamVj
dCY+KHJlZjEpLnNvbWVGdW5jdGlvbigpLCAyMCk7CisgICAgICAgIEVYUEVDVF9FUShyZWYyLnB0
cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShyZWYzLnB0cigpLCAmY2hl
Y2tlZE9iamVjdCk7CisKKyAgICAgICAgQ2hlY2tlZFJlZjxDaGVja2VkT2JqZWN0PiByZWY0ID0g
V1RGTW92ZShyZWYxKTsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQo
KSwgMik7CisgICAgICAgIEVYUEVDVF9FUShhbm90aGVyT2JqZWN0LnB0ckNvdW50KCksIDEpOwor
ICAgICAgICBFWFBFQ1RfRVEocmVmMi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICBF
WFBFQ1RfRVEocmVmMy5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEo
cmVmNC5wdHIoKSwgJmFub3RoZXJPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nh
c3Q8Q2hlY2tlZE9iamVjdCY+KHJlZjQpLnNvbWVGdW5jdGlvbigpLCAyMCk7CisgICAgICAgIEVY
UEVDVF9FUShyZWY0LT5zb21lRnVuY3Rpb24oKSwgMjApOworCisgICAgICAgIHJlZjEgPSBjaGVj
a2VkT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAz
KTsKKyAgICAgICAgRVhQRUNUX0VRKGFub3RoZXJPYmplY3QucHRyQ291bnQoKSwgMSk7CisgICAg
ICAgIEVYUEVDVF9FUShyZWYxLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAgIEVYUEVD
VF9FUShyZWYxLT5zb21lRnVuY3Rpb24oKSwgMTApOworICAgICAgICBFWFBFQ1RfRVEocmVmMi5w
dHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEocmVmMy5wdHIoKSwgJmNo
ZWNrZWRPYmplY3QpOworICAgIH0KK30KKworVEVTVChXVEZfQ2hlY2tlZFJlZiwgSGFzaFNldCkK
K3sKKyAgICB7CisgICAgICAgIENoZWNrZWRPYmplY3QgY2hlY2tlZE9iamVjdDsKKyAgICAgICAg
RVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CisKKyAgICAgICAgSGFzaFNl
dDxDaGVja2VkUmVmPENoZWNrZWRPYmplY3Q+PiBzZXQ7CisgICAgICAgIHsKKyAgICAgICAgICAg
IENoZWNrZWRSZWYgcmVmID0gY2hlY2tlZE9iamVjdDsKKyAgICAgICAgICAgIEVYUEVDVF9FUShy
ZWYucHRyKCksICZjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShjaGVja2Vk
T2JqZWN0LnB0ckNvdW50KCksIDEpOworCisgICAgICAgICAgICBzZXQuYWRkKHJlZik7CisgICAg
ICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAyKTsKKyAgICAgICAg
fQorICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIENoZWNrZWRPYmplY3Qgb2JqZWN0MTsKKyAgICAgICAgRGVyaXZl
ZENoZWNrZWRPYmplY3Qgb2JqZWN0MjsKKyAgICAgICAgRVhQRUNUX0VRKG9iamVjdDEucHRyQ291
bnQoKSwgMCk7CisgICAgICAgIEVYUEVDVF9FUShvYmplY3QyLnB0ckNvdW50KCksIDApOworCisg
ICAgICAgIEhhc2hTZXQ8Q2hlY2tlZFJlZjxDaGVja2VkT2JqZWN0Pj4gc2V0OworICAgICAgICBz
ZXQuYWRkKG9iamVjdDEpOworICAgICAgICBFWFBFQ1RfRVEob2JqZWN0MS5wdHJDb3VudCgpLCAx
KTsKKyAgICAgICAgRVhQRUNUX0VRKG9iamVjdDIucHRyQ291bnQoKSwgMCk7CisgICAgICAgIEVY
UEVDVF9UUlVFKHNldC5jb250YWlucyhvYmplY3QxKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShz
ZXQuY29udGFpbnMob2JqZWN0MikpOworCisgICAgICAgIHNldC5hZGQob2JqZWN0MSk7CisgICAg
ICAgIEVYUEVDVF9FUShvYmplY3QxLnB0ckNvdW50KCksIDEpOworICAgICAgICBFWFBFQ1RfRVEo
b2JqZWN0Mi5wdHJDb3VudCgpLCAwKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5z
KG9iamVjdDEpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlucyhvYmplY3QyKSk7
CisKKyAgICAgICAgeworICAgICAgICAgICAgQ2hlY2tlZFJlZjxEZXJpdmVkQ2hlY2tlZE9iamVj
dD4gcmVmIHsgb2JqZWN0MiB9OworICAgICAgICAgICAgc2V0LmFkZChyZWYpOworICAgICAgICAg
ICAgRVhQRUNUX0VRKG9iamVjdDEucHRyQ291bnQoKSwgMSk7CisgICAgICAgICAgICBFWFBFQ1Rf
RVEob2JqZWN0Mi5wdHJDb3VudCgpLCAyKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKHNldC5j
b250YWlucyhvYmplY3QxKSk7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMo
b2JqZWN0MikpOworICAgICAgICB9CisKKyAgICAgICAgRVhQRUNUX0VRKG9iamVjdDEucHRyQ291
bnQoKSwgMSk7CisgICAgICAgIEVYUEVDVF9FUShvYmplY3QyLnB0ckNvdW50KCksIDEpOworICAg
ICAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMob2JqZWN0MSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShzZXQuY29udGFpbnMob2JqZWN0MikpOworCisgICAgICAgIHNldC5yZW1vdmUob2JqZWN0
MSk7CisgICAgICAgIEVYUEVDVF9FUShvYmplY3QxLnB0ckNvdW50KCksIDApOworICAgICAgICBF
WFBFQ1RfRVEob2JqZWN0Mi5wdHJDb3VudCgpLCAxKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHNl
dC5jb250YWlucyhvYmplY3QxKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhv
YmplY3QyKSk7CisgICAgfQorCisgICAgeworICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PENoZWNrZWRPYmplY3Q+PiBvYmplY3RzOworICAgICAgICBvYmplY3RzLmFwcGVuZChtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxDaGVja2VkT2JqZWN0PigwKSk7CisgICAgICAgIEVY
UEVDVF9FUShvYmplY3RzWzBdLT5wdHJDb3VudCgpLCAwKTsKKworICAgICAgICBIYXNoU2V0PENo
ZWNrZWRSZWY8Q2hlY2tlZE9iamVjdD4+IHNldDsKKyAgICAgICAgc2V0LmFkZCgqb2JqZWN0c1sw
XS5nZXQoKSk7CisgICAgICAgIGF1dG8gaW5pdGlhbENhcGFjaXR5ID0gc2V0LmNhcGFjaXR5KCk7
CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgc2V0LmNhcGFjaXR5KCkgPT0gaW5pdGlh
bENhcGFjaXR5OyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgICAg
ICBvYmplY3RzLmFwcGVuZChtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxEZXJpdmVk
Q2hlY2tlZE9iamVjdD4oaSArIDEpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBvYmplY3RzLmFwcGVuZChtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxDaGVja2Vk
T2JqZWN0PihpICsgMSkpOworICAgICAgICAgICAgc2V0LmFkZCgqb2JqZWN0cy5sYXN0KCkpOwor
ICAgICAgICB9CisKKyAgICAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBvYmplY3RzKSB7CisgICAg
ICAgICAgICBFWFBFQ1RfRVEob2JqZWN0LT5wdHJDb3VudCgpLCAxKTsKKyAgICAgICAgICAgIEVY
UEVDVF9UUlVFKHNldC5jb250YWlucygqb2JqZWN0KSk7CisgICAgICAgIH0KKworICAgICAgICBW
ZWN0b3I8Ym9vbD4gc2VlbjsKKyAgICAgICAgc2Vlbi5yZXNpemUob2JqZWN0cy5zaXplKCkpOwor
ICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBzZXQpCisgICAgICAgICAgICBzZWVuW2l0ZW0tPnNv
bWVGdW5jdGlvbigpXSA9IHRydWU7CisgICAgICAgIGZvciAoYXV0byB2YWx1ZSA6IHNlZW4pCisg
ICAgICAgICAgICBFWFBFQ1RfVFJVRSh2YWx1ZSk7CisKKyAgICAgICAgYXV0byBzZXRWZWN0b3Ig
PSBXVEY6OmNvcHlUb1ZlY3RvcihzZXQpOworCisgICAgICAgIGZvciAoYXV0byYgb2JqZWN0IDog
b2JqZWN0cykKKyAgICAgICAgICAgIEVYUEVDVF9FUShvYmplY3QtPnB0ckNvdW50KCksIDIpOwor
ICAgIH0KK30KKworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434505</attachid>
            <date>2021-07-29 02:20:45 -0700</date>
            <delta_ts>2021-07-29 15:23:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227164-20210729022044.patch</filename>
            <type>text/plain</type>
            <size>40552</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiYWE4M2MwMjBiZTQwNjRkZDVjODFh
ODliYTYxOGZhOTY1NTliNDMuLjM0NWFjNjZmOWY4NDE1ZWEwMGFhZGMwNjg2ZmNhZjZkYmE3MmY3
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMDctMjggIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIENoZWNrZWRSZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzE2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpa2UgcjI3ODM0NCwgdGhpcyBwYXRjaCBp
bnRyb2R1Y2VzIGEgbmV3IHR5cGUgb2Ygc21hcnQgcG9pbnRlciwgQ2hlY2tlZFJlZiwKKyAgICAg
ICAgd2hpY2ggbGV0cyBlYWNoIG9iamVjdCBrZWVwIHRyYWNrIG9mIHBvaW50ZXJzIHBvaW50aW5n
IHRvIHRoZSBvYmplY3QuCisKKyAgICAgICAgQXMgd2l0aCBDaGVja2VkUHRyLCB0aGUgcHVycG9z
ZSBvZiB0aGUgaW50ZXJuYWwgY291bnRlciBmb3IgQ2hlY2tlZFJlZiBpcworICAgICAgICB0byBy
ZWxlYXNlIGFzc2VydCB0aGF0IHRoZXJlIGlzIG5vIG91dHN0YW5kaW5nIHBvaW50ZXIgYXQgdGhl
IHRpbWUgb2YgZGVzdHJ1Y3Rpb24KKyAgICAgICAgaW5zdGVhZCBvZiBrZWVwaW5nIHRoZSBvYmpl
Y3QgYWxpdmUgd2hlbiB0aGVyZSBpcyBvbmUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIHJl
bW92ZXMgbWFrZUNoZWNrZWRQdHIgaW4gZmF2b3Igb2YgdXNpbmcgQ2hlY2tlZFB0ciB3aXRoCisg
ICAgICAgIHRlbXBsYXRlIGFyZ3VtZW50IGRlZHVjdGlvbiBpbiBDKysxNy4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvQ2hlY2tlZFB0ci5oOgorICAgICAgICAoV1RGOjpDaGVja2Vk
UHRyOjpDaGVja2VkUHRyKTogQWRkZWQgdmFyaWFudHMgd2hpY2ggdGFrZSBDaGVja2VkUmVmIGFz
IGFyZ3VtZW50cy4KKyAgICAgICAgKFdURjo6bWFrZUNoZWNrZWRQdHIpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpDYW5NYWtlQ2hlY2tlZFB0cik6IE1vdmVkIHRvIENoZWNrZWRSZWYuaAorICAg
ICAgICAqIHd0Zi9DaGVja2VkUmVmLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVm
Ojp+Q2hlY2tlZFJlZik6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVmOjpDaGVja2Vk
UmVmKTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWY6OmlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWY6OmlzSGFzaFRh
YmxlRW1wdHlWYWx1ZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVmOjpo
YXNoVGFibGVFbXB0eVZhbHVlKTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWY6OnB0
ckFsbG93aW5nSGFzaFRhYmxlRW1wdHlWYWx1ZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV1RG
OjpDaGVja2VkUmVmOjpwdHJBbGxvd2luZ0hhc2hUYWJsZUVtcHR5VmFsdWUpOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6Q2hlY2tlZFJlZjo6cHRyIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXVEY6
OkNoZWNrZWRSZWY6OnB0cik6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVmOjpnZXQg
Y29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tlZFJlZjo6Z2V0KTogQWRkZWQuCisg
ICAgICAgIChXVEY6OkNoZWNrZWRSZWY6Om9wZXJhdG9yLT4gY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdURjo6Q2hlY2tlZFJlZjo6b3BlcmF0b3ItPik6IEFkZGVkLgorICAgICAgICAoV1RGOjpD
aGVja2VkUmVmOjpvcGVyYXRvciBjb25zdCBUJiBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV1RG
OjpDaGVja2VkUmVmOjpvcGVyYXRvciBUJik6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2Vk
UmVmOjpvcGVyYXRvciEgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tlZFJlZjo6
b3BlcmF0b3I9KTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWY6OnJlbGVhc2VQdHIp
OiBBZGRlZC4gUmV0dXJucyBtX3B0ciB3aXRob3V0IGNhbGxpbmcgZGVjcmVtZW50UHRyQ291bnQu
CisgICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCBvZiBsZWFrUHRyIGluIFJlZiBidXQgd2UgZG9u
J3QgY2FsbCB0aGlzIHRoYXQgc2luY2UgQ2hlY2tlZFJlZiBvcgorICAgICAgICBDaGVja2VkUHRy
IGlzIGdlbmVyYWxseSBub3QgdXNlZCB0byBtYW5hZ2UgdGhlIG9iamVjdCBsaWZldGltZS4KKyAg
ICAgICAgKFdURjo6Q2hlY2tlZFJlZjo6cG9pc29uKTogQWRkZWQuCisgICAgICAgIChXVEY6OkNo
ZWNrZWRSZWY6OnVucG9pc29uKTogQWRkZWQuCisgICAgICAgIChXVEY6OmlzKTogQWRkZWQuCisg
ICAgICAgIChXVEY6OkNoZWNrZWRSZWZIYXNoVHJhaXRzKTogQWRkZWQuCisgICAgICAgIChXVEY6
OkNoZWNrZWRSZWZIYXNoVHJhaXRzOjplbXB0eVZhbHVlKTogQWRkZWQuCisgICAgICAgIChXVEY6
OkNoZWNrZWRSZWZIYXNoVHJhaXRzOjpjb25zdHJ1Y3RFbXB0eVZhbHVlKTogQWRkZWQuCisgICAg
ICAgIChXVEY6OkNoZWNrZWRSZWZIYXNoVHJhaXRzOjppc0VtcHR5VmFsdWUpOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6Q2hlY2tlZFJlZkhhc2hUcmFpdHM6OnBlZWspOiBBZGRlZC4KKyAgICAgICAg
KFdURjo6Q2hlY2tlZFJlZkhhc2hUcmFpdHM6OnRha2UpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
Q2FuTWFrZUNoZWNrZWRQdHIpOiBNb3ZlZCBmcm9tIENoZWNrZWRQdHIuaAorICAgICAgICAqIHd0
Zi9Gb3J3YXJkLmg6CisKIDIwMjEtMDctMjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIG1hY09TIE1vbnRlcmV5IGFuZCBwYXJhbGxl
bCBPU2VzIG5vIGxvbmdlciBuZWVkIHIyODAxMDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGM1ZDgzMjY5ZWFmNDczYzBiODQxMGY4YTAxODIxNTM0NGU4NTgy
YWIuLmE1ODdkMWFhZGZiNGRjNTU4M2I0NTVmNWMwMTA1ZDNmMGE1ZjZiMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTExLDYgKzUxMSw3IEBACiAJCTlC
QjkxRjUxMjY0OEVBNEQwMEE1NjIxNyAvKiBDaGVja2VkUHRyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENo
ZWNrZWRQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJDNzBGMDQxNzZDMzc5
RDAwMTAxREVDIC8qIEF0b21TdHJpbmdUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBdG9tU3RyaW5nVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QkQ4RjQwQTE3NkMyQUQ4MDAwMkQ4NjUgLyogQXRvbVN0cmluZ1RhYmxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF0b21TdHJpbmdUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5QkYwMDEzNDI2N0M0Q0NGMDBEQ0ZCM0YgLyogQ2hlY2tlZFJlZi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDaGVja2VkUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRTE1MzM1
MjY3MUYwMEYwMEM3RDA5NiAvKiBXZWFrSGFzaE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrSGFz
aE1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QzY3QzU0MjU4OTM0OEUyODVC
NDk2OTkgLyogSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMUI4OUI4NzIyMUUwMDBGMDBFQjRDRUEgLyogU0RLVmFyaWFudC54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBTREtWYXJpYW50LnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTk1LDYgKzk5Niw3IEBACiAJCQkJQThB
NDcyNkExNTFBODI1QTAwNDEyM0ZGIC8qIENoZWNrZWRBcml0aG1ldGljLmggKi8sCiAJCQkJQThB
NDcyNkIxNTFBODI1QTAwNDEyM0ZGIC8qIENoZWNrZWRCb29sZWFuLmggKi8sCiAJCQkJOUJCOTFG
NTEyNjQ4RUE0RDAwQTU2MjE3IC8qIENoZWNrZWRQdHIuaCAqLywKKwkJCQk5QkYwMDEzNDI2N0M0
Q0NGMDBEQ0ZCM0YgLyogQ2hlY2tlZFJlZi5oICovLAogCQkJCTBGNjZCMjgwMURDOTdCQUIwMDRB
MUQzRiAvKiBDbG9ja1R5cGUuY3BwICovLAogCQkJCTBGNjZCMjgxMURDOTdCQUIwMDRBMUQzRiAv
KiBDbG9ja1R5cGUuaCAqLywKIAkJCQkwRkM0RURFNTE2OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQ
cmludGVyLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDBmYTA4Yjc4N2UxNmUwNTE4Y2Zi
ZDgxYTdjZTgwZmNiYmVmNzc2YzAuLjA1MTdkZGJlM2JlN2ViMTQyMTU5Y2QxMTg1MThmZjU5ZTE4
NTdmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0zMCw2ICszMCw3IEBAIHNldChXVEZfUFVC
TElDX0hFQURFUlMKICAgICBDaGVja2VkQXJpdGhtZXRpYy5oCiAgICAgQ2hlY2tlZEJvb2xlYW4u
aAogICAgIENoZWNrZWRQdHIuaAorICAgIENoZWNrZWRSZWYuaAogICAgIENsb2NrVHlwZS5oCiAg
ICAgQ29tbWFQcmludGVyLmgKICAgICBDb21wYWN0UG9pbnRlclR1cGxlLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRQdHIu
aAppbmRleCA0NWMyYTExNjFkMTEzMjRhOGNiZWQyYzMwZmIzOWQyNmM2MTFkYzkzLi5jZGU2YjYw
OTU2YzNkNzYzYWU4YzkwYThlYTFiNzJhODc5ZDVlYmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9DaGVja2VkUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZFB0ci5oCkBAIC0y
NSwyMSArMjUsMjAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgotI2luY2x1ZGUgPHd0Zi9SYXdQdHJUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZFJlZi5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgUHRyVHJhaXRzID0gUmF3UHRyVHJhaXRzPFQ+PgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgUHRyVHJhaXRzPgogY2xhc3MgQ2hlY2tlZFB0ciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAKLSAgICBDaGVja2VkUHRyKCkKKyAgICBjb25zdGV4cHIgQ2hl
Y2tlZFB0cigpCiAgICAgICAgIDogbV9wdHIobnVsbHB0cikKICAgICB7IH0KIAotICAgIENoZWNr
ZWRQdHIoc3RkOjpudWxscHRyX3QpCisgICAgY29uc3RleHByIENoZWNrZWRQdHIoc3RkOjpudWxs
cHRyX3QpCiAgICAgICAgIDogbV9wdHIobnVsbHB0cikKICAgICB7IH0KIApAQCAtNjUsMTUgKzY0
LDMzIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUs
IHR5cGVuYW1lIE90aGVyUHRyVHJhaXRzPiBDaGVja2VkUHRyKGNvbnN0IENoZWNrZWRQdHI8T3Ro
ZXJUeXBlLCBPdGhlclB0clRyYWl0cz4mIG90aGVyKQotICAgICAgICA6IG1fcHRyIHsgb3RoZXIu
bV9wdHIgfQotICAgIHsKLSAgICAgICAgcmVmSWZOb3ROdWxsKCk7Ci0gICAgfQorICAgICAgICA6
IENoZWNrZWRQdHIoT3RoZXJQdHJUcmFpdHM6OnVud3JhcChvdGhlci5tX3B0cikpCisgICAgeyB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1lIE90aGVyUHRyVHJh
aXRzPiBDaGVja2VkUHRyKENoZWNrZWRQdHI8T3RoZXJUeXBlLCBPdGhlclB0clRyYWl0cz4mJiBv
dGhlcikKICAgICAgICAgOiBtX3B0ciB7IFB0clRyYWl0czo6ZXhjaGFuZ2Uob3RoZXIubV9wdHIs
IG51bGxwdHIpIH0KICAgICB7IH0KIAorICAgIENoZWNrZWRQdHIoY29uc3QgQ2hlY2tlZFJlZjxU
LCBQdHJUcmFpdHM+JiBvdGhlcikKKyAgICAgICAgOiBDaGVja2VkUHRyKFB0clRyYWl0czo6dW53
cmFwKG90aGVyLm1fcHRyKSkKKyAgICB7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVy
VHlwZSwgdHlwZW5hbWUgT3RoZXJQdHJUcmFpdHM+IENoZWNrZWRQdHIoY29uc3QgQ2hlY2tlZFJl
ZjxPdGhlclR5cGUsIE90aGVyUHRyVHJhaXRzPiYgb3RoZXIpCisgICAgICAgIDogQ2hlY2tlZFB0
cihPdGhlclB0clRyYWl0czo6dW53cmFwKG90aGVyLm1fcHRyKSkKKyAgICB7IH0KKworICAgIENo
ZWNrZWRQdHIoY29uc3QgQ2hlY2tlZFJlZjxULCBQdHJUcmFpdHM+JiYgb3RoZXIpCisgICAgICAg
IDogbV9wdHIgeyBvdGhlci5yZWxlYXNlUHRyKCkgfQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdl
dCgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1l
IE90aGVyUHRyVHJhaXRzPiBDaGVja2VkUHRyKENoZWNrZWRSZWY8T3RoZXJUeXBlLCBPdGhlclB0
clRyYWl0cz4mJiBvdGhlcikKKyAgICAgICAgOiBtX3B0ciB7IG90aGVyLnJlbGVhc2VQdHIoKSB9
CisgICAgeworICAgICAgICBBU1NFUlQoZ2V0KCkpOworICAgIH0KKwogICAgIENoZWNrZWRQdHIo
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKICAgICAgICAgOiBtX3B0cihQdHJUcmFpdHM6Omhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpKQogICAgIHsgfQpAQCAtMTYzLDE2ICsxODAsNiBAQCBwcml2
YXRlOgogICAgIHR5cGVuYW1lIFB0clRyYWl0czo6U3RvcmFnZVR5cGUgbV9wdHI7CiB9OwogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQdHJUcmFpdHMgPSBSYXdQdHJUcmFpdHM8VD4+
IGlubGluZSBDaGVja2VkUHRyPFQsIFB0clRyYWl0cz4gbWFrZUNoZWNrZWRQdHIoVCogcG9pbnRl
cikKLXsKLSAgICByZXR1cm4gcG9pbnRlcjsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgUHRyVHJhaXRzID0gUmF3UHRyVHJhaXRzPFQ+PiBpbmxpbmUgQ2hlY2tlZFB0cjxULCBQ
dHJUcmFpdHM+IG1ha2VDaGVja2VkUHRyKFQmIHJlZmVyZW5jZSkKLXsKLSAgICByZXR1cm4gJnJl
ZmVyZW5jZTsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFB0clRyYWl0cz4K
IHN0cnVjdCBHZXRQdHJIZWxwZXI8Q2hlY2tlZFB0cjxULCBQdHJUcmFpdHM+PiB7CiAgICAgdHlw
ZWRlZiBUKiBQdHJUeXBlOwpAQCAtMTk2LDE3ICsyMDMsNiBAQCBpbmxpbmUgYm9vbCBpcyhjb25z
dCBDaGVja2VkUHRyPEFyZ1R5cGUsIEFyZ1B0clRyYWl0cz4mIHNvdXJjZSkKICAgICByZXR1cm4g
aXM8RXhwZWN0ZWRUeXBlPihzb3VyY2UuZ2V0KCkpOwogfQogCi1jbGFzcyBDYW5NYWtlQ2hlY2tl
ZFB0ciB7Ci1wdWJsaWM6Ci0gICAgfkNhbk1ha2VDaGVja2VkUHRyKCkgeyBSRUxFQVNFX0FTU0VS
VCghbV9jb3VudCk7IH0KLQotICAgIHVpbnQxNl90IHB0ckNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9jb3VudDsgfQotICAgIHZvaWQgaW5jcmVtZW50UHRyQ291bnQoKSB7ICsrbV9jb3VudDsgfQot
ICAgIHZvaWQgZGVjcmVtZW50UHRyQ291bnQoKSB7IEFTU0VSVChtX2NvdW50KTsgLS1tX2NvdW50
OyB9Ci1wcml2YXRlOgotICAgIHVpbnQxNl90IG1fY291bnQgeyAwIH07Ci19OwotCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFzaFRyYWl0czxDaGVja2VkUHRyPFA+PiA6IFNpbXBsZUNs
YXNzSGFzaFRyYWl0czxDaGVja2VkUHRyPFA+PiB7CiAgICAgc3RhdGljIFAqIGVtcHR5VmFsdWUo
KSB7IHJldHVybiBudWxscHRyOyB9CiAKQEAgLTIyOCw2ICsyMjQsNCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBQPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8Q2hlY2tlZFB0cjxQPj4gOiBQdHJIYXNoPENoZWNr
ZWRQdHI8UD4+CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpDaGVja2VkUHRyOwot
dXNpbmcgV1RGOjpDYW5NYWtlQ2hlY2tlZFB0cjsKLXVzaW5nIFdURjo6bWFrZUNoZWNrZWRQdHI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRSZWYuaCBiL1NvdXJjZS9XVEYv
d3RmL0NoZWNrZWRSZWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjQxOGRkYTFkN2QxOWQ4MzE2YzQ5MTg5ODdk
ZDRmZDZlOTNhOWFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZFJl
Zi5oCkBAIC0wLDAgKzEsMjM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVk
ZSA8d3RmL1Jhd1B0clRyYWl0cy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzPgorY2xhc3MgQ2hlY2tlZFJlZiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisKKyAgICB+Q2hlY2tlZFJlZigpCisgICAg
eworICAgICAgICB1bnBvaXNvbigqdGhpcyk7CisgICAgICAgIGlmIChhdXRvKiBwdHIgPSBQdHJU
cmFpdHM6OmV4Y2hhbmdlKG1fcHRyLCBudWxscHRyKSkKKyAgICAgICAgICAgIFB0clRyYWl0czo6
dW53cmFwKHB0ciktPmRlY3JlbWVudFB0ckNvdW50KCk7CisgICAgfQorCisgICAgQ2hlY2tlZFJl
ZihUJiBvYmplY3QpCisgICAgICAgIDogbV9wdHIoJm9iamVjdCkKKyAgICB7CisgICAgICAgIFB0
clRyYWl0czo6dW53cmFwKG1fcHRyKS0+aW5jcmVtZW50UHRyQ291bnQoKTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIENoZWNrZWRSZWYoY29uc3QgQ2hlY2tlZFJlZiYgb3RoZXIpCisgICAg
ICAgIDogbV9wdHIgeyBQdHJUcmFpdHM6OnVud3JhcChvdGhlci5tX3B0cikgfQorICAgIHsKKyAg
ICAgICAgUHRyVHJhaXRzOjp1bndyYXAobV9wdHIpLT5pbmNyZW1lbnRQdHJDb3VudCgpOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyVHlwZSwgdHlwZW5hbWUgT3RoZXJQdHJU
cmFpdHM+CisgICAgQ2hlY2tlZFJlZihjb25zdCBDaGVja2VkUmVmPE90aGVyVHlwZSwgT3RoZXJQ
dHJUcmFpdHM+JiBvdGhlcikKKyAgICAgICAgOiBtX3B0ciB7IFB0clRyYWl0czo6dW53cmFwKG90
aGVyLm1fcHRyKSB9CisgICAgeworICAgICAgICBQdHJUcmFpdHM6OnVud3JhcChtX3B0ciktPmlu
Y3JlbWVudFB0ckNvdW50KCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBDaGVja2VkUmVm
KENoZWNrZWRSZWYmJiBvdGhlcikKKyAgICAgICAgOiBtX3B0ciB7IG90aGVyLnJlbGVhc2VQdHIo
KSB9CisgICAgeworICAgICAgICBBU1NFUlQobV9wdHIpOworICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE90aGVyVHlwZSwgdHlwZW5hbWUgT3RoZXJQdHJUcmFpdHM+CisgICAgQ2hlY2tl
ZFJlZihDaGVja2VkUmVmPE90aGVyVHlwZSwgT3RoZXJQdHJUcmFpdHM+JiYgb3RoZXIpCisgICAg
ICAgIDogbV9wdHIgeyBvdGhlci5yZWxlYXNlUHRyKCkgfQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fcHRyKTsKKyAgICB9CisKKyAgICBDaGVja2VkUmVmKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5
cGUpIDogbV9wdHIoUHRyVHJhaXRzOjpoYXNoVGFibGVEZWxldGVkVmFsdWUoKSkgeyB9CisgICAg
Ym9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFB0clRyYWl0czo6
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUobV9wdHIpOyB9CisKKyAgICBDaGVja2VkUmVmKEhhc2hU
YWJsZUVtcHR5VmFsdWVUeXBlKSA6IG1fcHRyKGhhc2hUYWJsZUVtcHR5VmFsdWUoKSkgeyB9Cisg
ICAgYm9vbCBpc0hhc2hUYWJsZUVtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBo
YXNoVGFibGVFbXB0eVZhbHVlKCk7IH0KKyAgICBzdGF0aWMgVCogaGFzaFRhYmxlRW1wdHlWYWx1
ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIGNvbnN0IFQqIHB0ckFsbG93aW5nSGFzaFRh
YmxlRW1wdHlWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKG1fcHRyIHx8IGlzSGFzaFRhYmxlRW1wdHlW
YWx1ZSgpKTsgcmV0dXJuIFB0clRyYWl0czo6dW53cmFwKG1fcHRyKTsgfQorICAgIFQqIHB0ckFs
bG93aW5nSGFzaFRhYmxlRW1wdHlWYWx1ZSgpIHsgQVNTRVJUKG1fcHRyIHx8IGlzSGFzaFRhYmxl
RW1wdHlWYWx1ZSgpKTsgcmV0dXJuIFB0clRyYWl0czo6dW53cmFwKG1fcHRyKTsgfQorCisgICAg
QUxXQVlTX0lOTElORSBjb25zdCBUKiBwdHIoKSBjb25zdCB7IHJldHVybiBQdHJUcmFpdHM6OnVu
d3JhcChtX3B0cik7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFQqIHB0cigpIHsgcmV0dXJuIFB0clRy
YWl0czo6dW53cmFwKG1fcHRyKTsgfQorICAgIEFMV0FZU19JTkxJTkUgY29uc3QgVCYgZ2V0KCkg
Y29uc3QgeyBBU1NFUlQocHRyKCkpOyByZXR1cm4gKnB0cigpOyB9CisgICAgQUxXQVlTX0lOTElO
RSBUJiBnZXQoKSB7IEFTU0VSVChwdHIoKSk7IHJldHVybiAqcHRyKCk7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBwdHIoKTsgfQorICAg
IEFMV0FZU19JTkxJTkUgVCogb3BlcmF0b3ItPigpIHsgcmV0dXJuIHB0cigpOyB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIG9wZXJhdG9yIGNvbnN0IFQmKCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIG9wZXJhdG9yIFQmKCkgeyByZXR1cm4gZ2V0KCk7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWdldCgpOyB9CisK
KyAgICBDaGVja2VkUmVmJiBvcGVyYXRvcj0oVCYgcmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAg
dW5wb2lzb24oKnRoaXMpOworICAgICAgICBDaGVja2VkUmVmIGNvcHkgeyByZWZlcmVuY2UgfTsK
KyAgICAgICAgUHRyVHJhaXRzOjpzd2FwKG1fcHRyLCBjb3B5Lm1fcHRyKTsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KKworICAgIENoZWNrZWRSZWYmIG9wZXJhdG9yPShjb25zdCBDaGVj
a2VkUmVmJiBvdGhlcikKKyAgICB7CisgICAgICAgIHVucG9pc29uKCp0aGlzKTsKKyAgICAgICAg
Q2hlY2tlZFJlZiBjb3B5IHsgb3RoZXIgfTsKKyAgICAgICAgUHRyVHJhaXRzOjpzd2FwKG1fcHRy
LCBjb3B5Lm1fcHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE90aGVyVHlwZSwgdHlwZW5hbWUgT3RoZXJQdHJUcmFpdHM+IENoZWNrZWRS
ZWYmIG9wZXJhdG9yPShjb25zdCBDaGVja2VkUmVmPE90aGVyVHlwZSwgT3RoZXJQdHJUcmFpdHM+
JiBvdGhlcikKKyAgICB7CisgICAgICAgIHVucG9pc29uKCp0aGlzKTsKKyAgICAgICAgQ2hlY2tl
ZFJlZiBjb3B5IHsgb3RoZXIgfTsKKyAgICAgICAgUHRyVHJhaXRzOjpzd2FwKG1fcHRyLCBjb3B5
Lm1fcHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIENoZWNrZWRSZWYm
IG9wZXJhdG9yPShDaGVja2VkUmVmJiYgb3RoZXIpCisgICAgeworICAgICAgICB1bnBvaXNvbigq
dGhpcyk7CisgICAgICAgIENoZWNrZWRSZWYgbW92ZWQgeyBXVEZNb3ZlKG90aGVyKSB9OworICAg
ICAgICBQdHJUcmFpdHM6OnN3YXAobV9wdHIsIG1vdmVkLm1fcHRyKTsKKyAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyVHlwZSwgdHlwZW5h
bWUgT3RoZXJQdHJUcmFpdHM+IENoZWNrZWRSZWYmIG9wZXJhdG9yPShDaGVja2VkUmVmPE90aGVy
VHlwZSwgT3RoZXJQdHJUcmFpdHM+JiYgb3RoZXIpCisgICAgeworICAgICAgICB1bnBvaXNvbigq
dGhpcyk7CisgICAgICAgIENoZWNrZWRSZWYgbW92ZWQgeyBXVEZNb3ZlKG90aGVyKSB9OworICAg
ICAgICBQdHJUcmFpdHM6OnN3YXAobV9wdHIsIG1vdmVkLm1fcHRyKTsKKyAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgIH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5
cGUsIHR5cGVuYW1lIE90aGVyUHRyVHJhaXRzPiBmcmllbmQgY2xhc3MgQ2hlY2tlZFJlZjsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1lIE90aGVyUHRyVHJhaXRzPiBm
cmllbmQgY2xhc3MgQ2hlY2tlZFB0cjsKKworICAgIFQqIHJlbGVhc2VQdHIoKQorICAgIHsKKyAg
ICAgICAgVCogcHRyID0gUHRyVHJhaXRzOjpleGNoYW5nZShtX3B0ciwgbnVsbHB0cik7CisgICAg
ICAgIHBvaXNvbigqdGhpcyk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisjaWYgQVNB
Tl9FTkFCTEVECisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9iamVjdFR5cGU+CisgICAgdm9pZCBw
b2lzb24oT2JqZWN0VHlwZSYgb2JqZWN0KQorICAgIHsKKyAgICAgICAgX19hc2FuX3BvaXNvbl9t
ZW1vcnlfcmVnaW9uKCZvYmplY3QsIHNpemVvZihPYmplY3RUeXBlKSk7CisgICAgfQorCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIE9iamVjdFR5cGU+CisgICAgdm9pZCB1bnBvaXNvbihPYmplY3RU
eXBlJiBvYmplY3QpCisgICAgeworICAgICAgICBpZiAoX19hc2FuX2FkZHJlc3NfaXNfcG9pc29u
ZWQoJm9iamVjdCkpCisgICAgICAgICAgICBfX2FzYW5fdW5wb2lzb25fbWVtb3J5X3JlZ2lvbigm
b2JqZWN0LCBzaXplb2YoT2JqZWN0VHlwZSkpOworICAgIH0KKyNlbHNlCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIE9iamVjdFR5cGU+IHZvaWQgcG9pc29uKE9iamVjdFR5cGUmKSB7IH0KKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgT2JqZWN0VHlwZT4gdm9pZCB1bnBvaXNvbihPYmplY3RUeXBlJikg
eyB9CisjZW5kaWYKKworICAgIHR5cGVuYW1lIFB0clRyYWl0czo6U3RvcmFnZVR5cGUgbV9wdHI7
Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzPgorc3RydWN0
IEdldFB0ckhlbHBlcjxDaGVja2VkUmVmPFQsIFB0clRyYWl0cz4+IHsKKyAgICB0eXBlZGVmIFQq
IFB0clR5cGU7CisgICAgc3RhdGljIFQqIGdldFB0cihjb25zdCBDaGVja2VkUmVmPFQsIFB0clRy
YWl0cz4mIHApIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8VCo+KHAucHRyKCkpOyB9Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3N0cnVjdCBJc1NtYXJ0UHRyPENoZWNrZWRS
ZWY8VCwgVT4+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSB0cnVlOworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlLCB0eXBl
bmFtZSBBcmdQdHJUcmFpdHM+CitpbmxpbmUgYm9vbCBpcyhDaGVja2VkUmVmPEFyZ1R5cGUsIEFy
Z1B0clRyYWl0cz4mIHNvdXJjZSkKK3sKKyAgICByZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3Vy
Y2UuZ2V0KCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1l
IEFyZ1R5cGUsIHR5cGVuYW1lIEFyZ1B0clRyYWl0cz4KK2lubGluZSBib29sIGlzKGNvbnN0IENo
ZWNrZWRSZWY8QXJnVHlwZSwgQXJnUHRyVHJhaXRzPiYgc291cmNlKQoreworICAgIHJldHVybiBp
czxFeHBlY3RlZFR5cGU+KHNvdXJjZS5nZXQoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFA+
IHN0cnVjdCBDaGVja2VkUmVmSGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxDaGVj
a2VkUmVmPFA+PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8g
PSB0cnVlOworICAgIHN0YXRpYyBDaGVja2VkUmVmPFA+IGVtcHR5VmFsdWUoKSB7IHJldHVybiBI
YXNoVGFibGVFbXB0eVZhbHVlOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWU+CisgICAgc3Rh
dGljIHZvaWQgY29uc3RydWN0RW1wdHlWYWx1ZShDaGVja2VkUmVmPFA+JiBzbG90KQorICAgIHsK
KyAgICAgICAgbmV3IChOb3ROdWxsLCBzdGQ6OmFkZHJlc3NvZihzbG90KSkgQ2hlY2tlZFJlZjxQ
PihIYXNoVGFibGVFbXB0eVZhbHVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOworICAgIHN0YXRpYyBib29sIGlzRW1w
dHlWYWx1ZShjb25zdCBDaGVja2VkUmVmPFA+JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuaXNIYXNo
VGFibGVFbXB0eVZhbHVlKCk7IH0KKworICAgIHVzaW5nIFBlZWtUeXBlID0gUCo7CisgICAgc3Rh
dGljIFBlZWtUeXBlIHBlZWsoY29uc3QgQ2hlY2tlZFJlZjxQPiYgdmFsdWUpIHsgcmV0dXJuIGNv
bnN0X2Nhc3Q8UGVla1R5cGU+KHZhbHVlLnB0ckFsbG93aW5nSGFzaFRhYmxlRW1wdHlWYWx1ZSgp
KTsgfQorICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKFAqIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsg
fQorCisgICAgdXNpbmcgVGFrZVR5cGUgPSBDaGVja2VkUHRyPFA+OworICAgIHN0YXRpYyBUYWtl
VHlwZSB0YWtlKENoZWNrZWRSZWY8UD4mJiB2YWx1ZSkgeyByZXR1cm4gaXNFbXB0eVZhbHVlKHZh
bHVlKSA/IG51bGxwdHIgOiBDaGVja2VkUHRyPFA+KFdURk1vdmUodmFsdWUpKTsgfQorfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8Q2hlY2tlZFJlZjxQPj4gOiBD
aGVja2VkUmVmSGFzaFRyYWl0czxQPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVj
dCBQdHJIYXNoPENoZWNrZWRSZWY8UD4+IDogUHRySGFzaEJhc2U8Q2hlY2tlZFJlZjxQPiwgSXNT
bWFydFB0cjxDaGVja2VkUmVmPFA+Pjo6dmFsdWU+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFA+IHN0cnVjdCBEZWZhdWx0SGFzaDxDaGVja2VkUmVmPFA+PiA6IFB0ckhhc2g8
Q2hlY2tlZFJlZjxQPj4geyB9OworCitjbGFzcyBDYW5NYWtlQ2hlY2tlZFB0ciB7CitwdWJsaWM6
CisgICAgfkNhbk1ha2VDaGVja2VkUHRyKCkgeyBSRUxFQVNFX0FTU0VSVCghbV9jb3VudCk7IH0K
KworICAgIHVpbnQxNl90IHB0ckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsgfQorICAg
IHZvaWQgaW5jcmVtZW50UHRyQ291bnQoKSB7ICsrbV9jb3VudDsgfQorICAgIHZvaWQgZGVjcmVt
ZW50UHRyQ291bnQoKSB7IEFTU0VSVChtX2NvdW50KTsgLS1tX2NvdW50OyB9Citwcml2YXRlOgor
ICAgIHVpbnQxNl90IG1fY291bnQgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwor
dXNpbmcgV1RGOjpDYW5NYWtlQ2hlY2tlZFB0cjsKK3VzaW5nIFdURjo6Q2hlY2tlZFJlZjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0Zvcndh
cmQuaAppbmRleCBkMjk1Y2ZlYjVkODdmNzkwNjY2NzVlZDVlMTA4MGI2MjgyZTU1NzdiLi41NTBm
MDA1ZDM5MTExNTMzZTRlNzNhZTBiOWUyOWJlM2MwOTRjM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCkBAIC03Miw2
ICs3Miw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBPcHRpb25TZXQ7CiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gY2xhc3MgUGFja2VkOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90ID0gYWxp
Z25vZihUKT4gY2xhc3MgUGFja2VkQWxpZ25lZFB0cjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1
Y3QgUmF3UHRyVHJhaXRzOwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBSYXdQdHJU
cmFpdHM8VD4+IGNsYXNzIENoZWNrZWRSZWY7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSA9IFJhd1B0clRyYWl0czxUPj4gY2xhc3MgQ2hlY2tlZFB0cjsKIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lID0gUmF3UHRyVHJhaXRzPFQ+PiBjbGFzcyBSZWY7CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSA9IFJhd1B0clRyYWl0czxUPiwgdHlwZW5hbWUgPSBEZWZhdWx0UmVm
RGVyZWZUcmFpdHM8VD4+IGNsYXNzIFJlZlB0cjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBS
ZXRhaW5QdHI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggZWExOThjMWQ5MTY3YTYxNWNhMjg1OTVhMThlMjdiZDcyNDc5YjU2ZC4uOGQ4Y2U5ZWNl
MzE3ZWQ4NDYxYmY0NDQ0ZDQ1NjJlMGQ5NDBmMzMwNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA3LTI4ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBDaGVja2VkUmVm
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcxNjQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBz
b21lIHVuaXQgdGVzdHMgZm9yIENoZWNrZWRSZWYgYW5kIHVwZGF0ZWQgdGhlIHVuaXQgdGVzdHMK
KyAgICAgICAgZm9yIENoZWNrZWRQdHIgcGVyIHRoZSByZW1vdmFsIG9mIG1ha2VDaGVja2VkUHRy
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZFB0
ci5jcHA6CisgICAgICAgIChXVEZfQ2hlY2tlZFB0ci5DaGVja2VkUmVmKTogQWRkZWQKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9DaGVja2VkUmVmLmNwcDogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJLi5DaGVja2VkT2JqZWN0KTogQWRkZWQuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJLi5EZXJpdmVkQ2hlY2tlZE9iamVjdCk6IEFkZGVkLgorICAgICAgICAoV1RGX0No
ZWNrZWRSZWYuQmFzaWMpOiBBZGRlZC4KKyAgICAgICAgKFdURl9DaGVja2VkUmVmLkRlcml2ZWRD
bGFzcyk6IEFkZGVkLgorICAgICAgICAoV1RGX0NoZWNrZWRSZWYuSGFzaFNldCk6IEFkZGVkLgor
CiAyMDIxLTA3LTI4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgV2ViU29ja2V0OiBTYWZhcmkgb24gaU9TIDE1IGJldGEgMyBpcyBzZW5kaW5n
IGludmFsaWQgY2xvc2UgZnJhbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWNiNDQ5NWRm
NDcxYTc2MzQ2N2UzMTA2NjQ0Yzk0ZjYwMzE1NGY0OC4uZTdkYjhjY2YxYTQ4YjFhOWZkZWM0MWI5
ZmU0ODQ1Y2YyNTY0YzBkZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkyNSw2ICs5MjUs
NyBAQAogCQk5QkQ2RDNBNzFGN0IyMURDMDBCRDQ5NjIgLyogcGFzdGUtaW1hZ2UuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQ2RDNB
NjFGN0IyMUNDMDBCRDQ5NjIgLyogcGFzdGUtaW1hZ2UuaHRtbCAqLzsgfTsKIAkJOUJEQ0NEODcx
RjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkRDQ0Q4NTFGN0QwQjA3MDAwMDlBMTggLyogUGFzdGVJ
bWFnZS5tbSAqLzsgfTsKIAkJOUJERDk1NTgxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCREQ5NTU2
MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gKi87IH07CisJCTlCRjAwMTMzMjY3QzRD
NTkwMERDRkIzRiAvKiBDaGVja2VkUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCRjAwMTMyMjY3QzRDNTkwMERDRkIzRiAvKiBDaGVja2VkUmVm
LmNwcCAqLzsgfTsKIAkJOUJGMzU2Q0QyMDJENDU4NTAwRjcxMTYwIC8qIG1zby1saXN0Lmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJG
MzU2Q0MyMDJENDRGMjAwRjcxMTYwIC8qIG1zby1saXN0Lmh0bWwgKi87IH07CiAJCTlDNjREQzMy
MUQ3NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUM2NERDMzExRDc2MTk4QTAw
NEI1OThFIC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgKi87IH07CiAJCUExMEYwNDdF
MUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwRjA0N0MxRTNBRDI5QzAwQzk1RTE5
IC8qIE5TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi87IH07CkBAIC0yNjU0LDYgKzI2NTUsNyBAQAog
CQk5QkQ2RDNBNjFGN0IyMUNDMDBCRDQ5NjIgLyogcGFzdGUtaW1hZ2UuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJwYXN0ZS1pbWFnZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJEQ0NE
ODUxRjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBQYXN0ZUltYWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkREOTU1NjFG
ODM2ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFz
dGVSVEZELm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkYwMDEzMjI2N0M0QzU5
MDBEQ0ZCM0YgLyogQ2hlY2tlZFJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGVja2VkUmVm
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJGMzU2Q0MyMDJENDRGMjAwRjcx
MTYwIC8qIG1zby1saXN0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibXNvLWxpc3QuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlDNjREQzMxMUQ3NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTEwRjA0N0MxRTNBRDI5QzAwQzk1RTE5IC8qIE5TRmlsZU1hbmFnZXJFeHRyYXMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOU0ZpbGVNYW5hZ2VyRXh0
cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ2Miw2ICs0NDY0LDcgQEAK
IAkJCQkwNDUxQTVBNjIzNUU0MzhFMDA5REY5NDUgLyogQnVtcFBvaW50ZXJBbGxvY2F0b3IuY3Bw
ICovLAogCQkJCUE3QTk2NkRBMTQwRUNDQzgwMDVFRjlCNCAvKiBDaGVja2VkQXJpdGhtZXRpY09w
ZXJhdGlvbnMuY3BwICovLAogCQkJCTlCQkNBNERFMjY1QUNBNUIwMERGRTcyMyAvKiBDaGVja2Vk
UHRyLmNwcCAqLywKKwkJCQk5QkYwMDEzMjI2N0M0QzU5MDBEQ0ZCM0YgLyogQ2hlY2tlZFJlZi5j
cHAgKi8sCiAJCQkJRTMwMkJEQTkyNDA0QjkyMzAwODY1Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBs
ZS5jcHAgKi8sCiAJCQkJOUIwQzA1MTgyNEZERkI3MDAwRjJGRTMxIC8qIENvbXBhY3RVbmlxdWVQ
dHJUdXBsZS5jcHAgKi8sCiAJCQkJMEYzMENCNUIxRkNFMTc5MjAwNEI1MzIzIC8qIENvbmN1cnJl
bnRQdHJIYXNoU2V0LmNwcCAqLywKQEAgLTUyMzQsNiArNTIzNyw3IEBACiAJCQkJMDREQjIzOTYy
MzVFNDNFQzAwMzI4RjE3IC8qIEJ1bXBQb2ludGVyQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDODNERUEwMUQwQTU5MEMwMEZFQkNGMyAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJh
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUJCQ0E0REYyNjVBQ0E1QjAwREZFNzIzIC8q
IENoZWNrZWRQdHIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUJGMDAxMzMyNjdDNEM1OTAwRENG
QjNGIC8qIENoZWNrZWRSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMwMkJEQUEyNDA0Qjky
NDAwODY1Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
QjBDMDUxOTI0RkRGQjdEMDBGMkZFMzEgLyogQ29tcGFjdFVuaXF1ZVB0clR1cGxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMzBDQjVDMUZDRTE3OTYwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRy
SGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0NoZWNrZWRQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvQ2hlY2tlZFB0ci5jcHAKaW5kZXggZjQ1Njc3NTM5NWMzNDkyZGMxZTA0MGRkYzZkZDU0YmVh
NjBiNjNiMC4uMzk2ZTRjYjM2MmQxNGVmMzFhNjUyN2Q3Y2M1OTE1YjMwOTIwZDM2MCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZFB0ci5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZFB0ci5jcHAKQEAgLTUxLDcgKzUx
LDcgQEAgVEVTVChXVEZfQ2hlY2tlZFB0ciwgQmFzaWMpCiAgICAgICAgIENoZWNrZWRPYmplY3Qg
Y2hlY2tlZE9iamVjdDsKICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQo
KSwgMCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gcHRyID0gbWFrZUNoZWNrZWRQdHIo
Y2hlY2tlZE9iamVjdCk7CisgICAgICAgICAgICBDaGVja2VkUHRyIHB0ciB7ICZjaGVja2VkT2Jq
ZWN0IH07CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRSghIXB0cik7CiAgICAgICAgICAgICBFWFBF
Q1RfRVEocHRyLmdldCgpLCAmY2hlY2tlZE9iamVjdCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEo
cHRyLT5zb21lRnVuY3Rpb24oKSwgLTcpOwpAQCAtNjQsNyArNjQsNyBAQCBURVNUKFdURl9DaGVj
a2VkUHRyLCBCYXNpYykKICAgICAgICAgQ2hlY2tlZE9iamVjdCBjaGVja2VkT2JqZWN0OwogICAg
ICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKIAotICAgICAgICBh
dXRvIHB0ciA9IG1ha2VDaGVja2VkUHRyKGNoZWNrZWRPYmplY3QpOworICAgICAgICBDaGVja2Vk
UHRyIHB0ciA9IHsgJmNoZWNrZWRPYmplY3QgfTsKICAgICAgICAgRVhQRUNUX1RSVUUoISFwdHIp
OwogICAgICAgICBFWFBFQ1RfRVEocHRyLmdldCgpLCAmY2hlY2tlZE9iamVjdCk7CiAgICAgICAg
IEVYUEVDVF9FUShwdHItPnNvbWVGdW5jdGlvbigpLCAtNyk7CkBAIC04MCwxOSArODAsMTkgQEAg
VEVTVChXVEZfQ2hlY2tlZFB0ciwgQmFzaWMpCiAgICAgICAgIENoZWNrZWRPYmplY3QgY2hlY2tl
ZE9iamVjdDsKICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7
CiAKLSAgICAgICAgYXV0byBwdHIxID0gbWFrZUNoZWNrZWRQdHIoY2hlY2tlZE9iamVjdCk7Cisg
ICAgICAgIENoZWNrZWRQdHIgcHRyMSB7ICZjaGVja2VkT2JqZWN0IH07CiAgICAgICAgIEVYUEVD
VF9UUlVFKCEhcHRyMSk7CiAgICAgICAgIEVYUEVDVF9FUShwdHIxLmdldCgpLCAmY2hlY2tlZE9i
amVjdCk7CiAgICAgICAgIEVYUEVDVF9FUShwdHIxLT5zb21lRnVuY3Rpb24oKSwgLTcpOwogICAg
ICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKIAotICAgICAgICBj
b25zdCBDaGVja2VkUHRyPENoZWNrZWRPYmplY3Q+IHB0cjIgPSBtYWtlQ2hlY2tlZFB0cigmY2hl
Y2tlZE9iamVjdCk7CisgICAgICAgIGNvbnN0IENoZWNrZWRQdHIgcHRyMiB7ICZjaGVja2VkT2Jq
ZWN0IH07CiAgICAgICAgIEVYUEVDVF9UUlVFKCEhcHRyMik7CiAgICAgICAgIEVYUEVDVF9FUShw
dHIyLmdldCgpLCAmY2hlY2tlZE9iamVjdCk7CiAgICAgICAgIEVYUEVDVF9FUShwdHIyLT5zb21l
RnVuY3Rpb24oKSwgLTcpOwogICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3Vu
dCgpLCAyKTsKIAotICAgICAgICBDaGVja2VkUHRyPENoZWNrZWRPYmplY3Q+IHB0cjMgPSBwdHIy
OworICAgICAgICBDaGVja2VkUHRyIHB0cjMgPSBwdHIyOwogICAgICAgICBFWFBFQ1RfVFJVRSgh
IXB0cjMpOwogICAgICAgICBFWFBFQ1RfRVEocHRyMy5nZXQoKSwgJmNoZWNrZWRPYmplY3QpOwog
ICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAzKTsKQEAgLTExMSw2
ICsxMTEsNzkgQEAgVEVTVChXVEZfQ2hlY2tlZFB0ciwgQmFzaWMpCiAgICAgfQogfQogCitURVNU
KFdURl9DaGVja2VkUHRyLCBDaGVja2VkUmVmKQoreworICAgIHsKKyAgICAgICAgQ2hlY2tlZE9i
amVjdCBjaGVja2VkT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJD
b3VudCgpLCAwKTsKKyAgICAgICAgeworICAgICAgICAgICAgQ2hlY2tlZFJlZiByZWYgeyBjaGVj
a2VkT2JqZWN0IH07CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCAmY2hlY2tlZE9i
amVjdCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLT5zb21lRnVuY3Rpb24oKSwgLTcpOwor
ICAgICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMSk7CisgICAg
ICAgICAgICBDaGVja2VkUHRyIHB0ciB7IHJlZiB9OworICAgICAgICAgICAgRVhQRUNUX0VRKHJl
Zi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi0+c29t
ZUZ1bmN0aW9uKCksIC03KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShwdHIuZ2V0KCksICZjaGVj
a2VkT2JqZWN0KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShwdHItPnNvbWVGdW5jdGlvbigpLCAt
Nyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAyKTsK
KyAgICAgICAgfQorICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAw
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIERlcml2ZWRDaGVja2VkT2JqZWN0IGNoZWNrZWRP
YmplY3Q7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDApOwor
ICAgICAgICB7CisgICAgICAgICAgICBDaGVja2VkUmVmPERlcml2ZWRDaGVja2VkT2JqZWN0PiBy
ZWYgeyBjaGVja2VkT2JqZWN0IH07CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCAm
Y2hlY2tlZE9iamVjdCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLT5zb21lRnVuY3Rpb24o
KSwgLTcpOworICAgICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwg
MSk7CisgICAgICAgICAgICBDaGVja2VkUHRyPENoZWNrZWRPYmplY3Q+IHB0ciB7IHJlZiB9Owor
ICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAg
ICAgICAgRVhQRUNUX0VRKHJlZi0+c29tZUZ1bmN0aW9uKCksIC03KTsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShwdHIuZ2V0KCksICZjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgICAgIEVYUEVDVF9F
UShwdHItPnNvbWVGdW5jdGlvbigpLCAtNyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoY2hlY2tl
ZE9iamVjdC5wdHJDb3VudCgpLCAyKTsKKyAgICAgICAgfQorICAgICAgICBFWFBFQ1RfRVEoY2hl
Y2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENoZWNr
ZWRPYmplY3QgY2hlY2tlZE9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3Qu
cHRyQ291bnQoKSwgMCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIENoZWNrZWRSZWYgcmVmIHsg
Y2hlY2tlZE9iamVjdCB9OworICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi5wdHIoKSwgJmNoZWNr
ZWRPYmplY3QpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi0+c29tZUZ1bmN0aW9uKCksIC03
KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDEpOwor
ICAgICAgICAgICAgQ2hlY2tlZFB0ciBwdHIgeyBXVEZNb3ZlKHJlZikgfTsKKyAgICAgICAgICAg
IEVYUEVDVF9FUShyZWYucHRyKCksIG51bGxwdHIpOworICAgICAgICAgICAgRVhQRUNUX0VRKHB0
ci5nZXQoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICAgICAgRVhQRUNUX0VRKHB0ci0+c29t
ZUZ1bmN0aW9uKCksIC03KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0
ckNvdW50KCksIDEpOworICAgICAgICB9CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0
LnB0ckNvdW50KCksIDApOworICAgIH0KKworICAgIHsKKyAgICAgICAgRGVyaXZlZENoZWNrZWRP
YmplY3QgY2hlY2tlZE9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRy
Q291bnQoKSwgMCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIENoZWNrZWRSZWY8RGVyaXZlZENo
ZWNrZWRPYmplY3Q+IHJlZiB7IGNoZWNrZWRPYmplY3QgfTsKKyAgICAgICAgICAgIEVYUEVDVF9F
UShyZWYucHRyKCksICZjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZWYt
PnNvbWVGdW5jdGlvbigpLCAtNyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVj
dC5wdHJDb3VudCgpLCAxKTsKKyAgICAgICAgICAgIENoZWNrZWRQdHI8Q2hlY2tlZE9iamVjdD4g
cHRyIHsgV1RGTW92ZShyZWYpIH07CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCBu
dWxscHRyKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShwdHIuZ2V0KCksICZjaGVja2VkT2JqZWN0
KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShwdHItPnNvbWVGdW5jdGlvbigpLCAtNyk7CisgICAg
ICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKKyAgICAgICAg
fQorICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKKyAgICB9
Cit9CisKIFRFU1QoV1RGX0NoZWNrZWRQdHIsIERlcml2ZWRDbGFzcykKIHsKICAgICB7CkBAIC0x
MjIsNyArMTk1LDcgQEAgVEVTVChXVEZfQ2hlY2tlZFB0ciwgRGVyaXZlZENsYXNzKQogICAgICAg
ICBEZXJpdmVkQ2hlY2tlZE9iamVjdCBjaGVja2VkT2JqZWN0OwogICAgICAgICBFWFBFQ1RfRVEo
Y2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKICAgICAgICAgewotICAgICAgICAgICAgYXV0
byBwdHIgPSBtYWtlQ2hlY2tlZFB0cihjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgICAgIENoZWNr
ZWRQdHIgcHRyID0geyAmY2hlY2tlZE9iamVjdCB9OwogICAgICAgICAgICAgRVhQRUNUX1RSVUUo
ISFwdHIpOwogICAgICAgICAgICAgRVhQRUNUX0VRKHB0ci5nZXQoKSwgJmNoZWNrZWRPYmplY3Qp
OwogICAgICAgICAgICAgRVhQRUNUX0VRKHB0ci0+c29tZUZ1bmN0aW9uKCksIC03KTsKQEAgLTEz
NSw3ICsyMDgsNyBAQCBURVNUKFdURl9DaGVja2VkUHRyLCBEZXJpdmVkQ2xhc3MpCiAgICAgICAg
IENoZWNrZWRPYmplY3QgY2hlY2tlZE9iamVjdDsKICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRP
YmplY3QucHRyQ291bnQoKSwgMCk7CiAKLSAgICAgICAgQ2hlY2tlZFB0cjxDaGVja2VkT2JqZWN0
PiBwdHIgPSBtYWtlQ2hlY2tlZFB0cihjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgQ2hlY2tlZFB0
cjxDaGVja2VkT2JqZWN0PiBwdHIgeyAmY2hlY2tlZE9iamVjdCB9OwogICAgICAgICBFWFBFQ1Rf
VFJVRSghIXB0cik7CiAgICAgICAgIEVYUEVDVF9FUShwdHIuZ2V0KCksICZjaGVja2VkT2JqZWN0
KTsKICAgICAgICAgRVhQRUNUX0VRKHB0ci0+c29tZUZ1bmN0aW9uKCksIC03KTsKQEAgLTE1MSw3
ICsyMjQsNyBAQCBURVNUKFdURl9DaGVja2VkUHRyLCBEZXJpdmVkQ2xhc3MpCiAgICAgICAgIERl
cml2ZWRDaGVja2VkT2JqZWN0IGNoZWNrZWRPYmplY3Q7CiAgICAgICAgIEVYUEVDVF9FUShjaGVj
a2VkT2JqZWN0LnB0ckNvdW50KCksIDApOwogCi0gICAgICAgIENoZWNrZWRQdHI8RGVyaXZlZENo
ZWNrZWRPYmplY3Q+IHB0cjEgPSBtYWtlQ2hlY2tlZFB0cihjaGVja2VkT2JqZWN0KTsKKyAgICAg
ICAgQ2hlY2tlZFB0cjxEZXJpdmVkQ2hlY2tlZE9iamVjdD4gcHRyMSB7ICZjaGVja2VkT2JqZWN0
IH07CiAgICAgICAgIEVYUEVDVF9UUlVFKCEhcHRyMSk7CiAgICAgICAgIEVYUEVDVF9FUShwdHIx
LmdldCgpLCAmY2hlY2tlZE9iamVjdCk7CiAgICAgICAgIEVYUEVDVF9FUShwdHIxLT5zb21lRnVu
Y3Rpb24oKSwgLTcpOwpAQCAtMTg5LDcgKzI2Miw3IEBAIFRFU1QoV1RGX0NoZWNrZWRQdHIsIEhh
c2hTZXQpCiAgICAgICAgIENoZWNrZWRPYmplY3QgY2hlY2tlZE9iamVjdDsKICAgICAgICAgRVhQ
RUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CiAKLSAgICAgICAgYXV0byBwdHIg
PSBtYWtlQ2hlY2tlZFB0cihjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgQ2hlY2tlZFB0ciBwdHIg
PSB7ICZjaGVja2VkT2JqZWN0IH07CiAgICAgICAgIEVYUEVDVF9FUShwdHIuZ2V0KCksICZjaGVj
a2VkT2JqZWN0KTsKICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwg
MSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRS
ZWYuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZFJlZi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2VkNjdlZWNhMDJlY2FkMTEwMDAxMTVhODVlNzM4N2IyNDMzZDY0MwotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRSZWYuY3Bw
CkBAIC0wLDAgKzEsMzE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aW5jbHVkZSAiVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRSZWYuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCituYW1lc3BhY2UgeworCitjbGFzcyBDaGVja2VkT2JqZWN0IDog
cHVibGljIENhbk1ha2VDaGVja2VkUHRyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDaGVj
a2VkT2JqZWN0KTsKK3B1YmxpYzoKKyAgICBDaGVja2VkT2JqZWN0KGludCB2YWx1ZSA9IC03KQor
ICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgeyB9CisgICAgCisgICAgfkNoZWNrZWRPYmpl
Y3QoKSA9IGRlZmF1bHQ7CisKKyAgICBpbnQgc29tZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV92YWx1ZTsgfQorCitwcml2YXRlOgorICAgIGludCBtX3ZhbHVlOworfTsKKworY2xhc3MgRGVy
aXZlZENoZWNrZWRPYmplY3QgOiBwdWJsaWMgQ2hlY2tlZE9iamVjdCB7CitwdWJsaWM6CisgICAg
RGVyaXZlZENoZWNrZWRPYmplY3QoaW50IHZhbHVlID0gLTExKQorICAgICAgICA6IENoZWNrZWRP
YmplY3QodmFsdWUpCisgICAgeyB9Cit9OworCitURVNUKFdURl9DaGVja2VkUmVmLCBCYXNpYykK
K3sKKyAgICB7CisgICAgICAgIENoZWNrZWRPYmplY3QgY2hlY2tlZE9iamVjdDsKKyAgICAgICAg
RVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CisgICAgfQorCisgICAgewor
ICAgICAgICBDaGVja2VkT2JqZWN0IGNoZWNrZWRPYmplY3Q7CisgICAgICAgIEVYUEVDVF9FUShj
aGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDApOworICAgICAgICB7CisgICAgICAgICAgICBDaGVj
a2VkUmVmIHJlZiA9IGNoZWNrZWRPYmplY3Q7CisgICAgICAgICAgICBFWFBFQ1RfRVEoJnJlZi5n
ZXQoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi5wdHIoKSwg
JmNoZWNrZWRPYmplY3QpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi0+c29tZUZ1bmN0aW9u
KCksIC03KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxDaGVja2VkT2JqZWN0
Jj4ocmVmKS5zb21lRnVuY3Rpb24oKSwgLTcpOworICAgICAgICAgICAgRVhQRUNUX0VRKGNoZWNr
ZWRPYmplY3QucHRyQ291bnQoKSwgMSk7CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNUX0VRKGNo
ZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CisgICAgfQorCisgICAgeworICAgICAgICBDaGVj
a2VkT2JqZWN0IGNoZWNrZWRPYmplY3Q7CisgICAgICAgIENoZWNrZWRPYmplY3QgYW5vdGhlck9i
amVjdDsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CisK
KyAgICAgICAgQ2hlY2tlZFJlZiByZWYgPSBjaGVja2VkT2JqZWN0OworICAgICAgICBFWFBFQ1Rf
RVEocmVmLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShyZWYtPnNv
bWVGdW5jdGlvbigpLCAtNyk7CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxDaGVja2Vk
T2JqZWN0Jj4ocmVmKS5zb21lRnVuY3Rpb24oKSwgLTcpOworICAgICAgICBFWFBFQ1RfRVEoY2hl
Y2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKKworICAgICAgICByZWYgPSBhbm90aGVyT2JqZWN0
OworICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCAmYW5vdGhlck9iamVjdCk7CisgICAgICAg
IEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDApOworICAgICAgICBFWFBFQ1Rf
RVEoYW5vdGhlck9iamVjdC5wdHJDb3VudCgpLCAxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IENoZWNrZWRPYmplY3QgY2hlY2tlZE9iamVjdDsKKyAgICAgICAgQ2hlY2tlZE9iamVjdCBhbm90
aGVyT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAw
KTsKKworICAgICAgICBDaGVja2VkUmVmIHJlZjEgPSBjaGVja2VkT2JqZWN0OworICAgICAgICBF
WFBFQ1RfRVEocmVmMS5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEo
cmVmMS0+c29tZUZ1bmN0aW9uKCksIC03KTsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0
PENoZWNrZWRPYmplY3QmPihyZWYxKS5zb21lRnVuY3Rpb24oKSwgLTcpOworICAgICAgICBFWFBF
Q1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKKworICAgICAgICBjb25zdCBDaGVj
a2VkUmVmIHJlZjIgPSBjaGVja2VkT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEocmVmMi5wdHIo
KSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEocmVmMi5nZXQoKS5zb21lRnVu
Y3Rpb24oKSwgLTcpOworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgQ2hlY2tl
ZE9iamVjdCY+KHJlZjIpLnNvbWVGdW5jdGlvbigpLCAtNyk7CisgICAgICAgIEVYUEVDVF9FUShj
aGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDIpOworCisgICAgICAgIENoZWNrZWRSZWYgcmVmMyA9
IHJlZjI7CisgICAgICAgIEVYUEVDVF9FUShyZWYzLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7Cisg
ICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDMpOworCisgICAgICAg
IHJlZjEgPSBhbm90aGVyT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5w
dHJDb3VudCgpLCAyKTsKKyAgICAgICAgRVhQRUNUX0VRKGFub3RoZXJPYmplY3QucHRyQ291bnQo
KSwgMSk7CisgICAgICAgIEVYUEVDVF9FUShyZWYxLnB0cigpLCAmYW5vdGhlck9iamVjdCk7Cisg
ICAgICAgIEVYUEVDVF9FUShyZWYyLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAgIEVY
UEVDVF9FUShyZWYzLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisKKyAgICAgICAgcmVmMSA9IFdU
Rk1vdmUocmVmMyk7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCks
IDIpOworICAgICAgICBFWFBFQ1RfRVEoYW5vdGhlck9iamVjdC5wdHJDb3VudCgpLCAwKTsKKyAg
ICAgICAgRVhQRUNUX0VRKHJlZjEucHRyKCksICZjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgRVhQ
RUNUX0VRKHJlZjIucHRyKCksICZjaGVja2VkT2JqZWN0KTsKKyAgICB9Cit9CisKK1RFU1QoV1RG
X0NoZWNrZWRSZWYsIERlcml2ZWRDbGFzcykKK3sKKyAgICB7CisgICAgICAgIERlcml2ZWRDaGVj
a2VkT2JqZWN0IGNoZWNrZWRPYmplY3Q7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0
LnB0ckNvdW50KCksIDApOworICAgICAgICB7CisgICAgICAgICAgICBDaGVja2VkUmVmIHJlZiA9
IGNoZWNrZWRPYmplY3Q7CisgICAgICAgICAgICBFWFBFQ1RfRVEoJnJlZi5nZXQoKSwgJmNoZWNr
ZWRPYmplY3QpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi5wdHIoKSwgJmNoZWNrZWRPYmpl
Y3QpOworICAgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PERlcml2ZWRDaGVja2VkT2Jq
ZWN0Jj4ocmVmKS5zb21lRnVuY3Rpb24oKSwgLTExKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShy
ZWYtPnNvbWVGdW5jdGlvbigpLCAtMTEpOworICAgICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRP
YmplY3QucHRyQ291bnQoKSwgMSk7CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNUX0VRKGNoZWNr
ZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CisgICAgfQorCisgICAgeworICAgICAgICBEZXJpdmVk
Q2hlY2tlZE9iamVjdCBjaGVja2VkT2JqZWN0OworICAgICAgICBEZXJpdmVkQ2hlY2tlZE9iamVj
dCBhbm90aGVyT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3Vu
dCgpLCAwKTsKKyAgICAgICAgRVhQRUNUX0VRKGFub3RoZXJPYmplY3QucHRyQ291bnQoKSwgMCk7
CisKKyAgICAgICAgQ2hlY2tlZFJlZjxDaGVja2VkT2JqZWN0PiByZWYgPSBjaGVja2VkT2JqZWN0
OworICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAg
IEVYUEVDVF9FUShyZWYtPnNvbWVGdW5jdGlvbigpLCAtMTEpOworICAgICAgICBFWFBFQ1RfRVEo
c3RhdGljX2Nhc3Q8Q2hlY2tlZE9iamVjdCY+KHJlZikuc29tZUZ1bmN0aW9uKCksIC0xMSk7Cisg
ICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDEpOworICAgICAgICBF
WFBFQ1RfRVEoYW5vdGhlck9iamVjdC5wdHJDb3VudCgpLCAwKTsKKworICAgICAgICByZWYgPSBh
bm90aGVyT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCAmYW5vdGhlck9iamVj
dCk7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDApOworICAg
ICAgICBFWFBFQ1RfRVEoYW5vdGhlck9iamVjdC5wdHJDb3VudCgpLCAxKTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIERlcml2ZWRDaGVja2VkT2JqZWN0IGNoZWNrZWRPYmplY3QgeyAxMCB9Owor
ICAgICAgICBEZXJpdmVkQ2hlY2tlZE9iamVjdCBhbm90aGVyT2JqZWN0IHsgMjAgfTsKKyAgICAg
ICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CisgICAgICAgIEVYUEVD
VF9FUShhbm90aGVyT2JqZWN0LnB0ckNvdW50KCksIDApOworCisgICAgICAgIENoZWNrZWRSZWY8
RGVyaXZlZENoZWNrZWRPYmplY3Q+IHJlZjEgPSBjaGVja2VkT2JqZWN0OworICAgICAgICBFWFBF
Q1RfRVEocmVmMS5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEocmVm
MS0+c29tZUZ1bmN0aW9uKCksIDEwKTsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PENo
ZWNrZWRPYmplY3QmPihyZWYxKS5zb21lRnVuY3Rpb24oKSwgMTApOworICAgICAgICBFWFBFQ1Rf
RVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKKyAgICAgICAgRVhQRUNUX0VRKGFub3Ro
ZXJPYmplY3QucHRyQ291bnQoKSwgMCk7CisKKyAgICAgICAgY29uc3QgQ2hlY2tlZFJlZjxDaGVj
a2VkT2JqZWN0PiByZWYyID0gcmVmMTsKKyAgICAgICAgRVhQRUNUX0VRKHJlZjIucHRyKCksICZj
aGVja2VkT2JqZWN0KTsKKyAgICAgICAgRVhQRUNUX0VRKHJlZjItPnNvbWVGdW5jdGlvbigpLCAx
MCk7CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBDaGVja2VkT2JqZWN0Jj4o
cmVmMikuc29tZUZ1bmN0aW9uKCksIDEwKTsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmpl
Y3QucHRyQ291bnQoKSwgMik7CisgICAgICAgIEVYUEVDVF9FUShhbm90aGVyT2JqZWN0LnB0ckNv
dW50KCksIDApOworCisgICAgICAgIENoZWNrZWRSZWY8Q2hlY2tlZE9iamVjdD4gcmVmMyA9IHJl
ZjE7CisgICAgICAgIEVYUEVDVF9FUShyZWYzLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAg
ICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxDaGVja2VkT2JqZWN0Jj4ocmVmMykuc29tZUZ1bmN0
aW9uKCksIDEwKTsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwg
Myk7CisgICAgICAgIEVYUEVDVF9FUShhbm90aGVyT2JqZWN0LnB0ckNvdW50KCksIDApOworCisg
ICAgICAgIHJlZjEgPSBhbm90aGVyT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9i
amVjdC5wdHJDb3VudCgpLCAyKTsKKyAgICAgICAgRVhQRUNUX0VRKGFub3RoZXJPYmplY3QucHRy
Q291bnQoKSwgMSk7CisgICAgICAgIEVYUEVDVF9FUShyZWYxLnB0cigpLCAmYW5vdGhlck9iamVj
dCk7CisgICAgICAgIEVYUEVDVF9FUShyZWYxLT5zb21lRnVuY3Rpb24oKSwgMjApOworICAgICAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Q2hlY2tlZE9iamVjdCY+KHJlZjEpLnNvbWVGdW5jdGlv
bigpLCAyMCk7CisgICAgICAgIEVYUEVDVF9FUShyZWYyLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7
CisgICAgICAgIEVYUEVDVF9FUShyZWYzLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisKKyAgICAg
ICAgQ2hlY2tlZFJlZjxDaGVja2VkT2JqZWN0PiByZWY0ID0gV1RGTW92ZShyZWYxKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMik7CisgICAgICAgIEVYUEVD
VF9FUShhbm90aGVyT2JqZWN0LnB0ckNvdW50KCksIDEpOworICAgICAgICBFWFBFQ1RfRVEocmVm
Mi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEocmVmMy5wdHIoKSwg
JmNoZWNrZWRPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEocmVmNC5wdHIoKSwgJmFub3RoZXJP
YmplY3QpOworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Q2hlY2tlZE9iamVjdCY+KHJl
ZjQpLnNvbWVGdW5jdGlvbigpLCAyMCk7CisgICAgICAgIEVYUEVDVF9FUShyZWY0LT5zb21lRnVu
Y3Rpb24oKSwgMjApOworCisgICAgICAgIHJlZjEgPSBjaGVja2VkT2JqZWN0OworICAgICAgICBF
WFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAzKTsKKyAgICAgICAgRVhQRUNUX0VR
KGFub3RoZXJPYmplY3QucHRyQ291bnQoKSwgMSk7CisgICAgICAgIEVYUEVDVF9FUShyZWYxLnB0
cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShyZWYxLT5zb21lRnVuY3Rp
b24oKSwgMTApOworICAgICAgICBFWFBFQ1RfRVEocmVmMi5wdHIoKSwgJmNoZWNrZWRPYmplY3Qp
OworICAgICAgICBFWFBFQ1RfRVEocmVmMy5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgIH0K
K30KKworVEVTVChXVEZfQ2hlY2tlZFJlZiwgSGFzaFNldCkKK3sKKyAgICB7CisgICAgICAgIENo
ZWNrZWRPYmplY3QgY2hlY2tlZE9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmpl
Y3QucHRyQ291bnQoKSwgMCk7CisKKyAgICAgICAgSGFzaFNldDxDaGVja2VkUmVmPENoZWNrZWRP
YmplY3Q+PiBzZXQ7CisgICAgICAgIHsKKyAgICAgICAgICAgIENoZWNrZWRSZWYgcmVmID0gY2hl
Y2tlZE9iamVjdDsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZWYucHRyKCksICZjaGVja2VkT2Jq
ZWN0KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDEp
OworCisgICAgICAgICAgICBzZXQuYWRkKHJlZik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoY2hl
Y2tlZE9iamVjdC5wdHJDb3VudCgpLCAyKTsKKyAgICAgICAgfQorICAgICAgICBFWFBFQ1RfRVEo
Y2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENo
ZWNrZWRPYmplY3Qgb2JqZWN0MTsKKyAgICAgICAgRGVyaXZlZENoZWNrZWRPYmplY3Qgb2JqZWN0
MjsKKyAgICAgICAgRVhQRUNUX0VRKG9iamVjdDEucHRyQ291bnQoKSwgMCk7CisgICAgICAgIEVY
UEVDVF9FUShvYmplY3QyLnB0ckNvdW50KCksIDApOworCisgICAgICAgIEhhc2hTZXQ8Q2hlY2tl
ZFJlZjxDaGVja2VkT2JqZWN0Pj4gc2V0OworICAgICAgICBzZXQuYWRkKG9iamVjdDEpOworICAg
ICAgICBFWFBFQ1RfRVEob2JqZWN0MS5wdHJDb3VudCgpLCAxKTsKKyAgICAgICAgRVhQRUNUX0VR
KG9iamVjdDIucHRyQ291bnQoKSwgMCk7CisgICAgICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlu
cyhvYmplY3QxKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMob2JqZWN0Mikp
OworCisgICAgICAgIHNldC5hZGQob2JqZWN0MSk7CisgICAgICAgIEVYUEVDVF9FUShvYmplY3Qx
LnB0ckNvdW50KCksIDEpOworICAgICAgICBFWFBFQ1RfRVEob2JqZWN0Mi5wdHJDb3VudCgpLCAw
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKG9iamVjdDEpKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKHNldC5jb250YWlucyhvYmplY3QyKSk7CisKKyAgICAgICAgeworICAgICAg
ICAgICAgQ2hlY2tlZFJlZjxEZXJpdmVkQ2hlY2tlZE9iamVjdD4gcmVmIHsgb2JqZWN0MiB9Owor
ICAgICAgICAgICAgc2V0LmFkZChyZWYpOworICAgICAgICAgICAgRVhQRUNUX0VRKG9iamVjdDEu
cHRyQ291bnQoKSwgMSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEob2JqZWN0Mi5wdHJDb3VudCgp
LCAyKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhvYmplY3QxKSk7Cisg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMob2JqZWN0MikpOworICAgICAgICB9
CisKKyAgICAgICAgRVhQRUNUX0VRKG9iamVjdDEucHRyQ291bnQoKSwgMSk7CisgICAgICAgIEVY
UEVDVF9FUShvYmplY3QyLnB0ckNvdW50KCksIDEpOworICAgICAgICBFWFBFQ1RfVFJVRShzZXQu
Y29udGFpbnMob2JqZWN0MSkpOworICAgICAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMob2Jq
ZWN0MikpOworCisgICAgICAgIHNldC5yZW1vdmUob2JqZWN0MSk7CisgICAgICAgIEVYUEVDVF9F
UShvYmplY3QxLnB0ckNvdW50KCksIDApOworICAgICAgICBFWFBFQ1RfRVEob2JqZWN0Mi5wdHJD
b3VudCgpLCAxKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlucyhvYmplY3QxKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhvYmplY3QyKSk7CisgICAgfQorCisg
ICAgeworICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENoZWNrZWRPYmplY3Q+PiBvYmpl
Y3RzOworICAgICAgICBvYmplY3RzLmFwcGVuZChtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxDaGVja2VkT2JqZWN0PigwKSk7CisgICAgICAgIEVYUEVDVF9FUShvYmplY3RzWzBdLT5w
dHJDb3VudCgpLCAwKTsKKworICAgICAgICBIYXNoU2V0PENoZWNrZWRSZWY8Q2hlY2tlZE9iamVj
dD4+IHNldDsKKyAgICAgICAgc2V0LmFkZCgqb2JqZWN0c1swXS5nZXQoKSk7CisgICAgICAgIGF1
dG8gaW5pdGlhbENhcGFjaXR5ID0gc2V0LmNhcGFjaXR5KCk7CisKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgc2V0LmNhcGFjaXR5KCkgPT0gaW5pdGlhbENhcGFjaXR5OyArK2kpIHsKKyAg
ICAgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxEZXJpdmVkQ2hlY2tlZE9iamVjdD4oaSArIDEp
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxDaGVja2VkT2JqZWN0PihpICsgMSkpOworICAg
ICAgICAgICAgc2V0LmFkZCgqb2JqZWN0cy5sYXN0KCkpOworICAgICAgICB9CisKKyAgICAgICAg
Zm9yIChhdXRvJiBvYmplY3QgOiBvYmplY3RzKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEob2Jq
ZWN0LT5wdHJDb3VudCgpLCAxKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlu
cygqb2JqZWN0KSk7CisgICAgICAgIH0KKworICAgICAgICBWZWN0b3I8Ym9vbD4gc2VlbjsKKyAg
ICAgICAgc2Vlbi5yZXNpemUob2JqZWN0cy5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIGl0
ZW0gOiBzZXQpCisgICAgICAgICAgICBzZWVuW2l0ZW0tPnNvbWVGdW5jdGlvbigpXSA9IHRydWU7
CisgICAgICAgIGZvciAoYXV0byB2YWx1ZSA6IHNlZW4pCisgICAgICAgICAgICBFWFBFQ1RfVFJV
RSh2YWx1ZSk7CisKKyAgICAgICAgYXV0byBzZXRWZWN0b3IgPSBXVEY6OmNvcHlUb1ZlY3Rvcihz
ZXQpOworCisgICAgICAgIGZvciAoYXV0byYgb2JqZWN0IDogb2JqZWN0cykKKyAgICAgICAgICAg
IEVYUEVDVF9FUShvYmplY3QtPnB0ckNvdW50KCksIDIpOworICAgIH0KK30KKworfQorCit9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434578</attachid>
            <date>2021-07-29 15:23:12 -0700</date>
            <delta_ts>2021-08-02 14:46:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227164-20210729152311.patch</filename>
            <type>text/plain</type>
            <size>40540</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiYWE4M2MwMjBiZTQwNjRkZDVjODFh
ODliYTYxOGZhOTY1NTliNDMuLjM0NWFjNjZmOWY4NDE1ZWEwMGFhZGMwNjg2ZmNhZjZkYmE3MmY3
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMDctMjggIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIENoZWNrZWRSZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzE2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpa2UgcjI3ODM0NCwgdGhpcyBwYXRjaCBp
bnRyb2R1Y2VzIGEgbmV3IHR5cGUgb2Ygc21hcnQgcG9pbnRlciwgQ2hlY2tlZFJlZiwKKyAgICAg
ICAgd2hpY2ggbGV0cyBlYWNoIG9iamVjdCBrZWVwIHRyYWNrIG9mIHBvaW50ZXJzIHBvaW50aW5n
IHRvIHRoZSBvYmplY3QuCisKKyAgICAgICAgQXMgd2l0aCBDaGVja2VkUHRyLCB0aGUgcHVycG9z
ZSBvZiB0aGUgaW50ZXJuYWwgY291bnRlciBmb3IgQ2hlY2tlZFJlZiBpcworICAgICAgICB0byBy
ZWxlYXNlIGFzc2VydCB0aGF0IHRoZXJlIGlzIG5vIG91dHN0YW5kaW5nIHBvaW50ZXIgYXQgdGhl
IHRpbWUgb2YgZGVzdHJ1Y3Rpb24KKyAgICAgICAgaW5zdGVhZCBvZiBrZWVwaW5nIHRoZSBvYmpl
Y3QgYWxpdmUgd2hlbiB0aGVyZSBpcyBvbmUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIHJl
bW92ZXMgbWFrZUNoZWNrZWRQdHIgaW4gZmF2b3Igb2YgdXNpbmcgQ2hlY2tlZFB0ciB3aXRoCisg
ICAgICAgIHRlbXBsYXRlIGFyZ3VtZW50IGRlZHVjdGlvbiBpbiBDKysxNy4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvQ2hlY2tlZFB0ci5oOgorICAgICAgICAoV1RGOjpDaGVja2Vk
UHRyOjpDaGVja2VkUHRyKTogQWRkZWQgdmFyaWFudHMgd2hpY2ggdGFrZSBDaGVja2VkUmVmIGFz
IGFyZ3VtZW50cy4KKyAgICAgICAgKFdURjo6bWFrZUNoZWNrZWRQdHIpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpDYW5NYWtlQ2hlY2tlZFB0cik6IE1vdmVkIHRvIENoZWNrZWRSZWYuaAorICAg
ICAgICAqIHd0Zi9DaGVja2VkUmVmLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVm
Ojp+Q2hlY2tlZFJlZik6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVmOjpDaGVja2Vk
UmVmKTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWY6OmlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWY6OmlzSGFzaFRh
YmxlRW1wdHlWYWx1ZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVmOjpo
YXNoVGFibGVFbXB0eVZhbHVlKTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWY6OnB0
ckFsbG93aW5nSGFzaFRhYmxlRW1wdHlWYWx1ZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV1RG
OjpDaGVja2VkUmVmOjpwdHJBbGxvd2luZ0hhc2hUYWJsZUVtcHR5VmFsdWUpOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6Q2hlY2tlZFJlZjo6cHRyIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXVEY6
OkNoZWNrZWRSZWY6OnB0cik6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2VkUmVmOjpnZXQg
Y29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tlZFJlZjo6Z2V0KTogQWRkZWQuCisg
ICAgICAgIChXVEY6OkNoZWNrZWRSZWY6Om9wZXJhdG9yLT4gY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdURjo6Q2hlY2tlZFJlZjo6b3BlcmF0b3ItPik6IEFkZGVkLgorICAgICAgICAoV1RGOjpD
aGVja2VkUmVmOjpvcGVyYXRvciBjb25zdCBUJiBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV1RG
OjpDaGVja2VkUmVmOjpvcGVyYXRvciBUJik6IEFkZGVkLgorICAgICAgICAoV1RGOjpDaGVja2Vk
UmVmOjpvcGVyYXRvciEgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2hlY2tlZFJlZjo6
b3BlcmF0b3I9KTogQWRkZWQuCisgICAgICAgIChXVEY6OkNoZWNrZWRSZWY6OnJlbGVhc2VQdHIp
OiBBZGRlZC4gUmV0dXJucyBtX3B0ciB3aXRob3V0IGNhbGxpbmcgZGVjcmVtZW50UHRyQ291bnQu
CisgICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCBvZiBsZWFrUHRyIGluIFJlZiBidXQgd2UgZG9u
J3QgY2FsbCB0aGlzIHRoYXQgc2luY2UgQ2hlY2tlZFJlZiBvcgorICAgICAgICBDaGVja2VkUHRy
IGlzIGdlbmVyYWxseSBub3QgdXNlZCB0byBtYW5hZ2UgdGhlIG9iamVjdCBsaWZldGltZS4KKyAg
ICAgICAgKFdURjo6Q2hlY2tlZFJlZjo6cG9pc29uKTogQWRkZWQuCisgICAgICAgIChXVEY6OkNo
ZWNrZWRSZWY6OnVucG9pc29uKTogQWRkZWQuCisgICAgICAgIChXVEY6OmlzKTogQWRkZWQuCisg
ICAgICAgIChXVEY6OkNoZWNrZWRSZWZIYXNoVHJhaXRzKTogQWRkZWQuCisgICAgICAgIChXVEY6
OkNoZWNrZWRSZWZIYXNoVHJhaXRzOjplbXB0eVZhbHVlKTogQWRkZWQuCisgICAgICAgIChXVEY6
OkNoZWNrZWRSZWZIYXNoVHJhaXRzOjpjb25zdHJ1Y3RFbXB0eVZhbHVlKTogQWRkZWQuCisgICAg
ICAgIChXVEY6OkNoZWNrZWRSZWZIYXNoVHJhaXRzOjppc0VtcHR5VmFsdWUpOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6Q2hlY2tlZFJlZkhhc2hUcmFpdHM6OnBlZWspOiBBZGRlZC4KKyAgICAgICAg
KFdURjo6Q2hlY2tlZFJlZkhhc2hUcmFpdHM6OnRha2UpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
Q2FuTWFrZUNoZWNrZWRQdHIpOiBNb3ZlZCBmcm9tIENoZWNrZWRQdHIuaAorICAgICAgICAqIHd0
Zi9Gb3J3YXJkLmg6CisKIDIwMjEtMDctMjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIG1hY09TIE1vbnRlcmV5IGFuZCBwYXJhbGxl
bCBPU2VzIG5vIGxvbmdlciBuZWVkIHIyODAxMDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGM1ZDgzMjY5ZWFmNDczYzBiODQxMGY4YTAxODIxNTM0NGU4NTgy
YWIuLmE1ODdkMWFhZGZiNGRjNTU4M2I0NTVmNWMwMTA1ZDNmMGE1ZjZiMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTExLDYgKzUxMSw3IEBACiAJCTlC
QjkxRjUxMjY0OEVBNEQwMEE1NjIxNyAvKiBDaGVja2VkUHRyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENo
ZWNrZWRQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJDNzBGMDQxNzZDMzc5
RDAwMTAxREVDIC8qIEF0b21TdHJpbmdUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBdG9tU3RyaW5nVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QkQ4RjQwQTE3NkMyQUQ4MDAwMkQ4NjUgLyogQXRvbVN0cmluZ1RhYmxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF0b21TdHJpbmdUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5QkYwMDEzNDI2N0M0Q0NGMDBEQ0ZCM0YgLyogQ2hlY2tlZFJlZi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDaGVja2VkUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRTE1MzM1
MjY3MUYwMEYwMEM3RDA5NiAvKiBXZWFrSGFzaE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrSGFz
aE1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QzY3QzU0MjU4OTM0OEUyODVC
NDk2OTkgLyogSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMUI4OUI4NzIyMUUwMDBGMDBFQjRDRUEgLyogU0RLVmFyaWFudC54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBTREtWYXJpYW50LnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTk1LDYgKzk5Niw3IEBACiAJCQkJQThB
NDcyNkExNTFBODI1QTAwNDEyM0ZGIC8qIENoZWNrZWRBcml0aG1ldGljLmggKi8sCiAJCQkJQThB
NDcyNkIxNTFBODI1QTAwNDEyM0ZGIC8qIENoZWNrZWRCb29sZWFuLmggKi8sCiAJCQkJOUJCOTFG
NTEyNjQ4RUE0RDAwQTU2MjE3IC8qIENoZWNrZWRQdHIuaCAqLywKKwkJCQk5QkYwMDEzNDI2N0M0
Q0NGMDBEQ0ZCM0YgLyogQ2hlY2tlZFJlZi5oICovLAogCQkJCTBGNjZCMjgwMURDOTdCQUIwMDRB
MUQzRiAvKiBDbG9ja1R5cGUuY3BwICovLAogCQkJCTBGNjZCMjgxMURDOTdCQUIwMDRBMUQzRiAv
KiBDbG9ja1R5cGUuaCAqLywKIAkJCQkwRkM0RURFNTE2OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQ
cmludGVyLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDBmYTA4Yjc4N2UxNmUwNTE4Y2Zi
ZDgxYTdjZTgwZmNiYmVmNzc2YzAuLjA1MTdkZGJlM2JlN2ViMTQyMTU5Y2QxMTg1MThmZjU5ZTE4
NTdmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0zMCw2ICszMCw3IEBAIHNldChXVEZfUFVC
TElDX0hFQURFUlMKICAgICBDaGVja2VkQXJpdGhtZXRpYy5oCiAgICAgQ2hlY2tlZEJvb2xlYW4u
aAogICAgIENoZWNrZWRQdHIuaAorICAgIENoZWNrZWRSZWYuaAogICAgIENsb2NrVHlwZS5oCiAg
ICAgQ29tbWFQcmludGVyLmgKICAgICBDb21wYWN0UG9pbnRlclR1cGxlLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRQdHIu
aAppbmRleCA0NWMyYTExNjFkMTEzMjRhOGNiZWQyYzMwZmIzOWQyNmM2MTFkYzkzLi5hNzRiOGRk
YWRkZGU5NmEwNWQ1YjVkMWNmMGQ3ZDhiNzRjMDBjMTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9DaGVja2VkUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZFB0ci5oCkBAIC0y
NSwyMSArMjUsMjAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgotI2luY2x1ZGUgPHd0Zi9SYXdQdHJUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZFJlZi5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgUHRyVHJhaXRzID0gUmF3UHRyVHJhaXRzPFQ+PgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgUHRyVHJhaXRzPgogY2xhc3MgQ2hlY2tlZFB0ciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAKLSAgICBDaGVja2VkUHRyKCkKKyAgICBjb25zdGV4cHIgQ2hl
Y2tlZFB0cigpCiAgICAgICAgIDogbV9wdHIobnVsbHB0cikKICAgICB7IH0KIAotICAgIENoZWNr
ZWRQdHIoc3RkOjpudWxscHRyX3QpCisgICAgY29uc3RleHByIENoZWNrZWRQdHIoc3RkOjpudWxs
cHRyX3QpCiAgICAgICAgIDogbV9wdHIobnVsbHB0cikKICAgICB7IH0KIApAQCAtNjUsMTUgKzY0
LDMzIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUs
IHR5cGVuYW1lIE90aGVyUHRyVHJhaXRzPiBDaGVja2VkUHRyKGNvbnN0IENoZWNrZWRQdHI8T3Ro
ZXJUeXBlLCBPdGhlclB0clRyYWl0cz4mIG90aGVyKQotICAgICAgICA6IG1fcHRyIHsgb3RoZXIu
bV9wdHIgfQotICAgIHsKLSAgICAgICAgcmVmSWZOb3ROdWxsKCk7Ci0gICAgfQorICAgICAgICA6
IENoZWNrZWRQdHIoT3RoZXJQdHJUcmFpdHM6OnVud3JhcChvdGhlci5tX3B0cikpCisgICAgeyB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1lIE90aGVyUHRyVHJh
aXRzPiBDaGVja2VkUHRyKENoZWNrZWRQdHI8T3RoZXJUeXBlLCBPdGhlclB0clRyYWl0cz4mJiBv
dGhlcikKICAgICAgICAgOiBtX3B0ciB7IFB0clRyYWl0czo6ZXhjaGFuZ2Uob3RoZXIubV9wdHIs
IG51bGxwdHIpIH0KICAgICB7IH0KIAorICAgIENoZWNrZWRQdHIoQ2hlY2tlZFJlZjxULCBQdHJU
cmFpdHM+JiBvdGhlcikKKyAgICAgICAgOiBDaGVja2VkUHRyKFB0clRyYWl0czo6dW53cmFwKG90
aGVyLm1fcHRyKSkKKyAgICB7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyVHlwZSwg
dHlwZW5hbWUgT3RoZXJQdHJUcmFpdHM+IENoZWNrZWRQdHIoY29uc3QgQ2hlY2tlZFJlZjxPdGhl
clR5cGUsIE90aGVyUHRyVHJhaXRzPiYgb3RoZXIpCisgICAgICAgIDogQ2hlY2tlZFB0cihPdGhl
clB0clRyYWl0czo6dW53cmFwKG90aGVyLm1fcHRyKSkKKyAgICB7IH0KKworICAgIENoZWNrZWRQ
dHIoQ2hlY2tlZFJlZjxULCBQdHJUcmFpdHM+JiYgb3RoZXIpCisgICAgICAgIDogbV9wdHIgeyBv
dGhlci5yZWxlYXNlUHRyKCkgfQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdldCgpKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1lIE90aGVyUHRyVHJh
aXRzPiBDaGVja2VkUHRyKENoZWNrZWRSZWY8T3RoZXJUeXBlLCBPdGhlclB0clRyYWl0cz4mJiBv
dGhlcikKKyAgICAgICAgOiBtX3B0ciB7IG90aGVyLnJlbGVhc2VQdHIoKSB9CisgICAgeworICAg
ICAgICBBU1NFUlQoZ2V0KCkpOworICAgIH0KKwogICAgIENoZWNrZWRQdHIoSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVHlwZSkKICAgICAgICAgOiBtX3B0cihQdHJUcmFpdHM6Omhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpKQogICAgIHsgfQpAQCAtMTYzLDE2ICsxODAsNiBAQCBwcml2YXRlOgogICAgIHR5
cGVuYW1lIFB0clRyYWl0czo6U3RvcmFnZVR5cGUgbV9wdHI7CiB9OwogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBQdHJUcmFpdHMgPSBSYXdQdHJUcmFpdHM8VD4+IGlubGluZSBDaGVj
a2VkUHRyPFQsIFB0clRyYWl0cz4gbWFrZUNoZWNrZWRQdHIoVCogcG9pbnRlcikKLXsKLSAgICBy
ZXR1cm4gcG9pbnRlcjsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHJh
aXRzID0gUmF3UHRyVHJhaXRzPFQ+PiBpbmxpbmUgQ2hlY2tlZFB0cjxULCBQdHJUcmFpdHM+IG1h
a2VDaGVja2VkUHRyKFQmIHJlZmVyZW5jZSkKLXsKLSAgICByZXR1cm4gJnJlZmVyZW5jZTsKLX0K
LQogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFB0clRyYWl0cz4KIHN0cnVjdCBHZXRQ
dHJIZWxwZXI8Q2hlY2tlZFB0cjxULCBQdHJUcmFpdHM+PiB7CiAgICAgdHlwZWRlZiBUKiBQdHJU
eXBlOwpAQCAtMTk2LDE3ICsyMDMsNiBAQCBpbmxpbmUgYm9vbCBpcyhjb25zdCBDaGVja2VkUHRy
PEFyZ1R5cGUsIEFyZ1B0clRyYWl0cz4mIHNvdXJjZSkKICAgICByZXR1cm4gaXM8RXhwZWN0ZWRU
eXBlPihzb3VyY2UuZ2V0KCkpOwogfQogCi1jbGFzcyBDYW5NYWtlQ2hlY2tlZFB0ciB7Ci1wdWJs
aWM6Ci0gICAgfkNhbk1ha2VDaGVja2VkUHRyKCkgeyBSRUxFQVNFX0FTU0VSVCghbV9jb3VudCk7
IH0KLQotICAgIHVpbnQxNl90IHB0ckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsgfQot
ICAgIHZvaWQgaW5jcmVtZW50UHRyQ291bnQoKSB7ICsrbV9jb3VudDsgfQotICAgIHZvaWQgZGVj
cmVtZW50UHRyQ291bnQoKSB7IEFTU0VSVChtX2NvdW50KTsgLS1tX2NvdW50OyB9Ci1wcml2YXRl
OgotICAgIHVpbnQxNl90IG1fY291bnQgeyAwIH07Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQ
PiBzdHJ1Y3QgSGFzaFRyYWl0czxDaGVja2VkUHRyPFA+PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0
czxDaGVja2VkUHRyPFA+PiB7CiAgICAgc3RhdGljIFAqIGVtcHR5VmFsdWUoKSB7IHJldHVybiBu
dWxscHRyOyB9CiAKQEAgLTIyOCw2ICsyMjQsNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1
Y3QgRGVmYXVsdEhhc2g8Q2hlY2tlZFB0cjxQPj4gOiBQdHJIYXNoPENoZWNrZWRQdHI8UD4+CiB9
IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpDaGVja2VkUHRyOwotdXNpbmcgV1RGOjpD
YW5NYWtlQ2hlY2tlZFB0cjsKLXVzaW5nIFdURjo6bWFrZUNoZWNrZWRQdHI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRSZWYuaCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRS
ZWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NjQxOGRkYTFkN2QxOWQ4MzE2YzQ5MTg5ODdkZDRmZDZlOTNhOWFj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZFJlZi5oCkBAIC0wLDAg
KzEsMjM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1Jhd1B0
clRyYWl0cy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgUHRyVHJhaXRzPgorY2xhc3MgQ2hlY2tlZFJlZiB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisKKyAgICB+Q2hlY2tlZFJlZigpCisgICAgeworICAgICAgICB1
bnBvaXNvbigqdGhpcyk7CisgICAgICAgIGlmIChhdXRvKiBwdHIgPSBQdHJUcmFpdHM6OmV4Y2hh
bmdlKG1fcHRyLCBudWxscHRyKSkKKyAgICAgICAgICAgIFB0clRyYWl0czo6dW53cmFwKHB0cikt
PmRlY3JlbWVudFB0ckNvdW50KCk7CisgICAgfQorCisgICAgQ2hlY2tlZFJlZihUJiBvYmplY3Qp
CisgICAgICAgIDogbV9wdHIoJm9iamVjdCkKKyAgICB7CisgICAgICAgIFB0clRyYWl0czo6dW53
cmFwKG1fcHRyKS0+aW5jcmVtZW50UHRyQ291bnQoKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIENoZWNrZWRSZWYoY29uc3QgQ2hlY2tlZFJlZiYgb3RoZXIpCisgICAgICAgIDogbV9wdHIg
eyBQdHJUcmFpdHM6OnVud3JhcChvdGhlci5tX3B0cikgfQorICAgIHsKKyAgICAgICAgUHRyVHJh
aXRzOjp1bndyYXAobV9wdHIpLT5pbmNyZW1lbnRQdHJDb3VudCgpOworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE90aGVyVHlwZSwgdHlwZW5hbWUgT3RoZXJQdHJUcmFpdHM+CisgICAg
Q2hlY2tlZFJlZihjb25zdCBDaGVja2VkUmVmPE90aGVyVHlwZSwgT3RoZXJQdHJUcmFpdHM+JiBv
dGhlcikKKyAgICAgICAgOiBtX3B0ciB7IFB0clRyYWl0czo6dW53cmFwKG90aGVyLm1fcHRyKSB9
CisgICAgeworICAgICAgICBQdHJUcmFpdHM6OnVud3JhcChtX3B0ciktPmluY3JlbWVudFB0ckNv
dW50KCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBDaGVja2VkUmVmKENoZWNrZWRSZWYm
JiBvdGhlcikKKyAgICAgICAgOiBtX3B0ciB7IG90aGVyLnJlbGVhc2VQdHIoKSB9CisgICAgewor
ICAgICAgICBBU1NFUlQobV9wdHIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90
aGVyVHlwZSwgdHlwZW5hbWUgT3RoZXJQdHJUcmFpdHM+CisgICAgQ2hlY2tlZFJlZihDaGVja2Vk
UmVmPE90aGVyVHlwZSwgT3RoZXJQdHJUcmFpdHM+JiYgb3RoZXIpCisgICAgICAgIDogbV9wdHIg
eyBvdGhlci5yZWxlYXNlUHRyKCkgfQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcHRyKTsKKyAg
ICB9CisKKyAgICBDaGVja2VkUmVmKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9wdHIo
UHRyVHJhaXRzOjpoYXNoVGFibGVEZWxldGVkVmFsdWUoKSkgeyB9CisgICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFB0clRyYWl0czo6aXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUobV9wdHIpOyB9CisKKyAgICBDaGVja2VkUmVmKEhhc2hUYWJsZUVtcHR5VmFs
dWVUeXBlKSA6IG1fcHRyKGhhc2hUYWJsZUVtcHR5VmFsdWUoKSkgeyB9CisgICAgYm9vbCBpc0hh
c2hUYWJsZUVtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBoYXNoVGFibGVFbXB0
eVZhbHVlKCk7IH0KKyAgICBzdGF0aWMgVCogaGFzaFRhYmxlRW1wdHlWYWx1ZSgpIHsgcmV0dXJu
IG51bGxwdHI7IH0KKworICAgIGNvbnN0IFQqIHB0ckFsbG93aW5nSGFzaFRhYmxlRW1wdHlWYWx1
ZSgpIGNvbnN0IHsgQVNTRVJUKG1fcHRyIHx8IGlzSGFzaFRhYmxlRW1wdHlWYWx1ZSgpKTsgcmV0
dXJuIFB0clRyYWl0czo6dW53cmFwKG1fcHRyKTsgfQorICAgIFQqIHB0ckFsbG93aW5nSGFzaFRh
YmxlRW1wdHlWYWx1ZSgpIHsgQVNTRVJUKG1fcHRyIHx8IGlzSGFzaFRhYmxlRW1wdHlWYWx1ZSgp
KTsgcmV0dXJuIFB0clRyYWl0czo6dW53cmFwKG1fcHRyKTsgfQorCisgICAgQUxXQVlTX0lOTElO
RSBjb25zdCBUKiBwdHIoKSBjb25zdCB7IHJldHVybiBQdHJUcmFpdHM6OnVud3JhcChtX3B0cik7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIFQqIHB0cigpIHsgcmV0dXJuIFB0clRyYWl0czo6dW53cmFw
KG1fcHRyKTsgfQorICAgIEFMV0FZU19JTkxJTkUgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyBBU1NF
UlQocHRyKCkpOyByZXR1cm4gKnB0cigpOyB9CisgICAgQUxXQVlTX0lOTElORSBUJiBnZXQoKSB7
IEFTU0VSVChwdHIoKSk7IHJldHVybiAqcHRyKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0
IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBwdHIoKTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgVCogb3BlcmF0b3ItPigpIHsgcmV0dXJuIHB0cigpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IG9wZXJhdG9yIGNvbnN0IFQmKCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIG9wZXJhdG9yIFQmKCkgeyByZXR1cm4gZ2V0KCk7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWdldCgpOyB9CisKKyAgICBDaGVja2Vk
UmVmJiBvcGVyYXRvcj0oVCYgcmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgdW5wb2lzb24oKnRo
aXMpOworICAgICAgICBDaGVja2VkUmVmIGNvcHkgeyByZWZlcmVuY2UgfTsKKyAgICAgICAgUHRy
VHJhaXRzOjpzd2FwKG1fcHRyLCBjb3B5Lm1fcHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKworICAgIENoZWNrZWRSZWYmIG9wZXJhdG9yPShjb25zdCBDaGVja2VkUmVmJiBvdGhl
cikKKyAgICB7CisgICAgICAgIHVucG9pc29uKCp0aGlzKTsKKyAgICAgICAgQ2hlY2tlZFJlZiBj
b3B5IHsgb3RoZXIgfTsKKyAgICAgICAgUHRyVHJhaXRzOjpzd2FwKG1fcHRyLCBjb3B5Lm1fcHRy
KTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE90aGVyVHlwZSwgdHlwZW5hbWUgT3RoZXJQdHJUcmFpdHM+IENoZWNrZWRSZWYmIG9wZXJhdG9y
PShjb25zdCBDaGVja2VkUmVmPE90aGVyVHlwZSwgT3RoZXJQdHJUcmFpdHM+JiBvdGhlcikKKyAg
ICB7CisgICAgICAgIHVucG9pc29uKCp0aGlzKTsKKyAgICAgICAgQ2hlY2tlZFJlZiBjb3B5IHsg
b3RoZXIgfTsKKyAgICAgICAgUHRyVHJhaXRzOjpzd2FwKG1fcHRyLCBjb3B5Lm1fcHRyKTsKKyAg
ICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIENoZWNrZWRSZWYmIG9wZXJhdG9yPShD
aGVja2VkUmVmJiYgb3RoZXIpCisgICAgeworICAgICAgICB1bnBvaXNvbigqdGhpcyk7CisgICAg
ICAgIENoZWNrZWRSZWYgbW92ZWQgeyBXVEZNb3ZlKG90aGVyKSB9OworICAgICAgICBQdHJUcmFp
dHM6OnN3YXAobV9wdHIsIG1vdmVkLm1fcHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyVHlwZSwgdHlwZW5hbWUgT3RoZXJQdHJU
cmFpdHM+IENoZWNrZWRSZWYmIG9wZXJhdG9yPShDaGVja2VkUmVmPE90aGVyVHlwZSwgT3RoZXJQ
dHJUcmFpdHM+JiYgb3RoZXIpCisgICAgeworICAgICAgICB1bnBvaXNvbigqdGhpcyk7CisgICAg
ICAgIENoZWNrZWRSZWYgbW92ZWQgeyBXVEZNb3ZlKG90aGVyKSB9OworICAgICAgICBQdHJUcmFp
dHM6OnN3YXAobV9wdHIsIG1vdmVkLm1fcHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1l
IE90aGVyUHRyVHJhaXRzPiBmcmllbmQgY2xhc3MgQ2hlY2tlZFJlZjsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1lIE90aGVyUHRyVHJhaXRzPiBmcmllbmQgY2xhc3Mg
Q2hlY2tlZFB0cjsKKworICAgIFQqIHJlbGVhc2VQdHIoKQorICAgIHsKKyAgICAgICAgVCogcHRy
ID0gUHRyVHJhaXRzOjpleGNoYW5nZShtX3B0ciwgbnVsbHB0cik7CisgICAgICAgIHBvaXNvbigq
dGhpcyk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisjaWYgQVNBTl9FTkFCTEVECisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9iamVjdFR5cGU+CisgICAgdm9pZCBwb2lzb24oT2JqZWN0
VHlwZSYgb2JqZWN0KQorICAgIHsKKyAgICAgICAgX19hc2FuX3BvaXNvbl9tZW1vcnlfcmVnaW9u
KCZvYmplY3QsIHNpemVvZihPYmplY3RUeXBlKSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIE9iamVjdFR5cGU+CisgICAgdm9pZCB1bnBvaXNvbihPYmplY3RUeXBlJiBvYmplY3Qp
CisgICAgeworICAgICAgICBpZiAoX19hc2FuX2FkZHJlc3NfaXNfcG9pc29uZWQoJm9iamVjdCkp
CisgICAgICAgICAgICBfX2FzYW5fdW5wb2lzb25fbWVtb3J5X3JlZ2lvbigmb2JqZWN0LCBzaXpl
b2YoT2JqZWN0VHlwZSkpOworICAgIH0KKyNlbHNlCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9i
amVjdFR5cGU+IHZvaWQgcG9pc29uKE9iamVjdFR5cGUmKSB7IH0KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgT2JqZWN0VHlwZT4gdm9pZCB1bnBvaXNvbihPYmplY3RUeXBlJikgeyB9CisjZW5kaWYK
KworICAgIHR5cGVuYW1lIFB0clRyYWl0czo6U3RvcmFnZVR5cGUgbV9wdHI7Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzPgorc3RydWN0IEdldFB0ckhlbHBl
cjxDaGVja2VkUmVmPFQsIFB0clRyYWl0cz4+IHsKKyAgICB0eXBlZGVmIFQqIFB0clR5cGU7Cisg
ICAgc3RhdGljIFQqIGdldFB0cihjb25zdCBDaGVja2VkUmVmPFQsIFB0clRyYWl0cz4mIHApIHsg
cmV0dXJuIGNvbnN0X2Nhc3Q8VCo+KHAucHRyKCkpOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KK3N0cnVjdCBJc1NtYXJ0UHRyPENoZWNrZWRSZWY8VCwgVT4+IHsK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSB0cnVlOworfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlLCB0eXBlbmFtZSBBcmdQdHJU
cmFpdHM+CitpbmxpbmUgYm9vbCBpcyhDaGVja2VkUmVmPEFyZ1R5cGUsIEFyZ1B0clRyYWl0cz4m
IHNvdXJjZSkKK3sKKyAgICByZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3VyY2UuZ2V0KCkpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGUsIHR5
cGVuYW1lIEFyZ1B0clRyYWl0cz4KK2lubGluZSBib29sIGlzKGNvbnN0IENoZWNrZWRSZWY8QXJn
VHlwZSwgQXJnUHRyVHJhaXRzPiYgc291cmNlKQoreworICAgIHJldHVybiBpczxFeHBlY3RlZFR5
cGU+KHNvdXJjZS5nZXQoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBDaGVj
a2VkUmVmSGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxDaGVja2VkUmVmPFA+PiB7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOworICAg
IHN0YXRpYyBDaGVja2VkUmVmPFA+IGVtcHR5VmFsdWUoKSB7IHJldHVybiBIYXNoVGFibGVFbXB0
eVZhbHVlOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWU+CisgICAgc3RhdGljIHZvaWQgY29u
c3RydWN0RW1wdHlWYWx1ZShDaGVja2VkUmVmPFA+JiBzbG90KQorICAgIHsKKyAgICAgICAgbmV3
IChOb3ROdWxsLCBzdGQ6OmFkZHJlc3NvZihzbG90KSkgQ2hlY2tlZFJlZjxQPihIYXNoVGFibGVF
bXB0eVZhbHVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzSXNFbXB0
eVZhbHVlRnVuY3Rpb24gPSB0cnVlOworICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25z
dCBDaGVja2VkUmVmPFA+JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuaXNIYXNoVGFibGVFbXB0eVZh
bHVlKCk7IH0KKworICAgIHVzaW5nIFBlZWtUeXBlID0gUCo7CisgICAgc3RhdGljIFBlZWtUeXBl
IHBlZWsoY29uc3QgQ2hlY2tlZFJlZjxQPiYgdmFsdWUpIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UGVl
a1R5cGU+KHZhbHVlLnB0ckFsbG93aW5nSGFzaFRhYmxlRW1wdHlWYWx1ZSgpKTsgfQorICAgIHN0
YXRpYyBQZWVrVHlwZSBwZWVrKFAqIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQorCisgICAgdXNp
bmcgVGFrZVR5cGUgPSBDaGVja2VkUHRyPFA+OworICAgIHN0YXRpYyBUYWtlVHlwZSB0YWtlKENo
ZWNrZWRSZWY8UD4mJiB2YWx1ZSkgeyByZXR1cm4gaXNFbXB0eVZhbHVlKHZhbHVlKSA/IG51bGxw
dHIgOiBDaGVja2VkUHRyPFA+KFdURk1vdmUodmFsdWUpKTsgfQorfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8Q2hlY2tlZFJlZjxQPj4gOiBDaGVja2VkUmVmSGFz
aFRyYWl0czxQPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBQdHJIYXNoPENo
ZWNrZWRSZWY8UD4+IDogUHRySGFzaEJhc2U8Q2hlY2tlZFJlZjxQPiwgSXNTbWFydFB0cjxDaGVj
a2VkUmVmPFA+Pjo6dmFsdWU+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFA+
IHN0cnVjdCBEZWZhdWx0SGFzaDxDaGVja2VkUmVmPFA+PiA6IFB0ckhhc2g8Q2hlY2tlZFJlZjxQ
Pj4geyB9OworCitjbGFzcyBDYW5NYWtlQ2hlY2tlZFB0ciB7CitwdWJsaWM6CisgICAgfkNhbk1h
a2VDaGVja2VkUHRyKCkgeyBSRUxFQVNFX0FTU0VSVCghbV9jb3VudCk7IH0KKworICAgIHVpbnQx
Nl90IHB0ckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsgfQorICAgIHZvaWQgaW5jcmVt
ZW50UHRyQ291bnQoKSB7ICsrbV9jb3VudDsgfQorICAgIHZvaWQgZGVjcmVtZW50UHRyQ291bnQo
KSB7IEFTU0VSVChtX2NvdW50KTsgLS1tX2NvdW50OyB9Citwcml2YXRlOgorICAgIHVpbnQxNl90
IG1fY291bnQgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpD
YW5NYWtlQ2hlY2tlZFB0cjsKK3VzaW5nIFdURjo6Q2hlY2tlZFJlZjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAppbmRleCBk
Mjk1Y2ZlYjVkODdmNzkwNjY2NzVlZDVlMTA4MGI2MjgyZTU1NzdiLi41NTBmMDA1ZDM5MTExNTMz
ZTRlNzNhZTBiOWUyOWJlM2MwOTRjM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3
YXJkLmgKKysrIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCkBAIC03Miw2ICs3Miw4IEBAIHRl
bXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBPcHRpb25TZXQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xh
c3MgUGFja2VkOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90ID0gYWxpZ25vZihUKT4gY2xh
c3MgUGFja2VkQWxpZ25lZFB0cjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgUmF3UHRyVHJh
aXRzOwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBSYXdQdHJUcmFpdHM8VD4+IGNs
YXNzIENoZWNrZWRSZWY7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IFJhd1B0clRy
YWl0czxUPj4gY2xhc3MgQ2hlY2tlZFB0cjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
ID0gUmF3UHRyVHJhaXRzPFQ+PiBjbGFzcyBSZWY7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSA9IFJhd1B0clRyYWl0czxUPiwgdHlwZW5hbWUgPSBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8
VD4+IGNsYXNzIFJlZlB0cjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBSZXRhaW5QdHI7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWExOThj
MWQ5MTY3YTYxNWNhMjg1OTVhMThlMjdiZDcyNDc5YjU2ZC4uOGQ4Y2U5ZWNlMzE3ZWQ4NDYxYmY0
NDQ0ZDQ1NjJlMGQ5NDBmMzMwNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA3LTI4ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBDaGVja2VkUmVmCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcxNjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzb21lIHVuaXQgdGVz
dHMgZm9yIENoZWNrZWRSZWYgYW5kIHVwZGF0ZWQgdGhlIHVuaXQgdGVzdHMKKyAgICAgICAgZm9y
IENoZWNrZWRQdHIgcGVyIHRoZSByZW1vdmFsIG9mIG1ha2VDaGVja2VkUHRyLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZFB0ci5jcHA6CisgICAg
ICAgIChXVEZfQ2hlY2tlZFB0ci5DaGVja2VkUmVmKTogQWRkZWQKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9DaGVja2VkUmVmLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJLi5DaGVja2VkT2JqZWN0KTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJLi5E
ZXJpdmVkQ2hlY2tlZE9iamVjdCk6IEFkZGVkLgorICAgICAgICAoV1RGX0NoZWNrZWRSZWYuQmFz
aWMpOiBBZGRlZC4KKyAgICAgICAgKFdURl9DaGVja2VkUmVmLkRlcml2ZWRDbGFzcyk6IEFkZGVk
LgorICAgICAgICAoV1RGX0NoZWNrZWRSZWYuSGFzaFNldCk6IEFkZGVkLgorCiAyMDIxLTA3LTI4
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
V2ViU29ja2V0OiBTYWZhcmkgb24gaU9TIDE1IGJldGEgMyBpcyBzZW5kaW5nIGludmFsaWQgY2xv
c2UgZnJhbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWNiNDQ5NWRmNDcxYTc2MzQ2N2Uz
MTA2NjQ0Yzk0ZjYwMzE1NGY0OC4uZTdkYjhjY2YxYTQ4YjFhOWZkZWM0MWI5ZmU0ODQ1Y2YyNTY0
YzBkZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkyNSw2ICs5MjUsNyBAQAogCQk5QkQ2
RDNBNzFGN0IyMURDMDBCRDQ5NjIgLyogcGFzdGUtaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQ2RDNBNjFGN0IyMUNDMDBC
RDQ5NjIgLyogcGFzdGUtaW1hZ2UuaHRtbCAqLzsgfTsKIAkJOUJEQ0NEODcxRjdEMEIwNzAwMDA5
QTE4IC8qIFBhc3RlSW1hZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QkRDQ0Q4NTFGN0QwQjA3MDAwMDlBMTggLyogUGFzdGVJbWFnZS5tbSAqLzsg
fTsKIAkJOUJERDk1NTgxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCREQ5NTU2MUY4MzY4MzYwMEQy
MEM2MCAvKiBQYXN0ZVJURkQubW0gKi87IH07CisJCTlCRjAwMTMzMjY3QzRDNTkwMERDRkIzRiAv
KiBDaGVja2VkUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCRjAwMTMyMjY3QzRDNTkwMERDRkIzRiAvKiBDaGVja2VkUmVmLmNwcCAqLzsgfTsK
IAkJOUJGMzU2Q0QyMDJENDU4NTAwRjcxMTYwIC8qIG1zby1saXN0Lmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJGMzU2Q0MyMDJENDRG
MjAwRjcxMTYwIC8qIG1zby1saXN0Lmh0bWwgKi87IH07CiAJCTlDNjREQzMyMUQ3NjE5OEEwMDRC
NTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUM2NERDMzExRDc2MTk4QTAwNEI1OThFIC8qIFlv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgKi87IH07CiAJCUExMEYwNDdFMUUzQUQyOUMwMEM5
NUUxOSAvKiBOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwRjA0N0MxRTNBRDI5QzAwQzk1RTE5IC8qIE5TRmlsZU1h
bmFnZXJFeHRyYXMubW0gKi87IH07CkBAIC0yNjU0LDYgKzI2NTUsNyBAQAogCQk5QkQ2RDNBNjFG
N0IyMUNDMDBCRDQ5NjIgLyogcGFzdGUtaW1hZ2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwYXN0ZS1pbWFn
ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJEQ0NEODUxRjdEMEIwNzAw
MDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXN0ZUltYWdl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkREOTU1NjFGODM2ODM2MDBEMjBD
NjAgLyogUGFzdGVSVEZELm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVSVEZELm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkYwMDEzMjI2N0M0QzU5MDBEQ0ZCM0YgLyog
Q2hlY2tlZFJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGVja2VkUmVmLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJGMzU2Q0MyMDJENDRGMjAwRjcxMTYwIC8qIG1zby1s
aXN0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAibXNvLWxpc3QuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlDNjREQzMxMUQ3NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwRjA0
N0MxRTNBRDI5QzAwQzk1RTE5IC8qIE5TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ2Miw2ICs0NDY0LDcgQEAKIAkJCQkwNDUxQTVB
NjIzNUU0MzhFMDA5REY5NDUgLyogQnVtcFBvaW50ZXJBbGxvY2F0b3IuY3BwICovLAogCQkJCUE3
QTk2NkRBMTQwRUNDQzgwMDVFRjlCNCAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3Bw
ICovLAogCQkJCTlCQkNBNERFMjY1QUNBNUIwMERGRTcyMyAvKiBDaGVja2VkUHRyLmNwcCAqLywK
KwkJCQk5QkYwMDEzMjI2N0M0QzU5MDBEQ0ZCM0YgLyogQ2hlY2tlZFJlZi5jcHAgKi8sCiAJCQkJ
RTMwMkJEQTkyNDA0QjkyMzAwODY1Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgKi8sCiAJ
CQkJOUIwQzA1MTgyNEZERkI3MDAwRjJGRTMxIC8qIENvbXBhY3RVbmlxdWVQdHJUdXBsZS5jcHAg
Ki8sCiAJCQkJMEYzMENCNUIxRkNFMTc5MjAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0
LmNwcCAqLywKQEAgLTUyMzQsNiArNTIzNyw3IEBACiAJCQkJMDREQjIzOTYyMzVFNDNFQzAwMzI4
RjE3IC8qIEJ1bXBQb2ludGVyQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNE
RUEwMUQwQTU5MEMwMEZFQkNGMyAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOUJCQ0E0REYyNjVBQ0E1QjAwREZFNzIzIC8qIENoZWNrZWRQdHIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUJGMDAxMzMyNjdDNEM1OTAwRENGQjNGIC8qIENoZWNr
ZWRSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMwMkJEQUEyNDA0QjkyNDAwODY1Mjc3IC8q
IENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5QjBDMDUxOTI0RkRG
QjdEMDBGMkZFMzEgLyogQ29tcGFjdFVuaXF1ZVB0clR1cGxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMzBDQjVDMUZDRTE3OTYwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0NoZWNrZWRQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZFB0
ci5jcHAKaW5kZXggZjQ1Njc3NTM5NWMzNDkyZGMxZTA0MGRkYzZkZDU0YmVhNjBiNjNiMC4uMzk2
ZTRjYjM2MmQxNGVmMzFhNjUyN2Q3Y2M1OTE1YjMwOTIwZDM2MCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZFB0ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZFB0ci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgVEVTVChX
VEZfQ2hlY2tlZFB0ciwgQmFzaWMpCiAgICAgICAgIENoZWNrZWRPYmplY3QgY2hlY2tlZE9iamVj
dDsKICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGF1dG8gcHRyID0gbWFrZUNoZWNrZWRQdHIoY2hlY2tlZE9iamVj
dCk7CisgICAgICAgICAgICBDaGVja2VkUHRyIHB0ciB7ICZjaGVja2VkT2JqZWN0IH07CiAgICAg
ICAgICAgICBFWFBFQ1RfVFJVRSghIXB0cik7CiAgICAgICAgICAgICBFWFBFQ1RfRVEocHRyLmdl
dCgpLCAmY2hlY2tlZE9iamVjdCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEocHRyLT5zb21lRnVu
Y3Rpb24oKSwgLTcpOwpAQCAtNjQsNyArNjQsNyBAQCBURVNUKFdURl9DaGVja2VkUHRyLCBCYXNp
YykKICAgICAgICAgQ2hlY2tlZE9iamVjdCBjaGVja2VkT2JqZWN0OwogICAgICAgICBFWFBFQ1Rf
RVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKIAotICAgICAgICBhdXRvIHB0ciA9IG1h
a2VDaGVja2VkUHRyKGNoZWNrZWRPYmplY3QpOworICAgICAgICBDaGVja2VkUHRyIHB0ciA9IHsg
JmNoZWNrZWRPYmplY3QgfTsKICAgICAgICAgRVhQRUNUX1RSVUUoISFwdHIpOwogICAgICAgICBF
WFBFQ1RfRVEocHRyLmdldCgpLCAmY2hlY2tlZE9iamVjdCk7CiAgICAgICAgIEVYUEVDVF9FUShw
dHItPnNvbWVGdW5jdGlvbigpLCAtNyk7CkBAIC04MCwxOSArODAsMTkgQEAgVEVTVChXVEZfQ2hl
Y2tlZFB0ciwgQmFzaWMpCiAgICAgICAgIENoZWNrZWRPYmplY3QgY2hlY2tlZE9iamVjdDsKICAg
ICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CiAKLSAgICAgICAg
YXV0byBwdHIxID0gbWFrZUNoZWNrZWRQdHIoY2hlY2tlZE9iamVjdCk7CisgICAgICAgIENoZWNr
ZWRQdHIgcHRyMSB7ICZjaGVja2VkT2JqZWN0IH07CiAgICAgICAgIEVYUEVDVF9UUlVFKCEhcHRy
MSk7CiAgICAgICAgIEVYUEVDVF9FUShwdHIxLmdldCgpLCAmY2hlY2tlZE9iamVjdCk7CiAgICAg
ICAgIEVYUEVDVF9FUShwdHIxLT5zb21lRnVuY3Rpb24oKSwgLTcpOwogICAgICAgICBFWFBFQ1Rf
RVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKIAotICAgICAgICBjb25zdCBDaGVja2Vk
UHRyPENoZWNrZWRPYmplY3Q+IHB0cjIgPSBtYWtlQ2hlY2tlZFB0cigmY2hlY2tlZE9iamVjdCk7
CisgICAgICAgIGNvbnN0IENoZWNrZWRQdHIgcHRyMiB7ICZjaGVja2VkT2JqZWN0IH07CiAgICAg
ICAgIEVYUEVDVF9UUlVFKCEhcHRyMik7CiAgICAgICAgIEVYUEVDVF9FUShwdHIyLmdldCgpLCAm
Y2hlY2tlZE9iamVjdCk7CiAgICAgICAgIEVYUEVDVF9FUShwdHIyLT5zb21lRnVuY3Rpb24oKSwg
LTcpOwogICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAyKTsKIAot
ICAgICAgICBDaGVja2VkUHRyPENoZWNrZWRPYmplY3Q+IHB0cjMgPSBwdHIyOworICAgICAgICBD
aGVja2VkUHRyIHB0cjMgPSBwdHIyOwogICAgICAgICBFWFBFQ1RfVFJVRSghIXB0cjMpOwogICAg
ICAgICBFWFBFQ1RfRVEocHRyMy5nZXQoKSwgJmNoZWNrZWRPYmplY3QpOwogICAgICAgICBFWFBF
Q1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAzKTsKQEAgLTExMSw2ICsxMTEsNzkgQEAg
VEVTVChXVEZfQ2hlY2tlZFB0ciwgQmFzaWMpCiAgICAgfQogfQogCitURVNUKFdURl9DaGVja2Vk
UHRyLCBDaGVja2VkUmVmKQoreworICAgIHsKKyAgICAgICAgQ2hlY2tlZE9iamVjdCBjaGVja2Vk
T2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsK
KyAgICAgICAgeworICAgICAgICAgICAgQ2hlY2tlZFJlZiByZWYgeyBjaGVja2VkT2JqZWN0IH07
CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAg
ICAgICAgICBFWFBFQ1RfRVEocmVmLT5zb21lRnVuY3Rpb24oKSwgLTcpOworICAgICAgICAgICAg
RVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMSk7CisgICAgICAgICAgICBDaGVj
a2VkUHRyIHB0ciB7IHJlZiB9OworICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi5wdHIoKSwgJmNo
ZWNrZWRPYmplY3QpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi0+c29tZUZ1bmN0aW9uKCks
IC03KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShwdHIuZ2V0KCksICZjaGVja2VkT2JqZWN0KTsK
KyAgICAgICAgICAgIEVYUEVDVF9FUShwdHItPnNvbWVGdW5jdGlvbigpLCAtNyk7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAyKTsKKyAgICAgICAgfQor
ICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIERlcml2ZWRDaGVja2VkT2JqZWN0IGNoZWNrZWRPYmplY3Q7CisgICAg
ICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDApOworICAgICAgICB7Cisg
ICAgICAgICAgICBDaGVja2VkUmVmPERlcml2ZWRDaGVja2VkT2JqZWN0PiByZWYgeyBjaGVja2Vk
T2JqZWN0IH07CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCAmY2hlY2tlZE9iamVj
dCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLT5zb21lRnVuY3Rpb24oKSwgLTcpOworICAg
ICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMSk7CisgICAgICAg
ICAgICBDaGVja2VkUHRyPENoZWNrZWRPYmplY3Q+IHB0ciB7IHJlZiB9OworICAgICAgICAgICAg
RVhQRUNUX0VRKHJlZi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICAgICAgRVhQRUNU
X0VRKHJlZi0+c29tZUZ1bmN0aW9uKCksIC03KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShwdHIu
Z2V0KCksICZjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShwdHItPnNvbWVG
dW5jdGlvbigpLCAtNyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJD
b3VudCgpLCAyKTsKKyAgICAgICAgfQorICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5w
dHJDb3VudCgpLCAwKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENoZWNrZWRPYmplY3QgY2hl
Y2tlZE9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwg
MCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIENoZWNrZWRSZWYgcmVmIHsgY2hlY2tlZE9iamVj
dCB9OworICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOwor
ICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi0+c29tZUZ1bmN0aW9uKCksIC03KTsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDEpOworICAgICAgICAgICAg
Q2hlY2tlZFB0ciBwdHIgeyBXVEZNb3ZlKHJlZikgfTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShy
ZWYucHRyKCksIG51bGxwdHIpOworICAgICAgICAgICAgRVhQRUNUX0VRKHB0ci5nZXQoKSwgJmNo
ZWNrZWRPYmplY3QpOworICAgICAgICAgICAgRVhQRUNUX0VRKHB0ci0+c29tZUZ1bmN0aW9uKCks
IC03KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDEp
OworICAgICAgICB9CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCks
IDApOworICAgIH0KKworICAgIHsKKyAgICAgICAgRGVyaXZlZENoZWNrZWRPYmplY3QgY2hlY2tl
ZE9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7
CisgICAgICAgIHsKKyAgICAgICAgICAgIENoZWNrZWRSZWY8RGVyaXZlZENoZWNrZWRPYmplY3Q+
IHJlZiB7IGNoZWNrZWRPYmplY3QgfTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZWYucHRyKCks
ICZjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZWYtPnNvbWVGdW5jdGlv
bigpLCAtNyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgp
LCAxKTsKKyAgICAgICAgICAgIENoZWNrZWRQdHI8Q2hlY2tlZE9iamVjdD4gcHRyIHsgV1RGTW92
ZShyZWYpIH07CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCBudWxscHRyKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShwdHIuZ2V0KCksICZjaGVja2VkT2JqZWN0KTsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUShwdHItPnNvbWVGdW5jdGlvbigpLCAtNyk7CisgICAgICAgICAgICBFWFBF
Q1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKKyAgICAgICAgfQorICAgICAgICBF
WFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKKyAgICB9Cit9CisKIFRFU1Qo
V1RGX0NoZWNrZWRQdHIsIERlcml2ZWRDbGFzcykKIHsKICAgICB7CkBAIC0xMjIsNyArMTk1LDcg
QEAgVEVTVChXVEZfQ2hlY2tlZFB0ciwgRGVyaXZlZENsYXNzKQogICAgICAgICBEZXJpdmVkQ2hl
Y2tlZE9iamVjdCBjaGVja2VkT2JqZWN0OwogICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVj
dC5wdHJDb3VudCgpLCAwKTsKICAgICAgICAgewotICAgICAgICAgICAgYXV0byBwdHIgPSBtYWtl
Q2hlY2tlZFB0cihjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgICAgIENoZWNrZWRQdHIgcHRyID0g
eyAmY2hlY2tlZE9iamVjdCB9OwogICAgICAgICAgICAgRVhQRUNUX1RSVUUoISFwdHIpOwogICAg
ICAgICAgICAgRVhQRUNUX0VRKHB0ci5nZXQoKSwgJmNoZWNrZWRPYmplY3QpOwogICAgICAgICAg
ICAgRVhQRUNUX0VRKHB0ci0+c29tZUZ1bmN0aW9uKCksIC03KTsKQEAgLTEzNSw3ICsyMDgsNyBA
QCBURVNUKFdURl9DaGVja2VkUHRyLCBEZXJpdmVkQ2xhc3MpCiAgICAgICAgIENoZWNrZWRPYmpl
Y3QgY2hlY2tlZE9iamVjdDsKICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291
bnQoKSwgMCk7CiAKLSAgICAgICAgQ2hlY2tlZFB0cjxDaGVja2VkT2JqZWN0PiBwdHIgPSBtYWtl
Q2hlY2tlZFB0cihjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgQ2hlY2tlZFB0cjxDaGVja2VkT2Jq
ZWN0PiBwdHIgeyAmY2hlY2tlZE9iamVjdCB9OwogICAgICAgICBFWFBFQ1RfVFJVRSghIXB0cik7
CiAgICAgICAgIEVYUEVDVF9FUShwdHIuZ2V0KCksICZjaGVja2VkT2JqZWN0KTsKICAgICAgICAg
RVhQRUNUX0VRKHB0ci0+c29tZUZ1bmN0aW9uKCksIC03KTsKQEAgLTE1MSw3ICsyMjQsNyBAQCBU
RVNUKFdURl9DaGVja2VkUHRyLCBEZXJpdmVkQ2xhc3MpCiAgICAgICAgIERlcml2ZWRDaGVja2Vk
T2JqZWN0IGNoZWNrZWRPYmplY3Q7CiAgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0
ckNvdW50KCksIDApOwogCi0gICAgICAgIENoZWNrZWRQdHI8RGVyaXZlZENoZWNrZWRPYmplY3Q+
IHB0cjEgPSBtYWtlQ2hlY2tlZFB0cihjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgQ2hlY2tlZFB0
cjxEZXJpdmVkQ2hlY2tlZE9iamVjdD4gcHRyMSB7ICZjaGVja2VkT2JqZWN0IH07CiAgICAgICAg
IEVYUEVDVF9UUlVFKCEhcHRyMSk7CiAgICAgICAgIEVYUEVDVF9FUShwdHIxLmdldCgpLCAmY2hl
Y2tlZE9iamVjdCk7CiAgICAgICAgIEVYUEVDVF9FUShwdHIxLT5zb21lRnVuY3Rpb24oKSwgLTcp
OwpAQCAtMTg5LDcgKzI2Miw3IEBAIFRFU1QoV1RGX0NoZWNrZWRQdHIsIEhhc2hTZXQpCiAgICAg
ICAgIENoZWNrZWRPYmplY3QgY2hlY2tlZE9iamVjdDsKICAgICAgICAgRVhQRUNUX0VRKGNoZWNr
ZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CiAKLSAgICAgICAgYXV0byBwdHIgPSBtYWtlQ2hlY2tl
ZFB0cihjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgQ2hlY2tlZFB0ciBwdHIgPSB7ICZjaGVja2Vk
T2JqZWN0IH07CiAgICAgICAgIEVYUEVDVF9FUShwdHIuZ2V0KCksICZjaGVja2VkT2JqZWN0KTsK
ICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMSk7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRSZWYuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZFJlZi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Vk
NjdlZWNhMDJlY2FkMTEwMDAxMTVhODVlNzM4N2IyNDMzZDY0MwotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRSZWYuY3BwCkBAIC0wLDAgKzEs
MzE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVXRp
bGl0aWVzLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRSZWYuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworCituYW1lc3BhY2UgeworCitjbGFzcyBDaGVja2VkT2JqZWN0IDogcHVibGljIENhbk1h
a2VDaGVja2VkUHRyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDaGVja2VkT2JqZWN0KTsK
K3B1YmxpYzoKKyAgICBDaGVja2VkT2JqZWN0KGludCB2YWx1ZSA9IC03KQorICAgICAgICA6IG1f
dmFsdWUodmFsdWUpCisgICAgeyB9CisgICAgCisgICAgfkNoZWNrZWRPYmplY3QoKSA9IGRlZmF1
bHQ7CisKKyAgICBpbnQgc29tZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQor
Citwcml2YXRlOgorICAgIGludCBtX3ZhbHVlOworfTsKKworY2xhc3MgRGVyaXZlZENoZWNrZWRP
YmplY3QgOiBwdWJsaWMgQ2hlY2tlZE9iamVjdCB7CitwdWJsaWM6CisgICAgRGVyaXZlZENoZWNr
ZWRPYmplY3QoaW50IHZhbHVlID0gLTExKQorICAgICAgICA6IENoZWNrZWRPYmplY3QodmFsdWUp
CisgICAgeyB9Cit9OworCitURVNUKFdURl9DaGVja2VkUmVmLCBCYXNpYykKK3sKKyAgICB7Cisg
ICAgICAgIENoZWNrZWRPYmplY3QgY2hlY2tlZE9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKGNo
ZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CisgICAgfQorCisgICAgeworICAgICAgICBDaGVj
a2VkT2JqZWN0IGNoZWNrZWRPYmplY3Q7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0
LnB0ckNvdW50KCksIDApOworICAgICAgICB7CisgICAgICAgICAgICBDaGVja2VkUmVmIHJlZiA9
IGNoZWNrZWRPYmplY3Q7CisgICAgICAgICAgICBFWFBFQ1RfRVEoJnJlZi5nZXQoKSwgJmNoZWNr
ZWRPYmplY3QpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi5wdHIoKSwgJmNoZWNrZWRPYmpl
Y3QpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi0+c29tZUZ1bmN0aW9uKCksIC03KTsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxDaGVja2VkT2JqZWN0Jj4ocmVmKS5zb21l
RnVuY3Rpb24oKSwgLTcpOworICAgICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRy
Q291bnQoKSwgMSk7CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3Qu
cHRyQ291bnQoKSwgMCk7CisgICAgfQorCisgICAgeworICAgICAgICBDaGVja2VkT2JqZWN0IGNo
ZWNrZWRPYmplY3Q7CisgICAgICAgIENoZWNrZWRPYmplY3QgYW5vdGhlck9iamVjdDsKKyAgICAg
ICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CisKKyAgICAgICAgQ2hl
Y2tlZFJlZiByZWYgPSBjaGVja2VkT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigp
LCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShyZWYtPnNvbWVGdW5jdGlvbigp
LCAtNyk7CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxDaGVja2VkT2JqZWN0Jj4ocmVm
KS5zb21lRnVuY3Rpb24oKSwgLTcpOworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5w
dHJDb3VudCgpLCAxKTsKKworICAgICAgICByZWYgPSBhbm90aGVyT2JqZWN0OworICAgICAgICBF
WFBFQ1RfRVEocmVmLnB0cigpLCAmYW5vdGhlck9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShj
aGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDApOworICAgICAgICBFWFBFQ1RfRVEoYW5vdGhlck9i
amVjdC5wdHJDb3VudCgpLCAxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENoZWNrZWRPYmpl
Y3QgY2hlY2tlZE9iamVjdDsKKyAgICAgICAgQ2hlY2tlZE9iamVjdCBhbm90aGVyT2JqZWN0Owor
ICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKKworICAgICAg
ICBDaGVja2VkUmVmIHJlZjEgPSBjaGVja2VkT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEocmVm
MS5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEocmVmMS0+c29tZUZ1
bmN0aW9uKCksIC03KTsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PENoZWNrZWRPYmpl
Y3QmPihyZWYxKS5zb21lRnVuY3Rpb24oKSwgLTcpOworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tl
ZE9iamVjdC5wdHJDb3VudCgpLCAxKTsKKworICAgICAgICBjb25zdCBDaGVja2VkUmVmIHJlZjIg
PSBjaGVja2VkT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEocmVmMi5wdHIoKSwgJmNoZWNrZWRP
YmplY3QpOworICAgICAgICBFWFBFQ1RfRVEocmVmMi5nZXQoKS5zb21lRnVuY3Rpb24oKSwgLTcp
OworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgQ2hlY2tlZE9iamVjdCY+KHJl
ZjIpLnNvbWVGdW5jdGlvbigpLCAtNyk7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0
LnB0ckNvdW50KCksIDIpOworCisgICAgICAgIENoZWNrZWRSZWYgcmVmMyA9IHJlZjI7CisgICAg
ICAgIEVYUEVDVF9FUShyZWYzLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAgIEVYUEVD
VF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDMpOworCisgICAgICAgIHJlZjEgPSBhbm90
aGVyT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAy
KTsKKyAgICAgICAgRVhQRUNUX0VRKGFub3RoZXJPYmplY3QucHRyQ291bnQoKSwgMSk7CisgICAg
ICAgIEVYUEVDVF9FUShyZWYxLnB0cigpLCAmYW5vdGhlck9iamVjdCk7CisgICAgICAgIEVYUEVD
VF9FUShyZWYyLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShyZWYz
LnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisKKyAgICAgICAgcmVmMSA9IFdURk1vdmUocmVmMyk7
CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDIpOworICAgICAg
ICBFWFBFQ1RfRVEoYW5vdGhlck9iamVjdC5wdHJDb3VudCgpLCAwKTsKKyAgICAgICAgRVhQRUNU
X0VRKHJlZjEucHRyKCksICZjaGVja2VkT2JqZWN0KTsKKyAgICAgICAgRVhQRUNUX0VRKHJlZjIu
cHRyKCksICZjaGVja2VkT2JqZWN0KTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0NoZWNrZWRSZWYs
IERlcml2ZWRDbGFzcykKK3sKKyAgICB7CisgICAgICAgIERlcml2ZWRDaGVja2VkT2JqZWN0IGNo
ZWNrZWRPYmplY3Q7CisgICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCks
IDApOworICAgICAgICB7CisgICAgICAgICAgICBDaGVja2VkUmVmIHJlZiA9IGNoZWNrZWRPYmpl
Y3Q7CisgICAgICAgICAgICBFWFBFQ1RfRVEoJnJlZi5nZXQoKSwgJmNoZWNrZWRPYmplY3QpOwor
ICAgICAgICAgICAgRVhQRUNUX0VRKHJlZi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAg
ICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PERlcml2ZWRDaGVja2VkT2JqZWN0Jj4ocmVmKS5z
b21lRnVuY3Rpb24oKSwgLTExKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZWYtPnNvbWVGdW5j
dGlvbigpLCAtMTEpOworICAgICAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291
bnQoKSwgMSk7CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRy
Q291bnQoKSwgMCk7CisgICAgfQorCisgICAgeworICAgICAgICBEZXJpdmVkQ2hlY2tlZE9iamVj
dCBjaGVja2VkT2JqZWN0OworICAgICAgICBEZXJpdmVkQ2hlY2tlZE9iamVjdCBhbm90aGVyT2Jq
ZWN0OworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3VudCgpLCAwKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGFub3RoZXJPYmplY3QucHRyQ291bnQoKSwgMCk7CisKKyAgICAgICAg
Q2hlY2tlZFJlZjxDaGVja2VkT2JqZWN0PiByZWYgPSBjaGVja2VkT2JqZWN0OworICAgICAgICBF
WFBFQ1RfRVEocmVmLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShy
ZWYtPnNvbWVGdW5jdGlvbigpLCAtMTEpOworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
Q2hlY2tlZE9iamVjdCY+KHJlZikuc29tZUZ1bmN0aW9uKCksIC0xMSk7CisgICAgICAgIEVYUEVD
VF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDEpOworICAgICAgICBFWFBFQ1RfRVEoYW5v
dGhlck9iamVjdC5wdHJDb3VudCgpLCAwKTsKKworICAgICAgICByZWYgPSBhbm90aGVyT2JqZWN0
OworICAgICAgICBFWFBFQ1RfRVEocmVmLnB0cigpLCAmYW5vdGhlck9iamVjdCk7CisgICAgICAg
IEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDApOworICAgICAgICBFWFBFQ1Rf
RVEoYW5vdGhlck9iamVjdC5wdHJDb3VudCgpLCAxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IERlcml2ZWRDaGVja2VkT2JqZWN0IGNoZWNrZWRPYmplY3QgeyAxMCB9OworICAgICAgICBEZXJp
dmVkQ2hlY2tlZE9iamVjdCBhbm90aGVyT2JqZWN0IHsgMjAgfTsKKyAgICAgICAgRVhQRUNUX0VR
KGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMCk7CisgICAgICAgIEVYUEVDVF9FUShhbm90aGVy
T2JqZWN0LnB0ckNvdW50KCksIDApOworCisgICAgICAgIENoZWNrZWRSZWY8RGVyaXZlZENoZWNr
ZWRPYmplY3Q+IHJlZjEgPSBjaGVja2VkT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEocmVmMS5w
dHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEocmVmMS0+c29tZUZ1bmN0
aW9uKCksIDEwKTsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PENoZWNrZWRPYmplY3Qm
PihyZWYxKS5zb21lRnVuY3Rpb24oKSwgMTApOworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9i
amVjdC5wdHJDb3VudCgpLCAxKTsKKyAgICAgICAgRVhQRUNUX0VRKGFub3RoZXJPYmplY3QucHRy
Q291bnQoKSwgMCk7CisKKyAgICAgICAgY29uc3QgQ2hlY2tlZFJlZjxDaGVja2VkT2JqZWN0PiBy
ZWYyID0gcmVmMTsKKyAgICAgICAgRVhQRUNUX0VRKHJlZjIucHRyKCksICZjaGVja2VkT2JqZWN0
KTsKKyAgICAgICAgRVhQRUNUX0VRKHJlZjItPnNvbWVGdW5jdGlvbigpLCAxMCk7CisgICAgICAg
IEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBDaGVja2VkT2JqZWN0Jj4ocmVmMikuc29tZUZ1
bmN0aW9uKCksIDEwKTsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQo
KSwgMik7CisgICAgICAgIEVYUEVDVF9FUShhbm90aGVyT2JqZWN0LnB0ckNvdW50KCksIDApOwor
CisgICAgICAgIENoZWNrZWRSZWY8Q2hlY2tlZE9iamVjdD4gcmVmMyA9IHJlZjE7CisgICAgICAg
IEVYUEVDVF9FUShyZWYzLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAgIEVYUEVDVF9F
UShzdGF0aWNfY2FzdDxDaGVja2VkT2JqZWN0Jj4ocmVmMykuc29tZUZ1bmN0aW9uKCksIDEwKTsK
KyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMyk7CisgICAgICAg
IEVYUEVDVF9FUShhbm90aGVyT2JqZWN0LnB0ckNvdW50KCksIDApOworCisgICAgICAgIHJlZjEg
PSBhbm90aGVyT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5wdHJDb3Vu
dCgpLCAyKTsKKyAgICAgICAgRVhQRUNUX0VRKGFub3RoZXJPYmplY3QucHRyQ291bnQoKSwgMSk7
CisgICAgICAgIEVYUEVDVF9FUShyZWYxLnB0cigpLCAmYW5vdGhlck9iamVjdCk7CisgICAgICAg
IEVYUEVDVF9FUShyZWYxLT5zb21lRnVuY3Rpb24oKSwgMjApOworICAgICAgICBFWFBFQ1RfRVEo
c3RhdGljX2Nhc3Q8Q2hlY2tlZE9iamVjdCY+KHJlZjEpLnNvbWVGdW5jdGlvbigpLCAyMCk7Cisg
ICAgICAgIEVYUEVDVF9FUShyZWYyLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisgICAgICAgIEVY
UEVDVF9FUShyZWYzLnB0cigpLCAmY2hlY2tlZE9iamVjdCk7CisKKyAgICAgICAgQ2hlY2tlZFJl
ZjxDaGVja2VkT2JqZWN0PiByZWY0ID0gV1RGTW92ZShyZWYxKTsKKyAgICAgICAgRVhQRUNUX0VR
KGNoZWNrZWRPYmplY3QucHRyQ291bnQoKSwgMik7CisgICAgICAgIEVYUEVDVF9FUShhbm90aGVy
T2JqZWN0LnB0ckNvdW50KCksIDEpOworICAgICAgICBFWFBFQ1RfRVEocmVmMi5wdHIoKSwgJmNo
ZWNrZWRPYmplY3QpOworICAgICAgICBFWFBFQ1RfRVEocmVmMy5wdHIoKSwgJmNoZWNrZWRPYmpl
Y3QpOworICAgICAgICBFWFBFQ1RfRVEocmVmNC5wdHIoKSwgJmFub3RoZXJPYmplY3QpOworICAg
ICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Q2hlY2tlZE9iamVjdCY+KHJlZjQpLnNvbWVGdW5j
dGlvbigpLCAyMCk7CisgICAgICAgIEVYUEVDVF9FUShyZWY0LT5zb21lRnVuY3Rpb24oKSwgMjAp
OworCisgICAgICAgIHJlZjEgPSBjaGVja2VkT2JqZWN0OworICAgICAgICBFWFBFQ1RfRVEoY2hl
Y2tlZE9iamVjdC5wdHJDb3VudCgpLCAzKTsKKyAgICAgICAgRVhQRUNUX0VRKGFub3RoZXJPYmpl
Y3QucHRyQ291bnQoKSwgMSk7CisgICAgICAgIEVYUEVDVF9FUShyZWYxLnB0cigpLCAmY2hlY2tl
ZE9iamVjdCk7CisgICAgICAgIEVYUEVDVF9FUShyZWYxLT5zb21lRnVuY3Rpb24oKSwgMTApOwor
ICAgICAgICBFWFBFQ1RfRVEocmVmMi5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgICAgICBF
WFBFQ1RfRVEocmVmMy5wdHIoKSwgJmNoZWNrZWRPYmplY3QpOworICAgIH0KK30KKworVEVTVChX
VEZfQ2hlY2tlZFJlZiwgSGFzaFNldCkKK3sKKyAgICB7CisgICAgICAgIENoZWNrZWRPYmplY3Qg
Y2hlY2tlZE9iamVjdDsKKyAgICAgICAgRVhQRUNUX0VRKGNoZWNrZWRPYmplY3QucHRyQ291bnQo
KSwgMCk7CisKKyAgICAgICAgSGFzaFNldDxDaGVja2VkUmVmPENoZWNrZWRPYmplY3Q+PiBzZXQ7
CisgICAgICAgIHsKKyAgICAgICAgICAgIENoZWNrZWRSZWYgcmVmID0gY2hlY2tlZE9iamVjdDsK
KyAgICAgICAgICAgIEVYUEVDVF9FUShyZWYucHRyKCksICZjaGVja2VkT2JqZWN0KTsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUShjaGVja2VkT2JqZWN0LnB0ckNvdW50KCksIDEpOworCisgICAgICAg
ICAgICBzZXQuYWRkKHJlZik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVjdC5w
dHJDb3VudCgpLCAyKTsKKyAgICAgICAgfQorICAgICAgICBFWFBFQ1RfRVEoY2hlY2tlZE9iamVj
dC5wdHJDb3VudCgpLCAxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENoZWNrZWRPYmplY3Qg
b2JqZWN0MTsKKyAgICAgICAgRGVyaXZlZENoZWNrZWRPYmplY3Qgb2JqZWN0MjsKKyAgICAgICAg
RVhQRUNUX0VRKG9iamVjdDEucHRyQ291bnQoKSwgMCk7CisgICAgICAgIEVYUEVDVF9FUShvYmpl
Y3QyLnB0ckNvdW50KCksIDApOworCisgICAgICAgIEhhc2hTZXQ8Q2hlY2tlZFJlZjxDaGVja2Vk
T2JqZWN0Pj4gc2V0OworICAgICAgICBzZXQuYWRkKG9iamVjdDEpOworICAgICAgICBFWFBFQ1Rf
RVEob2JqZWN0MS5wdHJDb3VudCgpLCAxKTsKKyAgICAgICAgRVhQRUNUX0VRKG9iamVjdDIucHRy
Q291bnQoKSwgMCk7CisgICAgICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhvYmplY3QxKSk7
CisgICAgICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMob2JqZWN0MikpOworCisgICAgICAg
IHNldC5hZGQob2JqZWN0MSk7CisgICAgICAgIEVYUEVDVF9FUShvYmplY3QxLnB0ckNvdW50KCks
IDEpOworICAgICAgICBFWFBFQ1RfRVEob2JqZWN0Mi5wdHJDb3VudCgpLCAwKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKG9iamVjdDEpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KHNldC5jb250YWlucyhvYmplY3QyKSk7CisKKyAgICAgICAgeworICAgICAgICAgICAgQ2hlY2tl
ZFJlZjxEZXJpdmVkQ2hlY2tlZE9iamVjdD4gcmVmIHsgb2JqZWN0MiB9OworICAgICAgICAgICAg
c2V0LmFkZChyZWYpOworICAgICAgICAgICAgRVhQRUNUX0VRKG9iamVjdDEucHRyQ291bnQoKSwg
MSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEob2JqZWN0Mi5wdHJDb3VudCgpLCAyKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhvYmplY3QxKSk7CisgICAgICAgICAgICBF
WFBFQ1RfVFJVRShzZXQuY29udGFpbnMob2JqZWN0MikpOworICAgICAgICB9CisKKyAgICAgICAg
RVhQRUNUX0VRKG9iamVjdDEucHRyQ291bnQoKSwgMSk7CisgICAgICAgIEVYUEVDVF9FUShvYmpl
Y3QyLnB0ckNvdW50KCksIDEpOworICAgICAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMob2Jq
ZWN0MSkpOworICAgICAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMob2JqZWN0MikpOworCisg
ICAgICAgIHNldC5yZW1vdmUob2JqZWN0MSk7CisgICAgICAgIEVYUEVDVF9FUShvYmplY3QxLnB0
ckNvdW50KCksIDApOworICAgICAgICBFWFBFQ1RfRVEob2JqZWN0Mi5wdHJDb3VudCgpLCAxKTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlucyhvYmplY3QxKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKHNldC5jb250YWlucyhvYmplY3QyKSk7CisgICAgfQorCisgICAgeworICAgICAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENoZWNrZWRPYmplY3Q+PiBvYmplY3RzOworICAgICAg
ICBvYmplY3RzLmFwcGVuZChtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxDaGVja2Vk
T2JqZWN0PigwKSk7CisgICAgICAgIEVYUEVDVF9FUShvYmplY3RzWzBdLT5wdHJDb3VudCgpLCAw
KTsKKworICAgICAgICBIYXNoU2V0PENoZWNrZWRSZWY8Q2hlY2tlZE9iamVjdD4+IHNldDsKKyAg
ICAgICAgc2V0LmFkZCgqb2JqZWN0c1swXS5nZXQoKSk7CisgICAgICAgIGF1dG8gaW5pdGlhbENh
cGFjaXR5ID0gc2V0LmNhcGFjaXR5KCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
c2V0LmNhcGFjaXR5KCkgPT0gaW5pdGlhbENhcGFjaXR5OyArK2kpIHsKKyAgICAgICAgICAgIGlm
IChpICUgMikKKyAgICAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxEZXJpdmVkQ2hlY2tlZE9iamVjdD4oaSArIDEpKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxDaGVja2VkT2JqZWN0PihpICsgMSkpOworICAgICAgICAgICAgc2V0
LmFkZCgqb2JqZWN0cy5sYXN0KCkpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChhdXRvJiBv
YmplY3QgOiBvYmplY3RzKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEob2JqZWN0LT5wdHJDb3Vu
dCgpLCAxKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucygqb2JqZWN0KSk7
CisgICAgICAgIH0KKworICAgICAgICBWZWN0b3I8Ym9vbD4gc2VlbjsKKyAgICAgICAgc2Vlbi5y
ZXNpemUob2JqZWN0cy5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBzZXQpCisg
ICAgICAgICAgICBzZWVuW2l0ZW0tPnNvbWVGdW5jdGlvbigpXSA9IHRydWU7CisgICAgICAgIGZv
ciAoYXV0byB2YWx1ZSA6IHNlZW4pCisgICAgICAgICAgICBFWFBFQ1RfVFJVRSh2YWx1ZSk7CisK
KyAgICAgICAgYXV0byBzZXRWZWN0b3IgPSBXVEY6OmNvcHlUb1ZlY3RvcihzZXQpOworCisgICAg
ICAgIGZvciAoYXV0byYgb2JqZWN0IDogb2JqZWN0cykKKyAgICAgICAgICAgIEVYUEVDVF9FUShv
YmplY3QtPnB0ckNvdW50KCksIDIpOworICAgIH0KK30KKworfQorCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>