<?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>237944</bug_id>
          
          <creation_ts>2022-03-15 23:22:31 -0700</creation_ts>
          <short_desc>[GPU Process] [GraphicsContextState 1/] Move other classes out of GraphicsContext.h</short_desc>
          <delta_ts>2022-03-16 13:54:34 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>237728</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1851665</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-15 23:22:31 -0700</bug_when>
    <thetext>This GraphicsContext class is big by itself. So let&apos;s have GraphicsContext.h be a header file for GraphicsContext only. The plan is to make GraphicsContextState a class and make it handle its encoding and decoding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851685</commentid>
    <comment_count>1</comment_count>
      <attachid>454809</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-16 01:33:10 -0700</bug_when>
    <thetext>Created attachment 454809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851687</commentid>
    <comment_count>2</comment_count>
      <attachid>454810</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-16 01:44:08 -0700</bug_when>
    <thetext>Created attachment 454810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851884</commentid>
    <comment_count>3</comment_count>
      <attachid>454859</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-16 10:37:55 -0700</bug_when>
    <thetext>Created attachment 454859
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851902</commentid>
    <comment_count>4</comment_count>
      <attachid>454859</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-03-16 11:13:36 -0700</bug_when>
    <thetext>Comment on attachment 454859
Patch

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

&gt; Source/WebCore/platform/graphics/TextBoxIterator.h:36
&gt; +        : m_textRun(0)
&gt; +        , m_offset(0)

Use initializers and make this = default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851914</commentid>
    <comment_count>5</comment_count>
      <attachid>454871</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-16 11:46:35 -0700</bug_when>
    <thetext>Created attachment 454871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851971</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-16 13:53:30 -0700</bug_when>
    <thetext>Committed r291364 (248496@main): &lt;https://commits.webkit.org/248496@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 454871.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851972</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-16 13:54:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/90390439&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454809</attachid>
            <date>2022-03-16 01:33:10 -0700</date>
            <delta_ts>2022-03-16 02:00:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237944-20220316013309.patch</filename>
            <type>text/plain</type>
            <size>87216</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYxYzkxNGQ3NWIzNDQ1
M2VkMjI3NWQ3MjU2NTY0YTEwYWE0MTEyNS4uZjU1MWM2MGQ1Y2U2MmY2ODkxMWYyNmQ1OWZjMzAw
ZTU5ZmE1YzI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIyLTAzLTE2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TW92ZSBvdGhlciBjbGFzc2VzIG91dCBvZiBHcmFwaGljc0NvbnRleHQuaAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3OTQ0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHN0ZXAgdG93YXJk
cyBtYWtpbmcgR3JhcGhpY3NDb250ZXh0U3RhdGUgYSBjbGFzcyBhbmQgbW92ZQorICAgICAgICBt
b3JlIGZ1bmN0aW9uYWxpdGllcyB0byBpdC4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6Cisg
ICAgICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5j
bWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0
ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6b2Zm
c2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6
aW5jcmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6
YXRFbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9y
OjpjdXJyZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVy
YXRvcjo6ZGlyZWN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRC
b3hJdGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJnZUNoYW5n
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2U6OmNoYW5nZXNGcm9tU3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFjY3VtdWxhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFwcGx5IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpkdW1w
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6OmVuY29kZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZGVjb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyOjpHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI6On5HcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXI6OnNhdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcjo6cmVzdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyOjpjb250ZXh0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUxheWVyU2NvcGU6OlRyYW5zcGFyZW5j
eUxheWVyU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5TGF5
ZXJTY29wZTo6YmVnaW5MYXllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc3Bh
cmVuY3lMYXllclNjb3BlOjp+VHJhbnNwYXJlbmN5TGF5ZXJTY29wZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZVN0YWNrQ2hlY2tlcjo6R3JhcGhpY3ND
b250ZXh0U3RhdGVTdGFja0NoZWNrZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGVTdGFja0NoZWNrZXI6On5HcmFwaGljc0NvbnRleHRTdGF0ZVN0YWNr
Q2hlY2tlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcnBvbGF0aW9uUXVhbGl0
eU1haW50YWluZXI6OkludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXI6On5JbnRlcnBv
bGF0aW9uUXVhbGl0eU1haW50YWluZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdlc0Zyb21TdGF0ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBw
bHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6
OmR1bXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGVDaGFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyOjpHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI6On5HcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI6OnNhdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcjo6cmVzdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyOjpjb250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUxheWVyU2NvcGU6OlRyYW5zcGFyZW5jeUxheWVy
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5TGF5ZXJTY29wZTo6YmVnaW5M
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc3BhcmVuY3lMYXllclNjb3BlOjp+VHJhbnNw
YXJlbmN5TGF5ZXJTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZVN0YWNrQ2hlY2tlcjo6R3JhcGhpY3NDb250ZXh0U3RhdGVTdGFja0NoZWNrZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVTdGFja0NoZWNrZXI6On5HcmFwaGljc0Nv
bnRleHRTdGF0ZVN0YWNrQ2hlY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcnBvbGF0aW9u
UXVhbGl0eU1haW50YWluZXI6OkludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXI6On5JbnRlcnBvbGF0
aW9uUXVhbGl0eU1haW50YWluZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dEJveEl0ZXJh
dG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94
SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9yOjpvZmZzZXQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9yOjppbmNyZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9yOjphdEVuZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0Qm94SXRlcmF0b3I6OmN1cnJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dEJveEl0ZXJhdG9yOjpkaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRCb3hJdGVyYXRvcjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ0dDb250ZXh0U3RhdGVTYXZlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNHQ29udGV4dFN0YXRlU2F2ZXI6OkNHQ29udGV4dFN0YXRlU2F2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0dDb250ZXh0U3RhdGVTYXZlcjo6fkNHQ29udGV4dFN0YXRlU2F2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0dDb250ZXh0U3RhdGVTYXZlcjo6c2F2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDR0NvbnRleHRTdGF0ZVNhdmVyOjpyZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29u
dGV4dFN0YXRlU2F2ZXI6OmRpZFNhdmUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbnRleHRT
dGF0ZVNhdmVyOjpDR0NvbnRleHRTdGF0ZVNhdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNHQ29udGV4dFN0YXRlU2F2ZXI6On5DR0NvbnRleHRTdGF0ZVNhdmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNHQ29udGV4dFN0YXRlU2F2ZXI6OnNhdmUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q0dDb250ZXh0U3RhdGVTYXZlcjo6cmVzdG9yZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDR0NvbnRleHRTdGF0ZVNhdmVyOjpkaWRTYXZlIGNvbnN0KTog
RGVsZXRlZC4KKwogMjAyMi0wMy0xNCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBbbW9kZWxdIDxtb2RlbCBpbnRlcmFjdGl2ZT4gZG9lc24ndCBhbGxvdyBt
b2RlbCB0byBiZSByb3RhdGVkIG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNzM2NDQyYTA4
YTc0NTAwYTM1MmYwNGMyZTEwNmQ4YzQxZTdhNGZjNS4uY2JkNTJjMWQzOWE4MWQxNWZjNzc1ZjY1
MzYzYzc5NTI5YTY5YjgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNDkxLDYgKzE0OTEsOCBA
QCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0xTdGF0ZS5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUu
aAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCkBAIC0xNTUwLDYgKzE1NTIsNyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1BdWRpb1RyYWNrQ29uZmlndXJhdGlvbi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1Db2xvclNwYWNlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
aAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0LmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybUltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdl
QnVmZmVyQmFja2VuZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCA2
MmQ0M2U2YTNhOTMyMTVmZjA3NTdhNDc4ODRhOGI2Yzg0NGI4OTZkLi5kMDU2NWJlYzkyMWYwY2Q5
MTVlNDg4NWZkZjZiYTMyYTNhNmJkM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4u
Y21ha2UKQEAgLTE1Niw2ICsxNTYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJl
ZUhvc3RDbGllbnQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5
ZXJXaW4uaAogCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ0dDb250ZXh0U3RhdGVTYXZlci5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFkaWVudFJlbmRlcmVyQ0cuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggNWRlZTc1
NDA1MzU3OWY1NWI1NWYyZmU0YWQwZGQwYTY5ZGViZmQ0YS4uZTRmNjI3MTkwY2M4OWJlODZkMDY5
ODFmMzFkMDEzMzY1OTJlOTY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTY0MCw2
ICs2NDAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVmlkZW9Db250YWluZXJMYXllci5oCiAK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9DR0NvbnRleHRTdGF0ZVNhdmVyLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQ
b29sLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggNWM3YjczZWIyMDVlMDllYzI0NmUwMTFkMGE1MDJkY2Q0
YzFkY2E1MC4uNDNjYzEyZjdjMjU5YTUwNjZmYjMzMzlmZjhmMjI0ZWY2YTg2Y2ZiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTIwNDUsNiArMjA0NSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
SW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRTdGF0ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgyOTYy
YmEwNGUyZmZkN2ZmYTBjNmU2MWQ5YzljMmMxN2E1ZjY0NjcuLjFlMmYyOGU1ZWQxOTIyYzgwM2Iw
OTNhMzc4M2MxMmU3NzRmODZhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzMzUsNiArMjMzNSwxMSBAQAogCQk3MjE0NDMz
NDIyM0VDOTE2MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlPd25lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0IC8q
IFNWR1Byb3BlcnR5T3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MjFCNDk3NDI1MTJCQTNCMDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNr
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjFC
NDk3MDI1MTJBQzA0MDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIyODNGMEUyMzBCMjY4QzAw
RjVEODI4IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQ
YWludGluZ09wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk3MjJBRjJERTI3RTFDMjA2MDA3OEQ5OTcgLyogR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzIyQUYyREIyN0UxQzIwNDAwNzhEOTk3IC8qIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjJBRjJE
RjI3RTFDMjA2MDA3OEQ5OTcgLyogR3JhcGhpY3NDb250ZXh0U3RhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMkFGMkRDMjdFMUMyMDUwMDc4RDk5
NyAvKiBHcmFwaGljc0NvbnRleHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTcyMkFGMkUyMjdFMUM0MDUwMDc4RDk5NyAvKiBQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzIyQUYyRTEyN0UxQzQwMzAwNzhEOTk3IC8qIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NzIyQUYyRTQyN0UxQ0YxMzAwNzhEOTk3IC8qIFRleHRCb3hJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIyQUYyRTMyN0UxQ0YxMTAwNzhE
OTk3IC8qIFRleHRCb3hJdGVyYXRvci5oICovOyB9OworCQk3MjJBRjJFNjI3RTFEMEExMDA3OEQ5
OTcgLyogQ0dDb250ZXh0U3RhdGVTYXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzIyQUYyRTUyN0UxRDA5RTAwNzhEOTk3IC8qIENHQ29udGV4dFN0
YXRlU2F2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3MjQ2OTYzQjI3NUM1RkE2MDBBOTE1NkEgLyogQ1NTRmlsdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjUzRkI4MzIxM0IxQkI4MDBDNDBE
MzQgLyogQ1NTRmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzI0Njk2M0QyNzVDNjE0NDAwQTkxNTZBIC8qIEZpbHRlckVmZmVjdFZlY3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIxNEI5
QjcyNzQ0NThGQTAwM0JFNkRGIC8qIEZpbHRlckVmZmVjdFZlY3Rvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNDY5NjNFMjc1QzYxNjcwMEE5
MTU2QSAvKiBGaWx0ZXJJbWFnZVZlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzJCNEVGN0MyNzRFRTM3RjAwMjkzQzJGIC8qIEZpbHRlckltYWdl
VmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTExMzI1LDYgKzExMzMwLDEyIEBACiAJCTcyMUI0OTZGMjUxMkFDMDQwMEZFOUQzQiAvKiBJ
bWFnZUJpdG1hcEJhY2tpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCaXRtYXBCYWNr
aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxQjQ5NzAyNTEyQUMwNDAw
RkU5RDNCIC8qIEltYWdlQml0bWFwQmFja2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJpdG1h
cEJhY2tpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyQTgxNUMyMzhGRDUw
NTAwQzAwNTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbmltYXRp
b25GcmFtZVJhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIyQUYyREIyN0Ux
QzIwNDAwNzhEOTk3IC8qIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MjJBRjJEQzI3RTFDMjA1MDA3OEQ5OTcgLyogR3JhcGhp
Y3NDb250ZXh0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhp
Y3NDb250ZXh0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIyQUYyREQy
N0UxQzIwNTAwNzhEOTk3IC8qIEdyYXBoaWNzQ29udGV4dFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dFN0YXRlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIyQUYyRTEyN0UxQzQwMzAwNzhEOTk3IC8qIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcy
MkFGMkUzMjdFMUNGMTEwMDc4RDk5NyAvKiBUZXh0Qm94SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJveEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcyMkFGMkU1MjdFMUQwOUUwMDc4RDk5NyAvKiBDR0NvbnRleHRTdGF0ZVNh
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENHQ29udGV4dFN0YXRlU2F2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0MzVFRjQyNzNEMDc2NzAwMDVF
N0VFIC8qIEZpbHRlckltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlckltYWdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNDM1RUY1MjczRDA3NjcwMDA1RTdFRSAvKiBGaWx0
ZXJJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWx0ZXJJbWFnZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVEMzI5MUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVu
ZE1pbk1heC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRCbGVu
ZE1pbk1heC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODgxMCw2ICsyODgy
MSw3IEBACiAJCUIyNzUzNTI5MEIwNTM4MTQwMDJDRTY0RiAvKiBjZyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNzIyQUYyRTUyN0UxRDA5RTAwNzhEOTk3
IC8qIENHQ29udGV4dFN0YXRlU2F2ZXIuaCAqLywKIAkJCQkwRkNGMzMyMzBGMkI5NzE1MDA0QjY3
OTUgLyogQ29sb3JDRy5jcHAgKi8sCiAJCQkJQkNBRkVEQjMyNTk2OEQwQjAwMzBFNkFBIC8qIENv
bG9yU3BhY2VDRy5jcHAgKi8sCiAJCQkJQkNBRkVEQjIyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9y
U3BhY2VDRy5oICovLApAQCAtMjkwNDMsNiArMjkwNTUsOSBAQAogCQkJCTdCQjM0QTQ3MjUzNzc2
QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcCAqLywKIAkJ
CQk3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJh
Y3Rvci5oICovLAogCQkJCTdCOTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRl
eHRHTFN0YXRlLmggKi8sCisJCQkJNzIyQUYyREQyN0UxQzIwNTAwNzhEOTk3IC8qIEdyYXBoaWNz
Q29udGV4dFN0YXRlLmNwcCAqLywKKwkJCQk3MjJBRjJEQzI3RTFDMjA1MDA3OEQ5OTcgLyogR3Jh
cGhpY3NDb250ZXh0U3RhdGUuaCAqLywKKwkJCQk3MjJBRjJEQjI3RTFDMjA0MDA3OEQ5OTcgLyog
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlci5oICovLAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUx
RDY4OSAvKiBHcmFwaGljc0xheWVyLmNwcCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2
ODkgLyogR3JhcGhpY3NMYXllci5oICovLAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAv
KiBHcmFwaGljc0xheWVyQ2xpZW50LmggKi8sCkBAIC0yOTE0Myw2ICsyOTE1OCw3IEBACiAJCQkJ
QkNBNTU5MTIyNjNEQkQ3OTAwN0YxOUIzIC8qIFBpeGVsRm9ybWF0LmggKi8sCiAJCQkJQ0REMDhB
QkYyNzdFNTRGMDAwRUEzNzU1IC8qIFBsYXRmb3JtQXVkaW9UcmFja0NvbmZpZ3VyYXRpb24uaCAq
LywKIAkJCQlCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmgg
Ki8sCisJCQkJNzIyQUYyRTEyN0UxQzQwMzAwNzhEOTk3IC8qIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0LmggKi8sCiAJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2Uu
aCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFnZUJ1ZmZl
ci5oICovLAogCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVm
ZmVyQmFja2VuZC5oICovLApAQCAtMjkxNzcsNiArMjkxOTMsNyBAQAogCQkJCTA4NzU1OEM0MTNC
NEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCAqLywKIAkJ
CQk5NUU5RjQ0NDI3QzlBMzlCMDA5NDUzMzcgLyogU3lzdGVtSW1hZ2UuaCAqLywKIAkJCQkzQkI2
QjgwRjIyQTdEMzExMDAzQTJBNjkgLyogVGFiU2l6ZS5oICovLAorCQkJCTcyMkFGMkUzMjdFMUNG
MTEwMDc4RDk5NyAvKiBUZXh0Qm94SXRlcmF0b3IuaCAqLywKIAkJCQkzNzZEQ0NFMDEzQjRGOTY2
MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi8sCiAJCQkJQTgyNEI0NjQwRTJFRjJFQTAwODFBN0I3
IC8qIFRleHRSdW4uaCAqLywKIAkJCQlDRDFFNzM0NjE2N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRy
YWNrUmVwcmVzZW50YXRpb24uY3BwICovLApAQCAtMzM4NzMsNiArMzM4OTAsNyBAQAogCQkJCUNE
RTNBRTEyMjRCNDkxNkEwMDEyOEU3RSAvKiBDRE1VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVGQTkwNENBMTc4RTYxRjUwMDRDOEEyRCAvKiBDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkxQjhGMEI1MjE5NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZVN1bW1h
cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMkFGMkU2MjdFMUQwQTEwMDc4RDk5NyAvKiBDR0Nv
bnRleHRTdGF0ZVNhdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM2RkQxNTE2Qzc4MjY1MDBG
ODg3QzEgLyogQ2hhbmdlVmVyc2lvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2OURE
MTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTc4NUQ5MTUyNEI0RDFDQTAwMTREQjIxIC8qIENoYW5uZWxDb3VudE1vZGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzQ3OTgsNiArMzQ4MTYsOCBAQAogCQkJCTQ5QzdCOUZDMTA0MkQzNjUw
MDA5RDQ0NyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0I5NUNGRUIyNzU0RkY2RTAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdMU3RhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4MEQ2NzA4MEU5RTlERUIwMEU0MjBGMCAvKiBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGVDRy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIyQUYyREYyN0UxQzIw
NjAwNzhEOTk3IC8qIEdyYXBoaWNzQ29udGV4dFN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
MjJBRjJERTI3RTFDMjA2MDA3OEQ5OTcgLyogR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBCMEQwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFw
aGljc0xheWVyQ0EuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4
OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM2NzA1LDYgKzM2
NzI1LDcgQEAKIAkJCQlCQ0FBNDg3MDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZh
Y3RvcnlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjNGNzdCMTQ4NENBNEMwMDhDNkRCRSAv
KiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxOTUxRDU0
RjVGQjAwREQ3QzY4IC8qIFBsYXRmb3JtR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIy
QUYyRTIyN0UxQzQwNTAwNzhEOTk3IC8qIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ3NzA1QzcyNTUyNzZDRDAwMUQwQzk0IC8qIFBsYXRmb3Jt
SW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MDY0MEFGMjQwNzU4MkQwMEFBRTA0
NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzc4
NSw2ICszNzgwNiw3IEBACiAJCQkJQ0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NERDRTYxODgxMDUxRDAw
M0VFREJCIC8qIFRleHRBdXRvU2l6aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEzNDBE
MDA2QzFEMDBFRjZGMjYgLyogVGV4dEJvdW5kYXJpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTcy
MkFGMkU0MjdFMUNGMTMwMDc4RDk5NyAvKiBUZXh0Qm94SXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0NDBERjU2MjZFQjUzRTAwMDRBRjA2QiAvKiBUZXh0Qm94UGFpbnRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTQ0N0Y1QjMyNjZDRjYzRDAwMTMzRjAwIC8qIFRleHRCb3hTZWxlY3Rh
YmxlUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MTUxQkQ4MTJGMTU1OEYwMDVBMEY2NCAv
KiBUZXh0Q2hlY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAwYmIxMzU5
N2NlYTczNjlkYmJjNmUxNzI3ZjI2YzkyYjhmYjc1MTc2Li4zYzM3NGZkOWJhODI3Yzk0YjdmMzRi
NzQ0NmE1ZjdhYmM4YTNlODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDAzLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKICNpbmNsdWRlICJCaWRpUmVzb2x2ZXIuaCIKLSNpbmNs
dWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkZpbHRl
ckltYWdlLmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgpAQCAtMzksMzMzICszOCwx
MSBAQAogI2luY2x1ZGUgIk51bGxHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJSb3VuZGVk
UmVjdC5oIgogI2luY2x1ZGUgIlN5c3RlbUltYWdlLmgiCi0jaW5jbHVkZSAiVGV4dFJ1bi5oIgor
I2luY2x1ZGUgIlRleHRCb3hJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJl
YW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXh0Qm94SXRlcmF0b3Igewot
cHVibGljOgotICAgIFRleHRCb3hJdGVyYXRvcigpCi0gICAgICAgIDogbV90ZXh0UnVuKDApCi0g
ICAgICAgICwgbV9vZmZzZXQoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgVGV4dEJveEl0ZXJhdG9y
KGNvbnN0IFRleHRSdW4qIHRleHRSdW4sIHVuc2lnbmVkIG9mZnNldCkKLSAgICAgICAgOiBtX3Rl
eHRSdW4odGV4dFJ1bikKLSAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgewotICAgIH0K
LQotICAgIHVuc2lnbmVkIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9Ci0gICAg
dm9pZCBpbmNyZW1lbnQoKSB7IG1fb2Zmc2V0Kys7IH0KLSAgICBib29sIGF0RW5kKCkgY29uc3Qg
eyByZXR1cm4gIW1fdGV4dFJ1biB8fCBtX29mZnNldCA+PSBtX3RleHRSdW4tPmxlbmd0aCgpOyB9
Ci0gICAgVUNoYXIgY3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICgqbV90ZXh0UnVuKVttX29mZnNl
dF07IH0KLSAgICBVQ2hhckRpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBhdEVu
ZCgpID8gVV9PVEhFUl9ORVVUUkFMIDogdV9jaGFyRGlyZWN0aW9uKGN1cnJlbnQoKSk7IH0KLQot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0ICYmIG1fdGV4
dFJ1biA9PSBvdGhlci5tX3RleHRSdW47Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFRleHRCb3hJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90
aGVyKTsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IFRleHRSdW4qIG1fdGV4dFJ1bjsKLSAgICB1
bnNpZ25lZCBtX29mZnNldDsKLX07Ci0KLSNkZWZpbmUgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVS
VFkoZmxhZywgcHJvcGVydHkpIFwKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6ZmxhZykgJiYgKG1fc3RhdGUucHJvcGVydHkgIT0gc3RhdGUucHJv
cGVydHkpKSBcCi0gICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6
ZmxhZyk7Ci0KLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSgpCi0g
ICAgOiBzaG91bGRBbnRpYWxpYXModHJ1ZSkKLSAgICAsIHNob3VsZFNtb290aEZvbnRzKHRydWUp
Ci0gICAgLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHModHJ1ZSkKLSAgICAsIHNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKGZhbHNlKQotICAgICwgZHJhd0x1bWluYW5jZU1hc2soZmFsc2UpCi17
Ci19Ci0KLUdyYXBoaWNzQ29udGV4dFN0YXRlOjp+R3JhcGhpY3NDb250ZXh0U3RhdGUoKSA9IGRl
ZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJikgPSBkZWZhdWx0Owot
R3JhcGhpY3NDb250ZXh0U3RhdGUmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRvcj0oY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0
ZSYgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYm
KSA9IGRlZmF1bHQ7Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyhj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotewotICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0cm9rZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVy
bkNoYW5nZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpIHsKLSAg
ICAgICAgc3Ryb2tlQ29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKLSAgICAgICAgc3Ryb2tlR3Jh
ZGllbnQgPSBzdGF0ZS5zdHJva2VHcmFkaWVudDsKLSAgICAgICAgc3Ryb2tlUGF0dGVybiA9IHN0
YXRlLnN0cm9rZVBhdHRlcm47Ci0gICAgfQotCi0gICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpG
aWxsR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5n
ZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxhZ3MpKSB7Ci0gICAgICAgIGZp
bGxDb2xvciA9IHN0YXRlLmZpbGxDb2xvcjsKLSAgICAgICAgZmlsbEdyYWRpZW50ID0gc3RhdGUu
ZmlsbEdyYWRpZW50OwotICAgICAgICBmaWxsUGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0ZXJuOwot
ICAgIH0KLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hh
ZG93Q2hhbmdlKSkgewotICAgICAgICBzaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFkb3dPZmZzZXQ7
Ci0gICAgICAgIHNoYWRvd0JsdXIgPSBzdGF0ZS5zaGFkb3dCbHVyOwotICAgICAgICBzaGFkb3dD
b2xvciA9IHN0YXRlLnNoYWRvd0NvbG9yOwotICAgICAgICBzaGFkb3dSYWRpdXNNb2RlID0gc3Rh
dGUuc2hhZG93UmFkaXVzTW9kZTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIHN0cm9r
ZVRoaWNrbmVzcyA9IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKLQotICAgIGlmIChmbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAg
ICAgdGV4dERyYXdpbmdNb2RlID0gc3RhdGUudGV4dERyYXdpbmdNb2RlOwotCi0gICAgaWYgKGZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0g
ICAgICAgIHN0cm9rZVN0eWxlID0gc3RhdGUuc3Ryb2tlU3R5bGU7Ci0KLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAg
ZmlsbFJ1bGUgPSBzdGF0ZS5maWxsUnVsZTsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKQotICAgICAgICBhbHBoYSA9IHN0YXRlLmFs
cGhhOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9k
ZUNoYW5nZSB9KSkgewotICAgICAgICBjb21wb3NpdGVPcGVyYXRvciA9IHN0YXRlLmNvbXBvc2l0
ZU9wZXJhdG9yOwotICAgICAgICBibGVuZE1vZGUgPSBzdGF0ZS5ibGVuZE1vZGU7Ci0gICAgfQot
Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRp
YWxpYXNDaGFuZ2UpKQotICAgICAgICBzaG91bGRBbnRpYWxpYXMgPSBzdGF0ZS5zaG91bGRBbnRp
YWxpYXM7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKLSAgICAgICAgc2hvdWxkU21vb3RoRm9udHMgPSBzdGF0
ZS5zaG91bGRTbW9vdGhGb250czsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAgICAgICAg
c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
aGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zID0gc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Ci0KLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkK
LSAgICAgICAgZHJhd0x1bWluYW5jZU1hc2sgPSBzdGF0ZS5kcmF3THVtaW5hbmNlTWFzazsKLQot
ICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eUNoYW5nZSkpCi0gICAgICAgIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkg
PSBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwotCi0jaWYgSEFWRShPU19EQVJLX01P
REVfU1VQUE9SVCkKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKLSAgICAgICAgdXNlRGFya0FwcGVhcmFuY2UgPSBz
dGF0ZS51c2VEYXJrQXBwZWFyYW5jZTsKLSNlbmRpZgotfQotCi1HcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncyBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdlc0Zy
b21TdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpIGNvbnN0Ci17Ci0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3M7Ci0KLSAg
ICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VHcmFkaWVudENoYW5nZSwgc3Ryb2tl
R3JhZGllbnQpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVBhdHRlcm5D
aGFuZ2UsIHN0cm9rZVBhdHRlcm4pOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKEZp
bGxHcmFkaWVudENoYW5nZSwgZmlsbEdyYWRpZW50KTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9Q
Uk9QRVJUWShGaWxsUGF0dGVybkNoYW5nZSwgZmlsbFBhdHRlcm4pOwotCi0gICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkKLSAg
ICAgICAgJiYgKG1fc3RhdGUuc2hhZG93T2Zmc2V0ICE9IHN0YXRlLnNoYWRvd09mZnNldAotICAg
ICAgICAgICAgfHwgbV9zdGF0ZS5zaGFkb3dCbHVyICE9IHN0YXRlLnNoYWRvd0JsdXIKLSAgICAg
ICAgICAgIHx8IG1fc3RhdGUuc2hhZG93Q29sb3IgIT0gc3RhdGUuc2hhZG93Q29sb3IpKQotICAg
ICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7
Ci0KLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VUaGlja25lc3NDaGFuZ2Us
IHN0cm9rZVRoaWNrbmVzcyk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoVGV4dERy
YXdpbmdNb2RlQ2hhbmdlLCB0ZXh0RHJhd2luZ01vZGUpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VE
X1BST1BFUlRZKFN0cm9rZUNvbG9yQ2hhbmdlLCBzdHJva2VDb2xvcik7Ci0gICAgQ0hFQ0tfRk9S
X0NIQU5HRURfUFJPUEVSVFkoRmlsbENvbG9yQ2hhbmdlLCBmaWxsQ29sb3IpOwotICAgIENIRUNL
X0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVN0eWxlQ2hhbmdlLCBzdHJva2VTdHlsZSk7Ci0g
ICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFJ1bGVDaGFuZ2UsIGZpbGxSdWxlKTsK
LSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShBbHBoYUNoYW5nZSwgYWxwaGEpOwotCi0g
ICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2Rl
Q2hhbmdlIH0pCi0gICAgICAgICYmIChtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yICE9IHN0YXRl
LmNvbXBvc2l0ZU9wZXJhdG9yIHx8IG1fc3RhdGUuYmxlbmRNb2RlICE9IHN0YXRlLmJsZW5kTW9k
ZSkpIHsKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21w
b3NpdGVPcGVyYXRpb25DaGFuZ2UpOwotICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSk7Ci0gICAgfQotCi0gICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoU2hvdWxkQW50aWFsaWFzQ2hhbmdlLCBzaG91bGRBbnRpYWxpYXMpOwot
ICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFNtb290aEZvbnRzQ2hhbmdlLCBz
aG91bGRTbW9vdGhGb250cyk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoU2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMp
OwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
Q2hhbmdlLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURf
UFJPUEVSVFkoRHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UsIGRyYXdMdW1pbmFuY2VNYXNrKTsKLSAg
ICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hh
bmdlLCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKLQotI2lmIEhBVkUoT1NfREFSS19NT0RF
X1NVUFBPUlQpCi0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoVXNlRGFya0FwcGVhcmFu
Y2VDaGFuZ2UsIHVzZURhcmtBcHBlYXJhbmNlKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGNoYW5n
ZUZsYWdzOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphY2N1bXVsYXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCi17Ci0gICAgbV9zdGF0ZS5tZXJnZUNoYW5nZXMoc3Rh
dGUsIGZsYWdzKTsKLQotICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRp
ZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSB9Owot
ICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpCi0gICAgICAgIG1fY2hhbmdl
RmxhZ3MucmVtb3ZlKHN0cm9rZUZsYWdzKTsKLQotICAgIGF1dG8gZmlsbEZsYWdzID0geyBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RmlsbEdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFu
Z2UgfTsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoZmlsbEZsYWdzKSkKLSAgICAgICAgbV9j
aGFuZ2VGbGFncy5yZW1vdmUoZmlsbEZsYWdzKTsKLQotICAgIGF1dG8gY29tcG9zaXRlT3BlcmF0
b3JGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5n
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9OwotICAgIGlmIChmbGFn
cy5jb250YWluc0FueShjb21wb3NpdGVPcGVyYXRvckZsYWdzKSkKLSAgICAgICAgbV9jaGFuZ2VG
bGFncy5yZW1vdmUoY29tcG9zaXRlT3BlcmF0b3JGbGFncyk7Ci0KLSAgICBtX2NoYW5nZUZsYWdz
LmFkZChmbGFncyk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFwcGx5
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKLXsKLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKQot
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KCptX3N0YXRlLnN0cm9rZUdyYWRpZW50
LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotCi0gICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFu
Z2UpKQotICAgICAgICBjb250ZXh0LnNldFN0cm9rZVBhdHRlcm4oKm1fc3RhdGUuc3Ryb2tlUGF0
dGVybik7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGll
bnQoKm1fc3RhdGUuZmlsbEdyYWRpZW50LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNm
b3JtKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbFBhdHRlcm4o
Km1fc3RhdGUuZmlsbFBhdHRlcm4pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkKLSAg
ICAgICAgY29udGV4dC5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0YXRlLnNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFNoYWRv
dyhtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRv
d0NvbG9yLCBtX3N0YXRlLnNoYWRvd1JhZGl1c01vZGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkp
Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKG1fc3RhdGUuc3Ryb2tlVGhpY2tu
ZXNzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFRleHREcmF3
aW5nTW9kZShtX3N0YXRlLnRleHREcmF3aW5nTW9kZSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAg
ICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwotCi0gICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xv
ckNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fc3RhdGUuZmlsbENvbG9y
KTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUobV9z
dGF0ZS5zdHJva2VTdHlsZSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZp
bGxSdWxlKG1fc3RhdGUuZmlsbFJ1bGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5z
ZXRBbHBoYShtX3N0YXRlLmFscGhhKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
QW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KSkKLSAgICAgICAgY29udGV4dC5z
ZXRDb21wb3NpdGVPcGVyYXRpb24obV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgbV9zdGF0ZS5i
bGVuZE1vZGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U2hv
dWxkQW50aWFsaWFzKG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKLQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0No
YW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U2hvdWxkU21vb3RoRm9udHMobV9zdGF0ZS5zaG91
bGRTbW9vdGhGb250cyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAgICAg
ICAgY29udGV4dC5zZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMobV9zdGF0ZS5zaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKLSAgICAgICAg
Y29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrKTsK
LQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7
Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGlmIChtX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkp
Ci0gICAgICAgIGNvbnRleHQuc2V0VXNlRGFya0FwcGVhcmFuY2UobV9zdGF0ZS51c2VEYXJrQXBw
ZWFyYW5jZSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6
ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoImNoYW5n
ZS1mbGFncyIsIG1fY2hhbmdlRmxhZ3MudG9SYXcoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKQot
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1ncmFkaWVudCIsIG1fc3RhdGUuc3Ryb2tl
R3JhZGllbnQuZ2V0KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJv
cGVydHkoInN0cm9rZS1wYXR0ZXJuIiwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuLmdldCgpKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxs
R3JhZGllbnRDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtZ3JhZGllbnQi
LCBtX3N0YXRlLmZpbGxHcmFkaWVudC5nZXQoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImZpbGwtcGF0dGVybiIsIG1fc3RhdGUuZmlsbFBhdHRlcm4uZ2V0
KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNoYWRvd0NoYW5nZSkpIHsKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3ctYmx1
ciIsIG1fc3RhdGUuc2hhZG93Qmx1cik7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93
LW9mZnNldCIsIG1fc3RhdGUuc2hhZG93T2Zmc2V0KTsKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJzaGFkb3ctY29sb3IiLCBtX3N0YXRlLnNoYWRvd0NvbG9yKTsKLSAgICAgICAgdHMuZHVtcFBy
b3BlcnR5KCJzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIiwgbV9zdGF0ZS5zaGFkb3dSYWRpdXNN
b2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSk7Ci0gICAgfQotCi0gICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0No
YW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXRoaWNrbmVzcyIsIG1fc3Rh
dGUuc3Ryb2tlVGhpY2tuZXNzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInRleHQtZHJhd2luZy1tb2RlIiwgbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUu
dG9SYXcoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0
cm9rZS1jb2xvciIsIG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpCi0gICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiZmlsbC1jb2xvciIsIG1fc3RhdGUuZmlsbENvbG9yKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VTdHlsZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXN0eWxlIiwg
bV9zdGF0ZS5zdHJva2VTdHlsZSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImZpbGwtcnVsZSIsIG1fc3RhdGUuZmlsbFJ1bGUpOwotCi0gICAgaWYgKG1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJhbHBoYSIsIG1fc3RhdGUuYWxwaGEpOwotCi0gICAgaWYgKG1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJh
dGlvbkNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9zaXRlLW9wZXJhdG9y
IiwgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvcik7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKSkKLSAgICAgICAg
dHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgbV9zdGF0ZS5ibGVuZE1vZGUpOwotCi0gICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFu
dGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLWFudGlhbGlh
cyIsIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCi0g
ICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXNtb290aC1mb250cyIsIG1fc3RhdGUuc2hv
dWxkU21vb3RoRm9udHMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkpCi0gICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXN1YnBpeGVsLXF1YW50aXplLWZvbnRzIiwgbV9z
dGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3dzLWlnbm9yZS10cmFuc2Zv
cm1zIiwgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0KLSAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tD
aGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImRyYXctbHVtaW5hbmNlLW1hc2siLCBt
X3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrKTsKLQotI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBP
UlQpCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ1c2Ut
ZGFyay1hcHBlYXJhbmNlIiwgbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZSk7Ci0jZW5kaWYKLX0K
LQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlKQotewotICAgIHN0YXRlQ2hhbmdlLmR1bXAo
dHMpOwotICAgIHJldHVybiB0czsKLX0KLQogR3JhcGhpY3NDb250ZXh0Ojp+R3JhcGhpY3NDb250
ZXh0KCkKIHsKICAgICBBU1NFUlQobV9zdGFjay5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBmYjk1ZGQy
NWIyNzFkZWI5ZmE4NWZmMmQ5ZjFmNzQ3MTZhMDY2YmFlLi4zOWYzMDFkZTYwZmM1Mzk0YzJjYTE0
NGVlNzUxMDhiM2ZjNmQzZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDMtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTMwLDQ5ICszMCwxOCBAQAogI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
IgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCi0jaW5j
bHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFN0YXRlLmgi
CiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5j
bHVkZSAiUGF0dGVybi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiUmVuZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAot
I2lmIFVTRShDRykKLXR5cGVkZWYgc3RydWN0IENHQ29udGV4dCBQbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dDsKLSNlbGlmIFVTRShDQUlSTykKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEdyYXBo
aWNzQ29udGV4dENhaXJvOwotfQotdHlwZWRlZiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWly
byBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKLSNlbHNlCi10eXBlZGVmIHZvaWQgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQ7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlICJE
SUJQaXhlbERhdGEuaCIKLXR5cGVkZWYgc3RydWN0IEhEQ19fKiBIREM7Ci0jaWYgIVVTRShDRykK
LS8vIFVJbnQ4IGlzIGRlZmluZWQgaW4gQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgKLXR5cGVkZWYg
dW5zaWduZWQgY2hhciBVSW50ODsKLSNlbmRpZgotI2VuZGlmCi0KLS8vIFgxMSBoZWFkZXJzIGRl
ZmluZSBhIGJ1bmNoIG9mIG1hY3JvcyB3aXRoIGNvbW1vbiB0ZXJtcywgaW50ZXJmZXJpbmcgd2l0
aCBXZWJDb3JlIGFuZCBXVEYgZW51bSB2YWx1ZXMuCi0vLyBBcyBhIHdvcmthcm91bmQsIHdlIGV4
cGxpY2l0bHkgdW5kZWYgdGhlbSBoZXJlLgotI2lmIGRlZmluZWQoTm9uZSkKLSN1bmRlZiBOb25l
Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKEJlbG93KQotI3VuZGVmIEJlbG93Ci0jZW5kaWYKLSNpZiBk
ZWZpbmVkKFN1Y2Nlc3MpCi0jdW5kZWYgU3VjY2VzcwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwpAQCAtOTEsMTY5ICs2MCw4IEBAIGNsYXNz
IFN5c3RlbUltYWdlOwogY2xhc3MgVGV4dFJ1bjsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4
OwogCi1uYW1lc3BhY2UgRGlzcGxheUxpc3QgewotY2xhc3MgUmVjb3JkZXI7Ci19Ci0KLWVudW0g
Y2xhc3MgVGV4dERyYXdpbmdNb2RlIDogdWludDhfdCB7Ci0gICAgRmlsbCA9IDEgPDwgMCwKLSAg
ICBTdHJva2UgPSAxIDw8IDEsCi19OwotdXNpbmcgVGV4dERyYXdpbmdNb2RlRmxhZ3MgPSBPcHRp
b25TZXQ8VGV4dERyYXdpbmdNb2RlPjsKLQotLy8gTGVnYWN5IHNoYWRvdyBibHVyIHJhZGl1cyBp
cyB1c2VkIGZvciBjYW52YXMsIGFuZCAtd2Via2l0LWJveC1zaGFkb3cuCi0vLyBJdCBoYXMgZGlm
ZmVyZW50IHRyZWF0bWVudCBvZiByYWRpaSA+IDhweC4KLWVudW0gY2xhc3MgU2hhZG93UmFkaXVz
TW9kZSA6IGJvb2wgewotICAgIERlZmF1bHQsCi0gICAgTGVnYWN5Ci19OwotCi1lbnVtIFN0cm9r
ZVN0eWxlIHsKLSAgICBOb1N0cm9rZSwKLSAgICBTb2xpZFN0cm9rZSwKLSAgICBEb3R0ZWRTdHJv
a2UsCi0gICAgRGFzaGVkU3Ryb2tlLAotICAgIERvdWJsZVN0cm9rZSwKLSAgICBXYXZ5U3Ryb2tl
LAotfTsKLQotc3RydWN0IERvY3VtZW50TWFya2VyTGluZVN0eWxlIHsKLSAgICBlbnVtIGNsYXNz
IE1vZGUgOiB1aW50OF90IHsKLSAgICAgICAgVGV4dENoZWNraW5nRGljdGF0aW9uUGhyYXNlV2l0
aEFsdGVybmF0aXZlcywKLSAgICAgICAgU3BlbGxpbmcsCi0gICAgICAgIEdyYW1tYXIsCi0gICAg
ICAgIEF1dG9jb3JyZWN0aW9uUmVwbGFjZW1lbnQsCi0gICAgICAgIERpY3RhdGlvbkFsdGVybmF0
aXZlcwotICAgIH0gbW9kZTsKLSAgICBib29sIHNob3VsZFVzZURhcmtBcHBlYXJhbmNlIHsgZmFs
c2UgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxEb2N1bWVudE1hcmtlckxpbmVTdHlsZT4gZGVjb2RlKERlY29kZXImKTsKLX07Ci0KLXRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Ci12b2lkIERvY3VtZW50TWFya2VyTGluZVN0eWxlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1vZGU7Ci0gICAgZW5j
b2RlciA8PCBzaG91bGRVc2VEYXJrQXBwZWFyYW5jZTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KLXN0ZDo6b3B0aW9uYWw8RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU+IERvY3VtZW50TWFy
a2VyTGluZVN0eWxlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBzdGQ6Om9wdGlv
bmFsPE1vZGU+IG1vZGU7Ci0gICAgZGVjb2RlciA+PiBtb2RlOwotICAgIGlmICghbW9kZSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hv
dWxkVXNlRGFya0FwcGVhcmFuY2U7Ci0gICAgZGVjb2RlciA+PiBzaG91bGRVc2VEYXJrQXBwZWFy
YW5jZTsKLSAgICBpZiAoIXNob3VsZFVzZURhcmtBcHBlYXJhbmNlKQotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7ICptb2RlLCAqc2hvdWxkVXNlRGFya0FwcGVh
cmFuY2UgfX07Ci19Ci0KIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTsKIAotc3Ry
dWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFwaGljc0NvbnRleHRTdGF0ZSgp
OwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZShHcmFwaGljc0NvbnRl
eHRTdGF0ZSYmKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRvcj0oY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgb3BlcmF0b3I9KEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpOwotCi0gICAgZW51bSBD
aGFuZ2UgOiB1aW50MzJfdCB7Ci0gICAgICAgIFN0cm9rZUdyYWRpZW50Q2hhbmdlICAgICAgICAg
ICAgICAgICAgICA9IDEgPDwgMCwKLSAgICAgICAgU3Ryb2tlUGF0dGVybkNoYW5nZSAgICAgICAg
ICAgICAgICAgICAgID0gMSA8PCAxLAotICAgICAgICBGaWxsR3JhZGllbnRDaGFuZ2UgICAgICAg
ICAgICAgICAgICAgICAgPSAxIDw8IDIsCi0gICAgICAgIEZpbGxQYXR0ZXJuQ2hhbmdlICAgICAg
ICAgICAgICAgICAgICAgICA9IDEgPDwgMywKLSAgICAgICAgU3Ryb2tlVGhpY2tuZXNzQ2hhbmdl
ICAgICAgICAgICAgICAgICAgID0gMSA8PCA0LAotICAgICAgICBTdHJva2VDb2xvckNoYW5nZSAg
ICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDUsCi0gICAgICAgIFN0cm9rZVN0eWxlQ2hhbmdl
ICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgNiwKLSAgICAgICAgRmlsbENvbG9yQ2hhbmdl
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA3LAotICAgICAgICBGaWxsUnVsZUNoYW5n
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDgsCi0gICAgICAgIFNoYWRvd0NoYW5n
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgOSwKLSAgICAgICAgU2hhZG93c0ln
bm9yZVRyYW5zZm9ybXNDaGFuZ2UgICAgICAgICAgID0gMSA8PCAxMCwKLSAgICAgICAgQWxwaGFD
aGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxMSwKLSAgICAgICAgQ29t
cG9zaXRlT3BlcmF0aW9uQ2hhbmdlICAgICAgICAgICAgICAgID0gMSA8PCAxMiwKLSAgICAgICAg
QmxlbmRNb2RlQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxMywKLSAgICAg
ICAgVGV4dERyYXdpbmdNb2RlQ2hhbmdlICAgICAgICAgICAgICAgICAgID0gMSA8PCAxNCwKLSAg
ICAgICAgU2hvdWxkQW50aWFsaWFzQ2hhbmdlICAgICAgICAgICAgICAgICAgID0gMSA8PCAxNSwK
LSAgICAgICAgU2hvdWxkU21vb3RoRm9udHNDaGFuZ2UgICAgICAgICAgICAgICAgID0gMSA8PCAx
NiwKLSAgICAgICAgU2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlICAgICAgID0gMSA8
PCAxNywKLSAgICAgICAgRHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UgICAgICAgICAgICAgICAgID0g
MSA8PCAxOCwKLSAgICAgICAgSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSAgICAgICAg
ID0gMSA8PCAxOSwKLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgICAgICBVc2VE
YXJrQXBwZWFyYW5jZUNoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDIwLAotI2VuZGlmCi0g
ICAgfTsKLSAgICB1c2luZyBTdGF0ZUNoYW5nZUZsYWdzID0gT3B0aW9uU2V0PENoYW5nZT47Ci0K
LSAgICB2b2lkIG1lcmdlQ2hhbmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKLQotICAgIFJlZlB0cjxHcmFkaWVu
dD4gc3Ryb2tlR3JhZGllbnQ7Ci0gICAgUmVmUHRyPFBhdHRlcm4+IHN0cm9rZVBhdHRlcm47Ci0g
ICAgCi0gICAgUmVmUHRyPEdyYWRpZW50PiBmaWxsR3JhZGllbnQ7Ci0gICAgUmVmUHRyPFBhdHRl
cm4+IGZpbGxQYXR0ZXJuOwotCi0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKLQotICAgIENv
bG9yIHN0cm9rZUNvbG9yIHsgQ29sb3I6OmJsYWNrIH07Ci0gICAgQ29sb3IgZmlsbENvbG9yIHsg
Q29sb3I6OmJsYWNrIH07Ci0gICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0KLSAgICBBZmZpbmVUcmFu
c2Zvcm0gc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0g
ZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0KLSAgICBmbG9hdCBzdHJva2VUaGlja25lc3Mg
eyAwIH07Ci0gICAgZmxvYXQgc2hhZG93Qmx1ciB7IDAgfTsKLSAgICBmbG9hdCBhbHBoYSB7IDEg
fTsKLQotICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlIHsgU29saWRTdHJva2UgfTsKLSAgICBX
aW5kUnVsZSBmaWxsUnVsZSB7IFdpbmRSdWxlOjpOb25aZXJvIH07Ci0KLSAgICBUZXh0RHJhd2lu
Z01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUgeyBUZXh0RHJhd2luZ01vZGU6OkZpbGwgfTsKLSAg
ICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciB7IENvbXBvc2l0ZU9wZXJhdG9y
OjpTb3VyY2VPdmVyIH07Ci0gICAgQmxlbmRNb2RlIGJsZW5kTW9kZSB7IEJsZW5kTW9kZTo6Tm9y
bWFsIH07Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSB7IEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0IH07Ci0gICAgU2hhZG93UmFkaXVzTW9k
ZSBzaGFkb3dSYWRpdXNNb2RlIHsgU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdCB9OwotCi0gICAg
Ym9vbCBzaG91bGRBbnRpYWxpYXMgOiAxOwotICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgOiAx
OwotICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIDogMTsKLSAgICBib29sIHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zIDogMTsKLSAgICBib29sIGRyYXdMdW1pbmFuY2VNYXNrIDog
MTsKLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGJvb2wgdXNlRGFya0FwcGVh
cmFuY2UgOiAxOwotI2VuZGlmCi19OwotCi1zdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2UgewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKCkgPSBkZWZhdWx0OwotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCi0gICAgICAg
IDogbV9zdGF0ZShzdGF0ZSkKLSAgICAgICAgLCBtX2NoYW5nZUZsYWdzKGZsYWdzKQotICAgIHsK
LSAgICB9Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFu
Z2VzRnJvbVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJikgY29uc3Q7Ci0KLSAgICB2
b2lkIGFjY3VtdWxhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7Ci0gICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdDsKLSAgICAKLSAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Q7
Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRlOwotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIG1fY2hhbmdlRmxhZ3M7Ci19OwotCi1XVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGVDaGFuZ2UmKTsKLQogY2xhc3MgR3JhcGhpY3NDb250ZXh0IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShHcmFwaGljc0NvbnRleHQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzogICAKQEAgLTU3MCwxODIgKzM3OCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NvbnRl
bnRmdWxQYWludERldGVjdGVkIHsgZmFsc2UgfTsKIH07CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBib29s
IHNhdmVBbmRSZXN0b3JlID0gdHJ1ZSkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICwg
bV9zYXZlQW5kUmVzdG9yZShzYXZlQW5kUmVzdG9yZSkKLSAgICB7Ci0gICAgICAgIGlmIChtX3Nh
dmVBbmRSZXN0b3JlKQotICAgICAgICAgICAgbV9jb250ZXh0LnNhdmUoKTsKLSAgICB9Ci0gICAg
Ci0gICAgfkdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIoKQotICAgIHsKLSAgICAgICAgaWYgKG1f
c2F2ZUFuZFJlc3RvcmUpCi0gICAgICAgICAgICBtX2NvbnRleHQucmVzdG9yZSgpOwotICAgIH0K
LSAgICAKLSAgICB2b2lkIHNhdmUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX3NhdmVBbmRS
ZXN0b3JlKTsKLSAgICAgICAgbV9jb250ZXh0LnNhdmUoKTsKLSAgICAgICAgbV9zYXZlQW5kUmVz
dG9yZSA9IHRydWU7Ci0gICAgfQotCi0gICAgdm9pZCByZXN0b3JlKCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3NhdmVBbmRSZXN0b3JlKTsKLSAgICAgICAgbV9jb250ZXh0LnJlc3RvcmUoKTsK
LSAgICAgICAgbV9zYXZlQW5kUmVzdG9yZSA9IGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiAmbV9jb250ZXh0OyB9Ci0KLXBy
aXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRleHQ7Ci0gICAgYm9vbCBtX3NhdmVB
bmRSZXN0b3JlOwotfTsKLQotY2xhc3MgVHJhbnNwYXJlbmN5TGF5ZXJTY29wZSB7Ci1wdWJsaWM6
Ci0gICAgVHJhbnNwYXJlbmN5TGF5ZXJTY29wZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IGFscGhhLCBib29sIGJlZ2luTGF5ZXIgPSB0cnVlKQotICAgICAgICA6IG1fY29udGV4dChj
b250ZXh0KQotICAgICAgICAsIG1fYWxwaGEoYWxwaGEpCi0gICAgICAgICwgbV9iZWdhbkxheWVy
KGJlZ2luTGF5ZXIpCi0gICAgewotICAgICAgICBpZiAoYmVnaW5MYXllcikKLSAgICAgICAgICAg
IG1fY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG1fYWxwaGEpOwotICAgIH0KLSAgICAK
LSAgICB2b2lkIGJlZ2luTGF5ZXIoZmxvYXQgYWxwaGEpCi0gICAgewotICAgICAgICBtX2FscGhh
ID0gYWxwaGE7Ci0gICAgICAgIG1fY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG1fYWxw
aGEpOwotICAgICAgICBtX2JlZ2FuTGF5ZXIgPSB0cnVlOwotICAgIH0KLSAgICAKLSAgICB+VHJh
bnNwYXJlbmN5TGF5ZXJTY29wZSgpCi0gICAgewotICAgICAgICBpZiAobV9iZWdhbkxheWVyKQot
ICAgICAgICAgICAgbV9jb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwotICAgIGZsb2F0IG1fYWxw
aGE7Ci0gICAgYm9vbCBtX2JlZ2FuTGF5ZXI7Ci19OwotCi1jbGFzcyBHcmFwaGljc0NvbnRleHRT
dGF0ZVN0YWNrQ2hlY2tlciB7Ci1wdWJsaWM6Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTdGFj
a0NoZWNrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotICAgICAgICA6IG1fY29udGV4dChj
b250ZXh0KQotICAgICAgICAsIG1fc3RhY2tTaXplKGNvbnRleHQuc3RhY2tTaXplKCkpCi0gICAg
eyB9Ci0gICAgCi0gICAgfkdyYXBoaWNzQ29udGV4dFN0YXRlU3RhY2tDaGVja2VyKCkKLSAgICB7
Ci0gICAgICAgIGlmIChtX2NvbnRleHQuc3RhY2tTaXplKCkgIT0gbV9zdGFja1NpemUpCi0gICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIkdyYXBoaWNzQ29udGV4dCAlcCBzdGFjayBjaGFuZ2VkIGJ5
ICVkIiwgJm1fY29udGV4dCwgKGludCltX2NvbnRleHQuc3RhY2tTaXplKCkgLSAoaW50KW1fc3Rh
Y2tTaXplKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRl
eHQ7Ci0gICAgdW5zaWduZWQgbV9zdGFja1NpemU7Ci19OwotCi1jbGFzcyBJbnRlcnBvbGF0aW9u
UXVhbGl0eU1haW50YWluZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IEludGVycG9sYXRpb25R
dWFsaXR5TWFpbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgSW50ZXJw
b2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHlUb1VzZSkKLSAgICAgICAgOiBtX2dy
YXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQpCi0gICAgICAgICwgbV9jdXJyZW50SW50ZXJw
b2xhdGlvblF1YWxpdHkoZ3JhcGhpY3NDb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHko
KSkKLSAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlZChpbnRlcnBvbGF0aW9u
UXVhbGl0eVRvVXNlICE9IEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0ICYmIG1fY3VycmVu
dEludGVycG9sYXRpb25RdWFsaXR5ICE9IGludGVycG9sYXRpb25RdWFsaXR5VG9Vc2UpCi0gICAg
ewotICAgICAgICBpZiAobV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQpCi0gICAgICAgICAg
ICBtX2dyYXBoaWNzQ29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KGludGVycG9s
YXRpb25RdWFsaXR5VG9Vc2UpOwotICAgIH0KLQotICAgIGV4cGxpY2l0IEludGVycG9sYXRpb25R
dWFsaXR5TWFpbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgc3RkOjpv
cHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAg
ICAgIDogSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyKGdyYXBoaWNzQ29udGV4dCwgaW50
ZXJwb2xhdGlvblF1YWxpdHkgPyBpbnRlcnBvbGF0aW9uUXVhbGl0eS52YWx1ZSgpIDogZ3JhcGhp
Y3NDb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSkKLSAgICB7Ci0gICAgfQotCi0g
ICAgfkludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcigpCi0gICAgewotICAgICAgICBpZiAo
bV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQpCi0gICAgICAgICAgICBtX2dyYXBoaWNzQ29u
dGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KG1fY3VycmVudEludGVycG9sYXRpb25R
dWFsaXR5KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0JiBtX2dyYXBo
aWNzQ29udGV4dDsKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2N1cnJlbnRJbnRlcnBvbGF0
aW9uUXVhbGl0eTsKLSAgICBib29sIG1faW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2VkOwotfTsK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9k
ZT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgV2ViQ29yZTo6RG9jdW1l
bnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGUsCi0gICAgV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJMaW5l
U3R5bGU6Ok1vZGU6OlRleHRDaGVja2luZ0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMs
Ci0gICAgV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU6OlNwZWxsaW5nLAot
ICAgIFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpHcmFtbWFyLAotICAg
IFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpBdXRvY29ycmVjdGlvblJl
cGxhY2VtZW50LAotICAgIFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpE
aWN0YXRpb25BbHRlcm5hdGl2ZXMKLSAgICA+OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlPiB7Ci0gICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVBhdHRlcm5DaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxHcmFkaWVudENoYW5nZSwKLSAgICAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbFBhdHRlcm5DaGFu
Z2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9r
ZVRoaWNrbmVzc0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVN0eWxlQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxlQ2hhbmdlLAotICAg
ICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaGFkb3dDaGFuZ2Us
Ci0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpBbHBoYUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLAotICAgICAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpCbGVuZE1vZGVDaGFuZ2UsCi0gICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlRleHREcmF3aW5nTW9k
ZUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
U2hvdWxkQW50aWFsaWFzQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
Q2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpE
cmF3THVtaW5hbmNlTWFza0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZQotI2lmIEhBVkUo
T1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgICAgICwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UKLSNlbmRpZgotICAgID47Ci19
OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlN0cm9rZVN0eWxlPiB7
Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICBXZWJDb3JlOjpTdHJva2VTdHls
ZSwKLSAgICBXZWJDb3JlOjpTdHJva2VTdHlsZTo6Tm9TdHJva2UsCi0gICAgV2ViQ29yZTo6U3Ry
b2tlU3R5bGU6OlNvbGlkU3Ryb2tlLAotICAgIFdlYkNvcmU6OlN0cm9rZVN0eWxlOjpEb3R0ZWRT
dHJva2UsCi0gICAgV2ViQ29yZTo6U3Ryb2tlU3R5bGU6OkRhc2hlZFN0cm9rZSwKLSAgICBXZWJD
b3JlOjpTdHJva2VTdHlsZTo6RG91YmxlU3Ryb2tlLAotICAgIFdlYkNvcmU6OlN0cm9rZVN0eWxl
OjpXYXZ5U3Ryb2tlCi0gICAgPjsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6VGV4dERyYXdpbmdNb2RlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVl
czwKLSAgICAgICAgV2ViQ29yZTo6VGV4dERyYXdpbmdNb2RlLAotICAgICAgICBXZWJDb3JlOjpU
ZXh0RHJhd2luZ01vZGU6OkZpbGwsCi0gICAgICAgIFdlYkNvcmU6OlRleHREcmF3aW5nTW9kZTo6
U3Ryb2tlCi0gICAgPjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgorI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmNh
ZGQ2NDkxOTM1NDA4NjY0YzI3NmZjZTNkNTk5ZTYxNGY5YWYzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3Bw
CkBAIC0wLDAgKzEsMzI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRT
dGF0ZS5oIgorCisjaW5jbHVkZSAiR3JhZGllbnQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJQYXR0ZXJuLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVh
bS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNkZWZpbmUgQ0hFQ0tfRk9SX0NIQU5HRURf
UFJPUEVSVFkoZmxhZywgcHJvcGVydHkpIFwKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmxhZykgJiYgKG1fc3RhdGUucHJvcGVydHkgIT0gc3Rh
dGUucHJvcGVydHkpKSBcCisgICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRT
dGF0ZTo6ZmxhZyk7CisKK0dyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZSgpCisgICAgOiBzaG91bGRBbnRpYWxpYXModHJ1ZSkKKyAgICAsIHNob3VsZFNtb290aEZvbnRz
KHRydWUpCisgICAgLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHModHJ1ZSkKKyAgICAsIHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQorICAgICwgZHJhd0x1bWluYW5jZU1hc2soZmFs
c2UpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dFN0YXRlOjp+R3JhcGhpY3NDb250ZXh0U3RhdGUo
KSA9IGRlZmF1bHQ7CitHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7CitHcmFwaGljc0NvbnRleHRT
dGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJikgPSBkZWZh
dWx0OworR3JhcGhpY3NDb250ZXh0U3RhdGUmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRv
cj0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7CitHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRT
dGF0ZSYmKSA9IGRlZmF1bHQ7CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hh
bmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQoreworICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tl
UGF0dGVybkNoYW5nZSB9OworICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykp
IHsKKyAgICAgICAgc3Ryb2tlQ29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKKyAgICAgICAgc3Ry
b2tlR3JhZGllbnQgPSBzdGF0ZS5zdHJva2VHcmFkaWVudDsKKyAgICAgICAgc3Ryb2tlUGF0dGVy
biA9IHN0YXRlLnN0cm9rZVBhdHRlcm47CisgICAgfQorCisgICAgYXV0byBmaWxsRmxhZ3MgPSB7
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVy
bkNoYW5nZSB9OworICAgIGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxhZ3MpKSB7CisgICAg
ICAgIGZpbGxDb2xvciA9IHN0YXRlLmZpbGxDb2xvcjsKKyAgICAgICAgZmlsbEdyYWRpZW50ID0g
c3RhdGUuZmlsbEdyYWRpZW50OworICAgICAgICBmaWxsUGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0
ZXJuOworICAgIH0KKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hhZG93Q2hhbmdlKSkgeworICAgICAgICBzaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFkb3dP
ZmZzZXQ7CisgICAgICAgIHNoYWRvd0JsdXIgPSBzdGF0ZS5zaGFkb3dCbHVyOworICAgICAgICBz
aGFkb3dDb2xvciA9IHN0YXRlLnNoYWRvd0NvbG9yOworICAgICAgICBzaGFkb3dSYWRpdXNNb2Rl
ID0gc3RhdGUuc2hhZG93UmFkaXVzTW9kZTsKKyAgICB9CisKKyAgICBpZiAoZmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCisgICAgICAg
IHN0cm9rZVRoaWNrbmVzcyA9IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKKworICAgIGlmIChmbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkK
KyAgICAgICAgdGV4dERyYXdpbmdNb2RlID0gc3RhdGUudGV4dERyYXdpbmdNb2RlOworCisgICAg
aWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5n
ZSkpCisgICAgICAgIHN0cm9rZVN0eWxlID0gc3RhdGUuc3Ryb2tlU3R5bGU7CisKKyAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKKyAg
ICAgICAgZmlsbFJ1bGUgPSBzdGF0ZS5maWxsUnVsZTsKKworICAgIGlmIChmbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKQorICAgICAgICBhbHBoYSA9IHN0
YXRlLmFscGhhOworCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJs
ZW5kTW9kZUNoYW5nZSB9KSkgeworICAgICAgICBjb21wb3NpdGVPcGVyYXRvciA9IHN0YXRlLmNv
bXBvc2l0ZU9wZXJhdG9yOworICAgICAgICBibGVuZE1vZGUgPSBzdGF0ZS5ibGVuZE1vZGU7Cisg
ICAgfQorCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRBbnRpYWxpYXNDaGFuZ2UpKQorICAgICAgICBzaG91bGRBbnRpYWxpYXMgPSBzdGF0ZS5zaG91
bGRBbnRpYWxpYXM7CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKKyAgICAgICAgc2hvdWxkU21vb3RoRm9udHMg
PSBzdGF0ZS5zaG91bGRTbW9vdGhGb250czsKKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKKyAg
ICAgICAgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gc3RhdGUuc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzOworCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCisgICAgICAgIHNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zID0gc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CisKKyAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hh
bmdlKSkKKyAgICAgICAgZHJhd0x1bWluYW5jZU1hc2sgPSBzdGF0ZS5kcmF3THVtaW5hbmNlTWFz
azsKKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpCisgICAgICAgIGltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkgPSBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OworCisjaWYgSEFWRShPU19E
QVJLX01PREVfU1VQUE9SVCkKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKKyAgICAgICAgdXNlRGFya0FwcGVhcmFu
Y2UgPSBzdGF0ZS51c2VEYXJrQXBwZWFyYW5jZTsKKyNlbmRpZgorfQorCitHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hh
bmdlc0Zyb21TdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpIGNvbnN0Cit7
CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3M7
CisKKyAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VHcmFkaWVudENoYW5nZSwg
c3Ryb2tlR3JhZGllbnQpOworICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVBh
dHRlcm5DaGFuZ2UsIHN0cm9rZVBhdHRlcm4pOworICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BF
UlRZKEZpbGxHcmFkaWVudENoYW5nZSwgZmlsbEdyYWRpZW50KTsKKyAgICBDSEVDS19GT1JfQ0hB
TkdFRF9QUk9QRVJUWShGaWxsUGF0dGVybkNoYW5nZSwgZmlsbFBhdHRlcm4pOworCisgICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5n
ZSkKKyAgICAgICAgJiYgKG1fc3RhdGUuc2hhZG93T2Zmc2V0ICE9IHN0YXRlLnNoYWRvd09mZnNl
dAorICAgICAgICAgICAgfHwgbV9zdGF0ZS5zaGFkb3dCbHVyICE9IHN0YXRlLnNoYWRvd0JsdXIK
KyAgICAgICAgICAgIHx8IG1fc3RhdGUuc2hhZG93Q29sb3IgIT0gc3RhdGUuc2hhZG93Q29sb3Ip
KQorICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0No
YW5nZSk7CisKKyAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VUaGlja25lc3ND
aGFuZ2UsIHN0cm9rZVRoaWNrbmVzcyk7CisgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFko
VGV4dERyYXdpbmdNb2RlQ2hhbmdlLCB0ZXh0RHJhd2luZ01vZGUpOworICAgIENIRUNLX0ZPUl9D
SEFOR0VEX1BST1BFUlRZKFN0cm9rZUNvbG9yQ2hhbmdlLCBzdHJva2VDb2xvcik7CisgICAgQ0hF
Q0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbENvbG9yQ2hhbmdlLCBmaWxsQ29sb3IpOworICAg
IENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVN0eWxlQ2hhbmdlLCBzdHJva2VTdHls
ZSk7CisgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFJ1bGVDaGFuZ2UsIGZpbGxS
dWxlKTsKKyAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShBbHBoYUNoYW5nZSwgYWxwaGEp
OworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Qmxl
bmRNb2RlQ2hhbmdlIH0pCisgICAgICAgICYmIChtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yICE9
IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yIHx8IG1fc3RhdGUuYmxlbmRNb2RlICE9IHN0YXRlLmJs
ZW5kTW9kZSkpIHsKKyAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOworICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSk7CisgICAgfQorCisgICAgQ0hFQ0tf
Rk9SX0NIQU5HRURfUFJPUEVSVFkoU2hvdWxkQW50aWFsaWFzQ2hhbmdlLCBzaG91bGRBbnRpYWxp
YXMpOworICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFNtb290aEZvbnRzQ2hh
bmdlLCBzaG91bGRTbW9vdGhGb250cyk7CisgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFko
U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLCBzaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMpOworICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zQ2hhbmdlLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoRHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UsIGRyYXdMdW1pbmFuY2VNYXNr
KTsKKyAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5Q2hhbmdlLCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKworI2lmIEhBVkUoT1NfREFS
S19NT0RFX1NVUFBPUlQpCisgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoVXNlRGFya0Fw
cGVhcmFuY2VDaGFuZ2UsIHVzZURhcmtBcHBlYXJhbmNlKTsKKyNlbmRpZgorCisgICAgcmV0dXJu
IGNoYW5nZUZsYWdzOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphY2N1
bXVsYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit7CisgICAgbV9zdGF0ZS5tZXJnZUNoYW5n
ZXMoc3RhdGUsIGZsYWdzKTsKKworICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5n
ZSB9OworICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpCisgICAgICAgIG1f
Y2hhbmdlRmxhZ3MucmVtb3ZlKHN0cm9rZUZsYWdzKTsKKworICAgIGF1dG8gZmlsbEZsYWdzID0g
eyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRl
cm5DaGFuZ2UgfTsKKyAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoZmlsbEZsYWdzKSkKKyAgICAg
ICAgbV9jaGFuZ2VGbGFncy5yZW1vdmUoZmlsbEZsYWdzKTsKKworICAgIGF1dG8gY29tcG9zaXRl
T3BlcmF0b3JGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlv
bkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9OworICAgIGlm
IChmbGFncy5jb250YWluc0FueShjb21wb3NpdGVPcGVyYXRvckZsYWdzKSkKKyAgICAgICAgbV9j
aGFuZ2VGbGFncy5yZW1vdmUoY29tcG9zaXRlT3BlcmF0b3JGbGFncyk7CisKKyAgICBtX2NoYW5n
ZUZsYWdzLmFkZChmbGFncyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6
OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFu
Z2UpKQorICAgICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KCptX3N0YXRlLnN0cm9rZUdy
YWRpZW50LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworCisgICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRl
cm5DaGFuZ2UpKQorICAgICAgICBjb250ZXh0LnNldFN0cm9rZVBhdHRlcm4oKm1fc3RhdGUuc3Ry
b2tlUGF0dGVybik7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKKyAgICAgICAgY29udGV4dC5zZXRGaWxs
R3JhZGllbnQoKm1fc3RhdGUuZmlsbEdyYWRpZW50LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNl
VHJhbnNmb3JtKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbFBh
dHRlcm4oKm1fc3RhdGUuZmlsbFBhdHRlcm4pOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdl
KSkKKyAgICAgICAgY29udGV4dC5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0YXRlLnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKQorICAgICAgICBjb250ZXh0LnNl
dFNoYWRvdyhtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRl
LnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd1JhZGl1c01vZGUpOworCisgICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0No
YW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKG1fc3RhdGUuc3Ryb2tl
VGhpY2tuZXNzKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQorICAgICAgICBjb250ZXh0LnNldFRl
eHREcmF3aW5nTW9kZShtX3N0YXRlLnRleHREcmF3aW5nTW9kZSk7CisKKyAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2Up
KQorICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwor
CisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxDb2xvckNoYW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fc3RhdGUuZmls
bENvbG9yKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5
bGUobV9zdGF0ZS5zdHJva2VTdHlsZSk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQorICAgICAgICBjb250ZXh0
LnNldEZpbGxSdWxlKG1fc3RhdGUuZmlsbFJ1bGUpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKKyAgICAgICAgY29u
dGV4dC5zZXRBbHBoYShtX3N0YXRlLmFscGhhKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5n
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KSkKKyAgICAgICAgY29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24obV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgbV9z
dGF0ZS5ibGVuZE1vZGUpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCisgICAgICAgIGNvbnRleHQu
c2V0U2hvdWxkQW50aWFsaWFzKG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKKworICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhG
b250c0NoYW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0U2hvdWxkU21vb3RoRm9udHMobV9zdGF0
ZS5zaG91bGRTbW9vdGhGb250cyk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkK
KyAgICAgICAgY29udGV4dC5zZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMobV9zdGF0ZS5z
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKKyAg
ICAgICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhtX3N0YXRlLmRyYXdMdW1pbmFuY2VN
YXNrKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkKKyAgICAgICAgY29udGV4dC5z
ZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSk7CisKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNo
YW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0VXNlRGFya0FwcGVhcmFuY2UobV9zdGF0ZS51c2VE
YXJrQXBwZWFyYW5jZSk7CisjZW5kaWYKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKK3sKKyAgICB0cy5kdW1wUHJvcGVydHko
ImNoYW5nZS1mbGFncyIsIG1fY2hhbmdlRmxhZ3MudG9SYXcoKSk7CisKKyAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFu
Z2UpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1ncmFkaWVudCIsIG1fc3RhdGUu
c3Ryb2tlR3JhZGllbnQuZ2V0KCkpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKQorICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInN0cm9rZS1wYXR0ZXJuIiwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuLmdldCgp
KTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpGaWxsR3JhZGllbnRDaGFuZ2UpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtZ3Jh
ZGllbnQiLCBtX3N0YXRlLmZpbGxHcmFkaWVudC5nZXQoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKQor
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtcGF0dGVybiIsIG1fc3RhdGUuZmlsbFBhdHRl
cm4uZ2V0KCkpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpIHsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFk
b3ctYmx1ciIsIG1fc3RhdGUuc2hhZG93Qmx1cik7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
c2hhZG93LW9mZnNldCIsIG1fc3RhdGUuc2hhZG93T2Zmc2V0KTsKKyAgICAgICAgdHMuZHVtcFBy
b3BlcnR5KCJzaGFkb3ctY29sb3IiLCBtX3N0YXRlLnNoYWRvd0NvbG9yKTsKKyAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIiwgbV9zdGF0ZS5zaGFkb3dS
YWRpdXNNb2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSk7CisgICAgfQorCisgICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNr
bmVzc0NoYW5nZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXRoaWNrbmVzcyIs
IG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQorICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoInRleHQtZHJhd2luZy1tb2RlIiwgbV9zdGF0ZS50ZXh0RHJhd2lu
Z01vZGUudG9SYXcoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQorICAgICAgICB0cy5kdW1wUHJvcGVy
dHkoInN0cm9rZS1jb2xvciIsIG1fc3RhdGUuc3Ryb2tlQ29sb3IpOworCisgICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkp
CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZmlsbC1jb2xvciIsIG1fc3RhdGUuZmlsbENvbG9y
KTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdHJva2VTdHlsZUNoYW5nZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXN0
eWxlIiwgbV9zdGF0ZS5zdHJva2VTdHlsZSk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQorICAgICAgICB0cy5k
dW1wUHJvcGVydHkoImZpbGwtcnVsZSIsIG1fc3RhdGUuZmlsbFJ1bGUpOworCisgICAgaWYgKG1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkK
KyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbHBoYSIsIG1fc3RhdGUuYWxwaGEpOworCisgICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0
ZU9wZXJhdGlvbkNoYW5nZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9zaXRlLW9w
ZXJhdG9yIiwgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvcik7CisKKyAgICBpZiAobV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKSkKKyAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgbV9zdGF0ZS5ibGVuZE1vZGUpOwor
CisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZEFudGlhbGlhc0NoYW5nZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLWFu
dGlhbGlhcyIsIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKKworICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5n
ZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXNtb290aC1mb250cyIsIG1fc3Rh
dGUuc2hvdWxkU21vb3RoRm9udHMpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkp
CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXN1YnBpeGVsLXF1YW50aXplLWZvbnRz
IiwgbV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOworCisgICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zQ2hhbmdlKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3dzLWlnbm9yZS10
cmFuc2Zvcm1zIiwgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisKKyAgICBpZiAo
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5j
ZU1hc2tDaGFuZ2UpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImRyYXctbHVtaW5hbmNlLW1h
c2siLCBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrKTsKKworI2lmIEhBVkUoT1NfREFSS19NT0RF
X1NVUFBPUlQpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJ1c2UtZGFyay1hcHBlYXJhbmNlIiwgbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZSk7CisjZW5k
aWYKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlKQoreworICAgIHN0YXRlQ2hhbmdl
LmR1bXAodHMpOworICAgIHJldHVybiB0czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM1NTExOWY2Njk5N2QyY2ZjMDlmZjFmZGJmMDdmOGE1
OTU5NTk2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmgKQEAgLTAsMCArMSwxNzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZs
b2F0U2l6ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKyNpbmNsdWRlICJXaW5kUnVs
ZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBHcmFkaWVudDsKK2NsYXNzIFBhdHRlcm47
CisKK3N0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CisgICAgV0VCQ09SRV9FWFBPUlQgR3Jh
cGhpY3NDb250ZXh0U3RhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+R3JhcGhpY3NDb250ZXh0
U3RhdGUoKTsKKworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhp
Y3NDb250ZXh0U3RhdGUmJik7CisKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSYgb3BlcmF0b3I9
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIG9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKTsKKworICAg
IGVudW0gQ2hhbmdlIDogdWludDMyX3QgeworICAgICAgICBTdHJva2VHcmFkaWVudENoYW5nZSAg
ICAgICAgICAgICAgICAgICAgPSAxIDw8IDAsCisgICAgICAgIFN0cm9rZVBhdHRlcm5DaGFuZ2Ug
ICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMSwKKyAgICAgICAgRmlsbEdyYWRpZW50Q2hhbmdl
ICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAyLAorICAgICAgICBGaWxsUGF0dGVybkNoYW5n
ZSAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDMsCisgICAgICAgIFN0cm9rZVRoaWNrbmVz
c0NoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEgPDwgNCwKKyAgICAgICAgU3Ryb2tlQ29sb3JD
aGFuZ2UgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA1LAorICAgICAgICBTdHJva2VTdHls
ZUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDYsCisgICAgICAgIEZpbGxDb2xv
ckNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgNywKKyAgICAgICAgRmlsbFJ1
bGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA4LAorICAgICAgICBTaGFk
b3dDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDksCisgICAgICAgIFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlICAgICAgICAgICA9IDEgPDwgMTAsCisgICAgICAg
IEFscGhhQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTEsCisgICAg
ICAgIENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSAgICAgICAgICAgICAgICA9IDEgPDwgMTIsCisg
ICAgICAgIEJsZW5kTW9kZUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTMs
CisgICAgICAgIFRleHREcmF3aW5nTW9kZUNoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEgPDwg
MTQsCisgICAgICAgIFNob3VsZEFudGlhbGlhc0NoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEg
PDwgMTUsCisgICAgICAgIFNob3VsZFNtb290aEZvbnRzQ2hhbmdlICAgICAgICAgICAgICAgICA9
IDEgPDwgMTYsCisgICAgICAgIFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSAgICAg
ICA9IDEgPDwgMTcsCisgICAgICAgIERyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlICAgICAgICAgICAg
ICAgICA9IDEgPDwgMTgsCisgICAgICAgIEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2Ug
ICAgICAgICA9IDEgPDwgMTksCisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICAg
ICAgVXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UgICAgICAgICAgICAgICAgID0gMSA8PCAyMCwKKyNl
bmRpZgorICAgIH07CisgICAgdXNpbmcgU3RhdGVDaGFuZ2VGbGFncyA9IE9wdGlvblNldDxDaGFu
Z2U+OworCisgICAgdm9pZCBtZXJnZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CisKKyAgICBSZWZQdHI8
R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50OworICAgIFJlZlB0cjxQYXR0ZXJuPiBzdHJva2VQYXR0
ZXJuOworICAgIAorICAgIFJlZlB0cjxHcmFkaWVudD4gZmlsbEdyYWRpZW50OworICAgIFJlZlB0
cjxQYXR0ZXJuPiBmaWxsUGF0dGVybjsKKworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CisK
KyAgICBDb2xvciBzdHJva2VDb2xvciB7IENvbG9yOjpibGFjayB9OworICAgIENvbG9yIGZpbGxD
b2xvciB7IENvbG9yOjpibGFjayB9OworICAgIENvbG9yIHNoYWRvd0NvbG9yOworCisgICAgQWZm
aW5lVHJhbnNmb3JtIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm07CisgICAgQWZmaW5lVHJh
bnNmb3JtIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtOworCisgICAgZmxvYXQgc3Ryb2tlVGhp
Y2tuZXNzIHsgMCB9OworICAgIGZsb2F0IHNoYWRvd0JsdXIgeyAwIH07CisgICAgZmxvYXQgYWxw
aGEgeyAxIH07CisKKyAgICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSB7IFNvbGlkU3Ryb2tlIH07
CisgICAgV2luZFJ1bGUgZmlsbFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OworCisgICAgVGV4
dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlIHsgVGV4dERyYXdpbmdNb2RlOjpGaWxs
IH07CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgeyBDb21wb3NpdGVP
cGVyYXRvcjo6U291cmNlT3ZlciB9OworICAgIEJsZW5kTW9kZSBibGVuZE1vZGUgeyBCbGVuZE1v
ZGU6Ok5vcm1hbCB9OworICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkgeyBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdCB9OworICAgIFNoYWRvd1Jh
ZGl1c01vZGUgc2hhZG93UmFkaXVzTW9kZSB7IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQgfTsK
KworICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzIDogMTsKKyAgICBib29sIHNob3VsZFNtb290aEZv
bnRzIDogMTsKKyAgICBib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA6IDE7CisgICAg
Ym9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA6IDE7CisgICAgYm9vbCBkcmF3THVtaW5hbmNl
TWFzayA6IDE7CisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICBib29sIHVzZURh
cmtBcHBlYXJhbmNlIDogMTsKKyNlbmRpZgorfTsKKworc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlQ2hhbmdlIHsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSgpID0gZGVmYXVsdDsK
KyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQor
ICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCisgICAgICAgICwgbV9jaGFuZ2VGbGFncyhmbGFncykK
KyAgICB7CisgICAgfQorCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MgY2hhbmdlc0Zyb21TdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpIGNvbnN0Owor
CisgICAgdm9pZCBhY2N1bXVsYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Q7CisgICAgCisgICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYp
IGNvbnN0OworCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbV9zdGF0ZTsKKyAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBtX2NoYW5nZUZsYWdzOworfTsKKworV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlJik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNoYW5nZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UsCisgICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUdyYWRpZW50Q2hh
bmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJv
a2VQYXR0ZXJuQ2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpGaWxsR3JhZGllbnRDaGFuZ2UsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxQYXR0ZXJuQ2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UsCisgICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUNvbG9yQ2hh
bmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJv
a2VTdHlsZUNoYW5nZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6RmlsbENvbG9yQ2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpGaWxsUnVsZUNoYW5nZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U2hhZG93Q2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSwK
KyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6QWxwaGFDaGFu
Z2UsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNvbXBv
c2l0ZU9wZXJhdGlvbkNoYW5nZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6QmxlbmRNb2RlQ2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UsCisgICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlhbGlhc0NoYW5nZSwK
KyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU21v
b3RoRm9udHNDaGFuZ2UsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSwKKyAgICAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2Us
CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQor
ICAgICAgICAsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlVzZURhcmtB
cHBlYXJhbmNlQ2hhbmdlCisjZW5kaWYKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjliNGI4ZDAwYTFjNzZjN2I3NTQz
ZDYzMGE2ODFlMjc0ZWEwMDZlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIuaApAQCAtMCwwICsxLDE0
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgYm9vbCBz
YXZlQW5kUmVzdG9yZSA9IHRydWUpCisgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAg
ICAgICwgbV9zYXZlQW5kUmVzdG9yZShzYXZlQW5kUmVzdG9yZSkKKyAgICB7CisgICAgICAgIGlm
IChtX3NhdmVBbmRSZXN0b3JlKQorICAgICAgICAgICAgbV9jb250ZXh0LnNhdmUoKTsKKyAgICB9
CisgICAgCisgICAgfkdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIoKQorICAgIHsKKyAgICAgICAg
aWYgKG1fc2F2ZUFuZFJlc3RvcmUpCisgICAgICAgICAgICBtX2NvbnRleHQucmVzdG9yZSgpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHNhdmUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3Nh
dmVBbmRSZXN0b3JlKTsKKyAgICAgICAgbV9jb250ZXh0LnNhdmUoKTsKKyAgICAgICAgbV9zYXZl
QW5kUmVzdG9yZSA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCByZXN0b3JlKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3NhdmVBbmRSZXN0b3JlKTsKKyAgICAgICAgbV9jb250ZXh0LnJlc3Rv
cmUoKTsKKyAgICAgICAgbV9zYXZlQW5kUmVzdG9yZSA9IGZhbHNlOworICAgIH0KKyAgICAKKyAg
ICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiAmbV9jb250ZXh0OyB9
CisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRleHQ7CisgICAgYm9vbCBt
X3NhdmVBbmRSZXN0b3JlOworfTsKKworY2xhc3MgVHJhbnNwYXJlbmN5TGF5ZXJTY29wZSB7Citw
dWJsaWM6CisgICAgVHJhbnNwYXJlbmN5TGF5ZXJTY29wZShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IGFscGhhLCBib29sIGJlZ2luTGF5ZXIgPSB0cnVlKQorICAgICAgICA6IG1fY29u
dGV4dChjb250ZXh0KQorICAgICAgICAsIG1fYWxwaGEoYWxwaGEpCisgICAgICAgICwgbV9iZWdh
bkxheWVyKGJlZ2luTGF5ZXIpCisgICAgeworICAgICAgICBpZiAoYmVnaW5MYXllcikKKyAgICAg
ICAgICAgIG1fY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG1fYWxwaGEpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGJlZ2luTGF5ZXIoZmxvYXQgYWxwaGEpCisgICAgeworICAgICAgICBt
X2FscGhhID0gYWxwaGE7CisgICAgICAgIG1fY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVy
KG1fYWxwaGEpOworICAgICAgICBtX2JlZ2FuTGF5ZXIgPSB0cnVlOworICAgIH0KKyAgICAKKyAg
ICB+VHJhbnNwYXJlbmN5TGF5ZXJTY29wZSgpCisgICAgeworICAgICAgICBpZiAobV9iZWdhbkxh
eWVyKQorICAgICAgICAgICAgbV9jb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAg
fQorCitwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OworICAgIGZsb2F0
IG1fYWxwaGE7CisgICAgYm9vbCBtX2JlZ2FuTGF5ZXI7Cit9OworCitjbGFzcyBHcmFwaGljc0Nv
bnRleHRTdGF0ZVN0YWNrQ2hlY2tlciB7CitwdWJsaWM6CisgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTdGFja0NoZWNrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorICAgICAgICA6IG1fY29u
dGV4dChjb250ZXh0KQorICAgICAgICAsIG1fc3RhY2tTaXplKGNvbnRleHQuc3RhY2tTaXplKCkp
CisgICAgeyB9CisgICAgCisgICAgfkdyYXBoaWNzQ29udGV4dFN0YXRlU3RhY2tDaGVja2VyKCkK
KyAgICB7CisgICAgICAgIGlmIChtX2NvbnRleHQuc3RhY2tTaXplKCkgIT0gbV9zdGFja1NpemUp
CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkdyYXBoaWNzQ29udGV4dCAlcCBzdGFjayBjaGFu
Z2VkIGJ5ICVkIiwgJm1fY29udGV4dCwgKGludCltX2NvbnRleHQuc3RhY2tTaXplKCkgLSAoaW50
KW1fc3RhY2tTaXplKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0JiBt
X2NvbnRleHQ7CisgICAgdW5zaWduZWQgbV9zdGFja1NpemU7Cit9OworCitjbGFzcyBJbnRlcnBv
bGF0aW9uUXVhbGl0eU1haW50YWluZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwg
SW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHlUb1VzZSkKKyAgICAgICAg
OiBtX2dyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQpCisgICAgICAgICwgbV9jdXJyZW50
SW50ZXJwb2xhdGlvblF1YWxpdHkoZ3JhcGhpY3NDb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoKSkKKyAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlZChpbnRlcnBv
bGF0aW9uUXVhbGl0eVRvVXNlICE9IEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0ICYmIG1f
Y3VycmVudEludGVycG9sYXRpb25RdWFsaXR5ICE9IGludGVycG9sYXRpb25RdWFsaXR5VG9Vc2Up
CisgICAgeworICAgICAgICBpZiAobV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQpCisgICAg
ICAgICAgICBtX2dyYXBoaWNzQ29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KGlu
dGVycG9sYXRpb25RdWFsaXR5VG9Vc2UpOworICAgIH0KKworICAgIGV4cGxpY2l0IEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwg
c3RkOjpvcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW50ZXJwb2xhdGlvblF1YWxpdHkp
CisgICAgICAgIDogSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyKGdyYXBoaWNzQ29udGV4
dCwgaW50ZXJwb2xhdGlvblF1YWxpdHkgPyBpbnRlcnBvbGF0aW9uUXVhbGl0eS52YWx1ZSgpIDog
Z3JhcGhpY3NDb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSkKKyAgICB7CisgICAg
fQorCisgICAgfkludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcigpCisgICAgeworICAgICAg
ICBpZiAobV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQpCisgICAgICAgICAgICBtX2dyYXBo
aWNzQ29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KG1fY3VycmVudEludGVycG9s
YXRpb25RdWFsaXR5KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0JiBt
X2dyYXBoaWNzQ29udGV4dDsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2N1cnJlbnRJbnRl
cnBvbGF0aW9uUXVhbGl0eTsKKyAgICBib29sIG1faW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2Vk
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCmluZGV4IDRkMjA0ZTk3ZTVjNTQ0ZDc3NmJm
YTdmMzBhYWNjMWI3YzQ2M2UwZTAuLjg1ZDhlYzM4ZmZlMmNhNmYwNGM0NjlkNGY0NmY3NGU4OWMx
ZWJiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c1R5cGVzLmgKQEAgLTczLDYgKzczLDQzIEBAIGVudW0gY2xhc3MgQmxlbmRNb2RlIDogdWludDhf
dCB7CiAgICAgUGx1c0xpZ2h0ZXIKIH07CiAKK3N0cnVjdCBEb2N1bWVudE1hcmtlckxpbmVTdHls
ZSB7CisgICAgZW51bSBjbGFzcyBNb2RlIDogdWludDhfdCB7CisgICAgICAgIFRleHRDaGVja2lu
Z0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMsCisgICAgICAgIFNwZWxsaW5nLAorICAg
ICAgICBHcmFtbWFyLAorICAgICAgICBBdXRvY29ycmVjdGlvblJlcGxhY2VtZW50LAorICAgICAg
ICBEaWN0YXRpb25BbHRlcm5hdGl2ZXMKKyAgICB9IG1vZGU7CisgICAgYm9vbCBzaG91bGRVc2VE
YXJrQXBwZWFyYW5jZSB7IGZhbHNlIH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU+IGRlY29kZShEZWNv
ZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBEb2N1bWVudE1hcmtl
ckxpbmVTdHlsZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBtb2RlOworICAgIGVuY29kZXIgPDwgc2hvdWxkVXNlRGFya0FwcGVhcmFuY2U7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPERvY3VtZW50TWFya2VyTGlu
ZVN0eWxlPiBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgc3RkOjpvcHRpb25hbDxNb2RlPiBtb2RlOworICAgIGRlY29kZXIgPj4gbW9kZTsK
KyAgICBpZiAoIW1vZGUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IHNob3VsZFVzZURhcmtBcHBlYXJhbmNlOworICAgIGRlY29kZXIgPj4g
c2hvdWxkVXNlRGFya0FwcGVhcmFuY2U7CisgICAgaWYgKCFzaG91bGRVc2VEYXJrQXBwZWFyYW5j
ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgKm1vZGUs
ICpzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSB9IH07Cit9CisKIGVudW0gY2xhc3MgR3JhZGllbnRT
cHJlYWRNZXRob2QgOiB1aW50OF90IHsKICAgICBQYWQsCiAgICAgUmVmbGVjdCwKQEAgLTEwNSw2
ICsxNDIsMjggQEAgZW51bSBIb3Jpem9udGFsQWxpZ25tZW50IHsKICAgICBBbGlnbkhDZW50ZXIK
IH07CiAKK2VudW0gU3Ryb2tlU3R5bGUgeworICAgIE5vU3Ryb2tlLAorICAgIFNvbGlkU3Ryb2tl
LAorICAgIERvdHRlZFN0cm9rZSwKKyAgICBEYXNoZWRTdHJva2UsCisgICAgRG91YmxlU3Ryb2tl
LAorICAgIFdhdnlTdHJva2UsCit9OworCitlbnVtIGNsYXNzIFRleHREcmF3aW5nTW9kZSA6IHVp
bnQ4X3QgeworICAgIEZpbGwgPSAxIDw8IDAsCisgICAgU3Ryb2tlID0gMSA8PCAxLAorfTsKK3Vz
aW5nIFRleHREcmF3aW5nTW9kZUZsYWdzID0gT3B0aW9uU2V0PFRleHREcmF3aW5nTW9kZT47CisK
Ky8vIExlZ2FjeSBzaGFkb3cgYmx1ciByYWRpdXMgaXMgdXNlZCBmb3IgY2FudmFzLCBhbmQgLXdl
YmtpdC1ib3gtc2hhZG93LgorLy8gSXQgaGFzIGRpZmZlcmVudCB0cmVhdG1lbnQgb2YgcmFkaWkg
PiA4cHguCitlbnVtIGNsYXNzIFNoYWRvd1JhZGl1c01vZGUgOiBib29sIHsKKyAgICBEZWZhdWx0
LAorICAgIExlZ2FjeQorfTsKKwogZW51bSBUZXh0QmFzZWxpbmUgewogICAgIEFscGhhYmV0aWNU
ZXh0QmFzZWxpbmUsCiAgICAgVG9wVGV4dEJhc2VsaW5lLApAQCAtMjE5LDQgKzI3OCwzNSBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkxpbmVKb2luPiB7CiAgICAgPjsK
IH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RG9jdW1lbnRNYXJr
ZXJMaW5lU3R5bGU6Ok1vZGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAg
IFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlLAorICAgIFdlYkNvcmU6OkRv
Y3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpUZXh0Q2hlY2tpbmdEaWN0YXRpb25QaHJhc2VX
aXRoQWx0ZXJuYXRpdmVzLAorICAgIFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpN
b2RlOjpTcGVsbGluZywKKyAgICBXZWJDb3JlOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9k
ZTo6R3JhbW1hciwKKyAgICBXZWJDb3JlOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6
QXV0b2NvcnJlY3Rpb25SZXBsYWNlbWVudCwKKyAgICBXZWJDb3JlOjpEb2N1bWVudE1hcmtlckxp
bmVTdHlsZTo6TW9kZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzCisgICAgPjsKK307CisKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U3Ryb2tlU3R5bGU+IHsKKyAgICB1c2lu
ZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYkNvcmU6OlN0cm9rZVN0eWxlLAorICAgIFdl
YkNvcmU6OlN0cm9rZVN0eWxlOjpOb1N0cm9rZSwKKyAgICBXZWJDb3JlOjpTdHJva2VTdHlsZTo6
U29saWRTdHJva2UsCisgICAgV2ViQ29yZTo6U3Ryb2tlU3R5bGU6OkRvdHRlZFN0cm9rZSwKKyAg
ICBXZWJDb3JlOjpTdHJva2VTdHlsZTo6RGFzaGVkU3Ryb2tlLAorICAgIFdlYkNvcmU6OlN0cm9r
ZVN0eWxlOjpEb3VibGVTdHJva2UsCisgICAgV2ViQ29yZTo6U3Ryb2tlU3R5bGU6OldhdnlTdHJv
a2UKKyAgICA+OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpU
ZXh0RHJhd2luZ01vZGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAg
ICBXZWJDb3JlOjpUZXh0RHJhd2luZ01vZGUsCisgICAgICAgIFdlYkNvcmU6OlRleHREcmF3aW5n
TW9kZTo6RmlsbCwKKyAgICAgICAgV2ViQ29yZTo6VGV4dERyYXdpbmdNb2RlOjpTdHJva2UKKyAg
ICA+OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUdyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1HcmFwaGljc0NvbnRleHQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43ZTAxZmQzOTQ2NDMzOWQyZDRkNTRiYTkzNjRjNTk0NWNmYWQ3ZDVhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oV0lOKQorI2lu
Y2x1ZGUgIkRJQlBpeGVsRGF0YS5oIgordHlwZWRlZiBzdHJ1Y3QgSERDX18qIEhEQzsKKyNpZiAh
VVNFKENHKQorLy8gVUludDggaXMgZGVmaW5lZCBpbiBDb3JlRm91bmRhdGlvbi9DRkJhc2UuaAor
dHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJbnQ4OworI2VuZGlmCisjZW5kaWYKKworI2lmIFVTRShD
RykKK3VzaW5nIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0ID0gc3RydWN0IENHQ29udGV4dDsKKyNl
bGlmIFVTRShDQUlSTykKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEdyYXBoaWNzQ29udGV4
dENhaXJvOworfQordXNpbmcgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQgPSBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRDYWlybzsKKyNlbHNlCit1c2luZyBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCA9
IHZvaWQ7CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1RleHRCb3hJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VGV4dEJveEl0ZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdlNjhlMzhmMDIzN2IwMjIwY2Y2NWJhMmMx
MGU4ODg4ZGQ0OTg1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RleHRCb3hJdGVyYXRvci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJUZXh0UnVuLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dEJveEl0
ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBUZXh0Qm94SXRlcmF0b3IoKQorICAgICAgICA6IG1fdGV4
dFJ1bigwKQorICAgICAgICAsIG1fb2Zmc2V0KDApCisgICAgeworICAgIH0KKworICAgIFRleHRC
b3hJdGVyYXRvcihjb25zdCBUZXh0UnVuKiB0ZXh0UnVuLCB1bnNpZ25lZCBvZmZzZXQpCisgICAg
ICAgIDogbV90ZXh0UnVuKHRleHRSdW4pCisgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAg
IHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNl
dDsgfQorICAgIHZvaWQgaW5jcmVtZW50KCkgeyBtX29mZnNldCsrOyB9CisgICAgYm9vbCBhdEVu
ZCgpIGNvbnN0IHsgcmV0dXJuICFtX3RleHRSdW4gfHwgbV9vZmZzZXQgPj0gbV90ZXh0UnVuLT5s
ZW5ndGgoKTsgfQorICAgIFVDaGFyIGN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAoKm1fdGV4dFJ1
bilbbV9vZmZzZXRdOyB9CisgICAgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gYXRFbmQoKSA/IFVfT1RIRVJfTkVVVFJBTCA6IHVfY2hhckRpcmVjdGlvbihjdXJyZW50
KCkpOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhl
cikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNl
dCAmJiBtX3RleHRSdW4gPT0gb3RoZXIubV90ZXh0UnVuOworICAgIH0KKworICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3Bl
cmF0b3I9PShvdGhlcik7IH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBUZXh0UnVuKiBtX3RleHRS
dW47CisgICAgdW5zaWduZWQgbV9vZmZzZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9DR0NvbnRl
eHRTdGF0ZVNhdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9DR0Nv
bnRleHRTdGF0ZVNhdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg1NmEwNDM5M2ZkMjRlOTYyOGY2ZmU5MzQ2
OWVlYmVhNGFiYjU5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NHQ29udGV4dFN0YXRlU2F2ZXIuaApAQCAtMCwwICsxLDc0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIFVTRShDRykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDR0NvbnRl
eHRTdGF0ZVNhdmVyIHsKK3B1YmxpYzoKKyAgICBDR0NvbnRleHRTdGF0ZVNhdmVyKENHQ29udGV4
dFJlZiBjb250ZXh0LCBib29sIHNhdmVBbmRSZXN0b3JlID0gdHJ1ZSkKKyAgICAgICAgOiBtX2Nv
bnRleHQoY29udGV4dCkKKyAgICAgICAgLCBtX3NhdmVBbmRSZXN0b3JlKHNhdmVBbmRSZXN0b3Jl
KQorICAgIHsKKyAgICAgICAgaWYgKG1fc2F2ZUFuZFJlc3RvcmUpCisgICAgICAgICAgICBDR0Nv
bnRleHRTYXZlR1N0YXRlKG1fY29udGV4dCk7CisgICAgfQorICAgIAorICAgIH5DR0NvbnRleHRT
dGF0ZVNhdmVyKCkKKyAgICB7CisgICAgICAgIGlmIChtX3NhdmVBbmRSZXN0b3JlKQorICAgICAg
ICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShtX2NvbnRleHQpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHNhdmUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3NhdmVBbmRSZXN0b3JlKTsK
KyAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShtX2NvbnRleHQpOworICAgICAgICBtX3NhdmVB
bmRSZXN0b3JlID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIHJlc3RvcmUoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fc2F2ZUFuZFJlc3RvcmUpOworICAgICAgICBDR0NvbnRleHRSZXN0b3Jl
R1N0YXRlKG1fY29udGV4dCk7CisgICAgICAgIG1fc2F2ZUFuZFJlc3RvcmUgPSBmYWxzZTsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBkaWRTYXZlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX3NhdmVBbmRSZXN0b3JlOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgQ0dDb250ZXh0
UmVmIG1fY29udGV4dDsKKyAgICBib29sIG1fc2F2ZUFuZFJlc3RvcmU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAppbmRleCA0
NjhhNDRiYWE4NmVlNTI2MTlkMjU1ZjkzOTQzYTk3NTViYWM5ZmFiLi5lM2YxZWI3YmY1NWI2Yjg5
Mzk2N2FkN2FiZDVmZDVjYTcwYWYzNTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKQEAgLTI1LDUzICsyNSwx
MiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNHQ29udGV4dFN0YXRlU2F2ZXIuaCIK
ICNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DR0FmZmluZVRyYW5zZm9ybSBnZXRVc2VyVG9CYXNl
Q1RNKENHQ29udGV4dFJlZik7Ci0KLWNsYXNzIENHQ29udGV4dFN0YXRlU2F2ZXIgewotcHVibGlj
OgotICAgIENHQ29udGV4dFN0YXRlU2F2ZXIoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgc2F2
ZUFuZFJlc3RvcmUgPSB0cnVlKQotICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICAg
ICAsIG1fc2F2ZUFuZFJlc3RvcmUoc2F2ZUFuZFJlc3RvcmUpCi0gICAgewotICAgICAgICBpZiAo
bV9zYXZlQW5kUmVzdG9yZSkKLSAgICAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUobV9jb250
ZXh0KTsKLSAgICB9Ci0gICAgCi0gICAgfkNHQ29udGV4dFN0YXRlU2F2ZXIoKQotICAgIHsKLSAg
ICAgICAgaWYgKG1fc2F2ZUFuZFJlc3RvcmUpCi0gICAgICAgICAgICBDR0NvbnRleHRSZXN0b3Jl
R1N0YXRlKG1fY29udGV4dCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgc2F2ZSgpCi0gICAgewot
ICAgICAgICBBU1NFUlQoIW1fc2F2ZUFuZFJlc3RvcmUpOwotICAgICAgICBDR0NvbnRleHRTYXZl
R1N0YXRlKG1fY29udGV4dCk7Ci0gICAgICAgIG1fc2F2ZUFuZFJlc3RvcmUgPSB0cnVlOwotICAg
IH0KLQotICAgIHZvaWQgcmVzdG9yZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV9zYXZlQW5k
UmVzdG9yZSk7Ci0gICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUobV9jb250ZXh0KTsKLSAg
ICAgICAgbV9zYXZlQW5kUmVzdG9yZSA9IGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBib29sIGRp
ZFNhdmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2F2ZUFuZFJlc3RvcmU7Ci0g
ICAgfQotICAgIAotcHJpdmF0ZToKLSAgICBDR0NvbnRleHRSZWYgbV9jb250ZXh0OwotICAgIGJv
b2wgbV9zYXZlQW5kUmVzdG9yZTsKLX07Ci0KIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNz
Q29udGV4dENHIDogcHVibGljIEdyYXBoaWNzQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgR3JhcGhp
Y3NDb250ZXh0Q0coQ0dDb250ZXh0UmVmKTsKQEAgLTE3OSw1ICsxMzgsNyBAQCBwcml2YXRlOgog
ICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSogbV9kYXRhIHsgbnVsbHB0ciB9Owog
fTsKIAorQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNlclRvQmFzZUNUTShDR0NvbnRleHRSZWYpOwor
CiB9CiAK
</data>
<flag name="commit-queue"
          id="482581"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454810</attachid>
            <date>2022-03-16 01:44:08 -0700</date>
            <delta_ts>2022-03-16 10:37:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237944-20220316014407.patch</filename>
            <type>text/plain</type>
            <size>87351</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYxYzkxNGQ3NWIzNDQ1
M2VkMjI3NWQ3MjU2NTY0YTEwYWE0MTEyNS4uZjU1MWM2MGQ1Y2U2MmY2ODkxMWYyNmQ1OWZjMzAw
ZTU5ZmE1YzI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIyLTAzLTE2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TW92ZSBvdGhlciBjbGFzc2VzIG91dCBvZiBHcmFwaGljc0NvbnRleHQuaAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3OTQ0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHN0ZXAgdG93YXJk
cyBtYWtpbmcgR3JhcGhpY3NDb250ZXh0U3RhdGUgYSBjbGFzcyBhbmQgbW92ZQorICAgICAgICBt
b3JlIGZ1bmN0aW9uYWxpdGllcyB0byBpdC4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6Cisg
ICAgICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5j
bWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0
ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6b2Zm
c2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6
aW5jcmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6
YXRFbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9y
OjpjdXJyZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVy
YXRvcjo6ZGlyZWN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRC
b3hJdGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJnZUNoYW5n
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2U6OmNoYW5nZXNGcm9tU3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFjY3VtdWxhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFwcGx5IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpkdW1w
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6OmVuY29kZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZGVjb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyOjpHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI6On5HcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXI6OnNhdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcjo6cmVzdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyOjpjb250ZXh0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUxheWVyU2NvcGU6OlRyYW5zcGFyZW5j
eUxheWVyU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5TGF5
ZXJTY29wZTo6YmVnaW5MYXllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc3Bh
cmVuY3lMYXllclNjb3BlOjp+VHJhbnNwYXJlbmN5TGF5ZXJTY29wZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZVN0YWNrQ2hlY2tlcjo6R3JhcGhpY3ND
b250ZXh0U3RhdGVTdGFja0NoZWNrZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGVTdGFja0NoZWNrZXI6On5HcmFwaGljc0NvbnRleHRTdGF0ZVN0YWNr
Q2hlY2tlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcnBvbGF0aW9uUXVhbGl0
eU1haW50YWluZXI6OkludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXI6On5JbnRlcnBv
bGF0aW9uUXVhbGl0eU1haW50YWluZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdlc0Zyb21TdGF0ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBw
bHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6
OmR1bXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGVDaGFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyOjpHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI6On5HcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI6OnNhdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcjo6cmVzdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyOjpjb250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUxheWVyU2NvcGU6OlRyYW5zcGFyZW5jeUxheWVy
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5TGF5ZXJTY29wZTo6YmVnaW5M
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc3BhcmVuY3lMYXllclNjb3BlOjp+VHJhbnNw
YXJlbmN5TGF5ZXJTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZVN0YWNrQ2hlY2tlcjo6R3JhcGhpY3NDb250ZXh0U3RhdGVTdGFja0NoZWNrZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVTdGFja0NoZWNrZXI6On5HcmFwaGljc0Nv
bnRleHRTdGF0ZVN0YWNrQ2hlY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcnBvbGF0aW9u
UXVhbGl0eU1haW50YWluZXI6OkludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXI6On5JbnRlcnBvbGF0
aW9uUXVhbGl0eU1haW50YWluZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dEJveEl0ZXJh
dG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94
SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9yOjpvZmZzZXQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9yOjppbmNyZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9yOjphdEVuZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0Qm94SXRlcmF0b3I6OmN1cnJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dEJveEl0ZXJhdG9yOjpkaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRCb3hJdGVyYXRvcjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ0dDb250ZXh0U3RhdGVTYXZlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNHQ29udGV4dFN0YXRlU2F2ZXI6OkNHQ29udGV4dFN0YXRlU2F2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0dDb250ZXh0U3RhdGVTYXZlcjo6fkNHQ29udGV4dFN0YXRlU2F2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0dDb250ZXh0U3RhdGVTYXZlcjo6c2F2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDR0NvbnRleHRTdGF0ZVNhdmVyOjpyZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29u
dGV4dFN0YXRlU2F2ZXI6OmRpZFNhdmUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbnRleHRT
dGF0ZVNhdmVyOjpDR0NvbnRleHRTdGF0ZVNhdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNHQ29udGV4dFN0YXRlU2F2ZXI6On5DR0NvbnRleHRTdGF0ZVNhdmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNHQ29udGV4dFN0YXRlU2F2ZXI6OnNhdmUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q0dDb250ZXh0U3RhdGVTYXZlcjo6cmVzdG9yZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDR0NvbnRleHRTdGF0ZVNhdmVyOjpkaWRTYXZlIGNvbnN0KTog
RGVsZXRlZC4KKwogMjAyMi0wMy0xNCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBbbW9kZWxdIDxtb2RlbCBpbnRlcmFjdGl2ZT4gZG9lc24ndCBhbGxvdyBt
b2RlbCB0byBiZSByb3RhdGVkIG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNzM2NDQyYTA4
YTc0NTAwYTM1MmYwNGMyZTEwNmQ4YzQxZTdhNGZjNS4uY2JkNTJjMWQzOWE4MWQxNWZjNzc1ZjY1
MzYzYzc5NTI5YTY5YjgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNDkxLDYgKzE0OTEsOCBA
QCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0xTdGF0ZS5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUu
aAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCkBAIC0xNTUwLDYgKzE1NTIsNyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1BdWRpb1RyYWNrQ29uZmlndXJhdGlvbi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1Db2xvclNwYWNlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
aAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0LmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybUltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdl
QnVmZmVyQmFja2VuZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCA2
MmQ0M2U2YTNhOTMyMTVmZjA3NTdhNDc4ODRhOGI2Yzg0NGI4OTZkLi5kMDU2NWJlYzkyMWYwY2Q5
MTVlNDg4NWZkZjZiYTMyYTNhNmJkM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4u
Y21ha2UKQEAgLTE1Niw2ICsxNTYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJl
ZUhvc3RDbGllbnQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5
ZXJXaW4uaAogCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ0dDb250ZXh0U3RhdGVTYXZlci5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFkaWVudFJlbmRlcmVyQ0cuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggNWRlZTc1
NDA1MzU3OWY1NWI1NWYyZmU0YWQwZGQwYTY5ZGViZmQ0YS4uZTRmNjI3MTkwY2M4OWJlODZkMDY5
ODFmMzFkMDEzMzY1OTJlOTY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTY0MCw2
ICs2NDAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVmlkZW9Db250YWluZXJMYXllci5oCiAK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9DR0NvbnRleHRTdGF0ZVNhdmVyLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQ
b29sLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggNWM3YjczZWIyMDVlMDllYzI0NmUwMTFkMGE1MDJkY2Q0
YzFkY2E1MC4uNDNjYzEyZjdjMjU5YTUwNjZmYjMzMzlmZjhmMjI0ZWY2YTg2Y2ZiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTIwNDUsNiArMjA0NSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
SW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRTdGF0ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgyOTYy
YmEwNGUyZmZkN2ZmYTBjNmU2MWQ5YzljMmMxN2E1ZjY0NjcuLjFlMmYyOGU1ZWQxOTIyYzgwM2Iw
OTNhMzc4M2MxMmU3NzRmODZhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzMzUsNiArMjMzNSwxMSBAQAogCQk3MjE0NDMz
NDIyM0VDOTE2MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlPd25lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0IC8q
IFNWR1Byb3BlcnR5T3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MjFCNDk3NDI1MTJCQTNCMDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNr
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjFC
NDk3MDI1MTJBQzA0MDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIyODNGMEUyMzBCMjY4QzAw
RjVEODI4IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQ
YWludGluZ09wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk3MjJBRjJERTI3RTFDMjA2MDA3OEQ5OTcgLyogR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzIyQUYyREIyN0UxQzIwNDAwNzhEOTk3IC8qIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjJBRjJE
RjI3RTFDMjA2MDA3OEQ5OTcgLyogR3JhcGhpY3NDb250ZXh0U3RhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMkFGMkRDMjdFMUMyMDUwMDc4RDk5
NyAvKiBHcmFwaGljc0NvbnRleHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTcyMkFGMkUyMjdFMUM0MDUwMDc4RDk5NyAvKiBQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzIyQUYyRTEyN0UxQzQwMzAwNzhEOTk3IC8qIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NzIyQUYyRTQyN0UxQ0YxMzAwNzhEOTk3IC8qIFRleHRCb3hJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIyQUYyRTMyN0UxQ0YxMTAwNzhE
OTk3IC8qIFRleHRCb3hJdGVyYXRvci5oICovOyB9OworCQk3MjJBRjJFNjI3RTFEMEExMDA3OEQ5
OTcgLyogQ0dDb250ZXh0U3RhdGVTYXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzIyQUYyRTUyN0UxRDA5RTAwNzhEOTk3IC8qIENHQ29udGV4dFN0
YXRlU2F2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3MjQ2OTYzQjI3NUM1RkE2MDBBOTE1NkEgLyogQ1NTRmlsdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjUzRkI4MzIxM0IxQkI4MDBDNDBE
MzQgLyogQ1NTRmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzI0Njk2M0QyNzVDNjE0NDAwQTkxNTZBIC8qIEZpbHRlckVmZmVjdFZlY3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIxNEI5
QjcyNzQ0NThGQTAwM0JFNkRGIC8qIEZpbHRlckVmZmVjdFZlY3Rvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNDY5NjNFMjc1QzYxNjcwMEE5
MTU2QSAvKiBGaWx0ZXJJbWFnZVZlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzJCNEVGN0MyNzRFRTM3RjAwMjkzQzJGIC8qIEZpbHRlckltYWdl
VmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTExMzI1LDYgKzExMzMwLDEyIEBACiAJCTcyMUI0OTZGMjUxMkFDMDQwMEZFOUQzQiAvKiBJ
bWFnZUJpdG1hcEJhY2tpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCaXRtYXBCYWNr
aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxQjQ5NzAyNTEyQUMwNDAw
RkU5RDNCIC8qIEltYWdlQml0bWFwQmFja2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJpdG1h
cEJhY2tpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyQTgxNUMyMzhGRDUw
NTAwQzAwNTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbmltYXRp
b25GcmFtZVJhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIyQUYyREIyN0Ux
QzIwNDAwNzhEOTk3IC8qIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MjJBRjJEQzI3RTFDMjA1MDA3OEQ5OTcgLyogR3JhcGhp
Y3NDb250ZXh0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhp
Y3NDb250ZXh0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIyQUYyREQy
N0UxQzIwNTAwNzhEOTk3IC8qIEdyYXBoaWNzQ29udGV4dFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dFN0YXRlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIyQUYyRTEyN0UxQzQwMzAwNzhEOTk3IC8qIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcy
MkFGMkUzMjdFMUNGMTEwMDc4RDk5NyAvKiBUZXh0Qm94SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJveEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcyMkFGMkU1MjdFMUQwOUUwMDc4RDk5NyAvKiBDR0NvbnRleHRTdGF0ZVNh
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENHQ29udGV4dFN0YXRlU2F2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0MzVFRjQyNzNEMDc2NzAwMDVF
N0VFIC8qIEZpbHRlckltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlckltYWdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNDM1RUY1MjczRDA3NjcwMDA1RTdFRSAvKiBGaWx0
ZXJJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWx0ZXJJbWFnZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVEMzI5MUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVu
ZE1pbk1heC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRCbGVu
ZE1pbk1heC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODgxMCw2ICsyODgy
MSw3IEBACiAJCUIyNzUzNTI5MEIwNTM4MTQwMDJDRTY0RiAvKiBjZyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNzIyQUYyRTUyN0UxRDA5RTAwNzhEOTk3
IC8qIENHQ29udGV4dFN0YXRlU2F2ZXIuaCAqLywKIAkJCQkwRkNGMzMyMzBGMkI5NzE1MDA0QjY3
OTUgLyogQ29sb3JDRy5jcHAgKi8sCiAJCQkJQkNBRkVEQjMyNTk2OEQwQjAwMzBFNkFBIC8qIENv
bG9yU3BhY2VDRy5jcHAgKi8sCiAJCQkJQkNBRkVEQjIyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9y
U3BhY2VDRy5oICovLApAQCAtMjkwNDMsNiArMjkwNTUsOSBAQAogCQkJCTdCQjM0QTQ3MjUzNzc2
QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcCAqLywKIAkJ
CQk3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJh
Y3Rvci5oICovLAogCQkJCTdCOTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRl
eHRHTFN0YXRlLmggKi8sCisJCQkJNzIyQUYyREQyN0UxQzIwNTAwNzhEOTk3IC8qIEdyYXBoaWNz
Q29udGV4dFN0YXRlLmNwcCAqLywKKwkJCQk3MjJBRjJEQzI3RTFDMjA1MDA3OEQ5OTcgLyogR3Jh
cGhpY3NDb250ZXh0U3RhdGUuaCAqLywKKwkJCQk3MjJBRjJEQjI3RTFDMjA0MDA3OEQ5OTcgLyog
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlci5oICovLAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUx
RDY4OSAvKiBHcmFwaGljc0xheWVyLmNwcCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2
ODkgLyogR3JhcGhpY3NMYXllci5oICovLAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAv
KiBHcmFwaGljc0xheWVyQ2xpZW50LmggKi8sCkBAIC0yOTE0Myw2ICsyOTE1OCw3IEBACiAJCQkJ
QkNBNTU5MTIyNjNEQkQ3OTAwN0YxOUIzIC8qIFBpeGVsRm9ybWF0LmggKi8sCiAJCQkJQ0REMDhB
QkYyNzdFNTRGMDAwRUEzNzU1IC8qIFBsYXRmb3JtQXVkaW9UcmFja0NvbmZpZ3VyYXRpb24uaCAq
LywKIAkJCQlCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmgg
Ki8sCisJCQkJNzIyQUYyRTEyN0UxQzQwMzAwNzhEOTk3IC8qIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0LmggKi8sCiAJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2Uu
aCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFnZUJ1ZmZl
ci5oICovLAogCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVm
ZmVyQmFja2VuZC5oICovLApAQCAtMjkxNzcsNiArMjkxOTMsNyBAQAogCQkJCTA4NzU1OEM0MTNC
NEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCAqLywKIAkJ
CQk5NUU5RjQ0NDI3QzlBMzlCMDA5NDUzMzcgLyogU3lzdGVtSW1hZ2UuaCAqLywKIAkJCQkzQkI2
QjgwRjIyQTdEMzExMDAzQTJBNjkgLyogVGFiU2l6ZS5oICovLAorCQkJCTcyMkFGMkUzMjdFMUNG
MTEwMDc4RDk5NyAvKiBUZXh0Qm94SXRlcmF0b3IuaCAqLywKIAkJCQkzNzZEQ0NFMDEzQjRGOTY2
MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi8sCiAJCQkJQTgyNEI0NjQwRTJFRjJFQTAwODFBN0I3
IC8qIFRleHRSdW4uaCAqLywKIAkJCQlDRDFFNzM0NjE2N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRy
YWNrUmVwcmVzZW50YXRpb24uY3BwICovLApAQCAtMzM4NzMsNiArMzM4OTAsNyBAQAogCQkJCUNE
RTNBRTEyMjRCNDkxNkEwMDEyOEU3RSAvKiBDRE1VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVGQTkwNENBMTc4RTYxRjUwMDRDOEEyRCAvKiBDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkxQjhGMEI1MjE5NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZVN1bW1h
cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMkFGMkU2MjdFMUQwQTEwMDc4RDk5NyAvKiBDR0Nv
bnRleHRTdGF0ZVNhdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM2RkQxNTE2Qzc4MjY1MDBG
ODg3QzEgLyogQ2hhbmdlVmVyc2lvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2OURE
MTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTc4NUQ5MTUyNEI0RDFDQTAwMTREQjIxIC8qIENoYW5uZWxDb3VudE1vZGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzQ3OTgsNiArMzQ4MTYsOCBAQAogCQkJCTQ5QzdCOUZDMTA0MkQzNjUw
MDA5RDQ0NyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0I5NUNGRUIyNzU0RkY2RTAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdMU3RhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4MEQ2NzA4MEU5RTlERUIwMEU0MjBGMCAvKiBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGVDRy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIyQUYyREYyN0UxQzIw
NjAwNzhEOTk3IC8qIEdyYXBoaWNzQ29udGV4dFN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
MjJBRjJERTI3RTFDMjA2MDA3OEQ5OTcgLyogR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBCMEQwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFw
aGljc0xheWVyQ0EuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4
OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM2NzA1LDYgKzM2
NzI1LDcgQEAKIAkJCQlCQ0FBNDg3MDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZh
Y3RvcnlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjNGNzdCMTQ4NENBNEMwMDhDNkRCRSAv
KiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxOTUxRDU0
RjVGQjAwREQ3QzY4IC8qIFBsYXRmb3JtR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIy
QUYyRTIyN0UxQzQwNTAwNzhEOTk3IC8qIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ3NzA1QzcyNTUyNzZDRDAwMUQwQzk0IC8qIFBsYXRmb3Jt
SW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MDY0MEFGMjQwNzU4MkQwMEFBRTA0
NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzc4
NSw2ICszNzgwNiw3IEBACiAJCQkJQ0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NERDRTYxODgxMDUxRDAw
M0VFREJCIC8qIFRleHRBdXRvU2l6aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEzNDBE
MDA2QzFEMDBFRjZGMjYgLyogVGV4dEJvdW5kYXJpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTcy
MkFGMkU0MjdFMUNGMTMwMDc4RDk5NyAvKiBUZXh0Qm94SXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0NDBERjU2MjZFQjUzRTAwMDRBRjA2QiAvKiBUZXh0Qm94UGFpbnRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTQ0N0Y1QjMyNjZDRjYzRDAwMTMzRjAwIC8qIFRleHRCb3hTZWxlY3Rh
YmxlUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MTUxQkQ4MTJGMTU1OEYwMDVBMEY2NCAv
KiBUZXh0Q2hlY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAwYmIxMzU5
N2NlYTczNjlkYmJjNmUxNzI3ZjI2YzkyYjhmYjc1MTc2Li4zYzM3NGZkOWJhODI3Yzk0YjdmMzRi
NzQ0NmE1ZjdhYmM4YTNlODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDAzLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKICNpbmNsdWRlICJCaWRpUmVzb2x2ZXIuaCIKLSNpbmNs
dWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkZpbHRl
ckltYWdlLmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgpAQCAtMzksMzMzICszOCwx
MSBAQAogI2luY2x1ZGUgIk51bGxHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJSb3VuZGVk
UmVjdC5oIgogI2luY2x1ZGUgIlN5c3RlbUltYWdlLmgiCi0jaW5jbHVkZSAiVGV4dFJ1bi5oIgor
I2luY2x1ZGUgIlRleHRCb3hJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJl
YW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXh0Qm94SXRlcmF0b3Igewot
cHVibGljOgotICAgIFRleHRCb3hJdGVyYXRvcigpCi0gICAgICAgIDogbV90ZXh0UnVuKDApCi0g
ICAgICAgICwgbV9vZmZzZXQoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgVGV4dEJveEl0ZXJhdG9y
KGNvbnN0IFRleHRSdW4qIHRleHRSdW4sIHVuc2lnbmVkIG9mZnNldCkKLSAgICAgICAgOiBtX3Rl
eHRSdW4odGV4dFJ1bikKLSAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgewotICAgIH0K
LQotICAgIHVuc2lnbmVkIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9Ci0gICAg
dm9pZCBpbmNyZW1lbnQoKSB7IG1fb2Zmc2V0Kys7IH0KLSAgICBib29sIGF0RW5kKCkgY29uc3Qg
eyByZXR1cm4gIW1fdGV4dFJ1biB8fCBtX29mZnNldCA+PSBtX3RleHRSdW4tPmxlbmd0aCgpOyB9
Ci0gICAgVUNoYXIgY3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICgqbV90ZXh0UnVuKVttX29mZnNl
dF07IH0KLSAgICBVQ2hhckRpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBhdEVu
ZCgpID8gVV9PVEhFUl9ORVVUUkFMIDogdV9jaGFyRGlyZWN0aW9uKGN1cnJlbnQoKSk7IH0KLQot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0ICYmIG1fdGV4
dFJ1biA9PSBvdGhlci5tX3RleHRSdW47Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFRleHRCb3hJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90
aGVyKTsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IFRleHRSdW4qIG1fdGV4dFJ1bjsKLSAgICB1
bnNpZ25lZCBtX29mZnNldDsKLX07Ci0KLSNkZWZpbmUgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVS
VFkoZmxhZywgcHJvcGVydHkpIFwKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6ZmxhZykgJiYgKG1fc3RhdGUucHJvcGVydHkgIT0gc3RhdGUucHJv
cGVydHkpKSBcCi0gICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6
ZmxhZyk7Ci0KLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSgpCi0g
ICAgOiBzaG91bGRBbnRpYWxpYXModHJ1ZSkKLSAgICAsIHNob3VsZFNtb290aEZvbnRzKHRydWUp
Ci0gICAgLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHModHJ1ZSkKLSAgICAsIHNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKGZhbHNlKQotICAgICwgZHJhd0x1bWluYW5jZU1hc2soZmFsc2UpCi17
Ci19Ci0KLUdyYXBoaWNzQ29udGV4dFN0YXRlOjp+R3JhcGhpY3NDb250ZXh0U3RhdGUoKSA9IGRl
ZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJikgPSBkZWZhdWx0Owot
R3JhcGhpY3NDb250ZXh0U3RhdGUmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRvcj0oY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0
ZSYgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYm
KSA9IGRlZmF1bHQ7Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyhj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotewotICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0cm9rZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVy
bkNoYW5nZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpIHsKLSAg
ICAgICAgc3Ryb2tlQ29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKLSAgICAgICAgc3Ryb2tlR3Jh
ZGllbnQgPSBzdGF0ZS5zdHJva2VHcmFkaWVudDsKLSAgICAgICAgc3Ryb2tlUGF0dGVybiA9IHN0
YXRlLnN0cm9rZVBhdHRlcm47Ci0gICAgfQotCi0gICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpG
aWxsR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5n
ZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxhZ3MpKSB7Ci0gICAgICAgIGZp
bGxDb2xvciA9IHN0YXRlLmZpbGxDb2xvcjsKLSAgICAgICAgZmlsbEdyYWRpZW50ID0gc3RhdGUu
ZmlsbEdyYWRpZW50OwotICAgICAgICBmaWxsUGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0ZXJuOwot
ICAgIH0KLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hh
ZG93Q2hhbmdlKSkgewotICAgICAgICBzaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFkb3dPZmZzZXQ7
Ci0gICAgICAgIHNoYWRvd0JsdXIgPSBzdGF0ZS5zaGFkb3dCbHVyOwotICAgICAgICBzaGFkb3dD
b2xvciA9IHN0YXRlLnNoYWRvd0NvbG9yOwotICAgICAgICBzaGFkb3dSYWRpdXNNb2RlID0gc3Rh
dGUuc2hhZG93UmFkaXVzTW9kZTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIHN0cm9r
ZVRoaWNrbmVzcyA9IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKLQotICAgIGlmIChmbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAg
ICAgdGV4dERyYXdpbmdNb2RlID0gc3RhdGUudGV4dERyYXdpbmdNb2RlOwotCi0gICAgaWYgKGZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0g
ICAgICAgIHN0cm9rZVN0eWxlID0gc3RhdGUuc3Ryb2tlU3R5bGU7Ci0KLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAg
ZmlsbFJ1bGUgPSBzdGF0ZS5maWxsUnVsZTsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKQotICAgICAgICBhbHBoYSA9IHN0YXRlLmFs
cGhhOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9k
ZUNoYW5nZSB9KSkgewotICAgICAgICBjb21wb3NpdGVPcGVyYXRvciA9IHN0YXRlLmNvbXBvc2l0
ZU9wZXJhdG9yOwotICAgICAgICBibGVuZE1vZGUgPSBzdGF0ZS5ibGVuZE1vZGU7Ci0gICAgfQot
Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRp
YWxpYXNDaGFuZ2UpKQotICAgICAgICBzaG91bGRBbnRpYWxpYXMgPSBzdGF0ZS5zaG91bGRBbnRp
YWxpYXM7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKLSAgICAgICAgc2hvdWxkU21vb3RoRm9udHMgPSBzdGF0
ZS5zaG91bGRTbW9vdGhGb250czsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAgICAgICAg
c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
aGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zID0gc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Ci0KLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkK
LSAgICAgICAgZHJhd0x1bWluYW5jZU1hc2sgPSBzdGF0ZS5kcmF3THVtaW5hbmNlTWFzazsKLQot
ICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eUNoYW5nZSkpCi0gICAgICAgIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkg
PSBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwotCi0jaWYgSEFWRShPU19EQVJLX01P
REVfU1VQUE9SVCkKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKLSAgICAgICAgdXNlRGFya0FwcGVhcmFuY2UgPSBz
dGF0ZS51c2VEYXJrQXBwZWFyYW5jZTsKLSNlbmRpZgotfQotCi1HcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncyBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdlc0Zy
b21TdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpIGNvbnN0Ci17Ci0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3M7Ci0KLSAg
ICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VHcmFkaWVudENoYW5nZSwgc3Ryb2tl
R3JhZGllbnQpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVBhdHRlcm5D
aGFuZ2UsIHN0cm9rZVBhdHRlcm4pOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKEZp
bGxHcmFkaWVudENoYW5nZSwgZmlsbEdyYWRpZW50KTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9Q
Uk9QRVJUWShGaWxsUGF0dGVybkNoYW5nZSwgZmlsbFBhdHRlcm4pOwotCi0gICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkKLSAg
ICAgICAgJiYgKG1fc3RhdGUuc2hhZG93T2Zmc2V0ICE9IHN0YXRlLnNoYWRvd09mZnNldAotICAg
ICAgICAgICAgfHwgbV9zdGF0ZS5zaGFkb3dCbHVyICE9IHN0YXRlLnNoYWRvd0JsdXIKLSAgICAg
ICAgICAgIHx8IG1fc3RhdGUuc2hhZG93Q29sb3IgIT0gc3RhdGUuc2hhZG93Q29sb3IpKQotICAg
ICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7
Ci0KLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VUaGlja25lc3NDaGFuZ2Us
IHN0cm9rZVRoaWNrbmVzcyk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoVGV4dERy
YXdpbmdNb2RlQ2hhbmdlLCB0ZXh0RHJhd2luZ01vZGUpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VE
X1BST1BFUlRZKFN0cm9rZUNvbG9yQ2hhbmdlLCBzdHJva2VDb2xvcik7Ci0gICAgQ0hFQ0tfRk9S
X0NIQU5HRURfUFJPUEVSVFkoRmlsbENvbG9yQ2hhbmdlLCBmaWxsQ29sb3IpOwotICAgIENIRUNL
X0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVN0eWxlQ2hhbmdlLCBzdHJva2VTdHlsZSk7Ci0g
ICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFJ1bGVDaGFuZ2UsIGZpbGxSdWxlKTsK
LSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShBbHBoYUNoYW5nZSwgYWxwaGEpOwotCi0g
ICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2Rl
Q2hhbmdlIH0pCi0gICAgICAgICYmIChtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yICE9IHN0YXRl
LmNvbXBvc2l0ZU9wZXJhdG9yIHx8IG1fc3RhdGUuYmxlbmRNb2RlICE9IHN0YXRlLmJsZW5kTW9k
ZSkpIHsKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21w
b3NpdGVPcGVyYXRpb25DaGFuZ2UpOwotICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSk7Ci0gICAgfQotCi0gICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoU2hvdWxkQW50aWFsaWFzQ2hhbmdlLCBzaG91bGRBbnRpYWxpYXMpOwot
ICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFNtb290aEZvbnRzQ2hhbmdlLCBz
aG91bGRTbW9vdGhGb250cyk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoU2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMp
OwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
Q2hhbmdlLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURf
UFJPUEVSVFkoRHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UsIGRyYXdMdW1pbmFuY2VNYXNrKTsKLSAg
ICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hh
bmdlLCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKLQotI2lmIEhBVkUoT1NfREFSS19NT0RF
X1NVUFBPUlQpCi0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoVXNlRGFya0FwcGVhcmFu
Y2VDaGFuZ2UsIHVzZURhcmtBcHBlYXJhbmNlKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGNoYW5n
ZUZsYWdzOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphY2N1bXVsYXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCi17Ci0gICAgbV9zdGF0ZS5tZXJnZUNoYW5nZXMoc3Rh
dGUsIGZsYWdzKTsKLQotICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRp
ZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSB9Owot
ICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpCi0gICAgICAgIG1fY2hhbmdl
RmxhZ3MucmVtb3ZlKHN0cm9rZUZsYWdzKTsKLQotICAgIGF1dG8gZmlsbEZsYWdzID0geyBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RmlsbEdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFu
Z2UgfTsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoZmlsbEZsYWdzKSkKLSAgICAgICAgbV9j
aGFuZ2VGbGFncy5yZW1vdmUoZmlsbEZsYWdzKTsKLQotICAgIGF1dG8gY29tcG9zaXRlT3BlcmF0
b3JGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5n
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9OwotICAgIGlmIChmbGFn
cy5jb250YWluc0FueShjb21wb3NpdGVPcGVyYXRvckZsYWdzKSkKLSAgICAgICAgbV9jaGFuZ2VG
bGFncy5yZW1vdmUoY29tcG9zaXRlT3BlcmF0b3JGbGFncyk7Ci0KLSAgICBtX2NoYW5nZUZsYWdz
LmFkZChmbGFncyk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFwcGx5
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKLXsKLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKQot
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KCptX3N0YXRlLnN0cm9rZUdyYWRpZW50
LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotCi0gICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFu
Z2UpKQotICAgICAgICBjb250ZXh0LnNldFN0cm9rZVBhdHRlcm4oKm1fc3RhdGUuc3Ryb2tlUGF0
dGVybik7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGll
bnQoKm1fc3RhdGUuZmlsbEdyYWRpZW50LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNm
b3JtKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbFBhdHRlcm4o
Km1fc3RhdGUuZmlsbFBhdHRlcm4pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkKLSAg
ICAgICAgY29udGV4dC5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0YXRlLnNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFNoYWRv
dyhtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRv
d0NvbG9yLCBtX3N0YXRlLnNoYWRvd1JhZGl1c01vZGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkp
Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKG1fc3RhdGUuc3Ryb2tlVGhpY2tu
ZXNzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFRleHREcmF3
aW5nTW9kZShtX3N0YXRlLnRleHREcmF3aW5nTW9kZSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAg
ICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwotCi0gICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xv
ckNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fc3RhdGUuZmlsbENvbG9y
KTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUobV9z
dGF0ZS5zdHJva2VTdHlsZSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZp
bGxSdWxlKG1fc3RhdGUuZmlsbFJ1bGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5z
ZXRBbHBoYShtX3N0YXRlLmFscGhhKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
QW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KSkKLSAgICAgICAgY29udGV4dC5z
ZXRDb21wb3NpdGVPcGVyYXRpb24obV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgbV9zdGF0ZS5i
bGVuZE1vZGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U2hv
dWxkQW50aWFsaWFzKG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKLQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0No
YW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U2hvdWxkU21vb3RoRm9udHMobV9zdGF0ZS5zaG91
bGRTbW9vdGhGb250cyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAgICAg
ICAgY29udGV4dC5zZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMobV9zdGF0ZS5zaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKLSAgICAgICAg
Y29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrKTsK
LQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7
Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGlmIChtX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkp
Ci0gICAgICAgIGNvbnRleHQuc2V0VXNlRGFya0FwcGVhcmFuY2UobV9zdGF0ZS51c2VEYXJrQXBw
ZWFyYW5jZSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6
ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoImNoYW5n
ZS1mbGFncyIsIG1fY2hhbmdlRmxhZ3MudG9SYXcoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKQot
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1ncmFkaWVudCIsIG1fc3RhdGUuc3Ryb2tl
R3JhZGllbnQuZ2V0KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJv
cGVydHkoInN0cm9rZS1wYXR0ZXJuIiwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuLmdldCgpKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxs
R3JhZGllbnRDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtZ3JhZGllbnQi
LCBtX3N0YXRlLmZpbGxHcmFkaWVudC5nZXQoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImZpbGwtcGF0dGVybiIsIG1fc3RhdGUuZmlsbFBhdHRlcm4uZ2V0
KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNoYWRvd0NoYW5nZSkpIHsKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3ctYmx1
ciIsIG1fc3RhdGUuc2hhZG93Qmx1cik7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93
LW9mZnNldCIsIG1fc3RhdGUuc2hhZG93T2Zmc2V0KTsKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJzaGFkb3ctY29sb3IiLCBtX3N0YXRlLnNoYWRvd0NvbG9yKTsKLSAgICAgICAgdHMuZHVtcFBy
b3BlcnR5KCJzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIiwgbV9zdGF0ZS5zaGFkb3dSYWRpdXNN
b2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSk7Ci0gICAgfQotCi0gICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0No
YW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXRoaWNrbmVzcyIsIG1fc3Rh
dGUuc3Ryb2tlVGhpY2tuZXNzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInRleHQtZHJhd2luZy1tb2RlIiwgbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUu
dG9SYXcoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0
cm9rZS1jb2xvciIsIG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpCi0gICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiZmlsbC1jb2xvciIsIG1fc3RhdGUuZmlsbENvbG9yKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VTdHlsZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXN0eWxlIiwg
bV9zdGF0ZS5zdHJva2VTdHlsZSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImZpbGwtcnVsZSIsIG1fc3RhdGUuZmlsbFJ1bGUpOwotCi0gICAgaWYgKG1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJhbHBoYSIsIG1fc3RhdGUuYWxwaGEpOwotCi0gICAgaWYgKG1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJh
dGlvbkNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9zaXRlLW9wZXJhdG9y
IiwgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvcik7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKSkKLSAgICAgICAg
dHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgbV9zdGF0ZS5ibGVuZE1vZGUpOwotCi0gICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFu
dGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLWFudGlhbGlh
cyIsIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCi0g
ICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXNtb290aC1mb250cyIsIG1fc3RhdGUuc2hv
dWxkU21vb3RoRm9udHMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkpCi0gICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXN1YnBpeGVsLXF1YW50aXplLWZvbnRzIiwgbV9z
dGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3dzLWlnbm9yZS10cmFuc2Zv
cm1zIiwgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0KLSAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tD
aGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImRyYXctbHVtaW5hbmNlLW1hc2siLCBt
X3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrKTsKLQotI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBP
UlQpCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ1c2Ut
ZGFyay1hcHBlYXJhbmNlIiwgbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZSk7Ci0jZW5kaWYKLX0K
LQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlKQotewotICAgIHN0YXRlQ2hhbmdlLmR1bXAo
dHMpOwotICAgIHJldHVybiB0czsKLX0KLQogR3JhcGhpY3NDb250ZXh0Ojp+R3JhcGhpY3NDb250
ZXh0KCkKIHsKICAgICBBU1NFUlQobV9zdGFjay5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBmYjk1ZGQy
NWIyNzFkZWI5ZmE4NWZmMmQ5ZjFmNzQ3MTZhMDY2YmFlLi4zOWYzMDFkZTYwZmM1Mzk0YzJjYTE0
NGVlNzUxMDhiM2ZjNmQzZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDMtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTMwLDQ5ICszMCwxOCBAQAogI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
IgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCi0jaW5j
bHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFN0YXRlLmgi
CiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5j
bHVkZSAiUGF0dGVybi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiUmVuZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAot
I2lmIFVTRShDRykKLXR5cGVkZWYgc3RydWN0IENHQ29udGV4dCBQbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dDsKLSNlbGlmIFVTRShDQUlSTykKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEdyYXBo
aWNzQ29udGV4dENhaXJvOwotfQotdHlwZWRlZiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWly
byBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKLSNlbHNlCi10eXBlZGVmIHZvaWQgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQ7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlICJE
SUJQaXhlbERhdGEuaCIKLXR5cGVkZWYgc3RydWN0IEhEQ19fKiBIREM7Ci0jaWYgIVVTRShDRykK
LS8vIFVJbnQ4IGlzIGRlZmluZWQgaW4gQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgKLXR5cGVkZWYg
dW5zaWduZWQgY2hhciBVSW50ODsKLSNlbmRpZgotI2VuZGlmCi0KLS8vIFgxMSBoZWFkZXJzIGRl
ZmluZSBhIGJ1bmNoIG9mIG1hY3JvcyB3aXRoIGNvbW1vbiB0ZXJtcywgaW50ZXJmZXJpbmcgd2l0
aCBXZWJDb3JlIGFuZCBXVEYgZW51bSB2YWx1ZXMuCi0vLyBBcyBhIHdvcmthcm91bmQsIHdlIGV4
cGxpY2l0bHkgdW5kZWYgdGhlbSBoZXJlLgotI2lmIGRlZmluZWQoTm9uZSkKLSN1bmRlZiBOb25l
Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKEJlbG93KQotI3VuZGVmIEJlbG93Ci0jZW5kaWYKLSNpZiBk
ZWZpbmVkKFN1Y2Nlc3MpCi0jdW5kZWYgU3VjY2VzcwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwpAQCAtOTEsMTY5ICs2MCw4IEBAIGNsYXNz
IFN5c3RlbUltYWdlOwogY2xhc3MgVGV4dFJ1bjsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4
OwogCi1uYW1lc3BhY2UgRGlzcGxheUxpc3QgewotY2xhc3MgUmVjb3JkZXI7Ci19Ci0KLWVudW0g
Y2xhc3MgVGV4dERyYXdpbmdNb2RlIDogdWludDhfdCB7Ci0gICAgRmlsbCA9IDEgPDwgMCwKLSAg
ICBTdHJva2UgPSAxIDw8IDEsCi19OwotdXNpbmcgVGV4dERyYXdpbmdNb2RlRmxhZ3MgPSBPcHRp
b25TZXQ8VGV4dERyYXdpbmdNb2RlPjsKLQotLy8gTGVnYWN5IHNoYWRvdyBibHVyIHJhZGl1cyBp
cyB1c2VkIGZvciBjYW52YXMsIGFuZCAtd2Via2l0LWJveC1zaGFkb3cuCi0vLyBJdCBoYXMgZGlm
ZmVyZW50IHRyZWF0bWVudCBvZiByYWRpaSA+IDhweC4KLWVudW0gY2xhc3MgU2hhZG93UmFkaXVz
TW9kZSA6IGJvb2wgewotICAgIERlZmF1bHQsCi0gICAgTGVnYWN5Ci19OwotCi1lbnVtIFN0cm9r
ZVN0eWxlIHsKLSAgICBOb1N0cm9rZSwKLSAgICBTb2xpZFN0cm9rZSwKLSAgICBEb3R0ZWRTdHJv
a2UsCi0gICAgRGFzaGVkU3Ryb2tlLAotICAgIERvdWJsZVN0cm9rZSwKLSAgICBXYXZ5U3Ryb2tl
LAotfTsKLQotc3RydWN0IERvY3VtZW50TWFya2VyTGluZVN0eWxlIHsKLSAgICBlbnVtIGNsYXNz
IE1vZGUgOiB1aW50OF90IHsKLSAgICAgICAgVGV4dENoZWNraW5nRGljdGF0aW9uUGhyYXNlV2l0
aEFsdGVybmF0aXZlcywKLSAgICAgICAgU3BlbGxpbmcsCi0gICAgICAgIEdyYW1tYXIsCi0gICAg
ICAgIEF1dG9jb3JyZWN0aW9uUmVwbGFjZW1lbnQsCi0gICAgICAgIERpY3RhdGlvbkFsdGVybmF0
aXZlcwotICAgIH0gbW9kZTsKLSAgICBib29sIHNob3VsZFVzZURhcmtBcHBlYXJhbmNlIHsgZmFs
c2UgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxEb2N1bWVudE1hcmtlckxpbmVTdHlsZT4gZGVjb2RlKERlY29kZXImKTsKLX07Ci0KLXRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Ci12b2lkIERvY3VtZW50TWFya2VyTGluZVN0eWxlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1vZGU7Ci0gICAgZW5j
b2RlciA8PCBzaG91bGRVc2VEYXJrQXBwZWFyYW5jZTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KLXN0ZDo6b3B0aW9uYWw8RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU+IERvY3VtZW50TWFy
a2VyTGluZVN0eWxlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBzdGQ6Om9wdGlv
bmFsPE1vZGU+IG1vZGU7Ci0gICAgZGVjb2RlciA+PiBtb2RlOwotICAgIGlmICghbW9kZSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hv
dWxkVXNlRGFya0FwcGVhcmFuY2U7Ci0gICAgZGVjb2RlciA+PiBzaG91bGRVc2VEYXJrQXBwZWFy
YW5jZTsKLSAgICBpZiAoIXNob3VsZFVzZURhcmtBcHBlYXJhbmNlKQotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7ICptb2RlLCAqc2hvdWxkVXNlRGFya0FwcGVh
cmFuY2UgfX07Ci19Ci0KIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTsKIAotc3Ry
dWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFwaGljc0NvbnRleHRTdGF0ZSgp
OwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZShHcmFwaGljc0NvbnRl
eHRTdGF0ZSYmKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRvcj0oY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgb3BlcmF0b3I9KEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpOwotCi0gICAgZW51bSBD
aGFuZ2UgOiB1aW50MzJfdCB7Ci0gICAgICAgIFN0cm9rZUdyYWRpZW50Q2hhbmdlICAgICAgICAg
ICAgICAgICAgICA9IDEgPDwgMCwKLSAgICAgICAgU3Ryb2tlUGF0dGVybkNoYW5nZSAgICAgICAg
ICAgICAgICAgICAgID0gMSA8PCAxLAotICAgICAgICBGaWxsR3JhZGllbnRDaGFuZ2UgICAgICAg
ICAgICAgICAgICAgICAgPSAxIDw8IDIsCi0gICAgICAgIEZpbGxQYXR0ZXJuQ2hhbmdlICAgICAg
ICAgICAgICAgICAgICAgICA9IDEgPDwgMywKLSAgICAgICAgU3Ryb2tlVGhpY2tuZXNzQ2hhbmdl
ICAgICAgICAgICAgICAgICAgID0gMSA8PCA0LAotICAgICAgICBTdHJva2VDb2xvckNoYW5nZSAg
ICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDUsCi0gICAgICAgIFN0cm9rZVN0eWxlQ2hhbmdl
ICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgNiwKLSAgICAgICAgRmlsbENvbG9yQ2hhbmdl
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA3LAotICAgICAgICBGaWxsUnVsZUNoYW5n
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDgsCi0gICAgICAgIFNoYWRvd0NoYW5n
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgOSwKLSAgICAgICAgU2hhZG93c0ln
bm9yZVRyYW5zZm9ybXNDaGFuZ2UgICAgICAgICAgID0gMSA8PCAxMCwKLSAgICAgICAgQWxwaGFD
aGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxMSwKLSAgICAgICAgQ29t
cG9zaXRlT3BlcmF0aW9uQ2hhbmdlICAgICAgICAgICAgICAgID0gMSA8PCAxMiwKLSAgICAgICAg
QmxlbmRNb2RlQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxMywKLSAgICAg
ICAgVGV4dERyYXdpbmdNb2RlQ2hhbmdlICAgICAgICAgICAgICAgICAgID0gMSA8PCAxNCwKLSAg
ICAgICAgU2hvdWxkQW50aWFsaWFzQ2hhbmdlICAgICAgICAgICAgICAgICAgID0gMSA8PCAxNSwK
LSAgICAgICAgU2hvdWxkU21vb3RoRm9udHNDaGFuZ2UgICAgICAgICAgICAgICAgID0gMSA8PCAx
NiwKLSAgICAgICAgU2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlICAgICAgID0gMSA8
PCAxNywKLSAgICAgICAgRHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UgICAgICAgICAgICAgICAgID0g
MSA8PCAxOCwKLSAgICAgICAgSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSAgICAgICAg
ID0gMSA8PCAxOSwKLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgICAgICBVc2VE
YXJrQXBwZWFyYW5jZUNoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDIwLAotI2VuZGlmCi0g
ICAgfTsKLSAgICB1c2luZyBTdGF0ZUNoYW5nZUZsYWdzID0gT3B0aW9uU2V0PENoYW5nZT47Ci0K
LSAgICB2b2lkIG1lcmdlQ2hhbmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKLQotICAgIFJlZlB0cjxHcmFkaWVu
dD4gc3Ryb2tlR3JhZGllbnQ7Ci0gICAgUmVmUHRyPFBhdHRlcm4+IHN0cm9rZVBhdHRlcm47Ci0g
ICAgCi0gICAgUmVmUHRyPEdyYWRpZW50PiBmaWxsR3JhZGllbnQ7Ci0gICAgUmVmUHRyPFBhdHRl
cm4+IGZpbGxQYXR0ZXJuOwotCi0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKLQotICAgIENv
bG9yIHN0cm9rZUNvbG9yIHsgQ29sb3I6OmJsYWNrIH07Ci0gICAgQ29sb3IgZmlsbENvbG9yIHsg
Q29sb3I6OmJsYWNrIH07Ci0gICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0KLSAgICBBZmZpbmVUcmFu
c2Zvcm0gc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0g
ZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0KLSAgICBmbG9hdCBzdHJva2VUaGlja25lc3Mg
eyAwIH07Ci0gICAgZmxvYXQgc2hhZG93Qmx1ciB7IDAgfTsKLSAgICBmbG9hdCBhbHBoYSB7IDEg
fTsKLQotICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlIHsgU29saWRTdHJva2UgfTsKLSAgICBX
aW5kUnVsZSBmaWxsUnVsZSB7IFdpbmRSdWxlOjpOb25aZXJvIH07Ci0KLSAgICBUZXh0RHJhd2lu
Z01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUgeyBUZXh0RHJhd2luZ01vZGU6OkZpbGwgfTsKLSAg
ICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciB7IENvbXBvc2l0ZU9wZXJhdG9y
OjpTb3VyY2VPdmVyIH07Ci0gICAgQmxlbmRNb2RlIGJsZW5kTW9kZSB7IEJsZW5kTW9kZTo6Tm9y
bWFsIH07Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSB7IEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0IH07Ci0gICAgU2hhZG93UmFkaXVzTW9k
ZSBzaGFkb3dSYWRpdXNNb2RlIHsgU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdCB9OwotCi0gICAg
Ym9vbCBzaG91bGRBbnRpYWxpYXMgOiAxOwotICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgOiAx
OwotICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIDogMTsKLSAgICBib29sIHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zIDogMTsKLSAgICBib29sIGRyYXdMdW1pbmFuY2VNYXNrIDog
MTsKLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGJvb2wgdXNlRGFya0FwcGVh
cmFuY2UgOiAxOwotI2VuZGlmCi19OwotCi1zdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2UgewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKCkgPSBkZWZhdWx0OwotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCi0gICAgICAg
IDogbV9zdGF0ZShzdGF0ZSkKLSAgICAgICAgLCBtX2NoYW5nZUZsYWdzKGZsYWdzKQotICAgIHsK
LSAgICB9Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFu
Z2VzRnJvbVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJikgY29uc3Q7Ci0KLSAgICB2
b2lkIGFjY3VtdWxhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7Ci0gICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdDsKLSAgICAKLSAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Q7
Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRlOwotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIG1fY2hhbmdlRmxhZ3M7Ci19OwotCi1XVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGVDaGFuZ2UmKTsKLQogY2xhc3MgR3JhcGhpY3NDb250ZXh0IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShHcmFwaGljc0NvbnRleHQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzogICAKQEAgLTU3MCwxODIgKzM3OCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NvbnRl
bnRmdWxQYWludERldGVjdGVkIHsgZmFsc2UgfTsKIH07CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBib29s
IHNhdmVBbmRSZXN0b3JlID0gdHJ1ZSkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICwg
bV9zYXZlQW5kUmVzdG9yZShzYXZlQW5kUmVzdG9yZSkKLSAgICB7Ci0gICAgICAgIGlmIChtX3Nh
dmVBbmRSZXN0b3JlKQotICAgICAgICAgICAgbV9jb250ZXh0LnNhdmUoKTsKLSAgICB9Ci0gICAg
Ci0gICAgfkdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIoKQotICAgIHsKLSAgICAgICAgaWYgKG1f
c2F2ZUFuZFJlc3RvcmUpCi0gICAgICAgICAgICBtX2NvbnRleHQucmVzdG9yZSgpOwotICAgIH0K
LSAgICAKLSAgICB2b2lkIHNhdmUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX3NhdmVBbmRS
ZXN0b3JlKTsKLSAgICAgICAgbV9jb250ZXh0LnNhdmUoKTsKLSAgICAgICAgbV9zYXZlQW5kUmVz
dG9yZSA9IHRydWU7Ci0gICAgfQotCi0gICAgdm9pZCByZXN0b3JlKCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3NhdmVBbmRSZXN0b3JlKTsKLSAgICAgICAgbV9jb250ZXh0LnJlc3RvcmUoKTsK
LSAgICAgICAgbV9zYXZlQW5kUmVzdG9yZSA9IGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiAmbV9jb250ZXh0OyB9Ci0KLXBy
aXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRleHQ7Ci0gICAgYm9vbCBtX3NhdmVB
bmRSZXN0b3JlOwotfTsKLQotY2xhc3MgVHJhbnNwYXJlbmN5TGF5ZXJTY29wZSB7Ci1wdWJsaWM6
Ci0gICAgVHJhbnNwYXJlbmN5TGF5ZXJTY29wZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IGFscGhhLCBib29sIGJlZ2luTGF5ZXIgPSB0cnVlKQotICAgICAgICA6IG1fY29udGV4dChj
b250ZXh0KQotICAgICAgICAsIG1fYWxwaGEoYWxwaGEpCi0gICAgICAgICwgbV9iZWdhbkxheWVy
KGJlZ2luTGF5ZXIpCi0gICAgewotICAgICAgICBpZiAoYmVnaW5MYXllcikKLSAgICAgICAgICAg
IG1fY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG1fYWxwaGEpOwotICAgIH0KLSAgICAK
LSAgICB2b2lkIGJlZ2luTGF5ZXIoZmxvYXQgYWxwaGEpCi0gICAgewotICAgICAgICBtX2FscGhh
ID0gYWxwaGE7Ci0gICAgICAgIG1fY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG1fYWxw
aGEpOwotICAgICAgICBtX2JlZ2FuTGF5ZXIgPSB0cnVlOwotICAgIH0KLSAgICAKLSAgICB+VHJh
bnNwYXJlbmN5TGF5ZXJTY29wZSgpCi0gICAgewotICAgICAgICBpZiAobV9iZWdhbkxheWVyKQot
ICAgICAgICAgICAgbV9jb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwotICAgIGZsb2F0IG1fYWxw
aGE7Ci0gICAgYm9vbCBtX2JlZ2FuTGF5ZXI7Ci19OwotCi1jbGFzcyBHcmFwaGljc0NvbnRleHRT
dGF0ZVN0YWNrQ2hlY2tlciB7Ci1wdWJsaWM6Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTdGFj
a0NoZWNrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotICAgICAgICA6IG1fY29udGV4dChj
b250ZXh0KQotICAgICAgICAsIG1fc3RhY2tTaXplKGNvbnRleHQuc3RhY2tTaXplKCkpCi0gICAg
eyB9Ci0gICAgCi0gICAgfkdyYXBoaWNzQ29udGV4dFN0YXRlU3RhY2tDaGVja2VyKCkKLSAgICB7
Ci0gICAgICAgIGlmIChtX2NvbnRleHQuc3RhY2tTaXplKCkgIT0gbV9zdGFja1NpemUpCi0gICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIkdyYXBoaWNzQ29udGV4dCAlcCBzdGFjayBjaGFuZ2VkIGJ5
ICVkIiwgJm1fY29udGV4dCwgKGludCltX2NvbnRleHQuc3RhY2tTaXplKCkgLSAoaW50KW1fc3Rh
Y2tTaXplKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRl
eHQ7Ci0gICAgdW5zaWduZWQgbV9zdGFja1NpemU7Ci19OwotCi1jbGFzcyBJbnRlcnBvbGF0aW9u
UXVhbGl0eU1haW50YWluZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IEludGVycG9sYXRpb25R
dWFsaXR5TWFpbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgSW50ZXJw
b2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHlUb1VzZSkKLSAgICAgICAgOiBtX2dy
YXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQpCi0gICAgICAgICwgbV9jdXJyZW50SW50ZXJw
b2xhdGlvblF1YWxpdHkoZ3JhcGhpY3NDb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHko
KSkKLSAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlZChpbnRlcnBvbGF0aW9u
UXVhbGl0eVRvVXNlICE9IEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0ICYmIG1fY3VycmVu
dEludGVycG9sYXRpb25RdWFsaXR5ICE9IGludGVycG9sYXRpb25RdWFsaXR5VG9Vc2UpCi0gICAg
ewotICAgICAgICBpZiAobV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQpCi0gICAgICAgICAg
ICBtX2dyYXBoaWNzQ29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KGludGVycG9s
YXRpb25RdWFsaXR5VG9Vc2UpOwotICAgIH0KLQotICAgIGV4cGxpY2l0IEludGVycG9sYXRpb25R
dWFsaXR5TWFpbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgc3RkOjpv
cHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAg
ICAgIDogSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyKGdyYXBoaWNzQ29udGV4dCwgaW50
ZXJwb2xhdGlvblF1YWxpdHkgPyBpbnRlcnBvbGF0aW9uUXVhbGl0eS52YWx1ZSgpIDogZ3JhcGhp
Y3NDb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSkKLSAgICB7Ci0gICAgfQotCi0g
ICAgfkludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcigpCi0gICAgewotICAgICAgICBpZiAo
bV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQpCi0gICAgICAgICAgICBtX2dyYXBoaWNzQ29u
dGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KG1fY3VycmVudEludGVycG9sYXRpb25R
dWFsaXR5KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0JiBtX2dyYXBo
aWNzQ29udGV4dDsKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2N1cnJlbnRJbnRlcnBvbGF0
aW9uUXVhbGl0eTsKLSAgICBib29sIG1faW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2VkOwotfTsK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9k
ZT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgV2ViQ29yZTo6RG9jdW1l
bnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGUsCi0gICAgV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJMaW5l
U3R5bGU6Ok1vZGU6OlRleHRDaGVja2luZ0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMs
Ci0gICAgV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU6OlNwZWxsaW5nLAot
ICAgIFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpHcmFtbWFyLAotICAg
IFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpBdXRvY29ycmVjdGlvblJl
cGxhY2VtZW50LAotICAgIFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpE
aWN0YXRpb25BbHRlcm5hdGl2ZXMKLSAgICA+OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlPiB7Ci0gICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVBhdHRlcm5DaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxHcmFkaWVudENoYW5nZSwKLSAgICAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbFBhdHRlcm5DaGFu
Z2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9r
ZVRoaWNrbmVzc0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVN0eWxlQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxlQ2hhbmdlLAotICAg
ICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaGFkb3dDaGFuZ2Us
Ci0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpBbHBoYUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLAotICAgICAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpCbGVuZE1vZGVDaGFuZ2UsCi0gICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlRleHREcmF3aW5nTW9k
ZUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
U2hvdWxkQW50aWFsaWFzQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
Q2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpE
cmF3THVtaW5hbmNlTWFza0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZQotI2lmIEhBVkUo
T1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgICAgICwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UKLSNlbmRpZgotICAgID47Ci19
OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlN0cm9rZVN0eWxlPiB7
Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICBXZWJDb3JlOjpTdHJva2VTdHls
ZSwKLSAgICBXZWJDb3JlOjpTdHJva2VTdHlsZTo6Tm9TdHJva2UsCi0gICAgV2ViQ29yZTo6U3Ry
b2tlU3R5bGU6OlNvbGlkU3Ryb2tlLAotICAgIFdlYkNvcmU6OlN0cm9rZVN0eWxlOjpEb3R0ZWRT
dHJva2UsCi0gICAgV2ViQ29yZTo6U3Ryb2tlU3R5bGU6OkRhc2hlZFN0cm9rZSwKLSAgICBXZWJD
b3JlOjpTdHJva2VTdHlsZTo6RG91YmxlU3Ryb2tlLAotICAgIFdlYkNvcmU6OlN0cm9rZVN0eWxl
OjpXYXZ5U3Ryb2tlCi0gICAgPjsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6VGV4dERyYXdpbmdNb2RlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVl
czwKLSAgICAgICAgV2ViQ29yZTo6VGV4dERyYXdpbmdNb2RlLAotICAgICAgICBXZWJDb3JlOjpU
ZXh0RHJhd2luZ01vZGU6OkZpbGwsCi0gICAgICAgIFdlYkNvcmU6OlRleHREcmF3aW5nTW9kZTo6
U3Ryb2tlCi0gICAgPjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgorI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmNh
ZGQ2NDkxOTM1NDA4NjY0YzI3NmZjZTNkNTk5ZTYxNGY5YWYzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3Bw
CkBAIC0wLDAgKzEsMzI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRT
dGF0ZS5oIgorCisjaW5jbHVkZSAiR3JhZGllbnQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJQYXR0ZXJuLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVh
bS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNkZWZpbmUgQ0hFQ0tfRk9SX0NIQU5HRURf
UFJPUEVSVFkoZmxhZywgcHJvcGVydHkpIFwKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmxhZykgJiYgKG1fc3RhdGUucHJvcGVydHkgIT0gc3Rh
dGUucHJvcGVydHkpKSBcCisgICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRT
dGF0ZTo6ZmxhZyk7CisKK0dyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZSgpCisgICAgOiBzaG91bGRBbnRpYWxpYXModHJ1ZSkKKyAgICAsIHNob3VsZFNtb290aEZvbnRz
KHRydWUpCisgICAgLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHModHJ1ZSkKKyAgICAsIHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQorICAgICwgZHJhd0x1bWluYW5jZU1hc2soZmFs
c2UpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dFN0YXRlOjp+R3JhcGhpY3NDb250ZXh0U3RhdGUo
KSA9IGRlZmF1bHQ7CitHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7CitHcmFwaGljc0NvbnRleHRT
dGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJikgPSBkZWZh
dWx0OworR3JhcGhpY3NDb250ZXh0U3RhdGUmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRv
cj0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7CitHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRT
dGF0ZSYmKSA9IGRlZmF1bHQ7CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hh
bmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQoreworICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tl
UGF0dGVybkNoYW5nZSB9OworICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykp
IHsKKyAgICAgICAgc3Ryb2tlQ29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKKyAgICAgICAgc3Ry
b2tlR3JhZGllbnQgPSBzdGF0ZS5zdHJva2VHcmFkaWVudDsKKyAgICAgICAgc3Ryb2tlUGF0dGVy
biA9IHN0YXRlLnN0cm9rZVBhdHRlcm47CisgICAgfQorCisgICAgYXV0byBmaWxsRmxhZ3MgPSB7
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVy
bkNoYW5nZSB9OworICAgIGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxhZ3MpKSB7CisgICAg
ICAgIGZpbGxDb2xvciA9IHN0YXRlLmZpbGxDb2xvcjsKKyAgICAgICAgZmlsbEdyYWRpZW50ID0g
c3RhdGUuZmlsbEdyYWRpZW50OworICAgICAgICBmaWxsUGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0
ZXJuOworICAgIH0KKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hhZG93Q2hhbmdlKSkgeworICAgICAgICBzaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFkb3dP
ZmZzZXQ7CisgICAgICAgIHNoYWRvd0JsdXIgPSBzdGF0ZS5zaGFkb3dCbHVyOworICAgICAgICBz
aGFkb3dDb2xvciA9IHN0YXRlLnNoYWRvd0NvbG9yOworICAgICAgICBzaGFkb3dSYWRpdXNNb2Rl
ID0gc3RhdGUuc2hhZG93UmFkaXVzTW9kZTsKKyAgICB9CisKKyAgICBpZiAoZmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCisgICAgICAg
IHN0cm9rZVRoaWNrbmVzcyA9IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKKworICAgIGlmIChmbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkK
KyAgICAgICAgdGV4dERyYXdpbmdNb2RlID0gc3RhdGUudGV4dERyYXdpbmdNb2RlOworCisgICAg
aWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5n
ZSkpCisgICAgICAgIHN0cm9rZVN0eWxlID0gc3RhdGUuc3Ryb2tlU3R5bGU7CisKKyAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKKyAg
ICAgICAgZmlsbFJ1bGUgPSBzdGF0ZS5maWxsUnVsZTsKKworICAgIGlmIChmbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKQorICAgICAgICBhbHBoYSA9IHN0
YXRlLmFscGhhOworCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJs
ZW5kTW9kZUNoYW5nZSB9KSkgeworICAgICAgICBjb21wb3NpdGVPcGVyYXRvciA9IHN0YXRlLmNv
bXBvc2l0ZU9wZXJhdG9yOworICAgICAgICBibGVuZE1vZGUgPSBzdGF0ZS5ibGVuZE1vZGU7Cisg
ICAgfQorCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRBbnRpYWxpYXNDaGFuZ2UpKQorICAgICAgICBzaG91bGRBbnRpYWxpYXMgPSBzdGF0ZS5zaG91
bGRBbnRpYWxpYXM7CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKKyAgICAgICAgc2hvdWxkU21vb3RoRm9udHMg
PSBzdGF0ZS5zaG91bGRTbW9vdGhGb250czsKKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKKyAg
ICAgICAgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gc3RhdGUuc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzOworCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCisgICAgICAgIHNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zID0gc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CisKKyAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hh
bmdlKSkKKyAgICAgICAgZHJhd0x1bWluYW5jZU1hc2sgPSBzdGF0ZS5kcmF3THVtaW5hbmNlTWFz
azsKKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpCisgICAgICAgIGltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkgPSBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OworCisjaWYgSEFWRShPU19E
QVJLX01PREVfU1VQUE9SVCkKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKKyAgICAgICAgdXNlRGFya0FwcGVhcmFu
Y2UgPSBzdGF0ZS51c2VEYXJrQXBwZWFyYW5jZTsKKyNlbmRpZgorfQorCitHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hh
bmdlc0Zyb21TdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpIGNvbnN0Cit7
CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3M7
CisKKyAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VHcmFkaWVudENoYW5nZSwg
c3Ryb2tlR3JhZGllbnQpOworICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVBh
dHRlcm5DaGFuZ2UsIHN0cm9rZVBhdHRlcm4pOworICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BF
UlRZKEZpbGxHcmFkaWVudENoYW5nZSwgZmlsbEdyYWRpZW50KTsKKyAgICBDSEVDS19GT1JfQ0hB
TkdFRF9QUk9QRVJUWShGaWxsUGF0dGVybkNoYW5nZSwgZmlsbFBhdHRlcm4pOworCisgICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5n
ZSkKKyAgICAgICAgJiYgKG1fc3RhdGUuc2hhZG93T2Zmc2V0ICE9IHN0YXRlLnNoYWRvd09mZnNl
dAorICAgICAgICAgICAgfHwgbV9zdGF0ZS5zaGFkb3dCbHVyICE9IHN0YXRlLnNoYWRvd0JsdXIK
KyAgICAgICAgICAgIHx8IG1fc3RhdGUuc2hhZG93Q29sb3IgIT0gc3RhdGUuc2hhZG93Q29sb3Ip
KQorICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0No
YW5nZSk7CisKKyAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VUaGlja25lc3ND
aGFuZ2UsIHN0cm9rZVRoaWNrbmVzcyk7CisgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFko
VGV4dERyYXdpbmdNb2RlQ2hhbmdlLCB0ZXh0RHJhd2luZ01vZGUpOworICAgIENIRUNLX0ZPUl9D
SEFOR0VEX1BST1BFUlRZKFN0cm9rZUNvbG9yQ2hhbmdlLCBzdHJva2VDb2xvcik7CisgICAgQ0hF
Q0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbENvbG9yQ2hhbmdlLCBmaWxsQ29sb3IpOworICAg
IENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVN0eWxlQ2hhbmdlLCBzdHJva2VTdHls
ZSk7CisgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFJ1bGVDaGFuZ2UsIGZpbGxS
dWxlKTsKKyAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShBbHBoYUNoYW5nZSwgYWxwaGEp
OworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Qmxl
bmRNb2RlQ2hhbmdlIH0pCisgICAgICAgICYmIChtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yICE9
IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yIHx8IG1fc3RhdGUuYmxlbmRNb2RlICE9IHN0YXRlLmJs
ZW5kTW9kZSkpIHsKKyAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOworICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSk7CisgICAgfQorCisgICAgQ0hFQ0tf
Rk9SX0NIQU5HRURfUFJPUEVSVFkoU2hvdWxkQW50aWFsaWFzQ2hhbmdlLCBzaG91bGRBbnRpYWxp
YXMpOworICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFNtb290aEZvbnRzQ2hh
bmdlLCBzaG91bGRTbW9vdGhGb250cyk7CisgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFko
U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLCBzaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMpOworICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zQ2hhbmdlLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoRHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UsIGRyYXdMdW1pbmFuY2VNYXNr
KTsKKyAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5Q2hhbmdlLCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKworI2lmIEhBVkUoT1NfREFS
S19NT0RFX1NVUFBPUlQpCisgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoVXNlRGFya0Fw
cGVhcmFuY2VDaGFuZ2UsIHVzZURhcmtBcHBlYXJhbmNlKTsKKyNlbmRpZgorCisgICAgcmV0dXJu
IGNoYW5nZUZsYWdzOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphY2N1
bXVsYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit7CisgICAgbV9zdGF0ZS5tZXJnZUNoYW5n
ZXMoc3RhdGUsIGZsYWdzKTsKKworICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5n
ZSB9OworICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpCisgICAgICAgIG1f
Y2hhbmdlRmxhZ3MucmVtb3ZlKHN0cm9rZUZsYWdzKTsKKworICAgIGF1dG8gZmlsbEZsYWdzID0g
eyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRl
cm5DaGFuZ2UgfTsKKyAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoZmlsbEZsYWdzKSkKKyAgICAg
ICAgbV9jaGFuZ2VGbGFncy5yZW1vdmUoZmlsbEZsYWdzKTsKKworICAgIGF1dG8gY29tcG9zaXRl
T3BlcmF0b3JGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlv
bkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9OworICAgIGlm
IChmbGFncy5jb250YWluc0FueShjb21wb3NpdGVPcGVyYXRvckZsYWdzKSkKKyAgICAgICAgbV9j
aGFuZ2VGbGFncy5yZW1vdmUoY29tcG9zaXRlT3BlcmF0b3JGbGFncyk7CisKKyAgICBtX2NoYW5n
ZUZsYWdzLmFkZChmbGFncyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6
OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFu
Z2UpKQorICAgICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KCptX3N0YXRlLnN0cm9rZUdy
YWRpZW50LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworCisgICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRl
cm5DaGFuZ2UpKQorICAgICAgICBjb250ZXh0LnNldFN0cm9rZVBhdHRlcm4oKm1fc3RhdGUuc3Ry
b2tlUGF0dGVybik7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKKyAgICAgICAgY29udGV4dC5zZXRGaWxs
R3JhZGllbnQoKm1fc3RhdGUuZmlsbEdyYWRpZW50LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNl
VHJhbnNmb3JtKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbFBh
dHRlcm4oKm1fc3RhdGUuZmlsbFBhdHRlcm4pOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdl
KSkKKyAgICAgICAgY29udGV4dC5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0YXRlLnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKQorICAgICAgICBjb250ZXh0LnNl
dFNoYWRvdyhtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRl
LnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd1JhZGl1c01vZGUpOworCisgICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0No
YW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKG1fc3RhdGUuc3Ryb2tl
VGhpY2tuZXNzKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQorICAgICAgICBjb250ZXh0LnNldFRl
eHREcmF3aW5nTW9kZShtX3N0YXRlLnRleHREcmF3aW5nTW9kZSk7CisKKyAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2Up
KQorICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwor
CisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxDb2xvckNoYW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fc3RhdGUuZmls
bENvbG9yKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5
bGUobV9zdGF0ZS5zdHJva2VTdHlsZSk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQorICAgICAgICBjb250ZXh0
LnNldEZpbGxSdWxlKG1fc3RhdGUuZmlsbFJ1bGUpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKKyAgICAgICAgY29u
dGV4dC5zZXRBbHBoYShtX3N0YXRlLmFscGhhKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5n
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KSkKKyAgICAgICAgY29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24obV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgbV9z
dGF0ZS5ibGVuZE1vZGUpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCisgICAgICAgIGNvbnRleHQu
c2V0U2hvdWxkQW50aWFsaWFzKG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKKworICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhG
b250c0NoYW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0U2hvdWxkU21vb3RoRm9udHMobV9zdGF0
ZS5zaG91bGRTbW9vdGhGb250cyk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkK
KyAgICAgICAgY29udGV4dC5zZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMobV9zdGF0ZS5z
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKKyAg
ICAgICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhtX3N0YXRlLmRyYXdMdW1pbmFuY2VN
YXNrKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkKKyAgICAgICAgY29udGV4dC5z
ZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSk7CisKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNo
YW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0VXNlRGFya0FwcGVhcmFuY2UobV9zdGF0ZS51c2VE
YXJrQXBwZWFyYW5jZSk7CisjZW5kaWYKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKK3sKKyAgICB0cy5kdW1wUHJvcGVydHko
ImNoYW5nZS1mbGFncyIsIG1fY2hhbmdlRmxhZ3MudG9SYXcoKSk7CisKKyAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFu
Z2UpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1ncmFkaWVudCIsIG1fc3RhdGUu
c3Ryb2tlR3JhZGllbnQuZ2V0KCkpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKQorICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInN0cm9rZS1wYXR0ZXJuIiwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuLmdldCgp
KTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpGaWxsR3JhZGllbnRDaGFuZ2UpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtZ3Jh
ZGllbnQiLCBtX3N0YXRlLmZpbGxHcmFkaWVudC5nZXQoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKQor
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtcGF0dGVybiIsIG1fc3RhdGUuZmlsbFBhdHRl
cm4uZ2V0KCkpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpIHsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFk
b3ctYmx1ciIsIG1fc3RhdGUuc2hhZG93Qmx1cik7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
c2hhZG93LW9mZnNldCIsIG1fc3RhdGUuc2hhZG93T2Zmc2V0KTsKKyAgICAgICAgdHMuZHVtcFBy
b3BlcnR5KCJzaGFkb3ctY29sb3IiLCBtX3N0YXRlLnNoYWRvd0NvbG9yKTsKKyAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIiwgbV9zdGF0ZS5zaGFkb3dS
YWRpdXNNb2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSk7CisgICAgfQorCisgICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNr
bmVzc0NoYW5nZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXRoaWNrbmVzcyIs
IG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQorICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoInRleHQtZHJhd2luZy1tb2RlIiwgbV9zdGF0ZS50ZXh0RHJhd2lu
Z01vZGUudG9SYXcoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQorICAgICAgICB0cy5kdW1wUHJvcGVy
dHkoInN0cm9rZS1jb2xvciIsIG1fc3RhdGUuc3Ryb2tlQ29sb3IpOworCisgICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkp
CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZmlsbC1jb2xvciIsIG1fc3RhdGUuZmlsbENvbG9y
KTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdHJva2VTdHlsZUNoYW5nZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXN0
eWxlIiwgbV9zdGF0ZS5zdHJva2VTdHlsZSk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQorICAgICAgICB0cy5k
dW1wUHJvcGVydHkoImZpbGwtcnVsZSIsIG1fc3RhdGUuZmlsbFJ1bGUpOworCisgICAgaWYgKG1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkK
KyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbHBoYSIsIG1fc3RhdGUuYWxwaGEpOworCisgICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0
ZU9wZXJhdGlvbkNoYW5nZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9zaXRlLW9w
ZXJhdG9yIiwgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvcik7CisKKyAgICBpZiAobV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKSkKKyAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgbV9zdGF0ZS5ibGVuZE1vZGUpOwor
CisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZEFudGlhbGlhc0NoYW5nZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLWFu
dGlhbGlhcyIsIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKKworICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5n
ZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXNtb290aC1mb250cyIsIG1fc3Rh
dGUuc2hvdWxkU21vb3RoRm9udHMpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkp
CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXN1YnBpeGVsLXF1YW50aXplLWZvbnRz
IiwgbV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOworCisgICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zQ2hhbmdlKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3dzLWlnbm9yZS10
cmFuc2Zvcm1zIiwgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisKKyAgICBpZiAo
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5j
ZU1hc2tDaGFuZ2UpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImRyYXctbHVtaW5hbmNlLW1h
c2siLCBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrKTsKKworI2lmIEhBVkUoT1NfREFSS19NT0RF
X1NVUFBPUlQpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJ1c2UtZGFyay1hcHBlYXJhbmNlIiwgbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZSk7CisjZW5k
aWYKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlKQoreworICAgIHN0YXRlQ2hhbmdl
LmR1bXAodHMpOworICAgIHJldHVybiB0czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM1NTExOWY2Njk5N2QyY2ZjMDlmZjFmZGJmMDdmOGE1
OTU5NTk2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmgKQEAgLTAsMCArMSwxNzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZs
b2F0U2l6ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKyNpbmNsdWRlICJXaW5kUnVs
ZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBHcmFkaWVudDsKK2NsYXNzIFBhdHRlcm47
CisKK3N0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CisgICAgV0VCQ09SRV9FWFBPUlQgR3Jh
cGhpY3NDb250ZXh0U3RhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+R3JhcGhpY3NDb250ZXh0
U3RhdGUoKTsKKworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhp
Y3NDb250ZXh0U3RhdGUmJik7CisKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSYgb3BlcmF0b3I9
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIG9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKTsKKworICAg
IGVudW0gQ2hhbmdlIDogdWludDMyX3QgeworICAgICAgICBTdHJva2VHcmFkaWVudENoYW5nZSAg
ICAgICAgICAgICAgICAgICAgPSAxIDw8IDAsCisgICAgICAgIFN0cm9rZVBhdHRlcm5DaGFuZ2Ug
ICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMSwKKyAgICAgICAgRmlsbEdyYWRpZW50Q2hhbmdl
ICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAyLAorICAgICAgICBGaWxsUGF0dGVybkNoYW5n
ZSAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDMsCisgICAgICAgIFN0cm9rZVRoaWNrbmVz
c0NoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEgPDwgNCwKKyAgICAgICAgU3Ryb2tlQ29sb3JD
aGFuZ2UgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA1LAorICAgICAgICBTdHJva2VTdHls
ZUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDYsCisgICAgICAgIEZpbGxDb2xv
ckNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgNywKKyAgICAgICAgRmlsbFJ1
bGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA4LAorICAgICAgICBTaGFk
b3dDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDksCisgICAgICAgIFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlICAgICAgICAgICA9IDEgPDwgMTAsCisgICAgICAg
IEFscGhhQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTEsCisgICAg
ICAgIENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSAgICAgICAgICAgICAgICA9IDEgPDwgMTIsCisg
ICAgICAgIEJsZW5kTW9kZUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTMs
CisgICAgICAgIFRleHREcmF3aW5nTW9kZUNoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEgPDwg
MTQsCisgICAgICAgIFNob3VsZEFudGlhbGlhc0NoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEg
PDwgMTUsCisgICAgICAgIFNob3VsZFNtb290aEZvbnRzQ2hhbmdlICAgICAgICAgICAgICAgICA9
IDEgPDwgMTYsCisgICAgICAgIFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSAgICAg
ICA9IDEgPDwgMTcsCisgICAgICAgIERyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlICAgICAgICAgICAg
ICAgICA9IDEgPDwgMTgsCisgICAgICAgIEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2Ug
ICAgICAgICA9IDEgPDwgMTksCisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICAg
ICAgVXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UgICAgICAgICAgICAgICAgID0gMSA8PCAyMCwKKyNl
bmRpZgorICAgIH07CisgICAgdXNpbmcgU3RhdGVDaGFuZ2VGbGFncyA9IE9wdGlvblNldDxDaGFu
Z2U+OworCisgICAgdm9pZCBtZXJnZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CisKKyAgICBSZWZQdHI8
R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50OworICAgIFJlZlB0cjxQYXR0ZXJuPiBzdHJva2VQYXR0
ZXJuOworICAgIAorICAgIFJlZlB0cjxHcmFkaWVudD4gZmlsbEdyYWRpZW50OworICAgIFJlZlB0
cjxQYXR0ZXJuPiBmaWxsUGF0dGVybjsKKworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CisK
KyAgICBDb2xvciBzdHJva2VDb2xvciB7IENvbG9yOjpibGFjayB9OworICAgIENvbG9yIGZpbGxD
b2xvciB7IENvbG9yOjpibGFjayB9OworICAgIENvbG9yIHNoYWRvd0NvbG9yOworCisgICAgQWZm
aW5lVHJhbnNmb3JtIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm07CisgICAgQWZmaW5lVHJh
bnNmb3JtIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtOworCisgICAgZmxvYXQgc3Ryb2tlVGhp
Y2tuZXNzIHsgMCB9OworICAgIGZsb2F0IHNoYWRvd0JsdXIgeyAwIH07CisgICAgZmxvYXQgYWxw
aGEgeyAxIH07CisKKyAgICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSB7IFNvbGlkU3Ryb2tlIH07
CisgICAgV2luZFJ1bGUgZmlsbFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OworCisgICAgVGV4
dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlIHsgVGV4dERyYXdpbmdNb2RlOjpGaWxs
IH07CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgeyBDb21wb3NpdGVP
cGVyYXRvcjo6U291cmNlT3ZlciB9OworICAgIEJsZW5kTW9kZSBibGVuZE1vZGUgeyBCbGVuZE1v
ZGU6Ok5vcm1hbCB9OworICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkgeyBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdCB9OworICAgIFNoYWRvd1Jh
ZGl1c01vZGUgc2hhZG93UmFkaXVzTW9kZSB7IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQgfTsK
KworICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzIDogMTsKKyAgICBib29sIHNob3VsZFNtb290aEZv
bnRzIDogMTsKKyAgICBib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA6IDE7CisgICAg
Ym9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA6IDE7CisgICAgYm9vbCBkcmF3THVtaW5hbmNl
TWFzayA6IDE7CisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICBib29sIHVzZURh
cmtBcHBlYXJhbmNlIDogMTsKKyNlbmRpZgorfTsKKworc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlQ2hhbmdlIHsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSgpID0gZGVmYXVsdDsK
KyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQor
ICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCisgICAgICAgICwgbV9jaGFuZ2VGbGFncyhmbGFncykK
KyAgICB7CisgICAgfQorCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MgY2hhbmdlc0Zyb21TdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpIGNvbnN0Owor
CisgICAgdm9pZCBhY2N1bXVsYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Q7CisgICAgCisgICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYp
IGNvbnN0OworCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbV9zdGF0ZTsKKyAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBtX2NoYW5nZUZsYWdzOworfTsKKworV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlJik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNoYW5nZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UsCisgICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUdyYWRpZW50Q2hh
bmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJv
a2VQYXR0ZXJuQ2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpGaWxsR3JhZGllbnRDaGFuZ2UsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxQYXR0ZXJuQ2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UsCisgICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUNvbG9yQ2hh
bmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJv
a2VTdHlsZUNoYW5nZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6RmlsbENvbG9yQ2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpGaWxsUnVsZUNoYW5nZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U2hhZG93Q2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSwK
KyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6QWxwaGFDaGFu
Z2UsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNvbXBv
c2l0ZU9wZXJhdGlvbkNoYW5nZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6QmxlbmRNb2RlQ2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UsCisgICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlhbGlhc0NoYW5nZSwK
KyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU21v
b3RoRm9udHNDaGFuZ2UsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSwKKyAgICAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2Us
CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQor
ICAgICAgICAsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlVzZURhcmtB
cHBlYXJhbmNlQ2hhbmdlCisjZW5kaWYKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjliNGI4ZDAwYTFjNzZjN2I3NTQz
ZDYzMGE2ODFlMjc0ZWEwMDZlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIuaApAQCAtMCwwICsxLDE0
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgYm9vbCBz
YXZlQW5kUmVzdG9yZSA9IHRydWUpCisgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAg
ICAgICwgbV9zYXZlQW5kUmVzdG9yZShzYXZlQW5kUmVzdG9yZSkKKyAgICB7CisgICAgICAgIGlm
IChtX3NhdmVBbmRSZXN0b3JlKQorICAgICAgICAgICAgbV9jb250ZXh0LnNhdmUoKTsKKyAgICB9
CisgICAgCisgICAgfkdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIoKQorICAgIHsKKyAgICAgICAg
aWYgKG1fc2F2ZUFuZFJlc3RvcmUpCisgICAgICAgICAgICBtX2NvbnRleHQucmVzdG9yZSgpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHNhdmUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3Nh
dmVBbmRSZXN0b3JlKTsKKyAgICAgICAgbV9jb250ZXh0LnNhdmUoKTsKKyAgICAgICAgbV9zYXZl
QW5kUmVzdG9yZSA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCByZXN0b3JlKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3NhdmVBbmRSZXN0b3JlKTsKKyAgICAgICAgbV9jb250ZXh0LnJlc3Rv
cmUoKTsKKyAgICAgICAgbV9zYXZlQW5kUmVzdG9yZSA9IGZhbHNlOworICAgIH0KKyAgICAKKyAg
ICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiAmbV9jb250ZXh0OyB9
CisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRleHQ7CisgICAgYm9vbCBt
X3NhdmVBbmRSZXN0b3JlOworfTsKKworY2xhc3MgVHJhbnNwYXJlbmN5TGF5ZXJTY29wZSB7Citw
dWJsaWM6CisgICAgVHJhbnNwYXJlbmN5TGF5ZXJTY29wZShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IGFscGhhLCBib29sIGJlZ2luTGF5ZXIgPSB0cnVlKQorICAgICAgICA6IG1fY29u
dGV4dChjb250ZXh0KQorICAgICAgICAsIG1fYWxwaGEoYWxwaGEpCisgICAgICAgICwgbV9iZWdh
bkxheWVyKGJlZ2luTGF5ZXIpCisgICAgeworICAgICAgICBpZiAoYmVnaW5MYXllcikKKyAgICAg
ICAgICAgIG1fY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG1fYWxwaGEpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGJlZ2luTGF5ZXIoZmxvYXQgYWxwaGEpCisgICAgeworICAgICAgICBt
X2FscGhhID0gYWxwaGE7CisgICAgICAgIG1fY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVy
KG1fYWxwaGEpOworICAgICAgICBtX2JlZ2FuTGF5ZXIgPSB0cnVlOworICAgIH0KKyAgICAKKyAg
ICB+VHJhbnNwYXJlbmN5TGF5ZXJTY29wZSgpCisgICAgeworICAgICAgICBpZiAobV9iZWdhbkxh
eWVyKQorICAgICAgICAgICAgbV9jb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAg
fQorCitwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OworICAgIGZsb2F0
IG1fYWxwaGE7CisgICAgYm9vbCBtX2JlZ2FuTGF5ZXI7Cit9OworCitjbGFzcyBHcmFwaGljc0Nv
bnRleHRTdGF0ZVN0YWNrQ2hlY2tlciB7CitwdWJsaWM6CisgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTdGFja0NoZWNrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorICAgICAgICA6IG1fY29u
dGV4dChjb250ZXh0KQorICAgICAgICAsIG1fc3RhY2tTaXplKGNvbnRleHQuc3RhY2tTaXplKCkp
CisgICAgeyB9CisgICAgCisgICAgfkdyYXBoaWNzQ29udGV4dFN0YXRlU3RhY2tDaGVja2VyKCkK
KyAgICB7CisgICAgICAgIGlmIChtX2NvbnRleHQuc3RhY2tTaXplKCkgIT0gbV9zdGFja1NpemUp
CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkdyYXBoaWNzQ29udGV4dCAlcCBzdGFjayBjaGFu
Z2VkIGJ5ICVkIiwgJm1fY29udGV4dCwgKGludCltX2NvbnRleHQuc3RhY2tTaXplKCkgLSAoaW50
KW1fc3RhY2tTaXplKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0JiBt
X2NvbnRleHQ7CisgICAgdW5zaWduZWQgbV9zdGFja1NpemU7Cit9OworCitjbGFzcyBJbnRlcnBv
bGF0aW9uUXVhbGl0eU1haW50YWluZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwg
SW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHlUb1VzZSkKKyAgICAgICAg
OiBtX2dyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQpCisgICAgICAgICwgbV9jdXJyZW50
SW50ZXJwb2xhdGlvblF1YWxpdHkoZ3JhcGhpY3NDb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoKSkKKyAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlZChpbnRlcnBv
bGF0aW9uUXVhbGl0eVRvVXNlICE9IEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0ICYmIG1f
Y3VycmVudEludGVycG9sYXRpb25RdWFsaXR5ICE9IGludGVycG9sYXRpb25RdWFsaXR5VG9Vc2Up
CisgICAgeworICAgICAgICBpZiAobV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQpCisgICAg
ICAgICAgICBtX2dyYXBoaWNzQ29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KGlu
dGVycG9sYXRpb25RdWFsaXR5VG9Vc2UpOworICAgIH0KKworICAgIGV4cGxpY2l0IEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwg
c3RkOjpvcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW50ZXJwb2xhdGlvblF1YWxpdHkp
CisgICAgICAgIDogSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyKGdyYXBoaWNzQ29udGV4
dCwgaW50ZXJwb2xhdGlvblF1YWxpdHkgPyBpbnRlcnBvbGF0aW9uUXVhbGl0eS52YWx1ZSgpIDog
Z3JhcGhpY3NDb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSkKKyAgICB7CisgICAg
fQorCisgICAgfkludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcigpCisgICAgeworICAgICAg
ICBpZiAobV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQpCisgICAgICAgICAgICBtX2dyYXBo
aWNzQ29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KG1fY3VycmVudEludGVycG9s
YXRpb25RdWFsaXR5KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0JiBt
X2dyYXBoaWNzQ29udGV4dDsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2N1cnJlbnRJbnRl
cnBvbGF0aW9uUXVhbGl0eTsKKyAgICBib29sIG1faW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2Vk
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCmluZGV4IDRkMjA0ZTk3ZTVjNTQ0ZDc3NmJm
YTdmMzBhYWNjMWI3YzQ2M2UwZTAuLmRlYzQzNDcwMmNmNzZhODlmYTg2NTMwYzMzNzZkOGJhYzVk
OWNhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c1R5cGVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2lu
ZFJ1bGUuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTczLDYgKzc0LDQzIEBAIGVudW0gY2xh
c3MgQmxlbmRNb2RlIDogdWludDhfdCB7CiAgICAgUGx1c0xpZ2h0ZXIKIH07CiAKK3N0cnVjdCBE
b2N1bWVudE1hcmtlckxpbmVTdHlsZSB7CisgICAgZW51bSBjbGFzcyBNb2RlIDogdWludDhfdCB7
CisgICAgICAgIFRleHRDaGVja2luZ0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMsCisg
ICAgICAgIFNwZWxsaW5nLAorICAgICAgICBHcmFtbWFyLAorICAgICAgICBBdXRvY29ycmVjdGlv
blJlcGxhY2VtZW50LAorICAgICAgICBEaWN0YXRpb25BbHRlcm5hdGl2ZXMKKyAgICB9IG1vZGU7
CisgICAgYm9vbCBzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSB7IGZhbHNlIH07CisKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RG9jdW1lbnRNYXJrZXJM
aW5lU3R5bGU+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgordm9pZCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtb2RlOworICAgIGVuY29kZXIgPDwgc2hvdWxkVXNl
RGFya0FwcGVhcmFuY2U7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlv
bmFsPERvY3VtZW50TWFya2VyTGluZVN0eWxlPiBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxNb2RlPiBtb2RlOwor
ICAgIGRlY29kZXIgPj4gbW9kZTsKKyAgICBpZiAoIW1vZGUpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZFVzZURhcmtBcHBlYXJh
bmNlOworICAgIGRlY29kZXIgPj4gc2hvdWxkVXNlRGFya0FwcGVhcmFuY2U7CisgICAgaWYgKCFz
aG91bGRVc2VEYXJrQXBwZWFyYW5jZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiB7IHsgKm1vZGUsICpzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSB9IH07Cit9CisK
IGVudW0gY2xhc3MgR3JhZGllbnRTcHJlYWRNZXRob2QgOiB1aW50OF90IHsKICAgICBQYWQsCiAg
ICAgUmVmbGVjdCwKQEAgLTEwNSw2ICsxNDMsMjggQEAgZW51bSBIb3Jpem9udGFsQWxpZ25tZW50
IHsKICAgICBBbGlnbkhDZW50ZXIKIH07CiAKK2VudW0gU3Ryb2tlU3R5bGUgeworICAgIE5vU3Ry
b2tlLAorICAgIFNvbGlkU3Ryb2tlLAorICAgIERvdHRlZFN0cm9rZSwKKyAgICBEYXNoZWRTdHJv
a2UsCisgICAgRG91YmxlU3Ryb2tlLAorICAgIFdhdnlTdHJva2UsCit9OworCitlbnVtIGNsYXNz
IFRleHREcmF3aW5nTW9kZSA6IHVpbnQ4X3QgeworICAgIEZpbGwgPSAxIDw8IDAsCisgICAgU3Ry
b2tlID0gMSA8PCAxLAorfTsKK3VzaW5nIFRleHREcmF3aW5nTW9kZUZsYWdzID0gT3B0aW9uU2V0
PFRleHREcmF3aW5nTW9kZT47CisKKy8vIExlZ2FjeSBzaGFkb3cgYmx1ciByYWRpdXMgaXMgdXNl
ZCBmb3IgY2FudmFzLCBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgorLy8gSXQgaGFzIGRpZmZlcmVu
dCB0cmVhdG1lbnQgb2YgcmFkaWkgPiA4cHguCitlbnVtIGNsYXNzIFNoYWRvd1JhZGl1c01vZGUg
OiBib29sIHsKKyAgICBEZWZhdWx0LAorICAgIExlZ2FjeQorfTsKKwogZW51bSBUZXh0QmFzZWxp
bmUgewogICAgIEFscGhhYmV0aWNUZXh0QmFzZWxpbmUsCiAgICAgVG9wVGV4dEJhc2VsaW5lLApA
QCAtMjE5LDQgKzI3OSwzNSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
OkxpbmVKb2luPiB7CiAgICAgPjsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU+IHsKKyAgICB1c2luZyB2YWx1
ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpN
b2RlLAorICAgIFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpUZXh0Q2hl
Y2tpbmdEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzLAorICAgIFdlYkNvcmU6OkRvY3Vt
ZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpTcGVsbGluZywKKyAgICBXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6R3JhbW1hciwKKyAgICBXZWJDb3JlOjpEb2N1bWVudE1h
cmtlckxpbmVTdHlsZTo6TW9kZTo6QXV0b2NvcnJlY3Rpb25SZXBsYWNlbWVudCwKKyAgICBXZWJD
b3JlOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVz
CisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U3Ry
b2tlU3R5bGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYkNvcmU6
OlN0cm9rZVN0eWxlLAorICAgIFdlYkNvcmU6OlN0cm9rZVN0eWxlOjpOb1N0cm9rZSwKKyAgICBX
ZWJDb3JlOjpTdHJva2VTdHlsZTo6U29saWRTdHJva2UsCisgICAgV2ViQ29yZTo6U3Ryb2tlU3R5
bGU6OkRvdHRlZFN0cm9rZSwKKyAgICBXZWJDb3JlOjpTdHJva2VTdHlsZTo6RGFzaGVkU3Ryb2tl
LAorICAgIFdlYkNvcmU6OlN0cm9rZVN0eWxlOjpEb3VibGVTdHJva2UsCisgICAgV2ViQ29yZTo6
U3Ryb2tlU3R5bGU6OldhdnlTdHJva2UKKyAgICA+OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpUZXh0RHJhd2luZ01vZGU+IHsKKyAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpUZXh0RHJhd2luZ01vZGUsCisgICAgICAg
IFdlYkNvcmU6OlRleHREcmF3aW5nTW9kZTo6RmlsbCwKKyAgICAgICAgV2ViQ29yZTo6VGV4dERy
YXdpbmdNb2RlOjpTdHJva2UKKyAgICA+OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTAxZmQzOTQ2NDMzOWQyZDRkNTRiYTkzNjRjNTk0
NWNmYWQ3ZDVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1HcmFwaGljc0NvbnRleHQuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIkRJQlBpeGVsRGF0YS5oIgordHlwZWRlZiBzdHJ1
Y3QgSERDX18qIEhEQzsKKyNpZiAhVVNFKENHKQorLy8gVUludDggaXMgZGVmaW5lZCBpbiBDb3Jl
Rm91bmRhdGlvbi9DRkJhc2UuaAordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJbnQ4OworI2VuZGlm
CisjZW5kaWYKKworI2lmIFVTRShDRykKK3VzaW5nIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0ID0g
c3RydWN0IENHQ29udGV4dDsKKyNlbGlmIFVTRShDQUlSTykKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIEdyYXBoaWNzQ29udGV4dENhaXJvOworfQordXNpbmcgUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWlybzsKKyNlbHNlCit1c2luZyBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dCA9IHZvaWQ7CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRCb3hJdGVyYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dEJveEl0ZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdlNjhl
MzhmMDIzN2IwMjIwY2Y2NWJhMmMxMGU4ODg4ZGQ0OTg1NAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRCb3hJdGVyYXRvci5oCkBAIC0wLDAg
KzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJUZXh0UnVuLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgVGV4dEJveEl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBUZXh0Qm94SXRlcmF0
b3IoKQorICAgICAgICA6IG1fdGV4dFJ1bigwKQorICAgICAgICAsIG1fb2Zmc2V0KDApCisgICAg
eworICAgIH0KKworICAgIFRleHRCb3hJdGVyYXRvcihjb25zdCBUZXh0UnVuKiB0ZXh0UnVuLCB1
bnNpZ25lZCBvZmZzZXQpCisgICAgICAgIDogbV90ZXh0UnVuKHRleHRSdW4pCisgICAgICAgICwg
bV9vZmZzZXQob2Zmc2V0KQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBvZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIHZvaWQgaW5jcmVtZW50KCkgeyBtX29mZnNl
dCsrOyB9CisgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX3RleHRSdW4gfHwgbV9v
ZmZzZXQgPj0gbV90ZXh0UnVuLT5sZW5ndGgoKTsgfQorICAgIFVDaGFyIGN1cnJlbnQoKSBjb25z
dCB7IHJldHVybiAoKm1fdGV4dFJ1bilbbV9vZmZzZXRdOyB9CisgICAgVUNoYXJEaXJlY3Rpb24g
ZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gYXRFbmQoKSA/IFVfT1RIRVJfTkVVVFJBTCA6IHVf
Y2hhckRpcmVjdGlvbihjdXJyZW50KCkpOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
VGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29m
ZnNldCA9PSBvdGhlci5tX29mZnNldCAmJiBtX3RleHRSdW4gPT0gb3RoZXIubV90ZXh0UnVuOwor
ICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVy
KSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KKworcHJpdmF0ZToKKyAgICBj
b25zdCBUZXh0UnVuKiBtX3RleHRSdW47CisgICAgdW5zaWduZWQgbV9vZmZzZXQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9DR0NvbnRleHRTdGF0ZVNhdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9DR0NvbnRleHRTdGF0ZVNhdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg1NmEw
NDM5M2ZkMjRlOTYyOGY2ZmU5MzQ2OWVlYmVhNGFiYjU5OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NHQ29udGV4dFN0YXRlU2F2ZXIuaApA
QCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShDRykKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBDR0NvbnRleHRTdGF0ZVNhdmVyIHsKK3B1YmxpYzoKKyAgICBDR0NvbnRl
eHRTdGF0ZVNhdmVyKENHQ29udGV4dFJlZiBjb250ZXh0LCBib29sIHNhdmVBbmRSZXN0b3JlID0g
dHJ1ZSkKKyAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAgICAgLCBtX3NhdmVBbmRS
ZXN0b3JlKHNhdmVBbmRSZXN0b3JlKQorICAgIHsKKyAgICAgICAgaWYgKG1fc2F2ZUFuZFJlc3Rv
cmUpCisgICAgICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKG1fY29udGV4dCk7CisgICAgfQor
ICAgIAorICAgIH5DR0NvbnRleHRTdGF0ZVNhdmVyKCkKKyAgICB7CisgICAgICAgIGlmIChtX3Nh
dmVBbmRSZXN0b3JlKQorICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShtX2NvbnRl
eHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNhdmUoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFtX3NhdmVBbmRSZXN0b3JlKTsKKyAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShtX2NvbnRl
eHQpOworICAgICAgICBtX3NhdmVBbmRSZXN0b3JlID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lk
IHJlc3RvcmUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2F2ZUFuZFJlc3RvcmUpOworICAg
ICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKG1fY29udGV4dCk7CisgICAgICAgIG1fc2F2ZUFu
ZFJlc3RvcmUgPSBmYWxzZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBkaWRTYXZlKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX3NhdmVBbmRSZXN0b3JlOworICAgIH0KKyAgICAKK3By
aXZhdGU6CisgICAgQ0dDb250ZXh0UmVmIG1fY29udGV4dDsKKyAgICBib29sIG1fc2F2ZUFuZFJl
c3RvcmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ0cp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuaAppbmRleCA0NjhhNDRiYWE4NmVlNTI2MTlkMjU1ZjkzOTQzYTk3NTViYWM5
ZmFiLi5lM2YxZWI3YmY1NWI2Yjg5Mzk2N2FkN2FiZDVmZDVjYTcwYWYzNTZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmgKQEAgLTI1LDUzICsyNSwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNH
Q29udGV4dFN0YXRlU2F2ZXIuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DR0FmZmluZVRy
YW5zZm9ybSBnZXRVc2VyVG9CYXNlQ1RNKENHQ29udGV4dFJlZik7Ci0KLWNsYXNzIENHQ29udGV4
dFN0YXRlU2F2ZXIgewotcHVibGljOgotICAgIENHQ29udGV4dFN0YXRlU2F2ZXIoQ0dDb250ZXh0
UmVmIGNvbnRleHQsIGJvb2wgc2F2ZUFuZFJlc3RvcmUgPSB0cnVlKQotICAgICAgICA6IG1fY29u
dGV4dChjb250ZXh0KQotICAgICAgICAsIG1fc2F2ZUFuZFJlc3RvcmUoc2F2ZUFuZFJlc3RvcmUp
Ci0gICAgewotICAgICAgICBpZiAobV9zYXZlQW5kUmVzdG9yZSkKLSAgICAgICAgICAgIENHQ29u
dGV4dFNhdmVHU3RhdGUobV9jb250ZXh0KTsKLSAgICB9Ci0gICAgCi0gICAgfkNHQ29udGV4dFN0
YXRlU2F2ZXIoKQotICAgIHsKLSAgICAgICAgaWYgKG1fc2F2ZUFuZFJlc3RvcmUpCi0gICAgICAg
ICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKG1fY29udGV4dCk7Ci0gICAgfQotICAgIAotICAg
IHZvaWQgc2F2ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fc2F2ZUFuZFJlc3RvcmUpOwot
ICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKG1fY29udGV4dCk7Ci0gICAgICAgIG1fc2F2ZUFu
ZFJlc3RvcmUgPSB0cnVlOwotICAgIH0KLQotICAgIHZvaWQgcmVzdG9yZSgpCi0gICAgewotICAg
ICAgICBBU1NFUlQobV9zYXZlQW5kUmVzdG9yZSk7Ci0gICAgICAgIENHQ29udGV4dFJlc3RvcmVH
U3RhdGUobV9jb250ZXh0KTsKLSAgICAgICAgbV9zYXZlQW5kUmVzdG9yZSA9IGZhbHNlOwotICAg
IH0KLSAgICAKLSAgICBib29sIGRpZFNhdmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fc2F2ZUFuZFJlc3RvcmU7Ci0gICAgfQotICAgIAotcHJpdmF0ZToKLSAgICBDR0NvbnRleHRS
ZWYgbV9jb250ZXh0OwotICAgIGJvb2wgbV9zYXZlQW5kUmVzdG9yZTsKLX07Ci0KIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dENHIDogcHVibGljIEdyYXBoaWNzQ29udGV4dCB7
CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0Q0coQ0dDb250ZXh0UmVmKTsKQEAgLTE3OSw1
ICsxMzgsNyBAQCBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSog
bV9kYXRhIHsgbnVsbHB0ciB9OwogfTsKIAorQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNlclRvQmFz
ZUNUTShDR0NvbnRleHRSZWYpOworCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454859</attachid>
            <date>2022-03-16 10:37:55 -0700</date>
            <delta_ts>2022-03-16 11:13:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237944-20220316103753.patch</filename>
            <type>text/plain</type>
            <size>87711</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYxYzkxNGQ3NWIzNDQ1
M2VkMjI3NWQ3MjU2NTY0YTEwYWE0MTEyNS4uZjU1MWM2MGQ1Y2U2MmY2ODkxMWYyNmQ1OWZjMzAw
ZTU5ZmE1YzI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIyLTAzLTE2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TW92ZSBvdGhlciBjbGFzc2VzIG91dCBvZiBHcmFwaGljc0NvbnRleHQuaAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3OTQ0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHN0ZXAgdG93YXJk
cyBtYWtpbmcgR3JhcGhpY3NDb250ZXh0U3RhdGUgYSBjbGFzcyBhbmQgbW92ZQorICAgICAgICBt
b3JlIGZ1bmN0aW9uYWxpdGllcyB0byBpdC4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6Cisg
ICAgICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5j
bWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0
ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6b2Zm
c2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6
aW5jcmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6
YXRFbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9y
OjpjdXJyZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVy
YXRvcjo6ZGlyZWN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRC
b3hJdGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJnZUNoYW5n
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2U6OmNoYW5nZXNGcm9tU3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFjY3VtdWxhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFwcGx5IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpkdW1w
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6OmVuY29kZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZGVjb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyOjpHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI6On5HcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXI6OnNhdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcjo6cmVzdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyOjpjb250ZXh0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUxheWVyU2NvcGU6OlRyYW5zcGFyZW5j
eUxheWVyU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5TGF5
ZXJTY29wZTo6YmVnaW5MYXllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc3Bh
cmVuY3lMYXllclNjb3BlOjp+VHJhbnNwYXJlbmN5TGF5ZXJTY29wZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZVN0YWNrQ2hlY2tlcjo6R3JhcGhpY3ND
b250ZXh0U3RhdGVTdGFja0NoZWNrZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGVTdGFja0NoZWNrZXI6On5HcmFwaGljc0NvbnRleHRTdGF0ZVN0YWNr
Q2hlY2tlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcnBvbGF0aW9uUXVhbGl0
eU1haW50YWluZXI6OkludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXI6On5JbnRlcnBv
bGF0aW9uUXVhbGl0eU1haW50YWluZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdlc0Zyb21TdGF0ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YXBw
bHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6
OmR1bXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGVDaGFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyOjpHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI6On5HcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI6OnNhdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcjo6cmVzdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyOjpjb250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUxheWVyU2NvcGU6OlRyYW5zcGFyZW5jeUxheWVy
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5TGF5ZXJTY29wZTo6YmVnaW5M
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc3BhcmVuY3lMYXllclNjb3BlOjp+VHJhbnNw
YXJlbmN5TGF5ZXJTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZVN0YWNrQ2hlY2tlcjo6R3JhcGhpY3NDb250ZXh0U3RhdGVTdGFja0NoZWNrZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVTdGFja0NoZWNrZXI6On5HcmFwaGljc0Nv
bnRleHRTdGF0ZVN0YWNrQ2hlY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcnBvbGF0aW9u
UXVhbGl0eU1haW50YWluZXI6OkludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXI6On5JbnRlcnBvbGF0
aW9uUXVhbGl0eU1haW50YWluZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dEJveEl0ZXJh
dG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94
SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9yOjpvZmZzZXQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9yOjppbmNyZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dEJveEl0ZXJhdG9yOjphdEVuZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0Qm94SXRlcmF0b3I6OmN1cnJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dEJveEl0ZXJhdG9yOjpkaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRCb3hJdGVyYXRvcjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ0dDb250ZXh0U3RhdGVTYXZlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNHQ29udGV4dFN0YXRlU2F2ZXI6OkNHQ29udGV4dFN0YXRlU2F2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0dDb250ZXh0U3RhdGVTYXZlcjo6fkNHQ29udGV4dFN0YXRlU2F2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0dDb250ZXh0U3RhdGVTYXZlcjo6c2F2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDR0NvbnRleHRTdGF0ZVNhdmVyOjpyZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29u
dGV4dFN0YXRlU2F2ZXI6OmRpZFNhdmUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbnRleHRT
dGF0ZVNhdmVyOjpDR0NvbnRleHRTdGF0ZVNhdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNHQ29udGV4dFN0YXRlU2F2ZXI6On5DR0NvbnRleHRTdGF0ZVNhdmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNHQ29udGV4dFN0YXRlU2F2ZXI6OnNhdmUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q0dDb250ZXh0U3RhdGVTYXZlcjo6cmVzdG9yZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDR0NvbnRleHRTdGF0ZVNhdmVyOjpkaWRTYXZlIGNvbnN0KTog
RGVsZXRlZC4KKwogMjAyMi0wMy0xNCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBbbW9kZWxdIDxtb2RlbCBpbnRlcmFjdGl2ZT4gZG9lc24ndCBhbGxvdyBt
b2RlbCB0byBiZSByb3RhdGVkIG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNzM2NDQyYTA4
YTc0NTAwYTM1MmYwNGMyZTEwNmQ4YzQxZTdhNGZjNS4uY2JkNTJjMWQzOWE4MWQxNWZjNzc1ZjY1
MzYzYzc5NTI5YTY5YjgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNDkxLDYgKzE0OTEsOCBA
QCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0xTdGF0ZS5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUu
aAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCkBAIC0xNTUwLDYgKzE1NTIsNyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1BdWRpb1RyYWNrQ29uZmlndXJhdGlvbi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1Db2xvclNwYWNlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
aAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0LmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybUltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdl
QnVmZmVyQmFja2VuZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCA2
MmQ0M2U2YTNhOTMyMTVmZjA3NTdhNDc4ODRhOGI2Yzg0NGI4OTZkLi5kMDU2NWJlYzkyMWYwY2Q5
MTVlNDg4NWZkZjZiYTMyYTNhNmJkM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4u
Y21ha2UKQEAgLTE1Niw2ICsxNTYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJl
ZUhvc3RDbGllbnQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5
ZXJXaW4uaAogCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ0dDb250ZXh0U3RhdGVTYXZlci5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFkaWVudFJlbmRlcmVyQ0cuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggNWRlZTc1
NDA1MzU3OWY1NWI1NWYyZmU0YWQwZGQwYTY5ZGViZmQ0YS4uZTRmNjI3MTkwY2M4OWJlODZkMDY5
ODFmMzFkMDEzMzY1OTJlOTY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTY0MCw2
ICs2NDAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVmlkZW9Db250YWluZXJMYXllci5oCiAK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9DR0NvbnRleHRTdGF0ZVNhdmVyLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQ
b29sLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggNWM3YjczZWIyMDVlMDllYzI0NmUwMTFkMGE1MDJkY2Q0
YzFkY2E1MC4uNDNjYzEyZjdjMjU5YTUwNjZmYjMzMzlmZjhmMjI0ZWY2YTg2Y2ZiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTIwNDUsNiArMjA0NSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
SW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRTdGF0ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgyOTYy
YmEwNGUyZmZkN2ZmYTBjNmU2MWQ5YzljMmMxN2E1ZjY0NjcuLjFlMmYyOGU1ZWQxOTIyYzgwM2Iw
OTNhMzc4M2MxMmU3NzRmODZhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzMzUsNiArMjMzNSwxMSBAQAogCQk3MjE0NDMz
NDIyM0VDOTE2MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlPd25lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0IC8q
IFNWR1Byb3BlcnR5T3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MjFCNDk3NDI1MTJCQTNCMDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNr
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjFC
NDk3MDI1MTJBQzA0MDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIyODNGMEUyMzBCMjY4QzAw
RjVEODI4IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQ
YWludGluZ09wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk3MjJBRjJERTI3RTFDMjA2MDA3OEQ5OTcgLyogR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzIyQUYyREIyN0UxQzIwNDAwNzhEOTk3IC8qIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjJBRjJE
RjI3RTFDMjA2MDA3OEQ5OTcgLyogR3JhcGhpY3NDb250ZXh0U3RhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMkFGMkRDMjdFMUMyMDUwMDc4RDk5
NyAvKiBHcmFwaGljc0NvbnRleHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTcyMkFGMkUyMjdFMUM0MDUwMDc4RDk5NyAvKiBQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzIyQUYyRTEyN0UxQzQwMzAwNzhEOTk3IC8qIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NzIyQUYyRTQyN0UxQ0YxMzAwNzhEOTk3IC8qIFRleHRCb3hJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIyQUYyRTMyN0UxQ0YxMTAwNzhE
OTk3IC8qIFRleHRCb3hJdGVyYXRvci5oICovOyB9OworCQk3MjJBRjJFNjI3RTFEMEExMDA3OEQ5
OTcgLyogQ0dDb250ZXh0U3RhdGVTYXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzIyQUYyRTUyN0UxRDA5RTAwNzhEOTk3IC8qIENHQ29udGV4dFN0
YXRlU2F2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3MjQ2OTYzQjI3NUM1RkE2MDBBOTE1NkEgLyogQ1NTRmlsdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjUzRkI4MzIxM0IxQkI4MDBDNDBE
MzQgLyogQ1NTRmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzI0Njk2M0QyNzVDNjE0NDAwQTkxNTZBIC8qIEZpbHRlckVmZmVjdFZlY3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIxNEI5
QjcyNzQ0NThGQTAwM0JFNkRGIC8qIEZpbHRlckVmZmVjdFZlY3Rvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNDY5NjNFMjc1QzYxNjcwMEE5
MTU2QSAvKiBGaWx0ZXJJbWFnZVZlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzJCNEVGN0MyNzRFRTM3RjAwMjkzQzJGIC8qIEZpbHRlckltYWdl
VmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTExMzI1LDYgKzExMzMwLDEyIEBACiAJCTcyMUI0OTZGMjUxMkFDMDQwMEZFOUQzQiAvKiBJ
bWFnZUJpdG1hcEJhY2tpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCaXRtYXBCYWNr
aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxQjQ5NzAyNTEyQUMwNDAw
RkU5RDNCIC8qIEltYWdlQml0bWFwQmFja2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJpdG1h
cEJhY2tpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyQTgxNUMyMzhGRDUw
NTAwQzAwNTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbmltYXRp
b25GcmFtZVJhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIyQUYyREIyN0Ux
QzIwNDAwNzhEOTk3IC8qIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MjJBRjJEQzI3RTFDMjA1MDA3OEQ5OTcgLyogR3JhcGhp
Y3NDb250ZXh0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhp
Y3NDb250ZXh0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIyQUYyREQy
N0UxQzIwNTAwNzhEOTk3IC8qIEdyYXBoaWNzQ29udGV4dFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dFN0YXRlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIyQUYyRTEyN0UxQzQwMzAwNzhEOTk3IC8qIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcy
MkFGMkUzMjdFMUNGMTEwMDc4RDk5NyAvKiBUZXh0Qm94SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJveEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcyMkFGMkU1MjdFMUQwOUUwMDc4RDk5NyAvKiBDR0NvbnRleHRTdGF0ZVNh
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENHQ29udGV4dFN0YXRlU2F2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0MzVFRjQyNzNEMDc2NzAwMDVF
N0VFIC8qIEZpbHRlckltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlckltYWdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNDM1RUY1MjczRDA3NjcwMDA1RTdFRSAvKiBGaWx0
ZXJJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWx0ZXJJbWFnZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVEMzI5MUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVu
ZE1pbk1heC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRCbGVu
ZE1pbk1heC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODgxMCw2ICsyODgy
MSw3IEBACiAJCUIyNzUzNTI5MEIwNTM4MTQwMDJDRTY0RiAvKiBjZyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNzIyQUYyRTUyN0UxRDA5RTAwNzhEOTk3
IC8qIENHQ29udGV4dFN0YXRlU2F2ZXIuaCAqLywKIAkJCQkwRkNGMzMyMzBGMkI5NzE1MDA0QjY3
OTUgLyogQ29sb3JDRy5jcHAgKi8sCiAJCQkJQkNBRkVEQjMyNTk2OEQwQjAwMzBFNkFBIC8qIENv
bG9yU3BhY2VDRy5jcHAgKi8sCiAJCQkJQkNBRkVEQjIyNTk2OEQwQjAwMzBFNkFBIC8qIENvbG9y
U3BhY2VDRy5oICovLApAQCAtMjkwNDMsNiArMjkwNTUsOSBAQAogCQkJCTdCQjM0QTQ3MjUzNzc2
QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcCAqLywKIAkJ
CQk3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJh
Y3Rvci5oICovLAogCQkJCTdCOTVDRkU5Mjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRl
eHRHTFN0YXRlLmggKi8sCisJCQkJNzIyQUYyREQyN0UxQzIwNTAwNzhEOTk3IC8qIEdyYXBoaWNz
Q29udGV4dFN0YXRlLmNwcCAqLywKKwkJCQk3MjJBRjJEQzI3RTFDMjA1MDA3OEQ5OTcgLyogR3Jh
cGhpY3NDb250ZXh0U3RhdGUuaCAqLywKKwkJCQk3MjJBRjJEQjI3RTFDMjA0MDA3OEQ5OTcgLyog
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlci5oICovLAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUx
RDY4OSAvKiBHcmFwaGljc0xheWVyLmNwcCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2
ODkgLyogR3JhcGhpY3NMYXllci5oICovLAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAv
KiBHcmFwaGljc0xheWVyQ2xpZW50LmggKi8sCkBAIC0yOTE0Myw2ICsyOTE1OCw3IEBACiAJCQkJ
QkNBNTU5MTIyNjNEQkQ3OTAwN0YxOUIzIC8qIFBpeGVsRm9ybWF0LmggKi8sCiAJCQkJQ0REMDhB
QkYyNzdFNTRGMDAwRUEzNzU1IC8qIFBsYXRmb3JtQXVkaW9UcmFja0NvbmZpZ3VyYXRpb24uaCAq
LywKIAkJCQlCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmgg
Ki8sCisJCQkJNzIyQUYyRTEyN0UxQzQwMzAwNzhEOTk3IC8qIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0LmggKi8sCiAJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2Uu
aCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFnZUJ1ZmZl
ci5oICovLAogCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVm
ZmVyQmFja2VuZC5oICovLApAQCAtMjkxNzcsNiArMjkxOTMsNyBAQAogCQkJCTA4NzU1OEM0MTNC
NEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCAqLywKIAkJ
CQk5NUU5RjQ0NDI3QzlBMzlCMDA5NDUzMzcgLyogU3lzdGVtSW1hZ2UuaCAqLywKIAkJCQkzQkI2
QjgwRjIyQTdEMzExMDAzQTJBNjkgLyogVGFiU2l6ZS5oICovLAorCQkJCTcyMkFGMkUzMjdFMUNG
MTEwMDc4RDk5NyAvKiBUZXh0Qm94SXRlcmF0b3IuaCAqLywKIAkJCQkzNzZEQ0NFMDEzQjRGOTY2
MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi8sCiAJCQkJQTgyNEI0NjQwRTJFRjJFQTAwODFBN0I3
IC8qIFRleHRSdW4uaCAqLywKIAkJCQlDRDFFNzM0NjE2N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRy
YWNrUmVwcmVzZW50YXRpb24uY3BwICovLApAQCAtMzM4NzMsNiArMzM4OTAsNyBAQAogCQkJCUNE
RTNBRTEyMjRCNDkxNkEwMDEyOEU3RSAvKiBDRE1VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVGQTkwNENBMTc4RTYxRjUwMDRDOEEyRCAvKiBDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkxQjhGMEI1MjE5NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZVN1bW1h
cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMkFGMkU2MjdFMUQwQTEwMDc4RDk5NyAvKiBDR0Nv
bnRleHRTdGF0ZVNhdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM2RkQxNTE2Qzc4MjY1MDBG
ODg3QzEgLyogQ2hhbmdlVmVyc2lvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2OURE
MTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTc4NUQ5MTUyNEI0RDFDQTAwMTREQjIxIC8qIENoYW5uZWxDb3VudE1vZGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzQ3OTgsNiArMzQ4MTYsOCBAQAogCQkJCTQ5QzdCOUZDMTA0MkQzNjUw
MDA5RDQ0NyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0I5NUNGRUIyNzU0RkY2RTAwMDA2MENFIC8qIEdyYXBoaWNzQ29udGV4dEdMU3RhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4MEQ2NzA4MEU5RTlERUIwMEU0MjBGMCAvKiBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGVDRy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIyQUYyREYyN0UxQzIw
NjAwNzhEOTk3IC8qIEdyYXBoaWNzQ29udGV4dFN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
MjJBRjJERTI3RTFDMjA2MDA3OEQ5OTcgLyogR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBCMEQwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFw
aGljc0xheWVyQ0EuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4
OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM2NzA1LDYgKzM2
NzI1LDcgQEAKIAkJCQlCQ0FBNDg3MDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZh
Y3RvcnlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjNGNzdCMTQ4NENBNEMwMDhDNkRCRSAv
KiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxOTUxRDU0
RjVGQjAwREQ3QzY4IC8qIFBsYXRmb3JtR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIy
QUYyRTIyN0UxQzQwNTAwNzhEOTk3IC8qIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ3NzA1QzcyNTUyNzZDRDAwMUQwQzk0IC8qIFBsYXRmb3Jt
SW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MDY0MEFGMjQwNzU4MkQwMEFBRTA0
NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzc4
NSw2ICszNzgwNiw3IEBACiAJCQkJQ0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NERDRTYxODgxMDUxRDAw
M0VFREJCIC8qIFRleHRBdXRvU2l6aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEzNDBE
MDA2QzFEMDBFRjZGMjYgLyogVGV4dEJvdW5kYXJpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTcy
MkFGMkU0MjdFMUNGMTMwMDc4RDk5NyAvKiBUZXh0Qm94SXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0NDBERjU2MjZFQjUzRTAwMDRBRjA2QiAvKiBUZXh0Qm94UGFpbnRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTQ0N0Y1QjMyNjZDRjYzRDAwMTMzRjAwIC8qIFRleHRCb3hTZWxlY3Rh
YmxlUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MTUxQkQ4MTJGMTU1OEYwMDVBMEY2NCAv
KiBUZXh0Q2hlY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAwYmIxMzU5
N2NlYTczNjlkYmJjNmUxNzI3ZjI2YzkyYjhmYjc1MTc2Li4zYzM3NGZkOWJhODI3Yzk0YjdmMzRi
NzQ0NmE1ZjdhYmM4YTNlODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDAzLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKICNpbmNsdWRlICJCaWRpUmVzb2x2ZXIuaCIKLSNpbmNs
dWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkZpbHRl
ckltYWdlLmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgpAQCAtMzksMzMzICszOCwx
MSBAQAogI2luY2x1ZGUgIk51bGxHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJSb3VuZGVk
UmVjdC5oIgogI2luY2x1ZGUgIlN5c3RlbUltYWdlLmgiCi0jaW5jbHVkZSAiVGV4dFJ1bi5oIgor
I2luY2x1ZGUgIlRleHRCb3hJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJl
YW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXh0Qm94SXRlcmF0b3Igewot
cHVibGljOgotICAgIFRleHRCb3hJdGVyYXRvcigpCi0gICAgICAgIDogbV90ZXh0UnVuKDApCi0g
ICAgICAgICwgbV9vZmZzZXQoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgVGV4dEJveEl0ZXJhdG9y
KGNvbnN0IFRleHRSdW4qIHRleHRSdW4sIHVuc2lnbmVkIG9mZnNldCkKLSAgICAgICAgOiBtX3Rl
eHRSdW4odGV4dFJ1bikKLSAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgewotICAgIH0K
LQotICAgIHVuc2lnbmVkIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9Ci0gICAg
dm9pZCBpbmNyZW1lbnQoKSB7IG1fb2Zmc2V0Kys7IH0KLSAgICBib29sIGF0RW5kKCkgY29uc3Qg
eyByZXR1cm4gIW1fdGV4dFJ1biB8fCBtX29mZnNldCA+PSBtX3RleHRSdW4tPmxlbmd0aCgpOyB9
Ci0gICAgVUNoYXIgY3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICgqbV90ZXh0UnVuKVttX29mZnNl
dF07IH0KLSAgICBVQ2hhckRpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBhdEVu
ZCgpID8gVV9PVEhFUl9ORVVUUkFMIDogdV9jaGFyRGlyZWN0aW9uKGN1cnJlbnQoKSk7IH0KLQot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0ICYmIG1fdGV4
dFJ1biA9PSBvdGhlci5tX3RleHRSdW47Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFRleHRCb3hJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90
aGVyKTsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IFRleHRSdW4qIG1fdGV4dFJ1bjsKLSAgICB1
bnNpZ25lZCBtX29mZnNldDsKLX07Ci0KLSNkZWZpbmUgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVS
VFkoZmxhZywgcHJvcGVydHkpIFwKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6ZmxhZykgJiYgKG1fc3RhdGUucHJvcGVydHkgIT0gc3RhdGUucHJv
cGVydHkpKSBcCi0gICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6
ZmxhZyk7Ci0KLUdyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSgpCi0g
ICAgOiBzaG91bGRBbnRpYWxpYXModHJ1ZSkKLSAgICAsIHNob3VsZFNtb290aEZvbnRzKHRydWUp
Ci0gICAgLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHModHJ1ZSkKLSAgICAsIHNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKGZhbHNlKQotICAgICwgZHJhd0x1bWluYW5jZU1hc2soZmFsc2UpCi17
Ci19Ci0KLUdyYXBoaWNzQ29udGV4dFN0YXRlOjp+R3JhcGhpY3NDb250ZXh0U3RhdGUoKSA9IGRl
ZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0ZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJikgPSBkZWZhdWx0Owot
R3JhcGhpY3NDb250ZXh0U3RhdGUmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRvcj0oY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7Ci1HcmFwaGljc0NvbnRleHRTdGF0
ZSYgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYm
KSA9IGRlZmF1bHQ7Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyhj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotewotICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0cm9rZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVy
bkNoYW5nZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpIHsKLSAg
ICAgICAgc3Ryb2tlQ29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKLSAgICAgICAgc3Ryb2tlR3Jh
ZGllbnQgPSBzdGF0ZS5zdHJva2VHcmFkaWVudDsKLSAgICAgICAgc3Ryb2tlUGF0dGVybiA9IHN0
YXRlLnN0cm9rZVBhdHRlcm47Ci0gICAgfQotCi0gICAgYXV0byBmaWxsRmxhZ3MgPSB7IEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpG
aWxsR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5n
ZSB9OwotICAgIGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxhZ3MpKSB7Ci0gICAgICAgIGZp
bGxDb2xvciA9IHN0YXRlLmZpbGxDb2xvcjsKLSAgICAgICAgZmlsbEdyYWRpZW50ID0gc3RhdGUu
ZmlsbEdyYWRpZW50OwotICAgICAgICBmaWxsUGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0ZXJuOwot
ICAgIH0KLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hh
ZG93Q2hhbmdlKSkgewotICAgICAgICBzaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFkb3dPZmZzZXQ7
Ci0gICAgICAgIHNoYWRvd0JsdXIgPSBzdGF0ZS5zaGFkb3dCbHVyOwotICAgICAgICBzaGFkb3dD
b2xvciA9IHN0YXRlLnNoYWRvd0NvbG9yOwotICAgICAgICBzaGFkb3dSYWRpdXNNb2RlID0gc3Rh
dGUuc2hhZG93UmFkaXVzTW9kZTsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAgICAgIHN0cm9r
ZVRoaWNrbmVzcyA9IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKLQotICAgIGlmIChmbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAg
ICAgdGV4dERyYXdpbmdNb2RlID0gc3RhdGUudGV4dERyYXdpbmdNb2RlOwotCi0gICAgaWYgKGZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCi0g
ICAgICAgIHN0cm9rZVN0eWxlID0gc3RhdGUuc3Ryb2tlU3R5bGU7Ci0KLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAg
ZmlsbFJ1bGUgPSBzdGF0ZS5maWxsUnVsZTsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKQotICAgICAgICBhbHBoYSA9IHN0YXRlLmFs
cGhhOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9k
ZUNoYW5nZSB9KSkgewotICAgICAgICBjb21wb3NpdGVPcGVyYXRvciA9IHN0YXRlLmNvbXBvc2l0
ZU9wZXJhdG9yOwotICAgICAgICBibGVuZE1vZGUgPSBzdGF0ZS5ibGVuZE1vZGU7Ci0gICAgfQot
Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRp
YWxpYXNDaGFuZ2UpKQotICAgICAgICBzaG91bGRBbnRpYWxpYXMgPSBzdGF0ZS5zaG91bGRBbnRp
YWxpYXM7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKLSAgICAgICAgc2hvdWxkU21vb3RoRm9udHMgPSBzdGF0
ZS5zaG91bGRTbW9vdGhGb250czsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAgICAgICAg
c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
aGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAgICAgIHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zID0gc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Ci0KLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkK
LSAgICAgICAgZHJhd0x1bWluYW5jZU1hc2sgPSBzdGF0ZS5kcmF3THVtaW5hbmNlTWFzazsKLQot
ICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eUNoYW5nZSkpCi0gICAgICAgIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkg
PSBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwotCi0jaWYgSEFWRShPU19EQVJLX01P
REVfU1VQUE9SVCkKLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKLSAgICAgICAgdXNlRGFya0FwcGVhcmFuY2UgPSBz
dGF0ZS51c2VEYXJrQXBwZWFyYW5jZTsKLSNlbmRpZgotfQotCi1HcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncyBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hhbmdlc0Zy
b21TdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpIGNvbnN0Ci17Ci0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3M7Ci0KLSAg
ICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VHcmFkaWVudENoYW5nZSwgc3Ryb2tl
R3JhZGllbnQpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVBhdHRlcm5D
aGFuZ2UsIHN0cm9rZVBhdHRlcm4pOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKEZp
bGxHcmFkaWVudENoYW5nZSwgZmlsbEdyYWRpZW50KTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9Q
Uk9QRVJUWShGaWxsUGF0dGVybkNoYW5nZSwgZmlsbFBhdHRlcm4pOwotCi0gICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkKLSAg
ICAgICAgJiYgKG1fc3RhdGUuc2hhZG93T2Zmc2V0ICE9IHN0YXRlLnNoYWRvd09mZnNldAotICAg
ICAgICAgICAgfHwgbV9zdGF0ZS5zaGFkb3dCbHVyICE9IHN0YXRlLnNoYWRvd0JsdXIKLSAgICAg
ICAgICAgIHx8IG1fc3RhdGUuc2hhZG93Q29sb3IgIT0gc3RhdGUuc2hhZG93Q29sb3IpKQotICAg
ICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7
Ci0KLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VUaGlja25lc3NDaGFuZ2Us
IHN0cm9rZVRoaWNrbmVzcyk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoVGV4dERy
YXdpbmdNb2RlQ2hhbmdlLCB0ZXh0RHJhd2luZ01vZGUpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VE
X1BST1BFUlRZKFN0cm9rZUNvbG9yQ2hhbmdlLCBzdHJva2VDb2xvcik7Ci0gICAgQ0hFQ0tfRk9S
X0NIQU5HRURfUFJPUEVSVFkoRmlsbENvbG9yQ2hhbmdlLCBmaWxsQ29sb3IpOwotICAgIENIRUNL
X0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVN0eWxlQ2hhbmdlLCBzdHJva2VTdHlsZSk7Ci0g
ICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFJ1bGVDaGFuZ2UsIGZpbGxSdWxlKTsK
LSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShBbHBoYUNoYW5nZSwgYWxwaGEpOwotCi0g
ICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2Rl
Q2hhbmdlIH0pCi0gICAgICAgICYmIChtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yICE9IHN0YXRl
LmNvbXBvc2l0ZU9wZXJhdG9yIHx8IG1fc3RhdGUuYmxlbmRNb2RlICE9IHN0YXRlLmJsZW5kTW9k
ZSkpIHsKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21w
b3NpdGVPcGVyYXRpb25DaGFuZ2UpOwotICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSk7Ci0gICAgfQotCi0gICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoU2hvdWxkQW50aWFsaWFzQ2hhbmdlLCBzaG91bGRBbnRpYWxpYXMpOwot
ICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFNtb290aEZvbnRzQ2hhbmdlLCBz
aG91bGRTbW9vdGhGb250cyk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoU2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMp
OwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
Q2hhbmdlLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURf
UFJPUEVSVFkoRHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UsIGRyYXdMdW1pbmFuY2VNYXNrKTsKLSAg
ICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hh
bmdlLCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKLQotI2lmIEhBVkUoT1NfREFSS19NT0RF
X1NVUFBPUlQpCi0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoVXNlRGFya0FwcGVhcmFu
Y2VDaGFuZ2UsIHVzZURhcmtBcHBlYXJhbmNlKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGNoYW5n
ZUZsYWdzOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphY2N1bXVsYXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCi17Ci0gICAgbV9zdGF0ZS5tZXJnZUNoYW5nZXMoc3Rh
dGUsIGZsYWdzKTsKLQotICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRp
ZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSB9Owot
ICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpCi0gICAgICAgIG1fY2hhbmdl
RmxhZ3MucmVtb3ZlKHN0cm9rZUZsYWdzKTsKLQotICAgIGF1dG8gZmlsbEZsYWdzID0geyBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RmlsbEdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFu
Z2UgfTsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoZmlsbEZsYWdzKSkKLSAgICAgICAgbV9j
aGFuZ2VGbGFncy5yZW1vdmUoZmlsbEZsYWdzKTsKLQotICAgIGF1dG8gY29tcG9zaXRlT3BlcmF0
b3JGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5n
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9OwotICAgIGlmIChmbGFn
cy5jb250YWluc0FueShjb21wb3NpdGVPcGVyYXRvckZsYWdzKSkKLSAgICAgICAgbV9jaGFuZ2VG
bGFncy5yZW1vdmUoY29tcG9zaXRlT3BlcmF0b3JGbGFncyk7Ci0KLSAgICBtX2NoYW5nZUZsYWdz
LmFkZChmbGFncyk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFwcGx5
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKLXsKLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKQot
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KCptX3N0YXRlLnN0cm9rZUdyYWRpZW50
LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOwotCi0gICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFu
Z2UpKQotICAgICAgICBjb250ZXh0LnNldFN0cm9rZVBhdHRlcm4oKm1fc3RhdGUuc3Ryb2tlUGF0
dGVybik7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGll
bnQoKm1fc3RhdGUuZmlsbEdyYWRpZW50LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNm
b3JtKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbFBhdHRlcm4o
Km1fc3RhdGUuZmlsbFBhdHRlcm4pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkKLSAg
ICAgICAgY29udGV4dC5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0YXRlLnNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFNoYWRv
dyhtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRv
d0NvbG9yLCBtX3N0YXRlLnNoYWRvd1JhZGl1c01vZGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkp
Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKG1fc3RhdGUuc3Ryb2tlVGhpY2tu
ZXNzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFRleHREcmF3
aW5nTW9kZShtX3N0YXRlLnRleHREcmF3aW5nTW9kZSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAg
ICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwotCi0gICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xv
ckNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fc3RhdGUuZmlsbENvbG9y
KTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdHJva2VTdHlsZUNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUobV9z
dGF0ZS5zdHJva2VTdHlsZSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZp
bGxSdWxlKG1fc3RhdGUuZmlsbFJ1bGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5z
ZXRBbHBoYShtX3N0YXRlLmFscGhhKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
QW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KSkKLSAgICAgICAgY29udGV4dC5z
ZXRDb21wb3NpdGVPcGVyYXRpb24obV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgbV9zdGF0ZS5i
bGVuZE1vZGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U2hv
dWxkQW50aWFsaWFzKG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKLQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0No
YW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0U2hvdWxkU21vb3RoRm9udHMobV9zdGF0ZS5zaG91
bGRTbW9vdGhGb250cyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKLSAgICAg
ICAgY29udGV4dC5zZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMobV9zdGF0ZS5zaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKLSAgICAgICAg
Y29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrKTsK
LQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7
Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGlmIChtX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkp
Ci0gICAgICAgIGNvbnRleHQuc2V0VXNlRGFya0FwcGVhcmFuY2UobV9zdGF0ZS51c2VEYXJrQXBw
ZWFyYW5jZSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6
ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKLXsKLSAgICB0cy5kdW1wUHJvcGVydHkoImNoYW5n
ZS1mbGFncyIsIG1fY2hhbmdlRmxhZ3MudG9SYXcoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKQot
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1ncmFkaWVudCIsIG1fc3RhdGUuc3Ryb2tl
R3JhZGllbnQuZ2V0KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJv
cGVydHkoInN0cm9rZS1wYXR0ZXJuIiwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuLmdldCgpKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxs
R3JhZGllbnRDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtZ3JhZGllbnQi
LCBtX3N0YXRlLmZpbGxHcmFkaWVudC5nZXQoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImZpbGwtcGF0dGVybiIsIG1fc3RhdGUuZmlsbFBhdHRlcm4uZ2V0
KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNoYWRvd0NoYW5nZSkpIHsKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3ctYmx1
ciIsIG1fc3RhdGUuc2hhZG93Qmx1cik7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93
LW9mZnNldCIsIG1fc3RhdGUuc2hhZG93T2Zmc2V0KTsKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJzaGFkb3ctY29sb3IiLCBtX3N0YXRlLnNoYWRvd0NvbG9yKTsKLSAgICAgICAgdHMuZHVtcFBy
b3BlcnR5KCJzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIiwgbV9zdGF0ZS5zaGFkb3dSYWRpdXNN
b2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSk7Ci0gICAgfQotCi0gICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0No
YW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXRoaWNrbmVzcyIsIG1fc3Rh
dGUuc3Ryb2tlVGhpY2tuZXNzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInRleHQtZHJhd2luZy1tb2RlIiwgbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUu
dG9SYXcoKSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0
cm9rZS1jb2xvciIsIG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpCi0gICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiZmlsbC1jb2xvciIsIG1fc3RhdGUuZmlsbENvbG9yKTsKLQot
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VTdHlsZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXN0eWxlIiwg
bV9zdGF0ZS5zdHJva2VTdHlsZSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImZpbGwtcnVsZSIsIG1fc3RhdGUuZmlsbFJ1bGUpOwotCi0gICAgaWYgKG1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJhbHBoYSIsIG1fc3RhdGUuYWxwaGEpOwotCi0gICAgaWYgKG1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJh
dGlvbkNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9zaXRlLW9wZXJhdG9y
IiwgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvcik7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKSkKLSAgICAgICAg
dHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgbV9zdGF0ZS5ibGVuZE1vZGUpOwotCi0gICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFu
dGlhbGlhc0NoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLWFudGlhbGlh
cyIsIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCi0g
ICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXNtb290aC1mb250cyIsIG1fc3RhdGUuc2hv
dWxkU21vb3RoRm9udHMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkpCi0gICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXN1YnBpeGVsLXF1YW50aXplLWZvbnRzIiwgbV9z
dGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3dzLWlnbm9yZS10cmFuc2Zv
cm1zIiwgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0KLSAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tD
aGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImRyYXctbHVtaW5hbmNlLW1hc2siLCBt
X3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrKTsKLQotI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBP
UlQpCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ1c2Ut
ZGFyay1hcHBlYXJhbmNlIiwgbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZSk7Ci0jZW5kaWYKLX0K
LQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlKQotewotICAgIHN0YXRlQ2hhbmdlLmR1bXAo
dHMpOwotICAgIHJldHVybiB0czsKLX0KLQogR3JhcGhpY3NDb250ZXh0Ojp+R3JhcGhpY3NDb250
ZXh0KCkKIHsKICAgICBBU1NFUlQobV9zdGFjay5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBmYjk1ZGQy
NWIyNzFkZWI5ZmE4NWZmMmQ5ZjFmNzQ3MTZhMDY2YmFlLi4zOWYzMDFkZTYwZmM1Mzk0YzJjYTE0
NGVlNzUxMDhiM2ZjNmQzZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDMtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTMwLDQ5ICszMCwxOCBAQAogI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
IgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCi0jaW5j
bHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFN0YXRlLmgi
CiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5j
bHVkZSAiUGF0dGVybi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiUmVuZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAot
I2lmIFVTRShDRykKLXR5cGVkZWYgc3RydWN0IENHQ29udGV4dCBQbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dDsKLSNlbGlmIFVTRShDQUlSTykKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEdyYXBo
aWNzQ29udGV4dENhaXJvOwotfQotdHlwZWRlZiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWly
byBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKLSNlbHNlCi10eXBlZGVmIHZvaWQgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQ7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlICJE
SUJQaXhlbERhdGEuaCIKLXR5cGVkZWYgc3RydWN0IEhEQ19fKiBIREM7Ci0jaWYgIVVTRShDRykK
LS8vIFVJbnQ4IGlzIGRlZmluZWQgaW4gQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgKLXR5cGVkZWYg
dW5zaWduZWQgY2hhciBVSW50ODsKLSNlbmRpZgotI2VuZGlmCi0KLS8vIFgxMSBoZWFkZXJzIGRl
ZmluZSBhIGJ1bmNoIG9mIG1hY3JvcyB3aXRoIGNvbW1vbiB0ZXJtcywgaW50ZXJmZXJpbmcgd2l0
aCBXZWJDb3JlIGFuZCBXVEYgZW51bSB2YWx1ZXMuCi0vLyBBcyBhIHdvcmthcm91bmQsIHdlIGV4
cGxpY2l0bHkgdW5kZWYgdGhlbSBoZXJlLgotI2lmIGRlZmluZWQoTm9uZSkKLSN1bmRlZiBOb25l
Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKEJlbG93KQotI3VuZGVmIEJlbG93Ci0jZW5kaWYKLSNpZiBk
ZWZpbmVkKFN1Y2Nlc3MpCi0jdW5kZWYgU3VjY2VzcwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwpAQCAtOTEsMTY5ICs2MCw4IEBAIGNsYXNz
IFN5c3RlbUltYWdlOwogY2xhc3MgVGV4dFJ1bjsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4
OwogCi1uYW1lc3BhY2UgRGlzcGxheUxpc3QgewotY2xhc3MgUmVjb3JkZXI7Ci19Ci0KLWVudW0g
Y2xhc3MgVGV4dERyYXdpbmdNb2RlIDogdWludDhfdCB7Ci0gICAgRmlsbCA9IDEgPDwgMCwKLSAg
ICBTdHJva2UgPSAxIDw8IDEsCi19OwotdXNpbmcgVGV4dERyYXdpbmdNb2RlRmxhZ3MgPSBPcHRp
b25TZXQ8VGV4dERyYXdpbmdNb2RlPjsKLQotLy8gTGVnYWN5IHNoYWRvdyBibHVyIHJhZGl1cyBp
cyB1c2VkIGZvciBjYW52YXMsIGFuZCAtd2Via2l0LWJveC1zaGFkb3cuCi0vLyBJdCBoYXMgZGlm
ZmVyZW50IHRyZWF0bWVudCBvZiByYWRpaSA+IDhweC4KLWVudW0gY2xhc3MgU2hhZG93UmFkaXVz
TW9kZSA6IGJvb2wgewotICAgIERlZmF1bHQsCi0gICAgTGVnYWN5Ci19OwotCi1lbnVtIFN0cm9r
ZVN0eWxlIHsKLSAgICBOb1N0cm9rZSwKLSAgICBTb2xpZFN0cm9rZSwKLSAgICBEb3R0ZWRTdHJv
a2UsCi0gICAgRGFzaGVkU3Ryb2tlLAotICAgIERvdWJsZVN0cm9rZSwKLSAgICBXYXZ5U3Ryb2tl
LAotfTsKLQotc3RydWN0IERvY3VtZW50TWFya2VyTGluZVN0eWxlIHsKLSAgICBlbnVtIGNsYXNz
IE1vZGUgOiB1aW50OF90IHsKLSAgICAgICAgVGV4dENoZWNraW5nRGljdGF0aW9uUGhyYXNlV2l0
aEFsdGVybmF0aXZlcywKLSAgICAgICAgU3BlbGxpbmcsCi0gICAgICAgIEdyYW1tYXIsCi0gICAg
ICAgIEF1dG9jb3JyZWN0aW9uUmVwbGFjZW1lbnQsCi0gICAgICAgIERpY3RhdGlvbkFsdGVybmF0
aXZlcwotICAgIH0gbW9kZTsKLSAgICBib29sIHNob3VsZFVzZURhcmtBcHBlYXJhbmNlIHsgZmFs
c2UgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxEb2N1bWVudE1hcmtlckxpbmVTdHlsZT4gZGVjb2RlKERlY29kZXImKTsKLX07Ci0KLXRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Ci12b2lkIERvY3VtZW50TWFya2VyTGluZVN0eWxlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1vZGU7Ci0gICAgZW5j
b2RlciA8PCBzaG91bGRVc2VEYXJrQXBwZWFyYW5jZTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KLXN0ZDo6b3B0aW9uYWw8RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU+IERvY3VtZW50TWFy
a2VyTGluZVN0eWxlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBzdGQ6Om9wdGlv
bmFsPE1vZGU+IG1vZGU7Ci0gICAgZGVjb2RlciA+PiBtb2RlOwotICAgIGlmICghbW9kZSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc2hv
dWxkVXNlRGFya0FwcGVhcmFuY2U7Ci0gICAgZGVjb2RlciA+PiBzaG91bGRVc2VEYXJrQXBwZWFy
YW5jZTsKLSAgICBpZiAoIXNob3VsZFVzZURhcmtBcHBlYXJhbmNlKQotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7ICptb2RlLCAqc2hvdWxkVXNlRGFya0FwcGVh
cmFuY2UgfX07Ci19Ci0KIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTsKIAotc3Ry
dWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFwaGljc0NvbnRleHRTdGF0ZSgp
OwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZShHcmFwaGljc0NvbnRl
eHRTdGF0ZSYmKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRvcj0oY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgb3BlcmF0b3I9KEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpOwotCi0gICAgZW51bSBD
aGFuZ2UgOiB1aW50MzJfdCB7Ci0gICAgICAgIFN0cm9rZUdyYWRpZW50Q2hhbmdlICAgICAgICAg
ICAgICAgICAgICA9IDEgPDwgMCwKLSAgICAgICAgU3Ryb2tlUGF0dGVybkNoYW5nZSAgICAgICAg
ICAgICAgICAgICAgID0gMSA8PCAxLAotICAgICAgICBGaWxsR3JhZGllbnRDaGFuZ2UgICAgICAg
ICAgICAgICAgICAgICAgPSAxIDw8IDIsCi0gICAgICAgIEZpbGxQYXR0ZXJuQ2hhbmdlICAgICAg
ICAgICAgICAgICAgICAgICA9IDEgPDwgMywKLSAgICAgICAgU3Ryb2tlVGhpY2tuZXNzQ2hhbmdl
ICAgICAgICAgICAgICAgICAgID0gMSA8PCA0LAotICAgICAgICBTdHJva2VDb2xvckNoYW5nZSAg
ICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDUsCi0gICAgICAgIFN0cm9rZVN0eWxlQ2hhbmdl
ICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgNiwKLSAgICAgICAgRmlsbENvbG9yQ2hhbmdl
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA3LAotICAgICAgICBGaWxsUnVsZUNoYW5n
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDgsCi0gICAgICAgIFNoYWRvd0NoYW5n
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgOSwKLSAgICAgICAgU2hhZG93c0ln
bm9yZVRyYW5zZm9ybXNDaGFuZ2UgICAgICAgICAgID0gMSA8PCAxMCwKLSAgICAgICAgQWxwaGFD
aGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxMSwKLSAgICAgICAgQ29t
cG9zaXRlT3BlcmF0aW9uQ2hhbmdlICAgICAgICAgICAgICAgID0gMSA8PCAxMiwKLSAgICAgICAg
QmxlbmRNb2RlQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxMywKLSAgICAg
ICAgVGV4dERyYXdpbmdNb2RlQ2hhbmdlICAgICAgICAgICAgICAgICAgID0gMSA8PCAxNCwKLSAg
ICAgICAgU2hvdWxkQW50aWFsaWFzQ2hhbmdlICAgICAgICAgICAgICAgICAgID0gMSA8PCAxNSwK
LSAgICAgICAgU2hvdWxkU21vb3RoRm9udHNDaGFuZ2UgICAgICAgICAgICAgICAgID0gMSA8PCAx
NiwKLSAgICAgICAgU2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlICAgICAgID0gMSA8
PCAxNywKLSAgICAgICAgRHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UgICAgICAgICAgICAgICAgID0g
MSA8PCAxOCwKLSAgICAgICAgSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSAgICAgICAg
ID0gMSA8PCAxOSwKLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgICAgICBVc2VE
YXJrQXBwZWFyYW5jZUNoYW5nZSAgICAgICAgICAgICAgICAgPSAxIDw8IDIwLAotI2VuZGlmCi0g
ICAgfTsKLSAgICB1c2luZyBTdGF0ZUNoYW5nZUZsYWdzID0gT3B0aW9uU2V0PENoYW5nZT47Ci0K
LSAgICB2b2lkIG1lcmdlQ2hhbmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKLQotICAgIFJlZlB0cjxHcmFkaWVu
dD4gc3Ryb2tlR3JhZGllbnQ7Ci0gICAgUmVmUHRyPFBhdHRlcm4+IHN0cm9rZVBhdHRlcm47Ci0g
ICAgCi0gICAgUmVmUHRyPEdyYWRpZW50PiBmaWxsR3JhZGllbnQ7Ci0gICAgUmVmUHRyPFBhdHRl
cm4+IGZpbGxQYXR0ZXJuOwotCi0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKLQotICAgIENv
bG9yIHN0cm9rZUNvbG9yIHsgQ29sb3I6OmJsYWNrIH07Ci0gICAgQ29sb3IgZmlsbENvbG9yIHsg
Q29sb3I6OmJsYWNrIH07Ci0gICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0KLSAgICBBZmZpbmVUcmFu
c2Zvcm0gc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0g
ZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0KLSAgICBmbG9hdCBzdHJva2VUaGlja25lc3Mg
eyAwIH07Ci0gICAgZmxvYXQgc2hhZG93Qmx1ciB7IDAgfTsKLSAgICBmbG9hdCBhbHBoYSB7IDEg
fTsKLQotICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlIHsgU29saWRTdHJva2UgfTsKLSAgICBX
aW5kUnVsZSBmaWxsUnVsZSB7IFdpbmRSdWxlOjpOb25aZXJvIH07Ci0KLSAgICBUZXh0RHJhd2lu
Z01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUgeyBUZXh0RHJhd2luZ01vZGU6OkZpbGwgfTsKLSAg
ICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciB7IENvbXBvc2l0ZU9wZXJhdG9y
OjpTb3VyY2VPdmVyIH07Ci0gICAgQmxlbmRNb2RlIGJsZW5kTW9kZSB7IEJsZW5kTW9kZTo6Tm9y
bWFsIH07Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSB7IEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0IH07Ci0gICAgU2hhZG93UmFkaXVzTW9k
ZSBzaGFkb3dSYWRpdXNNb2RlIHsgU2hhZG93UmFkaXVzTW9kZTo6RGVmYXVsdCB9OwotCi0gICAg
Ym9vbCBzaG91bGRBbnRpYWxpYXMgOiAxOwotICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgOiAx
OwotICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIDogMTsKLSAgICBib29sIHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zIDogMTsKLSAgICBib29sIGRyYXdMdW1pbmFuY2VNYXNrIDog
MTsKLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGJvb2wgdXNlRGFya0FwcGVh
cmFuY2UgOiAxOwotI2VuZGlmCi19OwotCi1zdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2UgewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKCkgPSBkZWZhdWx0OwotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCi0gICAgICAg
IDogbV9zdGF0ZShzdGF0ZSkKLSAgICAgICAgLCBtX2NoYW5nZUZsYWdzKGZsYWdzKQotICAgIHsK
LSAgICB9Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFu
Z2VzRnJvbVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJikgY29uc3Q7Ci0KLSAgICB2
b2lkIGFjY3VtdWxhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7Ci0gICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdDsKLSAgICAKLSAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Q7
Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRlOwotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIG1fY2hhbmdlRmxhZ3M7Ci19OwotCi1XVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGVDaGFuZ2UmKTsKLQogY2xhc3MgR3JhcGhpY3NDb250ZXh0IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShHcmFwaGljc0NvbnRleHQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzogICAKQEAgLTU3MCwxODIgKzM3OCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NvbnRl
bnRmdWxQYWludERldGVjdGVkIHsgZmFsc2UgfTsKIH07CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBib29s
IHNhdmVBbmRSZXN0b3JlID0gdHJ1ZSkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICwg
bV9zYXZlQW5kUmVzdG9yZShzYXZlQW5kUmVzdG9yZSkKLSAgICB7Ci0gICAgICAgIGlmIChtX3Nh
dmVBbmRSZXN0b3JlKQotICAgICAgICAgICAgbV9jb250ZXh0LnNhdmUoKTsKLSAgICB9Ci0gICAg
Ci0gICAgfkdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIoKQotICAgIHsKLSAgICAgICAgaWYgKG1f
c2F2ZUFuZFJlc3RvcmUpCi0gICAgICAgICAgICBtX2NvbnRleHQucmVzdG9yZSgpOwotICAgIH0K
LSAgICAKLSAgICB2b2lkIHNhdmUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX3NhdmVBbmRS
ZXN0b3JlKTsKLSAgICAgICAgbV9jb250ZXh0LnNhdmUoKTsKLSAgICAgICAgbV9zYXZlQW5kUmVz
dG9yZSA9IHRydWU7Ci0gICAgfQotCi0gICAgdm9pZCByZXN0b3JlKCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3NhdmVBbmRSZXN0b3JlKTsKLSAgICAgICAgbV9jb250ZXh0LnJlc3RvcmUoKTsK
LSAgICAgICAgbV9zYXZlQW5kUmVzdG9yZSA9IGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiAmbV9jb250ZXh0OyB9Ci0KLXBy
aXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRleHQ7Ci0gICAgYm9vbCBtX3NhdmVB
bmRSZXN0b3JlOwotfTsKLQotY2xhc3MgVHJhbnNwYXJlbmN5TGF5ZXJTY29wZSB7Ci1wdWJsaWM6
Ci0gICAgVHJhbnNwYXJlbmN5TGF5ZXJTY29wZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IGFscGhhLCBib29sIGJlZ2luTGF5ZXIgPSB0cnVlKQotICAgICAgICA6IG1fY29udGV4dChj
b250ZXh0KQotICAgICAgICAsIG1fYWxwaGEoYWxwaGEpCi0gICAgICAgICwgbV9iZWdhbkxheWVy
KGJlZ2luTGF5ZXIpCi0gICAgewotICAgICAgICBpZiAoYmVnaW5MYXllcikKLSAgICAgICAgICAg
IG1fY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG1fYWxwaGEpOwotICAgIH0KLSAgICAK
LSAgICB2b2lkIGJlZ2luTGF5ZXIoZmxvYXQgYWxwaGEpCi0gICAgewotICAgICAgICBtX2FscGhh
ID0gYWxwaGE7Ci0gICAgICAgIG1fY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG1fYWxw
aGEpOwotICAgICAgICBtX2JlZ2FuTGF5ZXIgPSB0cnVlOwotICAgIH0KLSAgICAKLSAgICB+VHJh
bnNwYXJlbmN5TGF5ZXJTY29wZSgpCi0gICAgewotICAgICAgICBpZiAobV9iZWdhbkxheWVyKQot
ICAgICAgICAgICAgbV9jb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwotICAgIGZsb2F0IG1fYWxw
aGE7Ci0gICAgYm9vbCBtX2JlZ2FuTGF5ZXI7Ci19OwotCi1jbGFzcyBHcmFwaGljc0NvbnRleHRT
dGF0ZVN0YWNrQ2hlY2tlciB7Ci1wdWJsaWM6Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTdGFj
a0NoZWNrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotICAgICAgICA6IG1fY29udGV4dChj
b250ZXh0KQotICAgICAgICAsIG1fc3RhY2tTaXplKGNvbnRleHQuc3RhY2tTaXplKCkpCi0gICAg
eyB9Ci0gICAgCi0gICAgfkdyYXBoaWNzQ29udGV4dFN0YXRlU3RhY2tDaGVja2VyKCkKLSAgICB7
Ci0gICAgICAgIGlmIChtX2NvbnRleHQuc3RhY2tTaXplKCkgIT0gbV9zdGFja1NpemUpCi0gICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIkdyYXBoaWNzQ29udGV4dCAlcCBzdGFjayBjaGFuZ2VkIGJ5
ICVkIiwgJm1fY29udGV4dCwgKGludCltX2NvbnRleHQuc3RhY2tTaXplKCkgLSAoaW50KW1fc3Rh
Y2tTaXplKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRl
eHQ7Ci0gICAgdW5zaWduZWQgbV9zdGFja1NpemU7Ci19OwotCi1jbGFzcyBJbnRlcnBvbGF0aW9u
UXVhbGl0eU1haW50YWluZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IEludGVycG9sYXRpb25R
dWFsaXR5TWFpbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgSW50ZXJw
b2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHlUb1VzZSkKLSAgICAgICAgOiBtX2dy
YXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQpCi0gICAgICAgICwgbV9jdXJyZW50SW50ZXJw
b2xhdGlvblF1YWxpdHkoZ3JhcGhpY3NDb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHko
KSkKLSAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlZChpbnRlcnBvbGF0aW9u
UXVhbGl0eVRvVXNlICE9IEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0ICYmIG1fY3VycmVu
dEludGVycG9sYXRpb25RdWFsaXR5ICE9IGludGVycG9sYXRpb25RdWFsaXR5VG9Vc2UpCi0gICAg
ewotICAgICAgICBpZiAobV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQpCi0gICAgICAgICAg
ICBtX2dyYXBoaWNzQ29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KGludGVycG9s
YXRpb25RdWFsaXR5VG9Vc2UpOwotICAgIH0KLQotICAgIGV4cGxpY2l0IEludGVycG9sYXRpb25R
dWFsaXR5TWFpbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgc3RkOjpv
cHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAg
ICAgIDogSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyKGdyYXBoaWNzQ29udGV4dCwgaW50
ZXJwb2xhdGlvblF1YWxpdHkgPyBpbnRlcnBvbGF0aW9uUXVhbGl0eS52YWx1ZSgpIDogZ3JhcGhp
Y3NDb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSkKLSAgICB7Ci0gICAgfQotCi0g
ICAgfkludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcigpCi0gICAgewotICAgICAgICBpZiAo
bV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQpCi0gICAgICAgICAgICBtX2dyYXBoaWNzQ29u
dGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KG1fY3VycmVudEludGVycG9sYXRpb25R
dWFsaXR5KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0JiBtX2dyYXBo
aWNzQ29udGV4dDsKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2N1cnJlbnRJbnRlcnBvbGF0
aW9uUXVhbGl0eTsKLSAgICBib29sIG1faW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2VkOwotfTsK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9k
ZT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgV2ViQ29yZTo6RG9jdW1l
bnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGUsCi0gICAgV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJMaW5l
U3R5bGU6Ok1vZGU6OlRleHRDaGVja2luZ0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMs
Ci0gICAgV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU6OlNwZWxsaW5nLAot
ICAgIFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpHcmFtbWFyLAotICAg
IFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpBdXRvY29ycmVjdGlvblJl
cGxhY2VtZW50LAotICAgIFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpE
aWN0YXRpb25BbHRlcm5hdGl2ZXMKLSAgICA+OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlPiB7Ci0gICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVBhdHRlcm5DaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxHcmFkaWVudENoYW5nZSwKLSAgICAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbFBhdHRlcm5DaGFu
Z2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9r
ZVRoaWNrbmVzc0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVN0eWxlQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQ29sb3JDaGFuZ2UsCi0gICAgICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxSdWxlQ2hhbmdlLAotICAg
ICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaGFkb3dDaGFuZ2Us
Ci0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpBbHBoYUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLAotICAgICAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpCbGVuZE1vZGVDaGFuZ2UsCi0gICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlRleHREcmF3aW5nTW9k
ZUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
U2hvdWxkQW50aWFsaWFzQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
Q2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpE
cmF3THVtaW5hbmNlTWFza0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZQotI2lmIEhBVkUo
T1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgICAgICwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UKLSNlbmRpZgotICAgID47Ci19
OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlN0cm9rZVN0eWxlPiB7
Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICBXZWJDb3JlOjpTdHJva2VTdHls
ZSwKLSAgICBXZWJDb3JlOjpTdHJva2VTdHlsZTo6Tm9TdHJva2UsCi0gICAgV2ViQ29yZTo6U3Ry
b2tlU3R5bGU6OlNvbGlkU3Ryb2tlLAotICAgIFdlYkNvcmU6OlN0cm9rZVN0eWxlOjpEb3R0ZWRT
dHJva2UsCi0gICAgV2ViQ29yZTo6U3Ryb2tlU3R5bGU6OkRhc2hlZFN0cm9rZSwKLSAgICBXZWJD
b3JlOjpTdHJva2VTdHlsZTo6RG91YmxlU3Ryb2tlLAotICAgIFdlYkNvcmU6OlN0cm9rZVN0eWxl
OjpXYXZ5U3Ryb2tlCi0gICAgPjsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6VGV4dERyYXdpbmdNb2RlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVl
czwKLSAgICAgICAgV2ViQ29yZTo6VGV4dERyYXdpbmdNb2RlLAotICAgICAgICBXZWJDb3JlOjpU
ZXh0RHJhd2luZ01vZGU6OkZpbGwsCi0gICAgICAgIFdlYkNvcmU6OlRleHREcmF3aW5nTW9kZTo6
U3Ryb2tlCi0gICAgPjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgorI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmNh
ZGQ2NDkxOTM1NDA4NjY0YzI3NmZjZTNkNTk5ZTYxNGY5YWYzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3Bw
CkBAIC0wLDAgKzEsMzI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRT
dGF0ZS5oIgorCisjaW5jbHVkZSAiR3JhZGllbnQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJQYXR0ZXJuLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVh
bS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNkZWZpbmUgQ0hFQ0tfRk9SX0NIQU5HRURf
UFJPUEVSVFkoZmxhZywgcHJvcGVydHkpIFwKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmxhZykgJiYgKG1fc3RhdGUucHJvcGVydHkgIT0gc3Rh
dGUucHJvcGVydHkpKSBcCisgICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRT
dGF0ZTo6ZmxhZyk7CisKK0dyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZSgpCisgICAgOiBzaG91bGRBbnRpYWxpYXModHJ1ZSkKKyAgICAsIHNob3VsZFNtb290aEZvbnRz
KHRydWUpCisgICAgLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHModHJ1ZSkKKyAgICAsIHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQorICAgICwgZHJhd0x1bWluYW5jZU1hc2soZmFs
c2UpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dFN0YXRlOjp+R3JhcGhpY3NDb250ZXh0U3RhdGUo
KSA9IGRlZmF1bHQ7CitHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7CitHcmFwaGljc0NvbnRleHRT
dGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJikgPSBkZWZh
dWx0OworR3JhcGhpY3NDb250ZXh0U3RhdGUmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRv
cj0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSA9IGRlZmF1bHQ7CitHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRT
dGF0ZSYmKSA9IGRlZmF1bHQ7CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hh
bmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQoreworICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tl
UGF0dGVybkNoYW5nZSB9OworICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykp
IHsKKyAgICAgICAgc3Ryb2tlQ29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKKyAgICAgICAgc3Ry
b2tlR3JhZGllbnQgPSBzdGF0ZS5zdHJva2VHcmFkaWVudDsKKyAgICAgICAgc3Ryb2tlUGF0dGVy
biA9IHN0YXRlLnN0cm9rZVBhdHRlcm47CisgICAgfQorCisgICAgYXV0byBmaWxsRmxhZ3MgPSB7
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVy
bkNoYW5nZSB9OworICAgIGlmIChmbGFncy5jb250YWluc0FueShmaWxsRmxhZ3MpKSB7CisgICAg
ICAgIGZpbGxDb2xvciA9IHN0YXRlLmZpbGxDb2xvcjsKKyAgICAgICAgZmlsbEdyYWRpZW50ID0g
c3RhdGUuZmlsbEdyYWRpZW50OworICAgICAgICBmaWxsUGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0
ZXJuOworICAgIH0KKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hhZG93Q2hhbmdlKSkgeworICAgICAgICBzaGFkb3dPZmZzZXQgPSBzdGF0ZS5zaGFkb3dP
ZmZzZXQ7CisgICAgICAgIHNoYWRvd0JsdXIgPSBzdGF0ZS5zaGFkb3dCbHVyOworICAgICAgICBz
aGFkb3dDb2xvciA9IHN0YXRlLnNoYWRvd0NvbG9yOworICAgICAgICBzaGFkb3dSYWRpdXNNb2Rl
ID0gc3RhdGUuc2hhZG93UmFkaXVzTW9kZTsKKyAgICB9CisKKyAgICBpZiAoZmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCisgICAgICAg
IHN0cm9rZVRoaWNrbmVzcyA9IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKKworICAgIGlmIChmbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkK
KyAgICAgICAgdGV4dERyYXdpbmdNb2RlID0gc3RhdGUudGV4dERyYXdpbmdNb2RlOworCisgICAg
aWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5n
ZSkpCisgICAgICAgIHN0cm9rZVN0eWxlID0gc3RhdGUuc3Ryb2tlU3R5bGU7CisKKyAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKKyAg
ICAgICAgZmlsbFJ1bGUgPSBzdGF0ZS5maWxsUnVsZTsKKworICAgIGlmIChmbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKQorICAgICAgICBhbHBoYSA9IHN0
YXRlLmFscGhhOworCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJs
ZW5kTW9kZUNoYW5nZSB9KSkgeworICAgICAgICBjb21wb3NpdGVPcGVyYXRvciA9IHN0YXRlLmNv
bXBvc2l0ZU9wZXJhdG9yOworICAgICAgICBibGVuZE1vZGUgPSBzdGF0ZS5ibGVuZE1vZGU7Cisg
ICAgfQorCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRBbnRpYWxpYXNDaGFuZ2UpKQorICAgICAgICBzaG91bGRBbnRpYWxpYXMgPSBzdGF0ZS5zaG91
bGRBbnRpYWxpYXM7CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdlKSkKKyAgICAgICAgc2hvdWxkU21vb3RoRm9udHMg
PSBzdGF0ZS5zaG91bGRTbW9vdGhGb250czsKKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkKKyAg
ICAgICAgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gc3RhdGUuc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzOworCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCisgICAgICAgIHNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zID0gc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CisKKyAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hh
bmdlKSkKKyAgICAgICAgZHJhd0x1bWluYW5jZU1hc2sgPSBzdGF0ZS5kcmF3THVtaW5hbmNlTWFz
azsKKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpCisgICAgICAgIGltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkgPSBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OworCisjaWYgSEFWRShPU19E
QVJLX01PREVfU1VQUE9SVCkKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKKyAgICAgICAgdXNlRGFya0FwcGVhcmFu
Y2UgPSBzdGF0ZS51c2VEYXJrQXBwZWFyYW5jZTsKKyNlbmRpZgorfQorCitHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6Y2hh
bmdlc0Zyb21TdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpIGNvbnN0Cit7
CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3M7
CisKKyAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VHcmFkaWVudENoYW5nZSwg
c3Ryb2tlR3JhZGllbnQpOworICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVBh
dHRlcm5DaGFuZ2UsIHN0cm9rZVBhdHRlcm4pOworICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BF
UlRZKEZpbGxHcmFkaWVudENoYW5nZSwgZmlsbEdyYWRpZW50KTsKKyAgICBDSEVDS19GT1JfQ0hB
TkdFRF9QUk9QRVJUWShGaWxsUGF0dGVybkNoYW5nZSwgZmlsbFBhdHRlcm4pOworCisgICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5n
ZSkKKyAgICAgICAgJiYgKG1fc3RhdGUuc2hhZG93T2Zmc2V0ICE9IHN0YXRlLnNoYWRvd09mZnNl
dAorICAgICAgICAgICAgfHwgbV9zdGF0ZS5zaGFkb3dCbHVyICE9IHN0YXRlLnNoYWRvd0JsdXIK
KyAgICAgICAgICAgIHx8IG1fc3RhdGUuc2hhZG93Q29sb3IgIT0gc3RhdGUuc2hhZG93Q29sb3Ip
KQorICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0No
YW5nZSk7CisKKyAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VUaGlja25lc3ND
aGFuZ2UsIHN0cm9rZVRoaWNrbmVzcyk7CisgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFko
VGV4dERyYXdpbmdNb2RlQ2hhbmdlLCB0ZXh0RHJhd2luZ01vZGUpOworICAgIENIRUNLX0ZPUl9D
SEFOR0VEX1BST1BFUlRZKFN0cm9rZUNvbG9yQ2hhbmdlLCBzdHJva2VDb2xvcik7CisgICAgQ0hF
Q0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbENvbG9yQ2hhbmdlLCBmaWxsQ29sb3IpOworICAg
IENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFN0cm9rZVN0eWxlQ2hhbmdlLCBzdHJva2VTdHls
ZSk7CisgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoRmlsbFJ1bGVDaGFuZ2UsIGZpbGxS
dWxlKTsKKyAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShBbHBoYUNoYW5nZSwgYWxwaGEp
OworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnNBbnkoeyBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Qmxl
bmRNb2RlQ2hhbmdlIH0pCisgICAgICAgICYmIChtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yICE9
IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yIHx8IG1fc3RhdGUuYmxlbmRNb2RlICE9IHN0YXRlLmJs
ZW5kTW9kZSkpIHsKKyAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOworICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSk7CisgICAgfQorCisgICAgQ0hFQ0tf
Rk9SX0NIQU5HRURfUFJPUEVSVFkoU2hvdWxkQW50aWFsaWFzQ2hhbmdlLCBzaG91bGRBbnRpYWxp
YXMpOworICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFNtb290aEZvbnRzQ2hh
bmdlLCBzaG91bGRTbW9vdGhGb250cyk7CisgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFko
U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlLCBzaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMpOworICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zQ2hhbmdlLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgQ0hFQ0tfRk9SX0NI
QU5HRURfUFJPUEVSVFkoRHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UsIGRyYXdMdW1pbmFuY2VNYXNr
KTsKKyAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5Q2hhbmdlLCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKworI2lmIEhBVkUoT1NfREFS
S19NT0RFX1NVUFBPUlQpCisgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoVXNlRGFya0Fw
cGVhcmFuY2VDaGFuZ2UsIHVzZURhcmtBcHBlYXJhbmNlKTsKKyNlbmRpZgorCisgICAgcmV0dXJu
IGNoYW5nZUZsYWdzOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphY2N1
bXVsYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCit7CisgICAgbV9zdGF0ZS5tZXJnZUNoYW5n
ZXMoc3RhdGUsIGZsYWdzKTsKKworICAgIGF1dG8gc3Ryb2tlRmxhZ3MgPSB7IEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9r
ZUdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5n
ZSB9OworICAgIGlmIChmbGFncy5jb250YWluc0FueShzdHJva2VGbGFncykpCisgICAgICAgIG1f
Y2hhbmdlRmxhZ3MucmVtb3ZlKHN0cm9rZUZsYWdzKTsKKworICAgIGF1dG8gZmlsbEZsYWdzID0g
eyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRl
cm5DaGFuZ2UgfTsKKyAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoZmlsbEZsYWdzKSkKKyAgICAg
ICAgbV9jaGFuZ2VGbGFncy5yZW1vdmUoZmlsbEZsYWdzKTsKKworICAgIGF1dG8gY29tcG9zaXRl
T3BlcmF0b3JGbGFncyA9IHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlv
bkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9OworICAgIGlm
IChmbGFncy5jb250YWluc0FueShjb21wb3NpdGVPcGVyYXRvckZsYWdzKSkKKyAgICAgICAgbV9j
aGFuZ2VGbGFncy5yZW1vdmUoY29tcG9zaXRlT3BlcmF0b3JGbGFncyk7CisKKyAgICBtX2NoYW5n
ZUZsYWdzLmFkZChmbGFncyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6
OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFu
Z2UpKQorICAgICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KCptX3N0YXRlLnN0cm9rZUdy
YWRpZW50LCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0pOworCisgICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRl
cm5DaGFuZ2UpKQorICAgICAgICBjb250ZXh0LnNldFN0cm9rZVBhdHRlcm4oKm1fc3RhdGUuc3Ry
b2tlUGF0dGVybik7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkKKyAgICAgICAgY29udGV4dC5zZXRGaWxs
R3JhZGllbnQoKm1fc3RhdGUuZmlsbEdyYWRpZW50LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNl
VHJhbnNmb3JtKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbFBh
dHRlcm4oKm1fc3RhdGUuZmlsbFBhdHRlcm4pOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdl
KSkKKyAgICAgICAgY29udGV4dC5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0YXRlLnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKQorICAgICAgICBjb250ZXh0LnNl
dFNoYWRvdyhtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRl
LnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd1JhZGl1c01vZGUpOworCisgICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0No
YW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKG1fc3RhdGUuc3Ryb2tl
VGhpY2tuZXNzKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQorICAgICAgICBjb250ZXh0LnNldFRl
eHREcmF3aW5nTW9kZShtX3N0YXRlLnRleHREcmF3aW5nTW9kZSk7CisKKyAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2Up
KQorICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwor
CisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxDb2xvckNoYW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fc3RhdGUuZmls
bENvbG9yKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5
bGUobV9zdGF0ZS5zdHJva2VTdHlsZSk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQorICAgICAgICBjb250ZXh0
LnNldEZpbGxSdWxlKG1fc3RhdGUuZmlsbFJ1bGUpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKKyAgICAgICAgY29u
dGV4dC5zZXRBbHBoYShtX3N0YXRlLmFscGhhKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5n
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSB9KSkKKyAgICAgICAgY29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24obV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgbV9z
dGF0ZS5ibGVuZE1vZGUpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCisgICAgICAgIGNvbnRleHQu
c2V0U2hvdWxkQW50aWFsaWFzKG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKKworICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhG
b250c0NoYW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0U2hvdWxkU21vb3RoRm9udHMobV9zdGF0
ZS5zaG91bGRTbW9vdGhGb250cyk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkK
KyAgICAgICAgY29udGV4dC5zZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMobV9zdGF0ZS5z
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlKSkKKyAg
ICAgICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhtX3N0YXRlLmRyYXdMdW1pbmFuY2VN
YXNrKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkKKyAgICAgICAgY29udGV4dC5z
ZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSk7CisKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNo
YW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0VXNlRGFya0FwcGVhcmFuY2UobV9zdGF0ZS51c2VE
YXJrQXBwZWFyYW5jZSk7CisjZW5kaWYKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKK3sKKyAgICB0cy5kdW1wUHJvcGVydHko
ImNoYW5nZS1mbGFncyIsIG1fY2hhbmdlRmxhZ3MudG9SYXcoKSk7CisKKyAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFu
Z2UpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1ncmFkaWVudCIsIG1fc3RhdGUu
c3Ryb2tlR3JhZGllbnQuZ2V0KCkpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKQorICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInN0cm9rZS1wYXR0ZXJuIiwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuLmdldCgp
KTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpGaWxsR3JhZGllbnRDaGFuZ2UpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtZ3Jh
ZGllbnQiLCBtX3N0YXRlLmZpbGxHcmFkaWVudC5nZXQoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKQor
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtcGF0dGVybiIsIG1fc3RhdGUuZmlsbFBhdHRl
cm4uZ2V0KCkpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpIHsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFk
b3ctYmx1ciIsIG1fc3RhdGUuc2hhZG93Qmx1cik7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
c2hhZG93LW9mZnNldCIsIG1fc3RhdGUuc2hhZG93T2Zmc2V0KTsKKyAgICAgICAgdHMuZHVtcFBy
b3BlcnR5KCJzaGFkb3ctY29sb3IiLCBtX3N0YXRlLnNoYWRvd0NvbG9yKTsKKyAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIiwgbV9zdGF0ZS5zaGFkb3dS
YWRpdXNNb2RlID09IFNoYWRvd1JhZGl1c01vZGU6OkxlZ2FjeSk7CisgICAgfQorCisgICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNr
bmVzc0NoYW5nZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXRoaWNrbmVzcyIs
IG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQorICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoInRleHQtZHJhd2luZy1tb2RlIiwgbV9zdGF0ZS50ZXh0RHJhd2lu
Z01vZGUudG9SYXcoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQorICAgICAgICB0cy5kdW1wUHJvcGVy
dHkoInN0cm9rZS1jb2xvciIsIG1fc3RhdGUuc3Ryb2tlQ29sb3IpOworCisgICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkp
CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZmlsbC1jb2xvciIsIG1fc3RhdGUuZmlsbENvbG9y
KTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdHJva2VTdHlsZUNoYW5nZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXN0
eWxlIiwgbV9zdGF0ZS5zdHJva2VTdHlsZSk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpKQorICAgICAgICB0cy5k
dW1wUHJvcGVydHkoImZpbGwtcnVsZSIsIG1fc3RhdGUuZmlsbFJ1bGUpOworCisgICAgaWYgKG1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkK
KyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbHBoYSIsIG1fc3RhdGUuYWxwaGEpOworCisgICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0
ZU9wZXJhdGlvbkNoYW5nZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9zaXRlLW9w
ZXJhdG9yIiwgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvcik7CisKKyAgICBpZiAobV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6QmxlbmRNb2RlQ2hhbmdlKSkKKyAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgbV9zdGF0ZS5ibGVuZE1vZGUpOwor
CisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZEFudGlhbGlhc0NoYW5nZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLWFu
dGlhbGlhcyIsIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKTsKKworICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5n
ZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXNtb290aC1mb250cyIsIG1fc3Rh
dGUuc2hvdWxkU21vb3RoRm9udHMpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkp
CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hvdWxkLXN1YnBpeGVsLXF1YW50aXplLWZvbnRz
IiwgbV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOworCisgICAgaWYgKG1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zQ2hhbmdlKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzaGFkb3dzLWlnbm9yZS10
cmFuc2Zvcm1zIiwgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisKKyAgICBpZiAo
bV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5j
ZU1hc2tDaGFuZ2UpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImRyYXctbHVtaW5hbmNlLW1h
c2siLCBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrKTsKKworI2lmIEhBVkUoT1NfREFSS19NT0RF
X1NVUFBPUlQpCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJ1c2UtZGFyay1hcHBlYXJhbmNlIiwgbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZSk7CisjZW5k
aWYKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlKQoreworICAgIHN0YXRlQ2hhbmdl
LmR1bXAodHMpOworICAgIHJldHVybiB0czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM1NTExOWY2Njk5N2QyY2ZjMDlmZjFmZGJmMDdmOGE1
OTU5NTk2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmgKQEAgLTAsMCArMSwxNzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZs
b2F0U2l6ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKyNpbmNsdWRlICJXaW5kUnVs
ZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBHcmFkaWVudDsKK2NsYXNzIFBhdHRlcm47
CisKK3N0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CisgICAgV0VCQ09SRV9FWFBPUlQgR3Jh
cGhpY3NDb250ZXh0U3RhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+R3JhcGhpY3NDb250ZXh0
U3RhdGUoKTsKKworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhp
Y3NDb250ZXh0U3RhdGUmJik7CisKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSYgb3BlcmF0b3I9
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIG9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKTsKKworICAg
IGVudW0gQ2hhbmdlIDogdWludDMyX3QgeworICAgICAgICBTdHJva2VHcmFkaWVudENoYW5nZSAg
ICAgICAgICAgICAgICAgICAgPSAxIDw8IDAsCisgICAgICAgIFN0cm9rZVBhdHRlcm5DaGFuZ2Ug
ICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMSwKKyAgICAgICAgRmlsbEdyYWRpZW50Q2hhbmdl
ICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAyLAorICAgICAgICBGaWxsUGF0dGVybkNoYW5n
ZSAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDMsCisgICAgICAgIFN0cm9rZVRoaWNrbmVz
c0NoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEgPDwgNCwKKyAgICAgICAgU3Ryb2tlQ29sb3JD
aGFuZ2UgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA1LAorICAgICAgICBTdHJva2VTdHls
ZUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDYsCisgICAgICAgIEZpbGxDb2xv
ckNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgNywKKyAgICAgICAgRmlsbFJ1
bGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA4LAorICAgICAgICBTaGFk
b3dDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDksCisgICAgICAgIFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlICAgICAgICAgICA9IDEgPDwgMTAsCisgICAgICAg
IEFscGhhQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTEsCisgICAg
ICAgIENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSAgICAgICAgICAgICAgICA9IDEgPDwgMTIsCisg
ICAgICAgIEJsZW5kTW9kZUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTMs
CisgICAgICAgIFRleHREcmF3aW5nTW9kZUNoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEgPDwg
MTQsCisgICAgICAgIFNob3VsZEFudGlhbGlhc0NoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEg
PDwgMTUsCisgICAgICAgIFNob3VsZFNtb290aEZvbnRzQ2hhbmdlICAgICAgICAgICAgICAgICA9
IDEgPDwgMTYsCisgICAgICAgIFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSAgICAg
ICA9IDEgPDwgMTcsCisgICAgICAgIERyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlICAgICAgICAgICAg
ICAgICA9IDEgPDwgMTgsCisgICAgICAgIEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2Ug
ICAgICAgICA9IDEgPDwgMTksCisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICAg
ICAgVXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UgICAgICAgICAgICAgICAgID0gMSA8PCAyMCwKKyNl
bmRpZgorICAgIH07CisgICAgdXNpbmcgU3RhdGVDaGFuZ2VGbGFncyA9IE9wdGlvblNldDxDaGFu
Z2U+OworCisgICAgdm9pZCBtZXJnZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CisKKyAgICBSZWZQdHI8
R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50OworICAgIFJlZlB0cjxQYXR0ZXJuPiBzdHJva2VQYXR0
ZXJuOworICAgIAorICAgIFJlZlB0cjxHcmFkaWVudD4gZmlsbEdyYWRpZW50OworICAgIFJlZlB0
cjxQYXR0ZXJuPiBmaWxsUGF0dGVybjsKKworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CisK
KyAgICBDb2xvciBzdHJva2VDb2xvciB7IENvbG9yOjpibGFjayB9OworICAgIENvbG9yIGZpbGxD
b2xvciB7IENvbG9yOjpibGFjayB9OworICAgIENvbG9yIHNoYWRvd0NvbG9yOworCisgICAgQWZm
aW5lVHJhbnNmb3JtIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm07CisgICAgQWZmaW5lVHJh
bnNmb3JtIGZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtOworCisgICAgZmxvYXQgc3Ryb2tlVGhp
Y2tuZXNzIHsgMCB9OworICAgIGZsb2F0IHNoYWRvd0JsdXIgeyAwIH07CisgICAgZmxvYXQgYWxw
aGEgeyAxIH07CisKKyAgICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSB7IFNvbGlkU3Ryb2tlIH07
CisgICAgV2luZFJ1bGUgZmlsbFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OworCisgICAgVGV4
dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlIHsgVGV4dERyYXdpbmdNb2RlOjpGaWxs
IH07CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgeyBDb21wb3NpdGVP
cGVyYXRvcjo6U291cmNlT3ZlciB9OworICAgIEJsZW5kTW9kZSBibGVuZE1vZGUgeyBCbGVuZE1v
ZGU6Ok5vcm1hbCB9OworICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkgeyBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdCB9OworICAgIFNoYWRvd1Jh
ZGl1c01vZGUgc2hhZG93UmFkaXVzTW9kZSB7IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQgfTsK
KworICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzIDogMTsKKyAgICBib29sIHNob3VsZFNtb290aEZv
bnRzIDogMTsKKyAgICBib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA6IDE7CisgICAg
Ym9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA6IDE7CisgICAgYm9vbCBkcmF3THVtaW5hbmNl
TWFzayA6IDE7CisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICBib29sIHVzZURh
cmtBcHBlYXJhbmNlIDogMTsKKyNlbmRpZgorfTsKKworc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlQ2hhbmdlIHsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSgpID0gZGVmYXVsdDsK
KyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQor
ICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCisgICAgICAgICwgbV9jaGFuZ2VGbGFncyhmbGFncykK
KyAgICB7CisgICAgfQorCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxh
Z3MgY2hhbmdlc0Zyb21TdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpIGNvbnN0Owor
CisgICAgdm9pZCBhY2N1bXVsYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOworICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Q7CisgICAgCisgICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYp
IGNvbnN0OworCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbV9zdGF0ZTsKKyAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBtX2NoYW5nZUZsYWdzOworfTsKKworV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlJik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNoYW5nZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UsCisgICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUdyYWRpZW50Q2hh
bmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJv
a2VQYXR0ZXJuQ2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpGaWxsR3JhZGllbnRDaGFuZ2UsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxQYXR0ZXJuQ2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UsCisgICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUNvbG9yQ2hh
bmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJv
a2VTdHlsZUNoYW5nZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6RmlsbENvbG9yQ2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpGaWxsUnVsZUNoYW5nZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U2hhZG93Q2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSwK
KyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6QWxwaGFDaGFu
Z2UsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkNvbXBv
c2l0ZU9wZXJhdGlvbkNoYW5nZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6QmxlbmRNb2RlQ2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UsCisgICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlhbGlhc0NoYW5nZSwK
KyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU21v
b3RoRm9udHNDaGFuZ2UsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSwKKyAgICAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2tDaGFuZ2Us
CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQor
ICAgICAgICAsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlVzZURhcmtB
cHBlYXJhbmNlQ2hhbmdlCisjZW5kaWYKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjliNGI4ZDAwYTFjNzZjN2I3NTQz
ZDYzMGE2ODFlMjc0ZWEwMDZlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIuaApAQCAtMCwwICsxLDE0
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgYm9vbCBz
YXZlQW5kUmVzdG9yZSA9IHRydWUpCisgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAg
ICAgICwgbV9zYXZlQW5kUmVzdG9yZShzYXZlQW5kUmVzdG9yZSkKKyAgICB7CisgICAgICAgIGlm
IChtX3NhdmVBbmRSZXN0b3JlKQorICAgICAgICAgICAgbV9jb250ZXh0LnNhdmUoKTsKKyAgICB9
CisgICAgCisgICAgfkdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIoKQorICAgIHsKKyAgICAgICAg
aWYgKG1fc2F2ZUFuZFJlc3RvcmUpCisgICAgICAgICAgICBtX2NvbnRleHQucmVzdG9yZSgpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHNhdmUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3Nh
dmVBbmRSZXN0b3JlKTsKKyAgICAgICAgbV9jb250ZXh0LnNhdmUoKTsKKyAgICAgICAgbV9zYXZl
QW5kUmVzdG9yZSA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCByZXN0b3JlKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3NhdmVBbmRSZXN0b3JlKTsKKyAgICAgICAgbV9jb250ZXh0LnJlc3Rv
cmUoKTsKKyAgICAgICAgbV9zYXZlQW5kUmVzdG9yZSA9IGZhbHNlOworICAgIH0KKyAgICAKKyAg
ICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiAmbV9jb250ZXh0OyB9
CisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRleHQ7CisgICAgYm9vbCBt
X3NhdmVBbmRSZXN0b3JlOworfTsKKworY2xhc3MgVHJhbnNwYXJlbmN5TGF5ZXJTY29wZSB7Citw
dWJsaWM6CisgICAgVHJhbnNwYXJlbmN5TGF5ZXJTY29wZShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IGFscGhhLCBib29sIGJlZ2luTGF5ZXIgPSB0cnVlKQorICAgICAgICA6IG1fY29u
dGV4dChjb250ZXh0KQorICAgICAgICAsIG1fYWxwaGEoYWxwaGEpCisgICAgICAgICwgbV9iZWdh
bkxheWVyKGJlZ2luTGF5ZXIpCisgICAgeworICAgICAgICBpZiAoYmVnaW5MYXllcikKKyAgICAg
ICAgICAgIG1fY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG1fYWxwaGEpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGJlZ2luTGF5ZXIoZmxvYXQgYWxwaGEpCisgICAgeworICAgICAgICBt
X2FscGhhID0gYWxwaGE7CisgICAgICAgIG1fY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVy
KG1fYWxwaGEpOworICAgICAgICBtX2JlZ2FuTGF5ZXIgPSB0cnVlOworICAgIH0KKyAgICAKKyAg
ICB+VHJhbnNwYXJlbmN5TGF5ZXJTY29wZSgpCisgICAgeworICAgICAgICBpZiAobV9iZWdhbkxh
eWVyKQorICAgICAgICAgICAgbV9jb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAg
fQorCitwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OworICAgIGZsb2F0
IG1fYWxwaGE7CisgICAgYm9vbCBtX2JlZ2FuTGF5ZXI7Cit9OworCitjbGFzcyBHcmFwaGljc0Nv
bnRleHRTdGF0ZVN0YWNrQ2hlY2tlciB7CitwdWJsaWM6CisgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTdGFja0NoZWNrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorICAgICAgICA6IG1fY29u
dGV4dChjb250ZXh0KQorICAgICAgICAsIG1fc3RhY2tTaXplKGNvbnRleHQuc3RhY2tTaXplKCkp
CisgICAgeyB9CisgICAgCisgICAgfkdyYXBoaWNzQ29udGV4dFN0YXRlU3RhY2tDaGVja2VyKCkK
KyAgICB7CisgICAgICAgIGlmIChtX2NvbnRleHQuc3RhY2tTaXplKCkgIT0gbV9zdGFja1NpemUp
CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkdyYXBoaWNzQ29udGV4dCAlcCBzdGFjayBjaGFu
Z2VkIGJ5ICVkIiwgJm1fY29udGV4dCwgKGludCltX2NvbnRleHQuc3RhY2tTaXplKCkgLSAoaW50
KW1fc3RhY2tTaXplKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0JiBt
X2NvbnRleHQ7CisgICAgdW5zaWduZWQgbV9zdGFja1NpemU7Cit9OworCitjbGFzcyBJbnRlcnBv
bGF0aW9uUXVhbGl0eU1haW50YWluZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwg
SW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHlUb1VzZSkKKyAgICAgICAg
OiBtX2dyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQpCisgICAgICAgICwgbV9jdXJyZW50
SW50ZXJwb2xhdGlvblF1YWxpdHkoZ3JhcGhpY3NDb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoKSkKKyAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlZChpbnRlcnBv
bGF0aW9uUXVhbGl0eVRvVXNlICE9IEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0ICYmIG1f
Y3VycmVudEludGVycG9sYXRpb25RdWFsaXR5ICE9IGludGVycG9sYXRpb25RdWFsaXR5VG9Vc2Up
CisgICAgeworICAgICAgICBpZiAobV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQpCisgICAg
ICAgICAgICBtX2dyYXBoaWNzQ29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KGlu
dGVycG9sYXRpb25RdWFsaXR5VG9Vc2UpOworICAgIH0KKworICAgIGV4cGxpY2l0IEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwg
c3RkOjpvcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW50ZXJwb2xhdGlvblF1YWxpdHkp
CisgICAgICAgIDogSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyKGdyYXBoaWNzQ29udGV4
dCwgaW50ZXJwb2xhdGlvblF1YWxpdHkgPyBpbnRlcnBvbGF0aW9uUXVhbGl0eS52YWx1ZSgpIDog
Z3JhcGhpY3NDb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSkKKyAgICB7CisgICAg
fQorCisgICAgfkludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcigpCisgICAgeworICAgICAg
ICBpZiAobV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQpCisgICAgICAgICAgICBtX2dyYXBo
aWNzQ29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KG1fY3VycmVudEludGVycG9s
YXRpb25RdWFsaXR5KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0JiBt
X2dyYXBoaWNzQ29udGV4dDsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2N1cnJlbnRJbnRl
cnBvbGF0aW9uUXVhbGl0eTsKKyAgICBib29sIG1faW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2Vk
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCmluZGV4IDRkMjA0ZTk3ZTVjNTQ0ZDc3NmJm
YTdmMzBhYWNjMWI3YzQ2M2UwZTAuLmRlYzQzNDcwMmNmNzZhODlmYTg2NTMwYzMzNzZkOGJhYzVk
OWNhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c1R5cGVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2lu
ZFJ1bGUuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTczLDYgKzc0LDQzIEBAIGVudW0gY2xh
c3MgQmxlbmRNb2RlIDogdWludDhfdCB7CiAgICAgUGx1c0xpZ2h0ZXIKIH07CiAKK3N0cnVjdCBE
b2N1bWVudE1hcmtlckxpbmVTdHlsZSB7CisgICAgZW51bSBjbGFzcyBNb2RlIDogdWludDhfdCB7
CisgICAgICAgIFRleHRDaGVja2luZ0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMsCisg
ICAgICAgIFNwZWxsaW5nLAorICAgICAgICBHcmFtbWFyLAorICAgICAgICBBdXRvY29ycmVjdGlv
blJlcGxhY2VtZW50LAorICAgICAgICBEaWN0YXRpb25BbHRlcm5hdGl2ZXMKKyAgICB9IG1vZGU7
CisgICAgYm9vbCBzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSB7IGZhbHNlIH07CisKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RG9jdW1lbnRNYXJrZXJM
aW5lU3R5bGU+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgordm9pZCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtb2RlOworICAgIGVuY29kZXIgPDwgc2hvdWxkVXNl
RGFya0FwcGVhcmFuY2U7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlv
bmFsPERvY3VtZW50TWFya2VyTGluZVN0eWxlPiBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxNb2RlPiBtb2RlOwor
ICAgIGRlY29kZXIgPj4gbW9kZTsKKyAgICBpZiAoIW1vZGUpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZFVzZURhcmtBcHBlYXJh
bmNlOworICAgIGRlY29kZXIgPj4gc2hvdWxkVXNlRGFya0FwcGVhcmFuY2U7CisgICAgaWYgKCFz
aG91bGRVc2VEYXJrQXBwZWFyYW5jZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiB7IHsgKm1vZGUsICpzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSB9IH07Cit9CisK
IGVudW0gY2xhc3MgR3JhZGllbnRTcHJlYWRNZXRob2QgOiB1aW50OF90IHsKICAgICBQYWQsCiAg
ICAgUmVmbGVjdCwKQEAgLTEwNSw2ICsxNDMsMjggQEAgZW51bSBIb3Jpem9udGFsQWxpZ25tZW50
IHsKICAgICBBbGlnbkhDZW50ZXIKIH07CiAKK2VudW0gU3Ryb2tlU3R5bGUgeworICAgIE5vU3Ry
b2tlLAorICAgIFNvbGlkU3Ryb2tlLAorICAgIERvdHRlZFN0cm9rZSwKKyAgICBEYXNoZWRTdHJv
a2UsCisgICAgRG91YmxlU3Ryb2tlLAorICAgIFdhdnlTdHJva2UsCit9OworCitlbnVtIGNsYXNz
IFRleHREcmF3aW5nTW9kZSA6IHVpbnQ4X3QgeworICAgIEZpbGwgPSAxIDw8IDAsCisgICAgU3Ry
b2tlID0gMSA8PCAxLAorfTsKK3VzaW5nIFRleHREcmF3aW5nTW9kZUZsYWdzID0gT3B0aW9uU2V0
PFRleHREcmF3aW5nTW9kZT47CisKKy8vIExlZ2FjeSBzaGFkb3cgYmx1ciByYWRpdXMgaXMgdXNl
ZCBmb3IgY2FudmFzLCBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgorLy8gSXQgaGFzIGRpZmZlcmVu
dCB0cmVhdG1lbnQgb2YgcmFkaWkgPiA4cHguCitlbnVtIGNsYXNzIFNoYWRvd1JhZGl1c01vZGUg
OiBib29sIHsKKyAgICBEZWZhdWx0LAorICAgIExlZ2FjeQorfTsKKwogZW51bSBUZXh0QmFzZWxp
bmUgewogICAgIEFscGhhYmV0aWNUZXh0QmFzZWxpbmUsCiAgICAgVG9wVGV4dEJhc2VsaW5lLApA
QCAtMjE5LDQgKzI3OSwzNSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
OkxpbmVKb2luPiB7CiAgICAgPjsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU+IHsKKyAgICB1c2luZyB2YWx1
ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpN
b2RlLAorICAgIFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpUZXh0Q2hl
Y2tpbmdEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzLAorICAgIFdlYkNvcmU6OkRvY3Vt
ZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpTcGVsbGluZywKKyAgICBXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6R3JhbW1hciwKKyAgICBXZWJDb3JlOjpEb2N1bWVudE1h
cmtlckxpbmVTdHlsZTo6TW9kZTo6QXV0b2NvcnJlY3Rpb25SZXBsYWNlbWVudCwKKyAgICBXZWJD
b3JlOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVz
CisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U3Ry
b2tlU3R5bGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYkNvcmU6
OlN0cm9rZVN0eWxlLAorICAgIFdlYkNvcmU6OlN0cm9rZVN0eWxlOjpOb1N0cm9rZSwKKyAgICBX
ZWJDb3JlOjpTdHJva2VTdHlsZTo6U29saWRTdHJva2UsCisgICAgV2ViQ29yZTo6U3Ryb2tlU3R5
bGU6OkRvdHRlZFN0cm9rZSwKKyAgICBXZWJDb3JlOjpTdHJva2VTdHlsZTo6RGFzaGVkU3Ryb2tl
LAorICAgIFdlYkNvcmU6OlN0cm9rZVN0eWxlOjpEb3VibGVTdHJva2UsCisgICAgV2ViQ29yZTo6
U3Ryb2tlU3R5bGU6OldhdnlTdHJva2UKKyAgICA+OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpUZXh0RHJhd2luZ01vZGU+IHsKKyAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpUZXh0RHJhd2luZ01vZGUsCisgICAgICAg
IFdlYkNvcmU6OlRleHREcmF3aW5nTW9kZTo6RmlsbCwKKyAgICAgICAgV2ViQ29yZTo6VGV4dERy
YXdpbmdNb2RlOjpTdHJva2UKKyAgICA+OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTAxZmQzOTQ2NDMzOWQyZDRkNTRiYTkzNjRjNTk0
NWNmYWQ3ZDVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1HcmFwaGljc0NvbnRleHQuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIkRJQlBpeGVsRGF0YS5oIgordHlwZWRlZiBzdHJ1
Y3QgSERDX18qIEhEQzsKKyNpZiAhVVNFKENHKQorLy8gVUludDggaXMgZGVmaW5lZCBpbiBDb3Jl
Rm91bmRhdGlvbi9DRkJhc2UuaAordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJbnQ4OworI2VuZGlm
CisjZW5kaWYKKworI2lmIFVTRShDRykKK3VzaW5nIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0ID0g
c3RydWN0IENHQ29udGV4dDsKKyNlbGlmIFVTRShDQUlSTykKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIEdyYXBoaWNzQ29udGV4dENhaXJvOworfQordXNpbmcgUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWlybzsKKyNlbHNlCit1c2luZyBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dCA9IHZvaWQ7CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRCb3hJdGVyYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dEJveEl0ZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdlNjhl
MzhmMDIzN2IwMjIwY2Y2NWJhMmMxMGU4ODg4ZGQ0OTg1NAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRCb3hJdGVyYXRvci5oCkBAIC0wLDAg
KzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJUZXh0UnVuLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgVGV4dEJveEl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBUZXh0Qm94SXRlcmF0
b3IoKQorICAgICAgICA6IG1fdGV4dFJ1bigwKQorICAgICAgICAsIG1fb2Zmc2V0KDApCisgICAg
eworICAgIH0KKworICAgIFRleHRCb3hJdGVyYXRvcihjb25zdCBUZXh0UnVuKiB0ZXh0UnVuLCB1
bnNpZ25lZCBvZmZzZXQpCisgICAgICAgIDogbV90ZXh0UnVuKHRleHRSdW4pCisgICAgICAgICwg
bV9vZmZzZXQob2Zmc2V0KQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBvZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIHZvaWQgaW5jcmVtZW50KCkgeyBtX29mZnNl
dCsrOyB9CisgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX3RleHRSdW4gfHwgbV9v
ZmZzZXQgPj0gbV90ZXh0UnVuLT5sZW5ndGgoKTsgfQorICAgIFVDaGFyIGN1cnJlbnQoKSBjb25z
dCB7IHJldHVybiAoKm1fdGV4dFJ1bilbbV9vZmZzZXRdOyB9CisgICAgVUNoYXJEaXJlY3Rpb24g
ZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gYXRFbmQoKSA/IFVfT1RIRVJfTkVVVFJBTCA6IHVf
Y2hhckRpcmVjdGlvbihjdXJyZW50KCkpOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
VGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29m
ZnNldCA9PSBvdGhlci5tX29mZnNldCAmJiBtX3RleHRSdW4gPT0gb3RoZXIubV90ZXh0UnVuOwor
ICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVy
KSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KKworcHJpdmF0ZToKKyAgICBj
b25zdCBUZXh0UnVuKiBtX3RleHRSdW47CisgICAgdW5zaWduZWQgbV9vZmZzZXQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9DR0NvbnRleHRTdGF0ZVNhdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9DR0NvbnRleHRTdGF0ZVNhdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg1NmEw
NDM5M2ZkMjRlOTYyOGY2ZmU5MzQ2OWVlYmVhNGFiYjU5OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NHQ29udGV4dFN0YXRlU2F2ZXIuaApA
QCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShDRykKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBDR0NvbnRleHRTdGF0ZVNhdmVyIHsKK3B1YmxpYzoKKyAgICBDR0NvbnRl
eHRTdGF0ZVNhdmVyKENHQ29udGV4dFJlZiBjb250ZXh0LCBib29sIHNhdmVBbmRSZXN0b3JlID0g
dHJ1ZSkKKyAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAgICAgLCBtX3NhdmVBbmRS
ZXN0b3JlKHNhdmVBbmRSZXN0b3JlKQorICAgIHsKKyAgICAgICAgaWYgKG1fc2F2ZUFuZFJlc3Rv
cmUpCisgICAgICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKG1fY29udGV4dCk7CisgICAgfQor
ICAgIAorICAgIH5DR0NvbnRleHRTdGF0ZVNhdmVyKCkKKyAgICB7CisgICAgICAgIGlmIChtX3Nh
dmVBbmRSZXN0b3JlKQorICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShtX2NvbnRl
eHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNhdmUoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFtX3NhdmVBbmRSZXN0b3JlKTsKKyAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShtX2NvbnRl
eHQpOworICAgICAgICBtX3NhdmVBbmRSZXN0b3JlID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lk
IHJlc3RvcmUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2F2ZUFuZFJlc3RvcmUpOworICAg
ICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKG1fY29udGV4dCk7CisgICAgICAgIG1fc2F2ZUFu
ZFJlc3RvcmUgPSBmYWxzZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBkaWRTYXZlKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX3NhdmVBbmRSZXN0b3JlOworICAgIH0KKyAgICAKK3By
aXZhdGU6CisgICAgQ0dDb250ZXh0UmVmIG1fY29udGV4dDsKKyAgICBib29sIG1fc2F2ZUFuZFJl
c3RvcmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ0cp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuaAppbmRleCA0NjhhNDRiYWE4NmVlNTI2MTlkMjU1ZjkzOTQzYTk3NTViYWM5
ZmFiLi42MDNiMGU5MzZlZmI1MjhjYWMzZDdhZGM4NjZlOTk1N2VlMzBlYmVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAy
MDEwLCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNTMgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQog
CisjaWYgVVNFKENHKQorCiAjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0dBZmZpbmVUcmFuc2Zv
cm0gZ2V0VXNlclRvQmFzZUNUTShDR0NvbnRleHRSZWYpOwotCi1jbGFzcyBDR0NvbnRleHRTdGF0
ZVNhdmVyIHsKLXB1YmxpYzoKLSAgICBDR0NvbnRleHRTdGF0ZVNhdmVyKENHQ29udGV4dFJlZiBj
b250ZXh0LCBib29sIHNhdmVBbmRSZXN0b3JlID0gdHJ1ZSkKLSAgICAgICAgOiBtX2NvbnRleHQo
Y29udGV4dCkKLSAgICAgICAgLCBtX3NhdmVBbmRSZXN0b3JlKHNhdmVBbmRSZXN0b3JlKQotICAg
IHsKLSAgICAgICAgaWYgKG1fc2F2ZUFuZFJlc3RvcmUpCi0gICAgICAgICAgICBDR0NvbnRleHRT
YXZlR1N0YXRlKG1fY29udGV4dCk7Ci0gICAgfQotICAgIAotICAgIH5DR0NvbnRleHRTdGF0ZVNh
dmVyKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX3NhdmVBbmRSZXN0b3JlKQotICAgICAgICAgICAg
Q0dDb250ZXh0UmVzdG9yZUdTdGF0ZShtX2NvbnRleHQpOwotICAgIH0KLSAgICAKLSAgICB2b2lk
IHNhdmUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX3NhdmVBbmRSZXN0b3JlKTsKLSAgICAg
ICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShtX2NvbnRleHQpOwotICAgICAgICBtX3NhdmVBbmRSZXN0
b3JlID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlc3RvcmUoKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fc2F2ZUFuZFJlc3RvcmUpOwotICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRl
KG1fY29udGV4dCk7Ci0gICAgICAgIG1fc2F2ZUFuZFJlc3RvcmUgPSBmYWxzZTsKLSAgICB9Ci0g
ICAgCi0gICAgYm9vbCBkaWRTYXZlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3Nh
dmVBbmRSZXN0b3JlOwotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgQ0dDb250ZXh0UmVmIG1f
Y29udGV4dDsKLSAgICBib29sIG1fc2F2ZUFuZFJlc3RvcmU7Ci19OwotCiBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBHcmFwaGljc0NvbnRleHRDRyA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHQgewogcHVi
bGljOgogICAgIEdyYXBoaWNzQ29udGV4dENHKENHQ29udGV4dFJlZik7CkBAIC0xNzksNSArMTM5
LDEwIEBAIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBtX2Rh
dGEgeyBudWxscHRyIH07CiB9OwogCi19CitDR0FmZmluZVRyYW5zZm9ybSBnZXRVc2VyVG9CYXNl
Q1RNKENHQ29udGV4dFJlZik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2luY2x1ZGUg
IkNHQ29udGV4dFN0YXRlU2F2ZXIuaCIKIAorI2VuZGlmIC8vIFVTRShDRykK
</data>
<flag name="review"
          id="482640"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454871</attachid>
            <date>2022-03-16 11:46:35 -0700</date>
            <delta_ts>2022-03-16 13:53:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237944-20220316114634.patch</filename>
            <type>text/plain</type>
            <size>87677</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYxYzkxNGQ3NWIzNDQ1
M2VkMjI3NWQ3MjU2NTY0YTEwYWE0MTEyNS4uNTRiNGE3MzQ0ZjkxZDhjOTU0ZjI3ZmI5ZjdlZmNi
ZGFiMGNhNWU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIyLTAzLTE2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TW92ZSBvdGhlciBjbGFzc2VzIG91dCBvZiBHcmFwaGljc0NvbnRleHQuaAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3OTQ0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIFRoaXMgaXMgYSBzdGVwIHRvd2FyZHMg
bWFraW5nIEdyYXBoaWNzQ29udGV4dFN0YXRlIGEgY2xhc3MgYW5kIG1vdmUKKyAgICAgICAgbW9y
ZSBmdW5jdGlvbmFsaXRpZXMgdG8gaXQuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAg
ICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21h
a2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVy
YXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94SXRlcmF0b3I6Om9mZnNl
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94SXRlcmF0b3I6Omlu
Y3JlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94SXRlcmF0b3I6OmF0
RW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6
Y3VycmVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94SXRlcmF0
b3I6OmRpcmVjdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0Qm94
SXRlcmF0b3I6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvciE9IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6bWVyZ2VDaGFuZ2Vz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdl
OjpjaGFuZ2VzRnJvbVN0YXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphY2N1bXVsYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphcHBseSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6ZHVtcCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjplbmNvZGUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6OmRlY29kZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlcjo6R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyOjp+R3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyOjpzYXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI6OnJlc3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcjo6Y29udGV4dCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpUcmFuc3BhcmVuY3lMYXllclNjb3BlOjpUcmFuc3BhcmVuY3lM
YXllclNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUxheWVy
U2NvcGU6OmJlZ2luTGF5ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJl
bmN5TGF5ZXJTY29wZTo6flRyYW5zcGFyZW5jeUxheWVyU2NvcGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVTdGFja0NoZWNrZXI6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlU3RhY2tDaGVja2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlU3RhY2tDaGVja2VyOjp+R3JhcGhpY3NDb250ZXh0U3RhdGVTdGFja0No
ZWNrZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJwb2xhdGlvblF1YWxpdHlN
YWludGFpbmVyOjpJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyOjp+SW50ZXJwb2xh
dGlvblF1YWxpdHlNYWludGFpbmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJnZUNoYW5nZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmNoYW5nZXNGcm9tU3RhdGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFjY3VtdWxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmFwcGx5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpk
dW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OkdyYXBoaWNzQ29udGV4dFN0YXRl
Q2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlcjo6R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyOjp+R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyOjpzYXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI6OnJlc3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcjo6Y29udGV4dCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFuc3BhcmVuY3lMYXllclNjb3BlOjpUcmFuc3BhcmVuY3lMYXllclNj
b3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUxheWVyU2NvcGU6OmJlZ2luTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5TGF5ZXJTY29wZTo6flRyYW5zcGFy
ZW5jeUxheWVyU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGVT
dGFja0NoZWNrZXI6OkdyYXBoaWNzQ29udGV4dFN0YXRlU3RhY2tDaGVja2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlU3RhY2tDaGVja2VyOjp+R3JhcGhpY3NDb250
ZXh0U3RhdGVTdGFja0NoZWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJwb2xhdGlvblF1
YWxpdHlNYWludGFpbmVyOjpJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyOjp+SW50ZXJwb2xhdGlv
blF1YWxpdHlNYWludGFpbmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c1R5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpk
ZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtR3JhcGhpY3NDb250
ZXh0Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRCb3hJdGVyYXRv
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0
ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6b2Zmc2V0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6aW5jcmVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRCb3hJdGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEJveEl0ZXJhdG9yOjpjdXJyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRCb3hJdGVyYXRvcjo6ZGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRCb3hJdGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Qm94SXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0NHQ29udGV4dFN0YXRlU2F2ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpD
R0NvbnRleHRTdGF0ZVNhdmVyOjpDR0NvbnRleHRTdGF0ZVNhdmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNHQ29udGV4dFN0YXRlU2F2ZXI6On5DR0NvbnRleHRTdGF0ZVNhdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNHQ29udGV4dFN0YXRlU2F2ZXI6OnNhdmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0dDb250ZXh0U3RhdGVTYXZlcjo6cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbnRl
eHRTdGF0ZVNhdmVyOjpkaWRTYXZlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5oOgorICAgICAgICAoV2ViQ29yZTo6Q0dDb250ZXh0U3Rh
dGVTYXZlcjo6Q0dDb250ZXh0U3RhdGVTYXZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDR0NvbnRleHRTdGF0ZVNhdmVyOjp+Q0dDb250ZXh0U3RhdGVTYXZlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDR0NvbnRleHRTdGF0ZVNhdmVyOjpzYXZlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNHQ29udGV4dFN0YXRlU2F2ZXI6OnJlc3RvcmUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q0dDb250ZXh0U3RhdGVTYXZlcjo6ZGlkU2F2ZSBjb25zdCk6IERl
bGV0ZWQuCisKIDIwMjItMDMtMTQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW21vZGVsXSA8bW9kZWwgaW50ZXJhY3RpdmU+IGRvZXNuJ3QgYWxsb3cgbW9k
ZWwgdG8gYmUgcm90YXRlZCBvbiBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDczNjQ0MmEwOGE3
NDUwMGEzNTJmMDRjMmUxMDZkOGM0MWU3YTRmYzUuLmNiZDUyYzFkMzlhODFkMTVmYzc3NWY2NTM2
M2M3OTUyOWE2OWI4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTQ5MSw2ICsxNDkxLDggQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMU3RhdGUuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmgK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaApAQCAtMTU1MCw2ICsxNTUyLDcgQEAgc2V0KFdlYkNv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtQXVkaW9UcmFja0NvbmZpZ3VyYXRpb24uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtQ29sb3JTcGFjZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmgK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUdyYXBoaWNzQ29udGV4dC5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1JbWFnZUJ1ZmZlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1
ZmZlckJhY2tlbmQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5kZXggNjJk
NDNlNmEzYTkzMjE1ZmYwNzU3YTQ3ODg0YThiNmM4NDRiODk2ZC4uZDA1NjViZWM5MjFmMGNkOTE1
ZTQ4ODVmZGY2YmEzMmEzYTZiZDNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNt
YWtlCkBAIC0xNTYsNiArMTU2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVI
b3N0Q2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVy
V2luLmgKIAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NHQ29udGV4dFN0YXRlU2F2ZXIuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhZGllbnRSZW5kZXJlckNHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDVkZWU3NTQw
NTM1NzlmNTViNTVmMmZlNGFkMGRkMGE2OWRlYmZkNGEuLmU0ZjYyNzE5MGNjODliZTg2ZDA2OTgx
ZjMxZDAxMzM2NTkyZTk2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC02NDAsNiAr
NjQwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlZpZGVvQ29udGFpbmVyTGF5ZXIuaAogCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ0dDb250ZXh0U3RhdGVTYXZlci5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9v
bC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDVjN2I3M2ViMjA1ZTA5ZWMyNDZlMDExZDBhNTAyZGNkNGMx
ZGNhNTAuLjQzY2MxMmY3YzI1OWE1MDY2ZmIzMzM5ZmY4ZjIyNGVmNmE4NmNmYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0yMDQ1LDYgKzIwNDUsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudElt
YWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0U3RhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4Mjk2MmJh
MDRlMmZmZDdmZmEwYzZlNjFkOWM5YzJjMTdhNWY2NDY3Li4xZTJmMjhlNWVkMTkyMmM4MDNiMDkz
YTM3ODNjMTJlNzc0Zjg2YTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzM1LDYgKzIzMzUsMTEgQEAKIAkJNzIxNDQzMzQy
MjNFQzkxNjAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBT
VkdQcm9wZXJ0eU93bmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzIxQjQ5NzQyNTEyQkEzQjAwRkU5RDNCIC8qIEltYWdlQml0bWFwQmFja2lu
Zy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIxQjQ5
NzAyNTEyQUMwNDAwRkU5RDNCIC8qIEltYWdlQml0bWFwQmFja2luZy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyMjgzRjBFMjMwQjI2OEMwMEY1
RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIEltYWdlUGFp
bnRpbmdPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNzIyQUYyREUyN0UxQzIwNjAwNzhEOTk3IC8qIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
MkFGMkRCMjdFMUMyMDQwMDc4RDk5NyAvKiBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIyQUYyREYy
N0UxQzIwNjAwNzhEOTk3IC8qIEdyYXBoaWNzQ29udGV4dFN0YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjJBRjJEQzI3RTFDMjA1MDA3OEQ5OTcg
LyogR3JhcGhpY3NDb250ZXh0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk3MjJBRjJFMjI3RTFDNDA1MDA3OEQ5OTcgLyogUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyMkFGMkUxMjdFMUM0MDMwMDc4RDk5NyAvKiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcy
MkFGMkU0MjdFMUNGMTMwMDc4RDk5NyAvKiBUZXh0Qm94SXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMkFGMkUzMjdFMUNGMTEwMDc4RDk5
NyAvKiBUZXh0Qm94SXRlcmF0b3IuaCAqLzsgfTsKKwkJNzIyQUYyRTYyN0UxRDBBMTAwNzhEOTk3
IC8qIENHQ29udGV4dFN0YXRlU2F2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyMkFGMkU1MjdFMUQwOUUwMDc4RDk5NyAvKiBDR0NvbnRleHRTdGF0
ZVNhdmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzI0Njk2M0IyNzVDNUZBNjAwQTkxNTZBIC8qIENTU0ZpbHRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1M0ZCODMyMTNCMUJCODAwQzQwRDM0
IC8qIENTU0ZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyNDY5NjNEMjc1QzYxNDQwMEE5MTU2QSAvKiBGaWx0ZXJFZmZlY3RWZWN0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMTRCOUI3
Mjc0NDU4RkEwMDNCRTZERiAvKiBGaWx0ZXJFZmZlY3RWZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjQ2OTYzRTI3NUM2MTY3MDBBOTE1
NkEgLyogRmlsdGVySW1hZ2VWZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyQjRFRjdDMjc0RUUzN0YwMDI5M0MyRiAvKiBGaWx0ZXJJbWFnZVZl
Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xMTMyNSw2ICsxMTMzMCwxMiBAQAogCQk3MjFCNDk2RjI1MTJBQzA0MDBGRTlEM0IgLyogSW1h
Z2VCaXRtYXBCYWNraW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQml0bWFwQmFja2lu
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMUI0OTcwMjUxMkFDMDQwMEZF
OUQzQiAvKiBJbWFnZUJpdG1hcEJhY2tpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCaXRtYXBC
YWNraW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMkE4MTVDMjM4RkQ1MDUw
MEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQW5pbWF0aW9u
RnJhbWVSYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMkFGMkRCMjdFMUMy
MDQwMDc4RDk5NyAvKiBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIyQUYyREMyN0UxQzIwNTAwNzhEOTk3IC8qIEdyYXBoaWNz
Q29udGV4dFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNz
Q29udGV4dFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMkFGMkREMjdF
MUMyMDUwMDc4RDk5NyAvKiBHcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRTdGF0ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMkFGMkUxMjdFMUM0MDMwMDc4RDk5NyAvKiBQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjJB
RjJFMzI3RTFDRjExMDA3OEQ5OTcgLyogVGV4dEJveEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRCb3hJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3MjJBRjJFNTI3RTFEMDlFMDA3OEQ5OTcgLyogQ0dDb250ZXh0U3RhdGVTYXZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDR0NvbnRleHRTdGF0ZVNhdmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNDM1RUY0MjczRDA3NjcwMDA1RTdF
RSAvKiBGaWx0ZXJJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJJbWFnZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjQzNUVGNTI3M0QwNzY3MDAwNUU3RUUgLyogRmlsdGVy
SW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsdGVySW1hZ2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MjRFRDMyOTFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxlbmRN
aW5NYXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUQmxlbmRN
aW5NYXguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg4MTAsNiArMjg4MjEs
NyBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTcyMkFGMkU1MjdFMUQwOUUwMDc4RDk5NyAv
KiBDR0NvbnRleHRTdGF0ZVNhdmVyLmggKi8sCiAJCQkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1
IC8qIENvbG9yQ0cuY3BwICovLAogCQkJCUJDQUZFREIzMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xv
clNwYWNlQ0cuY3BwICovLAogCQkJCUJDQUZFREIyMjU5NjhEMEIwMDMwRTZBQSAvKiBDb2xvclNw
YWNlQ0cuaCAqLywKQEAgLTI5MDQzLDYgKzI5MDU1LDkgQEAKIAkJCQk3QkIzNEE0NzI1Mzc3NkM3
MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8sCiAJCQkJ
N0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaCAqLywKIAkJCQk3Qjk1Q0ZFOTI3NTRGRjZFMDAwMDYwQ0UgLyogR3JhcGhpY3NDb250ZXh0
R0xTdGF0ZS5oICovLAorCQkJCTcyMkFGMkREMjdFMUMyMDUwMDc4RDk5NyAvKiBHcmFwaGljc0Nv
bnRleHRTdGF0ZS5jcHAgKi8sCisJCQkJNzIyQUYyREMyN0UxQzIwNTAwNzhEOTk3IC8qIEdyYXBo
aWNzQ29udGV4dFN0YXRlLmggKi8sCisJCQkJNzIyQUYyREIyN0UxQzIwNDAwNzhEOTk3IC8qIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIuaCAqLywKIAkJCQkwRjU4MEIwOTBGMTJBMjY5MDA1MUQ2
ODkgLyogR3JhcGhpY3NMYXllci5jcHAgKi8sCiAJCQkJMEY1ODBCMEEwRjEyQTI2OTAwNTFENjg5
IC8qIEdyYXBoaWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4MEIwQjBGMTJBMjY5MDA1MUQ2ODkgLyog
R3JhcGhpY3NMYXllckNsaWVudC5oICovLApAQCAtMjkxNDMsNiArMjkxNTgsNyBAQAogCQkJCUJD
QTU1OTEyMjYzREJENzkwMDdGMTlCMyAvKiBQaXhlbEZvcm1hdC5oICovLAogCQkJCUNERDA4QUJG
Mjc3RTU0RjAwMEVBMzc1NSAvKiBQbGF0Zm9ybUF1ZGlvVHJhY2tDb25maWd1cmF0aW9uLmggKi8s
CiAJCQkJQkMzRTYyNDIyNjU5NzkxNzAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oICov
LAorCQkJCTcyMkFGMkUxMjdFMUM0MDMwMDc4RDk5NyAvKiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dC5oICovLAogCQkJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmgg
Ki8sCiAJCQkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIu
aCAqLywKIAkJCQk1NTA2NDBBRDI0MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZl
ckJhY2tlbmQuaCAqLywKQEAgLTI5MTc3LDYgKzI5MTkzLDcgQEAKIAkJCQkwODc1NThDNDEzQjRB
NTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggKi8sCiAJCQkJ
OTVFOUY0NDQyN0M5QTM5QjAwOTQ1MzM3IC8qIFN5c3RlbUltYWdlLmggKi8sCiAJCQkJM0JCNkI4
MEYyMkE3RDMxMTAwM0EyQTY5IC8qIFRhYlNpemUuaCAqLywKKwkJCQk3MjJBRjJFMzI3RTFDRjEx
MDA3OEQ5OTcgLyogVGV4dEJveEl0ZXJhdG9yLmggKi8sCiAJCQkJMzc2RENDRTAxM0I0Rjk2NjAw
MkVCRUZDIC8qIFRleHRSdW4uY3BwICovLAogCQkJCUE4MjRCNDY0MEUyRUYyRUEwMDgxQTdCNyAv
KiBUZXh0UnVuLmggKi8sCiAJCQkJQ0QxRTczNDYxNjdCQzc4RTAwOUE4ODVEIC8qIFRleHRUcmFj
a1JlcHJlc2VudGF0aW9uLmNwcCAqLywKQEAgLTMzODczLDYgKzMzODkwLDcgQEAKIAkJCQlDREUz
QUUxMjI0QjQ5MTZBMDAxMjhFN0UgLyogQ0RNVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1RkE5MDRDQTE3OEU2MUY1MDA0QzhBMkQgLyogQ2VydGlmaWNhdGVJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MUI4RjBCNTIxOTUzRDY1MDAwQzJCMDAgLyogQ2VydGlmaWNhdGVTdW1tYXJ5
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjJBRjJFNjI3RTFEMEExMDA3OEQ5OTcgLyogQ0dDb250
ZXh0U3RhdGVTYXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzNkZEMTUxNkM3ODI2NTAwRjg4
N0MxIC8qIENoYW5nZVZlcnNpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNjlERDE1
MDVGMDc2MDAxQjc0QUMgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUU3ODVEOTE1MjRCNEQxQ0EwMDE0REIyMSAvKiBDaGFubmVsQ291bnRNb2RlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM0Nzk4LDYgKzM0ODE2LDggQEAKIAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAw
OUQ0NDcgLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTdC
OTVDRkVCMjc1NEZGNkUwMDAwNjBDRSAvKiBHcmFwaGljc0NvbnRleHRHTFN0YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODBENjcwODBFOUU5REVCMDBFNDIwRjAgLyogR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlQ0cuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMkFGMkRGMjdFMUMyMDYw
MDc4RDk5NyAvKiBHcmFwaGljc0NvbnRleHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIy
QUYyREUyN0UxQzIwNjAwNzhEOTk3IC8qIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhp
Y3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBGMTJBMjY5MDA1MUQ2ODkg
LyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjcwNSw2ICszNjcy
NSw3IEBACiAJCQkJQkNBQTQ4NzAxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0
b3J5TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZEQkUgLyog
UGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1MUQ1NEY1
RkIwMEREN0M2OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMkFG
MkUyMjdFMUM0MDUwMDc4RDk5NyAvKiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTJENzcwNUM3MjU1Mjc2Q0QwMDFEMEM5NCAvKiBQbGF0Zm9ybUlt
YWdlQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTA2NDBBRjI0MDc1ODJEMDBBQUUwNDUg
LyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLApAQCAtMzc3ODUs
NiArMzc4MDYsNyBAQAogCQkJCUNFN0IyREI1MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTREQ0U2MTg4MTA1MUQwMDNF
RURCQiAvKiBUZXh0QXV0b1NpemluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMzQwRDAw
NkMxRDAwRUY2RjI2IC8qIFRleHRCb3VuZGFyaWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjJB
RjJFNDI3RTFDRjEzMDA3OEQ5OTcgLyogVGV4dEJveEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNDQwREY1NjI2RUI1M0UwMDA0QUYwNkIgLyogVGV4dEJveFBhaW50ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0NDdGNUIzMjY2Q0Y2M0QwMDEzM0YwMCAvKiBUZXh0Qm94U2VsZWN0YWJs
ZVJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzE1MUJEODEyRjE1NThGMDA1QTBGNjQgLyog
VGV4dENoZWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMGJiMTM1OTdj
ZWE3MzY5ZGJiYzZlMTcyN2YyNmM5MmI4ZmI3NTE3Ni4uM2MzNzRmZDliYTgyN2M5NGI3ZjM0Yjc0
NDZhNWY3YWJjOGEzZTg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQmlkaVJlc29sdmVyLmgiCi0jaW5jbHVk
ZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJGaWx0ZXJJ
bWFnZS5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKQEAgLTM5LDMzMyArMzgsMTEg
QEAKICNpbmNsdWRlICJOdWxsR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUm91bmRlZFJl
Y3QuaCIKICNpbmNsdWRlICJTeXN0ZW1JbWFnZS5oIgotI2luY2x1ZGUgIlRleHRSdW4uaCIKKyNp
bmNsdWRlICJUZXh0Qm94SXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFt
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGV4dEJveEl0ZXJhdG9yIHsKLXB1
YmxpYzoKLSAgICBUZXh0Qm94SXRlcmF0b3IoKQotICAgICAgICA6IG1fdGV4dFJ1bigwKQotICAg
ICAgICAsIG1fb2Zmc2V0KDApCi0gICAgewotICAgIH0KLQotICAgIFRleHRCb3hJdGVyYXRvcihj
b25zdCBUZXh0UnVuKiB0ZXh0UnVuLCB1bnNpZ25lZCBvZmZzZXQpCi0gICAgICAgIDogbV90ZXh0
UnVuKHRleHRSdW4pCi0gICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgIHsKLSAgICB9Ci0K
LSAgICB1bnNpZ25lZCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQotICAgIHZv
aWQgaW5jcmVtZW50KCkgeyBtX29mZnNldCsrOyB9Ci0gICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsg
cmV0dXJuICFtX3RleHRSdW4gfHwgbV9vZmZzZXQgPj0gbV90ZXh0UnVuLT5sZW5ndGgoKTsgfQot
ICAgIFVDaGFyIGN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAoKm1fdGV4dFJ1bilbbV9vZmZzZXRd
OyB9Ci0gICAgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gYXRFbmQo
KSA/IFVfT1RIRVJfTkVVVFJBTCA6IHVfY2hhckRpcmVjdGlvbihjdXJyZW50KCkpOyB9Ci0KLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldCAmJiBtX3RleHRS
dW4gPT0gb3RoZXIubV90ZXh0UnVuOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhl
cik7IH0KLQotcHJpdmF0ZToKLSAgICBjb25zdCBUZXh0UnVuKiBtX3RleHRSdW47Ci0gICAgdW5z
aWduZWQgbV9vZmZzZXQ7Ci19OwotCi0jZGVmaW5lIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZ
KGZsYWcsIHByb3BlcnR5KSBcCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmZsYWcpICYmIChtX3N0YXRlLnByb3BlcnR5ICE9IHN0YXRlLnByb3Bl
cnR5KSkgXAotICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZs
YWcpOwotCi1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoKQotICAg
IDogc2hvdWxkQW50aWFsaWFzKHRydWUpCi0gICAgLCBzaG91bGRTbW9vdGhGb250cyh0cnVlKQot
ICAgICwgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKHRydWUpCi0gICAgLCBzaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyhmYWxzZSkKLSAgICAsIGRyYXdMdW1pbmFuY2VNYXNrKGZhbHNlKQotewot
fQotCi1HcmFwaGljc0NvbnRleHRTdGF0ZTo6fkdyYXBoaWNzQ29udGV4dFN0YXRlKCkgPSBkZWZh
dWx0OwotR3JhcGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJikgPSBkZWZhdWx0OwotR3JhcGhpY3NDb250ZXh0U3RhdGU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpID0gZGVmYXVsdDsKLUdy
YXBoaWNzQ29udGV4dFN0YXRlJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6b3BlcmF0b3I9KGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJikgPSBkZWZhdWx0OwotR3JhcGhpY3NDb250ZXh0U3RhdGUm
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRvcj0oR3JhcGhpY3NDb250ZXh0U3RhdGUmJikg
PSBkZWZhdWx0OwotCi12b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJnZUNoYW5nZXMoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Rh
dGVDaGFuZ2VGbGFncyBmbGFncykKLXsKLSAgICBhdXRvIHN0cm9rZUZsYWdzID0geyBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dHJva2VHcmFkaWVudENoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5D
aGFuZ2UgfTsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoc3Ryb2tlRmxhZ3MpKSB7Ci0gICAg
ICAgIHN0cm9rZUNvbG9yID0gc3RhdGUuc3Ryb2tlQ29sb3I7Ci0gICAgICAgIHN0cm9rZUdyYWRp
ZW50ID0gc3RhdGUuc3Ryb2tlR3JhZGllbnQ7Ci0gICAgICAgIHN0cm9rZVBhdHRlcm4gPSBzdGF0
ZS5zdHJva2VQYXR0ZXJuOwotICAgIH0KLQotICAgIGF1dG8gZmlsbEZsYWdzID0geyBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Rmls
bEdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2Ug
fTsKLSAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoZmlsbEZsYWdzKSkgewotICAgICAgICBmaWxs
Q29sb3IgPSBzdGF0ZS5maWxsQ29sb3I7Ci0gICAgICAgIGZpbGxHcmFkaWVudCA9IHN0YXRlLmZp
bGxHcmFkaWVudDsKLSAgICAgICAgZmlsbFBhdHRlcm4gPSBzdGF0ZS5maWxsUGF0dGVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRv
d0NoYW5nZSkpIHsKLSAgICAgICAgc2hhZG93T2Zmc2V0ID0gc3RhdGUuc2hhZG93T2Zmc2V0Owot
ICAgICAgICBzaGFkb3dCbHVyID0gc3RhdGUuc2hhZG93Qmx1cjsKLSAgICAgICAgc2hhZG93Q29s
b3IgPSBzdGF0ZS5zaGFkb3dDb2xvcjsKLSAgICAgICAgc2hhZG93UmFkaXVzTW9kZSA9IHN0YXRl
LnNoYWRvd1JhZGl1c01vZGU7Ci0gICAgfQotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICBzdHJva2VU
aGlja25lc3MgPSBzdGF0ZS5zdHJva2VUaGlja25lc3M7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpCi0gICAgICAg
IHRleHREcmF3aW5nTW9kZSA9IHN0YXRlLnRleHREcmF3aW5nTW9kZTsKLQotICAgIGlmIChmbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKQotICAg
ICAgICBzdHJva2VTdHlsZSA9IHN0YXRlLnN0cm9rZVN0eWxlOwotCi0gICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSkpCi0gICAgICAgIGZp
bGxSdWxlID0gc3RhdGUuZmlsbFJ1bGU7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgYWxwaGEgPSBzdGF0ZS5hbHBo
YTsKLQotICAgIGlmIChmbGFncy5jb250YWluc0FueSh7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
b21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVD
aGFuZ2UgfSkpIHsKLSAgICAgICAgY29tcG9zaXRlT3BlcmF0b3IgPSBzdGF0ZS5jb21wb3NpdGVP
cGVyYXRvcjsKLSAgICAgICAgYmxlbmRNb2RlID0gc3RhdGUuYmxlbmRNb2RlOwotICAgIH0KLQot
ICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFs
aWFzQ2hhbmdlKSkKLSAgICAgICAgc2hvdWxkQW50aWFsaWFzID0gc3RhdGUuc2hvdWxkQW50aWFs
aWFzOwotCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRTbW9vdGhGb250c0NoYW5nZSkpCi0gICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gc3RhdGUu
c2hvdWxkU21vb3RoRm9udHM7Ci0KLSAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkpCi0gICAgICAgIHNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHN0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250czsKLQotICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpKQotICAgICAgICBzaGFkb3dzSWdub3JlVHJhbnNm
b3JtcyA9IHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwotCi0gICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSkpCi0g
ICAgICAgIGRyYXdMdW1pbmFuY2VNYXNrID0gc3RhdGUuZHJhd0x1bWluYW5jZU1hc2s7Ci0KLSAg
ICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHlDaGFuZ2UpKQotICAgICAgICBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0g
c3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLQotI2lmIEhBVkUoT1NfREFSS19NT0RF
X1NVUFBPUlQpCi0gICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpV
c2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkpCi0gICAgICAgIHVzZURhcmtBcHBlYXJhbmNlID0gc3Rh
dGUudXNlRGFya0FwcGVhcmFuY2U7Ci0jZW5kaWYKLX0KLQotR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmNoYW5nZXNGcm9t
U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKSBjb25zdAotewotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzOwotCi0gICAg
Q0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoU3Ryb2tlR3JhZGllbnRDaGFuZ2UsIHN0cm9rZUdy
YWRpZW50KTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VQYXR0ZXJuQ2hh
bmdlLCBzdHJva2VQYXR0ZXJuKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShGaWxs
R3JhZGllbnRDaGFuZ2UsIGZpbGxHcmFkaWVudCk7Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJP
UEVSVFkoRmlsbFBhdHRlcm5DaGFuZ2UsIGZpbGxQYXR0ZXJuKTsKLQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpCi0gICAg
ICAgICYmIChtX3N0YXRlLnNoYWRvd09mZnNldCAhPSBzdGF0ZS5zaGFkb3dPZmZzZXQKLSAgICAg
ICAgICAgIHx8IG1fc3RhdGUuc2hhZG93Qmx1ciAhPSBzdGF0ZS5zaGFkb3dCbHVyCi0gICAgICAg
ICAgICB8fCBtX3N0YXRlLnNoYWRvd0NvbG9yICE9IHN0YXRlLnNoYWRvd0NvbG9yKSkKLSAgICAg
ICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpOwot
Ci0gICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoU3Ryb2tlVGhpY2tuZXNzQ2hhbmdlLCBz
dHJva2VUaGlja25lc3MpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFRleHREcmF3
aW5nTW9kZUNoYW5nZSwgdGV4dERyYXdpbmdNb2RlKTsKLSAgICBDSEVDS19GT1JfQ0hBTkdFRF9Q
Uk9QRVJUWShTdHJva2VDb2xvckNoYW5nZSwgc3Ryb2tlQ29sb3IpOwotICAgIENIRUNLX0ZPUl9D
SEFOR0VEX1BST1BFUlRZKEZpbGxDb2xvckNoYW5nZSwgZmlsbENvbG9yKTsKLSAgICBDSEVDS19G
T1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VTdHlsZUNoYW5nZSwgc3Ryb2tlU3R5bGUpOwotICAg
IENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKEZpbGxSdWxlQ2hhbmdlLCBmaWxsUnVsZSk7Ci0g
ICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoQWxwaGFDaGFuZ2UsIGFscGhhKTsKLQotICAg
IGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNv
bXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNo
YW5nZSB9KQotICAgICAgICAmJiAobV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciAhPSBzdGF0ZS5j
b21wb3NpdGVPcGVyYXRvciB8fCBtX3N0YXRlLmJsZW5kTW9kZSAhPSBzdGF0ZS5ibGVuZE1vZGUp
KSB7Ci0gICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9z
aXRlT3BlcmF0aW9uQ2hhbmdlKTsKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UpOwotICAgIH0KLQotICAgIENIRUNLX0ZPUl9DSEFO
R0VEX1BST1BFUlRZKFNob3VsZEFudGlhbGlhc0NoYW5nZSwgc2hvdWxkQW50aWFsaWFzKTsKLSAg
ICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTaG91bGRTbW9vdGhGb250c0NoYW5nZSwgc2hv
dWxkU21vb3RoRm9udHMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSwgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsK
LSAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0No
YW5nZSwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BS
T1BFUlRZKERyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlLCBkcmF3THVtaW5hbmNlTWFzayk7Ci0gICAg
Q0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5n
ZSwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9T
VVBQT1JUKQotICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFVzZURhcmtBcHBlYXJhbmNl
Q2hhbmdlLCB1c2VEYXJrQXBwZWFyYW5jZSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBjaGFuZ2VG
bGFnczsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11bGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotewotICAgIG1fc3RhdGUubWVyZ2VDaGFuZ2VzKHN0YXRl
LCBmbGFncyk7Ci0KLSAgICBhdXRvIHN0cm9rZUZsYWdzID0geyBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVu
dENoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UgfTsKLSAg
ICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoc3Ryb2tlRmxhZ3MpKQotICAgICAgICBtX2NoYW5nZUZs
YWdzLnJlbW92ZShzdHJva2VGbGFncyk7Ci0KLSAgICBhdXRvIGZpbGxGbGFncyA9IHsgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxHcmFkaWVudENoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdl
IH07Ci0gICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KGZpbGxGbGFncykpCi0gICAgICAgIG1fY2hh
bmdlRmxhZ3MucmVtb3ZlKGZpbGxGbGFncyk7Ci0KLSAgICBhdXRvIGNvbXBvc2l0ZU9wZXJhdG9y
RmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2Us
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfTsKLSAgICBpZiAoZmxhZ3Mu
Y29udGFpbnNBbnkoY29tcG9zaXRlT3BlcmF0b3JGbGFncykpCi0gICAgICAgIG1fY2hhbmdlRmxh
Z3MucmVtb3ZlKGNvbXBvc2l0ZU9wZXJhdG9yRmxhZ3MpOwotCi0gICAgbV9jaGFuZ2VGbGFncy5h
ZGQoZmxhZ3MpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjphcHBseShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Ci17Ci0gICAgaWYgKG1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkKLSAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudCgqbV9zdGF0ZS5zdHJva2VHcmFkaWVudCwg
bV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKLQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdl
KSkKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VQYXR0ZXJuKCptX3N0YXRlLnN0cm9rZVBhdHRl
cm4pOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkZpbGxHcmFkaWVudENoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50
KCptX3N0YXRlLmZpbGxHcmFkaWVudCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9y
bSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxQYXR0ZXJuKCpt
X3N0YXRlLmZpbGxQYXR0ZXJuKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCi0gICAg
ICAgIGNvbnRleHQuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMobV9zdGF0ZS5zaGFkb3dzSWdu
b3JlVHJhbnNmb3Jtcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRTaGFkb3co
bV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Qmx1ciwgbV9zdGF0ZS5zaGFkb3dD
b2xvciwgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQot
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhtX3N0YXRlLnN0cm9rZVRoaWNrbmVz
cyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRUZXh0RHJhd2lu
Z01vZGUobV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAgICAg
ICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihtX3N0YXRlLnN0cm9rZUNvbG9yKTsKLQotICAgIGlm
IChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JD
aGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtX3N0YXRlLmZpbGxDb2xvcik7
Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3Ryb2tlU3R5bGVDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKG1fc3Rh
dGUuc3Ryb2tlU3R5bGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAgY29udGV4dC5zZXRGaWxs
UnVsZShtX3N0YXRlLmZpbGxSdWxlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0
QWxwaGEobV9zdGF0ZS5hbHBoYSk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWluc0Fu
eSh7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfSkpCi0gICAgICAgIGNvbnRleHQuc2V0
Q29tcG9zaXRlT3BlcmF0aW9uKG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IsIG1fc3RhdGUuYmxl
bmRNb2RlKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKQotICAgICAgICBjb250ZXh0LnNldFNob3Vs
ZEFudGlhbGlhcyhtX3N0YXRlLnNob3VsZEFudGlhbGlhcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFu
Z2UpKQotICAgICAgICBjb250ZXh0LnNldFNob3VsZFNtb290aEZvbnRzKG1fc3RhdGUuc2hvdWxk
U21vb3RoRm9udHMpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkpCi0gICAgICAg
IGNvbnRleHQuc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKG1fc3RhdGUuc2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSkpCi0gICAgICAgIGNv
bnRleHQuc2V0RHJhd0x1bWluYW5jZU1hc2sobV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzayk7Ci0K
LSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpCi0gICAgICAgIGNvbnRleHQuc2V0SW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eShtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOwot
Ci0jaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBpZiAobV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UpKQot
ICAgICAgICBjb250ZXh0LnNldFVzZURhcmtBcHBlYXJhbmNlKG1fc3RhdGUudXNlRGFya0FwcGVh
cmFuY2UpOwotI2VuZGlmCi19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1
bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjaGFuZ2Ut
ZmxhZ3MiLCBtX2NoYW5nZUZsYWdzLnRvUmF3KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkKLSAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtZ3JhZGllbnQiLCBtX3N0YXRlLnN0cm9rZUdy
YWRpZW50LmdldCgpKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJzdHJva2UtcGF0dGVybiIsIG1fc3RhdGUuc3Ryb2tlUGF0dGVybi5nZXQoKSk7Ci0KLSAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdy
YWRpZW50Q2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLWdyYWRpZW50Iiwg
bV9zdGF0ZS5maWxsR3JhZGllbnQuZ2V0KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkKLSAgICAgICAg
dHMuZHVtcFByb3BlcnR5KCJmaWxsLXBhdHRlcm4iLCBtX3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgp
KTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaGFkb3dDaGFuZ2UpKSB7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93LWJsdXIi
LCBtX3N0YXRlLnNoYWRvd0JsdXIpOwotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNoYWRvdy1v
ZmZzZXQiLCBtX3N0YXRlLnNoYWRvd09mZnNldCk7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
c2hhZG93LWNvbG9yIiwgbV9zdGF0ZS5zaGFkb3dDb2xvcik7Ci0gICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgic2hhZG93cy11c2UtbGVnYWN5LXJhZGl1cyIsIG1fc3RhdGUuc2hhZG93UmFkaXVzTW9k
ZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdhY3kpOwotICAgIH0KLQotICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFu
Z2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS10aGlja25lc3MiLCBtX3N0YXRl
LnN0cm9rZVRoaWNrbmVzcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJ0ZXh0LWRyYXdpbmctbW9kZSIsIG1fc3RhdGUudGV4dERyYXdpbmdNb2RlLnRv
UmF3KCkpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJv
a2UtY29sb3IiLCBtX3N0YXRlLnN0cm9rZUNvbG9yKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImZpbGwtY29sb3IiLCBtX3N0YXRlLmZpbGxDb2xvcik7Ci0KLSAg
ICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tl
U3R5bGVDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1zdHlsZSIsIG1f
c3RhdGUuc3Ryb2tlU3R5bGUpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJmaWxsLXJ1bGUiLCBtX3N0YXRlLmZpbGxSdWxlKTsKLQotICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCi0gICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgiYWxwaGEiLCBtX3N0YXRlLmFscGhhKTsKLQotICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRp
b25DaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImNvbXBvc2l0ZS1vcGVyYXRvciIs
IG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IpOwotCi0gICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSkpCi0gICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgiYmxlbmQtbW9kZSIsIG1fc3RhdGUuYmxlbmRNb2RlKTsKLQotICAgIGlm
IChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRBbnRp
YWxpYXNDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1hbnRpYWxpYXMi
LCBtX3N0YXRlLnNob3VsZEFudGlhbGlhcyk7Ci0KLSAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpKQotICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1zbW9vdGgtZm9udHMiLCBtX3N0YXRlLnNob3Vs
ZFNtb290aEZvbnRzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1zdWJwaXhlbC1xdWFudGl6ZS1mb250cyIsIG1fc3Rh
dGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKLQotICAgIGlmIChtX2NoYW5nZUZsYWdz
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0No
YW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93cy1pZ25vcmUtdHJhbnNmb3Jt
cyIsIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwotCi0gICAgaWYgKG1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VNYXNrQ2hh
bmdlKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJkcmF3LWx1bWluYW5jZS1tYXNrIiwgbV9z
dGF0ZS5kcmF3THVtaW5hbmNlTWFzayk7Ci0KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JU
KQotICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpV
c2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidXNlLWRh
cmstYXBwZWFyYW5jZSIsIG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2UpOwotI2VuZGlmCi19Ci0K
LVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSkKLXsKLSAgICBzdGF0ZUNoYW5nZS5kdW1wKHRz
KTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIEdyYXBoaWNzQ29udGV4dDo6fkdyYXBoaWNzQ29udGV4
dCgpCiB7CiAgICAgQVNTRVJUKG1fc3RhY2suaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZmI5NWRkMjVi
MjcxZGViOWZhODVmZjJkOWYxZjc0NzE2YTA2NmJhZS4uMzlmMzAxZGU2MGZjNTM5NGMyY2ExNDRl
ZTc1MTA4YjNmYzZkM2ZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDAzLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0zMCw0OSArMzAsMTggQEAKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgotI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRTdGF0ZS5oIgog
I2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1
ZGUgIlBhdHRlcm4uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlJlbmRlcmluZ01vZGUuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAKLSNp
ZiBVU0UoQ0cpCi10eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQ7Ci0jZWxpZiBVU0UoQ0FJUk8pCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBHcmFwaGlj
c0NvbnRleHRDYWlybzsKLX0KLXR5cGVkZWYgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm8g
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7Ci0jZWxzZQotdHlwZWRlZiB2b2lkIFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0OwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVkZSAiRElC
UGl4ZWxEYXRhLmgiCi10eXBlZGVmIHN0cnVjdCBIRENfXyogSERDOwotI2lmICFVU0UoQ0cpCi0v
LyBVSW50OCBpcyBkZWZpbmVkIGluIENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oCi10eXBlZGVmIHVu
c2lnbmVkIGNoYXIgVUludDg7Ci0jZW5kaWYKLSNlbmRpZgotCi0vLyBYMTEgaGVhZGVycyBkZWZp
bmUgYSBidW5jaCBvZiBtYWNyb3Mgd2l0aCBjb21tb24gdGVybXMsIGludGVyZmVyaW5nIHdpdGgg
V2ViQ29yZSBhbmQgV1RGIGVudW0gdmFsdWVzLgotLy8gQXMgYSB3b3JrYXJvdW5kLCB3ZSBleHBs
aWNpdGx5IHVuZGVmIHRoZW0gaGVyZS4KLSNpZiBkZWZpbmVkKE5vbmUpCi0jdW5kZWYgTm9uZQot
I2VuZGlmCi0jaWYgZGVmaW5lZChCZWxvdykKLSN1bmRlZiBCZWxvdwotI2VuZGlmCi0jaWYgZGVm
aW5lZChTdWNjZXNzKQotI3VuZGVmIFN1Y2Nlc3MKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKQEAgLTkxLDE2OSArNjAsOCBAQCBjbGFzcyBT
eXN0ZW1JbWFnZTsKIGNsYXNzIFRleHRSdW47CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsK
IAotbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKLWNsYXNzIFJlY29yZGVyOwotfQotCi1lbnVtIGNs
YXNzIFRleHREcmF3aW5nTW9kZSA6IHVpbnQ4X3QgewotICAgIEZpbGwgPSAxIDw8IDAsCi0gICAg
U3Ryb2tlID0gMSA8PCAxLAotfTsKLXVzaW5nIFRleHREcmF3aW5nTW9kZUZsYWdzID0gT3B0aW9u
U2V0PFRleHREcmF3aW5nTW9kZT47Ci0KLS8vIExlZ2FjeSBzaGFkb3cgYmx1ciByYWRpdXMgaXMg
dXNlZCBmb3IgY2FudmFzLCBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgotLy8gSXQgaGFzIGRpZmZl
cmVudCB0cmVhdG1lbnQgb2YgcmFkaWkgPiA4cHguCi1lbnVtIGNsYXNzIFNoYWRvd1JhZGl1c01v
ZGUgOiBib29sIHsKLSAgICBEZWZhdWx0LAotICAgIExlZ2FjeQotfTsKLQotZW51bSBTdHJva2VT
dHlsZSB7Ci0gICAgTm9TdHJva2UsCi0gICAgU29saWRTdHJva2UsCi0gICAgRG90dGVkU3Ryb2tl
LAotICAgIERhc2hlZFN0cm9rZSwKLSAgICBEb3VibGVTdHJva2UsCi0gICAgV2F2eVN0cm9rZSwK
LX07Ci0KLXN0cnVjdCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSB7Ci0gICAgZW51bSBjbGFzcyBN
b2RlIDogdWludDhfdCB7Ci0gICAgICAgIFRleHRDaGVja2luZ0RpY3RhdGlvblBocmFzZVdpdGhB
bHRlcm5hdGl2ZXMsCi0gICAgICAgIFNwZWxsaW5nLAotICAgICAgICBHcmFtbWFyLAotICAgICAg
ICBBdXRvY29ycmVjdGlvblJlcGxhY2VtZW50LAotICAgICAgICBEaWN0YXRpb25BbHRlcm5hdGl2
ZXMKLSAgICB9IG1vZGU7Ci0gICAgYm9vbCBzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSB7IGZhbHNl
IH07Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCi10ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtb2RlOwotICAgIGVuY29k
ZXIgPDwgc2hvdWxkVXNlRGFya0FwcGVhcmFuY2U7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+Ci1zdGQ6Om9wdGlvbmFsPERvY3VtZW50TWFya2VyTGluZVN0eWxlPiBEb2N1bWVudE1hcmtl
ckxpbmVTdHlsZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgc3RkOjpvcHRpb25h
bDxNb2RlPiBtb2RlOwotICAgIGRlY29kZXIgPj4gbW9kZTsKLSAgICBpZiAoIW1vZGUpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNob3Vs
ZFVzZURhcmtBcHBlYXJhbmNlOwotICAgIGRlY29kZXIgPj4gc2hvdWxkVXNlRGFya0FwcGVhcmFu
Y2U7Ci0gICAgaWYgKCFzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLQotICAgIHJldHVybiB7eyAqbW9kZSwgKnNob3VsZFVzZURhcmtBcHBlYXJh
bmNlIH19OwotfQotCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U7CiAKLXN0cnVj
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7Ci0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250
ZXh0U3RhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB+R3JhcGhpY3NDb250ZXh0U3RhdGUoKTsK
LQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0
U3RhdGUmJik7Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSYgb3BlcmF0b3I9KGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIG9wZXJhdG9yPShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKTsKLQotICAgIGVudW0gQ2hh
bmdlIDogdWludDMyX3QgewotICAgICAgICBTdHJva2VHcmFkaWVudENoYW5nZSAgICAgICAgICAg
ICAgICAgICAgPSAxIDw8IDAsCi0gICAgICAgIFN0cm9rZVBhdHRlcm5DaGFuZ2UgICAgICAgICAg
ICAgICAgICAgICA9IDEgPDwgMSwKLSAgICAgICAgRmlsbEdyYWRpZW50Q2hhbmdlICAgICAgICAg
ICAgICAgICAgICAgID0gMSA8PCAyLAotICAgICAgICBGaWxsUGF0dGVybkNoYW5nZSAgICAgICAg
ICAgICAgICAgICAgICAgPSAxIDw8IDMsCi0gICAgICAgIFN0cm9rZVRoaWNrbmVzc0NoYW5nZSAg
ICAgICAgICAgICAgICAgICA9IDEgPDwgNCwKLSAgICAgICAgU3Ryb2tlQ29sb3JDaGFuZ2UgICAg
ICAgICAgICAgICAgICAgICAgID0gMSA8PCA1LAotICAgICAgICBTdHJva2VTdHlsZUNoYW5nZSAg
ICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDYsCi0gICAgICAgIEZpbGxDb2xvckNoYW5nZSAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgNywKLSAgICAgICAgRmlsbFJ1bGVDaGFuZ2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA4LAotICAgICAgICBTaGFkb3dDaGFuZ2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDksCi0gICAgICAgIFNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zQ2hhbmdlICAgICAgICAgICA9IDEgPDwgMTAsCi0gICAgICAgIEFscGhhQ2hh
bmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTEsCi0gICAgICAgIENvbXBv
c2l0ZU9wZXJhdGlvbkNoYW5nZSAgICAgICAgICAgICAgICA9IDEgPDwgMTIsCi0gICAgICAgIEJs
ZW5kTW9kZUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTMsCi0gICAgICAg
IFRleHREcmF3aW5nTW9kZUNoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTQsCi0gICAg
ICAgIFNob3VsZEFudGlhbGlhc0NoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTUsCi0g
ICAgICAgIFNob3VsZFNtb290aEZvbnRzQ2hhbmdlICAgICAgICAgICAgICAgICA9IDEgPDwgMTYs
Ci0gICAgICAgIFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSAgICAgICA9IDEgPDwg
MTcsCi0gICAgICAgIERyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlICAgICAgICAgICAgICAgICA9IDEg
PDwgMTgsCi0gICAgICAgIEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UgICAgICAgICA9
IDEgPDwgMTksCi0jaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICAgICAgVXNlRGFy
a0FwcGVhcmFuY2VDaGFuZ2UgICAgICAgICAgICAgICAgID0gMSA8PCAyMCwKLSNlbmRpZgotICAg
IH07Ci0gICAgdXNpbmcgU3RhdGVDaGFuZ2VGbGFncyA9IE9wdGlvblNldDxDaGFuZ2U+OwotCi0g
ICAgdm9pZCBtZXJnZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7Ci0KLSAgICBSZWZQdHI8R3JhZGllbnQ+
IHN0cm9rZUdyYWRpZW50OwotICAgIFJlZlB0cjxQYXR0ZXJuPiBzdHJva2VQYXR0ZXJuOwotICAg
IAotICAgIFJlZlB0cjxHcmFkaWVudD4gZmlsbEdyYWRpZW50OwotICAgIFJlZlB0cjxQYXR0ZXJu
PiBmaWxsUGF0dGVybjsKLQotICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7Ci0KLSAgICBDb2xv
ciBzdHJva2VDb2xvciB7IENvbG9yOjpibGFjayB9OwotICAgIENvbG9yIGZpbGxDb2xvciB7IENv
bG9yOjpibGFjayB9OwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwotCi0gICAgQWZmaW5lVHJhbnNm
b3JtIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGZp
bGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwotCi0gICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzIHsg
MCB9OwotICAgIGZsb2F0IHNoYWRvd0JsdXIgeyAwIH07Ci0gICAgZmxvYXQgYWxwaGEgeyAxIH07
Ci0KLSAgICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSB7IFNvbGlkU3Ryb2tlIH07Ci0gICAgV2lu
ZFJ1bGUgZmlsbFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OwotCi0gICAgVGV4dERyYXdpbmdN
b2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlIHsgVGV4dERyYXdpbmdNb2RlOjpGaWxsIH07Ci0gICAg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgeyBDb21wb3NpdGVPcGVyYXRvcjo6
U291cmNlT3ZlciB9OwotICAgIEJsZW5kTW9kZSBibGVuZE1vZGUgeyBCbGVuZE1vZGU6Ok5vcm1h
bCB9OwotICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkg
eyBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdCB9OwotICAgIFNoYWRvd1JhZGl1c01vZGUg
c2hhZG93UmFkaXVzTW9kZSB7IFNoYWRvd1JhZGl1c01vZGU6OkRlZmF1bHQgfTsKLQotICAgIGJv
b2wgc2hvdWxkQW50aWFsaWFzIDogMTsKLSAgICBib29sIHNob3VsZFNtb290aEZvbnRzIDogMTsK
LSAgICBib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA6IDE7Ci0gICAgYm9vbCBzaGFk
b3dzSWdub3JlVHJhbnNmb3JtcyA6IDE7Ci0gICAgYm9vbCBkcmF3THVtaW5hbmNlTWFzayA6IDE7
Ci0jaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBib29sIHVzZURhcmtBcHBlYXJh
bmNlIDogMTsKLSNlbmRpZgotfTsKLQotc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdl
IHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSgpID0gZGVmYXVsdDsKLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotICAgICAgICA6
IG1fc3RhdGUoc3RhdGUpCi0gICAgICAgICwgbV9jaGFuZ2VGbGFncyhmbGFncykKLSAgICB7Ci0g
ICAgfQotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdl
c0Zyb21TdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpIGNvbnN0OwotCi0gICAgdm9p
ZCBhY2N1bXVsYXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0
JikgY29uc3Q7Ci0gICAgCi0gICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0Owot
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbV9zdGF0ZTsKLSAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBtX2NoYW5nZUZsYWdzOwotfTsKLQotV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlQ2hhbmdlJik7Ci0KIGNsYXNzIEdyYXBoaWNzQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoR3JhcGhpY3NDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6ICAgCkBAIC01NzAsMTgyICszNzgsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jb250ZW50
ZnVsUGFpbnREZXRlY3RlZCB7IGZhbHNlIH07CiB9OwogCi1jbGFzcyBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgYm9vbCBz
YXZlQW5kUmVzdG9yZSA9IHRydWUpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1f
c2F2ZUFuZFJlc3RvcmUoc2F2ZUFuZFJlc3RvcmUpCi0gICAgewotICAgICAgICBpZiAobV9zYXZl
QW5kUmVzdG9yZSkKLSAgICAgICAgICAgIG1fY29udGV4dC5zYXZlKCk7Ci0gICAgfQotICAgIAot
ICAgIH5HcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX3Nh
dmVBbmRSZXN0b3JlKQotICAgICAgICAgICAgbV9jb250ZXh0LnJlc3RvcmUoKTsKLSAgICB9Ci0g
ICAgCi0gICAgdm9pZCBzYXZlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9zYXZlQW5kUmVz
dG9yZSk7Ci0gICAgICAgIG1fY29udGV4dC5zYXZlKCk7Ci0gICAgICAgIG1fc2F2ZUFuZFJlc3Rv
cmUgPSB0cnVlOwotICAgIH0KLQotICAgIHZvaWQgcmVzdG9yZSgpCi0gICAgewotICAgICAgICBB
U1NFUlQobV9zYXZlQW5kUmVzdG9yZSk7Ci0gICAgICAgIG1fY29udGV4dC5yZXN0b3JlKCk7Ci0g
ICAgICAgIG1fc2F2ZUFuZFJlc3RvcmUgPSBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gJm1fY29udGV4dDsgfQotCi1wcml2
YXRlOgotICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwotICAgIGJvb2wgbV9zYXZlQW5k
UmVzdG9yZTsKLX07Ci0KLWNsYXNzIFRyYW5zcGFyZW5jeUxheWVyU2NvcGUgewotcHVibGljOgot
ICAgIFRyYW5zcGFyZW5jeUxheWVyU2NvcGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9h
dCBhbHBoYSwgYm9vbCBiZWdpbkxheWVyID0gdHJ1ZSkKLSAgICAgICAgOiBtX2NvbnRleHQoY29u
dGV4dCkKLSAgICAgICAgLCBtX2FscGhhKGFscGhhKQotICAgICAgICAsIG1fYmVnYW5MYXllcihi
ZWdpbkxheWVyKQotICAgIHsKLSAgICAgICAgaWYgKGJlZ2luTGF5ZXIpCi0gICAgICAgICAgICBt
X2NvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihtX2FscGhhKTsKLSAgICB9Ci0gICAgCi0g
ICAgdm9pZCBiZWdpbkxheWVyKGZsb2F0IGFscGhhKQotICAgIHsKLSAgICAgICAgbV9hbHBoYSA9
IGFscGhhOwotICAgICAgICBtX2NvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihtX2FscGhh
KTsKLSAgICAgICAgbV9iZWdhbkxheWVyID0gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgflRyYW5z
cGFyZW5jeUxheWVyU2NvcGUoKQotICAgIHsKLSAgICAgICAgaWYgKG1fYmVnYW5MYXllcikKLSAg
ICAgICAgICAgIG1fY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKLSAgICBmbG9hdCBtX2FscGhh
OwotICAgIGJvb2wgbV9iZWdhbkxheWVyOwotfTsKLQotY2xhc3MgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTdGFja0NoZWNrZXIgewotcHVibGljOgotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU3RhY2tD
aGVja2VyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLSAgICAgICAgOiBtX2NvbnRleHQoY29u
dGV4dCkKLSAgICAgICAgLCBtX3N0YWNrU2l6ZShjb250ZXh0LnN0YWNrU2l6ZSgpKQotICAgIHsg
fQotICAgIAotICAgIH5HcmFwaGljc0NvbnRleHRTdGF0ZVN0YWNrQ2hlY2tlcigpCi0gICAgewot
ICAgICAgICBpZiAobV9jb250ZXh0LnN0YWNrU2l6ZSgpICE9IG1fc3RhY2tTaXplKQotICAgICAg
ICAgICAgV1RGTG9nQWx3YXlzKCJHcmFwaGljc0NvbnRleHQgJXAgc3RhY2sgY2hhbmdlZCBieSAl
ZCIsICZtX2NvbnRleHQsIChpbnQpbV9jb250ZXh0LnN0YWNrU2l6ZSgpIC0gKGludCltX3N0YWNr
U2l6ZSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0
OwotICAgIHVuc2lnbmVkIG1fc3RhY2tTaXplOwotfTsKLQotY2xhc3MgSW50ZXJwb2xhdGlvblF1
YWxpdHlNYWludGFpbmVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBJbnRlcnBvbGF0aW9uUXVh
bGl0eU1haW50YWluZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIEludGVycG9s
YXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5VG9Vc2UpCi0gICAgICAgIDogbV9ncmFw
aGljc0NvbnRleHQoZ3JhcGhpY3NDb250ZXh0KQotICAgICAgICAsIG1fY3VycmVudEludGVycG9s
YXRpb25RdWFsaXR5KGdyYXBoaWNzQ29udGV4dC5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkp
Ci0gICAgICAgICwgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQoaW50ZXJwb2xhdGlvblF1
YWxpdHlUb1VzZSAhPSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdCAmJiBtX2N1cnJlbnRJ
bnRlcnBvbGF0aW9uUXVhbGl0eSAhPSBpbnRlcnBvbGF0aW9uUXVhbGl0eVRvVXNlKQotICAgIHsK
LSAgICAgICAgaWYgKG1faW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2VkKQotICAgICAgICAgICAg
bV9ncmFwaGljc0NvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShpbnRlcnBvbGF0
aW9uUXVhbGl0eVRvVXNlKTsKLSAgICB9Ci0KLSAgICBleHBsaWNpdCBJbnRlcnBvbGF0aW9uUXVh
bGl0eU1haW50YWluZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIHN0ZDo6b3B0
aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IGludGVycG9sYXRpb25RdWFsaXR5KQotICAgICAg
ICA6IEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcihncmFwaGljc0NvbnRleHQsIGludGVy
cG9sYXRpb25RdWFsaXR5ID8gaW50ZXJwb2xhdGlvblF1YWxpdHkudmFsdWUoKSA6IGdyYXBoaWNz
Q29udGV4dC5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpCi0gICAgewotICAgIH0KLQotICAg
IH5JbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIoKQotICAgIHsKLSAgICAgICAgaWYgKG1f
aW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2VkKQotICAgICAgICAgICAgbV9ncmFwaGljc0NvbnRl
eHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShtX2N1cnJlbnRJbnRlcnBvbGF0aW9uUXVh
bGl0eSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEdyYXBoaWNzQ29udGV4dCYgbV9ncmFwaGlj
c0NvbnRleHQ7Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgbV9jdXJyZW50SW50ZXJwb2xhdGlv
blF1YWxpdHk7Ci0gICAgYm9vbCBtX2ludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlZDsKLX07Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU+
IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgIFdlYkNvcmU6OkRvY3VtZW50
TWFya2VyTGluZVN0eWxlOjpNb2RlLAotICAgIFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0
eWxlOjpNb2RlOjpUZXh0Q2hlY2tpbmdEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzLAot
ICAgIFdlYkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpTcGVsbGluZywKLSAg
ICBXZWJDb3JlOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6R3JhbW1hciwKLSAgICBX
ZWJDb3JlOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6QXV0b2NvcnJlY3Rpb25SZXBs
YWNlbWVudCwKLSAgICBXZWJDb3JlOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6RGlj
dGF0aW9uQWx0ZXJuYXRpdmVzCi0gICAgPjsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZT4gewotICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OlN0cm9rZUdyYWRpZW50Q2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsR3JhZGllbnRDaGFuZ2UsCi0gICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxQYXR0ZXJuQ2hhbmdl
LAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VU
aGlja25lc3NDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OlN0cm9rZUNvbG9yQ2hhbmdlLAotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VTdHlsZUNoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RmlsbENvbG9yQ2hhbmdlLAotICAgICAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsUnVsZUNoYW5nZSwKLSAgICAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hhZG93Q2hhbmdlLAot
ICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaGFkb3dzSWdu
b3JlVHJhbnNmb3Jtc0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6QWxwaGFDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDaGFuZ2U6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwKLSAgICAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6QmxlbmRNb2RlQ2hhbmdlLAotICAgICAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpUZXh0RHJhd2luZ01vZGVD
aGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNo
b3VsZEFudGlhbGlhc0NoYW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0No
YW5nZSwKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RHJh
d0x1bWluYW5jZU1hc2tDaGFuZ2UsCi0gICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UKLSNpZiBIQVZFKE9T
X0RBUktfTU9ERV9TVVBQT1JUKQotICAgICAgICAsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlCi0jZW5kaWYKLSAgICA+OwotfTsK
LQotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTdHJva2VTdHlsZT4gewot
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgV2ViQ29yZTo6U3Ryb2tlU3R5bGUs
Ci0gICAgV2ViQ29yZTo6U3Ryb2tlU3R5bGU6Ok5vU3Ryb2tlLAotICAgIFdlYkNvcmU6OlN0cm9r
ZVN0eWxlOjpTb2xpZFN0cm9rZSwKLSAgICBXZWJDb3JlOjpTdHJva2VTdHlsZTo6RG90dGVkU3Ry
b2tlLAotICAgIFdlYkNvcmU6OlN0cm9rZVN0eWxlOjpEYXNoZWRTdHJva2UsCi0gICAgV2ViQ29y
ZTo6U3Ryb2tlU3R5bGU6OkRvdWJsZVN0cm9rZSwKLSAgICBXZWJDb3JlOjpTdHJva2VTdHlsZTo6
V2F2eVN0cm9rZQotICAgID47Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6OlRleHREcmF3aW5nTW9kZT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
Ci0gICAgICAgIFdlYkNvcmU6OlRleHREcmF3aW5nTW9kZSwKLSAgICAgICAgV2ViQ29yZTo6VGV4
dERyYXdpbmdNb2RlOjpGaWxsLAotICAgICAgICBXZWJDb3JlOjpUZXh0RHJhd2luZ01vZGU6OlN0
cm9rZQotICAgID47Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJjYWRk
NjQ5MTkzNTQwODY2NGMyNzZmY2UzZDU5OWU2MTRmOWFmMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcApA
QCAtMCwwICsxLDMyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0U3Rh
dGUuaCIKKworI2luY2x1ZGUgIkdyYWRpZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCisjaW5jbHVkZSAiUGF0dGVybi5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0u
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjZGVmaW5lIENIRUNLX0ZPUl9DSEFOR0VEX1BS
T1BFUlRZKGZsYWcsIHByb3BlcnR5KSBcCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OmZsYWcpICYmIChtX3N0YXRlLnByb3BlcnR5ICE9IHN0YXRl
LnByb3BlcnR5KSkgXAorICAgICAgICBjaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OmZsYWcpOworCitHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUo
KQorICAgIDogc2hvdWxkQW50aWFsaWFzKHRydWUpCisgICAgLCBzaG91bGRTbW9vdGhGb250cyh0
cnVlKQorICAgICwgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKHRydWUpCisgICAgLCBzaGFk
b3dzSWdub3JlVHJhbnNmb3JtcyhmYWxzZSkKKyAgICAsIGRyYXdMdW1pbmFuY2VNYXNrKGZhbHNl
KQoreworfQorCitHcmFwaGljc0NvbnRleHRTdGF0ZTo6fkdyYXBoaWNzQ29udGV4dFN0YXRlKCkg
PSBkZWZhdWx0OworR3JhcGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJikgPSBkZWZhdWx0OworR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiYpID0gZGVmYXVs
dDsKK0dyYXBoaWNzQ29udGV4dFN0YXRlJiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6b3BlcmF0b3I9
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJikgPSBkZWZhdWx0OworR3JhcGhpY3NDb250ZXh0
U3RhdGUmIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpvcGVyYXRvcj0oR3JhcGhpY3NDb250ZXh0U3Rh
dGUmJikgPSBkZWZhdWx0OworCit2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJnZUNoYW5n
ZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKK3sKKyAgICBhdXRvIHN0cm9rZUZsYWdzID0geyBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBh
dHRlcm5DaGFuZ2UgfTsKKyAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoc3Ryb2tlRmxhZ3MpKSB7
CisgICAgICAgIHN0cm9rZUNvbG9yID0gc3RhdGUuc3Ryb2tlQ29sb3I7CisgICAgICAgIHN0cm9r
ZUdyYWRpZW50ID0gc3RhdGUuc3Ryb2tlR3JhZGllbnQ7CisgICAgICAgIHN0cm9rZVBhdHRlcm4g
PSBzdGF0ZS5zdHJva2VQYXR0ZXJuOworICAgIH0KKworICAgIGF1dG8gZmlsbEZsYWdzID0geyBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6RmlsbEdyYWRpZW50Q2hhbmdlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5D
aGFuZ2UgfTsKKyAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoZmlsbEZsYWdzKSkgeworICAgICAg
ICBmaWxsQ29sb3IgPSBzdGF0ZS5maWxsQ29sb3I7CisgICAgICAgIGZpbGxHcmFkaWVudCA9IHN0
YXRlLmZpbGxHcmFkaWVudDsKKyAgICAgICAgZmlsbFBhdHRlcm4gPSBzdGF0ZS5maWxsUGF0dGVy
bjsKKyAgICB9CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlNoYWRvd0NoYW5nZSkpIHsKKyAgICAgICAgc2hhZG93T2Zmc2V0ID0gc3RhdGUuc2hhZG93T2Zm
c2V0OworICAgICAgICBzaGFkb3dCbHVyID0gc3RhdGUuc2hhZG93Qmx1cjsKKyAgICAgICAgc2hh
ZG93Q29sb3IgPSBzdGF0ZS5zaGFkb3dDb2xvcjsKKyAgICAgICAgc2hhZG93UmFkaXVzTW9kZSA9
IHN0YXRlLnNoYWRvd1JhZGl1c01vZGU7CisgICAgfQorCisgICAgaWYgKGZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQorICAgICAgICBz
dHJva2VUaGlja25lc3MgPSBzdGF0ZS5zdHJva2VUaGlja25lc3M7CisKKyAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpCisg
ICAgICAgIHRleHREcmF3aW5nTW9kZSA9IHN0YXRlLnRleHREcmF3aW5nTW9kZTsKKworICAgIGlm
IChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2Up
KQorICAgICAgICBzdHJva2VTdHlsZSA9IHN0YXRlLnN0cm9rZVN0eWxlOworCisgICAgaWYgKGZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSkpCisgICAg
ICAgIGZpbGxSdWxlID0gc3RhdGUuZmlsbFJ1bGU7CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKKyAgICAgICAgYWxwaGEgPSBzdGF0
ZS5hbHBoYTsKKworICAgIGlmIChmbGFncy5jb250YWluc0FueSh7IEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVu
ZE1vZGVDaGFuZ2UgfSkpIHsKKyAgICAgICAgY29tcG9zaXRlT3BlcmF0b3IgPSBzdGF0ZS5jb21w
b3NpdGVPcGVyYXRvcjsKKyAgICAgICAgYmxlbmRNb2RlID0gc3RhdGUuYmxlbmRNb2RlOworICAg
IH0KKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxk
QW50aWFsaWFzQ2hhbmdlKSkKKyAgICAgICAgc2hvdWxkQW50aWFsaWFzID0gc3RhdGUuc2hvdWxk
QW50aWFsaWFzOworCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCisgICAgICAgIHNob3VsZFNtb290aEZvbnRzID0g
c3RhdGUuc2hvdWxkU21vb3RoRm9udHM7CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkpCisgICAg
ICAgIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHN0YXRlLnNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250czsKKworICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpKQorICAgICAgICBzaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcyA9IHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOworCisgICAgaWYgKGZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5n
ZSkpCisgICAgICAgIGRyYXdMdW1pbmFuY2VNYXNrID0gc3RhdGUuZHJhd0x1bWluYW5jZU1hc2s7
CisKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UpKQorICAgICAgICBpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5ID0gc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKKworI2lmIEhBVkUoT1NfREFS
S19NT0RFX1NVUFBPUlQpCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkpCisgICAgICAgIHVzZURhcmtBcHBlYXJhbmNl
ID0gc3RhdGUudXNlRGFya0FwcGVhcmFuY2U7CisjZW5kaWYKK30KKworR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmNoYW5n
ZXNGcm9tU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKSBjb25zdAorewor
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzOwor
CisgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoU3Ryb2tlR3JhZGllbnRDaGFuZ2UsIHN0
cm9rZUdyYWRpZW50KTsKKyAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VQYXR0
ZXJuQ2hhbmdlLCBzdHJva2VQYXR0ZXJuKTsKKyAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJU
WShGaWxsR3JhZGllbnRDaGFuZ2UsIGZpbGxHcmFkaWVudCk7CisgICAgQ0hFQ0tfRk9SX0NIQU5H
RURfUFJPUEVSVFkoRmlsbFBhdHRlcm5DaGFuZ2UsIGZpbGxQYXR0ZXJuKTsKKworICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2Up
CisgICAgICAgICYmIChtX3N0YXRlLnNoYWRvd09mZnNldCAhPSBzdGF0ZS5zaGFkb3dPZmZzZXQK
KyAgICAgICAgICAgIHx8IG1fc3RhdGUuc2hhZG93Qmx1ciAhPSBzdGF0ZS5zaGFkb3dCbHVyCisg
ICAgICAgICAgICB8fCBtX3N0YXRlLnNoYWRvd0NvbG9yICE9IHN0YXRlLnNoYWRvd0NvbG9yKSkK
KyAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFu
Z2UpOworCisgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoU3Ryb2tlVGhpY2tuZXNzQ2hh
bmdlLCBzdHJva2VUaGlja25lc3MpOworICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFRl
eHREcmF3aW5nTW9kZUNoYW5nZSwgdGV4dERyYXdpbmdNb2RlKTsKKyAgICBDSEVDS19GT1JfQ0hB
TkdFRF9QUk9QRVJUWShTdHJva2VDb2xvckNoYW5nZSwgc3Ryb2tlQ29sb3IpOworICAgIENIRUNL
X0ZPUl9DSEFOR0VEX1BST1BFUlRZKEZpbGxDb2xvckNoYW5nZSwgZmlsbENvbG9yKTsKKyAgICBD
SEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTdHJva2VTdHlsZUNoYW5nZSwgc3Ryb2tlU3R5bGUp
OworICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKEZpbGxSdWxlQ2hhbmdlLCBmaWxsUnVs
ZSk7CisgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoQWxwaGFDaGFuZ2UsIGFscGhhKTsK
KworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zQW55KHsgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5k
TW9kZUNoYW5nZSB9KQorICAgICAgICAmJiAobV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciAhPSBz
dGF0ZS5jb21wb3NpdGVPcGVyYXRvciB8fCBtX3N0YXRlLmJsZW5kTW9kZSAhPSBzdGF0ZS5ibGVu
ZE1vZGUpKSB7CisgICAgICAgIGNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlKTsKKyAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UpOworICAgIH0KKworICAgIENIRUNLX0ZP
Ul9DSEFOR0VEX1BST1BFUlRZKFNob3VsZEFudGlhbGlhc0NoYW5nZSwgc2hvdWxkQW50aWFsaWFz
KTsKKyAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTaG91bGRTbW9vdGhGb250c0NoYW5n
ZSwgc2hvdWxkU21vb3RoRm9udHMpOworICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSwgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKTsKKyAgICBDSEVDS19GT1JfQ0hBTkdFRF9QUk9QRVJUWShTaGFkb3dzSWdub3JlVHJhbnNm
b3Jtc0NoYW5nZSwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOworICAgIENIRUNLX0ZPUl9DSEFO
R0VEX1BST1BFUlRZKERyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlLCBkcmF3THVtaW5hbmNlTWFzayk7
CisgICAgQ0hFQ0tfRk9SX0NIQU5HRURfUFJPUEVSVFkoSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eUNoYW5nZSwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CisKKyNpZiBIQVZFKE9TX0RBUktf
TU9ERV9TVVBQT1JUKQorICAgIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKFVzZURhcmtBcHBl
YXJhbmNlQ2hhbmdlLCB1c2VEYXJrQXBwZWFyYW5jZSk7CisjZW5kaWYKKworICAgIHJldHVybiBj
aGFuZ2VGbGFnczsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZTo6YWNjdW11
bGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQoreworICAgIG1fc3RhdGUubWVyZ2VDaGFuZ2Vz
KHN0YXRlLCBmbGFncyk7CisKKyAgICBhdXRvIHN0cm9rZUZsYWdzID0geyBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VH
cmFkaWVudENoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2Ug
fTsKKyAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoc3Ryb2tlRmxhZ3MpKQorICAgICAgICBtX2No
YW5nZUZsYWdzLnJlbW92ZShzdHJva2VGbGFncyk7CisKKyAgICBhdXRvIGZpbGxGbGFncyA9IHsg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkZpbGxHcmFkaWVudENoYW5nZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJu
Q2hhbmdlIH07CisgICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KGZpbGxGbGFncykpCisgICAgICAg
IG1fY2hhbmdlRmxhZ3MucmVtb3ZlKGZpbGxGbGFncyk7CisKKyAgICBhdXRvIGNvbXBvc2l0ZU9w
ZXJhdG9yRmxhZ3MgPSB7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25D
aGFuZ2UsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfTsKKyAgICBpZiAo
ZmxhZ3MuY29udGFpbnNBbnkoY29tcG9zaXRlT3BlcmF0b3JGbGFncykpCisgICAgICAgIG1fY2hh
bmdlRmxhZ3MucmVtb3ZlKGNvbXBvc2l0ZU9wZXJhdG9yRmxhZ3MpOworCisgICAgbV9jaGFuZ2VG
bGFncy5hZGQoZmxhZ3MpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjph
cHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Cit7CisgICAgaWYgKG1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdl
KSkKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudCgqbV9zdGF0ZS5zdHJva2VHcmFk
aWVudCwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKKworICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJu
Q2hhbmdlKSkKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VQYXR0ZXJuKCptX3N0YXRlLnN0cm9r
ZVBhdHRlcm4pOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbEdy
YWRpZW50KCptX3N0YXRlLmZpbGxHcmFkaWVudCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRy
YW5zZm9ybSk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKQorICAgICAgICBjb250ZXh0LnNldEZpbGxQYXR0
ZXJuKCptX3N0YXRlLmZpbGxQYXR0ZXJuKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkp
CisgICAgICAgIGNvbnRleHQuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMobV9zdGF0ZS5zaGFk
b3dzSWdub3JlVHJhbnNmb3Jtcyk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkKKyAgICAgICAgY29udGV4dC5zZXRT
aGFkb3cobV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Qmx1ciwgbV9zdGF0ZS5z
aGFkb3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dSYWRpdXNNb2RlKTsKKworICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFu
Z2UpKQorICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhtX3N0YXRlLnN0cm9rZVRo
aWNrbmVzcyk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKKyAgICAgICAgY29udGV4dC5zZXRUZXh0
RHJhd2luZ01vZGUobV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUpOworCisgICAgaWYgKG1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkK
KyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihtX3N0YXRlLnN0cm9rZUNvbG9yKTsKKwor
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxs
Q29sb3JDaGFuZ2UpKQorICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtX3N0YXRlLmZpbGxD
b2xvcik7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKQorICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxl
KG1fc3RhdGUuc3Ryb2tlU3R5bGUpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKKyAgICAgICAgY29udGV4dC5z
ZXRGaWxsUnVsZShtX3N0YXRlLmZpbGxSdWxlKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCisgICAgICAgIGNvbnRl
eHQuc2V0QWxwaGEobV9zdGF0ZS5hbHBoYSk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250
YWluc0FueSh7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2Us
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UgfSkpCisgICAgICAgIGNvbnRl
eHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IsIG1fc3Rh
dGUuYmxlbmRNb2RlKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKQorICAgICAgICBjb250ZXh0LnNl
dFNob3VsZEFudGlhbGlhcyhtX3N0YXRlLnNob3VsZEFudGlhbGlhcyk7CisKKyAgICBpZiAobV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9u
dHNDaGFuZ2UpKQorICAgICAgICBjb250ZXh0LnNldFNob3VsZFNtb290aEZvbnRzKG1fc3RhdGUu
c2hvdWxkU21vb3RoRm9udHMpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkpCisg
ICAgICAgIGNvbnRleHQuc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKG1fc3RhdGUuc2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSkpCisgICAg
ICAgIGNvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1hc2sobV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFz
ayk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSkpCisgICAgICAgIGNvbnRleHQuc2V0
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkpOworCisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAgICBpZiAobV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VXNlRGFya0FwcGVhcmFuY2VDaGFu
Z2UpKQorICAgICAgICBjb250ZXh0LnNldFVzZURhcmtBcHBlYXJhbmNlKG1fc3RhdGUudXNlRGFy
a0FwcGVhcmFuY2UpOworI2VuZGlmCit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0Cit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJj
aGFuZ2UtZmxhZ3MiLCBtX2NoYW5nZUZsYWdzLnRvUmF3KCkpOworCisgICAgaWYgKG1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdl
KSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzdHJva2UtZ3JhZGllbnQiLCBtX3N0YXRlLnN0
cm9rZUdyYWRpZW50LmdldCgpKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSkKKyAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJzdHJva2UtcGF0dGVybiIsIG1fc3RhdGUuc3Ryb2tlUGF0dGVybi5nZXQoKSk7
CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RmlsbEdyYWRpZW50Q2hhbmdlKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLWdyYWRp
ZW50IiwgbV9zdGF0ZS5maWxsR3JhZGllbnQuZ2V0KCkpOworCisgICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkKKyAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJmaWxsLXBhdHRlcm4iLCBtX3N0YXRlLmZpbGxQYXR0ZXJu
LmdldCgpKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93
LWJsdXIiLCBtX3N0YXRlLnNoYWRvd0JsdXIpOworICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNo
YWRvdy1vZmZzZXQiLCBtX3N0YXRlLnNoYWRvd09mZnNldCk7CisgICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgic2hhZG93LWNvbG9yIiwgbV9zdGF0ZS5zaGFkb3dDb2xvcik7CisgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgic2hhZG93cy11c2UtbGVnYWN5LXJhZGl1cyIsIG1fc3RhdGUuc2hhZG93UmFk
aXVzTW9kZSA9PSBTaGFkb3dSYWRpdXNNb2RlOjpMZWdhY3kpOworICAgIH0KKworICAgIGlmICht
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25l
c3NDaGFuZ2UpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS10aGlja25lc3MiLCBt
X3N0YXRlLnN0cm9rZVRoaWNrbmVzcyk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkKKyAgICAgICAg
dHMuZHVtcFByb3BlcnR5KCJ0ZXh0LWRyYXdpbmctbW9kZSIsIG1fc3RhdGUudGV4dERyYXdpbmdN
b2RlLnRvUmF3KCkpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJzdHJva2UtY29sb3IiLCBtX3N0YXRlLnN0cm9rZUNvbG9yKTsKKworICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQor
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbGwtY29sb3IiLCBtX3N0YXRlLmZpbGxDb2xvcik7
CisKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3Ryb2tlU3R5bGVDaGFuZ2UpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0cm9rZS1zdHls
ZSIsIG1fc3RhdGUuc3Ryb2tlU3R5bGUpOworCisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKSkKKyAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJmaWxsLXJ1bGUiLCBtX3N0YXRlLmZpbGxSdWxlKTsKKworICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCisg
ICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYWxwaGEiLCBtX3N0YXRlLmFscGhhKTsKKworICAgIGlm
IChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVP
cGVyYXRpb25DaGFuZ2UpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImNvbXBvc2l0ZS1vcGVy
YXRvciIsIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IpOworCisgICAgaWYgKG1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSkpCisgICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxlbmQtbW9kZSIsIG1fc3RhdGUuYmxlbmRNb2RlKTsKKwor
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRBbnRpYWxpYXNDaGFuZ2UpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1hbnRp
YWxpYXMiLCBtX3N0YXRlLnNob3VsZEFudGlhbGlhcyk7CisKKyAgICBpZiAobV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2Up
KQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1zbW9vdGgtZm9udHMiLCBtX3N0YXRl
LnNob3VsZFNtb290aEZvbnRzKTsKKworICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKQor
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNob3VsZC1zdWJwaXhlbC1xdWFudGl6ZS1mb250cyIs
IG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKKworICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNm
b3Jtc0NoYW5nZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2hhZG93cy1pZ25vcmUtdHJh
bnNmb3JtcyIsIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOworCisgICAgaWYgKG1f
Y2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkRyYXdMdW1pbmFuY2VN
YXNrQ2hhbmdlKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJkcmF3LWx1bWluYW5jZS1tYXNr
IiwgbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzayk7CisKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9T
VVBQT1JUKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSkpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
dXNlLWRhcmstYXBwZWFyYW5jZSIsIG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2UpOworI2VuZGlm
Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSkKK3sKKyAgICBzdGF0ZUNoYW5nZS5k
dW1wKHRzKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzNTUxMTlmNjY5OTdkMmNmYzA5ZmYxZmRiZjA3ZjhhNTk1
OTU5NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRTdGF0ZS5oCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGbG9h
dFNpemUuaCIKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCisjaW5jbHVkZSAiV2luZFJ1bGUu
aCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgR3JhZGllbnQ7CitjbGFzcyBQYXR0ZXJuOwor
CitzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgeworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBo
aWNzQ29udGV4dFN0YXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkdyYXBoaWNzQ29udGV4dFN0
YXRlKCk7CisKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKEdyYXBoaWNz
Q29udGV4dFN0YXRlJiYpOworCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUmIG9wZXJhdG9yPShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBvcGVyYXRvcj0oR3JhcGhpY3NDb250ZXh0U3RhdGUmJik7CisKKyAgICBl
bnVtIENoYW5nZSA6IHVpbnQzMl90IHsKKyAgICAgICAgU3Ryb2tlR3JhZGllbnRDaGFuZ2UgICAg
ICAgICAgICAgICAgICAgID0gMSA8PCAwLAorICAgICAgICBTdHJva2VQYXR0ZXJuQ2hhbmdlICAg
ICAgICAgICAgICAgICAgICAgPSAxIDw8IDEsCisgICAgICAgIEZpbGxHcmFkaWVudENoYW5nZSAg
ICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMiwKKyAgICAgICAgRmlsbFBhdHRlcm5DaGFuZ2Ug
ICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAzLAorICAgICAgICBTdHJva2VUaGlja25lc3ND
aGFuZ2UgICAgICAgICAgICAgICAgICAgPSAxIDw8IDQsCisgICAgICAgIFN0cm9rZUNvbG9yQ2hh
bmdlICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgU3Ryb2tlU3R5bGVD
aGFuZ2UgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA2LAorICAgICAgICBGaWxsQ29sb3JD
aGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDcsCisgICAgICAgIEZpbGxSdWxl
Q2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgOCwKKyAgICAgICAgU2hhZG93
Q2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA5LAorICAgICAgICBTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSAgICAgICAgICAgPSAxIDw8IDEwLAorICAgICAgICBB
bHBoYUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDExLAorICAgICAg
ICBDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UgICAgICAgICAgICAgICAgPSAxIDw8IDEyLAorICAg
ICAgICBCbGVuZE1vZGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDEzLAor
ICAgICAgICBUZXh0RHJhd2luZ01vZGVDaGFuZ2UgICAgICAgICAgICAgICAgICAgPSAxIDw8IDE0
LAorICAgICAgICBTaG91bGRBbnRpYWxpYXNDaGFuZ2UgICAgICAgICAgICAgICAgICAgPSAxIDw8
IDE1LAorICAgICAgICBTaG91bGRTbW9vdGhGb250c0NoYW5nZSAgICAgICAgICAgICAgICAgPSAx
IDw8IDE2LAorICAgICAgICBTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UgICAgICAg
PSAxIDw8IDE3LAorICAgICAgICBEcmF3THVtaW5hbmNlTWFza0NoYW5nZSAgICAgICAgICAgICAg
ICAgPSAxIDw8IDE4LAorICAgICAgICBJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlICAg
ICAgICAgPSAxIDw8IDE5LAorI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCisgICAgICAg
IFVzZURhcmtBcHBlYXJhbmNlQ2hhbmdlICAgICAgICAgICAgICAgICA9IDEgPDwgMjAsCisjZW5k
aWYKKyAgICB9OworICAgIHVzaW5nIFN0YXRlQ2hhbmdlRmxhZ3MgPSBPcHRpb25TZXQ8Q2hhbmdl
PjsKKworICAgIHZvaWQgbWVyZ2VDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOworCisgICAgUmVmUHRyPEdy
YWRpZW50PiBzdHJva2VHcmFkaWVudDsKKyAgICBSZWZQdHI8UGF0dGVybj4gc3Ryb2tlUGF0dGVy
bjsKKyAgICAKKyAgICBSZWZQdHI8R3JhZGllbnQ+IGZpbGxHcmFkaWVudDsKKyAgICBSZWZQdHI8
UGF0dGVybj4gZmlsbFBhdHRlcm47CisKKyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OworCisg
ICAgQ29sb3Igc3Ryb2tlQ29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKKyAgICBDb2xvciBmaWxsQ29s
b3IgeyBDb2xvcjo6YmxhY2sgfTsKKyAgICBDb2xvciBzaGFkb3dDb2xvcjsKKworICAgIEFmZmlu
ZVRyYW5zZm9ybSBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtOworICAgIEFmZmluZVRyYW5z
Zm9ybSBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKKworICAgIGZsb2F0IHN0cm9rZVRoaWNr
bmVzcyB7IDAgfTsKKyAgICBmbG9hdCBzaGFkb3dCbHVyIHsgMCB9OworICAgIGZsb2F0IGFscGhh
IHsgMSB9OworCisgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9Owor
ICAgIFdpbmRSdWxlIGZpbGxSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKKworICAgIFRleHRE
cmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9
OworICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlT3Bl
cmF0b3I6OlNvdXJjZU92ZXIgfTsKKyAgICBCbGVuZE1vZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2Rl
OjpOb3JtYWwgfTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25R
dWFsaXR5IHsgSW50ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1bHQgfTsKKyAgICBTaGFkb3dSYWRp
dXNNb2RlIHNoYWRvd1JhZGl1c01vZGUgeyBTaGFkb3dSYWRpdXNNb2RlOjpEZWZhdWx0IH07CisK
KyAgICBib29sIHNob3VsZEFudGlhbGlhcyA6IDE7CisgICAgYm9vbCBzaG91bGRTbW9vdGhGb250
cyA6IDE7CisgICAgYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgOiAxOworICAgIGJv
b2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgOiAxOworICAgIGJvb2wgZHJhd0x1bWluYW5jZU1h
c2sgOiAxOworI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCisgICAgYm9vbCB1c2VEYXJr
QXBwZWFyYW5jZSA6IDE7CisjZW5kaWYKK307CisKK3N0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0
ZUNoYW5nZSB7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UoKSA9IGRlZmF1bHQ7Cisg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKKyAg
ICAgICAgOiBtX3N0YXRlKHN0YXRlKQorICAgICAgICAsIG1fY2hhbmdlRmxhZ3MoZmxhZ3MpCisg
ICAgeworICAgIH0KKworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdz
IGNoYW5nZXNGcm9tU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKSBjb25zdDsKKwor
ICAgIHZvaWQgYWNjdW11bGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0OworICAgIAorICAgIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBj
b25zdDsKKworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIG1fc3RhdGU7CisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgbV9jaGFuZ2VGbGFnczsKK307CisKK1dURjo6
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZSYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFj
ZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpDaGFuZ2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlLAorICAgICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VHcmFkaWVudENoYW5n
ZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tl
UGF0dGVybkNoYW5nZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6RmlsbEdyYWRpZW50Q2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpGaWxsUGF0dGVybkNoYW5nZSwKKyAgICAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlLAorICAgICAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VDb2xvckNoYW5n
ZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tl
U3R5bGVDaGFuZ2UsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OkZpbGxDb2xvckNoYW5nZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGU6OkNoYW5nZTo6RmlsbFJ1bGVDaGFuZ2UsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlNoYWRvd0NoYW5nZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UsCisg
ICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkFscGhhQ2hhbmdl
LAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3Np
dGVPcGVyYXRpb25DaGFuZ2UsCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OkJsZW5kTW9kZUNoYW5nZSwKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlLAorICAgICAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UsCisg
ICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFNtb290
aEZvbnRzQ2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UsCisgICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlLAor
ICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5Q2hhbmdlCisjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKyAg
ICAgICAgLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpVc2VEYXJrQXBw
ZWFyYW5jZUNoYW5nZQorI2VuZGlmCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5YjRiOGQwMGExYzc2YzdiNzU0M2Q2
MzBhNjgxZTI3NGVhMDA2ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyLmgKQEAgLTAsMCArMSwxNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGJvb2wgc2F2
ZUFuZFJlc3RvcmUgPSB0cnVlKQorICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICAg
ICAsIG1fc2F2ZUFuZFJlc3RvcmUoc2F2ZUFuZFJlc3RvcmUpCisgICAgeworICAgICAgICBpZiAo
bV9zYXZlQW5kUmVzdG9yZSkKKyAgICAgICAgICAgIG1fY29udGV4dC5zYXZlKCk7CisgICAgfQor
ICAgIAorICAgIH5HcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyKCkKKyAgICB7CisgICAgICAgIGlm
IChtX3NhdmVBbmRSZXN0b3JlKQorICAgICAgICAgICAgbV9jb250ZXh0LnJlc3RvcmUoKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBzYXZlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zYXZl
QW5kUmVzdG9yZSk7CisgICAgICAgIG1fY29udGV4dC5zYXZlKCk7CisgICAgICAgIG1fc2F2ZUFu
ZFJlc3RvcmUgPSB0cnVlOworICAgIH0KKworICAgIHZvaWQgcmVzdG9yZSgpCisgICAgeworICAg
ICAgICBBU1NFUlQobV9zYXZlQW5kUmVzdG9yZSk7CisgICAgICAgIG1fY29udGV4dC5yZXN0b3Jl
KCk7CisgICAgICAgIG1fc2F2ZUFuZFJlc3RvcmUgPSBmYWxzZTsKKyAgICB9CisgICAgCisgICAg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gJm1fY29udGV4dDsgfQor
Citwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OworICAgIGJvb2wgbV9z
YXZlQW5kUmVzdG9yZTsKK307CisKK2NsYXNzIFRyYW5zcGFyZW5jeUxheWVyU2NvcGUgeworcHVi
bGljOgorICAgIFRyYW5zcGFyZW5jeUxheWVyU2NvcGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBmbG9hdCBhbHBoYSwgYm9vbCBiZWdpbkxheWVyID0gdHJ1ZSkKKyAgICAgICAgOiBtX2NvbnRl
eHQoY29udGV4dCkKKyAgICAgICAgLCBtX2FscGhhKGFscGhhKQorICAgICAgICAsIG1fYmVnYW5M
YXllcihiZWdpbkxheWVyKQorICAgIHsKKyAgICAgICAgaWYgKGJlZ2luTGF5ZXIpCisgICAgICAg
ICAgICBtX2NvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihtX2FscGhhKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBiZWdpbkxheWVyKGZsb2F0IGFscGhhKQorICAgIHsKKyAgICAgICAgbV9h
bHBoYSA9IGFscGhhOworICAgICAgICBtX2NvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllciht
X2FscGhhKTsKKyAgICAgICAgbV9iZWdhbkxheWVyID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAg
flRyYW5zcGFyZW5jeUxheWVyU2NvcGUoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYmVnYW5MYXll
cikKKyAgICAgICAgICAgIG1fY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKKyAgICBmbG9hdCBt
X2FscGhhOworICAgIGJvb2wgbV9iZWdhbkxheWVyOworfTsKKworY2xhc3MgR3JhcGhpY3NDb250
ZXh0U3RhdGVTdGFja0NoZWNrZXIgeworcHVibGljOgorICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U3RhY2tDaGVja2VyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKKyAgICAgICAgOiBtX2NvbnRl
eHQoY29udGV4dCkKKyAgICAgICAgLCBtX3N0YWNrU2l6ZShjb250ZXh0LnN0YWNrU2l6ZSgpKQor
ICAgIHsgfQorICAgIAorICAgIH5HcmFwaGljc0NvbnRleHRTdGF0ZVN0YWNrQ2hlY2tlcigpCisg
ICAgeworICAgICAgICBpZiAobV9jb250ZXh0LnN0YWNrU2l6ZSgpICE9IG1fc3RhY2tTaXplKQor
ICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJHcmFwaGljc0NvbnRleHQgJXAgc3RhY2sgY2hhbmdl
ZCBieSAlZCIsICZtX2NvbnRleHQsIChpbnQpbV9jb250ZXh0LnN0YWNrU2l6ZSgpIC0gKGludClt
X3N0YWNrU2l6ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dCYgbV9j
b250ZXh0OworICAgIHVuc2lnbmVkIG1fc3RhY2tTaXplOworfTsKKworY2xhc3MgSW50ZXJwb2xh
dGlvblF1YWxpdHlNYWludGFpbmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJbnRlcnBvbGF0
aW9uUXVhbGl0eU1haW50YWluZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIElu
dGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5VG9Vc2UpCisgICAgICAgIDog
bV9ncmFwaGljc0NvbnRleHQoZ3JhcGhpY3NDb250ZXh0KQorICAgICAgICAsIG1fY3VycmVudElu
dGVycG9sYXRpb25RdWFsaXR5KGdyYXBoaWNzQ29udGV4dC5pbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KCkpCisgICAgICAgICwgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQoaW50ZXJwb2xh
dGlvblF1YWxpdHlUb1VzZSAhPSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdCAmJiBtX2N1
cnJlbnRJbnRlcnBvbGF0aW9uUXVhbGl0eSAhPSBpbnRlcnBvbGF0aW9uUXVhbGl0eVRvVXNlKQor
ICAgIHsKKyAgICAgICAgaWYgKG1faW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2VkKQorICAgICAg
ICAgICAgbV9ncmFwaGljc0NvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShpbnRl
cnBvbGF0aW9uUXVhbGl0eVRvVXNlKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBJbnRlcnBvbGF0
aW9uUXVhbGl0eU1haW50YWluZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIHN0
ZDo6b3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IGludGVycG9sYXRpb25RdWFsaXR5KQor
ICAgICAgICA6IEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcihncmFwaGljc0NvbnRleHQs
IGludGVycG9sYXRpb25RdWFsaXR5ID8gaW50ZXJwb2xhdGlvblF1YWxpdHkudmFsdWUoKSA6IGdy
YXBoaWNzQ29udGV4dC5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpCisgICAgeworICAgIH0K
KworICAgIH5JbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIoKQorICAgIHsKKyAgICAgICAg
aWYgKG1faW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2VkKQorICAgICAgICAgICAgbV9ncmFwaGlj
c0NvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShtX2N1cnJlbnRJbnRlcnBvbGF0
aW9uUXVhbGl0eSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dCYgbV9n
cmFwaGljc0NvbnRleHQ7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgbV9jdXJyZW50SW50ZXJw
b2xhdGlvblF1YWxpdHk7CisgICAgYm9vbCBtX2ludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlZDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAppbmRleCA0ZDIwNGU5N2U1YzU0NGQ3NzZiZmE3
ZjMwYWFjYzFiN2M0NjNlMGUwLi5kZWM0MzQ3MDJjZjc2YTg5ZmE4NjUzMGMzMzc2ZDhiYWM1ZDlj
YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c1R5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NU
eXBlcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldpbmRS
dWxlLmgiCisjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC03Myw2ICs3NCw0MyBAQCBlbnVtIGNsYXNz
IEJsZW5kTW9kZSA6IHVpbnQ4X3QgewogICAgIFBsdXNMaWdodGVyCiB9OwogCitzdHJ1Y3QgRG9j
dW1lbnRNYXJrZXJMaW5lU3R5bGUgeworICAgIGVudW0gY2xhc3MgTW9kZSA6IHVpbnQ4X3Qgewor
ICAgICAgICBUZXh0Q2hlY2tpbmdEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzLAorICAg
ICAgICBTcGVsbGluZywKKyAgICAgICAgR3JhbW1hciwKKyAgICAgICAgQXV0b2NvcnJlY3Rpb25S
ZXBsYWNlbWVudCwKKyAgICAgICAgRGljdGF0aW9uQWx0ZXJuYXRpdmVzCisgICAgfSBtb2RlOwor
ICAgIGJvb2wgc2hvdWxkVXNlRGFya0FwcGVhcmFuY2UgeyBmYWxzZSB9OworCisgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERvY3VtZW50TWFya2VyTGlu
ZVN0eWxlPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
K3ZvaWQgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgbW9kZTsKKyAgICBlbmNvZGVyIDw8IHNob3VsZFVzZURh
cmtBcHBlYXJhbmNlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25h
bDxEb2N1bWVudE1hcmtlckxpbmVTdHlsZT4gRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8TW9kZT4gbW9kZTsKKyAg
ICBkZWNvZGVyID4+IG1vZGU7CisgICAgaWYgKCFtb2RlKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91bGRVc2VEYXJrQXBwZWFyYW5j
ZTsKKyAgICBkZWNvZGVyID4+IHNob3VsZFVzZURhcmtBcHBlYXJhbmNlOworICAgIGlmICghc2hv
dWxkVXNlRGFya0FwcGVhcmFuY2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4geyB7ICptb2RlLCAqc2hvdWxkVXNlRGFya0FwcGVhcmFuY2UgfSB9OworfQorCiBl
bnVtIGNsYXNzIEdyYWRpZW50U3ByZWFkTWV0aG9kIDogdWludDhfdCB7CiAgICAgUGFkLAogICAg
IFJlZmxlY3QsCkBAIC0xMDUsNiArMTQzLDI4IEBAIGVudW0gSG9yaXpvbnRhbEFsaWdubWVudCB7
CiAgICAgQWxpZ25IQ2VudGVyCiB9OwogCitlbnVtIFN0cm9rZVN0eWxlIHsKKyAgICBOb1N0cm9r
ZSwKKyAgICBTb2xpZFN0cm9rZSwKKyAgICBEb3R0ZWRTdHJva2UsCisgICAgRGFzaGVkU3Ryb2tl
LAorICAgIERvdWJsZVN0cm9rZSwKKyAgICBXYXZ5U3Ryb2tlLAorfTsKKworZW51bSBjbGFzcyBU
ZXh0RHJhd2luZ01vZGUgOiB1aW50OF90IHsKKyAgICBGaWxsID0gMSA8PCAwLAorICAgIFN0cm9r
ZSA9IDEgPDwgMSwKK307Cit1c2luZyBUZXh0RHJhd2luZ01vZGVGbGFncyA9IE9wdGlvblNldDxU
ZXh0RHJhd2luZ01vZGU+OworCisvLyBMZWdhY3kgc2hhZG93IGJsdXIgcmFkaXVzIGlzIHVzZWQg
Zm9yIGNhbnZhcywgYW5kIC13ZWJraXQtYm94LXNoYWRvdy4KKy8vIEl0IGhhcyBkaWZmZXJlbnQg
dHJlYXRtZW50IG9mIHJhZGlpID4gOHB4LgorZW51bSBjbGFzcyBTaGFkb3dSYWRpdXNNb2RlIDog
Ym9vbCB7CisgICAgRGVmYXVsdCwKKyAgICBMZWdhY3kKK307CisKIGVudW0gVGV4dEJhc2VsaW5l
IHsKICAgICBBbHBoYWJldGljVGV4dEJhc2VsaW5lLAogICAgIFRvcFRleHRCYXNlbGluZSwKQEAg
LTIxOSw0ICsyNzksMzUgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpM
aW5lSm9pbj4gewogICAgID47CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6OkRvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlPiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9k
ZSwKKyAgICBXZWJDb3JlOjpEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6VGV4dENoZWNr
aW5nRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcywKKyAgICBXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6U3BlbGxpbmcsCisgICAgV2ViQ29yZTo6RG9jdW1lbnRN
YXJrZXJMaW5lU3R5bGU6Ok1vZGU6OkdyYW1tYXIsCisgICAgV2ViQ29yZTo6RG9jdW1lbnRNYXJr
ZXJMaW5lU3R5bGU6Ok1vZGU6OkF1dG9jb3JyZWN0aW9uUmVwbGFjZW1lbnQsCisgICAgV2ViQ29y
ZTo6RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU6OkRpY3RhdGlvbkFsdGVybmF0aXZlcwor
ICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlN0cm9r
ZVN0eWxlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpT
dHJva2VTdHlsZSwKKyAgICBXZWJDb3JlOjpTdHJva2VTdHlsZTo6Tm9TdHJva2UsCisgICAgV2Vi
Q29yZTo6U3Ryb2tlU3R5bGU6OlNvbGlkU3Ryb2tlLAorICAgIFdlYkNvcmU6OlN0cm9rZVN0eWxl
OjpEb3R0ZWRTdHJva2UsCisgICAgV2ViQ29yZTo6U3Ryb2tlU3R5bGU6OkRhc2hlZFN0cm9rZSwK
KyAgICBXZWJDb3JlOjpTdHJva2VTdHlsZTo6RG91YmxlU3Ryb2tlLAorICAgIFdlYkNvcmU6OlN0
cm9rZVN0eWxlOjpXYXZ5U3Ryb2tlCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6VGV4dERyYXdpbmdNb2RlPiB7CisgICAgdXNpbmcgdmFsdWVzID0g
RW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6VGV4dERyYXdpbmdNb2RlLAorICAgICAgICBX
ZWJDb3JlOjpUZXh0RHJhd2luZ01vZGU6OkZpbGwsCisgICAgICAgIFdlYkNvcmU6OlRleHREcmF3
aW5nTW9kZTo6U3Ryb2tlCisgICAgPjsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UwMWZkMzk0NjQzMzlkMmQ0ZDU0YmE5MzY0YzU5NDVj
ZmFkN2Q1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0LmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJESUJQaXhlbERhdGEuaCIKK3R5cGVkZWYgc3RydWN0
IEhEQ19fKiBIREM7CisjaWYgIVVTRShDRykKKy8vIFVJbnQ4IGlzIGRlZmluZWQgaW4gQ29yZUZv
dW5kYXRpb24vQ0ZCYXNlLmgKK3R5cGVkZWYgdW5zaWduZWQgY2hhciBVSW50ODsKKyNlbmRpZgor
I2VuZGlmCisKKyNpZiBVU0UoQ0cpCit1c2luZyBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCA9IHN0
cnVjdCBDR0NvbnRleHQ7CisjZWxpZiBVU0UoQ0FJUk8pCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBHcmFwaGljc0NvbnRleHRDYWlybzsKK30KK3VzaW5nIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm87CisjZWxzZQordXNpbmcgUGxhdGZv
cm1HcmFwaGljc0NvbnRleHQgPSB2b2lkOworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0Qm94SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RleHRCb3hJdGVyYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNTM3MzA3
ZjVlYmZmNGYzODI3ZDU4ZDNkYjI2ZmU2ODEyM2EwNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0Qm94SXRlcmF0b3IuaApAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiVGV4dFJ1bi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFRleHRCb3hJdGVyYXRvciB7CitwdWJsaWM6CisgICAgVGV4dEJveEl0ZXJhdG9y
KCkgPSBkZWZhdWx0OworCisgICAgVGV4dEJveEl0ZXJhdG9yKGNvbnN0IFRleHRSdW4qIHRleHRS
dW4sIHVuc2lnbmVkIG9mZnNldCkKKyAgICAgICAgOiBtX3RleHRSdW4odGV4dFJ1bikKKyAgICAg
ICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVkIG9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgdm9pZCBpbmNyZW1lbnQoKSB7IG1f
b2Zmc2V0Kys7IH0KKyAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gIW1fdGV4dFJ1biB8
fCBtX29mZnNldCA+PSBtX3RleHRSdW4tPmxlbmd0aCgpOyB9CisgICAgVUNoYXIgY3VycmVudCgp
IGNvbnN0IHsgcmV0dXJuICgqbV90ZXh0UnVuKVttX29mZnNldF07IH0KKyAgICBVQ2hhckRpcmVj
dGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBhdEVuZCgpID8gVV9PVEhFUl9ORVVUUkFM
IDogdV9jaGFyRGlyZWN0aW9uKGN1cnJlbnQoKSk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0ICYmIG1fdGV4dFJ1biA9PSBvdGhlci5tX3RleHRS
dW47CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRCb3hJdGVyYXRvciYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorCitwcml2YXRlOgor
ICAgIGNvbnN0IFRleHRSdW4qIG1fdGV4dFJ1biB7IG51bGxwdHIgfTsKKyAgICB1bnNpZ25lZCBt
X29mZnNldCB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NHQ29udGV4dFN0YXRlU2F2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NHQ29udGV4dFN0YXRlU2F2
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODU2YTA0MzkzZmQyNGU5NjI4ZjZmZTkzNDY5ZWViZWE0YWJiNTk4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Q0dDb250ZXh0U3RhdGVTYXZlci5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNF
KENHKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENHQ29udGV4dFN0YXRlU2F2ZXIg
eworcHVibGljOgorICAgIENHQ29udGV4dFN0YXRlU2F2ZXIoQ0dDb250ZXh0UmVmIGNvbnRleHQs
IGJvb2wgc2F2ZUFuZFJlc3RvcmUgPSB0cnVlKQorICAgICAgICA6IG1fY29udGV4dChjb250ZXh0
KQorICAgICAgICAsIG1fc2F2ZUFuZFJlc3RvcmUoc2F2ZUFuZFJlc3RvcmUpCisgICAgeworICAg
ICAgICBpZiAobV9zYXZlQW5kUmVzdG9yZSkKKyAgICAgICAgICAgIENHQ29udGV4dFNhdmVHU3Rh
dGUobV9jb250ZXh0KTsKKyAgICB9CisgICAgCisgICAgfkNHQ29udGV4dFN0YXRlU2F2ZXIoKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fc2F2ZUFuZFJlc3RvcmUpCisgICAgICAgICAgICBDR0NvbnRl
eHRSZXN0b3JlR1N0YXRlKG1fY29udGV4dCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2F2ZSgp
CisgICAgeworICAgICAgICBBU1NFUlQoIW1fc2F2ZUFuZFJlc3RvcmUpOworICAgICAgICBDR0Nv
bnRleHRTYXZlR1N0YXRlKG1fY29udGV4dCk7CisgICAgICAgIG1fc2F2ZUFuZFJlc3RvcmUgPSB0
cnVlOworICAgIH0KKworICAgIHZvaWQgcmVzdG9yZSgpCisgICAgeworICAgICAgICBBU1NFUlQo
bV9zYXZlQW5kUmVzdG9yZSk7CisgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUobV9jb250
ZXh0KTsKKyAgICAgICAgbV9zYXZlQW5kUmVzdG9yZSA9IGZhbHNlOworICAgIH0KKyAgICAKKyAg
ICBib29sIGRpZFNhdmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2F2ZUFuZFJl
c3RvcmU7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBDR0NvbnRleHRSZWYgbV9jb250ZXh0
OworICAgIGJvb2wgbV9zYXZlQW5kUmVzdG9yZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCmluZGV4IDQ2OGE0NGJhYTg2ZWU1
MjYxOWQyNTVmOTM5NDNhOTc1NWJhYzlmYWIuLjYwM2IwZTkzNmVmYjUyOGNhYzNkN2FkYzg2NmU5
OTU3ZWUzMGViZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTAsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw1MyArMjUs
MTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpZiBVU0UoQ0cpCisKICNpbmNsdWRlICJDb2xvclNw
YWNlQ0cuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1DR0FmZmluZVRyYW5zZm9ybSBnZXRVc2VyVG9CYXNlQ1RNKENHQ29udGV4dFJlZik7
Ci0KLWNsYXNzIENHQ29udGV4dFN0YXRlU2F2ZXIgewotcHVibGljOgotICAgIENHQ29udGV4dFN0
YXRlU2F2ZXIoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgc2F2ZUFuZFJlc3RvcmUgPSB0cnVl
KQotICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICAgICAsIG1fc2F2ZUFuZFJlc3Rv
cmUoc2F2ZUFuZFJlc3RvcmUpCi0gICAgewotICAgICAgICBpZiAobV9zYXZlQW5kUmVzdG9yZSkK
LSAgICAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUobV9jb250ZXh0KTsKLSAgICB9Ci0gICAg
Ci0gICAgfkNHQ29udGV4dFN0YXRlU2F2ZXIoKQotICAgIHsKLSAgICAgICAgaWYgKG1fc2F2ZUFu
ZFJlc3RvcmUpCi0gICAgICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKG1fY29udGV4dCk7
Ci0gICAgfQotICAgIAotICAgIHZvaWQgc2F2ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1f
c2F2ZUFuZFJlc3RvcmUpOwotICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKG1fY29udGV4dCk7
Ci0gICAgICAgIG1fc2F2ZUFuZFJlc3RvcmUgPSB0cnVlOwotICAgIH0KLQotICAgIHZvaWQgcmVz
dG9yZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV9zYXZlQW5kUmVzdG9yZSk7Ci0gICAgICAg
IENHQ29udGV4dFJlc3RvcmVHU3RhdGUobV9jb250ZXh0KTsKLSAgICAgICAgbV9zYXZlQW5kUmVz
dG9yZSA9IGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBib29sIGRpZFNhdmUoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fc2F2ZUFuZFJlc3RvcmU7Ci0gICAgfQotICAgIAotcHJpdmF0
ZToKLSAgICBDR0NvbnRleHRSZWYgbV9jb250ZXh0OwotICAgIGJvb2wgbV9zYXZlQW5kUmVzdG9y
ZTsKLX07Ci0KIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dENHIDogcHVibGlj
IEdyYXBoaWNzQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0Q0coQ0dDb250
ZXh0UmVmKTsKQEAgLTE3OSw1ICsxMzksMTAgQEAgcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUqIG1fZGF0YSB7IG51bGxwdHIgfTsKIH07CiAKLX0KK0NHQWZmaW5l
VHJhbnNmb3JtIGdldFVzZXJUb0Jhc2VDVE0oQ0dDb250ZXh0UmVmKTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjaW5jbHVkZSAiQ0dDb250ZXh0U3RhdGVTYXZlci5oIgogCisjZW5kaWYg
Ly8gVVNFKENHKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>