<?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>20051</bug_id>
          
          <creation_ts>2008-07-16 05:15:30 -0700</creation_ts>
          <short_desc>SVGAnimated* properties macro magic needs to be rewritten</short_desc>
          <delta_ts>2019-08-07 13:48:47 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>10745</dependson>
    
    <dependson>20052</dependson>
          <blocked>12171</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>achristensen</cc>
    
    <cc>eric</cc>
    
    <cc>koivisto</cc>
    
    <cc>oliver</cc>
    
    <cc>rindahl</cc>
    
    <cc>sabouhallawa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>86043</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-07-16 05:15:30 -0700</bug_when>
    <thetext>SVGAnimated* properties concept, and the associated macros have several problems:

- the code is not debuggable, or at least it&apos;s very hard (manual macro expansion)
- the code is not readable, it hides all the complexity, for handling refcounted &amp; POD animatable types, where templates &amp; traits would fit much better
- the code uses WAY to much virutal function calls

Proposal:
Introduce a new templatified class, SVGAnimatedProperty, with four parameters:
- typename OwnerType (the class which contains us, ie. SVGCircleElement)
The SVGAnimatedProperty class should contain helper templates, that are able to figure out the right &quot;OwnerElement&quot; for a certain &quot;OwnerType&quot;. For SVGElement-derived classes they are always equal, ie. for SVGCircleElement OwnerType == OwnerElement, though for ie. SVGURIReference, the OwnerElement is a SVGElement object (retrieved using the virtual contextElement() function).

- typename AnimatedType (the animatable type, ie. SVGLength or SVGTransformList)
The SVGAnimatedProperty class uses helper templates from SVGAnimatedTemplate to figure out the &quot;StorableType&quot; and &quot;DecoratedType&quot; belonging to a certain &quot;AnimatedType&apos; ie. for SVGLength, all three types are equal. For ie. SVGTransformList, the StorableType is RefPtr&lt;SVGTransformList&gt; and the DecoratedType is SVGTransformList*.

- const char* TagName / - const char* PropertyName
Yes, two const char* template parameter to differentiate between the tag/property combinations. 
Previously we used different classnames to achive this goal. ie SVGCircleElement contained a sub-class SVGAnimatedTemplateX (for the &quot;x&quot; property). 

The dom/make_names.pl script can easily be modified to expose stuff like const char* SVGNames::circleTagString = &quot;circle&quot;;.

So basically what the old ANIMATED_PROPERTY_DECLARATIONS macro did, has been moved into a templatified class. Though the macro _STILL_ remains for the ease of declarating these properties, though it does NOT contain any logic anymore, but forward the calls to the SVGAnimatedProperty&lt;...&gt; classes, example:

    // Helper macro used to register animated properties within SVG* classes
    #define ANIMATED_PROPERTY_DECLARATIONS(OwnerType, ElementTag, AttributeTag, AnimatedType, UpperProperty, LowerProperty) \
    private: \
        typedef SVGAnimatedProperty&lt;OwnerType, AnimatedType, ElementTag, AttributeTag&gt; SVGAnimatedProperty##UpperProperty; \
        typedef SVGAnimatedTypeValue&lt;AnimatedType&gt;::DecoratedType DecoratedTypeFor##UpperProperty; \
        SVGAnimatedProperty##UpperProperty m_##LowerProperty; \
    public: \
        DecoratedTypeFor##UpperProperty LowerProperty() const { return m_##LowerProperty.value(); } \
        void set##UpperProperty(DecoratedTypeFor##UpperProperty type) { m_##LowerProperty.setValue(type); } \
        DecoratedTypeFor##UpperProperty LowerProperty##BaseValue() const { return m_##LowerProperty.baseValue(); } \
        void set##UpperProperty##BaseValue(DecoratedTypeFor##UpperProperty type) { m_##LowerProperty.setBaseValue(type); } \
        PassRefPtr&lt;SVGAnimatedProperty##UpperProperty::TearOff&gt; LowerProperty##Animated() const { return m_##LowerProperty.animatedTearOff(); } \
        void synchronize##UpperProperty() const { m_##LowerProperty.synchronize(); }

This allows us to easily declare these properties, while preserving debugability.
The ANIMATED_PROPERTY_DEFINITIONS macro has vanished, it&apos;s not needed anymore, as we initialize the properties in the class constructor now, for example for SVGCircleElement:

-    , m_cx(this, LengthModeWidth)
+    , m_cx(this, SVGNames::cxAttr, LengthModeWidth)

This even allows us to specify the default values as 4th parameter. (The SVGAnimatedProperty constructor forwards these arguments to the constructor of the animated type, ie. SVGLength in the case above).

NOTE: All methods of SVGAnimatedProperty are inlined, non-virtual methods, the ANIMATED_PROPERTY_EMPTY_DECLARATIONS and ANIMATED_PROPERTY_FORWARD_DECLARATIONS macros are COMPLETLY gone, no need to define ie. SVGURIReferences&apos; href property in SVGElement anymore (which was awkward anyway).

The whole SVG&lt;-&gt;XML synchronization part does NOT need any virtual function call anymore (on the SVG side), invokeSVGPropertySynchronization &amp; friends aren&apos;t virtual anymore, and instead live directly in SVGElement.

This finally allows me to kill the SVGLength&apos;s &quot;const SVGElement* context&quot; parameter, saving a lot of memory - the new concept easily allows to remove this hack.

Next benefit: Removing the virtual contextElement() function from all SVGElement derived classes, there is a central contextElement() function in SVGElement now, and some pure-virtual contextElement() function in classes like SVGURIReference etc.

As you can see this approach has dozens of benefits. Need to split up code in individual patches, this is just the master bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86132</commentid>
    <comment_count>1</comment_count>
      <attachid>22325</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-07-16 17:48:53 -0700</bug_when>
    <thetext>Created attachment 22325
Initial patch

Forgot to mention in the bug description, that SVG&lt;-&gt;XML synchronization shouldn&apos;t need any callbacks. This patch also fixes that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86246</commentid>
    <comment_count>2</comment_count>
      <attachid>22343</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-07-17 11:22:50 -0700</bug_when>
    <thetext>Created attachment 22343
Updated patch

Slightly changed patch, let updateAnimated* take const String&amp; instead of StringImpl, refactor synchronization code in helper function (used by SVGPolyElement in a follow-up patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86397</commentid>
    <comment_count>3</comment_count>
      <attachid>22343</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-18 19:10:02 -0700</bug_when>
    <thetext>Comment on attachment 22343
Updated patch

Okay, afaict this looks sane, but i&apos;d like antti to look at it at some point.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86417</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-07-19 09:05:35 -0700</bug_when>
    <thetext>Landed in r35248.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559279</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-07 13:23:00 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559280</commentid>
    <comment_count>6</comment_count>
      <attachid>375744</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-07 13:23:01 -0700</bug_when>
    <thetext>Created attachment 375744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559289</commentid>
    <comment_count>7</comment_count>
      <attachid>375745</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-07 13:37:14 -0700</bug_when>
    <thetext>Created attachment 375745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559296</commentid>
    <comment_count>8</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-07 13:48:16 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; Created attachment 375745 [details]
&gt; Patch

I think this patch should be uploaded to https://bugs.webkit.org/show_bug.cgi?id=200514.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22325</attachid>
            <date>2008-07-16 17:48:53 -0700</date>
            <delta_ts>2008-07-17 11:22:50 -0700</delta_ts>
            <desc>Initial patch</desc>
            <filename>RewriteAnimatableProperties.diff</filename>
            <type>text/plain</type>
            <size>213568</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTIwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTg1IEBACisyMDA4LTA3LTE2ICBOaWtvbGFzIFppbW1lcm1hbm4gIDx6aW1tZXJt
YW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRml4ZXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1
MQorCisgICAgICAgIFJld3JpdGUgYW5pbWF0ZWQgcHJvcGVydHkgY29uY2VwdCB3aXRob3V0IGhl
YXZ5IG1hY3JvIHVzYWdlLCByZXBsYWNlIGJ5IGEgdGVtcGxhdGlmaWVkIHNvbHV0aW9uLgorICAg
ICAgICBGZXdlciB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxzLCBubyBtb3JlIHVzYWdlIG9mIHRoZSB0
ZWFyLW9mZidzIHdpdGhpbiBpbnRlcm5hbCBjb2RlIChzeW5jaHJvbml6YXRpb24gbmVlZGVkIGl0
IGJlZm9yZS4pCisKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQUVsZW1lbnQ6OlNWR0FFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkUHJvcGVydHkuaDogQWRkZWQuCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVk
VGVtcGxhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcik6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ2ly
Y2xlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpTVkdD
aXJjbGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xlRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xp
cFBhdGhFbGVtZW50OjpTVkdDbGlwUGF0aEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdDbGlw
UGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQ6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JF
bGVtZW50OjpTVkdDdXJzb3JFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQ3Vyc29yRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdEZWZzRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRGVmc0VsZW1lbnQ6OmNvbnRleHRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVu
dC5jcHA6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bGVtZW50OjppbnZva2VTVkdQcm9wZXJ0eVN5bmNocm9uaXplcik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbGVtZW50OjppbnZva2VBbGxTVkdQcm9wZXJ0eVN5bmNocm9uaXplcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YWRkU1ZHUHJvcGVydHlTeW5jaHJvbml6ZXIpOgorICAg
ICAgICAqIHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bGxpcHNlRWxlbWVudDo6U1ZHRWxsaXBzZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdFbGxp
cHNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OlNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpOgorICAgICAgICAqIHN2Zy9TVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLmg6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpTVkdGRUJsZW5kRWxlbWVudCk6
CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50OjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50OjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9z
aXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6
OlNWR0ZFQ29tcG9zaXRlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpTVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6U1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRmxvb2RFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQ6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUlt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6U1ZH
RkVJbWFnZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUxpZ2h0RWxlbWVudDo6U1ZHRkVMaWdodEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUxp
Z2h0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OmNvbnRl
eHRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
TWVyZ2VOb2RlRWxlbWVudDo6U1ZHRkVNZXJnZU5vZGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcv
U1ZHRkVNZXJnZU5vZGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OlNWR0ZFT2Zmc2V0
RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVU
aWxlRWxlbWVudDo6U1ZHRkVUaWxlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpTVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVs
ZW1lbnQ6OlNWR0ZpbHRlckVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyk6CisgICAgICAgICogc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAqIHN2Zy9T
VkdGaXRUb1ZpZXdCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRml0VG9WaWV3Qm94OjpT
VkdGaXRUb1ZpZXdCb3gpOgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRm9udEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRFbGVtZW50
Ojpjb250ZXh0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0dFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OlNW
R0dyYWRpZW50RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50Ojpjb250ZXh0RWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZUVsZW1lbnQ6OlNWR0ltYWdlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMaW5lRWxlbWVudDo6U1ZHTGluZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdM
aW5lRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR01hcmtlckVsZW1lbnQ6OmNhbnZhc1Jlc291cmNlKToKKyAgICAgICAgKiBzdmcvU1ZHTWFy
a2VyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6U1ZHTWFza0VsZW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6U1ZHUGF0aEVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAg
ICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRlcm5F
bGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50Ojpjb250ZXh0RWxlbWVudCk6CisgICAgICAgICogc3Zn
L1NWR1BvbHlFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8u
Y3BwOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpTVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVjdEVs
ZW1lbnQ6OlNWR1JlY3RFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
VkdFbGVtZW50OjpTVkdTVkdFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZH
U2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6U1ZHU3RvcEVsZW1lbnQpOgorICAgICAgICAq
IHN2Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OlNWR1N0eWxlZEVsZW1lbnQp
OgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50OjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1N3aXRjaEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3ltYm9sRWxlbWVudDo6Y29udGV4dEVsZW1lbnQpOgor
ICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHVGV4dENvbnRlbnRFbGVtZW50
KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmNvbnRleHRFbGVtZW50KToKKyAgICAgICAgKiBz
dmcvU1ZHVGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dEVsZW1lbnQ6
OlNWR1RleHRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRQYXRoRWxlbWVudDo6U1ZHVGV4dFBhdGhFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4
dFBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6U1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtYWJsZS5oOgorICAgICAgICAqIHN2
Zy9TVkdVUklSZWZlcmVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVVJJUmVmZXJlbmNl
OjpTVkdVUklSZWZlcmVuY2UpOgorICAgICAgICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VF
bGVtZW50OjpTVkdVc2VFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdWaWV3U3Bl
Yy5oOgorCiAyMDA4LTA3LTE2ICBOaWtvbGFzIFppbW1lcm1hbm4gIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtLgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAkocmV2
aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDYgKzUzLDcgQEAgU1ZHQUVsZW1lbnQ6OlNWR0FFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZAogICAgICwgU1ZHVGVzdHMoKQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQorICAgICwgbV90YXJnZXQodGhpcywgU1ZHTmFtZXM6
OnRhcmdldEF0dHIpCiB7CiB9CiAKQEAgLTY1LDggKzY2LDYgQEAgU3RyaW5nIFNWR0FFbGVtZW50
Ojp0aXRsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShYTGlua05hbWVzOjp0aXRs
ZUF0dHIpOwogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdBRWxlbWVudCwg
U3RyaW5nLCBUYXJnZXQsIHRhcmdldCwgU1ZHTmFtZXM6OnRhcmdldEF0dHIpCi0KIHZvaWQgU1ZH
QUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsK
ICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp0YXJnZXRBdHRyKQpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHQUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBRWxl
bWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDEwICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZP
UldBUkRfREVDTEFSQVRJT05TKFNWR1VSSVJlZmVyZW5jZSwgU3RyaW5nLCBIcmVmLCBocmVmKQot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQotCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdBRWxlbWVudCwgU3RyaW5nLCBUYXJnZXQsIHRhcmdldCkKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0FFbGVtZW50LCBTVkdOYW1lczo6YVRhZ1N0
cmluZywgU1ZHTmFtZXM6OnRhcmdldEF0dHJTdHJpbmcsIFN0cmluZywgVGFyZ2V0LCB0YXJnZXQp
CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
QWx0R2x5cGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhF
bGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJt
YW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+CiAgICAgQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIENvbXB1dGVyLCBJ
bmMuCiAKQEAgLTIxLDE4ICsyMSwxOCBAQAogCiAjaWZuZGVmIFNWR0FsdEdseXBoRWxlbWVudF9o
CiAjZGVmaW5lIFNWR0FsdEdseXBoRWxlbWVudF9oCi0jaWYgRU5BQkxFKFNWR19GT05UUykKIAor
I2lmIEVOQUJMRShTVkdfRk9OVFMpCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5j
ZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAg
Y2xhc3MgU1ZHR2x5cGhFbGVtZW50OwogCi0gICAgY2xhc3MgU1ZHQWx0R2x5cGhFbGVtZW50IDog
cHVibGljIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIHB1YmxpYyBTVkdVUklSZWZlcmVuY2UK
LSAgICB7CisgICAgY2xhc3MgU1ZHQWx0R2x5cGhFbGVtZW50IDogcHVibGljIFNWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNW
R1VSSVJlZmVyZW5jZSB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdBbHRHbHlwaEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0Fs
dEdseXBoRWxlbWVudCgpOwpAQCAtNTUsNSArNTUsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1MSBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworI2lmbmRlZiBTVkdBbmltYXRlZFByb3BlcnR5X2gKKyNkZWZpbmUgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eV9oCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR0FuaW1hdGVkVGVt
cGxhdGUuaCIKKyNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCIKKyNpbmNsdWRlICJT
eW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJn
LCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CisgICAgY2xh
c3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlw
ZSwgdHlwZW5hbWUgT3duZXJFbGVtZW50LCB0eXBlbmFtZSBBbmltYXRlZFR5cGUsIHR5cGVuYW1l
IERlY29yYXRlZFR5cGUsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5
TmFtZT4KKyAgICBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZiA6IHB1YmxpYyBTVkdB
bmltYXRlZFRlbXBsYXRlPERlY29yYXRlZFR5cGU+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHR5
cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8T3duZXJUeXBlLCBPd25lckVsZW1lbnQs
IEFuaW1hdGVkVHlwZSwgRGVjb3JhdGVkVHlwZSwgVGFnTmFtZSwgUHJvcGVydHlOYW1lPiBTZWxm
OworICAgICAgICB0eXBlZGVmIFNWR0FuaW1hdGVkUHJvcGVydHk8T3duZXJUeXBlLCBBbmltYXRl
ZFR5cGUsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT4gQ3JlYXRvcjsKKworICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTZWxmPiBjcmVhdGUoY29uc3QgQ3JlYXRvciYgY3JlYXRvciwgY29uc3QgT3du
ZXJFbGVtZW50KiBvd25lciwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWxmKGNyZWF0b3IsIG93
bmVyLCBhdHRyaWJ1dGVOYW1lKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIERlY29y
YXRlZFR5cGUgYmFzZVZhbCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0QmFzZVZh
bChEZWNvcmF0ZWRUeXBlKTsKKworICAgICAgICB2aXJ0dWFsIERlY29yYXRlZFR5cGUgYW5pbVZh
bCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbVZhbChEZWNvcmF0ZWRUeXBl
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmKGNv
bnN0IENyZWF0b3ImLCBjb25zdCBPd25lckVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKTsKKworICAgICAgICBDcmVhdG9yJiBtX2NyZWF0b3I7CisgICAgICAgIFJl
ZlB0cjxPd25lckVsZW1lbnQ+IG1fb3duZXJFbGVtZW50OworICAgIH07CisKKyAgICAvLyBIZWxw
ZXIgdGVtcGxhdGVzIG1hcHBpbmcgb3duZXIgdHlwZXMgdG8gb3duZXIgZWxlbWVudHMgKGZvciBT
VkcqRWxlbWVudCBPd25lclR5cGUgaXMgZXF1YWwgdG8gT3duZXJFbGVtZW50LCBmb3Igbm9uLVNW
RypFbGVtZW50IGRlcml2ZWQgdHlwZXMsIHRoZXkncmUgZGlmZmVyZW50KQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE93bmVyVHlwZSwgYm9vbCBpc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudD4KKyAgICBz
dHJ1Y3QgR2V0T3duZXJFbGVtZW50Rm9yVHlwZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93
bmVyVHlwZT4KKyAgICBzdHJ1Y3QgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ7CisKKyAgICAvLyBB
YnN0cmFjdCBiYXNlIGNsYXNzCisgICAgY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2UgOiBO
b25jb3B5YWJsZSB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZFBy
b3BlcnR5QmFzZSgpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemUoKSBjb25z
dCA9IDA7CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlw
ZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQ
cm9wZXJ0eU5hbWU+CisgICAgY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSA6IHB1YmxpYyBTVkdB
bmltYXRlZFByb3BlcnR5QmFzZSB7CisgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIE93bmVy
VHlwZUFyZyBPd25lclR5cGU7CisgICAgICAgIHR5cGVkZWYgQW5pbWF0ZWRUeXBlQXJnIEFuaW1h
dGVkVHlwZTsKKworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFNWR0FuaW1hdGVkVHlwZVZhbHVl
PEFuaW1hdGVkVHlwZT46OlN0b3JhYmxlVHlwZSBTdG9yYWJsZVR5cGU7CisgICAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgU1ZHQW5pbWF0ZWRUeXBlVmFsdWU8QW5pbWF0ZWRUeXBlPjo6RGVjb3JhdGVk
VHlwZSBEZWNvcmF0ZWRUeXBlOworCisgICAgICAgIHR5cGVkZWYgR2V0T3duZXJFbGVtZW50Rm9y
VHlwZTxPd25lclR5cGUsIElzRGVyaXZlZEZyb21TVkdFbGVtZW50PE93bmVyVHlwZT46OnZhbHVl
PiBPd25lckVsZW1lbnRGb3JUeXBlOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE93bmVyRWxl
bWVudEZvclR5cGU6Ok93bmVyRWxlbWVudCBPd25lckVsZW1lbnQ7CisgICAgICAgIHR5cGVkZWYg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8T3duZXJUeXBlLCBPd25lckVsZW1lbnQsIEFuaW1h
dGVkVHlwZSwgRGVjb3JhdGVkVHlwZSwgVGFnTmFtZSwgUHJvcGVydHlOYW1lPiBUZWFyT2ZmOwor
CisgICAgICAgIC8vIGF0dHJpYnV0ZU5hbWUgJiBhdHRyaWJ1dGVJZGVudGlmaWVyIG1heSBkaWZm
ZXIuIEZvciBTVkdNYXJrZXJFbGVtZW50LCB0aGVyZSBhcmUgdHdvIGV4cG9zZWQgU1ZHIGFuaW1h
dGFibGUKKyAgICAgICAgLy8gcHJvcGVydGllczogb3JpZW50VHlwZSAmIG9yaWVudEFuZ2xlLCB0
aG91Z2ggb25seSBvbmUgRE9NIGF0dHJpYnV0ZSAib3JpZW50IiwgaGFuZGxlIHRoZXNlIGNhc2Vz
IQorICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5KGNvbnN0IE93bmVyVHlwZSosIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpOworICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5
KGNvbnN0IE93bmVyVHlwZSosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlSWRlbnRpZmllcik7CisKKyAgICAgICAgLy8gIkZv
cndhcmRpbmcgY29uc3RydWN0b3JzIiBmb3IgcHJpbWl0aXZlIHR5cGUgYXNzaWdubWVudCB3aXRo
IG1vcmUgdGhhbiBvbmUgYXJndW1lbnQKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVDE+Cisg
ICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHkoY29uc3QgT3duZXJUeXBlKiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUMSYpOworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxPgorICAgICAgICBTVkdBbmlt
YXRlZFByb3BlcnR5KGNvbnN0IE93bmVyVHlwZSosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlSWRlbnRpZmllciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYpOworCisgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KKyAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb25z
dCBPd25lclR5cGUqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiwgY29uc3QgVDImKTsKKworICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CisgICAgICAgIFNWR0FuaW1hdGVkUHJv
cGVydHkoY29uc3QgT3duZXJUeXBlKiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVJZGVudGlmaWVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQxJiwgY29uc3QgVDImKTsKKworICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgorICAgICAgICBTVkdBbmlt
YXRlZFByb3BlcnR5KGNvbnN0IE93bmVyVHlwZSosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmLCBjb25zdCBU
MiYsIGNvbnN0IFQzJik7CisgICAgCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDM+CisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHkoY29uc3Qg
T3duZXJUeXBlKiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBhdHRyaWJ1dGVJZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFQxJiwgY29uc3QgVDImLCBjb25zdCBUMyYpOworCisgICAgICAgIERlY29yYXRl
ZFR5cGUgdmFsdWUoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRWYWx1ZShEZWNvcmF0ZWRUeXBl
KTsKKworICAgICAgICBEZWNvcmF0ZWRUeXBlIGJhc2VWYWx1ZSgpIGNvbnN0OworICAgICAgICB2
b2lkIHNldEJhc2VWYWx1ZShEZWNvcmF0ZWRUeXBlKTsKKworICAgICAgICAvLyBUZWFyIG9mZnMg
b25seSB1c2VkIGJ5IGJpbmRpbmdzLCBuZXZlciBpbiBpbnRlcm5hbCBjb2RlCisgICAgICAgIFBh
c3NSZWZQdHI8VGVhck9mZj4gYW5pbWF0ZWRUZWFyT2ZmKCkgY29uc3Q7CisKKyAgICAgICAgdm9p
ZCBzeW5jaHJvbml6ZSgpIGNvbnN0OworCisgICAgICAgIHZvaWQgc3RhcnRBbmltYXRpb24oKSBj
b25zdDsKKyAgICAgICAgdm9pZCBzdG9wQW5pbWF0aW9uKCk7CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBjb25zdCBPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCgpIGNvbnN0OworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgLy8gV2UncmUgYSBtZW1iZXIgdmFyaWFibGUgb24gc3RhY2ssIGxpdmlu
ZyBpbiBPd25lclR5cGUsIE5PIG5lZWQgdG8gcmVmIGhlcmUuCisgICAgICAgIGNvbnN0IE93bmVy
VHlwZSogbV9vd25lclR5cGU7CisKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbV9hdHRy
aWJ1dGVOYW1lOworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG1fYXR0cmlidXRlSWRlbnRp
ZmllcjsKKworICAgICAgICBtdXRhYmxlIFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXI8U3RvcmFi
bGVUeXBlPiBtX3ZhbHVlOworICAgIH07CisKKyAgICAvLyBTVkdBbmltYXRlZFByb3BlcnR5VGVh
ck9mZiBpbXBsZW1lbnRhdGlvbgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlw
ZW5hbWUgT3duZXJFbGVtZW50LCB0eXBlbmFtZSBBbmltYXRlZFR5cGUsIHR5cGVuYW1lIERlY29y
YXRlZFR5cGUsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFtZT4K
KyAgICBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxPd25lclR5cGUsIE93bmVyRWxlbWVudCwg
QW5pbWF0ZWRUeXBlLCBEZWNvcmF0ZWRUeXBlLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpTVkdB
bmltYXRlZFByb3BlcnR5VGVhck9mZihjb25zdCBDcmVhdG9yJiBjcmVhdG9yLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IE93bmVyRWxlbWVudCogb3duZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICAgICAgOiBTVkdB
bmltYXRlZFRlbXBsYXRlPERlY29yYXRlZFR5cGU+KGF0dHJpYnV0ZU5hbWUpCisgICAgICAgICwg
bV9jcmVhdG9yKGNvbnN0X2Nhc3Q8Q3JlYXRvciY+KGNyZWF0b3IpKQorICAgICAgICAsIG1fb3du
ZXJFbGVtZW50KGNvbnN0X2Nhc3Q8T3duZXJFbGVtZW50Kj4ob3duZXIpKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fb3duZXJFbGVtZW50KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPd25lclR5cGUsIHR5cGVuYW1lIE93bmVyRWxlbWVudCwgdHlwZW5hbWUgQW5pbWF0ZWRUeXBl
LCB0eXBlbmFtZSBEZWNvcmF0ZWRUeXBlLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFy
KiBQcm9wZXJ0eU5hbWU+CisgICAgRGVjb3JhdGVkVHlwZSBTVkdBbmltYXRlZFByb3BlcnR5VGVh
ck9mZjxPd25lclR5cGUsIE93bmVyRWxlbWVudCwgQW5pbWF0ZWRUeXBlLCBEZWNvcmF0ZWRUeXBl
LCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpiYXNlVmFsKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2NyZWF0b3IuYmFzZVZhbHVlKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3duZXJUeXBlLCB0eXBlbmFtZSBPd25lckVsZW1lbnQsIHR5cGVuYW1lIEFuaW1hdGVk
VHlwZSwgdHlwZW5hbWUgRGVjb3JhdGVkVHlwZSwgY29uc3QgY2hhciogVGFnTmFtZSwgY29uc3Qg
Y2hhciogUHJvcGVydHlOYW1lPgorICAgIHZvaWQgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8
T3duZXJUeXBlLCBPd25lckVsZW1lbnQsIEFuaW1hdGVkVHlwZSwgRGVjb3JhdGVkVHlwZSwgVGFn
TmFtZSwgUHJvcGVydHlOYW1lPjo6c2V0QmFzZVZhbChEZWNvcmF0ZWRUeXBlIG5ld0Jhc2VWYWwp
CisgICAgeworICAgICAgICBtX2NyZWF0b3Iuc2V0QmFzZVZhbHVlKG5ld0Jhc2VWYWwpOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlwZW5hbWUgT3duZXJFbGVt
ZW50LCB0eXBlbmFtZSBBbmltYXRlZFR5cGUsIHR5cGVuYW1lIERlY29yYXRlZFR5cGUsIGNvbnN0
IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFtZT4KKyAgICBEZWNvcmF0ZWRU
eXBlIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPE93bmVyVHlwZSwgT3duZXJFbGVtZW50LCBB
bmltYXRlZFR5cGUsIERlY29yYXRlZFR5cGUsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46OmFuaW1W
YWwoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY3JlYXRvci52YWx1ZSgpOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlwZW5hbWUgT3duZXJFbGVt
ZW50LCB0eXBlbmFtZSBBbmltYXRlZFR5cGUsIHR5cGVuYW1lIERlY29yYXRlZFR5cGUsIGNvbnN0
IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFtZT4KKyAgICB2b2lkIFNWR0Fu
aW1hdGVkUHJvcGVydHlUZWFyT2ZmPE93bmVyVHlwZSwgT3duZXJFbGVtZW50LCBBbmltYXRlZFR5
cGUsIERlY29yYXRlZFR5cGUsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46OnNldEFuaW1WYWwoRGVj
b3JhdGVkVHlwZSBuZXdBbmltVmFsKQorICAgIHsKKyAgICAgICAgbV9jcmVhdG9yLnNldFZhbHVl
KG5ld0FuaW1WYWwpOworICAgIH0KKworICAgIC8vIFNWR0FuaW1hdGVkUHJvcGVydHkgaW1wbGVt
ZW50YXRpb24KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFu
aW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlO
YW1lPgorICAgIFNWR0FuaW1hdGVkUHJvcGVydHk8T3duZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVB
cmcsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46OlNWR0FuaW1hdGVkUHJvcGVydHkoY29uc3QgT3du
ZXJUeXBlKiBvd25lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgICAgIDogbV9vd25lclR5
cGUob3duZXIpCisgICAgICAgICwgbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCisgICAg
ICAgICwgbV9hdHRyaWJ1dGVJZGVudGlmaWVyKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpCisg
ICAgICAgICwgbV92YWx1ZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9vd25lclR5cGUpOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5p
bWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5h
bWU+CisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFy
ZywgVGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBPd25l
clR5cGUqIG93bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlSWRlbnRp
ZmllcikKKyAgICAgICAgOiBtX293bmVyVHlwZShvd25lcikKKyAgICAgICAgLCBtX2F0dHJpYnV0
ZU5hbWUoYXR0cmlidXRlTmFtZSkKKyAgICAgICAgLCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIoYXR0
cmlidXRlSWRlbnRpZmllcikKKyAgICAgICAgLCBtX3ZhbHVlKCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX293bmVyVHlwZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJU
eXBlQXJnLCB0eXBlbmFtZSBBbmltYXRlZFR5cGVBcmcsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNv
bnN0IGNoYXIqIFByb3BlcnR5TmFtZT4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMT4KKyAgICBT
VkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1l
LCBQcm9wZXJ0eU5hbWU+OjpTVkdBbmltYXRlZFByb3BlcnR5KGNvbnN0IE93bmVyVHlwZSogb3du
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVDEmIGFyZzEpCisgICAgICAgIDogbV9vd25lclR5cGUob3duZXIp
CisgICAgICAgICwgbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCisgICAgICAgICwgbV9h
dHRyaWJ1dGVJZGVudGlmaWVyKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpCisgICAgICAgICwg
bV92YWx1ZShhcmcxKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fb3duZXJUeXBlKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVk
VHlwZUFyZywgY29uc3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxPgorICAgIFNWR0FuaW1hdGVkUHJvcGVydHk8T3duZXJU
eXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46OlNWR0FuaW1h
dGVkUHJvcGVydHkoY29uc3QgT3duZXJUeXBlKiBvd25lciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGF0dHJpYnV0ZUlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUMSYgYXJnMSkKKyAgICAgICAgOiBtX293bmVyVHlwZShvd25l
cikKKyAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKKyAgICAgICAgLCBt
X2F0dHJpYnV0ZUlkZW50aWZpZXIoYXR0cmlidXRlSWRlbnRpZmllcikKKyAgICAgICAgLCBtX3Zh
bHVlKGFyZzEpCisgICAgeworICAgICAgICBBU1NFUlQobV9vd25lclR5cGUpOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBl
QXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgorICAgIFNWR0FuaW1hdGVkUHJvcGVy
dHk8T3duZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46
OlNWR0FuaW1hdGVkUHJvcGVydHkoY29uc3QgT3duZXJUeXBlKiBvd25lciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUMSYgYXJnMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQyJiBhcmcyKQorICAgICAgICA6IG1fb3duZXJUeXBlKG93bmVyKQorICAgICAgICAsIG1f
YXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQorICAgICAgICAsIG1fYXR0cmlidXRlSWRlbnRp
ZmllcihhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKQorICAgICAgICAsIG1fdmFsdWUoYXJnMSwg
YXJnMikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX293bmVyVHlwZSk7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlQXJnLCB0eXBlbmFtZSBBbmltYXRlZFR5cGVBcmcs
IGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFtZT4KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+CisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxP
d25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6U1ZH
QW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBPd25lclR5cGUqIG93bmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgYXR0cmlidXRlSWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiBhcmcxLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIGFyZzIpCisgICAgICAgIDogbV9vd25lclR5
cGUob3duZXIpCisgICAgICAgICwgbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCisgICAg
ICAgICwgbV9hdHRyaWJ1dGVJZGVudGlmaWVyKGF0dHJpYnV0ZUlkZW50aWZpZXIpCisgICAgICAg
ICwgbV92YWx1ZShhcmcxLCBhcmcyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fb3duZXJUeXBl
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1l
IEFuaW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVy
dHlOYW1lPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUg
VDM+CisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFy
ZywgVGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBPd25l
clR5cGUqIG93bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiBhcmcxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIGFyZzIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMyYgYXJnMykKKyAgICAgICAgOiBtX293
bmVyVHlwZShvd25lcikKKyAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkK
KyAgICAgICAgLCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUo
KSkKKyAgICAgICAgLCBtX3ZhbHVlKGFyZzEsIGFyZzIsIGFyZzMpCisgICAgeworICAgICAgICBB
U1NFUlQobV9vd25lclR5cGUpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVy
VHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBj
b25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMz4KKyAgICBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFy
ZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpTVkdBbmltYXRlZFBy
b3BlcnR5KGNvbnN0IE93bmVyVHlwZSogb3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBhdHRyaWJ1dGVJZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVDEmIGFyZzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUMiYgYXJnMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFQzJiBhcmczKQorICAgICAgICA6IG1fb3duZXJUeXBlKG93bmVy
KQorICAgICAgICAsIG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQorICAgICAgICAsIG1f
YXR0cmlidXRlSWRlbnRpZmllcihhdHRyaWJ1dGVJZGVudGlmaWVyKQorICAgICAgICAsIG1fdmFs
dWUoYXJnMSwgYXJnMiwgYXJnMykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX293bmVyVHlwZSk7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlQXJnLCB0eXBlbmFtZSBB
bmltYXRlZFR5cGVBcmcsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5
TmFtZT4KKyAgICB0eXBlbmFtZSBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5p
bWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpEZWNvcmF0ZWRUeXBlCisgICAg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFt
ZSwgUHJvcGVydHlOYW1lPjo6dmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
dmFsdWU7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlQXJnLCB0eXBl
bmFtZSBBbmltYXRlZFR5cGVBcmcsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFBy
b3BlcnR5TmFtZT4KKyAgICB2b2lkIFNWR0FuaW1hdGVkUHJvcGVydHk8T3duZXJUeXBlQXJnLCBB
bmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46OnNldFZhbHVlKHR5cGVuYW1l
IFNWR0FuaW1hdGVkUHJvcGVydHk6OkRlY29yYXRlZFR5cGUgbmV3VmFsdWUpCisgICAgeworICAg
ICAgICBtX3ZhbHVlID0gbmV3VmFsdWU7CisgICAgICAgIG93bmVyRWxlbWVudCgpLT5zZXRTeW5j
aHJvbml6ZWRTVkdBdHRyaWJ1dGVzKGZhbHNlKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciog
VGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgorICAgIHR5cGVuYW1lIFNWR0FuaW1h
dGVkUHJvcGVydHk8T3duZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3Bl
cnR5TmFtZT46OkRlY29yYXRlZFR5cGUKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlw
ZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpiYXNlVmFsdWUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgY29uc3QgT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQg
PSB0aGlzLT5vd25lckVsZW1lbnQoKTsKKyAgICAgICAgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBl
eHRlbnNpb25zID0gKG93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKSA/IG93bmVyRWxlbWVudC0+ZG9j
dW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpIDogMCk7CisgICAgICAgIGlmIChleHRlbnNp
b25zICYmIGV4dGVuc2lvbnMtPmhhc0Jhc2VWYWx1ZTxEZWNvcmF0ZWRUeXBlPihvd25lckVsZW1l
bnQsIG1fYXR0cmlidXRlSWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4gZXh0ZW5zaW9u
cy0+YmFzZVZhbHVlPERlY29yYXRlZFR5cGU+KG93bmVyRWxlbWVudCwgbV9hdHRyaWJ1dGVJZGVu
dGlmaWVyKTsKKworICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3Qg
Y2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgorICAgIHZvaWQgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwgUHJv
cGVydHlOYW1lPjo6c2V0QmFzZVZhbHVlKHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHk6OkRl
Y29yYXRlZFR5cGUgbmV3VmFsdWUpCisgICAgeworICAgICAgICBjb25zdCBPd25lckVsZW1lbnQq
IG93bmVyRWxlbWVudCA9IHRoaXMtPm93bmVyRWxlbWVudCgpOworICAgICAgICBTVkdEb2N1bWVu
dEV4dGVuc2lvbnMqIGV4dGVuc2lvbnMgPSAob3duZXJFbGVtZW50LT5kb2N1bWVudCgpID8gb3du
ZXJFbGVtZW50LT5kb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCkgOiAwKTsKKyAgICAg
ICAgaWYgKGV4dGVuc2lvbnMgJiYgZXh0ZW5zaW9ucy0+aGFzQmFzZVZhbHVlPERlY29yYXRlZFR5
cGU+KG93bmVyRWxlbWVudCwgbV9hdHRyaWJ1dGVJZGVudGlmaWVyKSkgeworICAgICAgICAgICAg
ZXh0ZW5zaW9ucy0+c2V0QmFzZVZhbHVlPERlY29yYXRlZFR5cGU+KG93bmVyRWxlbWVudCwgbV9h
dHRyaWJ1dGVJZGVudGlmaWVyLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICAvLyBPbmx5IHVwZGF0ZSBzdG9yZWQgcHJvcGVydHksIGlmIG5vdCBh
bmltYXRpbmcKKyAgICAgICAgbV92YWx1ZSA9IG5ld1ZhbHVlOworICAgICAgICBvd25lckVsZW1l
bnQtPnNldFN5bmNocm9uaXplZFNWR0F0dHJpYnV0ZXMoZmFsc2UpOworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBj
b25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CisgICAgUGFzc1Jl
ZlB0cjx0eXBlbmFtZSBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRU
eXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpUZWFyT2ZmPgorICAgIFNWR0FuaW1hdGVk
UHJvcGVydHk8T3duZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5
TmFtZT46OmFuaW1hdGVkVGVhck9mZigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbG9v
a3VwT3JDcmVhdGVXcmFwcGVyPE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1l
LCBQcm9wZXJ0eU5hbWUsIFRlYXJPZmYsIE93bmVyRWxlbWVudD4oKnRoaXMsIG93bmVyRWxlbWVu
dCgpLCBtX2F0dHJpYnV0ZU5hbWUsIG1fYXR0cmlidXRlSWRlbnRpZmllcik7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlQXJnLCB0eXBlbmFtZSBBbmltYXRlZFR5cGVB
cmcsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFtZT4KKyAgICB2
b2lkIFNWR0FuaW1hdGVkUHJvcGVydHk8T3duZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRh
Z05hbWUsIFByb3BlcnR5TmFtZT46OnN5bmNocm9uaXplKCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICghbV92YWx1ZS5uZWVkc1N5bmNocm9uaXphdGlvbigpKSAKKyAgICAgICAgICAgIHJldHVy
bjsgCisKKyAgICAgICAgY29uc3QgT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSB0aGlzLT5v
d25lckVsZW1lbnQoKTsKKyAgICAgICAgQXRvbWljU3RyaW5nIHZhbHVlKFNWR0FuaW1hdGVkVHlw
ZVZhbHVlPERlY29yYXRlZFR5cGU+Ojp0b1N0cmluZyhiYXNlVmFsdWUoKSkpOworCisgICAgICAg
IE5hbWVkQXR0ck1hcCogbmFtZWRBdHRyTWFwID0gb3duZXJFbGVtZW50LT5hdHRyaWJ1dGVzKGZh
bHNlKTsgCisgICAgICAgIEF0dHJpYnV0ZSogb2xkID0gbmFtZWRBdHRyTWFwLT5nZXRBdHRyaWJ1
dGVJdGVtKG1fYXR0cmlidXRlTmFtZSk7CisgICAgICAgIGlmIChvbGQgJiYgdmFsdWUuaXNOdWxs
KCkpIAorICAgICAgICAgICAgbmFtZWRBdHRyTWFwLT5yZW1vdmVBdHRyaWJ1dGUob2xkLT5uYW1l
KCkpOyAKKyAgICAgICAgZWxzZSBpZiAoIW9sZCAmJiAhdmFsdWUuaXNOdWxsKCkpIAorICAgICAg
ICAgICAgbmFtZWRBdHRyTWFwLT5hZGRBdHRyaWJ1dGUoY29uc3RfY2FzdDxPd25lckVsZW1lbnQq
Pihvd25lckVsZW1lbnQpLT5jcmVhdGVBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwg
bV9hdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpLCBudWxsQXRvbSksIHZhbHVlKSk7IAorICAgICAg
ICBlbHNlIGlmIChvbGQgJiYgIXZhbHVlLmlzTnVsbCgpKSAKKyAgICAgICAgICAgIG9sZC0+c2V0
VmFsdWUodmFsdWUpOyAKKworICAgICAgICBtX3ZhbHVlLnNldFN5bmNocm9uaXplZCgpOyAKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1h
dGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1l
PgorICAgIHZvaWQgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlw
ZUFyZywgVGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6c3RhcnRBbmltYXRpb24oKSBjb25zdAorICAg
IHsKKyAgICAgICAgY29uc3QgT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSB0aGlzLT5vd25l
ckVsZW1lbnQoKTsKKyAgICAgICAgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBleHRlbnNpb25zID0g
KG93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKSA/IG93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS0+YWNj
ZXNzU1ZHRXh0ZW5zaW9ucygpIDogMCk7CisgICAgICAgIGlmIChleHRlbnNpb25zKSB7CisgICAg
ICAgICAgICBBU1NFUlQoIWV4dGVuc2lvbnMtPmhhc0Jhc2VWYWx1ZTxEZWNvcmF0ZWRUeXBlPihv
d25lckVsZW1lbnQsIG1fYXR0cmlidXRlSWRlbnRpZmllcikpOworICAgICAgICAgICAgZXh0ZW5z
aW9ucy0+c2V0QmFzZVZhbHVlPERlY29yYXRlZFR5cGU+KG93bmVyRWxlbWVudCwgbV9hdHRyaWJ1
dGVJZGVudGlmaWVyLCBtX3ZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29u
c3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgorICAgIHZvaWQgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwg
UHJvcGVydHlOYW1lPjo6c3RvcEFuaW1hdGlvbigpCisgICAgeworICAgICAgICBjb25zdCBPd25l
ckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IHRoaXMtPm93bmVyRWxlbWVudCgpOworICAgICAgICBT
VkdEb2N1bWVudEV4dGVuc2lvbnMqIGV4dGVuc2lvbnMgPSAob3duZXJFbGVtZW50LT5kb2N1bWVu
dCgpID8gb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCkgOiAw
KTsKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMpIHsKKyAgICAgICAgICAgIEFTU0VSVChleHRlbnNp
b25zLT5oYXNCYXNlVmFsdWU8RGVjb3JhdGVkVHlwZT4ob3duZXJFbGVtZW50LCBtX2F0dHJpYnV0
ZUlkZW50aWZpZXIpKTsKKyAgICAgICAgICAgIHNldFZhbHVlKGV4dGVuc2lvbnMtPmJhc2VWYWx1
ZTxEZWNvcmF0ZWRUeXBlPihvd25lckVsZW1lbnQsIG1fYXR0cmlidXRlSWRlbnRpZmllcikpOwor
ICAgICAgICAgICAgZXh0ZW5zaW9ucy0+cmVtb3ZlQmFzZVZhbHVlPEFuaW1hdGVkVHlwZT4ob3du
ZXJFbGVtZW50LCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIpOworICAgICAgICB9CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlQXJnLCB0eXBlbmFtZSBBbmltYXRlZFR5cGVB
cmcsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFtZT4KKyAgICBj
b25zdCB0eXBlbmFtZSBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRU
eXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpPd25lckVsZW1lbnQqCisgICAgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwgUHJv
cGVydHlOYW1lPjo6b3duZXJFbGVtZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBP
d25lckVsZW1lbnRGb3JUeXBlOjpvd25lckVsZW1lbnQobV9vd25lclR5cGUpOworICAgIH0KKwor
ICAgIC8vIEdldE93bmVyRWxlbWVudEZvclR5cGUgaW1wbGVtZW50YXRpb24KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPd25lclR5cGU+CisgICAgc3RydWN0IEdldE93bmVyRWxlbWVudEZvclR5cGU8
T3duZXJUeXBlLCB0cnVlPiA6IE5vbmNvcHlhYmxlIHsKKyAgICAgICAgdHlwZWRlZiBPd25lclR5
cGUgT3duZXJFbGVtZW50OworCisgICAgICAgIHN0YXRpYyBjb25zdCBPd25lckVsZW1lbnQqIG93
bmVyRWxlbWVudChjb25zdCBPd25lclR5cGUqIHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiB0eXBlOworICAgICAgICB9CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE93bmVyVHlwZT4KKyAgICBzdHJ1Y3QgR2V0T3duZXJFbGVtZW50Rm9yVHlwZTxPd25lclR5cGUs
IGZhbHNlPiA6IE5vbmNvcHlhYmxlIHsgICAgCisgICAgICAgIHR5cGVkZWYgU1ZHRWxlbWVudCBP
d25lckVsZW1lbnQ7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IE93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50KGNvbnN0IE93bmVyVHlwZSogdHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgY29u
c3QgT3duZXJFbGVtZW50KiBjb250ZXh0ID0gdHlwZS0+Y29udGV4dEVsZW1lbnQoKTsKKyAgICAg
ICAgICAgIEFTU0VSVChjb250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0OworICAg
ICAgICB9CisgICAgfTsKKworICAgIC8vIElzRGVyaXZlZEZyb21TVkdFbGVtZW50IGltcGxlbWVu
dGF0aW9uCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgorICAgIHN0cnVjdCBJc0Rl
cml2ZWRGcm9tU1ZHRWxlbWVudCA6IE5vbmNvcHlhYmxlIHsKKyAgICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgdmFsdWUgPSB0cnVlOworICAgIH07CisKKyAgICBjbGFzcyBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkOworICAgIHRlbXBsYXRlPD4KKyAgICBzdHJ1Y3QgSXNEZXJpdmVkRnJvbVNW
R0VsZW1lbnQ8U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD4gOiBOb25jb3B5YWJsZSB7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7CisgICAgfTsKKworICAgIGNs
YXNzIFNWR0ZpdFRvVmlld0JveDsKKyAgICB0ZW1wbGF0ZTw+CisgICAgc3RydWN0IElzRGVyaXZl
ZEZyb21TVkdFbGVtZW50PFNWR0ZpdFRvVmlld0JveD4gOiBOb25jb3B5YWJsZSB7CisgICAgICAg
IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7CisgICAgfTsKKworICAgIGNsYXNzIFNW
R1VSSVJlZmVyZW5jZTsKKyAgICB0ZW1wbGF0ZTw+CisgICAgc3RydWN0IElzRGVyaXZlZEZyb21T
VkdFbGVtZW50PFNWR1VSSVJlZmVyZW5jZT4gOiBOb25jb3B5YWJsZSB7CisgICAgICAgIHN0YXRp
YyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7CisgICAgfTsKKworICAgIC8vIEhlbHBlciBtYWNy
byB1c2VkIHRvIHJlZ2lzdGVyIGFuaW1hdGVkIHByb3BlcnRpZXMgd2l0aGluIFNWRyogY2xhc3Nl
cworICAgICNkZWZpbmUgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKE93bmVyVHlwZSwg
RWxlbWVudFRhZywgQXR0cmlidXRlVGFnLCBBbmltYXRlZFR5cGUsIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpIFwKKyAgICBwcml2YXRlOiBcCisgICAgICAgIHR5cGVkZWYgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eTxPd25lclR5cGUsIEFuaW1hdGVkVHlwZSwgRWxlbWVudFRhZywgQXR0cmlidXRl
VGFnPiBTVkdBbmltYXRlZFByb3BlcnR5IyNVcHBlclByb3BlcnR5OyBcCisgICAgICAgIHR5cGVk
ZWYgU1ZHQW5pbWF0ZWRUeXBlVmFsdWU8QW5pbWF0ZWRUeXBlPjo6RGVjb3JhdGVkVHlwZSBEZWNv
cmF0ZWRUeXBlRm9yIyNVcHBlclByb3BlcnR5OyBcCisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVy
dHkjI1VwcGVyUHJvcGVydHkgbV8jI0xvd2VyUHJvcGVydHk7IFwKKyAgICBwdWJsaWM6IFwKKyAg
ICAgICAgRGVjb3JhdGVkVHlwZUZvciMjVXBwZXJQcm9wZXJ0eSBMb3dlclByb3BlcnR5KCkgY29u
c3QgeyByZXR1cm4gbV8jI0xvd2VyUHJvcGVydHkudmFsdWUoKTsgfSBcCisgICAgICAgIHZvaWQg
c2V0IyNVcHBlclByb3BlcnR5KERlY29yYXRlZFR5cGVGb3IjI1VwcGVyUHJvcGVydHkgdHlwZSkg
eyBtXyMjTG93ZXJQcm9wZXJ0eS5zZXRWYWx1ZSh0eXBlKTsgfSBcCisgICAgICAgIERlY29yYXRl
ZFR5cGVGb3IjI1VwcGVyUHJvcGVydHkgTG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV8jI0xvd2VyUHJvcGVydHkuYmFzZVZhbHVlKCk7IH0gXAorICAgICAgICB2b2lk
IHNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKERlY29yYXRlZFR5cGVGb3IjI1VwcGVyUHJv
cGVydHkgdHlwZSkgeyBtXyMjTG93ZXJQcm9wZXJ0eS5zZXRCYXNlVmFsdWUodHlwZSk7IH0gXAor
ICAgICAgICBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHkjI1VwcGVyUHJvcGVydHk6OlRl
YXJPZmY+IExvd2VyUHJvcGVydHkjI0FuaW1hdGVkKCkgY29uc3QgeyByZXR1cm4gbV8jI0xvd2Vy
UHJvcGVydHkuYW5pbWF0ZWRUZWFyT2ZmKCk7IH0gXAorICAgICAgICB2b2lkIHN5bmNocm9uaXpl
IyNVcHBlclByb3BlcnR5KCkgY29uc3QgeyBtXyMjTG93ZXJQcm9wZXJ0eS5zeW5jaHJvbml6ZSgp
OyB9CisKK307CisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFRlbXBsYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0
ZS5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDE4ICsxNDUsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBtX2Fzc29jaWF0ZWRBdHRyaWJ1dGVOYW1l
OwogICAgIH07CiAKLSAgICB0eXBlZGVmIHZvaWQgKCpBbmltYXRlZFByb3BlcnR5U3luY2hyb25p
emVyKShjb25zdCBTVkdFbGVtZW50Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBl
QXJnLCB0eXBlbmFtZSBBbmltYXRlZFR5cGVBcmcsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0
IGNoYXIqIFByb3BlcnR5TmFtZT4KKyAgICBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5OwogCi0g
ICAgdGVtcGxhdGUgPGNsYXNzIFR5cGUsIGNsYXNzIFNWR0VsZW1lbnRTdWJDbGFzcz4KLSAgICBQ
YXNzUmVmUHRyPFR5cGU+IGxvb2t1cE9yQ3JlYXRlV3JhcHBlcihjb25zdCBTVkdFbGVtZW50U3Vi
Q2xhc3MqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGRvbUF0dHJOYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
YXR0cklkZW50aWZpZXIsIEFuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIgc3luY2hyb25pemVy
KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlwZW5hbWUgQW5pbWF0ZWRUeXBl
LCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWUsIHR5cGVuYW1l
IFR5cGUsIHR5cGVuYW1lIE93bmVyRWxlbWVudD4gCisgICAgUGFzc1JlZlB0cjxUeXBlPiBsb29r
dXBPckNyZWF0ZVdyYXBwZXIoY29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGUsIEFu
aW1hdGVkVHlwZSwgVGFnTmFtZSwgUHJvcGVydHlOYW1lPiYgY3JlYXRvciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBPd25lckVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0
dHJJZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSBr
ZXkoZWxlbWVudCwgYXR0cklkZW50aWZpZXIpOwogICAgICAgICBSZWZQdHI8VHlwZT4gd3JhcHBl
ciA9IHN0YXRpY19jYXN0PFR5cGUqPihUeXBlOjp3cmFwcGVyQ2FjaGUoKS0+Z2V0KGtleSkpOwog
CiAgICAgICAgIGlmICghd3JhcHBlcikgewotICAgICAgICAgICAgd3JhcHBlciA9IFR5cGU6OmNy
ZWF0ZShlbGVtZW50LCBkb21BdHRyTmFtZSk7Ci0gICAgICAgICAgICBlbGVtZW50LT5hZGRTVkdQ
cm9wZXJ0eVN5bmNocm9uaXplcihkb21BdHRyTmFtZSwgc3luY2hyb25pemVyKTsKKyAgICAgICAg
ICAgIHdyYXBwZXIgPSBUeXBlOjpjcmVhdGUoY3JlYXRvciwgZWxlbWVudCwgYXR0ck5hbWUpOwor
ICAgICAgICAgICAgZWxlbWVudC0+YWRkU1ZHUHJvcGVydHlTeW5jaHJvbml6ZXIoYXR0ck5hbWUs
IGNyZWF0b3IpOwogICAgICAgICAgICAgVHlwZTo6d3JhcHBlckNhY2hlKCktPnNldChrZXksIHdy
YXBwZXIuZ2V0KCkpOwogICAgICAgICB9CiAKQEAgLTE2Niw0OCArMTY3LDcyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAvLyBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBwb2ludGVyIHR5
cGVzCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KICAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRU
eXBlVmFsdWUgOiBOb25jb3B5YWJsZSB7CisgICAgICAgIHR5cGVkZWYgUmVmUHRyPFR5cGU+IFN0
b3JhYmxlVHlwZTsKKyAgICAgICAgdHlwZWRlZiBUeXBlKiBEZWNvcmF0ZWRUeXBlOworCiAgICAg
ICAgIHN0YXRpYyBUeXBlIG51bGwoKSB7IHJldHVybiAwOyB9CiAgICAgICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcgdG9TdHJpbmcoVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID8gQXRvbWljU3RyaW5n
KHR5cGUtPnZhbHVlQXNTdHJpbmcoKSkgOiBudWxsQXRvbTsgfQogICAgIH07CiAKICAgICB0ZW1w
bGF0ZTw+CiAgICAgc3RydWN0IFNWR0FuaW1hdGVkVHlwZVZhbHVlPGJvb2w+IDogTm9uY29weWFi
bGUgeworICAgICAgICB0eXBlZGVmIGJvb2wgU3RvcmFibGVUeXBlOworICAgICAgICB0eXBlZGVm
IGJvb2wgRGVjb3JhdGVkVHlwZTsKKwogICAgICAgICBzdGF0aWMgYm9vbCBudWxsKCkgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyB0b1N0cmluZyhib29sIHR5
cGUpIHsgcmV0dXJuIHR5cGUgPyAidHJ1ZSIgOiAiZmFsc2UiOyB9CiAgICAgfTsKIAogICAgIHRl
bXBsYXRlPD4KICAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRUeXBlVmFsdWU8aW50PiA6IE5vbmNvcHlh
YmxlIHsKKyAgICAgICAgdHlwZWRlZiBpbnQgU3RvcmFibGVUeXBlOworICAgICAgICB0eXBlZGVm
IGludCBEZWNvcmF0ZWRUeXBlOworCiAgICAgICAgIHN0YXRpYyBpbnQgbnVsbCgpIHsgcmV0dXJu
IDA7IH0KICAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyB0b1N0cmluZyhpbnQgdHlwZSkgeyBy
ZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8Pgog
ICAgIHN0cnVjdCBTVkdBbmltYXRlZFR5cGVWYWx1ZTxsb25nPiA6IE5vbmNvcHlhYmxlIHsKKyAg
ICAgICAgdHlwZWRlZiBsb25nIFN0b3JhYmxlVHlwZTsKKyAgICAgICAgdHlwZWRlZiBsb25nIERl
Y29yYXRlZFR5cGU7CisKICAgICAgICAgc3RhdGljIGxvbmcgbnVsbCgpIHsgcmV0dXJuIDBsOyB9
CiAgICAgICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdG9TdHJpbmcobG9uZyB0eXBlKSB7IHJldHVy
biBTdHJpbmc6Om51bWJlcih0eXBlKTsgfQogICAgIH07CiAKICAgICB0ZW1wbGF0ZTw+CiAgICAg
c3RydWN0IFNWR0FuaW1hdGVkVHlwZVZhbHVlPFNWR0xlbmd0aD4gOiBOb25jb3B5YWJsZSB7Cisg
ICAgICAgIHR5cGVkZWYgU1ZHTGVuZ3RoIFN0b3JhYmxlVHlwZTsKKyAgICAgICAgdHlwZWRlZiBT
VkdMZW5ndGggRGVjb3JhdGVkVHlwZTsKKwogICAgICAgICBzdGF0aWMgU1ZHTGVuZ3RoIG51bGwo
KSB7IHJldHVybiBTVkdMZW5ndGgoKTsgfQogICAgICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHRv
U3RyaW5nKGNvbnN0IFNWR0xlbmd0aCYgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5n
KCk7IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8PgogICAgIHN0cnVjdCBTVkdBbmltYXRlZFR5
cGVWYWx1ZTxmbG9hdD4gOiBOb25jb3B5YWJsZSB7CisgICAgICAgIHR5cGVkZWYgZmxvYXQgU3Rv
cmFibGVUeXBlOworICAgICAgICB0eXBlZGVmIGZsb2F0IERlY29yYXRlZFR5cGU7CisKICAgICAg
ICAgc3RhdGljIGZsb2F0IG51bGwoKSB7IHJldHVybiAwLjBmOyB9CiAgICAgICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcgdG9TdHJpbmcoZmxvYXQgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIo
dHlwZSk7IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8PgogICAgIHN0cnVjdCBTVkdBbmltYXRl
ZFR5cGVWYWx1ZTxGbG9hdFJlY3Q+IDogTm9uY29weWFibGUgeworICAgICAgICB0eXBlZGVmIEZs
b2F0UmVjdCBTdG9yYWJsZVR5cGU7CisgICAgICAgIHR5cGVkZWYgRmxvYXRSZWN0IERlY29yYXRl
ZFR5cGU7CisKICAgICAgICAgc3RhdGljIEZsb2F0UmVjdCBudWxsKCkgeyByZXR1cm4gRmxvYXRS
ZWN0KCk7IH0KICAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyB0b1N0cmluZyhjb25zdCBGbG9h
dFJlY3QmIHR5cGUpIHsgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlZiAlZiAlZiAlZiIsIHR5cGUu
eCgpLCB0eXBlLnkoKSwgdHlwZS53aWR0aCgpLCB0eXBlLmhlaWdodCgpKTsgfQogICAgIH07CiAK
ICAgICB0ZW1wbGF0ZTw+CiAgICAgc3RydWN0IFNWR0FuaW1hdGVkVHlwZVZhbHVlPFN0cmluZz4g
OiBOb25jb3B5YWJsZSB7CisgICAgICAgIHR5cGVkZWYgU3RyaW5nIFN0b3JhYmxlVHlwZTsKKyAg
ICAgICAgdHlwZWRlZiBTdHJpbmcgRGVjb3JhdGVkVHlwZTsKKwogICAgICAgICBzdGF0aWMgU3Ry
aW5nIG51bGwoKSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgICAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIHRvU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgeyByZXR1cm4gdHlwZTsgfQogICAgIH07
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdl
YkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyAr
OTUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVB
bmltYXRpb24oZmxvYXQgcGVyY2VudCwgdW5zaWduZWQgcmVwZWF0LCBTVkdTTUlMRWxlbWVudCog
cmVzdWx0RWxlbWVudCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbmRlZEFjdGl2ZUludGVydmFs
KCk7CiAgICAgICAgIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFU
SU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBm
cm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGJ5U3RyaW5nKSA9IDA7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNw
cAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsOSArMzcsOSBAQCBTVkdDaXJjbGVFbGVtZW50OjpTVkdDaXJj
bGVFbGVtZW50KGNvbnN0CiAgICAgLCBTVkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQog
ICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgLCBtX2N4KExlbmd0aE1v
ZGVXaWR0aCkKLSAgICAsIG1fY3koTGVuZ3RoTW9kZUhlaWdodCkKLSAgICAsIG1fcihMZW5ndGhN
b2RlT3RoZXIpCisgICAgLCBtX2N4KHRoaXMsIFNWR05hbWVzOjpjeEF0dHIsIExlbmd0aE1vZGVX
aWR0aCkKKyAgICAsIG1fY3kodGhpcywgU1ZHTmFtZXM6OmN5QXR0ciwgTGVuZ3RoTW9kZUhlaWdo
dCkKKyAgICAsIG1fcih0aGlzLCBTVkdOYW1lczo6ckF0dHIsIExlbmd0aE1vZGVPdGhlcikKIHsK
IH0KIApAQCAtNDcsMTAgKzQ3LDYgQEAgU1ZHQ2lyY2xlRWxlbWVudDo6flNWR0NpcmNsZUVsZW1l
bnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDaXJjbGVFbGVt
ZW50LCBTVkdMZW5ndGgsIEN4LCBjeCwgU1ZHTmFtZXM6OmN4QXR0cikKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCwgQ3ksIGN5LCBTVkdO
YW1lczo6Y3lBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxl
bWVudCwgU1ZHTGVuZ3RoLCBSLCByLCBTVkdOYW1lczo6ckF0dHIpCi0KIHZvaWQgU1ZHQ2lyY2xl
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewog
ICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmN4QXR0cikKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDaXJj
bGVFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMSArNTEsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNSZWxhdGl2ZVZhbHVlcygpIGNvbnN0OwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElP
TlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLQotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoLCBDeCwgY3gp
Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDaXJjbGVFbGVtZW50
LCBTVkdMZW5ndGgsIEN5LCBjeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCwgUiwgcikKKyAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR05hbWVzOjpjaXJjbGVU
YWdTdHJpbmcsIFNWR05hbWVzOjpjeEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgQ3gsIGN4KQorICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZH
TmFtZXM6OmNpcmNsZVRhZ1N0cmluZywgU1ZHTmFtZXM6OmN5QXR0clN0cmluZywgU1ZHTGVuZ3Ro
LCBDeSwgY3kpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDaXJj
bGVFbGVtZW50LCBTVkdOYW1lczo6Y2lyY2xlVGFnU3RyaW5nLCBTVkdOYW1lczo6ckF0dHJTdHJp
bmcsIFNWR0xlbmd0aCwgUiwgcikKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1KQorKysgV2Vi
Q29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsNyBAQCBTVkdDbGlwUGF0aEVsZW1lbnQ6OlNWR0NsaXBQYXRoRWxlbWVudChjCiAgICAgLCBT
VkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCgpCi0gICAgLCBtX2NsaXBQYXRoVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5J
VF9UWVBFX1VTRVJTUEFDRU9OVVNFKQorICAgICwgbV9jbGlwUGF0aFVuaXRzKHRoaXMsIFNWR05h
bWVzOjpjbGlwUGF0aFVuaXRzQXR0ciwgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJT
UEFDRU9OVVNFKQogewogfQogCkBAIC00Niw4ICs0Niw2IEBAIFNWR0NsaXBQYXRoRWxlbWVudDo6
flNWR0NsaXBQYXRoRWxlbWVudCgKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHQ2xpcFBhdGhFbGVtZW50LCBpbnQsIENsaXBQYXRoVW5pdHMsIGNsaXBQYXRoVW5pdHMs
IFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0cikKLQogdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAo
YXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0cikgewpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHQ2xpcFBhdGhFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZH
Q2xpcFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDkgKzI0LDkgQEAKICNkZWZp
bmUgU1ZHQ2xpcFBhdGhFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiU1ZH
UmVzb3VyY2VDbGlwcGVyLmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZC5oIgogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZS5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlQ2xp
cHBlci5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU1ZHVGVzdHMuaCIKIApAQCAtNTQsOSArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBi
b29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQotCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDbGlwUGF0aEVs
ZW1lbnQsIGludCwgQ2xpcFBhdGhVbml0cywgY2xpcFBhdGhVbml0cykKKyAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NsaXBQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OmNs
aXBQYXRoVGFnU3RyaW5nLCBTVkdOYW1lczo6Y2xpcFBhdGhVbml0c0F0dHJTdHJpbmcsIGludCwg
Q2xpcFBhdGhVbml0cywgY2xpcFBhdGhVbml0cykKIAogICAgICAgICBSZWZQdHI8U1ZHUmVzb3Vy
Y2VDbGlwcGVyPiBtX2NsaXBwZXI7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1
KQorKysgV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNSArMzEsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjaGFyIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SWRlbnRpZmllcltd
ID0gIlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IjsKKwogU1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBT
VkdFbGVtZW50KHRhZ05hbWUsIGRvYykKLSAgICAsIG1fdHlwZShGRUNPTVBPTkVOVFRSQU5TRkVS
X1RZUEVfVU5LTk9XTikKLSAgICAsIG1fdGFibGVWYWx1ZXMoU1ZHTnVtYmVyTGlzdDo6Y3JlYXRl
KFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIpKQotICAgICwgbV9zbG9wZSgxLjBmKQotICAgICwg
bV9pbnRlcmNlcHQoMC4wZikKLSAgICAsIG1fYW1wbGl0dWRlKDEuMGYpCi0gICAgLCBtX2V4cG9u
ZW50KDEuMGYpCi0gICAgLCBtX29mZnNldCgwLjBmKQorICAgICwgbV90eXBlKHRoaXMsIFNWR05h
bWVzOjp0eXBlQXR0ciwgRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1VOS05PV04pCisgICAgLCBt
X3RhYmxlVmFsdWVzKHRoaXMsIFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIsIFNWR051bWJlckxp
c3Q6OmNyZWF0ZShTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRyKSkKKyAgICAsIG1fc2xvcGUodGhp
cywgU1ZHTmFtZXM6OnNsb3BlQXR0ciwgMS4wZikKKyAgICAsIG1faW50ZXJjZXB0KHRoaXMsIFNW
R05hbWVzOjppbnRlcmNlcHRBdHRyKQorICAgICwgbV9hbXBsaXR1ZGUodGhpcywgU1ZHTmFtZXM6
OmFtcGxpdHVkZUF0dHIsIDEuMGYpCisgICAgLCBtX2V4cG9uZW50KHRoaXMsIFNWR05hbWVzOjpl
eHBvbmVudEF0dHIsIDEuMGYpCisgICAgLCBtX29mZnNldCh0aGlzLCBTVkdOYW1lczo6b2Zmc2V0
QXR0cikKIHsKIH0KIApAQCAtNDcsMTQgKzQ5LDYgQEAgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQ6On5TVgogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgaW50LCBUeXBlLCB0eXBlLCBTVkdO
YW1lczo6dHlwZUF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19SRUZDT1VOVEVE
KFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOdW1iZXJMaXN0LCBUYWJs
ZVZhbHVlcywgdGFibGVWYWx1ZXMsIFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIpCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dCwgZmxvYXQsIFNsb3BlLCBzbG9wZSwgU1ZHTmFtZXM6OnNsb3BlQXR0cikKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBm
bG9hdCwgSW50ZXJjZXB0LCBpbnRlcmNlcHQsIFNWR05hbWVzOjppbnRlcmNlcHRBdHRyKQotQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQsIGZsb2F0LCBBbXBsaXR1ZGUsIGFtcGxpdHVkZSwgU1ZHTmFtZXM6OmFtcGxpdHVkZUF0
dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudCwgZmxvYXQsIEV4cG9uZW50LCBleHBvbmVudCwgU1ZHTmFtZXM6OmV4cG9u
ZW50QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb25FbGVtZW50LCBmbG9hdCwgT2Zmc2V0LCBvZmZzZXQsIFNWR05hbWVzOjpvZmZz
ZXRBdHRyKQotCiB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgU3Ry
aW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysg
V2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
ICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjIsNDEg
KzIyLDM2IEBACiAKICNpZm5kZWYgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnRf
aAogI2RlZmluZSBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudF9oCi0jaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogCisjaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdO
dW1iZXJMaXN0LmgiCiAjaW5jbHVkZSAiRkVDb21wb25lbnRUcmFuc2Zlci5oIgogCi1uYW1lc3Bh
Y2UgV2ViQ29yZQotewotICAgIGNsYXNzIFNWR051bWJlckxpc3Q7CituYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLSAgICBjbGFzcyBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCA6IHB1
YmxpYyBTVkdFbGVtZW50Ci0gICAgeworICAgIGV4dGVybiBjaGFyIFNWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb25FbGVtZW50SWRlbnRpZmllcltdOworCisgICAgY2xhc3MgU1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgOiBwdWJsaWMgU1ZHRWxlbWVudCB7CiAgICAgcHVibGlj
OgogICAgICAgICBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbkVsZW1lbnQoKTsKIAotICAgICAgICAvLyAnU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQnIGZ1bmN0aW9ucwotICAgICAgICAvLyBEZXJpdmVkIGZyb206ICdF
bGVtZW50JwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKiBhdHRyKTsKICAgICAgICAgCiAgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24gdHJhbnNmZXJGdW5jdGlvbigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfU1RBUlRfREVDTEFSQVRJT05TCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwg
aW50LCBUeXBlLCB0eXBlKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlNf
UkVGQ09VTlRFRChTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTnVtYmVy
TGlzdCwgVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVzKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIGZsb2F0
LCBTbG9wZSwgc2xvcGUpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgZmxvYXQsIEludGVyY2VwdCwgaW50
ZXJjZXB0KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIGZsb2F0LCBBbXBsaXR1ZGUsIGFtcGxpdHVkZSkK
LSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb25FbGVtZW50LCBmbG9hdCwgRXhwb25lbnQsIGV4cG9uZW50KQotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQsIGZsb2F0LCBPZmZzZXQsIG9mZnNldCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjp0eXBl
QXR0clN0cmluZywgaW50LCBUeXBlLCB0eXBlKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6OnRhYmxlVmFs
dWVzQXR0clN0cmluZywgU1ZHTnVtYmVyTGlzdCwgVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVzKQor
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQsIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SWRl
bnRpZmllciwgU1ZHTmFtZXM6OnNsb3BlQXR0clN0cmluZywgZmxvYXQsIFNsb3BlLCBzbG9wZSkK
KyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudElk
ZW50aWZpZXIsIFNWR05hbWVzOjppbnRlcmNlcHRBdHRyU3RyaW5nLCBmbG9hdCwgSW50ZXJjZXB0
LCBpbnRlcmNlcHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnRJZGVudGlmaWVyLCBTVkdOYW1lczo6YW1wbGl0dWRlQXR0clN0cmluZywgZmxv
YXQsIEFtcGxpdHVkZSwgYW1wbGl0dWRlKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6OmV4cG9uZW50QXR0
clN0cmluZywgZmxvYXQsIEV4cG9uZW50LCBleHBvbmVudCkKKyAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjpv
ZmZzZXRBdHRyU3RyaW5nLCBmbG9hdCwgT2Zmc2V0LCBvZmZzZXQpCiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19G
SUxURVJTKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0N1cnNvckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4IEBAIFNWR0N1cnNvckVsZW1lbnQ6
OlNWR0N1cnNvckVsZW1lbnQoY29uc3QKICAgICAsIFNWR1Rlc3RzKCkKICAgICAsIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkKLSAgICAsIG1f
eChMZW5ndGhNb2RlV2lkdGgpCi0gICAgLCBtX3koTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1f
eCh0aGlzLCBTVkdOYW1lczo6eEF0dHIsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feSh0aGlz
LCBTVkdOYW1lczo6eUF0dHIsIExlbmd0aE1vZGVIZWlnaHQpCiB7CiB9CiAKQEAgLTQ1LDkgKzQ1
LDYgQEAgU1ZHQ3Vyc29yRWxlbWVudDo6flNWR0N1cnNvckVsZW1lbnQoKQogewogfQogCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDdXJzb3JFbGVtZW50LCBTVkdMZW5ndGgsIFgs
IHgsIFNWR05hbWVzOjp4QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0N1
cnNvckVsZW1lbnQsIFNWR0xlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyKQotCiB2b2lkIFNW
R0N1cnNvckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0
cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdDdXJzb3JFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHQ3Vy
c29yRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMSArNTQsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9O
UyhTVkdVUklSZWZlcmVuY2UsIFN0cmluZywgSHJlZiwgaHJlZikKLQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTGVuZ3RoLCBYLCB4
KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ3Vyc29yRWxlbWVu
dCwgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTmFtZXM6OmN1cnNvclRhZ1N0cmluZywgU1ZHTmFtZXM6
OnhBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdDdXJzb3JFbGVtZW50LCBTVkdOYW1lczo6Y3Vyc29yVGFnU3RyaW5n
LCBTVkdOYW1lczo6eUF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWSwgeSkKIAogICAgICAgICBIYXNo
U2V0PFNWR0VsZW1lbnQqPiBtX2NsaWVudHM7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0RlZnNFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQu
aAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MiwxMiArNDIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKLSAgICAK
KwogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KLQotICAgIHByaXZhdGU6Ci0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJTVkdEb2N1
bWVudEV4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKICNpbmNs
dWRlICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiU1ZH
U1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNW
R1VzZUVsZW1lbnQuaCIKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwyNTIgKzI1LDkgQEAKIAog
I2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRU
ZW1wbGF0ZS5oIgotI2luY2x1ZGUgIlNWR0RvY3VtZW50RXh0ZW5zaW9ucy5oIgorI2luY2x1ZGUg
IlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2luY2x1ZGUg
IlN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIuaCIKLQotI2RlZmluZSBBTklNQVRFRF9QUk9QRVJU
WV9FTVBUWV9ERUNMQVJBVElPTlNfSU5URVJOQUwoRGVjb3JhdGVkVHlwZSwgTnVsbFR5cGUsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLXB1YmxpYzogXAotICAgIHZpcnR1YWwgRGVj
b3JhdGVkVHlwZSBMb3dlclByb3BlcnR5KCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
cmV0dXJuIE51bGxUeXBlOyB9IFwKLSAgICB2aXJ0dWFsIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5
KERlY29yYXRlZFR5cGUpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gXAotICAgIHZpcnR1YWwg
RGVjb3JhdGVkVHlwZSBMb3dlclByb3BlcnR5IyNCYXNlVmFsdWUoKSBjb25zdCB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyByZXR1cm4gTnVsbFR5cGU7IH0gXAotICAgIHZpcnR1YWwgdm9pZCBzZXQj
I1VwcGVyUHJvcGVydHkjI0Jhc2VWYWx1ZShEZWNvcmF0ZWRUeXBlKSB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9IFwKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemUjI1VwcGVyUHJvcGVydHko
KSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IFwKLSAgICB2aXJ0dWFsIEFuaW1hdGVk
UHJvcGVydHlTeW5jaHJvbml6ZXIgc3luY2hyb25pemVyRm9yIyNVcHBlclByb3BlcnR5KCkgY29u
c3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIEFuaW1hdGVkUHJvcGVydHlTeW5jaHJv
bml6ZXIoKTsgfSBcCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0IyNVcHBlclByb3BlcnR5KCkgY29u
c3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSBcCi0gICAgdmlydHVhbCB2b2lkIHN0b3AjI1Vw
cGVyUHJvcGVydHkoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0KLSNkZWZpbmUgQU5JTUFU
RURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlNfSU5URVJOQUwoRm9yd2FyZENsYXNzLCBE
ZWNvcmF0ZWRUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1wdWJsaWM6IFwK
LSAgICB2aXJ0dWFsIERlY29yYXRlZFR5cGUgTG93ZXJQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJu
IEZvcndhcmRDbGFzczo6TG93ZXJQcm9wZXJ0eSgpOyB9IFwKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
IyNVcHBlclByb3BlcnR5KERlY29yYXRlZFR5cGUgbmV3VmFsdWUpIHsgRm9yd2FyZENsYXNzOjpz
ZXQjI1VwcGVyUHJvcGVydHkobmV3VmFsdWUpOyB9IFwKLSAgICB2aXJ0dWFsIERlY29yYXRlZFR5
cGUgTG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gRm9yd2FyZENsYXNz
OjpMb3dlclByb3BlcnR5IyNCYXNlVmFsdWUoKTsgfSBcCi0gICAgdmlydHVhbCB2b2lkIHNldCMj
VXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKERlY29yYXRlZFR5cGUgbmV3VmFsdWUpIHsgRm9yd2Fy
ZENsYXNzOjpzZXQjI1VwcGVyUHJvcGVydHkjI0Jhc2VWYWx1ZShuZXdWYWx1ZSk7IH0gXAotICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSgpIGNvbnN0IHsgRm9yd2Fy
ZENsYXNzOjpzeW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSgpOyB9IFwKLSAgICB2aXJ0dWFsIEFu
aW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIgc3luY2hyb25pemVyRm9yIyNVcHBlclByb3BlcnR5
KCkgY29uc3QgeyByZXR1cm4gRm9yd2FyZENsYXNzOjpzeW5jaHJvbml6ZXJGb3IjI1VwcGVyUHJv
cGVydHkoKTsgfSBcCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0IyNVcHBlclByb3BlcnR5KCkgY29u
c3QgeyBGb3J3YXJkQ2xhc3M6OnN0YXJ0IyNVcHBlclByb3BlcnR5KCk7IH0gXAotICAgIHZpcnR1
YWwgdm9pZCBzdG9wIyNVcHBlclByb3BlcnR5KCkgeyBGb3J3YXJkQ2xhc3M6OnN0b3AjI1VwcGVy
UHJvcGVydHkoKTsgfQotCi0jZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OU19J
TlRFUk5BTChDbGFzc1R5cGUsIERlY29yYXRlZFR5cGUsIFN0b3JhZ2VUeXBlLCBVcHBlclByb3Bl
cnR5LCBMb3dlclByb3BlcnR5KSBcCi1jbGFzcyBTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclBy
b3BlcnR5IDogcHVibGljIFNWR0FuaW1hdGVkVGVtcGxhdGU8RGVjb3JhdGVkVHlwZT4geyBcCi1w
dWJsaWM6IFwKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBl
clByb3BlcnR5PiBjcmVhdGUoY29uc3QgQ2xhc3NUeXBlKiBlbGVtZW50LCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBcCi0gICAgeyBcCi0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eShlbGVtZW50LCBhdHRyaWJ1
dGVOYW1lKSk7IFwKLSAgICB9IFwKLSAgICB2aXJ0dWFsIERlY29yYXRlZFR5cGUgYmFzZVZhbCgp
IGNvbnN0OyBcCi0gICAgdmlydHVhbCB2b2lkIHNldEJhc2VWYWwoRGVjb3JhdGVkVHlwZSk7IFwK
LSAgICB2aXJ0dWFsIERlY29yYXRlZFR5cGUgYW5pbVZhbCgpIGNvbnN0OyBcCi0gICAgdmlydHVh
bCB2b2lkIHNldEFuaW1WYWwoRGVjb3JhdGVkVHlwZSk7IFwKLSAgICBcCi1wcml2YXRlOiBcCi0g
ICAgU1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eShjb25zdCBDbGFzc1R5cGUqLCBj
b25zdCBRdWFsaWZpZWROYW1lJik7IFwKLSAgICBSZWZQdHI8Q2xhc3NUeXBlPiBtX2VsZW1lbnQ7
IFwKLX07IFwKLXB1YmxpYzogXAotICAgIERlY29yYXRlZFR5cGUgTG93ZXJQcm9wZXJ0eSgpIGNv
bnN0OyBcCi0gICAgdm9pZCBzZXQjI1VwcGVyUHJvcGVydHkoRGVjb3JhdGVkVHlwZSk7IFwKLSAg
ICBEZWNvcmF0ZWRUeXBlIExvd2VyUHJvcGVydHkjI0Jhc2VWYWx1ZSgpIGNvbnN0OyBcCi0gICAg
dm9pZCBzZXQjI1VwcGVyUHJvcGVydHkjI0Jhc2VWYWx1ZShEZWNvcmF0ZWRUeXBlKTsgXAotICAg
IFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eT4gTG93ZXJQcm9w
ZXJ0eSMjQW5pbWF0ZWQoKSBjb25zdDsgXAotICAgIHZvaWQgc3luY2hyb25pemUjI1VwcGVyUHJv
cGVydHkoKSBjb25zdDsgXAotICAgIEFuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIgc3luY2hy
b25pemVyRm9yIyNVcHBlclByb3BlcnR5KCkgY29uc3Q7IFwKLSAgICB2b2lkIHN0YXJ0IyNVcHBl
clByb3BlcnR5KCkgY29uc3Q7IFwKLSAgICB2b2lkIHN0b3AjI1VwcGVyUHJvcGVydHkoKTsgXAot
XAotcHJpdmF0ZTogXAotICAgIG11dGFibGUgU3luY2hyb25pemFibGVUeXBlV3JhcHBlcjxTdG9y
YWdlVHlwZT4gbV8jI0xvd2VyUHJvcGVydHk7Ci0KLSNkZWZpbmUgQU5JTUFURURfUFJPUEVSVFlf
U1RBUlRfREVDTEFSQVRJT05TIFwKLXB1YmxpYzogXAotICAgIHZpcnR1YWwgdm9pZCBpbnZva2VT
VkdQcm9wZXJ0eVN5bmNocm9uaXplcihTdHJpbmdJbXBsKiBzdHJpbmdJbXBsKSBjb25zdCBcCi0g
ICAgeyBcCi0gICAgICAgIGlmIChtX3N2Z1Byb3BlcnR5VXBkYXRlTWFwLmNvbnRhaW5zKHN0cmlu
Z0ltcGwpKSB7IFwKLSAgICAgICAgICAgIEFuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIgdXBk
YXRlTWV0aG9kID0gbV9zdmdQcm9wZXJ0eVVwZGF0ZU1hcC5nZXQoc3RyaW5nSW1wbCk7IFwKLSAg
ICAgICAgICAgICgqdXBkYXRlTWV0aG9kKSh0aGlzKTsgXAotICAgICAgICB9IFwKLSAgICB9IFwK
LVwKLSAgICB2aXJ0dWFsIHZvaWQgaW52b2tlQWxsU1ZHUHJvcGVydHlTeW5jaHJvbml6ZXJzKCkg
Y29uc3QgXAotICAgIHsgXAotICAgICAgICBIYXNoTWFwPFN0cmluZ0ltcGwqLCBBbmltYXRlZFBy
b3BlcnR5U3luY2hyb25pemVyPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N2Z1Byb3BlcnR5VXBk
YXRlTWFwLmJlZ2luKCk7IFwKLSAgICAgICAgY29uc3QgSGFzaE1hcDxTdHJpbmdJbXBsKiwgQW5p
bWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fc3ZnUHJv
cGVydHlVcGRhdGVNYXAuZW5kKCk7IFwKLSAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkg
eyBcCi0gICAgICAgICAgICBBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyIHVwZGF0ZU1ldGhv
ZCA9IGl0LT5zZWNvbmQ7IFwKLSAgICAgICAgICAgICgqdXBkYXRlTWV0aG9kKSh0aGlzKTsgXAot
ICAgICAgICB9IFwKLSAgICB9IFwKLVwKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU1ZHUHJvcGVydHlT
eW5jaHJvbml6ZXIoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIEFuaW1hdGVkUHJvcGVy
dHlTeW5jaHJvbml6ZXIgbWV0aG9kKSBjb25zdCBcCi0gICAgeyBcCi0gICAgICAgIG1fc3ZnUHJv
cGVydHlVcGRhdGVNYXAuc2V0KGF0dHJOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSwgbWV0aG9kKTsg
XAotICAgIH0gXAotXAotcHJpdmF0ZTogXAotICAgIG11dGFibGUgSGFzaE1hcDxTdHJpbmdJbXBs
KiwgQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcj4gbV9zdmdQcm9wZXJ0eVVwZGF0ZU1hcDsK
LQotI2RlZmluZSBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19JTlRFUk5BTChDbGFzc05h
bWUsIENsYXNzVHlwZSwgRGVjb3JhdGVkVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0
eSwgQXR0ck5hbWUsIEF0dHJJZGVudGlmaWVyLCBDb250ZXh0RWxlbWVudCkgXAotdm9pZCBzeW5j
aHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSMjQ2xhc3NOYW1lIyNDYWxsQmFjayhjb25zdCBTVkdFbGVt
ZW50KiBlbGVtZW50KSBcCi17IFwKLSAgICBzdGF0aWNfY2FzdDxjb25zdCBDbGFzc1R5cGUqPihl
bGVtZW50KS0+c3luY2hyb25pemUjI1VwcGVyUHJvcGVydHkoKTsgXAotfSBcCi1DbGFzc05hbWU6
OlNWR0FuaW1hdGVkVGVtcGxhdGUjI1VwcGVyUHJvcGVydHk6OlNWR0FuaW1hdGVkVGVtcGxhdGUj
I1VwcGVyUHJvcGVydHkoY29uc3QgQ2xhc3NUeXBlKiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKSBcCi06IFNWR0FuaW1hdGVkVGVtcGxhdGU8RGVjb3JhdGVkVHlw
ZT4oYXR0cmlidXRlTmFtZSksIG1fZWxlbWVudChjb25zdF9jYXN0PENsYXNzVHlwZSo+KGVsZW1l
bnQpKSB7IH0gXAotXAotRGVjb3JhdGVkVHlwZSBDbGFzc05hbWU6OlNWR0FuaW1hdGVkVGVtcGxh
dGUjI1VwcGVyUHJvcGVydHk6OmJhc2VWYWwoKSBjb25zdCBcCi17IFwKLSAgICByZXR1cm4gbV9l
bGVtZW50LT5Mb3dlclByb3BlcnR5IyNCYXNlVmFsdWUoKTsgXAotfSBcCi12b2lkIENsYXNzTmFt
ZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eTo6c2V0QmFzZVZhbChEZWNvcmF0
ZWRUeXBlIG5ld0Jhc2VWYWwpIFwKLXsgXAotICAgIG1fZWxlbWVudC0+c2V0IyNVcHBlclByb3Bl
cnR5IyNCYXNlVmFsdWUobmV3QmFzZVZhbCk7IFwKLX0gXAotRGVjb3JhdGVkVHlwZSBDbGFzc05h
bWU6OlNWR0FuaW1hdGVkVGVtcGxhdGUjI1VwcGVyUHJvcGVydHk6OmFuaW1WYWwoKSBjb25zdCBc
Ci17IFwKLSAgICByZXR1cm4gbV9lbGVtZW50LT5Mb3dlclByb3BlcnR5KCk7IFwKLX0gXAotdm9p
ZCBDbGFzc05hbWU6OlNWR0FuaW1hdGVkVGVtcGxhdGUjI1VwcGVyUHJvcGVydHk6OnNldEFuaW1W
YWwoRGVjb3JhdGVkVHlwZSBuZXdBbmltVmFsKSBcCi17IFwKLSAgICBtX2VsZW1lbnQtPnNldCMj
VXBwZXJQcm9wZXJ0eShuZXdBbmltVmFsKTsgXAotfSBcCi1EZWNvcmF0ZWRUeXBlIENsYXNzTmFt
ZTo6TG93ZXJQcm9wZXJ0eSgpIGNvbnN0IFwKLXsgXAotICAgIHJldHVybiBtXyMjTG93ZXJQcm9w
ZXJ0eTsgXAotfSBcCi12b2lkIENsYXNzTmFtZTo6c2V0IyNVcHBlclByb3BlcnR5KERlY29yYXRl
ZFR5cGUgbmV3VmFsdWUpIFwKLXsgXAotICAgIG1fIyNMb3dlclByb3BlcnR5ID0gbmV3VmFsdWU7
IFwKLSAgICBcCi0gICAgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dCA9IENvbnRleHRFbGVtZW50
OyBcCi0gICAgQVNTRVJUKGNvbnRleHQpOyBcCi0gICAgY29udGV4dC0+c2V0U3luY2hyb25pemVk
U1ZHQXR0cmlidXRlcyhmYWxzZSk7IFwKLX0gXAotRGVjb3JhdGVkVHlwZSBDbGFzc05hbWU6Okxv
d2VyUHJvcGVydHkjI0Jhc2VWYWx1ZSgpIGNvbnN0IFwKLXsgXAotICAgIGNvbnN0IFNWR0VsZW1l
bnQqIGNvbnRleHQgPSBDb250ZXh0RWxlbWVudDsgXAotICAgIEFTU0VSVChjb250ZXh0KTsgXAot
ICAgIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogZXh0ZW5zaW9ucyA9IChjb250ZXh0LT5kb2N1bWVu
dCgpID8gY29udGV4dC0+ZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpIDogMCk7IFwK
LSAgICBpZiAoZXh0ZW5zaW9ucyAmJiBleHRlbnNpb25zLT5oYXNCYXNlVmFsdWU8RGVjb3JhdGVk
VHlwZT4oY29udGV4dCwgQXR0cklkZW50aWZpZXIpKSBcCi0gICAgICAgICByZXR1cm4gZXh0ZW5z
aW9ucy0+YmFzZVZhbHVlPERlY29yYXRlZFR5cGU+KGNvbnRleHQsIEF0dHJJZGVudGlmaWVyKTsg
XAotICAgIHJldHVybiBMb3dlclByb3BlcnR5KCk7IFwKLX0gXAotXAotdm9pZCBDbGFzc05hbWU6
OnNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKERlY29yYXRlZFR5cGUgbmV3VmFsdWUpIFwK
LXsgXAotICAgIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQgPSBDb250ZXh0RWxlbWVudDsgXAot
ICAgIEFTU0VSVChjb250ZXh0KTsgXAotICAgIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogZXh0ZW5z
aW9ucyA9IChjb250ZXh0LT5kb2N1bWVudCgpID8gY29udGV4dC0+ZG9jdW1lbnQoKS0+YWNjZXNz
U1ZHRXh0ZW5zaW9ucygpIDogMCk7IFwKLSAgICBpZiAoZXh0ZW5zaW9ucyAmJiBleHRlbnNpb25z
LT5oYXNCYXNlVmFsdWU8RGVjb3JhdGVkVHlwZT4oY29udGV4dCwgQXR0cklkZW50aWZpZXIpKSB7
IFwKLSAgICAgICAgZXh0ZW5zaW9ucy0+c2V0QmFzZVZhbHVlPERlY29yYXRlZFR5cGU+KGNvbnRl
eHQsIEF0dHJJZGVudGlmaWVyLCBuZXdWYWx1ZSk7IFwKLSAgICAgICAgcmV0dXJuOyBcCi0gICAg
fSBcCi0gICAgLyogT25seSB1cGRhdGUgc3RvcmVkIHByb3BlcnR5LCBpZiBub3QgYW5pbWF0aW5n
ICovIFwKLSAgICBzZXQjI1VwcGVyUHJvcGVydHkobmV3VmFsdWUpOyBcCi19IFwKLVwKLXZvaWQg
Q2xhc3NOYW1lOjpzeW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSgpIGNvbnN0IFwKLXsgXAotICAg
IGlmICghbV8jI0xvd2VyUHJvcGVydHkubmVlZHNTeW5jaHJvbml6YXRpb24oKSkgXAotICAgICAg
ICByZXR1cm47IFwKLSAgICBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0ID0gQ29udGV4dEVsZW1l
bnQ7IFwKLSAgICBBU1NFUlQoY29udGV4dCk7IFwKLSAgICBSZWZQdHI8Q2xhc3NOYW1lOjpTVkdB
bmltYXRlZFRlbXBsYXRlIyNVcHBlclByb3BlcnR5PiBhbmltYXRlZENsYXNzKExvd2VyUHJvcGVy
dHkjI0FuaW1hdGVkKCkpOyBcCi0gICAgQVNTRVJUKGFuaW1hdGVkQ2xhc3MpOyBcCi0gICAgQXRv
bWljU3RyaW5nIHZhbHVlKFNWR0FuaW1hdGVkVHlwZVZhbHVlPERlY29yYXRlZFR5cGU+Ojp0b1N0
cmluZyhhbmltYXRlZENsYXNzLT5iYXNlVmFsKCkpKTsgXAotICAgIE5hbWVkQXR0ck1hcCogbmFt
ZWRBdHRyTWFwID0gY29udGV4dC0+YXR0cmlidXRlcyhmYWxzZSk7IFwKLSAgICBBdHRyaWJ1dGUq
IG9sZCA9IG5hbWVkQXR0ck1hcC0+Z2V0QXR0cmlidXRlSXRlbShBdHRyTmFtZSk7IFwKLSAgICBp
ZiAob2xkICYmIHZhbHVlLmlzTnVsbCgpKSBcCi0gICAgICAgIG5hbWVkQXR0ck1hcC0+cmVtb3Zl
QXR0cmlidXRlKG9sZC0+bmFtZSgpKTsgXAotICAgIGVsc2UgaWYgKCFvbGQgJiYgIXZhbHVlLmlz
TnVsbCgpKSBcCi0gICAgICAgIG5hbWVkQXR0ck1hcC0+YWRkQXR0cmlidXRlKGNvbnN0X2Nhc3Q8
U1ZHRWxlbWVudCo+KGNvbnRleHQpLT5jcmVhdGVBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxs
QXRvbSwgQXR0cklkZW50aWZpZXIsIG51bGxBdG9tKSwgdmFsdWUpKTsgXAotICAgIGVsc2UgaWYg
KG9sZCAmJiAhdmFsdWUuaXNOdWxsKCkpIFwKLSAgICAgICAgb2xkLT5zZXRWYWx1ZSh2YWx1ZSk7
IFwKLSAgICBtXyMjTG93ZXJQcm9wZXJ0eS5zZXRTeW5jaHJvbml6ZWQoKTsgXAotfSBcCi1cCi12
b2lkIENsYXNzTmFtZTo6c3RhcnQjI1VwcGVyUHJvcGVydHkoKSBjb25zdCBcCi17IFwKLSAgICBj
b25zdCBTVkdFbGVtZW50KiBjb250ZXh0ID0gQ29udGV4dEVsZW1lbnQ7IFwKLSAgICBBU1NFUlQo
Y29udGV4dCk7IFwKLSAgICBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIGV4dGVuc2lvbnMgPSAoY29u
dGV4dC0+ZG9jdW1lbnQoKSA/IGNvbnRleHQtPmRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKSA6IDApOyBcCi0gICAgaWYgKGV4dGVuc2lvbnMpIHsgXAotICAgICAgICBBU1NFUlQoIWV4
dGVuc2lvbnMtPmhhc0Jhc2VWYWx1ZTxEZWNvcmF0ZWRUeXBlPihjb250ZXh0LCBBdHRySWRlbnRp
ZmllcikpOyBcCi0gICAgICAgIGV4dGVuc2lvbnMtPnNldEJhc2VWYWx1ZTxEZWNvcmF0ZWRUeXBl
Pihjb250ZXh0LCBBdHRySWRlbnRpZmllciwgTG93ZXJQcm9wZXJ0eSgpKTsgXAotICAgIH0gXAot
fSBcCi1cCi12b2lkIENsYXNzTmFtZTo6c3RvcCMjVXBwZXJQcm9wZXJ0eSgpIFwKLXsgXAotICAg
IGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQgPSBDb250ZXh0RWxlbWVudDsgXAotICAgIEFTU0VS
VChjb250ZXh0KTsgXAotICAgIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogZXh0ZW5zaW9ucyA9IChj
b250ZXh0LT5kb2N1bWVudCgpID8gY29udGV4dC0+ZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5z
aW9ucygpIDogMCk7IFwKLSAgICBpZiAoZXh0ZW5zaW9ucykgeyBcCi0gICAgICAgIEFTU0VSVChl
eHRlbnNpb25zLT5oYXNCYXNlVmFsdWU8RGVjb3JhdGVkVHlwZT4oY29udGV4dCwgQXR0cklkZW50
aWZpZXIpKTsgXAotICAgICAgICBzZXQjI1VwcGVyUHJvcGVydHkoZXh0ZW5zaW9ucy0+YmFzZVZh
bHVlPERlY29yYXRlZFR5cGU+KGNvbnRleHQsIEF0dHJJZGVudGlmaWVyKSk7IFwKLSAgICAgICAg
ZXh0ZW5zaW9ucy0+cmVtb3ZlQmFzZVZhbHVlPERlY29yYXRlZFR5cGU+KGNvbnRleHQsIEF0dHJJ
ZGVudGlmaWVyKTsgXAotICAgIH0gXAotfSBcCi1cCi1BbmltYXRlZFByb3BlcnR5U3luY2hyb25p
emVyIENsYXNzTmFtZTo6c3luY2hyb25pemVyRm9yIyNVcHBlclByb3BlcnR5KCkgY29uc3QgXAot
eyBcCi0gICAgcmV0dXJuICZzeW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSMjQ2xhc3NOYW1lIyND
YWxsQmFjazsgXAotfSBcCi1QYXNzUmVmUHRyPENsYXNzTmFtZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0
ZSMjVXBwZXJQcm9wZXJ0eT4gQ2xhc3NOYW1lOjpMb3dlclByb3BlcnR5IyNBbmltYXRlZCgpIGNv
bnN0IFwKLXsgXAotICAgIGNvbnN0IENsYXNzVHlwZSogY29udGV4dCA9IENvbnRleHRFbGVtZW50
OyBcCi0gICAgQVNTRVJUKGNvbnRleHQpOyBcCi0gICAgcmV0dXJuIGxvb2t1cE9yQ3JlYXRlV3Jh
cHBlcjxDbGFzc05hbWU6OlNWR0FuaW1hdGVkVGVtcGxhdGUjI1VwcGVyUHJvcGVydHksIENsYXNz
VHlwZT4oY29udGV4dCwgQXR0ck5hbWUsIEF0dHJJZGVudGlmaWVyLCBzeW5jaHJvbml6ZXJGb3Ij
I1VwcGVyUHJvcGVydHkoKSk7IFwKLX0KLQotLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMsIHVzZWQg
aW4gY2xhc3NlcyB0aGF0IGluaGVyaXQgZnJvbSBTVkdFbGVtZW50LCBhbmQgYW5vdGhlciBiYXNl
IGNsYXNzIGllLiBTVkdVUklSZWZlcmVuY2UgLSB3aGljaCBkZWNsYXJlZCBpdCdzIHByb3BlcnRp
ZXMgdXNpbmcgdGhlIFdJVEhfQ09OVEVYVCguLi4pIG1hY3JvcykKLSNkZWZpbmUgQU5JTUFURURf
UFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoRm9yd2FyZENsYXNzLCBCYXJlVHlwZSwgVXBw
ZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9E
RUNMQVJBVElPTlNfSU5URVJOQUwoRm9yd2FyZENsYXNzLCBCYXJlVHlwZSwgVXBwZXJQcm9wZXJ0
eSwgTG93ZXJQcm9wZXJ0eSkKLQotI2RlZmluZSBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RF
Q0xBUkFUSU9OU19SRUZDT1VOVEVEKEZvcndhcmRDbGFzcywgQmFyZVR5cGUsIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpIFwKLUFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJ
T05TX0lOVEVSTkFMKEZvcndhcmRDbGFzcywgQmFyZVR5cGUqLCBVcHBlclByb3BlcnR5LCBMb3dl
clByb3BlcnR5KQotCi0jZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZX0VNUFRZX0RFQ0xBUkFUSU9O
UyhCYXJlVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotQU5JTUFURURfUFJP
UEVSVFlfRU1QVFlfREVDTEFSQVRJT05TX0lOVEVSTkFMKEJhcmVUeXBlLCBCYXJlVHlwZSgpLCBV
cHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQotCi0jZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZ
X0VNUFRZX0RFQ0xBUkFUSU9OU19SRUZDT1VOVEVEKEJhcmVUeXBlLCBVcHBlclByb3BlcnR5LCBM
b3dlclByb3BlcnR5KSBcCi1BTklNQVRFRF9QUk9QRVJUWV9FTVBUWV9ERUNMQVJBVElPTlNfSU5U
RVJOQUwoQmFyZVR5cGUqLCAwLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQotCi0vLyBN
YWNyb3MgdXNlZCBmb3IgcHJpbWl0aXZlIHR5cGVzIGluIFNWR0VsZW1lbnQgZGVyaXZlZCBjbGFz
c2VzCi0jZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhDbGFzc05hbWUsIEJh
cmVUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlNfSU5URVJOQUwoQ2xhc3NOYW1lLCBCYXJlVHlwZSwgQmFyZVR5cGUsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCi0KLSNkZWZpbmUgQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSwgQXR0ck5hbWUpIFwKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX0lOVEVSTkFM
KENsYXNzTmFtZSwgQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSwgQXR0ck5hbWUsIEF0dHJOYW1lLmxvY2FsTmFtZSgpLCB0aGlzKQotCi0jZGVmaW5lIEFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ1VTVE9NX0lERU5USUZJRVIoQ2xhc3NO
YW1lLCBCYXJlVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSwgQXR0ck5hbWUsIEF0
dHJJZGVudGlmaWVyKSBcCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19JTlRFUk5BTChD
bGFzc05hbWUsIENsYXNzTmFtZSwgQmFyZVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHksIEF0dHJOYW1lLCBBdHRySWRlbnRpZmllciwgdGhpcykKLQotLy8gTWFjcm9zIHVzZWQgZm9y
IHJlZmNvdW50ZWQgdHlwZXMgaW4gU1ZHRWxlbWVudCBkZXJpdmVkIGNsYXNzZXMKLSNkZWZpbmUg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TX1JFRkNPVU5URUQoQ2xhc3NOYW1lLCBCYXJl
VHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TX0lOVEVSTkFMKENsYXNzTmFtZSwgQmFyZVR5cGUqLCBSZWZQdHI8QmFyZVR5
cGU+LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQotCi0jZGVmaW5lIEFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TX1JFRkNPVU5URUQoQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJQ
cm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSwgQXR0ck5hbWUpIFwKLUFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TX0lOVEVSTkFMKENsYXNzTmFtZSwgQ2xhc3NOYW1lLCBCYXJlVHlwZSosIFVwcGVy
UHJvcGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lLCBBdHRyTmFtZS5sb2NhbE5hbWUoKSwg
dGhpcykKLQotI2RlZmluZSBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19SRUZDT1VOVEVE
X1dJVEhfQ1VTVE9NX0lERU5USUZJRVIoQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJQcm9wZXJ0
eSwgTG93ZXJQcm9wZXJ0eSwgQXR0ck5hbWUsIEF0dHJJZGVudGlmaWVyKSBcCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OU19JTlRFUk5BTChDbGFzc05hbWUsIENsYXNzTmFtZSwgQmFyZVR5
cGUqLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZSwgQXR0cklkZW50aWZp
ZXIsIHRoaXMpCi0KLS8vIE1hY3JvcyB1c2VkIGZvciBwcmltaXRpdmUgdHlwZXMgaW4gbm9uLVNW
R0VsZW1lbnQgYmFzZSBjbGFzc2VzIChpZS4gU1ZHVVJJUmVmZXJlbmNlIGFjdHMgYXMgYmFzZSBj
bGFzcywgZ2x1ZWQgdXNpbmcgbXVsdGlwbGUgaW5oZXJpdGFuY2UgaW4gdGhlIFNWRypFbGVtZW50
IGNsYXNzZXMpCi0jZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OU19XSVRIX0NP
TlRFWFQoQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkg
XAotQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TX0lOVEVSTkFMKFNWR0VsZW1lbnQsIEJh
cmVUeXBlLCBCYXJlVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKLQotI2RlZmlu
ZSBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19XSVRIX0NPTlRFWFQoQ2xhc3NOYW1lLCBC
YXJlVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSwgQXR0ck5hbWUpIFwKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TX0lOVEVSTkFMKENsYXNzTmFtZSwgU1ZHRWxlbWVudCwg
QmFyZVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lLCBBdHRyTmFt
ZS5sb2NhbE5hbWUoKSwgY29udGV4dEVsZW1lbnQoKSkKLQotLy8gTWFjcm9zIHVzZWQgZm9yIHJl
ZmNvdW50ZWQgdHlwZXMgaW4gbm9uLVNWR0VsZW1lbnQgYmFzZSBjbGFzc2VzIChpZS4gc2VlIGFi
b3ZlKQotI2RlZmluZSBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlNfUkVGQ09VTlRFRF9X
SVRIX0NPTlRFWFQoQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSkgXAotQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TX0lOVEVSTkFMKFNWR0VsZW1l
bnQsIEJhcmVUeXBlKiwgUmVmUHRyPEJhcmVUeXBlPiwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSkKLQotI2RlZmluZSBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19SRUZDT1VOVEVE
X1dJVEhfQ09OVEVYVChDbGFzc05hbWUsIEJhcmVUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclBy
b3BlcnR5LCBBdHRyTmFtZSkgXAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfSU5URVJO
QUwoQ2xhc3NOYW1lLCBTVkdFbGVtZW50LCBCYXJlVHlwZSosIFVwcGVyUHJvcGVydHksIExvd2Vy
UHJvcGVydHksIEF0dHJOYW1lLCBBdHRyTmFtZS5sb2NhbE5hbWUoKSwgY29udGV4dEVsZW1lbnQo
KSkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMjMsMzMgKzgwLDQ1IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZW5kU1ZHTG9hZEV2ZW50SWZQb3NzaWJsZShib29s
IHNlbmRQYXJlbnRMb2FkRXZlbnRzID0gZmFsc2UpOwogICAgICAgICAKICAgICAgICAgdmlydHVh
bCBBZmZpbmVUcmFuc2Zvcm0qIHN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpIHsgcmV0dXJuIDA7IH0K
LQotICAgICAgICAvLyBGb3J3YXJkZWQgcHJvcGVydGllcyAoZGVjbGFyZWQvZGVmaW5lZCBhbnl3
aGVyZSBlbHNlIGluIHRoZSBpbmhlcml0YW5jZSBzdHJ1Y3R1cmUpCi0KLSAgICAgICAgLy8gLT4g
Rm9yIFNWR1VSSVJlZmVyZW5jZQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9FTVBUWV9ERUNM
QVJBVElPTlMoU3RyaW5nLCBIcmVmLCBocmVmKQotCi0gICAgICAgIC8vIC0+IEZvciBTVkdGaXRU
b1ZpZXdCb3gKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRU1QVFlfREVDTEFSQVRJT05TKEZs
b2F0UmVjdCwgVmlld0JveCwgdmlld0JveCkgICAgCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0VNUFRZX0RFQ0xBUkFUSU9OU19SRUZDT1VOVEVEKFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sIFBy
ZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCi0KLSAgICAgICAgLy8gLT4g
Rm9yIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfRU1QVFlfREVDTEFSQVRJT05TKGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0KICAgICAgICAgdmlydHVhbCBib29sIGRpc3BhdGNo
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZSwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvb2wgdGVtcEV2
ZW50ID0gZmFsc2UpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBpbnZva2VTVkdQcm9wZXJ0eVN5
bmNocm9uaXplcihTdHJpbmdJbXBsKikgY29uc3QgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBp
bnZva2VBbGxTVkdQcm9wZXJ0eVN5bmNocm9uaXplcnMoKSBjb25zdCB7IH0KLSAgICAgICAgdmly
dHVhbCB2b2lkIGFkZFNWR1Byb3BlcnR5U3luY2hyb25pemVyKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9Ci0KICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRl
KFN0cmluZ0ltcGwqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFN5bmNocm9uaXpl
ZFNWR0F0dHJpYnV0ZXMoYm9vbCkgY29uc3Q7CiAKKyAgICAgICAgLy8gSW5saW5lZCBtZXRob2Rz
IGhhbmRsaW5nIFNWRyBwcm9wZXJ0eSBzeW5jaHJvbml6YXRpb24KKyAgICAgICAgdm9pZCBpbnZv
a2VTVkdQcm9wZXJ0eVN5bmNocm9uaXplcihTdHJpbmdJbXBsKiBzdHJpbmdJbXBsKSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9zdmdQcm9wZXJ0eU1hcC5jb250YWlucyhzdHJp
bmdJbXBsKSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHlCYXNl
KiBwcm9wZXJ0eSA9IG1fc3ZnUHJvcGVydHlNYXAuZ2V0KHN0cmluZ0ltcGwpOworICAgICAgICAg
ICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7CisKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eS0+c3lu
Y2hyb25pemUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgaW52
b2tlQWxsU1ZHUHJvcGVydHlTeW5jaHJvbml6ZXJzKCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgSGFzaE1hcDxTdHJpbmdJbXBsKiwgY29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2Uq
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N2Z1Byb3BlcnR5TWFwLmJlZ2luKCk7CisgICAgICAg
ICAgICBjb25zdCBIYXNoTWFwPFN0cmluZ0ltcGwqLCBjb25zdCBTVkdBbmltYXRlZFByb3BlcnR5
QmFzZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3N2Z1Byb3BlcnR5TWFwLmVuZCgpOworICAg
ICAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgICAgIGNvbnN0
IFNWR0FuaW1hdGVkUHJvcGVydHlCYXNlKiBwcm9wZXJ0eSA9IGl0LT5zZWNvbmQ7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHByb3BlcnR5KTsKKworICAgICAgICAgICAgICAgIHByb3BlcnR5LT5z
eW5jaHJvbml6ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdm9pZCBh
ZGRTVkdQcm9wZXJ0eVN5bmNocm9uaXplcihjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwg
Y29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2UmIGJhc2UpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1fc3ZnUHJvcGVydHlNYXAuc2V0KGF0dHJOYW1lLmxvY2FsTmFtZSgpLmltcGwo
KSwgJmJhc2UpOworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGFkZFNW
R0V2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEF0dHJp
YnV0ZSopOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2Vz
KCk7CiAKICAgICAgICAgTm9kZSogbV9zaGFkb3dQYXJlbnQ7CisgICAgICAgIG11dGFibGUgSGFz
aE1hcDxTdHJpbmdJbXBsKiwgY29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2UqPiBtX3N2Z1By
b3BlcnR5TWFwOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRWxsaXBzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NW
R0VsbGlwc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTAgKzM3LDEwIEBAIFNW
R0VsbGlwc2VFbGVtZW50OjpTVkdFbGxpcHNlRWxlbWVudChjb24KICAgICAsIFNWR1Rlc3RzKCkK
ICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KCkKLSAgICAsIG1fY3goTGVuZ3RoTW9kZVdpZHRoKQotICAgICwgbV9jeShMZW5ndGhNb2RlSGVp
Z2h0KQotICAgICwgbV9yeChMZW5ndGhNb2RlV2lkdGgpCi0gICAgLCBtX3J5KExlbmd0aE1vZGVI
ZWlnaHQpCisgICAgLCBtX2N4KHRoaXMsIFNWR05hbWVzOjpjeEF0dHIsIExlbmd0aE1vZGVXaWR0
aCkKKyAgICAsIG1fY3kodGhpcywgU1ZHTmFtZXM6OmN5QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCkK
KyAgICAsIG1fcngodGhpcywgU1ZHTmFtZXM6OnJ4QXR0ciwgTGVuZ3RoTW9kZVdpZHRoKQorICAg
ICwgbV9yeSh0aGlzLCBTVkdOYW1lczo6cnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0KQogewogfSAg
ICAKIApAQCAtNDgsMTEgKzQ4LDYgQEAgU1ZHRWxsaXBzZUVsZW1lbnQ6On5TVkdFbGxpcHNlRWxl
bWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0VsbGlwc2VF
bGVtZW50LCBTVkdMZW5ndGgsIEN4LCBjeCwgU1ZHTmFtZXM6OmN4QXR0cikKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIEN5LCBjeSwg
U1ZHTmFtZXM6OmN5QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0VsbGlw
c2VFbGVtZW50LCBTVkdMZW5ndGgsIFJ4LCByeCwgU1ZHTmFtZXM6OnJ4QXR0cikKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIFJ5LCBy
eSwgU1ZHTmFtZXM6OnJ5QXR0cikKLQogdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6OmN4QXR0cikKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAkocmV2
aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MSwxMiArNTEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVWYWx1ZXMoKSBjb25zdDsKIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0gCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBDeCwgY3gpCi0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3Ro
LCBDeSwgY3kpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxp
cHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBSeCwgcngpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBSeSwgcnkpCisgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZH
TmFtZXM6OmVsbGlwc2VUYWdTdHJpbmcsIFNWR05hbWVzOjpjeEF0dHJTdHJpbmcsIFNWR0xlbmd0
aCwgQ3gsIGN4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRWxs
aXBzZUVsZW1lbnQsIFNWR05hbWVzOjplbGxpcHNlVGFnU3RyaW5nLCBTVkdOYW1lczo6Y3lBdHRy
U3RyaW5nLCBTVkdMZW5ndGgsIEN5LCBjeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdOYW1lczo6ZWxsaXBzZVRhZ1N0cmluZywg
U1ZHTmFtZXM6OnJ4QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBSeCwgcngpCisgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OmVs
bGlwc2VUYWdTdHJpbmcsIFNWR05hbWVzOjpyeUF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgUnksIHJ5
KQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdl
YkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw4ICszMSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NoYXIgU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZElkZW50aWZpZXJbXSA9ICJTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkIjsKKwogU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6U1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgOiBtX2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoZmFs
c2UpCisgICAgOiBtX2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQodGhpcywgU1ZHTmFtZXM6OmV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBmYWxzZSkKIHsKIH0KIApAQCAtNDAsOCArNDIs
NiBAQCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjp+U1ZHRXh0ZXJuCiB7CiB9CiAKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ09OVEVYVChTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIp
Ci0KIGJvb2wgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyKSB7CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdl
YkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQsMTEgKzI0LDExIEBACiAjZGVmaW5lIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRf
aAogCiAjaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSAi
U1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBleHRlcm4gY2hhciBT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSWRlbnRpZmllcltdOwogICAgIGNsYXNzIE1hcHBl
ZEF0dHJpYnV0ZTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdyb25nIGZvciBzZXZlcmFsIHJl
YXNvbnM6CkBAIC00OSwxMSArNDksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBi
b29sIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICBib29s
IGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCi0gICAgcHJvdGVjdGVk
OgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29u
c3QgPSAwOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TX1dJVEhfQ09OVEVYVChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZElkZW50aWZpZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZEF0dHJTdHJpbmcsIGJvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdG
RUJsZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogU1ZHRkVCbGVuZEVsZW1lbnQ6OlNWR0ZFQmxlbmRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jKQotICAgICwgbV9tb2RlKEZF
QkxFTkRfTU9ERV9OT1JNQUwpCisgICAgLCBtX2luMSh0aGlzLCBTVkdOYW1lczo6aW5BdHRyKQor
ICAgICwgbV9pbjIodGhpcywgU1ZHTmFtZXM6OmluMkF0dHIpCisgICAgLCBtX21vZGUodGhpcywg
U1ZHTmFtZXM6Om1vZGVBdHRyLCBGRUJMRU5EX01PREVfTk9STUFMKQogICAgICwgbV9maWx0ZXJF
ZmZlY3QoMCkKIHsKIH0KQEAgLTQwLDEwICs0Miw2IEBAIFNWR0ZFQmxlbmRFbGVtZW50Ojp+U1ZH
RkVCbGVuZEVsZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdGRUJsZW5kRWxlbWVudCwgU3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0cikKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFQmxlbmRFbGVtZW50LCBTdHJpbmcsIElu
MiwgaW4yLCBTVkdOYW1lczo6aW4yQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR0ZFQmxlbmRFbGVtZW50LCBpbnQsIE1vZGUsIG1vZGUsIFNWR05hbWVzOjptb2RlQXR0cikK
LQogdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlKiBhdHRyKQogewogICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgp
OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNv
cmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEzICszOSwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCog
ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CiAgICAgICAgIGJvb2wgYnVp
bGQoRmlsdGVyQnVpbGRlciopOwogCi0gICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIGNv
bnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQot
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R0ZFQmxlbmRFbGVtZW50LCBTdHJpbmcsIEluMSwgaW4xKQotICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVCbGVuZEVsZW1lbnQsIFN0cmluZywgSW4yLCBpbjIpCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUJsZW5kRWxlbWVudCwg
aW50LCBNb2RlLCBtb2RlKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHRkVCbGVuZEVsZW1lbnQsIFNWR05hbWVzOjpmZUJsZW5kVGFnU3RyaW5nLCBTVkdOYW1lczo6
aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRkVCbGVuZEVsZW1lbnQsIFNWR05hbWVzOjpmZUJsZW5kVGFnU3Ry
aW5nLCBTVkdOYW1lczo6aW4yQXR0clN0cmluZywgU3RyaW5nLCBJbjIsIGluMikKKyAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdOYW1l
czo6ZmVCbGVuZFRhZ1N0cmluZywgU1ZHTmFtZXM6Om1vZGVBdHRyU3RyaW5nLCBpbnQsIE1vZGUs
IG1vZGUpCiAKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVCbGVuZD4gbV9maWx0ZXJFZmZlY3Q7
CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jKQotICAgICwgbV90eXBlKEZFQ09M
T1JNQVRSSVhfVFlQRV9VTktOT1dOKQotICAgICwgbV92YWx1ZXMoU1ZHTnVtYmVyTGlzdDo6Y3Jl
YXRlKFNWR05hbWVzOjp2YWx1ZXNBdHRyKSkKKyAgICAsIG1faW4xKHRoaXMsIFNWR05hbWVzOjpp
bkF0dHIpCisgICAgLCBtX3R5cGUodGhpcywgU1ZHTmFtZXM6OnR5cGVBdHRyLCBGRUNPTE9STUFU
UklYX1RZUEVfVU5LTk9XTikKKyAgICAsIG1fdmFsdWVzKHRoaXMsIFNWR05hbWVzOjp2YWx1ZXNB
dHRyLCBTVkdOdW1iZXJMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OnZhbHVlc0F0dHIpKQogICAgICwg
bV9maWx0ZXJFZmZlY3QoMCkKIHsKIH0KQEAgLTQzLDEwICs0NCw2IEBAIFNWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50Ojp+U1ZHRkVDb2xvck1hdHIKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFN0cmluZywgSW4xLCBpbjEsIFNWR05h
bWVzOjppbkF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUNvbG9yTWF0
cml4RWxlbWVudCwgaW50LCBUeXBlLCB0eXBlLCBTVkdOYW1lczo6dHlwZUF0dHIpCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OU19SRUZDT1VOVEVEKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
LCBTVkdOdW1iZXJMaXN0LCBWYWx1ZXMsIHZhbHVlcywgU1ZHTmFtZXM6OnZhbHVlc0F0dHIpCi0K
IHZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBl
ZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFs
dWUoKTsKQEAgLTk3LDUgKzk0LDMgQEAgYm9vbCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6YnVp
bGQoRmlsdAogfSAvL25hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQot
Ci0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTMgKzI2LDExIEBACiAjaWYgRU5BQkxFKFNWRykg
JiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkZFQ29sb3JNYXRyaXguaCIKICNpbmNs
dWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJT
VkdOdW1iZXJMaXN0LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgU1ZHTnVt
YmVyTGlzdDsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFNWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50IDogcHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcwot
ICAgIHsKKyAgICBjbGFzcyBTVkdGRUNvbG9yTWF0cml4RWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAg
ICAgICAgIHZpcnR1YWwgflNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KCk7CkBAIC00MSwxMyArMzks
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3Qq
IGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwogICAgICAgICBib29sIGJ1
aWxkKEZpbHRlckJ1aWxkZXIqKTsKIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBj
b25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0K
LQogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU3RyaW5nLCBJbjEsIGluMSkKLSAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBpbnQsIFR5
cGUsIHR5cGUpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OU19SRUZDT1VO
VEVEKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOdW1iZXJMaXN0LCBWYWx1ZXMsIHZhbHVl
cykKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50LCBTVkdOYW1lczo6ZmVDb2xvck1hdHJpeFRhZ1N0cmluZywgU1ZHTmFtZXM6Omlu
QXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6ZmVDb2xvck1h
dHJpeFRhZ1N0cmluZywgU1ZHTmFtZXM6OnR5cGVBdHRyU3RyaW5nLCBpbnQsIFR5cGUsIHR5cGUp
CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbG9yTWF0cml4
RWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29sb3JNYXRyaXhUYWdTdHJpbmcsIFNWR05hbWVzOjp2YWx1
ZXNBdHRyU3RyaW5nLCBTVkdOdW1iZXJMaXN0LCBWYWx1ZXMsIHZhbHVlcykKIAogICAgICAgICBt
dXRhYmxlIFJlZlB0cjxGRUNvbG9yTWF0cml4PiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwpAQCAt
NTYsNSArNTEsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykK
ICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50OjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKKyAgICAsIG1faW4xKHRoaXMsIFNWR05hbWVz
OjppbkF0dHIpCiAgICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewogfQpAQCAtNDYsOCArNDcsNiBA
QCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6flNWR0ZFQ29tCiB7CiB9CiAKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LCBT
dHJpbmcsIEluMSwgaW4xLCBTVkdOYW1lczo6aW5BdHRyKQotCiB2b2lkIFNWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0
dHIpCiB7CiAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHJldmlzaW9uIDM1
MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3LDkgQEAKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJGRUNvbXBvbmVudFRyYW5zZmVyLmgi
CiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFz
cyBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMKLSAgICB7CisgICAgY2xhc3MgU1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudCgpOwpAQCAtNDAsMTEgKzM4LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdS
ZXNvdXJjZUZpbHRlciopIGNvbnN0OwogICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIq
KTsKIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KLQogICAgIHByaXZhdGU6Ci0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudCwgU3RyaW5nLCBJbjEsIGluMSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LCBTVkdOYW1lczo6ZmVD
b21wb25lbnRUcmFuc2ZlclRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5n
LCBJbjEsIGluMSkKIAogICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRUNvbXBvbmVudFRyYW5zZmVy
PiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDExICszMiwxMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6U1ZHRkVDb21wb3NpdGVFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jKQotICAgICwgbV9f
b3BlcmF0b3IoRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUikKLSAgICAsIG1fazEoMC4wZikKLSAg
ICAsIG1fazIoMC4wZikKLSAgICAsIG1fazMoMC4wZikKLSAgICAsIG1fazQoMC4wZikKKyAgICAs
IG1faW4xKHRoaXMsIFNWR05hbWVzOjppbkF0dHIpCisgICAgLCBtX2luMih0aGlzLCBTVkdOYW1l
czo6aW4yQXR0cikKKyAgICAsIG1fX29wZXJhdG9yKHRoaXMsIFNWR05hbWVzOjpvcGVyYXRvckF0
dHIsIEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIpCisgICAgLCBtX2sxKHRoaXMsIFNWR05hbWVz
OjprMUF0dHIpCisgICAgLCBtX2syKHRoaXMsIFNWR05hbWVzOjprMkF0dHIpCisgICAgLCBtX2sz
KHRoaXMsIFNWR05hbWVzOjprM0F0dHIpCisgICAgLCBtX2s0KHRoaXMsIFNWR05hbWVzOjprNEF0
dHIpCiAgICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewogfQpAQCAtNDUsMTQgKzQ3LDYgQEAgU1ZH
RkVDb21wb3NpdGVFbGVtZW50Ojp+U1ZHRkVDb21wb3NpdGVFbAogewogfQogCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFN0cmluZywgSW4xLCBp
bjEsIFNWR05hbWVzOjppbkF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdG
RUNvbXBvc2l0ZUVsZW1lbnQsIFN0cmluZywgSW4yLCBpbjIsIFNWR05hbWVzOjppbjJBdHRyKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBpbnQs
IF9vcGVyYXRvciwgX29wZXJhdG9yLCBTVkdOYW1lczo6b3BlcmF0b3JBdHRyKQotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBmbG9hdCwgSzEsIGsx
LCBTVkdOYW1lczo6azFBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVD
b21wb3NpdGVFbGVtZW50LCBmbG9hdCwgSzIsIGsyLCBTVkdOYW1lczo6azJBdHRyKQotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBmbG9hdCwgSzMs
IGszLCBTVkdOYW1lczo6azNBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
RkVDb21wb3NpdGVFbGVtZW50LCBmbG9hdCwgSzQsIGs0LCBTVkdOYW1lczo6azRBdHRyKQotCiB2
b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlICphdHRyKQogewogICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgp
OwpAQCAtMTEwLDUgKzEwNCwzIEBAIGJvb2wgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZChG
aWx0ZXIKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywx
MSArMjcsOSBAQAogI2luY2x1ZGUgIkZFQ29tcG9zaXRlLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17Citu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQgOiBw
dWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzCi0gICAgeworICAgIGNs
YXNzIFNWR0ZFQ29tcG9zaXRlRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHRkVDb21wb3NpdGVFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5T
VkdGRUNvbXBvc2l0ZUVsZW1lbnQoKTsKQEAgLTQwLDE3ICszOCwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZQogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jl
c291cmNlRmlsdGVyKikgY29uc3Q7CiAgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciop
OwogCi0gICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQotCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVu
dCwgU3RyaW5nLCBJbjEsIGluMSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU3RyaW5nLCBJbjIsIGluMikKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgaW50LCBf
b3BlcmF0b3IsIF9vcGVyYXRvcikKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgZmxvYXQsIEsxLCBrMSkKLSAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgZmxvYXQsIEsy
LCBrMikKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29tcG9z
aXRlRWxlbWVudCwgZmxvYXQsIEszLCBrMykKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgZmxvYXQsIEs0LCBrNCkKKyAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZH
TmFtZXM6OmZlQ29tcG9zaXRlVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJp
bmcsIEluMSwgaW4xKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
RkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6ZmVDb21wb3NpdGVUYWdTdHJpbmcsIFNWR05h
bWVzOjppbjJBdHRyU3RyaW5nLCBTdHJpbmcsIEluMiwgaW4yKQorICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6ZmVD
b21wb3NpdGVUYWdTdHJpbmcsIFNWR05hbWVzOjpvcGVyYXRvckF0dHJTdHJpbmcsIGludCwgX29w
ZXJhdG9yLCBfb3BlcmF0b3IpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjpmZUNvbXBvc2l0ZVRhZ1N0cmluZywg
U1ZHTmFtZXM6OmsxQXR0clN0cmluZywgZmxvYXQsIEsxLCBrMSkKKyAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmZl
Q29tcG9zaXRlVGFnU3RyaW5nLCBTVkdOYW1lczo6azJBdHRyU3RyaW5nLCBmbG9hdCwgSzIsIGsy
KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVDb21wb3NpdGVF
bGVtZW50LCBTVkdOYW1lczo6ZmVDb21wb3NpdGVUYWdTdHJpbmcsIFNWR05hbWVzOjprM0F0dHJT
dHJpbmcsIGZsb2F0LCBLMywgazMpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjpmZUNvbXBvc2l0ZVRhZ1N0cmlu
ZywgU1ZHTmFtZXM6Oms0QXR0clN0cmluZywgZmxvYXQsIEs0LCBrNCkKIAogICAgICAgICBtdXRh
YmxlIFJlZlB0cjxGRUNvbXBvc2l0ZT4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKQEAgLTU5LDUg
KzU0LDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5k
aWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwx
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NoYXIgU1ZHS2VybmVsVW5pdExlbmd0aFhJ
ZGVudGlmaWVyW10gPSAiU1ZHS2VybmVsVW5pdExlbmd0aFgiOworY2hhciBTVkdLZXJuZWxVbml0
TGVuZ3RoWUlkZW50aWZpZXJbXSA9ICJTVkdLZXJuZWxVbml0TGVuZ3RoWSI7CisKIFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudDo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jKQotICAgICwgbV9kaWZmdXNlQ29u
c3RhbnQoMS4wZikKLSAgICAsIG1fc3VyZmFjZVNjYWxlKDEuMGYpCi0gICAgLCBtX2tlcm5lbFVu
aXRMZW5ndGhYKDAuMGYpCi0gICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhZKDAuMGYpCisgICAgLCBt
X2luMSh0aGlzLCBTVkdOYW1lczo6aW5BdHRyKQorICAgICwgbV9kaWZmdXNlQ29uc3RhbnQodGhp
cywgU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIsIDEuMGYpCisgICAgLCBtX3N1cmZhY2VT
Y2FsZSh0aGlzLCBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgMS4wZikKKyAgICAsIG1fa2Vy
bmVsVW5pdExlbmd0aFgodGhpcywgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyKQorICAg
ICwgbV9rZXJuZWxVbml0TGVuZ3RoWSh0aGlzLCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0
dHIpCiAgICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewogfQpAQCAtNDgsMTIgKzUyLDYgQEAgU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Ojp+U1ZHRkVEaWZmdQogewogfQogCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFN0cmluZywg
SW4xLCBpbjEsIFNWR05hbWVzOjppbkF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIGZsb2F0LCBEaWZmdXNlQ29uc3RhbnQsIGRp
ZmZ1c2VDb25zdGFudCwgU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIGZsb2F0LCBT
dXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSwgU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIpCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19XSVRIX0NVU1RPTV9JREVOVElGSUVSKFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgZmxvYXQsIEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxV
bml0TGVuZ3RoWCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCAia2VybmVsVW5pdExl
bmd0aFgiKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfV0lUSF9DVVNUT01fSURFTlRJ
RklFUihTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIGZsb2F0LCBLZXJuZWxVbml0TGVuZ3Ro
WSwga2VybmVsVW5pdExlbmd0aFksIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwgImtl
cm5lbFVuaXRMZW5ndGhZIikKLQogdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKICAgICBjb25zdCBT
dHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKQEAgLTExOSw1ICsxMTcsMyBAQCBMaWdodFNv
dXJjZSogU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
U1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3LDE0IEBA
CiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGV4dGVybiBjaGFyIFNWR0tlcm5lbFVuaXRMZW5ndGhY
SWRlbnRpZmllcltdOworICAgIGV4dGVybiBjaGFyIFNWR0tlcm5lbFVuaXRMZW5ndGhZSWRlbnRp
ZmllcltdOworCiAgICAgY2xhc3MgRkVEaWZmdXNlTGlnaHRpbmc7CiAgICAgY2xhc3MgU1ZHQ29s
b3I7CiAKLSAgICBjbGFzcyBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQgOiBwdWJsaWMgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzCi0gICAgeworICAgIGNsYXNzIFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFs
IH5TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQoKTsKQEAgLTQwLDE1ICs0MywxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJF
ZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKICAgICAgICAgYm9vbCBidWlsZChGaWx0
ZXJCdWlsZGVyKik7CiAKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgY29uc3QgU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9Ci0KICAgICBw
cml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50LCBTdHJpbmcsIEluMSwgaW4xKQotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBmbG9hdCwg
RGlmZnVzZUNvbnN0YW50LCBkaWZmdXNlQ29uc3RhbnQpCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIGZsb2F0LCBTdXJm
YWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgZmxvYXQsIEtlcm5lbFVuaXRMZW5n
dGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgZmxvYXQsIEtlcm5lbFVuaXRMZW5n
dGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OmZlRGlmZnVzZUxp
Z2h0aW5nVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4x
KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVEaWZmdXNlTGlnaHRpbmdUYWdTdHJpbmcsIFNWR05h
bWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyU3RyaW5nLCBmbG9hdCwgRGlmZnVzZUNvbnN0YW50LCBk
aWZmdXNlQ29uc3RhbnQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpmZURpZmZ1c2VMaWdodGluZ1Rh
Z1N0cmluZywgU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHJTdHJpbmcsIGZsb2F0LCBTdXJmYWNl
U2NhbGUsIHN1cmZhY2VTY2FsZSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OmZlRGlmZnVzZUxpZ2h0
aW5nVGFnU3RyaW5nLCBTVkdLZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIsIGZsb2F0LCBLZXJu
ZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCisgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpm
ZURpZmZ1c2VMaWdodGluZ1RhZ1N0cmluZywgU1ZHS2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVy
LCBmbG9hdCwgS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQogCiAgICAgICAg
IExpZ2h0U291cmNlKiBmaW5kTGlnaHRzKCkgY29uc3Q7CiAgICAgICAgIApJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkK
KysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDkgKzI5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX3hDaGFubmVsU2Vs
ZWN0b3IoQ0hBTk5FTF9BKQotICAgICwgbV95Q2hhbm5lbFNlbGVjdG9yKENIQU5ORUxfQSkKLSAg
ICAsIG1fc2NhbGUoMC4wZikKKyAgICAsIG1faW4xKHRoaXMsIFNWR05hbWVzOjppbkF0dHIpCisg
ICAgLCBtX2luMih0aGlzLCBTVkdOYW1lczo6aW4yQXR0cikKKyAgICAsIG1feENoYW5uZWxTZWxl
Y3Rvcih0aGlzLCBTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIsIENIQU5ORUxfQSkKKyAg
ICAsIG1feUNoYW5uZWxTZWxlY3Rvcih0aGlzLCBTVkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0
dHIsIENIQU5ORUxfQSkKKyAgICAsIG1fc2NhbGUodGhpcywgU1ZHTmFtZXM6OnNjYWxlQXR0cikK
ICAgICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7CiB9CkBAIC00MCwxMiArNDIsNiBAQCBTVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQ6On5TVkdGRURpc3BsCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU3RyaW5nLCBJbjEs
IGluMSwgU1ZHTmFtZXM6OmluQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU3RyaW5nLCBJbjIsIGluMiwgU1ZHTmFtZXM6Omlu
MkF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQsIGludCwgWENoYW5uZWxTZWxlY3RvciwgeENoYW5uZWxTZWxlY3RvciwgU1ZHTmFt
ZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBpbnQsIFlDaGFubmVsU2VsZWN0b3IsIHlDaGFu
bmVsU2VsZWN0b3IsIFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0cikKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgZmxvYXQsIFNj
YWxlLCBzY2FsZSwgU1ZHTmFtZXM6OnNjYWxlQXR0cikKLQogQ2hhbm5lbFNlbGVjdG9yVHlwZSBT
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN0cmluZ1RvQ2hhbm5lbChjb25zdCBTdHJpbmcm
IGtleSkKIHsKICAgICBpZiAoa2V5ID09ICJSIikKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNSArMzcs
MTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVj
dCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CiAgICAgICAgIGJvb2wg
YnVpbGQoRmlsdGVyQnVpbGRlciopOwogICAgICAgICAKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biB0aGlzOyB9Ci0KICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTdHJpbmcsIEluMSwgaW4xKQot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50LCBTdHJpbmcsIEluMiwgaW4yKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBpbnQsIFhDaGFubmVsU2Vs
ZWN0b3IsIHhDaGFubmVsU2VsZWN0b3IpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIGludCwgWUNoYW5uZWxTZWxlY3Rv
ciwgeUNoYW5uZWxTZWxlY3RvcikKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgZmxvYXQsIFNjYWxlLCBzY2FsZSkKKyAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudCwgU1ZHTmFtZXM6OmZlRGlzcGxhY2VtZW50TWFwVGFnU3RyaW5nLCBTVkdOYW1lczo6
aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6ZmVE
aXNwbGFjZW1lbnRNYXBUYWdTdHJpbmcsIFNWR05hbWVzOjppbjJBdHRyU3RyaW5nLCBTdHJpbmcs
IEluMiwgaW4yKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6ZmVEaXNwbGFjZW1lbnRNYXBUYWdTdHJp
bmcsIFNWR05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0clN0cmluZywgaW50LCBYQ2hhbm5lbFNl
bGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9yKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6ZmVEaXNwbGFj
ZW1lbnRNYXBUYWdTdHJpbmcsIFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0clN0cmluZywg
aW50LCBZQ2hhbm5lbFNlbGVjdG9yLCB5Q2hhbm5lbFNlbGVjdG9yKQorICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdO
YW1lczo6ZmVEaXNwbGFjZW1lbnRNYXBUYWdTdHJpbmcsIFNWR05hbWVzOjpzY2FsZUF0dHJTdHJp
bmcsIGZsb2F0LCBTY2FsZSwgc2NhbGUpCiAKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVEaXNw
bGFjZW1lbnRNYXA+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGRUZsb29kRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RF
bGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQog
ICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNl
RmlsdGVyKikgY29uc3Q7CiAgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwogCi0g
ICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQotCiAgICAgcHJpdmF0ZToKICAgICAgICAg
bXV0YWJsZSBSZWZQdHI8RkVGbG9vZD4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisr
KyBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSwxMCArMzEsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjaGFyIFNWR1N0
ZERldmlhdGlvblhBdHRySWRlbnRpZmllcltdID0gIlNWR1N0ZERldmlhdGlvblhBdHRyIjsKK2No
YXIgU1ZHU3RkRGV2aWF0aW9uWUF0dHJJZGVudGlmaWVyW10gPSAiU1ZHU3RkRGV2aWF0aW9uWUF0
dHIiOworCiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKLSAgICAsIG1f
c3RkRGV2aWF0aW9uWCgwLjBmKQotICAgICwgbV9zdGREZXZpYXRpb25ZKDAuMGYpCisgICAgLCBt
X2luMSh0aGlzLCBTVkdOYW1lczo6aW5BdHRyKQorICAgICwgbV9zdGREZXZpYXRpb25YKHRoaXMs
IFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyKQorICAgICwgbV9zdGREZXZpYXRpb25ZKHRoaXMs
IFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyKQogICAgICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsK
IH0KQEAgLTQzLDEwICs0Nyw2IEBAIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6flNWR0ZFR2F1
c3NpYW4KIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LCBTdHJpbmcsIEluMSwgaW4xLCBTVkdOYW1lczo6aW5BdHRyKQotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlNfV0lUSF9DVVNUT01fSURFTlRJRklFUihTVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQsIGZsb2F0LCBTdGREZXZpYXRpb25YLCBzdGREZXZpYXRpb25YLCBTVkdO
YW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgInN0ZERldmlhdGlvblgiKQotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlNfV0lUSF9DVVNUT01fSURFTlRJRklFUihTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQsIGZsb2F0LCBTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25ZLCBTVkdOYW1lczo6c3Rk
RGV2aWF0aW9uQXR0ciwgInN0ZERldmlhdGlvblkiKQotCiB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKGZsb2F0IHN0ZERldmlhdGlvblgsIGZsb2F0IHN0ZERl
dmlhdGlvblkpCiB7CiB9CkBAIC04Nyw1ICs4NywzIEBAIGJvb2wgU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50OjpidWlsZChGaWwKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0
cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCShyZXZp
c2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTIgQEAKICNpbmNsdWRlICJTVkdGRUdhdXNzaWFu
Qmx1ci5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
IgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xh
c3MgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50IDogcHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcwotICAgIHsKKyAgICBleHRlcm4gY2hhciBTVkdTdGREZXZpYXRpb25Y
QXR0cklkZW50aWZpZXJbXTsKKyAgICBleHRlcm4gY2hhciBTVkdTdGREZXZpYXRpb25ZQXR0cklk
ZW50aWZpZXJbXTsKKworICAgIGNsYXNzIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCA6IHB1Ymxp
YyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgewogICAgIHB1YmxpYzoKICAg
ICAgICAgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQoKTsKQEAg
LTQyLDEzICs0MywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIFNWR0Zp
bHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CiAgICAg
ICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwogCi0gICAgcHJvdGVjdGVkOgotICAgICAg
ICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gdGhpczsgfQotCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCwgU3RyaW5nLCBJbjEsIGluMSkKLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudCwgZmxvYXQsIFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlvblgpCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIGZsb2F0
LCBTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25ZKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6ZmVHYXVz
c2lhbkJsdXJUYWdTdHJpbmcsIFNWR05hbWVzOjppbkF0dHJTdHJpbmcsIFN0cmluZywgSW4xLCBp
bjEpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQsIFNWR05hbWVzOjpmZUdhdXNzaWFuQmx1clRhZ1N0cmluZywgU1ZHU3RkRGV2
aWF0aW9uWEF0dHJJZGVudGlmaWVyLCBmbG9hdCwgU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9u
WCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudCwgU1ZHTmFtZXM6OmZlR2F1c3NpYW5CbHVyVGFnU3RyaW5nLCBTVkdTdGREZXZp
YXRpb25ZQXR0cklkZW50aWZpZXIsIGZsb2F0LCBTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25Z
KQogCiAgICAgICAgIG11dGFibGUgUmVmUHRyPEZFR2F1c3NpYW5CbHVyPiBtX2ZpbHRlckVmZmVj
dDsKICAgICB9OwpAQCAtNTcsNSArNTUsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBTVkdGRUlt
YWdlRWxlbWVudDo6U1ZHRkVJbWFnZUVsZW1lbnQoY29uCiAgICAgLCBTVkdVUklSZWZlcmVuY2Uo
KQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQoKQotICAgICwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvKFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86
OmNyZWF0ZSgpKQorICAgICwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvKHRoaXMsIFNWR05hbWVzOjpw
cmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6Y3JlYXRlKCkp
CiAgICAgLCBtX2NhY2hlZEltYWdlKDApCiAgICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewpAQCAt
NTMsOCArNTMsNiBAQCBTVkdGRUltYWdlRWxlbWVudDo6flNWR0ZFSW1hZ2VFbGVtZW50KCkKICAg
ICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogfQogCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OU19SRUZDT1VOVEVEKFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlv
LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpCi0KIHZvaWQgU1ZHRkVJbWFnZUVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAg
ICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKQEAgLTExMyw1ICsxMTEsMyBA
QCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpnZXRTdWJyZXNvdXJjZUF0CiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdG
RUltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjksMTYgKzI5LDE1IEBACiAjaW5jbHVkZSAiU1ZHTGFuZ1Nw
YWNlLmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1
ZGUgIlNWR0ZFSW1hZ2UuaCIKKyNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOwog
CiAgICAgY2xhc3MgU1ZHRkVJbWFnZUVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFNWR1VSSVJlZmVyZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBT
VkdMYW5nU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudAotICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiAgICAgcHVibGljOgogICAgICAg
ICBTVkdGRUltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAg
ICAgICAgdmlydHVhbCB+U1ZHRkVJbWFnZUVsZW1lbnQoKTsKQEAgLTUxLDE1ICs1MCwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgU1ZH
RmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLQot
ICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR1VSSVJlZmVyZW5jZSwg
U3RyaW5nLCBIcmVmLCBocmVmKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RF
Q0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotIAotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlNfUkVGQ09VTlRFRChTVkdGRUltYWdlRWxlbWVu
dCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVB
c3BlY3RSYXRpbykKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZF
SW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6ZmVJbWFnZVRhZ1N0cmluZywgU1ZHTmFtZXM6OnByZXNl
cnZlQXNwZWN0UmF0aW9BdHRyU3RyaW5nLCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2
ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogCiAgICAgICAgIENhY2hlZEltYWdl
KiBtX2NhY2hlZEltYWdlOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRUltYWdlPiBtX2ZpbHRl
ckVmZmVjdDsKQEAgLTY5LDUgKzYzLDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
RkVMaWdodEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZF
TGlnaHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsMjMgKzIzLDI0IEBACiAKICNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVMaWdo
dEVsZW1lbnQuaCIKLQogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2hhciBTVkdGRUxpZ2h0RWxlbWVudElkZW50aWZpZXJbXSA9ICJTVkdGRUxpZ2h0RWxl
bWVudCI7CisKIFNWR0ZFTGlnaHRFbGVtZW50OjpTVkdGRUxpZ2h0RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHRWxlbWVudCh0YWdO
YW1lLCBkb2MpCi0gICAgLCBtX2F6aW11dGgoMC4wZikKLSAgICAsIG1fZWxldmF0aW9uKDAuMGYp
Ci0gICAgLCBtX3goMC4wZikKLSAgICAsIG1feSgwLjBmKQotICAgICwgbV96KDAuMGYpCi0gICAg
LCBtX3BvaW50c0F0WCgwLjBmKQotICAgICwgbV9wb2ludHNBdFkoMC4wZikKLSAgICAsIG1fcG9p
bnRzQXRaKDAuMGYpCi0gICAgLCBtX3NwZWN1bGFyRXhwb25lbnQoMS4wZikKLSAgICAsIG1fbGlt
aXRpbmdDb25lQW5nbGUoMC4wZikKKyAgICAsIG1fYXppbXV0aCh0aGlzLCBTVkdOYW1lczo6YXpp
bXV0aEF0dHIpCisgICAgLCBtX2VsZXZhdGlvbih0aGlzLCBTVkdOYW1lczo6ZWxldmF0aW9uQXR0
cikKKyAgICAsIG1feCh0aGlzLCBTVkdOYW1lczo6eEF0dHIpCisgICAgLCBtX3kodGhpcywgU1ZH
TmFtZXM6OnlBdHRyKQorICAgICwgbV96KHRoaXMsIFNWR05hbWVzOjp6QXR0cikKKyAgICAsIG1f
cG9pbnRzQXRYKHRoaXMsIFNWR05hbWVzOjpwb2ludHNBdFhBdHRyKQorICAgICwgbV9wb2ludHNB
dFkodGhpcywgU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIpCisgICAgLCBtX3BvaW50c0F0Wih0aGlz
LCBTVkdOYW1lczo6cG9pbnRzQXRaQXR0cikKKyAgICAsIG1fc3BlY3VsYXJFeHBvbmVudCh0aGlz
LCBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIsIDEuMGYpCisgICAgLCBtX2xpbWl0aW5n
Q29uZUFuZ2xlKHRoaXMsIFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIpCiB7CiB9CiAK
QEAgLTQ3LDE3ICs0OCw2IEBAIFNWR0ZFTGlnaHRFbGVtZW50Ojp+U1ZHRkVMaWdodEVsZW1lbnQo
KQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVu
dCwgZmxvYXQsIEF6aW11dGgsIGF6aW11dGgsIFNWR05hbWVzOjphemltdXRoQXR0cikKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgRWxldmF0
aW9uLCBlbGV2YXRpb24sIFNWR05hbWVzOjplbGV2YXRpb25BdHRyKQotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0LCBYLCB4LCBTVkdOYW1lczo6
eEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwg
ZmxvYXQsIFksIHksIFNWR05hbWVzOjp5QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgWiwgeiwgU1ZHTmFtZXM6OnpBdHRyKQotQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0LCBQb2lu
dHNBdFgsIHBvaW50c0F0WCwgU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgZmxvYXQsIFBvaW50c0F0WSwgcG9p
bnRzQXRZLCBTVkdOYW1lczo6cG9pbnRzQXRZQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgUG9pbnRzQXRaLCBwb2ludHNBdFosIFNW
R05hbWVzOjpwb2ludHNBdFpBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
RkVMaWdodEVsZW1lbnQsIGZsb2F0LCBTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50
LCBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgZmxvYXQsIExpbWl0aW5nQ29uZUFuZ2xlLCBsaW1p
dGluZ0NvbmVBbmdsZSwgU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0cikKLQogdm9pZCBT
VkdGRUxpZ2h0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBh
dHRyKQogewogICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NW
R0ZFTGlnaHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEyICsyNiwxMSBAQAogI2lu
Y2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdMaWdodFNvdXJjZS5oIgogCi1uYW1l
c3BhY2UgV2ViQ29yZQotewotICAgIGNsYXNzIFNWR051bWJlckxpc3Q7Ci0gICAgCi0gICAgY2xh
c3MgU1ZHRkVMaWdodEVsZW1lbnQgOiBwdWJsaWMgU1ZHRWxlbWVudAotICAgIHsKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworICAgIGV4dGVybiBjaGFyIFNWR0ZFTGlnaHRFbGVtZW50SWRlbnRpZmll
cltdOworCisgICAgY2xhc3MgU1ZHRkVMaWdodEVsZW1lbnQgOiBwdWJsaWMgU1ZHRWxlbWVudCB7
CiAgICAgcHVibGljOgogICAgICAgICBTVkdGRUxpZ2h0RWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVMaWdodEVsZW1lbnQoKTsK
QEAgLTM5LDE4ICszOCwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIExp
Z2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogCisgICAgcHJvdGVjdGVk
OgorICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gdGhpczsgfQorCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfU1RBUlRfREVDTEFSQVRJT05TCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgZmxvYXQsIEF6aW11dGgsIGF6aW11dGgpCi0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgZmxv
YXQsIEVsZXZhdGlvbiwgZWxldmF0aW9uKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0LCBYLCB4KQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0LCBZLCB5KQot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQs
IGZsb2F0LCBaLCB6KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
RkVMaWdodEVsZW1lbnQsIGZsb2F0LCBQb2ludHNBdFgsIHBvaW50c0F0WCkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgUG9p
bnRzQXRZLCBwb2ludHNBdFkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGRUxpZ2h0RWxlbWVudCwgZmxvYXQsIFBvaW50c0F0WiwgcG9pbnRzQXRaKQotICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0
LCBTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50KQotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0LCBMaW1pdGluZ0Nv
bmVBbmdsZSwgbGltaXRpbmdDb25lQW5nbGUpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHRkVMaWdodEVsZW1lbnRJZGVudGlmaWVy
LCBTVkdOYW1lczo6YXppbXV0aEF0dHJTdHJpbmcsIGZsb2F0LCBBemltdXRoLCBhemltdXRoKQor
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQs
IFNWR0ZFTGlnaHRFbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHJTdHJp
bmcsIGZsb2F0LCBFbGV2YXRpb24sIGVsZXZhdGlvbikKKyAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdGRUxpZ2h0RWxlbWVudElkZW50
aWZpZXIsIFNWR05hbWVzOjp4QXR0clN0cmluZywgZmxvYXQsIFgsIHgpCisgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHRkVMaWdodEVs
ZW1lbnRJZGVudGlmaWVyLCBTVkdOYW1lczo6eUF0dHJTdHJpbmcsIGZsb2F0LCBZLCB5KQorICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIFNW
R0ZFTGlnaHRFbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6OnpBdHRyU3RyaW5nLCBmbG9hdCwg
WiwgeikKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFTGlnaHRF
bGVtZW50LCBTVkdGRUxpZ2h0RWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjpwb2ludHNBdFhB
dHRyU3RyaW5nLCBmbG9hdCwgUG9pbnRzQXRYLCBwb2ludHNBdFgpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHRkVMaWdodEVsZW1l
bnRJZGVudGlmaWVyLCBTVkdOYW1lczo6cG9pbnRzQXRZQXR0clN0cmluZywgZmxvYXQsIFBvaW50
c0F0WSwgcG9pbnRzQXRZKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHRkVMaWdodEVsZW1lbnQsIFNWR0ZFTGlnaHRFbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6
OnBvaW50c0F0WkF0dHJTdHJpbmcsIGZsb2F0LCBQb2ludHNBdFosIHBvaW50c0F0WikKKyAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdG
RUxpZ2h0RWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0clN0
cmluZywgZmxvYXQsIFNwZWN1bGFyRXhwb25lbnQsIHNwZWN1bGFyRXhwb25lbnQpCisgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHRkVM
aWdodEVsZW1lbnRJZGVudGlmaWVyLCBTVkdOYW1lczo6bGltaXRpbmdDb25lQW5nbGVBdHRyU3Ry
aW5nLCBmbG9hdCwgTGltaXRpbmdDb25lQW5nbGUsIGxpbWl0aW5nQ29uZUFuZ2xlKQogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAko
cmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNywxMCArMjcsOSBAQAogI2luY2x1ZGUgIlNWR0ZFTWVyZ2UuaCIKICNp
bmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIAotbmFtZXNw
YWNlIFdlYkNvcmUKLXsKLSAgICBjbGFzcyBTVkdGRU1lcmdlRWxlbWVudCA6IHB1YmxpYyBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMKLSAgICB7CituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyAgICBjbGFzcyBTVkdGRU1lcmdlRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHRkVNZXJn
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1
YWwgflNWR0ZFTWVyZ2VFbGVtZW50KCk7CkBAIC0zOCw5ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVz
b3VyY2VGaWx0ZXIqKSBjb25zdDsKICAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7
CiAKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9Ci0KICAgICBwcml2YXRlOgogICAg
ICAgICBtdXRhYmxlIFJlZlB0cjxGRU1lcmdlPiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysr
IFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdGRU1lcmdlTm9kZUVsZW1l
bnQ6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jKQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2MpCisgICAgLCBtX2lu
MSh0aGlzLCBTVkdOYW1lczo6aW5BdHRyKQogewogfQogCkBAIC0zNiw4ICszNyw2IEBAIFNWR0ZF
TWVyZ2VOb2RlRWxlbWVudDo6flNWR0ZFTWVyZ2VOb2RlRWwKIHsKIH0KIAotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHRkVNZXJnZU5vZGVFbGVtZW50LCBTdHJpbmcsIEluMSwgaW4x
LCBTVkdOYW1lczo6aW5BdHRyKQotCiB2b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGNvbnN0IFN0cmlu
ZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwpAQCAtNTAsNSArNDksMyBAQCB2b2lkIFNWR0ZFTWVy
Z2VOb2RlRWxlbWVudDo6cGFyc2VNYXBwZWRBCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQot
Ci0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaAko
cmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDkgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogCi1uYW1lc3BhY2UgV2Vi
Q29yZQotewotICAgIGNsYXNzIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCA6IHB1YmxpYyBTVkdFbGVt
ZW50Ci0gICAgeworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU1ZHRkVNZXJnZU5v
ZGVFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZH
RkVNZXJnZU5vZGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAg
ICAgICB2aXJ0dWFsIH5TVkdGRU1lcmdlTm9kZUVsZW1lbnQoKTsKQEAgLTQwLDEzICszOSwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfU1RBUlRfREVDTEFSQVRJT05TCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRU1lcmdlTm9kZUVsZW1lbnQsIFN0cmluZywg
SW4xLCBpbjEpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRU1l
cmdlTm9kZUVsZW1lbnQsIFNWR05hbWVzOjpmZU1lcmdlTm9kZVRhZ1N0cmluZywgU1ZHTmFtZXM6
OmluQXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00
Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUp
CisrKyBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw4ICszMiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHRkVPZmZzZXRFbGVtZW50
OjpTVkdGRU9mZnNldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvYykKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdO
YW1lLCBkb2MpCi0gICAgLCBtX2R4KDAuMGYpCi0gICAgLCBtX2R5KDAuMGYpCisgICAgLCBtX2lu
MSh0aGlzLCBTVkdOYW1lczo6aW5BdHRyKQorICAgICwgbV9keCh0aGlzLCBTVkdOYW1lczo6ZHhB
dHRyKQorICAgICwgbV9keSh0aGlzLCBTVkdOYW1lczo6ZHlBdHRyKQogICAgICwgbV9maWx0ZXJF
ZmZlY3QoMCkKIHsKIH0KQEAgLTQyLDEwICs0Myw2IEBAIFNWR0ZFT2Zmc2V0RWxlbWVudDo6flNW
R0ZFT2Zmc2V0RWxlbWVudCgKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHRkVPZmZzZXRFbGVtZW50LCBTdHJpbmcsIEluMSwgaW4xLCBTVkdOYW1lczo6aW5BdHRyKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVPZmZzZXRFbGVtZW50LCBmbG9hdCwg
RHgsIGR4LCBTVkdOYW1lczo6ZHhBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHRkVPZmZzZXRFbGVtZW50LCBmbG9hdCwgRHksIGR5LCBTVkdOYW1lczo6ZHlBdHRyKQotCiB2
b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlKiBhdHRyKQogewogICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwpA
QCAtODAsNSArNzcsMyBAQCBib29sIFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQoRmlsdGVyQnVp
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9T
VkdGRU9mZnNldEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3LDkgQEAKICNp
bmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRl
ICJTVkdGRU9mZnNldC5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0gICAgY2xhc3MgU1ZHRkVPZmZzZXRFbGVtZW50IDogcHVibGljIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcwotICAgIHsKKyAgICBjbGFzcyBTVkdGRU9mZnNldEVs
ZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIFNWR0ZFT2Zmc2V0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVPZmZzZXRFbGVtZW50KCk7CkBA
IC00MCwxMyArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBTVkdG
aWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwogICAg
ICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKIAotICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIHRoaXM7IH0KLQogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdGRU9mZnNldEVsZW1lbnQsIFN0cmluZywgSW4xLCBpbjEpCi0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRU9mZnNldEVsZW1lbnQsIGZsb2F0
LCBEeCwgZHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRU9m
ZnNldEVsZW1lbnQsIGZsb2F0LCBEeSwgZHkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdGRU9mZnNldEVsZW1lbnQsIFNWR05hbWVzOjpmZU9mZnNldFRhZ1N0cmlu
ZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFT2Zmc2V0RWxlbWVudCwgU1ZHTmFtZXM6
OmZlT2Zmc2V0VGFnU3RyaW5nLCBTVkdOYW1lczo6ZHhBdHRyU3RyaW5nLCBmbG9hdCwgRHgsIGR4
KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVPZmZzZXRFbGVt
ZW50LCBTVkdOYW1lczo6ZmVPZmZzZXRUYWdTdHJpbmcsIFNWR05hbWVzOjpkeUF0dHJTdHJpbmcs
IGZsb2F0LCBEeSwgZHkpCiAKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVPZmZzZXQ+IG1fZmls
dGVyRWZmZWN0OwogICAgIH07CkBAIC01NSw1ICs1MCwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lv
biAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jKQotICAgICwg
bV9zcGVjdWxhckNvbnN0YW50KDEuMGYpCi0gICAgLCBtX3NwZWN1bGFyRXhwb25lbnQoMS4wZikK
LSAgICAsIG1fc3VyZmFjZVNjYWxlKDEuMGYpCi0gICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhYKDAu
MGYpCi0gICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhZKDAuMGYpCisgICAgLCBtX2luMSh0aGlzLCBT
VkdOYW1lczo6aW5BdHRyKQorICAgICwgbV9zcGVjdWxhckNvbnN0YW50KHRoaXMsIFNWR05hbWVz
OjpzcGVjdWxhckNvbnN0YW50QXR0ciwgMS4wZikKKyAgICAsIG1fc3BlY3VsYXJFeHBvbmVudCh0
aGlzLCBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIsIDEuMGYpCisgICAgLCBtX3N1cmZh
Y2VTY2FsZSh0aGlzLCBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgMS4wZikKKyAgICAsIG1f
a2VybmVsVW5pdExlbmd0aFgodGhpcywgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyKQor
ICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoWSh0aGlzLCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0
aEF0dHIpCiAgICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewogfQpAQCAtNDgsMTMgKzQ5LDYgQEAg
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6flNWR0ZFU3BlYwogewogfQogCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTdHJp
bmcsIEluMSwgaW4xLCBTVkdOYW1lczo6aW5BdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgZmxvYXQsIFNwZWN1bGFyQ29uc3Rh
bnQsIHNwZWN1bGFyQ29uc3RhbnQsIFNWR05hbWVzOjpzcGVjdWxhckNvbnN0YW50QXR0cikKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQs
IGZsb2F0LCBTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50LCBTVkdOYW1lczo6c3Bl
Y3VsYXJFeHBvbmVudEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBmbG9hdCwgU3VyZmFjZVNjYWxlLCBzdXJmYWNlU2NhbGUs
IFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlNfV0lUSF9DVVNUT01fSURFTlRJRklFUihTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBm
bG9hdCwgS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYLCBTVkdOYW1lczo6a2Vy
bmVsVW5pdExlbmd0aEF0dHIsICJrZXJuZWxVbml0TGVuZ3RoWCIpCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OU19XSVRIX0NVU1RPTV9JREVOVElGSUVSKFNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQsIGZsb2F0LCBLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFksIFNW
R05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwgImtlcm5lbFVuaXRMZW5ndGhZIikKLQogdm9p
ZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBw
ZWRBdHRyaWJ1dGUqIGF0dHIpCiB7ICAgIAogICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRy
LT52YWx1ZSgpOwpAQCAtMTIzLDUgKzExNywzIEBAIGJvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudDo6YnVpbGQKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00
Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgJ
KHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTQgQEAKICNpbmNsdWRlICJTVkdG
RVNwZWN1bGFyTGlnaHRpbmcuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworICAgIGV4dGVybiBjaGFyIFNWR0tlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcltdOwor
ICAgIGV4dGVybiBjaGFyIFNWR0tlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcltdOworCiAgICAg
Y2xhc3MgU1ZHQ29sb3I7CiAgICAgCi0gICAgY2xhc3MgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMKLSAgICB7
CisgICAgY2xhc3MgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCgpOwpAQCAt
NDAsMTYgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgU1ZHRmls
dGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKICAgICAg
ICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CiAKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biB0aGlzOyB9Ci0KICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU3RyaW5nLCBJbjEsIGluMSkK
LSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQsIGZsb2F0LCBTcGVjdWxhckNvbnN0YW50LCBzcGVjdWxhckNvbnN0YW50KQot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudCwgZmxvYXQsIFNwZWN1bGFyRXhwb25lbnQsIHNwZWN1bGFyRXhwb25lbnQpCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LCBmbG9hdCwgU3VyZmFjZVNjYWxlLCBzdXJmYWNlU2NhbGUpCi0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LCBmbG9hdCwgS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dCwgZmxvYXQsIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQsIFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdUYWdTdHJpbmcsIFNWR05hbWVzOjppbkF0
dHJTdHJpbmcsIFN0cmluZywgSW4xLCBpbjEpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVTcGVj
dWxhckxpZ2h0aW5nVGFnU3RyaW5nLCBTVkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHJTdHJp
bmcsIGZsb2F0LCBTcGVjdWxhckNvbnN0YW50LCBzcGVjdWxhckNvbnN0YW50KQorICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dCwgU1ZHTmFtZXM6OmZlU3BlY3VsYXJMaWdodGluZ1RhZ1N0cmluZywgU1ZHTmFtZXM6OnNwZWN1
bGFyRXhwb25lbnRBdHRyU3RyaW5nLCBmbG9hdCwgU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJF
eHBvbmVudCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdUYWdTdHJp
bmcsIFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyU3RyaW5nLCBmbG9hdCwgU3VyZmFjZVNjYWxl
LCBzdXJmYWNlU2NhbGUpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVTcGVjdWxhckxpZ2h0aW5n
VGFnU3RyaW5nLCBTVkdLZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIsIGZsb2F0LCBLZXJuZWxV
bml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVT
cGVjdWxhckxpZ2h0aW5nVGFnU3RyaW5nLCBTVkdLZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIs
IGZsb2F0LCBLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkpCiAKICAgICAgICAg
bXV0YWJsZSBSZWZQdHI8RkVTcGVjdWxhckxpZ2h0aW5nPiBtX2ZpbHRlckVmZmVjdDsKICAgICAg
ICAgCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR0ZFVGlsZUVsZW1lbnQ6OlNWR0ZFVGls
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAg
ICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCisg
ICAgLCBtX2luMSh0aGlzLCBTVkdOYW1lczo6aW5BdHRyKQogICAgICwgbV9maWx0ZXJFZmZlY3Qo
MCkKIHsKIH0KQEAgLTQxLDggKzQyLDYgQEAgU1ZHRkVUaWxlRWxlbWVudDo6flNWR0ZFVGlsZUVs
ZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVRpbGVF
bGVtZW50LCBTdHJpbmcsIEluMSwgaW4xLCBTVkdOYW1lczo6aW5BdHRyKQotCiB2b2lkIFNWR0ZF
VGlsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikK
IHsKICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKQEAgLTczLDUgKzcy
LDMgQEAgYm9vbCBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZAogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRkVUaWxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVs
ZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNyw5IEBACiAjaW5jbHVkZSAiU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiU1ZHRkVUaWxlLmgiCiAK
LW5hbWVzcGFjZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgU1ZHRkVUaWxlRWxlbWVudCA6IHB1Ymxp
YyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMKLSAgICB7CituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKyAgICBjbGFzcyBTVkdGRVRpbGVFbGVtZW50IDogcHVibGljIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdG
RVRpbGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2
aXJ0dWFsIH5TVkdGRVRpbGVFbGVtZW50KCk7CkBAIC0zOSwxMSArMzgsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZQogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNW
R1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CiAgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRl
ciopOwogCi0gICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQotCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFVGlsZUVsZW1lbnQs
IFN0cmluZywgSW4xLCBpbjEpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGRVRpbGVFbGVtZW50LCBTVkdOYW1lczo6ZmVUaWxlVGFnU3RyaW5nLCBTVkdOYW1lczo6
aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQogCiAgICAgICAgIG11dGFibGUgUmVmUHRy
PEZFVGlsZT4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNCArMzAsMTcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjaGFyIFNWR0Jhc2VGcmVxdWVuY3lYSWRlbnRpZmll
cltdID0gIlNWR0Jhc2VGcmVxdWVuY3lYIjsKK2NoYXIgU1ZHQmFzZUZyZXF1ZW5jeVlJZGVudGlm
aWVyW10gPSAiU1ZHQmFzZUZyZXF1ZW5jeVkiOworCiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpT
VkdGRVR1cmJ1bGVuY2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2MpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFn
TmFtZSwgZG9jKQotICAgICwgbV9iYXNlRnJlcXVlbmN5WCgwLjBmKQotICAgICwgbV9iYXNlRnJl
cXVlbmN5WSgwLjBmKQotICAgICwgbV9udW1PY3RhdmVzKDEpCi0gICAgLCBtX3NlZWQoMC4wZikK
LSAgICAsIG1fc3RpdGNoVGlsZXMoU1ZHX1NUSVRDSFRZUEVfTk9TVElUQ0gpCi0gICAgLCBtX3R5
cGUoRkVUVVJCVUxFTkNFX1RZUEVfVFVSQlVMRU5DRSkKKyAgICAsIG1fYmFzZUZyZXF1ZW5jeVgo
dGhpcywgU1ZHTmFtZXM6OmJhc2VGcmVxdWVuY3lBdHRyKQorICAgICwgbV9iYXNlRnJlcXVlbmN5
WSh0aGlzLCBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIpCisgICAgLCBtX251bU9jdGF2ZXMo
dGhpcywgU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyLCAxKQorICAgICwgbV9zZWVkKHRoaXMsIFNW
R05hbWVzOjpzZWVkQXR0cikKKyAgICAsIG1fc3RpdGNoVGlsZXModGhpcywgU1ZHTmFtZXM6OnN0
aXRjaFRpbGVzQXR0ciwgU1ZHX1NUSVRDSFRZUEVfTk9TVElUQ0gpCisgICAgLCBtX3R5cGUodGhp
cywgU1ZHTmFtZXM6OnR5cGVBdHRyLCBGRVRVUkJVTEVOQ0VfVFlQRV9UVVJCVUxFTkNFKQogICAg
ICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsKIH0KQEAgLTQ2LDEzICs0OSw2IEBAIFNWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQ6On5TVkdGRVR1cmJ1bGVuY2UKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlNfV0lUSF9DVVNUT01fSURFTlRJRklFUihTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
LCBmbG9hdCwgQmFzZUZyZXF1ZW5jeVgsIGJhc2VGcmVxdWVuY3lYLCBTVkdOYW1lczo6YmFzZUZy
ZXF1ZW5jeUF0dHIsICJiYXNlRnJlcXVlbmN5WCIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OU19XSVRIX0NVU1RPTV9JREVOVElGSUVSKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIGZsb2F0
LCBCYXNlRnJlcXVlbmN5WSwgYmFzZUZyZXF1ZW5jeVksIFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5
QXR0ciwgImJhc2VGcmVxdWVuY3lZIikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQsIGZsb2F0LCBTZWVkLCBzZWVkLCBTVkdOYW1lczo6c2VlZEF0
dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
LCBsb25nLCBOdW1PY3RhdmVzLCBudW1PY3RhdmVzLCBTVkdOYW1lczo6bnVtT2N0YXZlc0F0dHIp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBp
bnQsIFN0aXRjaFRpbGVzLCBzdGl0Y2hUaWxlcywgU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0cikK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIGlu
dCwgVHlwZSwgdHlwZSwgU1ZHTmFtZXM6OnR5cGVBdHRyKQotCiB2b2lkIFNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsK
ICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKQEAgLTk4LDUgKzk0LDMg
QEAgYm9vbCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpidWlsZChGaWx0ZQogfQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RkVUdXJidWxlbmNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVR1
cmJ1bGVuY2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE2ICsyNywxOCBAQAogI2lu
Y2x1ZGUgIlNWR0ZFVHVyYnVsZW5jZS5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgZXh0ZXJuIGNoYXIgU1ZHQmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyW107
CisgICAgZXh0ZXJuIGNoYXIgU1ZHQmFzZUZyZXF1ZW5jeVlJZGVudGlmaWVyW107CisKICAgICBl
bnVtIFNWR1N0aXRjaE9wdGlvbnMgewogICAgICAgICBTVkdfU1RJVENIVFlQRV9VTktOT1dOICA9
IDAsCiAgICAgICAgIFNWR19TVElUQ0hUWVBFX1NUSVRDSCAgID0gMSwKICAgICAgICAgU1ZHX1NU
SVRDSFRZUEVfTk9TVElUQ0ggPSAyCiAgICAgfTsKIAotICAgIGNsYXNzIFNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzCi0g
ICAgeworICAgIGNsYXNzIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAg
ICAgIHZpcnR1YWwgflNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQoKTsKQEAgLTQ1LDE2ICs0NywxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmls
dGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CiAgICAgICAgIGJvb2wgYnVpbGQo
RmlsdGVyQnVpbGRlciopOwogCi0gICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIGNvbnN0
IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQotCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQsIGZsb2F0LCBCYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5jeVgp
Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVR1cmJ1bGVuY2VF
bGVtZW50LCBmbG9hdCwgQmFzZUZyZXF1ZW5jeVksIGJhc2VGcmVxdWVuY3lZKQotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgbG9u
ZywgTnVtT2N0YXZlcywgbnVtT2N0YXZlcykKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIGZsb2F0LCBTZWVkLCBzZWVkKQotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dCwgaW50LCBTdGl0Y2hUaWxlcywgc3RpdGNoVGlsZXMpCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBpbnQsIFR5cGUsIHR5cGUp
CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVR1cmJ1bGVuY2VF
bGVtZW50LCBTVkdOYW1lczo6ZmVUdXJidWxlbmNlVGFnU3RyaW5nLCBTVkdCYXNlRnJlcXVlbmN5
WElkZW50aWZpZXIsIGZsb2F0LCBCYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5jeVgpCisgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
LCBTVkdOYW1lczo6ZmVUdXJidWxlbmNlVGFnU3RyaW5nLCBTVkdCYXNlRnJlcXVlbmN5WUlkZW50
aWZpZXIsIGZsb2F0LCBCYXNlRnJlcXVlbmN5WSwgYmFzZUZyZXF1ZW5jeVkpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdO
YW1lczo6ZmVUdXJidWxlbmNlVGFnU3RyaW5nLCBTVkdOYW1lczo6bnVtT2N0YXZlc0F0dHJTdHJp
bmcsIGxvbmcsIE51bU9jdGF2ZXMsIG51bU9jdGF2ZXMpCisgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6ZmVUdXJi
dWxlbmNlVGFnU3RyaW5nLCBTVkdOYW1lczo6c2VlZEF0dHJTdHJpbmcsIGZsb2F0LCBTZWVkLCBz
ZWVkKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVUdXJidWxl
bmNlRWxlbWVudCwgU1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZ1N0cmluZywgU1ZHTmFtZXM6OnN0
aXRjaFRpbGVzQXR0clN0cmluZywgaW50LCBTdGl0Y2hUaWxlcywgc3RpdGNoVGlsZXMpCisgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
LCBTVkdOYW1lczo6ZmVUdXJidWxlbmNlVGFnU3RyaW5nLCBTVkdOYW1lczo6dHlwZUF0dHJTdHJp
bmcsIGludCwgVHlwZSwgdHlwZSkKIAogICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRVR1cmJ1bGVu
Y2U+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CkBAIC02Myw1ICs2MiwzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5v
ZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxOSAr
MzUsMjIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjaGFyIFNWR0ZpbHRlclJlc1hJZGVu
dGlmaWVyW10gPSAiU1ZHRmlsdGVyUmVzWCI7CitjaGFyIFNWR0ZpbHRlclJlc1lJZGVudGlmaWVy
W10gPSAiU1ZHRmlsdGVyUmVzWSI7CisKIFNWR0ZpbHRlckVsZW1lbnQ6OlNWR0ZpbHRlckVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNW
R1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jKQogICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkKICAg
ICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkK
LSAgICAsIG1fZmlsdGVyVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJP
VU5ESU5HQk9YKQotICAgICwgbV9wcmltaXRpdmVVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklU
X1RZUEVfVVNFUlNQQUNFT05VU0UpCi0gICAgLCBtX3goTGVuZ3RoTW9kZVdpZHRoLCAiLTEwJSIp
Ci0gICAgLCBtX3koTGVuZ3RoTW9kZUhlaWdodCwgIi0xMCUiKQotICAgICwgbV93aWR0aChMZW5n
dGhNb2RlV2lkdGgsICIxMjAlIikKLSAgICAsIG1faGVpZ2h0KExlbmd0aE1vZGVIZWlnaHQsICIx
MjAlIikKLSAgICAsIG1fZmlsdGVyUmVzWCgwKQotICAgICwgbV9maWx0ZXJSZXNZKDApCisgICAg
LCBtX2ZpbHRlclVuaXRzKHRoaXMsIFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHIsIFNWR1VuaXRU
eXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKKyAgICAsIG1fcHJpbWl0aXZl
VW5pdHModGhpcywgU1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRzQXR0ciwgU1ZHVW5pdFR5cGVzOjpT
VkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQorICAgICwgbV94KHRoaXMsIFNWR05hbWVzOjp4
QXR0ciwgTGVuZ3RoTW9kZVdpZHRoLCAiLTEwJSIpCisgICAgLCBtX3kodGhpcywgU1ZHTmFtZXM6
OnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0LCAiLTEwJSIpCisgICAgLCBtX3dpZHRoKHRoaXMsIFNW
R05hbWVzOjp3aWR0aEF0dHIsIExlbmd0aE1vZGVXaWR0aCwgIjEyMCUiKQorICAgICwgbV9oZWln
aHQodGhpcywgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIExlbmd0aE1vZGVIZWlnaHQsICIxMjAlIikK
KyAgICAsIG1fZmlsdGVyUmVzWCh0aGlzLCBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0cikKKyAgICAs
IG1fZmlsdGVyUmVzWSh0aGlzLCBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0cikKIHsKICAgICAvLyBT
cGVjOiBJZiB0aGUgeC95IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlz
IGFzIGlmIGEgdmFsdWUgb2YgIi0xMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6IElm
IHRoZSB3aWR0aC9oZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3Qg
aXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTIwJSIgd2VyZSBzcGVjaWZpZWQuCkBAIC01NywxNSArNjAs
NiBAQCBTVkdGaWx0ZXJFbGVtZW50Ojp+U1ZHRmlsdGVyRWxlbWVudCgpCiB7CiB9CiAKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGludCwgRmlsdGVyVW5p
dHMsIGZpbHRlclVuaXRzLCBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyKQotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgaW50LCBQcmltaXRpdmVVbml0cywg
cHJpbWl0aXZlVW5pdHMsIFNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgsIFgsIHgsIFNW
R05hbWVzOjp4QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVs
ZW1lbnQsIFNWR0xlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyKQotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgs
IFNWR05hbWVzOjp3aWR0aEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdG
aWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0
QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ1VTVE9NX0lERU5USUZJ
RVIoU1ZHRmlsdGVyRWxlbWVudCwgbG9uZywgRmlsdGVyUmVzWCwgZmlsdGVyUmVzWCwgU1ZHTmFt
ZXM6OmZpbHRlclJlc0F0dHIsICJmaWx0ZXJSZXNYIikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TX1dJVEhfQ1VTVE9NX0lERU5USUZJRVIoU1ZHRmlsdGVyRWxlbWVudCwgbG9uZywgRmls
dGVyUmVzWSwgZmlsdGVyUmVzWSwgU1ZHTmFtZXM6OmZpbHRlclJlc0F0dHIsICJmaWx0ZXJSZXNZ
IikKLQogdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpzZXRGaWx0ZXJSZXModW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZykgY29uc3QKIHsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgJKHJl
dmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiwxMyArMzIsMTQgQEAKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFNWR0xlbmd0aDsKKworICAgIGV4dGVy
biBjaGFyIFNWR0ZpbHRlclJlc1hJZGVudGlmaWVyW107CisgICAgZXh0ZXJuIGNoYXIgU1ZHRmls
dGVyUmVzWUlkZW50aWZpZXJbXTsKIAogICAgIGNsYXNzIFNWR0ZpbHRlckVsZW1lbnQgOiBwdWJs
aWMgU1ZHU3R5bGVkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFNWR1VSSVJlZmVyZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNW
R0xhbmdTcGFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIFNWR0ZpbHRlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAg
ICAgICAgIHZpcnR1YWwgflNWR0ZpbHRlckVsZW1lbnQoKTsKQEAgLTU0LDE3ICs1NSwxNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdVUklSZWZlcmVu
Y2UsIFN0cmluZywgSHJlZiwgaHJlZikKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FS
RF9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLSAKLSAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGludCwg
RmlsdGVyVW5pdHMsIGZpbHRlclVuaXRzKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgaW50LCBQcmltaXRpdmVVbml0cywgcHJpbWl0aXZl
VW5pdHMpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJF
bGVtZW50LCBTVkdMZW5ndGgsIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgsIFksIHkpCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgsIFdp
ZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0Zp
bHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCi0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBsb25nLCBGaWx0ZXJSZXNY
LCBmaWx0ZXJSZXNYKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
RmlsdGVyRWxlbWVudCwgbG9uZywgRmlsdGVyUmVzWSwgZmlsdGVyUmVzWSkKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpm
aWx0ZXJUYWdTdHJpbmcsIFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHJTdHJpbmcsIGludCwgRmls
dGVyVW5pdHMsIGZpbHRlclVuaXRzKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmZpbHRlclRhZ1N0cmluZywgU1ZHTmFt
ZXM6OnByaW1pdGl2ZVVuaXRzQXR0clN0cmluZywgaW50LCBQcmltaXRpdmVVbml0cywgcHJpbWl0
aXZlVW5pdHMpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0
ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyVGFnU3RyaW5nLCBTVkdOYW1lczo6eEF0dHJTdHJp
bmcsIFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpmaWx0ZXJUYWdTdHJpbmcsIFNWR05hbWVz
Ojp5QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmZpbHRlclRhZ1N0cmlu
ZywgU1ZHTmFtZXM6OndpZHRoQXR0clN0cmluZywgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCisg
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBT
VkdOYW1lczo6ZmlsdGVyVGFnU3RyaW5nLCBTVkdOYW1lczo6aGVpZ2h0QXR0clN0cmluZywgU1ZH
TGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpmaWx0ZXJUYWdTdHJpbmcsIFNWR0Zp
bHRlclJlc1hJZGVudGlmaWVyLCBsb25nLCBGaWx0ZXJSZXNYLCBmaWx0ZXJSZXNYKQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFt
ZXM6OmZpbHRlclRhZ1N0cmluZywgU1ZHRmlsdGVyUmVzWUlkZW50aWZpZXIsIGxvbmcsIEZpbHRl
clJlc1ksIGZpbHRlclJlc1kpCiAKICAgICAgICAgUmVmUHRyPFNWR1Jlc291cmNlRmlsdGVyPiBt
X2ZpbHRlcjsKICAgICB9OwpAQCAtNzMsNSArNzEsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMiArMzQsMTUg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjaGFyIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlc0lkZW50aWZpZXJJZGVudGlmaWVyW10gPSAiU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzSWRlbnRpZmllciI7CisKIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdTdHlsZWRF
bGVtZW50KHRhZ05hbWUsIGRvYykKLSAgICAsIG1feChMZW5ndGhNb2RlV2lkdGgsICIwJSIpCi0g
ICAgLCBtX3koTGVuZ3RoTW9kZUhlaWdodCwgIjAlIikKLSAgICAsIG1fd2lkdGgoTGVuZ3RoTW9k
ZVdpZHRoLCAiMTAwJSIpCi0gICAgLCBtX2hlaWdodChMZW5ndGhNb2RlSGVpZ2h0LCAiMTAwJSIp
CisgICAgLCBtX3godGhpcywgU1ZHTmFtZXM6OnhBdHRyLCBMZW5ndGhNb2RlV2lkdGgsICIwJSIp
CisgICAgLCBtX3kodGhpcywgU1ZHTmFtZXM6OnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMCUi
KQorICAgICwgbV93aWR0aCh0aGlzLCBTVkdOYW1lczo6d2lkdGhBdHRyLCBMZW5ndGhNb2RlV2lk
dGgsICIxMDAlIikKKyAgICAsIG1faGVpZ2h0KHRoaXMsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBM
ZW5ndGhNb2RlSGVpZ2h0LCAiMTAwJSIpCisgICAgLCBtX3Jlc3VsdCh0aGlzLCBTVkdOYW1lczo6
cmVzdWx0QXR0cikKIHsKICAgICAvLyBTcGVjOiBJZiB0aGUgeC95IGF0dHJpYnV0ZSBpcyBub3Qg
c3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjAlIiB3ZXJlIHNwZWNp
ZmllZC4KICAgICAvLyBTcGVjOiBJZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qg
c3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEwMCUiIHdlcmUgc3Bl
Y2lmaWVkLgpAQCAtNDksMTIgKzUyLDYgQEAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjp+UwogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6
OnhBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0cikKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcywgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIpCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRy
KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLCBTdHJpbmcsIFJlc3VsdCwgcmVzdWx0LCBTVkdOYW1lczo6cmVzdWx0QXR0
cikKLQogdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCShyZXZpc2lvbiAzNTIwNSkK
KysrIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCwxMSArMjgsMTMgQEAKICNpbmNsdWRlICJTVkdTdHlsZWRFbGVt
ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGV4dGVybiBjaGFyIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlc0lkZW50aWZpZXJbXTsKKwogICAgIGNsYXNzIFNW
R0ZpbHRlckVmZmVjdDsKICAgICBjbGFzcyBTVkdSZXNvdXJjZUZpbHRlcjsKIAotICAgIGNsYXNz
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyA6IHB1YmxpYyBTVkdTdHlsZWRF
bGVtZW50Ci0gICAgeworICAgIGNsYXNzIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcyA6IHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKCk7CkBAIC00NSwyMiArNDcsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZvaWQgc2V0U3RhbmRhcmRBdHRy
aWJ1dGVzKFNWR0ZpbHRlckVmZmVjdCopIGNvbnN0OwotCi0gICAgcHJvdGVjdGVkOgogICAgICAg
ICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gdGhpczsgfQorICAgICAgICB2b2lkIHNldFN0YW5kYXJkQXR0cmlidXRlcyhTVkdGaWx0ZXJF
ZmZlY3QqKSBjb25zdDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xl
bmd0aCwgWCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBZLCB5KQotICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cywgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU3RyaW5n
LCBSZXN1bHQsIHJlc3VsdCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzSWRlbnRpZmllciwgU1ZHTmFtZXM6OnhBdHRyU3RyaW5nLCBTVkdM
ZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlc0lkZW50aWZpZXIsIFNWR05hbWVzOjp5QXR0clN0cmluZywgU1ZHTGVuZ3Ro
LCBZLCB5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXNJZGVudGlmaWVyLCBTVkdOYW1lczo6d2lkdGhBdHRyU3RyaW5nLCBTVkdMZW5ndGgs
IFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzSWRlbnRpZmllciwgU1ZHTmFtZXM6OmhlaWdodEF0dHJTdHJpbmcsIFNW
R0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlc0lkZW50aWZpZXIsIFNWR05hbWVzOjpyZXN1bHRBdHRy
U3RyaW5nLCBTdHJpbmcsIFJlc3VsdCwgcmVzdWx0KQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6
bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3
LDYgQEAKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgotI2luY2x1ZGUgIlNWR0RvY3VtZW50RXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIlNWR05h
bWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiU1ZHUHJl
c2VydmVBc3BlY3RSYXRpby5oIgpAQCAtMzUsOSArMzQsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjaGFyIFNWR0ZpdFRvVmlld0JveElkZW50aWZpZXJbXSA9ICJTVkdGaXRUb1ZpZXdC
b3giOworCiBTVkdGaXRUb1ZpZXdCb3g6OlNWR0ZpdFRvVmlld0JveCgpCi0gICAgOiBtX3ZpZXdC
b3goKQotICAgICwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvKFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86
OmNyZWF0ZSgpKQorICAgIDogbV92aWV3Qm94KHRoaXMsIFNWR05hbWVzOjp2aWV3Qm94QXR0cikK
KyAgICAsIG1fcHJlc2VydmVBc3BlY3RSYXRpbyh0aGlzLCBTVkdOYW1lczo6cHJlc2VydmVBc3Bl
Y3RSYXRpb0F0dHIsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmNyZWF0ZSgpKQogewogfQogCkBA
IC00NSw5ICs0Niw2IEBAIFNWR0ZpdFRvVmlld0JveDo6flNWR0ZpdFRvVmlld0JveCgpCiB7CiB9
CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ09OVEVYVChTVkdGaXRUb1Zp
ZXdCb3gsIEZsb2F0UmVjdCwgVmlld0JveCwgdmlld0JveCwgU1ZHTmFtZXM6OnZpZXdCb3hBdHRy
KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfUkVGQ09VTlRFRF9XSVRIX0NPTlRFWFQo
U1ZHRml0VG9WaWV3Qm94LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJh
dGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0
dHIpCi0KIGJvb2wgU1ZHRml0VG9WaWV3Qm94OjpwYXJzZVZpZXdCb3goY29uc3QgVUNoYXIqJiBj
LCBjb25zdCBVQ2hhciogZW5kLCBmbG9hdCYgeCwgZmxvYXQmIHksIGZsb2F0JiB3LCBmbG9hdCYg
aCwgYm9vbCB2YWxpZGF0ZSkKIHsKICAgICBEb2N1bWVudCogZG9jID0gY29udGV4dEVsZW1lbnQo
KS0+ZG9jdW1lbnQoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCShyZXZpc2lvbiAzNTIwNSkK
KysrIFdlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwz
MCArMjUsMzAgQEAKIAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgor
I2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCisgICAgZXh0ZXJuIGNoYXIgU1ZHRml0VG9WaWV3Qm94SWRlbnRpZmllcltdOworCiAgICAg
Y2xhc3MgQWZmaW5lVHJhbnNmb3JtOwotICAgIGNsYXNzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW87
CiAKICAgICBjbGFzcyBTVkdGaXRUb1ZpZXdCb3ggewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZH
Rml0VG9WaWV3Qm94KCk7CiAgICAgICAgIHZpcnR1YWwgflNWR0ZpdFRvVmlld0JveCgpOwogCi0g
ICAgICAgIC8vICdTVkdGaXRUb1ZpZXdCb3gnIGZ1bmN0aW9ucwogICAgICAgICBib29sIHBhcnNl
Vmlld0JveChjb25zdCBVQ2hhciomIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kLCBmbG9hdCYgeCwg
ZmxvYXQmIHksIGZsb2F0JiB3LCBmbG9hdCYgaCwgYm9vbCB2YWxpZGF0ZSA9IHRydWUpOwogICAg
ICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGZsb2F0
IHZpZXdXaWR0aCwgZmxvYXQgdmlld0hlaWdodCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgYm9vbCBpc0tub3du
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIHByb3RlY3RlZDoKICAgICAg
ICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0ID0gMDsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OU19X
SVRIX0NPTlRFWFQoU1ZHRml0VG9WaWV3Qm94LCBGbG9hdFJlY3QsIFZpZXdCb3gsIHZpZXdCb3gp
Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OU19SRUZDT1VOVEVEX1dJVEhf
Q09OVEVYVChTVkdGaXRUb1ZpZXdCb3gsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZl
QXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdGaXRUb1ZpZXdCb3gsIFNWR0ZpdFRvVmlld0JveElkZW50aWZp
ZXIsIFNWR05hbWVzOjp2aWV3Qm94QXR0clN0cmluZywgRmxvYXRSZWN0LCBWaWV3Qm94LCB2aWV3
Qm94KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRml0VG9WaWV3
Qm94LCBTVkdGaXRUb1ZpZXdCb3hJZGVudGlmaWVyLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RS
YXRpb0F0dHJTdHJpbmcsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0
aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3Zn
L1NWR0ZvbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5TVkdGb250RWxlbWVudCgpOwogCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4g
ZmFsc2U7IH0gICAgCi0gICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICAgICAgdm9pZCBpbnZhbGlkYXRl
R2x5cGhDYWNoZSgpOwogCkBAIC00OCw2ICs0Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICBTVkdNaXNzaW5nR2x5cGhFbGVtZW50KiBmaXJzdE1pc3NpbmdHbHlwaEVsZW1lbnQo
KSBjb25zdDsKIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KKwogICAgIHByaXZh
dGU6CiAgICAgICAgIHZvaWQgZW5zdXJlR2x5cGhDYWNoZSgpIGNvbnN0OwogCkBAIC02Miw1ICs2
NCwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2VuZGlmIC8vIEVOQUJMRShTVkdfRk9OVFMp
CiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSwxMCBAQCBT
VkdGb3JlaWduT2JqZWN0RWxlbWVudDo6U1ZHRm9yZWlnbk9iamVjCiAgICAgLCBTVkdUZXN0cygp
CiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpCi0gICAgLCBtX3goTGVuZ3RoTW9kZVdpZHRoKQotICAgICwgbV95KExlbmd0aE1vZGVIZWln
aHQpCi0gICAgLCBtX3dpZHRoKExlbmd0aE1vZGVXaWR0aCkKLSAgICAsIG1faGVpZ2h0KExlbmd0
aE1vZGVIZWlnaHQpCisgICAgLCBtX3godGhpcywgU1ZHTmFtZXM6OnhBdHRyLCBMZW5ndGhNb2Rl
V2lkdGgpCisgICAgLCBtX3kodGhpcywgU1ZHTmFtZXM6OnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0
KQorICAgICwgbV93aWR0aCh0aGlzLCBTVkdOYW1lczo6d2lkdGhBdHRyLCBMZW5ndGhNb2RlV2lk
dGgpCisgICAgLCBtX2hlaWdodCh0aGlzLCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgTGVuZ3RoTW9k
ZUhlaWdodCkKIHsKIH0KIApAQCAtNTAsMTEgKzUwLDYgQEAgU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQ6On5TVkdGb3JlaWduT2JqZQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0
dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dCwgU1ZHTGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lk
dGgsIFNWR05hbWVzOjp3aWR0aEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFt
ZXM6OmhlaWdodEF0dHIpCi0KIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZvcmVp
Z25PYmplY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMyArNTIsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkgCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFS
QVRJT05TKFNWR1VSSVJlZmVyZW5jZSwgU3RyaW5nLCBIcmVmLCBocmVmKQotCi0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZH
TGVuZ3RoLCBYLCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgWSwgeSkKLSAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgs
IFdpZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQs
IFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnU3RyaW5nLCBTVkdOYW1lczo6eEF0dHJTdHJpbmcs
IFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZ1N0cmlu
ZywgU1ZHTmFtZXM6OnlBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTmFt
ZXM6OmZvcmVpZ25PYmplY3RUYWdTdHJpbmcsIFNWR05hbWVzOjp3aWR0aEF0dHJTdHJpbmcsIFNW
R0xlbmd0aCwgV2lkdGgsIHdpZHRoKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFn
U3RyaW5nLCBTVkdOYW1lczo6aGVpZ2h0QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhl
aWdodCkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgJ
KHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsOSArNTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlz
OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RF
Q0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKSAKLQotICAgIHByaXZh
dGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTVkdVc2VFbGVtZW50OwogICAgICAgICBBZmZpbmVU
cmFuc2Zvcm0gbG9jYWxNYXRyaXgoKSBjb25zdDsKICAgICB9OwpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdHcmFk
aWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEzICszOCwxNSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NoYXIgU1ZHR3JhZGllbnRFbGVtZW50SWRlbnRpZmllcltdID0g
IlNWR0dyYWRpZW50RWxlbWVudCI7CisKIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHR3JhZGllbnRF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAg
OiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvYykKICAgICAsIFNWR1VSSVJlZmVyZW5jZSgp
CiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAgICAsIG1fc3ByZWFkTWV0
aG9kKDApCi0gICAgLCBtX2dyYWRpZW50VW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBF
X09CSkVDVEJPVU5ESU5HQk9YKQotICAgICwgbV9ncmFkaWVudFRyYW5zZm9ybShTVkdUcmFuc2Zv
cm1MaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0cikpCisgICAgLCBt
X3NwcmVhZE1ldGhvZCh0aGlzLCBTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0cikKKyAgICAsIG1f
Z3JhZGllbnRVbml0cyh0aGlzLCBTVkdOYW1lczo6Z3JhZGllbnRVbml0c0F0dHIsIFNWR1VuaXRU
eXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKKyAgICAsIG1fZ3JhZGllbnRU
cmFuc2Zvcm0odGhpcywgU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0ciwgU1ZHVHJhbnNm
b3JtTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIpKQogewogfQog
CkBAIC01MiwxMCArNTQsNiBAQCBTVkdHcmFkaWVudEVsZW1lbnQ6On5TVkdHcmFkaWVudEVsZW1l
bnQoCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0dyYWRpZW50RWxl
bWVudCwgaW50LCBHcmFkaWVudFVuaXRzLCBncmFkaWVudFVuaXRzLCBTVkdOYW1lczo6Z3JhZGll
bnRVbml0c0F0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19SRUZDT1VOVEVEKFNW
R0dyYWRpZW50RWxlbWVudCwgU1ZHVHJhbnNmb3JtTGlzdCwgR3JhZGllbnRUcmFuc2Zvcm0sIGdy
YWRpZW50VHJhbnNmb3JtLCBTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyKQotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHR3JhZGllbnRFbGVtZW50LCBpbnQsIFNwcmVhZE1l
dGhvZCwgc3ByZWFkTWV0aG9kLCBTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0cikKLQogdm9pZCBT
VkdHcmFkaWVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSog
YXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpncmFkaWVudFVuaXRz
QXR0cikgewpJbmRleDogV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQor
KysgV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDEyICsyNywxMiBAQAogI2luY2x1ZGUgIlNWR1BhaW50U2VydmVyR3JhZGllbnQuaCIKICNpbmNs
dWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVk
RWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRlICJTVkdV
UklSZWZlcmVuY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgU1ZHR3Jh
ZGllbnRFbGVtZW50OwotICAgIGNsYXNzIFNWR1RyYW5zZm9ybUxpc3Q7CisgICAgZXh0ZXJuIGNo
YXIgU1ZHR3JhZGllbnRFbGVtZW50SWRlbnRpZmllcltdOwogCiAgICAgY2xhc3MgU1ZHR3JhZGll
bnRFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFNWR1VSSVJlZmVyZW5jZSwKQEAgLTY3LDEzICs2NywxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFZlY3RvcjxTVkdHcmFkaWVudFN0b3A+IGJ1aWxk
U3RvcHMoKSBjb25zdDsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHUGFpbnRTZXJ2ZXJHcmFk
aWVudD4gbV9yZXNvdXJjZTsKICAKKyAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KKwogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHVVJJUmVm
ZXJlbmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZP
UldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0gCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdHcmFkaWVudEVsZW1lbnQs
IGludCwgU3ByZWFkTWV0aG9kLCBzcHJlYWRNZXRob2QpCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdHcmFkaWVudEVsZW1lbnQsIGludCwgR3JhZGllbnRVbml0cywg
Z3JhZGllbnRVbml0cykKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TX1JF
RkNPVU5URUQoU1ZHR3JhZGllbnRFbGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0LCBHcmFkaWVudFRy
YW5zZm9ybSwgZ3JhZGllbnRUcmFuc2Zvcm0pCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdHcmFkaWVudEVsZW1lbnQsIFNWR0dyYWRpZW50RWxlbWVudElkZW50aWZp
ZXIsIFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyU3RyaW5nLCBpbnQsIFNwcmVhZE1ldGhvZCwg
c3ByZWFkTWV0aG9kKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
R3JhZGllbnRFbGVtZW50LCBTVkdHcmFkaWVudEVsZW1lbnRJZGVudGlmaWVyLCBTVkdOYW1lczo6
Z3JhZGllbnRVbml0c0F0dHJTdHJpbmcsIGludCwgR3JhZGllbnRVbml0cywgZ3JhZGllbnRVbml0
cykKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0dyYWRpZW50RWxl
bWVudCwgU1ZHR3JhZGllbnRFbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6OmdyYWRpZW50VHJh
bnNmb3JtQXR0clN0cmluZywgU1ZHVHJhbnNmb3JtTGlzdCwgR3JhZGllbnRUcmFuc2Zvcm0sIGdy
YWRpZW50VHJhbnNmb3JtKQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9T
VkdJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMSArNDIsMTEgQEAgU1ZH
SW1hZ2VFbGVtZW50OjpTVkdJbWFnZUVsZW1lbnQoY29uc3QgUQogICAgICwgU1ZHTGFuZ1NwYWNl
KCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwgU1ZHVVJJUmVm
ZXJlbmNlKCkKLSAgICAsIG1feChMZW5ndGhNb2RlV2lkdGgpCi0gICAgLCBtX3koTGVuZ3RoTW9k
ZUhlaWdodCkKLSAgICAsIG1fd2lkdGgoTGVuZ3RoTW9kZVdpZHRoKQotICAgICwgbV9oZWlnaHQo
TGVuZ3RoTW9kZUhlaWdodCkKLSAgICAsIG1fcHJlc2VydmVBc3BlY3RSYXRpbyhTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvOjpjcmVhdGUoKSkKKyAgICAsIG1feCh0aGlzLCBTVkdOYW1lczo6eEF0dHIs
IExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feSh0aGlzLCBTVkdOYW1lczo6eUF0dHIsIExlbmd0
aE1vZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKHRoaXMsIFNWR05hbWVzOjp3aWR0aEF0dHIsIExl
bmd0aE1vZGVXaWR0aCkKKyAgICAsIG1faGVpZ2h0KHRoaXMsIFNWR05hbWVzOjpoZWlnaHRBdHRy
LCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvKHRoaXMsIFNW
R05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6
Y3JlYXRlKCkpCiAgICAgLCBtX2ltYWdlTG9hZGVyKHRoaXMpCiB7CiB9CkBAIC01NSwxMiArNTUs
NiBAQCBTVkdJbWFnZUVsZW1lbnQ6On5TVkdJbWFnZUVsZW1lbnQoKQogewogfQogCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgWCwgeCwg
U1ZHTmFtZXM6OnhBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VF
bGVtZW50LCBTVkdMZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0cikKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgs
IFNWR05hbWVzOjp3aWR0aEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdJ
bWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRB
dHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfUkVGQ09VTlRFRChTVkdJbWFnZUVs
ZW1lbnQsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNl
cnZlQXNwZWN0UmF0aW8sIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikKLSAKIHZv
aWQgU1ZHSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUg
KmF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdJ
bWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDEwIEBACiAjaW5jbHVk
ZSAiU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUZXN0cy5o
IgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW8uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbzsKICAgICBjbGFzcyBTVkdMZW5ndGg7CiAKICAgICBjbGFzcyBTVkdJbWFn
ZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsCkBAIC01OCwy
MSArNTgsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7Ci0gICAgICAgIAog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVWYWx1ZXMoKSBjb25zdDsKLQotICAgIHBy
b3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9O
UyhTVkdVUklSZWZlcmVuY2UsIFN0cmluZywgSHJlZiwgaHJlZikKLQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgsIFgsIHgp
Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVsZW1lbnQs
IFNWR0xlbmd0aCwgWSwgeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgSGVp
Z2h0LCBoZWlnaHQpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OU19SRUZD
T1VOVEVEKFNWR0ltYWdlRWxlbWVudCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2VydmVB
c3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OmltYWdlVGFnU3RyaW5n
LCBTVkdOYW1lczo6eEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OmltYWdl
VGFnU3RyaW5nLCBTVkdOYW1lczo6eUF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWSwgeSkKKyAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFt
ZXM6OmltYWdlVGFnU3RyaW5nLCBTVkdOYW1lczo6d2lkdGhBdHRyU3RyaW5nLCBTVkdMZW5ndGgs
IFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OmltYWdlVGFnU3RyaW5nLCBTVkdOYW1lczo6aGVpZ2h0
QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OmltYWdlVGFn
U3RyaW5nLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHJTdHJpbmcsIFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8p
CiAKICAgICAgICAgU1ZHSW1hZ2VMb2FkZXIgbV9pbWFnZUxvYWRlcjsKICAgICB9OwpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0xpbmVFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdM
aW5lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICszNywxMCBAQCBTVkdMaW5l
RWxlbWVudDo6U1ZHTGluZUVsZW1lbnQoY29uc3QgUXVhCiAgICAgLCBTVkdUZXN0cygpCiAgICAg
LCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0g
ICAgLCBtX3gxKExlbmd0aE1vZGVXaWR0aCkKLSAgICAsIG1feTEoTGVuZ3RoTW9kZUhlaWdodCkK
LSAgICAsIG1feDIoTGVuZ3RoTW9kZVdpZHRoKQotICAgICwgbV95MihMZW5ndGhNb2RlSGVpZ2h0
KQorICAgICwgbV94MSh0aGlzLCBTVkdOYW1lczo6eDFBdHRyLCBMZW5ndGhNb2RlV2lkdGgpCisg
ICAgLCBtX3kxKHRoaXMsIFNWR05hbWVzOjp5MUF0dHIsIExlbmd0aE1vZGVIZWlnaHQpCisgICAg
LCBtX3gyKHRoaXMsIFNWR05hbWVzOjp4MkF0dHIsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1f
eTIodGhpcywgU1ZHTmFtZXM6OnkyQXR0ciwgTGVuZ3RoTW9kZUhlaWdodCkKIHsKIH0KIApAQCAt
NDgsMTEgKzQ4LDYgQEAgU1ZHTGluZUVsZW1lbnQ6On5TVkdMaW5lRWxlbWVudCgpCiB7CiB9CiAK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgs
IFgxLCB4MSwgU1ZHTmFtZXM6OngxQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgsIFkxLCB5MSwgU1ZHTmFtZXM6OnkxQXR0cikKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgsIFgy
LCB4MiwgU1ZHTmFtZXM6OngyQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0xpbmVFbGVtZW50LCBTVkdMZW5ndGgsIFkyLCB5MiwgU1ZHTmFtZXM6OnkyQXR0cikKLQogdm9p
ZCBTVkdMaW5lRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBh
dHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OngxQXR0cikKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHTGluZUVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdMaW5l
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMiArNTUsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVWYWx1ZXMoKSBjb25zdDsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFS
QVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0gCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBYMSwg
eDEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lRWxlbWVu
dCwgU1ZHTGVuZ3RoLCBZMSwgeTEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBYMiwgeDIpCi0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBZMiwgeTIp
CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lRWxlbWVudCwg
U1ZHTmFtZXM6OmxpbmVUYWdTdHJpbmcsIFNWR05hbWVzOjp4MUF0dHJTdHJpbmcsIFNWR0xlbmd0
aCwgWDEsIHgxKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGlu
ZUVsZW1lbnQsIFNWR05hbWVzOjpsaW5lVGFnU3RyaW5nLCBTVkdOYW1lczo6eTFBdHRyU3RyaW5n
LCBTVkdMZW5ndGgsIFkxLCB5MSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6bGluZVRhZ1N0cmluZywgU1ZHTmFtZXM6Ongy
QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBYMiwgeDIpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OmxpbmVUYWdTdHJpbmcsIFNW
R05hbWVzOjp5MkF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWTIsIHkyKQogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OlNWR0xpbmVhckdyYWRpZW50
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAg
IDogU1ZHR3JhZGllbnRFbGVtZW50KHRhZ05hbWUsIGRvYykKLSAgICAsIG1feDEoTGVuZ3RoTW9k
ZVdpZHRoKQotICAgICwgbV95MShMZW5ndGhNb2RlSGVpZ2h0KQotICAgICwgbV94MihMZW5ndGhN
b2RlV2lkdGgsICIxMDAlIikKLSAgICAsIG1feTIoTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1f
eDEodGhpcywgU1ZHTmFtZXM6OngxQXR0ciwgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95MSh0
aGlzLCBTVkdOYW1lczo6eTFBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV94Mih0aGlz
LCBTVkdOYW1lczo6eDJBdHRyLCBMZW5ndGhNb2RlV2lkdGgsICIxMDAlIikKKyAgICAsIG1feTIo
dGhpcywgU1ZHTmFtZXM6OnkyQXR0ciwgTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAgICAvLyBTcGVj
OiBJZiB0aGUgeDIgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMg
aWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCiB9CkBAIC01MCwxMSArNTAsNiBA
QCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6On5TVkdMaW5lYXJHcmFkCiB7CiB9CiAKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVu
Z3RoLCBYMSwgeDEsIFNWR05hbWVzOjp4MUF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgWTEsIHkxLCBTVkdOYW1l
czo6eTFBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LCBTVkdMZW5ndGgsIFgyLCB4MiwgU1ZHTmFtZXM6OngyQXR0cikKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3Ro
LCBZMiwgeTIsIFNWR05hbWVzOjp5MkF0dHIpCi0KIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAg
aWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eDFBdHRyKQpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcv
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE0ICs0NSwx
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgTGluZWFyR3JhZGllbnRBdHRyaWJ1
dGVzIGNvbGxlY3RHcmFkaWVudFByb3BlcnRpZXMoKSBjb25zdDsKIAotICAgIHByb3RlY3RlZDoK
LSAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIHRoaXM7IH0KLQogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgWDEs
IHgxKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIFkxLCB5MSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBYMiwg
eDIpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgWTIsIHkyKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6bGluZWFy
R3JhZGllbnRUYWdTdHJpbmcsIFNWR05hbWVzOjp4MUF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWDEs
IHgxKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LCBTVkdOYW1lczo6bGluZWFyR3JhZGllbnRUYWdTdHJpbmcsIFNWR05hbWVz
Ojp5MUF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWTEsIHkxKQorICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6bGlu
ZWFyR3JhZGllbnRUYWdTdHJpbmcsIFNWR05hbWVzOjp4MkF0dHJTdHJpbmcsIFNWR0xlbmd0aCwg
WDIsIHgyKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6bGluZWFyR3JhZGllbnRUYWdTdHJpbmcsIFNWR05h
bWVzOjp5MkF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWTIsIHkyKQogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAz
NTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCwxOCArMzQsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjaGFyIFNWR09y
aWVudFR5cGVBdHRySWRlbnRpZmllcltdID0gIlNWR09yaWVudFR5cGVBdHRyIjsKK2NoYXIgU1ZH
T3JpZW50QW5nbGVBdHRySWRlbnRpZmllcltdID0gIlNWR09yaWVudEFuZ2xlQXR0ciI7CisKIFNW
R01hcmtlckVsZW1lbnQ6OlNWR01hcmtlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9j
KQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQoKQogICAgICwgU1ZHRml0VG9WaWV3Qm94KCkKLSAgICAsIG1fcmVmWChMZW5ndGhNb2RlV2lk
dGgpCi0gICAgLCBtX3JlZlkoTGVuZ3RoTW9kZUhlaWdodCkKLSAgICAsIG1fbWFya2VyV2lkdGgo
TGVuZ3RoTW9kZVdpZHRoLCAiMyIpCi0gICAgLCBtX21hcmtlckhlaWdodChMZW5ndGhNb2RlSGVp
Z2h0LCAiMyIpIAotICAgICwgbV9tYXJrZXJVbml0cyhTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lE
VEgpCi0gICAgLCBtX29yaWVudFR5cGUoMCkKLSAgICAsIG1fb3JpZW50QW5nbGUoU1ZHQW5nbGU6
OmNyZWF0ZSgpKQorICAgICwgbV9yZWZYKHRoaXMsIFNWR05hbWVzOjpyZWZYQXR0ciwgTGVuZ3Ro
TW9kZVdpZHRoKQorICAgICwgbV9yZWZZKHRoaXMsIFNWR05hbWVzOjpyZWZZQXR0ciwgTGVuZ3Ro
TW9kZUhlaWdodCkKKyAgICAsIG1fbWFya2VyV2lkdGgodGhpcywgU1ZHTmFtZXM6Om1hcmtlcldp
ZHRoQXR0ciwgTGVuZ3RoTW9kZVdpZHRoLCAiMyIpCisgICAgLCBtX21hcmtlckhlaWdodCh0aGlz
LCBTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCwgIjMiKSAKKyAg
ICAsIG1fbWFya2VyVW5pdHModGhpcywgU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0ciwgU1ZHX01B
UktFUlVOSVRTX1NUUk9LRVdJRFRIKQorICAgICwgbV9vcmllbnRUeXBlKHRoaXMsIFNWR05hbWVz
OjpvcmllbnRBdHRyKQorICAgICwgbV9vcmllbnRBbmdsZSh0aGlzLCBTVkdOYW1lczo6b3JpZW50
QXR0ciwgU1ZHQW5nbGU6OmNyZWF0ZSgpKQogewogICAgIC8vIFNwZWM6IElmIHRoZSBtYXJrZXJX
aWR0aC9tYXJrZXJIZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3Qg
aXMgYXMgaWYgYSB2YWx1ZSBvZiAiMyIgd2VyZSBzcGVjaWZpZWQuCiB9CkBAIC01NCwxNCArNTcs
NiBAQCBTVkdNYXJrZXJFbGVtZW50Ojp+U1ZHTWFya2VyRWxlbWVudCgpCiB7CiB9CiAKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwgUmVm
WCwgcmVmWCwgU1ZHTmFtZXM6OnJlZlhBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoLCBSZWZZLCByZWZZLCBTVkdOYW1lczo6cmVm
WUF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBp
bnQsIE1hcmtlclVuaXRzLCBtYXJrZXJVbml0cywgU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0cikK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0
aCwgTWFya2VyV2lkdGgsIG1hcmtlcldpZHRoLCBTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRyKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3Ro
LCBNYXJrZXJIZWlnaHQsIG1hcmtlckhlaWdodCwgU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19XSVRIX0NVU1RPTV9JREVOVElGSUVSKFNW
R01hcmtlckVsZW1lbnQsIGludCwgT3JpZW50VHlwZSwgb3JpZW50VHlwZSwgU1ZHTmFtZXM6Om9y
aWVudEF0dHIsICJvcmllbnRUeXBlIikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1JF
RkNPVU5URURfV0lUSF9DVVNUT01fSURFTlRJRklFUihTVkdNYXJrZXJFbGVtZW50LCBTVkdBbmds
ZSwgT3JpZW50QW5nbGUsIG9yaWVudEFuZ2xlLCBTVkdOYW1lczo6b3JpZW50QXR0ciwgIm9yaWVu
dEFuZ2xlIikKLQogdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShN
YXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1l
czo6bWFya2VyVW5pdHNBdHRyKSB7CkBAIC0xNDcsNyArMTQyLDcgQEAgU1ZHUmVzb3VyY2UqIFNW
R01hcmtlckVsZW1lbnQ6OmNhbnZhc1JlcwogCiAgICAgLy8gU3BlYzogSWYgdGhlIGF0dHJpYnV0
ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEKICAgICAvLyB2YWx1ZSBv
ZiAiMCIgd2VyZSBzcGVjaWZpZWQuCi0gICAgaWYgKCFtX29yaWVudFR5cGUpCisgICAgaWYgKCFv
cmllbnRUeXBlKCkpCiAgICAgICAgIHNldE9yaWVudFRvQW5nbGUoU1ZHU1ZHRWxlbWVudDo6Y3Jl
YXRlU1ZHQW5nbGUoKSk7CiAKICAgICBpZiAob3JpZW50VHlwZSgpID09IFNWR19NQVJLRVJfT1JJ
RU5UX0FOR0xFKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisr
KyBXZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYg
KzM1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNs
YXNzIFNWR0FuZ2xlOwogCisgICAgZXh0ZXJuIGNoYXIgU1ZHT3JpZW50VHlwZUF0dHJJZGVudGlm
aWVyW107CisgICAgZXh0ZXJuIGNoYXIgU1ZHT3JpZW50QW5nbGVBdHRySWRlbnRpZmllcltdOwor
CiAgICAgY2xhc3MgU1ZHTWFya2VyRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwKQEAgLTY5LDE3ICs3MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlz
OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RF
Q0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKSAKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRml0VG9WaWV3Qm94LCBGbG9h
dFJlY3QsIFZpZXdCb3gsIHZpZXdCb3gpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldB
UkRfREVDTEFSQVRJT05TX1JFRkNPVU5URUQoU1ZHRml0VG9WaWV3Qm94LCBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQotCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBT
VkdMZW5ndGgsIFJlZlgsIHJlZlgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIFJlZlksIHJlZlkpCi0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgs
IE1hcmtlcldpZHRoLCBtYXJrZXJXaWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwgTWFya2VySGVpZ2h0LCBtYXJr
ZXJIZWlnaHQpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJr
ZXJFbGVtZW50LCBpbnQsIE1hcmtlclVuaXRzLCBtYXJrZXJVbml0cykKLSAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIGludCwgT3JpZW50VHlw
ZSwgb3JpZW50VHlwZSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TX1JF
RkNPVU5URUQoU1ZHTWFya2VyRWxlbWVudCwgU1ZHQW5nbGUsIE9yaWVudEFuZ2xlLCBvcmllbnRB
bmdsZSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hcmtlckVs
ZW1lbnQsIFNWR05hbWVzOjptYXJrZXJUYWdTdHJpbmcsIFNWR05hbWVzOjpyZWZYQXR0clN0cmlu
ZywgU1ZHTGVuZ3RoLCBSZWZYLCByZWZYKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6Om1hcmtlclRhZ1N0cmluZywgU1ZH
TmFtZXM6OnJlZllBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFJlZlksIHJlZlkpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6
bWFya2VyVGFnU3RyaW5nLCBTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRyU3RyaW5nLCBTVkdMZW5n
dGgsIE1hcmtlcldpZHRoLCBtYXJrZXJXaWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjptYXJrZXJUYWdTdHJpbmcs
IFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIE1hcmtlckhlaWdo
dCwgbWFya2VySGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6Om1hcmtlclRhZ1N0cmluZywgU1ZHTmFtZXM6Om1h
cmtlclVuaXRzQXR0clN0cmluZywgaW50LCBNYXJrZXJVbml0cywgbWFya2VyVW5pdHMpCisgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdO
YW1lczo6bWFya2VyVGFnU3RyaW5nLCBTVkdPcmllbnRUeXBlQXR0cklkZW50aWZpZXIsIGludCwg
T3JpZW50VHlwZSwgb3JpZW50VHlwZSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjptYXJrZXJUYWdTdHJpbmcsIFNWR09y
aWVudEFuZ2xlQXR0cklkZW50aWZpZXIsIFNWR0FuZ2xlLCBPcmllbnRBbmdsZSwgb3JpZW50QW5n
bGUpCiAKICAgICAgICAgUmVmUHRyPFNWR1Jlc291cmNlTWFya2VyPiBtX21hcmtlcjsKICAgICB9
OwpAQCAtODcsNSArODYsNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdNYXNr
RWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMiArNDgsMTIgQEAgU1ZHTWFza0VsZW1lbnQ6
OlNWR01hc2tFbGVtZW50KGNvbnN0IFF1YQogICAgICwgU1ZHVGVzdHMoKQogICAgICwgU1ZHTGFu
Z1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQotICAgICwgbV9t
YXNrVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKQot
ICAgICwgbV9tYXNrQ29udGVudFVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VS
U1BBQ0VPTlVTRSkKLSAgICAsIG1feChMZW5ndGhNb2RlV2lkdGgsICItMTAlIikKLSAgICAsIG1f
eShMZW5ndGhNb2RlSGVpZ2h0LCAiLTEwJSIpCi0gICAgLCBtX3dpZHRoKExlbmd0aE1vZGVXaWR0
aCwgIjEyMCUiKQotICAgICwgbV9oZWlnaHQoTGVuZ3RoTW9kZUhlaWdodCwgIjEyMCUiKQorICAg
ICwgbV9tYXNrVW5pdHModGhpcywgU1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIsIFNWR1VuaXRUeXBl
czo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKKyAgICAsIG1fbWFza0NvbnRlbnRV
bml0cyh0aGlzLCBTVkdOYW1lczo6bWFza0NvbnRlbnRVbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6
U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkKKyAgICAsIG1feCh0aGlzLCBTVkdOYW1lczo6
eEF0dHIsIExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiKQorICAgICwgbV95KHRoaXMsIFNWR05hbWVz
Ojp5QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCwgIi0xMCUiKQorICAgICwgbV93aWR0aCh0aGlzLCBT
VkdOYW1lczo6d2lkdGhBdHRyLCBMZW5ndGhNb2RlV2lkdGgsICIxMjAlIikKKyAgICAsIG1faGVp
Z2h0KHRoaXMsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMTIwJSIp
CiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwg
dGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICItMTAlIiB3ZXJlIHNwZWNpZmllZC4KICAg
ICAvLyBTcGVjOiBJZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVk
LCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEyMCUiIHdlcmUgc3BlY2lmaWVkLgpA
QCAtNjMsMTMgKzYzLDYgQEAgU1ZHTWFza0VsZW1lbnQ6On5TVkdNYXNrRWxlbWVudCgpCiB7CiB9
CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBpbnQsIE1h
c2tVbml0cywgbWFza1VuaXRzLCBTVkdOYW1lczo6bWFza1VuaXRzQXR0cikKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBpbnQsIE1hc2tDb250ZW50VW5pdHMs
IG1hc2tDb250ZW50VW5pdHMsIFNWR05hbWVzOjptYXNrQ29udGVudFVuaXRzQXR0cikKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgsIFgsIHgs
IFNWR05hbWVzOjp4QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hc2tF
bGVtZW50LCBTVkdMZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0cikKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCwg
U1ZHTmFtZXM6OndpZHRoQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01h
c2tFbGVtZW50LCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0
cikKLQogdm9pZCBTVkdNYXNrRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Om1hc2tV
bml0c0F0dHIpIHsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCwyMCArNTQs
MTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGQ6OmF1dG9fcHRyPEltYWdlQnVm
ZmVyPiBkcmF3TWFza2VyQ29udGVudChjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIEZsb2F0
UmVjdCYgbWFza1JlY3QpIGNvbnN0OwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdVUklSZWZlcmVuY2UsIFN0cmluZywg
SHJlZiwgaHJlZikKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElP
TlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLSAgICAgICAgICAgIAotICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFza0VsZW1lbnQsIGludCwgTWFz
a1VuaXRzLCBtYXNrVW5pdHMpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdNYXNrRWxlbWVudCwgaW50LCBNYXNrQ29udGVudFVuaXRzLCBtYXNrQ29udGVudFVuaXRz
KQotIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFza0VsZW1l
bnQsIFNWR0xlbmd0aCwgWCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgsIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lk
dGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVu
dCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKLQogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAgICAg
cHJpdmF0ZToKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hc2tF
bGVtZW50LCBTVkdOYW1lczo6bWFza1RhZ1N0cmluZywgU1ZHTmFtZXM6Om1hc2tVbml0c0F0dHJT
dHJpbmcsIGludCwgTWFza1VuaXRzLCBtYXNrVW5pdHMpCisgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6Om1hc2tUYWdTdHJpbmcs
IFNWR05hbWVzOjptYXNrQ29udGVudFVuaXRzQXR0clN0cmluZywgaW50LCBNYXNrQ29udGVudFVu
aXRzLCBtYXNrQ29udGVudFVuaXRzKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR05hbWVzOjptYXNrVGFnU3RyaW5nLCBTVkdOYW1lczo6
eEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6bWFza1RhZ1N0cmluZywgU1ZH
TmFtZXM6OnlBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6Om1hc2tUYWdTdHJp
bmcsIFNWR05hbWVzOjp3aWR0aEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoKQor
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNW
R05hbWVzOjptYXNrVGFnU3RyaW5nLCBTVkdOYW1lczo6aGVpZ2h0QXR0clN0cmluZywgU1ZHTGVu
Z3RoLCBIZWlnaHQsIGhlaWdodCkKKwogICAgICAgICBSZWZQdHI8U1ZHUmVzb3VyY2VNYXNrZXI+
IG1fbWFza2VyOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9u
IDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw3ICs0OCw3IEBAIFNWR1BhdGhFbGVtZW50OjpTVkdQYXRoRWxlbWVudChjb25zdCBR
dWEKICAgICAsIFNWR1Rlc3RzKCkKICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAgICAsIG1fcGF0aExlbmd0aCgwLjBmKQorICAgICwg
bV9wYXRoTGVuZ3RoKHRoaXMsIFNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0ciwgMC4wZikKIHsKIH0K
IApAQCAtNTYsOCArNTYsNiBAQCBTVkdQYXRoRWxlbWVudDo6flNWR1BhdGhFbGVtZW50KCkKIHsK
IH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0aEVsZW1lbnQsIGZsb2F0
LCBQYXRoTGVuZ3RoLCBwYXRoTGVuZ3RoLCBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIpCi0KIGZs
b2F0IFNWR1BhdGhFbGVtZW50OjpnZXRUb3RhbExlbmd0aCgpCiB7CiAgICAgLy8gRklYTUU6IHRo
aXMgbWF5IHdpc2ggdG8gdXNlIHRoZSBwYXRoU2VnTGlzdCBpbnN0ZWFkIG9mIHRoZSBwYXRoZGF0
YSBpZiB0aGF0J3MgY2hlYXBlciB0byBidWlsZCAob3IgY2FjaGVkKQpAQCAtMTc5LDggKzE3Nyw4
IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXQKICAgICAgICAgaWYg
KCFwYXRoU2VnTGlzdEZyb21TVkdEYXRhKHBhdGhTZWdMaXN0KCksIGF0dHItPnZhbHVlKCksIHRy
dWUpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZXBv
cnRFcnJvcigiUHJvYmxlbSBwYXJzaW5nIGQ9XCIiICsgYXR0ci0+dmFsdWUoKSArICJcIiIpOwog
ICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0cikg
ewotICAgICAgICBtX3BhdGhMZW5ndGggPSBhdHRyLT52YWx1ZSgpLnRvRmxvYXQoKTsKLSAgICAg
ICAgaWYgKG1fcGF0aExlbmd0aCA8IDAuMGYpCisgICAgICAgIHNldFBhdGhMZW5ndGhCYXNlVmFs
dWUoYXR0ci0+dmFsdWUoKS50b0Zsb2F0KCkpOworICAgICAgICBpZiAocGF0aExlbmd0aEJhc2VW
YWx1ZSgpIDwgMC4wZikKICAgICAgICAgICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKS0+cmVwb3J0RXJyb3IoIkEgbmVnYXRpdmUgdmFsdWUgZm9yIHBhdGggYXR0cmlidXRlIDxw
YXRoTGVuZ3RoPiBpcyBub3QgYWxsb3dlZCIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChT
VkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50
LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTA2LDkgKzEwNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBw
cml2YXRlOgogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdQYXRoU2VnTGlzdD4gbV9wYXRoU2Vn
TGlzdDsKIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotIAotICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0aEVsZW1lbnQsIGZsb2F0LCBQYXRoTGVuZ3RoLCBwYXRo
TGVuZ3RoKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0aEVs
ZW1lbnQsIFNWR05hbWVzOjpwYXRoVGFnU3RyaW5nLCBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHJT
dHJpbmcsIGZsb2F0LCBQYXRoTGVuZ3RoLCBwYXRoTGVuZ3RoKQogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHJldmlzaW9u
IDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NywxMyArNTcsMTMgQEAgU1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRlcm5FbGVt
ZW50KGNvbgogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQoKQogICAgICwgU1ZHRml0VG9WaWV3Qm94KCkKLSAgICAsIG1feChMZW5ndGhNb2Rl
V2lkdGgpCi0gICAgLCBtX3koTGVuZ3RoTW9kZUhlaWdodCkKLSAgICAsIG1fd2lkdGgoTGVuZ3Ro
TW9kZVdpZHRoKQotICAgICwgbV9oZWlnaHQoTGVuZ3RoTW9kZUhlaWdodCkKLSAgICAsIG1fcGF0
dGVyblVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkK
LSAgICAsIG1fcGF0dGVybkNvbnRlbnRVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVf
VVNFUlNQQUNFT05VU0UpCi0gICAgLCBtX3BhdHRlcm5UcmFuc2Zvcm0oU1ZHVHJhbnNmb3JtTGlz
dDo6Y3JlYXRlKFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0cikpCisgICAgLCBtX3godGhp
cywgU1ZHTmFtZXM6OnhBdHRyLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kodGhpcywgU1ZH
TmFtZXM6OnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV93aWR0aCh0aGlzLCBTVkdO
YW1lczo6d2lkdGhBdHRyLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX2hlaWdodCh0aGlzLCBT
VkdOYW1lczo6aGVpZ2h0QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fcGF0dGVyblVu
aXRzKHRoaXMsIFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR19V
TklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpCisgICAgLCBtX3BhdHRlcm5Db250ZW50VW5pdHMo
dGhpcywgU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNW
R19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpCisgICAgLCBtX3BhdHRlcm5UcmFuc2Zvcm0odGhp
cywgU1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyLCBTVkdUcmFuc2Zvcm1MaXN0OjpjcmVh
dGUoU1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyKSkKIHsKIH0KIApAQCAtNzEsMTQgKzcx
LDYgQEAgU1ZHUGF0dGVybkVsZW1lbnQ6On5TVkdQYXR0ZXJuRWxlbWVudCgpCiB7CiB9CiAKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBpbnQsIFBhdHRl
cm5Vbml0cywgcGF0dGVyblVuaXRzLCBTVkdOYW1lczo6cGF0dGVyblVuaXRzQXR0cikKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBpbnQsIFBhdHRlcm5D
b250ZW50VW5pdHMsIHBhdHRlcm5Db250ZW50VW5pdHMsIFNWR05hbWVzOjpwYXR0ZXJuQ29udGVu
dFVuaXRzQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVt
ZW50LCBTVkdMZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgsIFksIHksIFNWR05hbWVz
Ojp5QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50
LCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0cikKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgsIEhlaWdo
dCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TX1JFRkNPVU5URUQoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3QsIFBh
dHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5UcmFuc2Zvcm0sIFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNm
b3JtQXR0cikKLQogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
TWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OnBhdHRlcm5Vbml0c0F0dHIpIHsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2
aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCwyMSArMjQsMjAgQEAKICNkZWZpbmUgU1ZHUGF0dGVybkVsZW1lbnRfaAog
CiAjaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJTVkdQYWludFNlcnZlclBhdHRlcm4uaCIKICNp
bmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHRml0
VG9WaWV3Qm94LmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCisjaW5jbHVkZSAiU1ZHUGFp
bnRTZXJ2ZXJQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogI2luY2x1
ZGUgIlNWR1Rlc3RzLmgiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUg
IlNWR1VSSVJlZmVyZW5jZS5oIgogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHN0cnVj
dCBQYXR0ZXJuQXR0cmlidXRlczsKICAKICAgICBjbGFzcyBTVkdMZW5ndGg7Ci0gICAgY2xhc3Mg
U1ZHVHJhbnNmb3JtTGlzdDsKIAogICAgIGNsYXNzIFNWR1BhdHRlcm5FbGVtZW50IDogcHVibGlj
IFNWR1N0eWxlZEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
U1ZHVVJJUmVmZXJlbmNlLApAQCAtNjAsMjIgKzU5LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBTVkdSZXNvdXJjZSogY2FudmFzUmVzb3VyY2UoKTsKIAogICAgIHBy
b3RlY3RlZDoKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMo
U1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYpCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0Zp
dFRvVmlld0JveCwgRmxvYXRSZWN0LCBWaWV3Qm94LCB2aWV3Qm94KQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OU19SRUZDT1VOVEVEKFNWR0ZpdFRvVmlld0Jv
eCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVB
c3BlY3RSYXRpbykKLQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
UGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgWCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgsIFksIHkpCi0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZH
TGVuZ3RoLCBXaWR0aCwgd2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKLSAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBpbnQs
IFBhdHRlcm5Vbml0cywgcGF0dGVyblVuaXRzKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIGludCwgUGF0dGVybkNvbnRlbnRVbml0cywg
cGF0dGVybkNvbnRlbnRVbml0cykKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TX1JFRkNPVU5URUQoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3QsIFBhdHRl
cm5UcmFuc2Zvcm0sIHBhdHRlcm5UcmFuc2Zvcm0pCisgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKLSAgICAg
ICAgbXV0YWJsZSBSZWZQdHI8U1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuPiBtX3Jlc291cmNlOworICAg
IHByaXZhdGU6CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0
ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnBhdHRlcm5UYWdTdHJpbmcsIFNWR05hbWVzOjp4QXR0clN0
cmluZywgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwYXR0ZXJuVGFnU3RyaW5nLCBTVkdO
YW1lczo6eUF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cGF0dGVyblRh
Z1N0cmluZywgU1ZHTmFtZXM6OndpZHRoQXR0clN0cmluZywgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lk
dGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxl
bWVudCwgU1ZHTmFtZXM6OnBhdHRlcm5UYWdTdHJpbmcsIFNWR05hbWVzOjpoZWlnaHRBdHRyU3Ry
aW5nLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwYXR0ZXJuVGFnU3Ry
aW5nLCBTVkdOYW1lczo6cGF0dGVyblVuaXRzQXR0clN0cmluZywgaW50LCBQYXR0ZXJuVW5pdHMs
IHBhdHRlcm5Vbml0cykKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cGF0dGVyblRhZ1N0cmluZywgU1ZHTmFtZXM6OnBh
dHRlcm5Db250ZW50VW5pdHNBdHRyU3RyaW5nLCBpbnQsIFBhdHRlcm5Db250ZW50VW5pdHMsIHBh
dHRlcm5Db250ZW50VW5pdHMpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnBhdHRlcm5UYWdTdHJpbmcsIFNWR05hbWVz
OjpwYXR0ZXJuVHJhbnNmb3JtQXR0clN0cmluZywgU1ZHVHJhbnNmb3JtTGlzdCwgUGF0dGVyblRy
YW5zZm9ybSwgcGF0dGVyblRyYW5zZm9ybSkKIAotICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0Vs
ZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQorICAgICAgICBt
dXRhYmxlIFJlZlB0cjxTVkdQYWludFNlcnZlclBhdHRlcm4+IG1fcmVzb3VyY2U7CiAKICAgICBw
cml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOwpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdQb2x5RWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1Bv
bHlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDggKzU4LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgbV9pZ25vcmVBdHRyaWJ1dGVDaGFu
Z2VzIDogMTsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHUG9pbnRMaXN0PiBtX3BvaW50czsK
LQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCShyZXZpc2lvbiAz
NTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNp
bmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50Lmgi
CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNp
b24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MSwxMSArNDEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHR3JhZGllbnRF
bGVtZW50KHRhZ05hbWUsIGRvYykKLSAgICAsIG1fY3goTGVuZ3RoTW9kZVdpZHRoLCAiNTAlIikK
LSAgICAsIG1fY3koTGVuZ3RoTW9kZUhlaWdodCwgIjUwJSIpCi0gICAgLCBtX3IoTGVuZ3RoTW9k
ZU90aGVyLCAiNTAlIikKLSAgICAsIG1fZngoTGVuZ3RoTW9kZVdpZHRoKQotICAgICwgbV9meShM
ZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV9jeCh0aGlzLCBTVkdOYW1lczo6Y3hBdHRyLCBMZW5n
dGhNb2RlV2lkdGgsICI1MCUiKQorICAgICwgbV9jeSh0aGlzLCBTVkdOYW1lczo6Y3lBdHRyLCBM
ZW5ndGhNb2RlSGVpZ2h0LCAiNTAlIikKKyAgICAsIG1fcih0aGlzLCBTVkdOYW1lczo6ckF0dHIs
IExlbmd0aE1vZGVPdGhlciwgIjUwJSIpCisgICAgLCBtX2Z4KHRoaXMsIFNWR05hbWVzOjpmeEF0
dHIsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1fZnkodGhpcywgU1ZHTmFtZXM6OmZ5QXR0ciwg
TGVuZ3RoTW9kZUhlaWdodCkKIHsKICAgICAvLyBTcGVjOiBJZiB0aGUgY3gvY3kvciBhdHRyaWJ1
dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICI1MCUi
IHdlcmUgc3BlY2lmaWVkLgogfQpAQCAtNTQsMTIgKzU0LDYgQEAgU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50Ojp+U1ZHUmFkaWFsR3JhZAogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgQ3gsIGN4LCBTVkdOYW1l
czo6Y3hBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LCBTVkdMZW5ndGgsIEN5LCBjeSwgU1ZHTmFtZXM6OmN5QXR0cikKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3Ro
LCBGeCwgZngsIFNWR05hbWVzOjpmeEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgRnksIGZ5LCBTVkdOYW1lczo6
ZnlBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LCBTVkdMZW5ndGgsIFIsIHIsIFNWR05hbWVzOjpyQXR0cikKLQogdm9pZCBTVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSog
YXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpjeEF0dHIpCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisr
KyBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDUsMTUgKzQ1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBSYWRpYWxH
cmFkaWVudEF0dHJpYnV0ZXMgY29sbGVjdEdyYWRpZW50UHJvcGVydGllcygpIGNvbnN0OwogCi0g
ICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQotCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwg
U1ZHTGVuZ3RoLCBDeCwgY3gpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgQ3ksIGN5KQotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBT
VkdMZW5ndGgsIFIsIHIpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgRngsIGZ4KQotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdM
ZW5ndGgsIEZ5LCBmeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnU3RyaW5n
LCBTVkdOYW1lczo6Y3hBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIEN4LCBjeCkKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZH
TmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnU3RyaW5nLCBTVkdOYW1lczo6Y3lBdHRyU3RyaW5nLCBT
VkdMZW5ndGgsIEN5LCBjeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnU3Ry
aW5nLCBTVkdOYW1lczo6ckF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgUiwgcikKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZH
TmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnU3RyaW5nLCBTVkdOYW1lczo6ZnhBdHRyU3RyaW5nLCBT
VkdMZW5ndGgsIEZ4LCBmeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnU3Ry
aW5nLCBTVkdOYW1lczo6ZnlBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIEZ5LCBmeSkKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsMTIgKzM2LDEyIEBAIFNWR1JlY3RFbGVtZW50OjpTVkdSZWN0RWxlbWVudChj
b25zdCBRdWEKICAgICAsIFNWR1Rlc3RzKCkKICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAgICAsIG1feChMZW5ndGhNb2RlV2lkdGgp
Ci0gICAgLCBtX3koTGVuZ3RoTW9kZUhlaWdodCkKLSAgICAsIG1fd2lkdGgoTGVuZ3RoTW9kZVdp
ZHRoKQotICAgICwgbV9oZWlnaHQoTGVuZ3RoTW9kZUhlaWdodCkKLSAgICAsIG1fcngoTGVuZ3Ro
TW9kZVdpZHRoKQotICAgICwgbV9yeShMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV94KHRoaXMs
IFNWR05hbWVzOjp4QXR0ciwgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KHRoaXMsIFNWR05h
bWVzOjp5QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fd2lkdGgodGhpcywgU1ZHTmFt
ZXM6OndpZHRoQXR0ciwgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhpcywgU1ZH
TmFtZXM6OmhlaWdodEF0dHIsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3J4KHRoaXMsIFNW
R05hbWVzOjpyeEF0dHIsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1fcnkodGhpcywgU1ZHTmFt
ZXM6OnJ5QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCkKIHsKIH0KIApAQCAtNDksMTMgKzQ5LDYgQEAg
U1ZHUmVjdEVsZW1lbnQ6On5TVkdSZWN0RWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIFgsIHgsIFNWR05hbWVz
Ojp4QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBT
VkdMZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6
OndpZHRoQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50
LCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIFJ4LCBy
eCwgU1ZHTmFtZXM6OnJ4QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1Jl
Y3RFbGVtZW50LCBTVkdMZW5ndGgsIFJ5LCByeSwgU1ZHTmFtZXM6OnJ5QXR0cikKLQogdm9pZCBT
VkdSZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRy
KQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdS
ZWN0RWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1JlY3RFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE0ICs1MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNSZWxhdGl2ZVZhbHVlcygpIGNvbnN0OwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElP
TlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLQotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgWCwgeCkKLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdM
ZW5ndGgsIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdS
ZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhl
aWdodCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVt
ZW50LCBTVkdMZW5ndGgsIFJ4LCByeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIFJ5LCByeSkKKyAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6cmVjdFRh
Z1N0cmluZywgU1ZHTmFtZXM6OnhBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6
OnJlY3RUYWdTdHJpbmcsIFNWR05hbWVzOjp5QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBZLCB5KQor
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNW
R05hbWVzOjpyZWN0VGFnU3RyaW5nLCBTVkdOYW1lczo6d2lkdGhBdHRyU3RyaW5nLCBTVkdMZW5n
dGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6cmVjdFRhZ1N0cmluZywgU1ZHTmFtZXM6OmhlaWdo
dEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnJlY3RUYWdT
dHJpbmcsIFNWR05hbWVzOjpyeEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgUngsIHJ4KQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVz
OjpyZWN0VGFnU3RyaW5nLCBTVkdOYW1lczo6cnlBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFJ5LCBy
eSkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50
LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjEsMTAgKzYxLDEwIEBAIFNWR1NWR0VsZW1lbnQ6OlNWR1NWR0Vs
ZW1lbnQoY29uc3QgUXVhbGkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQog
ICAgICwgU1ZHRml0VG9WaWV3Qm94KCkKICAgICAsIFNWR1pvb21BbmRQYW4oKQotICAgICwgbV94
KExlbmd0aE1vZGVXaWR0aCkKLSAgICAsIG1feShMZW5ndGhNb2RlSGVpZ2h0KQotICAgICwgbV93
aWR0aChMZW5ndGhNb2RlV2lkdGgsICIxMDAlIikKLSAgICAsIG1faGVpZ2h0KExlbmd0aE1vZGVI
ZWlnaHQsICIxMDAlIikKKyAgICAsIG1feCh0aGlzLCBTVkdOYW1lczo6eEF0dHIsIExlbmd0aE1v
ZGVXaWR0aCkKKyAgICAsIG1feSh0aGlzLCBTVkdOYW1lczo6eUF0dHIsIExlbmd0aE1vZGVIZWln
aHQpCisgICAgLCBtX3dpZHRoKHRoaXMsIFNWR05hbWVzOjp3aWR0aEF0dHIsIExlbmd0aE1vZGVX
aWR0aCwgIjEwMCUiKQorICAgICwgbV9oZWlnaHQodGhpcywgU1ZHTmFtZXM6OmhlaWdodEF0dHIs
IExlbmd0aE1vZGVIZWlnaHQsICIxMDAlIikKICAgICAsIG1fdXNlQ3VycmVudFZpZXcoZmFsc2Up
CiAgICAgLCBtX3RpbWVDb250YWluZXIoU01JTFRpbWVDb250YWluZXI6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fdmlld1NwZWMoMCkKQEAgLTgyLDExICs4Miw2IEBAIFNWR1NWR0VsZW1lbnQ6On5T
VkdTVkdFbGVtZW50KCkKICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJl
bW92ZVRpbWVDb250YWluZXIodGhpcyk7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyKQotQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoLCBZLCB5
LCBTVkdOYW1lczo6eUF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdTVkdF
bGVtZW50LCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0cikKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgSGVp
Z2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyKQotCiBjb25zdCBBdG9taWNTdHJpbmcm
IFNWR1NWR0VsZW1lbnQ6OmNvbnRlbnRTY3JpcHRUeXBlKCkgY29uc3QKIHsKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nIGRlZmF1bHRWYWx1ZSgidGV4dC9lY21hc2NyaXB0Iik7CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1NWR0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDE1ICsxNDcsMTEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGFkZFNWR1dpbmRvd0V2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEF0dHJpYnV0ZSogYXR0cik7
ICAgCiAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
Rk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRml0VG9WaWV3Qm94LCBGbG9hdFJlY3QsIFZpZXdCb3gs
IHZpZXdCb3gpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05T
X1JFRkNPVU5URUQoU1ZHRml0VG9WaWV3Qm94LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnN2Z1RhZ1N0cmlu
ZywgU1ZHTmFtZXM6OnhBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6c3ZnVGFn
U3RyaW5nLCBTVkdOYW1lczo6eUF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjpz
dmdUYWdTdHJpbmcsIFNWR05hbWVzOjp3aWR0aEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgV2lkdGgs
IHdpZHRoKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU1ZHRWxl
bWVudCwgU1ZHTmFtZXM6OnN2Z1RhZ1N0cmluZywgU1ZHTmFtZXM6OmhlaWdodEF0dHJTdHJpbmcs
IFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCiAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgWCwgeCkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgWSwg
eSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1lbnQs
IFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKLSAgICAg
ICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2F2ZVRvQ2FjaGUoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIHdpbGxSZXN0b3JlRnJvbUNhY2hlKCk7CiAKQEAgLTE3MSw1ICsxNjcsMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2
aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMzUy
MDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMg
WmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAg
ICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAg
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjEsOSArMjEsOSBAQAog
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJT
VkdTY3JpcHRFbGVtZW50LmgiCi0KICNpbmNsdWRlICJTVkdOYW1lcy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC03MCw2ICs3MCw0IEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6Z2V0U3Vi
cmVzb3VyY2VBdHQKIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gRU5BQkxFKFNW
RykKLQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJD
b3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdp
bGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0
LCAyMDA1LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIyLDM5ICsyMiwzMSBAQAogCiAjaWZuZGVmIFNW
R1NjcmlwdEVsZW1lbnRfaAogI2RlZmluZSBTVkdTY3JpcHRFbGVtZW50X2gKLSNpZiBFTkFCTEUo
U1ZHKQogCisjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZC5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgeworCiAg
ICAgY2xhc3MgU1ZHU2NyaXB0RWxlbWVudCA6IHB1YmxpYyBTVkdFbGVtZW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHU2NyaXB0RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHU2NyaXB0
RWxlbWVudCgpOwogCi0gICAgICAgIC8vICdTVkdTY3JpcHRFbGVtZW50JyBmdW5jdGlvbnMKICAg
ICAgICAgU3RyaW5nIHR5cGUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRUeXBlKGNvbnN0IFN0
cmluZyYpOwogCi0gICAgICAgIC8vIEludGVybmFsCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpOwotCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBnZXRTdWJyZXNvdXJjZUF0dHJpYnV0ZVN0cmluZ3MoVmVjdG9yPFN0cmluZz4mKSBj
b25zdDsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50
KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX1NUQVJUX0RFQ0xBUkFUSU9OUwotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdVUklSZWZlcmVuY2UsIFN0
cmluZywgSHJlZiwgaHJlZikKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNM
QVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLQogICAgICAgICBTdHJp
bmcgbV90eXBlOwogICAgIH07CiAKQEAgLTYyLDUgKzU0LDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR1N0b3BFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9T
VkdTdG9wRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTVkdTdG9wRWxlbWVudDo6U1ZHU3RvcEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR1N0eWxlZEVsZW1l
bnQodGFnTmFtZSwgZG9jKQotICAgICwgbV9vZmZzZXQoMC4wZikKKyAgICAsIG1fb2Zmc2V0KHRo
aXMsIFNWR05hbWVzOjpvZmZzZXRBdHRyLCAwLjBmKQogewogfQogCkBAIC00Miw4ICs0Miw2IEBA
IFNWR1N0b3BFbGVtZW50Ojp+U1ZHU3RvcEVsZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdTdG9wRWxlbWVudCwgZmxvYXQsIE9mZnNldCwgb2Zmc2V0LCBT
VkdOYW1lczo6b2Zmc2V0QXR0cikKLQogdm9pZCBTVkdTdG9wRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6Om9mZnNldEF0dHIpIHsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0b3BFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkocmV2aXNp
b24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdTdG9wRWxlbWVudCwgZmxvYXQsIE9mZnNldCwgb2Zmc2V0KQorICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU3RvcEVsZW1lbnQsIFNWR05hbWVzOjpzdG9wVGFnU3Ry
aW5nLCBTVkdOYW1lczo6b2Zmc2V0QXR0clN0cmluZywgZmxvYXQsIE9mZnNldCwgb2Zmc2V0KQog
ICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0
eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMCArNDIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgU1ZHTmFtZXM7CiAKK2NoYXIgU1ZHU3R5bGVkRWxlbWVudElk
ZW50aWZpZXJbXSA9ICJTVkdTdHlsZWRFbGVtZW50IjsKIHN0YXRpYyBIYXNoU2V0PGNvbnN0IFNW
R1N0eWxlZEVsZW1lbnQqPiogZ0VsZW1lbnRzV2l0aEluc3RhbmNlVXBkYXRlc0Jsb2NrZWQgPSAw
OwogCiBTVkdTdHlsZWRFbGVtZW50OjpTVkdTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRv
YykKKyAgICAsIG1fY2xhc3NOYW1lKHRoaXMsIEhUTUxOYW1lczo6Y2xhc3NBdHRyKQogewogfQog
CkBAIC01NCw4ICs1Niw2IEBAIFNWR1N0eWxlZEVsZW1lbnQ6On5TVkdTdHlsZWRFbGVtZW50KCkK
ICAgICBTVkdSZXNvdXJjZTo6cmVtb3ZlQ2xpZW50KHRoaXMpOwogfQogCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdTdHlsZWRFbGVtZW50LCBTdHJpbmcsIENsYXNzTmFtZSwgY2xh
c3NOYW1lLCBIVE1MTmFtZXM6OmNsYXNzQXR0cikKLQogYm9vbCBTVkdTdHlsZWRFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICAvLyBodHRwOi8vd3d3
LnczLm9yZy9UUi9TVkcvZXh0ZW5kLmh0bWwjUHJpdmF0ZURhdGEKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR1N0eWxlZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRF
bGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNSArMjQsMTUgQEAKICNkZWZpbmUgU1ZHU3R5bGVk
RWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5o
IgotI2luY2x1ZGUgIlBhdGguaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJT
VkdFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCi0jaW5jbHVkZSAiU1ZHUmVzb3Vy
Y2UuaCIKICNpbmNsdWRlICJTVkdTdHlsYWJsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
KyAgICBleHRlcm4gY2hhciBTVkdTdHlsZWRFbGVtZW50SWRlbnRpZmllcltdOworICAgIGNsYXNz
IFNWR1Jlc291cmNlOworCiAgICAgY2xhc3MgU1ZHU3R5bGVkRWxlbWVudCA6IHB1YmxpYyBTVkdF
bGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHU3R5bGFibGUg
ewogICAgIHB1YmxpYzoKQEAgLTcxLDggKzcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBzdGF0aWMgaW50IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X1NUQVJUX0RFQ0xBUkFUSU9OUwotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHU3R5bGVkRWxlbWVudCwgU3RyaW5nLCBDbGFzc05hbWUsIGNsYXNzTmFtZSkKKyAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1N0eWxlZEVsZW1lbnQsIFNWR1N0
eWxlZEVsZW1lbnRJZGVudGlmaWVyLCBIVE1MTmFtZXM6OmNsYXNzQXR0clN0cmluZywgU3RyaW5n
LCBDbGFzc05hbWUsIGNsYXNzTmFtZSkKIAogICAgICAgICB2b2lkIHVwZGF0ZUVsZW1lbnRJbnN0
YW5jZShTVkdEb2N1bWVudEV4dGVuc2lvbnMqKSBjb25zdDsKICAgICB9OwpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAkocmV2aXNpb24gMzUy
MDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDEwICszNSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NoYXIgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJZGVudGlmaWVyW10gPSAiU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQiOworCiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQodGFn
TmFtZSwgZG9jKQogICAgICwgU1ZHVHJhbnNmb3JtYWJsZSgpCi0gICAgLCBtX3RyYW5zZm9ybShT
VkdUcmFuc2Zvcm1MaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpKQorICAgICwg
bV90cmFuc2Zvcm0odGhpcywgU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsIFNWR1RyYW5zZm9ybUxp
c3Q6OmNyZWF0ZShTVkdOYW1lczo6dHJhbnNmb3JtQXR0cikpCiB7CiB9CiAKQEAgLTQ2LDggKzQ4
LDYgQEAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6On5TVkdTdHlsZQogewogfQogCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19SRUZDT1VOVEVEKFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0LCBUcmFuc2Zvcm0sIHRyYW5zZm9ybSwgU1ZH
TmFtZXM6OnRyYW5zZm9ybUF0dHIpCi0KIEFmZmluZVRyYW5zZm9ybSBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHVHJhbnNmb3Jt
YWJsZTo6Z2V0Q1RNKHRoaXMpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDEzICsyNCwxNSBA
QAogI2RlZmluZSBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudF9oCiAKICNpZiBFTkFCTEUo
U1ZHKQorI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJTVkdTdHlsZWRMb2NhdGFibGVFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKKyAgICBleHRlcm4gY2hhciBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudElkZW50
aWZpZXJbXTsKKwogICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKLSAgICBjbGFzcyBTVkdUcmFu
c2Zvcm1MaXN0OwogCiAgICAgY2xhc3MgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQgOiBw
dWJsaWMgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUcmFuc2Zvcm1hYmxlIHsKQEAgLTU5LDcgKzYx
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgcHJvdGVj
dGVkOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlNfUkVGQ09VTlRFRChT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwgU1ZHVHJhbnNmb3JtTGlzdCwgVHJhbnNmb3Jt
LCB0cmFuc2Zvcm0pCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJ
ZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFt
ZXM6OnRyYW5zZm9ybUF0dHJTdHJpbmcsIFNWR1RyYW5zZm9ybUxpc3QsIFRyYW5zZm9ybSwgdHJh
bnNmb3JtKQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gVXNlZCBieSA8YW5pbWF0ZU1vdGlv
bj4KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29y
ZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw4ICs1MSw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICAgICBwcml2YXRlOgogICAgICAgICBtdXRhYmxlIGJvb2wg
bV9pbnNpZGVSZW5kZXJTZWN0aW9uOwotCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldB
UkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAkocmV2
aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDEzICsyOSwxMiBAQAogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZS5oIgogI2lu
Y2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwogICAgIGNsYXNzIFNWR1N5bWJvbEVsZW1lbnQgOiBwdWJsaWMgU1ZH
U3R5bGVkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0xh
bmdTcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBT
VkdGaXRUb1ZpZXdCb3gKLSAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyBTVkdGaXRUb1ZpZXdCb3ggewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHU3ltYm9sRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZH
U3ltYm9sRWxlbWVudCgpOwpAQCAtNDcsMTUgKzQ2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KLSAKLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
Ym9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkgICAgICAgCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05T
KFNWR0ZpdFRvVmlld0JveCwgRmxvYXRSZWN0LCBWaWV3Qm94LCB2aWV3Qm94KQotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OU19SRUZDT1VOVEVEKFNWR0ZpdFRv
Vmlld0JveCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJl
c2VydmVBc3BlY3RSYXRpbykKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
VFJlZkVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdUUmVmRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAg
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9q
ZWN0CkBAIC0yMiwxNSArMjIsMTUgQEAKIAogI2lmbmRlZiBTVkdUUmVmRWxlbWVudF9oCiAjZGVm
aW5lIFNWR1RSZWZFbGVtZW50X2gKLSNpZiBFTkFCTEUoU1ZHKQogCisjaWYgRU5BQkxFKFNWRykK
ICNpbmNsdWRlICJTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVVJJ
UmVmZXJlbmNlLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgU1ZHVFJlZkVs
ZW1lbnQgOiBwdWJsaWMgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgcHVibGljIFNWR1VSSVJl
ZmVyZW5jZQotICAgIHsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNWR1RSZWZF
bGVtZW50IDogcHVibGljIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIFNWR1RSZWZFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAg
ICAgICB2aXJ0dWFsIH5TVkdUUmVmRWxlbWVudCgpOwpAQCAtNDQsOCArNDQsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHVVJJUmVmZXJlbmNlLCBTdHJp
bmcsIEhyZWYsIGhyZWYpCi0KICAgICAgICAgdm9pZCB1cGRhdGVSZWZlcmVuY2VkVGV4dCgpOwog
ICAgIH07CiAKQEAgLTUzLDUgKzUxLDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9z
dmcvU1ZHVFNwYW5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVFNwYW5F
bGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QK
QEAgLTIyLDI4ICsyMiwyMiBAQAogCiAjaWZuZGVmIFNWR1RTcGFuRWxlbWVudF9oCiAjZGVmaW5l
IFNWR1RTcGFuRWxlbWVudF9oCi0jaWYgRU5BQkxFKFNWRykKIAorI2lmIEVOQUJMRShTVkcpCiAj
aW5jbHVkZSAiU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oIgogCi1uYW1lc3BhY2UgV2ViQ29y
ZQotewotICAgIGNsYXNzIFNWR1RTcGFuRWxlbWVudCA6IHB1YmxpYyBTVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50Ci0gICAgeworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU1ZHVFNw
YW5FbGVtZW50IDogcHVibGljIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQgewogICAgIHB1Ymxp
YzoKICAgICAgICAgU1ZHVFNwYW5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdUU3BhbkVsZW1lbnQoKTsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKE5vZGUqKSBjb25zdDsKLSAgICAKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwg
Y29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9
CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNW
RykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUZXh0
Q29udGVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RleHRDb250
ZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTMgKzQxLDE1IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2hhciBTVkdUZXh0Q29udGVudEVsZW1lbnRJZGVudGlmaWVy
W10gPSAiU1ZHVGV4dENvbnRlbnRFbGVtZW50IjsKKwogU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpT
VkdUZXh0Q29udGVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvYykKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jKQogICAgICwgU1ZH
VGVzdHMoKQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQoKQotICAgICwgbV90ZXh0TGVuZ3RoKExlbmd0aE1vZGVPdGhlcikKLSAgICAsIG1f
bGVuZ3RoQWRqdXN0KExFTkdUSEFESlVTVF9TUEFDSU5HKQorICAgICwgbV90ZXh0TGVuZ3RoKHRo
aXMsIFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgTGVuZ3RoTW9kZU90aGVyKQorICAgICwgbV9s
ZW5ndGhBZGp1c3QodGhpcywgU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIsIExFTkdUSEFESlVT
VF9TUEFDSU5HKQogewogfQogCkBAIC01NSw5ICs1Nyw2IEBAIFNWR1RleHRDb250ZW50RWxlbWVu
dDo6flNWR1RleHRDb250ZW50RWwKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdMZW5ndGgsIFRleHRMZW5ndGgsIHRleHRMZW5n
dGgsIFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR1RleHRDb250ZW50RWxlbWVudCwgaW50LCBMZW5ndGhBZGp1c3QsIGxlbmd0aEFkanVz
dCwgU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIpCi0KIHN0YXRpYyBpbmxpbmUgZmxvYXQgY3Vt
dWxhdGl2ZUNoYXJhY3RlclJhbmdlTGVuZ3RoKGNvbnN0IFZlY3RvcjxTVkdDaGFyPjo6aXRlcmF0
b3ImIHN0YXJ0LCBjb25zdCBWZWN0b3I8U1ZHQ2hhcj46Oml0ZXJhdG9yJiBlbmQsIFNWR0lubGlu
ZVRleHRCb3gqIHRleHRCb3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgc3RhcnRPZmZzZXQsIGxvbmcgc3RhcnRQb3NpdGlvbiwgbG9uZyBs
ZW5ndGgsIGJvb2wgaXNWZXJ0aWNhbFRleHQsIGxvbmcmIGF0Q2hhcmFjdGVyKQogewpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29y
ZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDkgQEAKICNpbmNsdWRlICJTVkdUZXN0cy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAg
ICBleHRlcm4gY2hhciBTVkdUZXh0Q29udGVudEVsZW1lbnRJZGVudGlmaWVyW107CisKICAgICBj
bGFzcyBTVkdMZW5ndGg7CiAKICAgICBjbGFzcyBTVkdUZXh0Q29udGVudEVsZW1lbnQgOiBwdWJs
aWMgU1ZHU3R5bGVkRWxlbWVudCwKQEAgLTYzLDExICs2NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKIAotICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVD
TEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgcHJvdGVjdGVk
OgorICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gdGhpczsgfQogCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR0xlbmd0aCwgVGV4dExlbmd0aCwgdGV4dExl
bmd0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1RleHRDb250
ZW50RWxlbWVudCwgaW50LCBMZW5ndGhBZGp1c3QsIGxlbmd0aEFkanVzdCkKKyAgICBwcml2YXRl
OgorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dENvbnRlbnRF
bGVtZW50LCBTVkdUZXh0Q29udGVudEVsZW1lbnRJZGVudGlmaWVyLCBTVkdOYW1lczo6dGV4dExl
bmd0aEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgVGV4dExlbmd0aCwgdGV4dExlbmd0aCkKKyAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1RleHRDb250ZW50RWxlbWVudCwg
U1ZHVGV4dENvbnRlbnRFbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0
dHJTdHJpbmcsIGludCwgTGVuZ3RoQWRqdXN0LCBsZW5ndGhBZGp1c3QpCiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkocmV2aXNpb24g
MzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU1ZHVGV4dEVsZW1lbnQ6OlNW
R1RleHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2Mp
CiAgICAgOiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRvYykKICAgICAsIFNW
R1RyYW5zZm9ybWFibGUoKQotICAgICwgbV90cmFuc2Zvcm0oU1ZHVHJhbnNmb3JtTGlzdDo6Y3Jl
YXRlKFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSkKKyAgICAsIG1fdHJhbnNmb3JtKHRoaXMsIFNW
R05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBTVkdUcmFuc2Zvcm1MaXN0OjpjcmVhdGUoU1ZHTmFtZXM6
OnRyYW5zZm9ybUF0dHIpKQogewogfQogCkBAIC00Niw4ICs0Niw2IEBAIFNWR1RleHRFbGVtZW50
Ojp+U1ZHVGV4dEVsZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
U19SRUZDT1VOVEVEKFNWR1RleHRFbGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0LCBUcmFuc2Zvcm0s
IHRyYW5zZm9ybSwgU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpCi0KIHZvaWQgU1ZHVGV4dEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBp
ZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSB7CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1Rl
eHRFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTEgKzUxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZp
cnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0
aGlzOyB9Ci0KICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlNfUkVGQ09VTlRFRChTVkdUZXh0RWxlbWVudCwgU1ZHVHJhbnNmb3JtTGlzdCwgVHJhbnNm
b3JtLCB0cmFuc2Zvcm0pCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdUZXh0RWxlbWVudCwgU1ZHTmFtZXM6OnRleHRUYWdTdHJpbmcsIFNWR05hbWVzOjp0cmFuc2Zv
cm1BdHRyU3RyaW5nLCBTVkdUcmFuc2Zvcm1MaXN0LCBUcmFuc2Zvcm0sIHRyYW5zZm9ybSkKICAg
ICAgICAKICAgICAgICAvLyBVc2VkIGJ5IDxhbmltYXRlTW90aW9uPgogICAgICAgIE93blB0cjxB
ZmZpbmVUcmFuc2Zvcm0+IG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtOwpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdU
ZXh0UGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1Rl
eHRQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDkgKzM4LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogU1ZHVGV4dFBhdGhFbGVtZW50OjpTVkdUZXh0UGF0aEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR1RleHRD
b250ZW50RWxlbWVudCh0YWdOYW1lLCBkb2MpCiAgICAgLCBTVkdVUklSZWZlcmVuY2UoKQotICAg
ICwgbV9zdGFydE9mZnNldChMZW5ndGhNb2RlT3RoZXIpCi0gICAgLCBtX21ldGhvZChTVkdfVEVY
VFBBVEhfTUVUSE9EVFlQRV9BTElHTikKLSAgICAsIG1fc3BhY2luZyhTVkdfVEVYVFBBVEhfU1BB
Q0lOR1RZUEVfRVhBQ1QpCisgICAgLCBtX3N0YXJ0T2Zmc2V0KHRoaXMsIFNWR05hbWVzOjpzdGFy
dE9mZnNldEF0dHIsIExlbmd0aE1vZGVPdGhlcikKKyAgICAsIG1fbWV0aG9kKHRoaXMsIFNWR05h
bWVzOjptZXRob2RBdHRyLCBTVkdfVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTikKKyAgICAsIG1f
c3BhY2luZyh0aGlzLCBTVkdOYW1lczo6c3BhY2luZ0F0dHIsIFNWR19URVhUUEFUSF9TUEFDSU5H
VFlQRV9FWEFDVCkKIHsKIH0KIApAQCAtNDgsMTAgKzQ4LDYgQEAgU1ZHVGV4dFBhdGhFbGVtZW50
Ojp+U1ZHVGV4dFBhdGhFbGVtZW50KAogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR0xlbmd0aCwgU3RhcnRPZmZzZXQsIHN0YXJ0T2Zm
c2V0LCBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHVGV4dFBhdGhFbGVtZW50LCBpbnQsIE1ldGhvZCwgbWV0aG9kLCBTVkdOYW1lczo6
bWV0aG9kQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1RleHRQYXRoRWxl
bWVudCwgaW50LCBTcGFjaW5nLCBzcGFjaW5nLCBTVkdOYW1lczo6c3BhY2luZ0F0dHIpCi0KIHZv
aWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1
dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7Cklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsMjEgKzY1LDE3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAgICAgICAgYm9vbCBj
aGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKLSAgICAKKwogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR1VSSVJlZmVyZW5jZSwgU3RyaW5nLCBI
cmVmLCBocmVmKQotCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdU
ZXh0UGF0aEVsZW1lbnQsIFNWR0xlbmd0aCwgU3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0KQotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dFBhdGhFbGVtZW50LCBp
bnQsIE1ldGhvZCwgbWV0aG9kKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHVGV4dFBhdGhFbGVtZW50LCBpbnQsIFNwYWNpbmcsIHNwYWNpbmcpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR05hbWVz
Ojp0ZXh0UGF0aFRhZ1N0cmluZywgU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0clN0cmluZywgU1ZH
TGVuZ3RoLCBTdGFydE9mZnNldCwgc3RhcnRPZmZzZXQpCisgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR05hbWVzOjp0ZXh0UGF0aFRh
Z1N0cmluZywgU1ZHTmFtZXM6Om1ldGhvZEF0dHJTdHJpbmcsIGludCwgTWV0aG9kLCBtZXRob2Qp
CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdUZXh0UGF0aEVsZW1l
bnQsIFNWR05hbWVzOjp0ZXh0UGF0aFRhZ1N0cmluZywgU1ZHTmFtZXM6OnNwYWNpbmdBdHRyU3Ry
aW5nLCBpbnQsIFNwYWNpbmcsIHNwYWNpbmcpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAkocmV2aXNp
b24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsMTMgKzMxLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2hhciBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50SWRlbnRpZmllcltdID0gIlNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQiOworCiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2MpCiAgICAgOiBTVkdUZXh0Q29udGVudEVsZW1lbnQodGFnTmFtZSwgZG9jKQotICAgICwg
bV94KFNWR0xlbmd0aExpc3Q6OmNyZWF0ZShTVkdOYW1lczo6eEF0dHIpKQotICAgICwgbV95KFNW
R0xlbmd0aExpc3Q6OmNyZWF0ZShTVkdOYW1lczo6eUF0dHIpKQotICAgICwgbV9keChTVkdMZW5n
dGhMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OmR4QXR0cikpCi0gICAgLCBtX2R5KFNWR0xlbmd0aExp
c3Q6OmNyZWF0ZShTVkdOYW1lczo6ZHlBdHRyKSkKLSAgICAsIG1fcm90YXRlKFNWR051bWJlckxp
c3Q6OmNyZWF0ZShTVkdOYW1lczo6cm90YXRlQXR0cikpCisgICAgLCBtX3godGhpcywgU1ZHTmFt
ZXM6OnhBdHRyLCBTVkdMZW5ndGhMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OnhBdHRyKSkKKyAgICAs
IG1feSh0aGlzLCBTVkdOYW1lczo6eUF0dHIsIFNWR0xlbmd0aExpc3Q6OmNyZWF0ZShTVkdOYW1l
czo6eUF0dHIpKQorICAgICwgbV9keCh0aGlzLCBTVkdOYW1lczo6ZHhBdHRyLCBTVkdMZW5ndGhM
aXN0OjpjcmVhdGUoU1ZHTmFtZXM6OmR4QXR0cikpCisgICAgLCBtX2R5KHRoaXMsIFNWR05hbWVz
OjpkeUF0dHIsIFNWR0xlbmd0aExpc3Q6OmNyZWF0ZShTVkdOYW1lczo6ZHlBdHRyKSkKKyAgICAs
IG1fcm90YXRlKHRoaXMsIFNWR05hbWVzOjpyb3RhdGVBdHRyLCBTVkdOdW1iZXJMaXN0OjpjcmVh
dGUoU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpKQogewogfQogCkBAIC00NSwxMiArNDcsNiBAQCBTVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50Ojp+U1ZHVGV4dFBvc2l0CiB7CiB9CiAKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TX1JFRkNPVU5URUQoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwg
U1ZHTGVuZ3RoTGlzdCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyKQotQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlNfUkVGQ09VTlRFRChTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdMZW5n
dGhMaXN0LCBZLCB5LCBTVkdOYW1lczo6eUF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OU19SRUZDT1VOVEVEKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR0xlbmd0aExpc3Qs
IER4LCBkeCwgU1ZHTmFtZXM6OmR4QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
X1JFRkNPVU5URUQoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTGVuZ3RoTGlzdCwgRHks
IGR5LCBTVkdOYW1lczo6ZHlBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfUkVG
Q09VTlRFRChTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdOdW1iZXJMaXN0LCBSb3RhdGUs
IHJvdGF0ZSwgU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpCi0KIHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewog
ICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEx
ICsyNSwxMiBAQAogCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdUZXh0Q29udGVudEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdMZW5ndGhMaXN0LmgiCisjaW5jbHVkZSAiU1ZHTnVtYmVy
TGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTVkdMZW5ndGhMaXN0
OwotICAgIGNsYXNzIFNWR051bWJlckxpc3Q7CisgICAgZXh0ZXJuIGNoYXIgU1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudElkZW50aWZpZXJbXTsKIAogICAgIGNsYXNzIFNWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQgOiBwdWJsaWMgU1ZHVGV4dENvbnRlbnRFbGVtZW50IHsKICAgICBwdWJsaWM6CkBA
IC00MSwxMSArNDIsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TX1JFRkNPVU5URUQoU1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudCwgU1ZHTGVuZ3RoTGlzdCwgWCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TX1JFRkNPVU5URUQoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwg
U1ZHTGVuZ3RoTGlzdCwgWSwgeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TX1JFRkNPVU5URUQoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTGVuZ3RoTGlzdCwg
RHgsIGR4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlNfUkVGQ09VTlRF
RChTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdMZW5ndGhMaXN0LCBEeSwgZHkpCi0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OU19SRUZDT1VOVEVEKFNWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQsIFNWR051bWJlckxpc3QsIFJvdGF0ZSwgcm90YXRlKQorICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwg
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjp4QXR0clN0cmlu
ZywgU1ZHTGVuZ3RoTGlzdCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnRJZGVudGlmaWVyLCBTVkdOYW1lczo6eUF0dHJTdHJpbmcsIFNWR0xlbmd0aExpc3QsIFksIHkp
CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6
OmR4QXR0clN0cmluZywgU1ZHTGVuZ3RoTGlzdCwgRHgsIGR4KQorICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjpkeUF0dHJTdHJpbmcsIFNWR0xl
bmd0aExpc3QsIER5LCBkeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnRJZGVu
dGlmaWVyLCBTVkdOYW1lczo6cm90YXRlQXR0clN0cmluZywgU1ZHTnVtYmVyTGlzdCwgUm90YXRl
LCByb3RhdGUpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybWFibGUuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zv
cm1hYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxMyBAQAogI2lmIEVOQUJMRShT
VkcpCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTVkdMb2NhdGFibGUu
aCIKKyNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKICAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgQXRvbWljU3RyaW5n
OwogICAgIGNsYXNzIFNWR1RyYW5zZm9ybTsKLSAgICBjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0Owog
ICAgIGNsYXNzIFF1YWxpZmllZE5hbWU7CiAKICAgICBjbGFzcyBTVkdUcmFuc2Zvcm1hYmxlIDog
dmlydHVhbCBwdWJsaWMgU1ZHTG9jYXRhYmxlIHsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1VSSVJl
ZmVyZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNw
cAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMywxMyArMjMsMTIgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1
ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgogCi0jaW5jbHVkZSAiU1ZHTmFtZXMuaCIKLSNpbmNsdWRl
ICJTVkdTdHlsZWRFbGVtZW50LmgiCi0jaW5jbHVkZSAiWExpbmtOYW1lcy5oIgotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NoYXIgU1ZHVVJJUmVmZXJlbmNlSWRlbnRpZmllcltdID0gIlNWR1VS
SVJlZmVyZW5jZSI7CisKIFNWR1VSSVJlZmVyZW5jZTo6U1ZHVVJJUmVmZXJlbmNlKCkKKyAgICA6
IG1faHJlZih0aGlzLCBYTGlua05hbWVzOjpocmVmQXR0cikKIHsKIH0KIApAQCAtMzcsOCArMzYs
NiBAQCBTVkdVUklSZWZlcmVuY2U6On5TVkdVUklSZWZlcmVuY2UoKQogewogfQogCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OU19XSVRIX0NPTlRFWFQoU1ZHVVJJUmVmZXJlbmNlLCBTdHJp
bmcsIEhyZWYsIGhyZWYsIFhMaW5rTmFtZXM6OmhyZWZBdHRyKQotCiBib29sIFNWR1VSSVJlZmVy
ZW5jZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAg
IGlmIChhdHRyLT5uYW1lKCkubWF0Y2hlcyhYTGlua05hbWVzOjpocmVmQXR0cikpIHsKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR1VSSVJlZmVyZW5jZS5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1VS
SVJlZmVyZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5ICsyNSwxMSBAQAogCiAjaWYgRU5B
QkxFKFNWRykKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCisjaW5jbHVkZSAiWExpbmtOYW1lcy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBleHRlcm4gY2hhciBTVkdVUklSZWZlcmVu
Y2VJZGVudGlmaWVyW107CiAgICAgY2xhc3MgTWFwcGVkQXR0cmlidXRlOwogCiAgICAgY2xhc3Mg
U1ZHVVJJUmVmZXJlbmNlIHsKQEAgLTQwLDExICs0MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgc3RhdGljIFN0cmluZyBnZXRUYXJnZXQoY29uc3QgU3RyaW5nJiB1cmwpOwog
Ci0gICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50KCkgY29uc3QgPSAwOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TX1dJVEhfQ09OVEVYVChTVkdVUklSZWZlcmVuY2UsIFN0cmlu
ZywgSHJlZiwgaHJlZikKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R1VSSVJlZmVyZW5jZSwgU1ZHVVJJUmVmZXJlbmNlSWRlbnRpZmllciwgWExpbmtOYW1lczo6aHJl
ZkF0dHJTdHJpbmcsIFN0cmluZywgSHJlZiwgaHJlZikKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3
LDEwIEBAIFNWR1VzZUVsZW1lbnQ6OlNWR1VzZUVsZW1lbnQoY29uc3QgUXVhbGkKICAgICAsIFNW
R0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAgICAs
IFNWR1VSSVJlZmVyZW5jZSgpCi0gICAgLCBtX3goTGVuZ3RoTW9kZVdpZHRoKQotICAgICwgbV95
KExlbmd0aE1vZGVIZWlnaHQpCi0gICAgLCBtX3dpZHRoKExlbmd0aE1vZGVXaWR0aCkKLSAgICAs
IG1faGVpZ2h0KExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3godGhpcywgU1ZHTmFtZXM6OnhB
dHRyLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kodGhpcywgU1ZHTmFtZXM6OnlBdHRyLCBM
ZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV93aWR0aCh0aGlzLCBTVkdOYW1lczo6d2lkdGhBdHRy
LCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX2hlaWdodCh0aGlzLCBTVkdOYW1lczo6aGVpZ2h0
QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCkKIHsKIH0KIApAQCAtNjgsMTEgKzY4LDYgQEAgU1ZHVXNl
RWxlbWVudDo6flNWR1VzZUVsZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0cikK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCwg
WSwgeSwgU1ZHTmFtZXM6OnlBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
VXNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgs
IEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLQogU1ZHRWxlbWVudEluc3Rh
bmNlKiBTVkdVc2VFbGVtZW50OjppbnN0YW5jZVJvb3QoKSBjb25zdAogewogICAgIHJldHVybiBt
X3RhcmdldEVsZW1lbnRJbnN0YW5jZS5nZXQoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1VzZUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHJldmlz
aW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03MSwxOSArNzEsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNM
QVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLSAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcs
IEhyZWYsIGhyZWYpCi0KLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R1VzZUVsZW1lbnQsIFNWR0xlbmd0aCwgWCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCwgWSwgeSkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCwgV2lk
dGgsIHdpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVXNl
RWxlbWVudCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVzOjp1c2VUYWdTdHJpbmcs
IFNWR05hbWVzOjp4QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OnVzZVRhZ1N0
cmluZywgU1ZHTmFtZXM6OnlBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6dXNl
VGFnU3RyaW5nLCBTVkdOYW1lczo6d2lkdGhBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFdpZHRoLCB3
aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1VzZUVsZW1l
bnQsIFNWR05hbWVzOjp1c2VUYWdTdHJpbmcsIFNWR05hbWVzOjpoZWlnaHRBdHRyU3RyaW5nLCBT
VkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5k
IGNsYXNzIFNWR0VsZW1lbnQ7CiAgICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2VG
b3JTaGFkb3dUcmVlRWxlbWVudChOb2RlKiBlbGVtZW50KSBjb25zdDsKIAotICAgIHByaXZhdGU6
CiAgICAgICAgIC8vIEluc3RhbmNlIHRyZWUgaGFuZGxpbmcKICAgICAgICAgdm9pZCBidWlsZElu
c3RhbmNlVHJlZShTVkdFbGVtZW50KiB0YXJnZXQsIFNWR0VsZW1lbnRJbnN0YW5jZSogdGFyZ2V0
SW5zdGFuY2UsIGJvb2wmIGZvdW5kQ3ljbGUpOwogICAgICAgICB2b2lkIGhhbmRsZURlZXBVc2VS
ZWZlcmVuY2luZyhTVkdVc2VFbGVtZW50KiB1c2UsIFNWR0VsZW1lbnRJbnN0YW5jZSogdGFyZ2V0
SW5zdGFuY2UsIGJvb2wmIGZvdW5kQ3ljbGUpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVmlld0Vs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCShyZXZp
c2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDEwICs1MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR1N0cmluZ0xpc3Q+IG1fdmlld1RhcmdldDsKLQot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJE
X0RFQ0xBUkFUSU9OUyhTVkdGaXRUb1ZpZXdCb3gsIEZsb2F0UmVjdCwgVmlld0JveCwgdmlld0Jv
eCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlNfUkVGQ09V
TlRFRChTVkdGaXRUb1ZpZXdCb3gsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNw
ZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3Zn
L1NWR1ZpZXdTcGVjLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgdmlld1RhcmdldFN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fdmlld1RhcmdldFN0cmluZzsgfQogICAgICAgICBTVkdFbGVtZW50KiB2aWV3VGFyZ2V0
KCkgY29uc3Q7CiAKLSAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxl
bWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdDsKIAogICAgIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22343</attachid>
            <date>2008-07-17 11:22:50 -0700</date>
            <delta_ts>2019-08-07 13:48:47 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>RewriteAnimatablePropertiesRevised.diff</filename>
            <type>text/plain</type>
            <size>216929</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTIyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkyIEBACisyMDA4LTA3LTE3ICBOaWtvbGFzIFppbW1lcm1hbm4gIDx6aW1tZXJt
YW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRml4ZXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1
MQorCisgICAgICAgIFJld3JpdGUgYW5pbWF0ZWQgcHJvcGVydHkgY29uY2VwdCB3aXRob3V0IGhl
YXZ5IG1hY3JvIHVzYWdlLCByZXBsYWNlIGJ5IGEgdGVtcGxhdGlmaWVkIHNvbHV0aW9uLgorICAg
ICAgICBGZXdlciB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxzLCBubyBtb3JlIHVzYWdlIG9mIHRoZSB0
ZWFyLW9mZidzIHdpdGhpbiBpbnRlcm5hbCBjb2RlIChzeW5jaHJvbml6YXRpb24gbmVlZGVkIGl0
IGJlZm9yZS4pCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjphdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNBdHRyaWJ1dGVzKToKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6dXBkYXRl
QW5pbWF0ZWRTVkdBdHRyaWJ1dGUpOiBUYWtlIGNvbnN0IFN0cmluZyYsIG5vdCBTdHJpbmdJbXBs
Ki4KKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QUVsZW1lbnQ6OlNWR0FFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkUHJvcGVydHkuaDogQWRkZWQuCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcik6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xlRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpTVkdDaXJjbGVFbGVt
ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdDbGlwUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVt
ZW50OjpTVkdDbGlwUGF0aEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnQ6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KToKKyAgICAgICAgKiBzdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
Q3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50OjpT
VkdDdXJzb3JFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQ3Vyc29yRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdEZWZzRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRGVmc0Vs
ZW1lbnQ6OmNvbnRleHRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojp1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZSk6
CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1l
bnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjppbnZva2VTVkdQcm9wZXJ0eVN5bmNocm9uaXplcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bGVtZW50OjppbnZva2VBbGxTVkdQcm9wZXJ0eVN5bmNocm9uaXplcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRWxlbWVudDo6YWRkU1ZHUHJvcGVydHlTeW5jaHJvbml6ZXIpOgorICAgICAgICAq
IHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNl
RWxlbWVudDo6U1ZHRWxsaXBzZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdFbGxpcHNlRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OlNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQpOgorICAgICAgICAqIHN2Zy9TVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmg6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpTVkdGRUJsZW5kRWxlbWVudCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50OjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50
OjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OlNWR0ZF
Q29tcG9zaXRlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6U1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRmxvb2RFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQ6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCk6CisgICAgICAgICogc3Zn
L1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6U1ZHRkVJbWFn
ZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0
RWxlbWVudDo6U1ZHRkVMaWdodEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OmNvbnRleHRFbGVt
ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VO
b2RlRWxlbWVudDo6U1ZHRkVNZXJnZU5vZGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVN
ZXJnZU5vZGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OlNWR0ZFT2Zmc2V0RWxlbWVu
dCk6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQpOgor
ICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxl
bWVudDo6U1ZHRkVUaWxlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KToK
KyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGaWx0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6
OlNWR0ZpbHRlckVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OlNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAqIHN2Zy9TVkdGaXRU
b1ZpZXdCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRml0VG9WaWV3Qm94OjpTVkdGaXRU
b1ZpZXdCb3gpOgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guaDoKKyAgICAgICAgKiBz
dmcvU1ZHRm9udEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRFbGVtZW50Ojpjb250
ZXh0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0dFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR0dyYWRp
ZW50RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50Ojpjb250ZXh0RWxlbWVudCk6CisgICAgICAg
ICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVs
ZW1lbnQ6OlNWR0ltYWdlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMaW5lRWxlbWVudDo6U1ZHTGluZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdN
YXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01h
cmtlckVsZW1lbnQ6OmNhbnZhc1Jlc291cmNlKToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdNYXNrRWxlbWVudDo6U1ZHTWFza0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdN
YXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6U1ZHUGF0aEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBz
dmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRlcm5FbGVtZW50
KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdHRlcm5FbGVtZW50Ojpjb250ZXh0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1Bv
bHlFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwOgor
ICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQp
OgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHUmVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6
OlNWR1JlY3RFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVt
ZW50OjpTVkdTVkdFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6U1ZHU3RvcEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9T
VkdTdG9wRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OlNWR1N0eWxlZEVsZW1lbnQpOgorICAg
ICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCk6CisgICAgICAg
ICogc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1N3aXRjaEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3ltYm9sRWxlbWVudDo6Y29udGV4dEVsZW1lbnQpOgorICAgICAg
ICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHVGV4dENvbnRlbnRFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXh0Q29udGVudEVsZW1lbnQ6OmNvbnRleHRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
VGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dEVsZW1lbnQ6OlNWR1Rl
eHRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRo
RWxlbWVudDo6U1ZHVGV4dFBhdGhFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6U1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtYWJsZS5oOgorICAgICAgICAqIHN2Zy9TVkdV
UklSZWZlcmVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVVJJUmVmZXJlbmNlOjpTVkdV
UklSZWZlcmVuY2UpOgorICAgICAgICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuaDoKKyAgICAgICAg
KiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50
OjpTVkdVc2VFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdWaWV3U3BlYy5oOgor
CiAyMDA4LTA3LTE2ICBKb24gSG9uZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTjogQ2FuJ3QgY3JlYXRlIHdpbmRvd2xlc3MgcGx1Zy1pbiB3aXRoIEZs
YXNoIDkKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNyArMjAwLDcgQEAgTmFtZWRBdHRyTWFwKiBF
bGVtZW50OjphdHRyaWJ1dGVzKGJvb2wgcgogCiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAoIW1f
YXJlU1ZHQXR0cmlidXRlc1ZhbGlkKQotICAgICAgICB1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0
ZSgwKTsKKyAgICAgICAgdXBkYXRlQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoU3RyaW5nKCkpOwogI2Vu
ZGlmCiAKICAgICBpZiAoIXJlYWRvbmx5ICYmICFuYW1lZEF0dHJNYXApCkBAIC0yMzAsNyArMjMw
LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50OjpnZXRBdHRyaWJ1dAogCiAjaWYgRU5B
QkxFKFNWRykKICAgICBpZiAoIW1fYXJlU1ZHQXR0cmlidXRlc1ZhbGlkKQotICAgICAgICB1cGRh
dGVBbmltYXRlZFNWR0F0dHJpYnV0ZShuYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAg
IHVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRlKG5hbWUubG9jYWxOYW1lKCkpOwogI2VuZGlmCiAK
ICAgICBpZiAobmFtZWRBdHRyTWFwKQpAQCAtNDg1LDcgKzQ4NSw3IEBAIGNvbnN0IEF0b21pY1N0
cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXQKIAogI2lmIEVOQUJMRShTVkcpCiAgICAgaWYgKCFt
X2FyZVNWR0F0dHJpYnV0ZXNWYWxpZCkKLSAgICAgICAgdXBkYXRlQW5pbWF0ZWRTVkdBdHRyaWJ1
dGUobmFtZS5pbXBsKCkpOworICAgICAgICB1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZShuYW1l
KTsKICNlbmRpZgogCiAgICAgaWYgKG5hbWVkQXR0ck1hcCkKQEAgLTYwMCw3ICs2MDAsNyBAQCBi
b29sIEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZXMoKSBjb25zdAogCiAjaWYgRU5BQkxFKFNWRykKICAg
ICBpZiAoIW1fYXJlU1ZHQXR0cmlidXRlc1ZhbGlkKQotICAgICAgICB1cGRhdGVBbmltYXRlZFNW
R0F0dHJpYnV0ZSgwKTsKKyAgICAgICAgdXBkYXRlQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoU3RyaW5n
KCkpOwogI2VuZGlmCiAKICAgICByZXR1cm4gbmFtZWRBdHRyTWFwICYmIG5hbWVkQXR0ck1hcC0+
bGVuZ3RoKCkgPiAwOwpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL2RvbS9F
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw3ICsyMDcsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVTdHlsZUF0dHJpYnV0ZSgpIGNvbnN0IHt9CiAKICNpZiBFTkFC
TEUoU1ZHKQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZShTdHJp
bmdJbXBsKiBuYW1lKSBjb25zdCB7fQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRlZFNW
R0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmKSBjb25zdCB7fQogI2VuZGlmCiAKICAgICB2b2lkIHVw
ZGF0ZUZvY3VzQXBwZWFyYW5jZVNvb25BZnRlckF0dGFjaCgpOwpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHQUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNw
cAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgU1ZHQUVsZW1lbnQ6OlNWR0FFbGVtZW50KGNvbnN0
IFF1YWxpZmllZAogICAgICwgU1ZHVGVzdHMoKQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAs
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQorICAgICwgbV90YXJnZXQodGhpcywgU1ZH
TmFtZXM6OnRhcmdldEF0dHIpCiB7CiB9CiAKQEAgLTY1LDggKzY2LDYgQEAgU3RyaW5nIFNWR0FF
bGVtZW50Ojp0aXRsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShYTGlua05hbWVz
Ojp0aXRsZUF0dHIpOwogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdBRWxl
bWVudCwgU3RyaW5nLCBUYXJnZXQsIHRhcmdldCwgU1ZHTmFtZXM6OnRhcmdldEF0dHIpCi0KIHZv
aWQgU1ZHQUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0
cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp0YXJnZXRBdHRyKQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdBRWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0FFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDEwICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR1VSSVJlZmVyZW5jZSwgU3RyaW5nLCBIcmVmLCBo
cmVmKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdBRWxlbWVudCwgU3RyaW5nLCBUYXJnZXQsIHRhcmdldCkKKyAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0FFbGVtZW50LCBTVkdOYW1lczo6
YVRhZ1N0cmluZywgU1ZHTmFtZXM6OnRhcmdldEF0dHJTdHJpbmcsIFN0cmluZywgVGFyZ2V0LCB0
YXJnZXQpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQWx0
R2x5cGhFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHQWx0R2x5
cGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAgQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIENvbXB1
dGVyLCBJbmMuCiAKQEAgLTIxLDE4ICsyMSwxOCBAQAogCiAjaWZuZGVmIFNWR0FsdEdseXBoRWxl
bWVudF9oCiAjZGVmaW5lIFNWR0FsdEdseXBoRWxlbWVudF9oCi0jaWYgRU5BQkxFKFNWR19GT05U
UykKIAorI2lmIEVOQUJMRShTVkdfRk9OVFMpCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAj
aW5jbHVkZSAiU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1VSSVJl
ZmVyZW5jZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgewor
CiAgICAgY2xhc3MgU1ZHR2x5cGhFbGVtZW50OwogCi0gICAgY2xhc3MgU1ZHQWx0R2x5cGhFbGVt
ZW50IDogcHVibGljIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIHB1YmxpYyBTVkdVUklSZWZl
cmVuY2UKLSAgICB7CisgICAgY2xhc3MgU1ZHQWx0R2x5cGhFbGVtZW50IDogcHVibGljIFNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIFNWR1VSSVJlZmVyZW5jZSB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdBbHRHbHlwaEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwg
flNWR0FsdEdseXBoRWxlbWVudCgpOwpAQCAtNTUsNSArNTUsMyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0Cklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2MCBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI2lmbmRlZiBTVkdBbmltYXRlZFByb3BlcnR5X2gKKyNkZWZpbmUgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eV9oCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR0FuaW1h
dGVkVGVtcGxhdGUuaCIKKyNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCIKKyNpbmNs
dWRlICJTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRU
eXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+Cisg
ICAgY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93
bmVyVHlwZSwgdHlwZW5hbWUgT3duZXJFbGVtZW50LCB0eXBlbmFtZSBBbmltYXRlZFR5cGUsIHR5
cGVuYW1lIERlY29yYXRlZFR5cGUsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFBy
b3BlcnR5TmFtZT4KKyAgICBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZiA6IHB1Ymxp
YyBTVkdBbmltYXRlZFRlbXBsYXRlPERlY29yYXRlZFR5cGU+IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8T3duZXJUeXBlLCBPd25lckVs
ZW1lbnQsIEFuaW1hdGVkVHlwZSwgRGVjb3JhdGVkVHlwZSwgVGFnTmFtZSwgUHJvcGVydHlOYW1l
PiBTZWxmOworICAgICAgICB0eXBlZGVmIFNWR0FuaW1hdGVkUHJvcGVydHk8T3duZXJUeXBlLCBB
bmltYXRlZFR5cGUsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT4gQ3JlYXRvcjsKKworICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTZWxmPiBjcmVhdGUoY29uc3QgQ3JlYXRvciYgY3JlYXRvciwgY29u
c3QgT3duZXJFbGVtZW50KiBvd25lciwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWxmKGNyZWF0
b3IsIG93bmVyLCBhdHRyaWJ1dGVOYW1lKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFs
IERlY29yYXRlZFR5cGUgYmFzZVZhbCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0
QmFzZVZhbChEZWNvcmF0ZWRUeXBlKTsKKworICAgICAgICB2aXJ0dWFsIERlY29yYXRlZFR5cGUg
YW5pbVZhbCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbVZhbChEZWNvcmF0
ZWRUeXBlKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFy
T2ZmKGNvbnN0IENyZWF0b3ImLCBjb25zdCBPd25lckVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKTsKKworICAgICAgICBDcmVhdG9yJiBtX2NyZWF0b3I7CisgICAg
ICAgIFJlZlB0cjxPd25lckVsZW1lbnQ+IG1fb3duZXJFbGVtZW50OworICAgIH07CisKKyAgICAv
LyBIZWxwZXIgdGVtcGxhdGVzIG1hcHBpbmcgb3duZXIgdHlwZXMgdG8gb3duZXIgZWxlbWVudHMg
KGZvciBTVkcqRWxlbWVudCBPd25lclR5cGUgaXMgZXF1YWwgdG8gT3duZXJFbGVtZW50LCBmb3Ig
bm9uLVNWRypFbGVtZW50IGRlcml2ZWQgdHlwZXMsIHRoZXkncmUgZGlmZmVyZW50KQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgYm9vbCBpc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudD4K
KyAgICBzdHJ1Y3QgR2V0T3duZXJFbGVtZW50Rm9yVHlwZTsKKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE93bmVyVHlwZT4KKyAgICBzdHJ1Y3QgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ7CisKKyAg
ICAvLyBIZWxwZXIgdGVtcGxhdGUgdXNlZCBmb3Igc3luY2hyb25pemluZyBTVkcgPC0+IFhNTCBw
cm9wZXJ0aWVzCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJFbGVtZW50LCB0eXBlbmFtZSBE
ZWNvcmF0ZWRUeXBlPgorICAgIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBPd25lckVs
ZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
RGVjb3JhdGVkVHlwZSBiYXNlVmFsdWUpOworCisgICAgLy8gQWJzdHJhY3QgYmFzZSBjbGFzcwor
ICAgIGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHlCYXNlIDogTm9uY29weWFibGUgeworICAgIHB1
YmxpYzoKKyAgICAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2UoKSB7IH0KKyAg
ICAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplKCkgY29uc3QgPSAwOworICAgIH07CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFy
ZywgY29uc3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgorICAgIGNs
YXNzIFNWR0FuaW1hdGVkUHJvcGVydHkgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2Ug
eworICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBPd25lclR5cGVBcmcgT3duZXJUeXBlOwor
ICAgICAgICB0eXBlZGVmIEFuaW1hdGVkVHlwZUFyZyBBbmltYXRlZFR5cGU7CisKKyAgICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBTVkdBbmltYXRlZFR5cGVWYWx1ZTxBbmltYXRlZFR5cGU+OjpTdG9y
YWJsZVR5cGUgU3RvcmFibGVUeXBlOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFNWR0FuaW1h
dGVkVHlwZVZhbHVlPEFuaW1hdGVkVHlwZT46OkRlY29yYXRlZFR5cGUgRGVjb3JhdGVkVHlwZTsK
KworICAgICAgICB0eXBlZGVmIEdldE93bmVyRWxlbWVudEZvclR5cGU8T3duZXJUeXBlLCBJc0Rl
cml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT4gT3duZXJFbGVtZW50Rm9yVHlw
ZTsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBPd25lckVsZW1lbnRGb3JUeXBlOjpPd25lckVs
ZW1lbnQgT3duZXJFbGVtZW50OworICAgICAgICB0eXBlZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlU
ZWFyT2ZmPE93bmVyVHlwZSwgT3duZXJFbGVtZW50LCBBbmltYXRlZFR5cGUsIERlY29yYXRlZFR5
cGUsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT4gVGVhck9mZjsKKworICAgICAgICAvLyBhdHRyaWJ1
dGVOYW1lICYgYXR0cmlidXRlSWRlbnRpZmllciBtYXkgZGlmZmVyLiBGb3IgU1ZHTWFya2VyRWxl
bWVudCwgdGhlcmUgYXJlIHR3byBleHBvc2VkIFNWRyBhbmltYXRhYmxlCisgICAgICAgIC8vIHBy
b3BlcnRpZXM6IG9yaWVudFR5cGUgJiBvcmllbnRBbmdsZSwgdGhvdWdoIG9ubHkgb25lIERPTSBh
dHRyaWJ1dGUgIm9yaWVudCIsIGhhbmRsZSB0aGVzZSBjYXNlcyEKKyAgICAgICAgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eShjb25zdCBPd25lclR5cGUqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKTsKKyAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBPd25lclR5cGUqLCBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0
dHJpYnV0ZUlkZW50aWZpZXIpOworCisgICAgICAgIC8vICJGb3J3YXJkaW5nIGNvbnN0cnVjdG9y
cyIgZm9yIHByaW1pdGl2ZSB0eXBlIGFzc2lnbm1lbnQgd2l0aCBtb3JlIHRoYW4gb25lIGFyZ3Vt
ZW50CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxPgorICAgICAgICBTVkdBbmltYXRlZFBy
b3BlcnR5KGNvbnN0IE93bmVyVHlwZSosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmKTsKKworICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUMT4KKyAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBP
d25lclR5cGUqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGF0dHJpYnV0ZUlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVDEmKTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDI+CisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHkoY29uc3QgT3duZXJUeXBlKiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUMSYsIGNvbnN0IFQyJik7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyPgorICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5KGNvbnN0IE93bmVyVHlw
ZSosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlSWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUMSYsIGNvbnN0IFQyJik7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMz4KKyAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBP
d25lclR5cGUqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiwgY29uc3QgVDImLCBjb25zdCBUMyYpOworICAg
IAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQz
PgorICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5KGNvbnN0IE93bmVyVHlwZSosIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRl
SWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYsIGNvbnN0
IFQyJiwgY29uc3QgVDMmKTsKKworICAgICAgICBEZWNvcmF0ZWRUeXBlIHZhbHVlKCkgY29uc3Q7
CisgICAgICAgIHZvaWQgc2V0VmFsdWUoRGVjb3JhdGVkVHlwZSk7CisKKyAgICAgICAgRGVjb3Jh
dGVkVHlwZSBiYXNlVmFsdWUoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRCYXNlVmFsdWUoRGVj
b3JhdGVkVHlwZSk7CisKKyAgICAgICAgLy8gVGVhciBvZmZzIG9ubHkgdXNlZCBieSBiaW5kaW5n
cywgbmV2ZXIgaW4gaW50ZXJuYWwgY29kZQorICAgICAgICBQYXNzUmVmUHRyPFRlYXJPZmY+IGFu
aW1hdGVkVGVhck9mZigpIGNvbnN0OworCisgICAgICAgIHZvaWQgc3luY2hyb25pemUoKSBjb25z
dDsKKworICAgICAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uKCkgY29uc3Q7CisgICAgICAgIHZvaWQg
c3RvcEFuaW1hdGlvbigpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgY29uc3QgT3duZXJFbGVt
ZW50KiBvd25lckVsZW1lbnQoKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIC8vIFdl
J3JlIGEgbWVtYmVyIHZhcmlhYmxlIG9uIHN0YWNrLCBsaXZpbmcgaW4gT3duZXJUeXBlLCBOTyBu
ZWVkIHRvIHJlZiBoZXJlLgorICAgICAgICBjb25zdCBPd25lclR5cGUqIG1fb3duZXJUeXBlOwor
CisgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG1fYXR0cmlidXRlTmFtZTsKKyAgICAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBtX2F0dHJpYnV0ZUlkZW50aWZpZXI7CisKKyAgICAgICAgbXV0
YWJsZSBTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyPFN0b3JhYmxlVHlwZT4gbV92YWx1ZTsKKyAg
ICB9OworCisgICAgLy8gU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYgaW1wbGVtZW50YXRpb24K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGUsIHR5cGVuYW1lIE93bmVyRWxlbWVudCwg
dHlwZW5hbWUgQW5pbWF0ZWRUeXBlLCB0eXBlbmFtZSBEZWNvcmF0ZWRUeXBlLCBjb25zdCBjaGFy
KiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CisgICAgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVRlYXJPZmY8T3duZXJUeXBlLCBPd25lckVsZW1lbnQsIEFuaW1hdGVkVHlwZSwgRGVjb3Jh
dGVkVHlwZSwgVGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJP
ZmYoY29uc3QgQ3JlYXRvciYgY3JlYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBP
d25lckVsZW1lbnQqIG93bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgICAgIDogU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxEZWNv
cmF0ZWRUeXBlPihhdHRyaWJ1dGVOYW1lKQorICAgICAgICAsIG1fY3JlYXRvcihjb25zdF9jYXN0
PENyZWF0b3ImPihjcmVhdG9yKSkKKyAgICAgICAgLCBtX293bmVyRWxlbWVudChjb25zdF9jYXN0
PE93bmVyRWxlbWVudCo+KG93bmVyKSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX293bmVyRWxl
bWVudCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlLCB0eXBlbmFt
ZSBPd25lckVsZW1lbnQsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZSwgdHlwZW5hbWUgRGVjb3JhdGVk
VHlwZSwgY29uc3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgorICAg
IERlY29yYXRlZFR5cGUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8T3duZXJUeXBlLCBPd25l
ckVsZW1lbnQsIEFuaW1hdGVkVHlwZSwgRGVjb3JhdGVkVHlwZSwgVGFnTmFtZSwgUHJvcGVydHlO
YW1lPjo6YmFzZVZhbCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jcmVhdG9yLmJh
c2VWYWx1ZSgpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlw
ZW5hbWUgT3duZXJFbGVtZW50LCB0eXBlbmFtZSBBbmltYXRlZFR5cGUsIHR5cGVuYW1lIERlY29y
YXRlZFR5cGUsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFtZT4K
KyAgICB2b2lkIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPE93bmVyVHlwZSwgT3duZXJFbGVt
ZW50LCBBbmltYXRlZFR5cGUsIERlY29yYXRlZFR5cGUsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46
OnNldEJhc2VWYWwoRGVjb3JhdGVkVHlwZSBuZXdCYXNlVmFsKQorICAgIHsKKyAgICAgICAgbV9j
cmVhdG9yLnNldEJhc2VWYWx1ZShuZXdCYXNlVmFsKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPd25lclR5cGUsIHR5cGVuYW1lIE93bmVyRWxlbWVudCwgdHlwZW5hbWUgQW5pbWF0
ZWRUeXBlLCB0eXBlbmFtZSBEZWNvcmF0ZWRUeXBlLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25z
dCBjaGFyKiBQcm9wZXJ0eU5hbWU+CisgICAgRGVjb3JhdGVkVHlwZSBTVkdBbmltYXRlZFByb3Bl
cnR5VGVhck9mZjxPd25lclR5cGUsIE93bmVyRWxlbWVudCwgQW5pbWF0ZWRUeXBlLCBEZWNvcmF0
ZWRUeXBlLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjphbmltVmFsKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2NyZWF0b3IudmFsdWUoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPd25lclR5cGUsIHR5cGVuYW1lIE93bmVyRWxlbWVudCwgdHlwZW5hbWUgQW5pbWF0
ZWRUeXBlLCB0eXBlbmFtZSBEZWNvcmF0ZWRUeXBlLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25z
dCBjaGFyKiBQcm9wZXJ0eU5hbWU+CisgICAgdm9pZCBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9m
ZjxPd25lclR5cGUsIE93bmVyRWxlbWVudCwgQW5pbWF0ZWRUeXBlLCBEZWNvcmF0ZWRUeXBlLCBU
YWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpzZXRBbmltVmFsKERlY29yYXRlZFR5cGUgbmV3QW5pbVZh
bCkKKyAgICB7CisgICAgICAgIG1fY3JlYXRvci5zZXRWYWx1ZShuZXdBbmltVmFsKTsKKyAgICB9
CisKKyAgICAvLyBTVkdBbmltYXRlZFByb3BlcnR5IGltcGxlbWVudGF0aW9uCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3duZXJUeXBlQXJnLCB0eXBlbmFtZSBBbmltYXRlZFR5cGVBcmcsIGNvbnN0
IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFtZT4KKyAgICBTVkdBbmltYXRl
ZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0
eU5hbWU+OjpTVkdBbmltYXRlZFByb3BlcnR5KGNvbnN0IE93bmVyVHlwZSogb3duZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKQorICAgICAgICA6IG1fb3duZXJUeXBlKG93bmVyKQorICAgICAgICAs
IG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQorICAgICAgICAsIG1fYXR0cmlidXRlSWRl
bnRpZmllcihhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKQorICAgICAgICAsIG1fdmFsdWUoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fb3duZXJUeXBlKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3Qg
Y2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgorICAgIFNWR0FuaW1hdGVk
UHJvcGVydHk8T3duZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5
TmFtZT46OlNWR0FuaW1hdGVkUHJvcGVydHkoY29uc3QgT3duZXJUeXBlKiBvd25lciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZUlkZW50aWZpZXIpCisgICAgICAgIDogbV9v
d25lclR5cGUob3duZXIpCisgICAgICAgICwgbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUp
CisgICAgICAgICwgbV9hdHRyaWJ1dGVJZGVudGlmaWVyKGF0dHJpYnV0ZUlkZW50aWZpZXIpCisg
ICAgICAgICwgbV92YWx1ZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9vd25lclR5cGUpOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5p
bWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5h
bWU+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVDE+CisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxP
d25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6U1ZH
QW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBPd25lclR5cGUqIG93bmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQx
JiBhcmcxKQorICAgICAgICA6IG1fb3duZXJUeXBlKG93bmVyKQorICAgICAgICAsIG1fYXR0cmli
dXRlTmFtZShhdHRyaWJ1dGVOYW1lKQorICAgICAgICAsIG1fYXR0cmlidXRlSWRlbnRpZmllcihh
dHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKQorICAgICAgICAsIG1fdmFsdWUoYXJnMSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX293bmVyVHlwZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3duZXJUeXBlQXJnLCB0eXBlbmFtZSBBbmltYXRlZFR5cGVBcmcsIGNvbnN0IGNoYXIq
IFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFtZT4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUMT4KKyAgICBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBl
QXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpTVkdBbmltYXRlZFByb3BlcnR5KGNvbnN0IE93
bmVyVHlwZSogb3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVJZGVu
dGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VDEmIGFyZzEpCisgICAgICAgIDogbV9vd25lclR5cGUob3duZXIpCisgICAgICAgICwgbV9hdHRy
aWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCisgICAgICAgICwgbV9hdHRyaWJ1dGVJZGVudGlmaWVy
KGF0dHJpYnV0ZUlkZW50aWZpZXIpCisgICAgICAgICwgbV92YWx1ZShhcmcxKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fb3duZXJUeXBlKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFn
TmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMj4KKyAgICBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5p
bWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpTVkdBbmltYXRlZFByb3BlcnR5
KGNvbnN0IE93bmVyVHlwZSogb3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGFyZzEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgYXJnMikKKyAgICAg
ICAgOiBtX293bmVyVHlwZShvd25lcikKKyAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWUoYXR0cmli
dXRlTmFtZSkKKyAgICAgICAgLCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIoYXR0cmlidXRlTmFtZS5s
b2NhbE5hbWUoKSkKKyAgICAgICAgLCBtX3ZhbHVlKGFyZzEsIGFyZzIpCisgICAgeworICAgICAg
ICBBU1NFUlQobV9vd25lclR5cGUpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93
bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1l
LCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyPgorICAgIFNWR0FuaW1hdGVkUHJvcGVydHk8T3duZXJUeXBlQXJnLCBBbmltYXRl
ZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46OlNWR0FuaW1hdGVkUHJvcGVydHkoY29u
c3QgT3duZXJUeXBlKiBvd25lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0
ZUlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUMSYgYXJnMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFQyJiBhcmcyKQorICAgICAgICA6IG1fb3duZXJUeXBlKG93bmVyKQorICAgICAgICAs
IG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQorICAgICAgICAsIG1fYXR0cmlidXRlSWRl
bnRpZmllcihhdHRyaWJ1dGVJZGVudGlmaWVyKQorICAgICAgICAsIG1fdmFsdWUoYXJnMSwgYXJn
MikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX293bmVyVHlwZSk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlQXJnLCB0eXBlbmFtZSBBbmltYXRlZFR5cGVBcmcsIGNv
bnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFtZT4KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgorICAgIFNWR0FuaW1hdGVk
UHJvcGVydHk8T3duZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5
TmFtZT46OlNWR0FuaW1hdGVkUHJvcGVydHkoY29uc3QgT3duZXJUeXBlKiBvd25lciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUMSYgYXJnMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFQyJiBhcmcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVDMmIGFyZzMpCisgICAgICAgIDogbV9vd25lclR5cGUob3duZXIpCisgICAg
ICAgICwgbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCisgICAgICAgICwgbV9hdHRyaWJ1
dGVJZGVudGlmaWVyKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpCisgICAgICAgICwgbV92YWx1
ZShhcmcxLCBhcmcyLCBhcmczKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fb3duZXJUeXBlKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFu
aW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlO
YW1lPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+
CisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywg
VGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBPd25lclR5
cGUqIG93bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlSWRlbnRpZmll
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiBh
cmcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDIm
IGFyZzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
MyYgYXJnMykKKyAgICAgICAgOiBtX293bmVyVHlwZShvd25lcikKKyAgICAgICAgLCBtX2F0dHJp
YnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKKyAgICAgICAgLCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIo
YXR0cmlidXRlSWRlbnRpZmllcikKKyAgICAgICAgLCBtX3ZhbHVlKGFyZzEsIGFyZzIsIGFyZzMp
CisgICAgeworICAgICAgICBBU1NFUlQobV9vd25lclR5cGUpOworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25z
dCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CisgICAgdHlwZW5hbWUg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFt
ZSwgUHJvcGVydHlOYW1lPjo6RGVjb3JhdGVkVHlwZQorICAgIFNWR0FuaW1hdGVkUHJvcGVydHk8
T3duZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46OnZh
bHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ZhbHVlOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJn
LCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CisgICAgdm9p
ZCBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdO
YW1lLCBQcm9wZXJ0eU5hbWU+OjpzZXRWYWx1ZSh0eXBlbmFtZSBTVkdBbmltYXRlZFByb3BlcnR5
OjpEZWNvcmF0ZWRUeXBlIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgbV92YWx1ZSA9IG5ld1Zh
bHVlOworICAgICAgICBvd25lckVsZW1lbnQoKS0+c2V0U3luY2hyb25pemVkU1ZHQXR0cmlidXRl
cyhmYWxzZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlQXJnLCB0
eXBlbmFtZSBBbmltYXRlZFR5cGVBcmcsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIq
IFByb3BlcnR5TmFtZT4KKyAgICB0eXBlbmFtZSBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlw
ZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpEZWNvcmF0ZWRU
eXBlCisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFy
ZywgVGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6YmFzZVZhbHVlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGNvbnN0IE93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0gdGhpcy0+b3duZXJFbGVtZW50
KCk7CisgICAgICAgIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogZXh0ZW5zaW9ucyA9IChvd25lckVs
ZW1lbnQtPmRvY3VtZW50KCkgPyBvd25lckVsZW1lbnQtPmRvY3VtZW50KCktPmFjY2Vzc1NWR0V4
dGVuc2lvbnMoKSA6IDApOworICAgICAgICBpZiAoZXh0ZW5zaW9ucyAmJiBleHRlbnNpb25zLT5o
YXNCYXNlVmFsdWU8RGVjb3JhdGVkVHlwZT4ob3duZXJFbGVtZW50LCBtX2F0dHJpYnV0ZUlkZW50
aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnMtPmJhc2VWYWx1ZTxEZWNvcmF0
ZWRUeXBlPihvd25lckVsZW1lbnQsIG1fYXR0cmlidXRlSWRlbnRpZmllcik7CisKKyAgICAgICAg
cmV0dXJuIG1fdmFsdWU7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBl
QXJnLCB0eXBlbmFtZSBBbmltYXRlZFR5cGVBcmcsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0
IGNoYXIqIFByb3BlcnR5TmFtZT4KKyAgICB2b2lkIFNWR0FuaW1hdGVkUHJvcGVydHk8T3duZXJU
eXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46OnNldEJhc2VW
YWx1ZSh0eXBlbmFtZSBTVkdBbmltYXRlZFByb3BlcnR5OjpEZWNvcmF0ZWRUeXBlIG5ld1ZhbHVl
KQorICAgIHsKKyAgICAgICAgY29uc3QgT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSB0aGlz
LT5vd25lckVsZW1lbnQoKTsKKyAgICAgICAgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBleHRlbnNp
b25zID0gKG93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKSA/IG93bmVyRWxlbWVudC0+ZG9jdW1lbnQo
KS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpIDogMCk7CisgICAgICAgIGlmIChleHRlbnNpb25zICYm
IGV4dGVuc2lvbnMtPmhhc0Jhc2VWYWx1ZTxEZWNvcmF0ZWRUeXBlPihvd25lckVsZW1lbnQsIG1f
YXR0cmlidXRlSWRlbnRpZmllcikpIHsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMtPnNldEJhc2VW
YWx1ZTxEZWNvcmF0ZWRUeXBlPihvd25lckVsZW1lbnQsIG1fYXR0cmlidXRlSWRlbnRpZmllciwg
bmV3VmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8g
T25seSB1cGRhdGUgc3RvcmVkIHByb3BlcnR5LCBpZiBub3QgYW5pbWF0aW5nCisgICAgICAgIG1f
dmFsdWUgPSBuZXdWYWx1ZTsKKyAgICAgICAgb3duZXJFbGVtZW50LT5zZXRTeW5jaHJvbml6ZWRT
VkdBdHRyaWJ1dGVzKGZhbHNlKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25l
clR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFnTmFtZSwg
Y29uc3QgY2hhciogUHJvcGVydHlOYW1lPgorICAgIFBhc3NSZWZQdHI8dHlwZW5hbWUgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwgUHJv
cGVydHlOYW1lPjo6VGVhck9mZj4KKyAgICBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFy
ZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjphbmltYXRlZFRlYXJP
ZmYoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxP
d25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwgUHJvcGVydHlOYW1lLCBUZWFy
T2ZmLCBPd25lckVsZW1lbnQ+KCp0aGlzLCBvd25lckVsZW1lbnQoKSwgbV9hdHRyaWJ1dGVOYW1l
LCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdO
YW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CisgICAgdm9pZCBTVkdBbmltYXRlZFByb3Bl
cnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+
OjpzeW5jaHJvbml6ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fdmFsdWUubmVlZHNT
eW5jaHJvbml6YXRpb24oKSkgCisgICAgICAgICAgICByZXR1cm47IAorCisgICAgICAgIHN5bmNo
cm9uaXplUHJvcGVydHk8T3duZXJFbGVtZW50LCBEZWNvcmF0ZWRUeXBlPihvd25lckVsZW1lbnQo
KSwgbV9hdHRyaWJ1dGVOYW1lLCBiYXNlVmFsdWUoKSk7CisgICAgICAgIG1fdmFsdWUuc2V0U3lu
Y2hyb25pemVkKCk7IAorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFy
ZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBj
aGFyKiBQcm9wZXJ0eU5hbWU+CisgICAgdm9pZCBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlw
ZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpzdGFydEFuaW1h
dGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBjb25zdCBPd25lckVsZW1lbnQqIG93bmVyRWxl
bWVudCA9IHRoaXMtPm93bmVyRWxlbWVudCgpOworICAgICAgICBTVkdEb2N1bWVudEV4dGVuc2lv
bnMqIGV4dGVuc2lvbnMgPSAob3duZXJFbGVtZW50LT5kb2N1bWVudCgpID8gb3duZXJFbGVtZW50
LT5kb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCkgOiAwKTsKKyAgICAgICAgaWYgKGV4
dGVuc2lvbnMpIHsKKyAgICAgICAgICAgIEFTU0VSVCghZXh0ZW5zaW9ucy0+aGFzQmFzZVZhbHVl
PERlY29yYXRlZFR5cGU+KG93bmVyRWxlbWVudCwgbV9hdHRyaWJ1dGVJZGVudGlmaWVyKSk7Cisg
ICAgICAgICAgICBleHRlbnNpb25zLT5zZXRCYXNlVmFsdWU8RGVjb3JhdGVkVHlwZT4ob3duZXJF
bGVtZW50LCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIsIG1fdmFsdWUpOworICAgICAgICB9CisgICAg
fQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5p
bWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5h
bWU+CisgICAgdm9pZCBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRU
eXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpzdG9wQW5pbWF0aW9uKCkKKyAgICB7Cisg
ICAgICAgIGNvbnN0IE93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0gdGhpcy0+b3duZXJFbGVt
ZW50KCk7CisgICAgICAgIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogZXh0ZW5zaW9ucyA9IChvd25l
ckVsZW1lbnQtPmRvY3VtZW50KCkgPyBvd25lckVsZW1lbnQtPmRvY3VtZW50KCktPmFjY2Vzc1NW
R0V4dGVuc2lvbnMoKSA6IDApOworICAgICAgICBpZiAoZXh0ZW5zaW9ucykgeworICAgICAgICAg
ICAgQVNTRVJUKGV4dGVuc2lvbnMtPmhhc0Jhc2VWYWx1ZTxEZWNvcmF0ZWRUeXBlPihvd25lckVs
ZW1lbnQsIG1fYXR0cmlidXRlSWRlbnRpZmllcikpOworICAgICAgICAgICAgc2V0VmFsdWUoZXh0
ZW5zaW9ucy0+YmFzZVZhbHVlPERlY29yYXRlZFR5cGU+KG93bmVyRWxlbWVudCwgbV9hdHRyaWJ1
dGVJZGVudGlmaWVyKSk7CisgICAgICAgICAgICBleHRlbnNpb25zLT5yZW1vdmVCYXNlVmFsdWU8
QW5pbWF0ZWRUeXBlPihvd25lckVsZW1lbnQsIG1fYXR0cmlidXRlSWRlbnRpZmllcik7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVu
YW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJv
cGVydHlOYW1lPgorICAgIGNvbnN0IHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHk8T3duZXJU
eXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46Ok93bmVyRWxl
bWVudCoKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBl
QXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+Ojpvd25lckVsZW1lbnQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIE93bmVyRWxlbWVudEZvclR5cGU6Om93bmVyRWxlbWVudChtX293bmVy
VHlwZSk7CisgICAgfQorCisgICAgLy8gR2V0T3duZXJFbGVtZW50Rm9yVHlwZSBpbXBsZW1lbnRh
dGlvbgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KKyAgICBzdHJ1Y3QgR2V0T3du
ZXJFbGVtZW50Rm9yVHlwZTxPd25lclR5cGUsIHRydWU+IDogTm9uY29weWFibGUgeworICAgICAg
ICB0eXBlZGVmIE93bmVyVHlwZSBPd25lckVsZW1lbnQ7CisKKyAgICAgICAgc3RhdGljIGNvbnN0
IE93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KGNvbnN0IE93bmVyVHlwZSogdHlwZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIHR5cGU7CisgICAgICAgIH0KKyAgICB9OworCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgorICAgIHN0cnVjdCBHZXRPd25lckVsZW1lbnRG
b3JUeXBlPE93bmVyVHlwZSwgZmFsc2U+IDogTm9uY29weWFibGUgeyAgICAKKyAgICAgICAgdHlw
ZWRlZiBTVkdFbGVtZW50IE93bmVyRWxlbWVudDsKKworICAgICAgICBzdGF0aWMgY29uc3QgT3du
ZXJFbGVtZW50KiBvd25lckVsZW1lbnQoY29uc3QgT3duZXJUeXBlKiB0eXBlKQorICAgICAgICB7
CisgICAgICAgICAgICBjb25zdCBPd25lckVsZW1lbnQqIGNvbnRleHQgPSB0eXBlLT5jb250ZXh0
RWxlbWVudCgpOworICAgICAgICAgICAgQVNTRVJUKGNvbnRleHQpOworICAgICAgICAgICAgcmV0
dXJuIGNvbnRleHQ7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLy8gSXNEZXJpdmVkRnJvbVNW
R0VsZW1lbnQgaW1wbGVtZW50YXRpb24KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+
CisgICAgc3RydWN0IElzRGVyaXZlZEZyb21TVkdFbGVtZW50IDogTm9uY29weWFibGUgeworICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7CisgICAgfTsKKworICAgIGNsYXNz
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ7CisgICAgdGVtcGxhdGU8PgorICAgIHN0cnVj
dCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPiA6
IE5vbmNvcHlhYmxlIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsK
KyAgICB9OworCisgICAgY2xhc3MgU1ZHRml0VG9WaWV3Qm94OworICAgIHRlbXBsYXRlPD4KKyAg
ICBzdHJ1Y3QgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8U1ZHRml0VG9WaWV3Qm94PiA6IE5vbmNv
cHlhYmxlIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsKKyAgICB9
OworCisgICAgY2xhc3MgU1ZHVVJJUmVmZXJlbmNlOworICAgIHRlbXBsYXRlPD4KKyAgICBzdHJ1
Y3QgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8U1ZHVVJJUmVmZXJlbmNlPiA6IE5vbmNvcHlhYmxl
IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsKKyAgICB9OworCisg
ICAgLy8gQ2VudHJhbCBmdW5jdGlvbiBoYW5kbGluZyB0aGUgbWFpbiBTVkc8LT5YTUwgc3luY2hy
b25pemF0aW9uIHBhcnQuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJFbGVtZW50LCB0eXBl
bmFtZSBEZWNvcmF0ZWRUeXBlPgorICAgIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBP
d25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgRGVjb3JhdGVkVHlwZSBiYXNlVmFsdWUpCisgICAgeworICAgICAgICBBdG9taWNTdHJp
bmcgdmFsdWUoU1ZHQW5pbWF0ZWRUeXBlVmFsdWU8RGVjb3JhdGVkVHlwZT46OnRvU3RyaW5nKGJh
c2VWYWx1ZSkpOworCisgICAgICAgIE5hbWVkQXR0ck1hcCogbmFtZWRBdHRyTWFwID0gb3duZXJF
bGVtZW50LT5hdHRyaWJ1dGVzKGZhbHNlKTsgCisgICAgICAgIEF0dHJpYnV0ZSogb2xkID0gbmFt
ZWRBdHRyTWFwLT5nZXRBdHRyaWJ1dGVJdGVtKGF0dHJpYnV0ZU5hbWUpOworICAgICAgICBpZiAo
b2xkICYmIHZhbHVlLmlzTnVsbCgpKSAKKyAgICAgICAgICAgIG5hbWVkQXR0ck1hcC0+cmVtb3Zl
QXR0cmlidXRlKG9sZC0+bmFtZSgpKTsgCisgICAgICAgIGVsc2UgaWYgKCFvbGQgJiYgIXZhbHVl
LmlzTnVsbCgpKSAKKyAgICAgICAgICAgIG5hbWVkQXR0ck1hcC0+YWRkQXR0cmlidXRlKGNvbnN0
X2Nhc3Q8T3duZXJFbGVtZW50Kj4ob3duZXJFbGVtZW50KS0+Y3JlYXRlQXR0cmlidXRlKFF1YWxp
ZmllZE5hbWUobnVsbEF0b20sIGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCksIG51bGxBdG9tKSwg
dmFsdWUpKTsgCisgICAgICAgIGVsc2UgaWYgKG9sZCAmJiAhdmFsdWUuaXNOdWxsKCkpIAorICAg
ICAgICAgICAgb2xkLT5zZXRWYWx1ZSh2YWx1ZSk7IAorICAgIH0KKworICAgIC8vIEhlbHBlciBt
YWNybyB1c2VkIHRvIHJlZ2lzdGVyIGFuaW1hdGVkIHByb3BlcnRpZXMgd2l0aGluIFNWRyogY2xh
c3NlcworICAgICNkZWZpbmUgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKE93bmVyVHlw
ZSwgRWxlbWVudFRhZywgQXR0cmlidXRlVGFnLCBBbmltYXRlZFR5cGUsIFVwcGVyUHJvcGVydHks
IExvd2VyUHJvcGVydHkpIFwKKyAgICBwcml2YXRlOiBcCisgICAgICAgIHR5cGVkZWYgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eTxPd25lclR5cGUsIEFuaW1hdGVkVHlwZSwgRWxlbWVudFRhZywgQXR0cmli
dXRlVGFnPiBTVkdBbmltYXRlZFByb3BlcnR5IyNVcHBlclByb3BlcnR5OyBcCisgICAgICAgIHR5
cGVkZWYgU1ZHQW5pbWF0ZWRUeXBlVmFsdWU8QW5pbWF0ZWRUeXBlPjo6RGVjb3JhdGVkVHlwZSBE
ZWNvcmF0ZWRUeXBlRm9yIyNVcHBlclByb3BlcnR5OyBcCisgICAgICAgIFNWR0FuaW1hdGVkUHJv
cGVydHkjI1VwcGVyUHJvcGVydHkgbV8jI0xvd2VyUHJvcGVydHk7IFwKKyAgICBwdWJsaWM6IFwK
KyAgICAgICAgRGVjb3JhdGVkVHlwZUZvciMjVXBwZXJQcm9wZXJ0eSBMb3dlclByb3BlcnR5KCkg
Y29uc3QgeyByZXR1cm4gbV8jI0xvd2VyUHJvcGVydHkudmFsdWUoKTsgfSBcCisgICAgICAgIHZv
aWQgc2V0IyNVcHBlclByb3BlcnR5KERlY29yYXRlZFR5cGVGb3IjI1VwcGVyUHJvcGVydHkgdHlw
ZSkgeyBtXyMjTG93ZXJQcm9wZXJ0eS5zZXRWYWx1ZSh0eXBlKTsgfSBcCisgICAgICAgIERlY29y
YXRlZFR5cGVGb3IjI1VwcGVyUHJvcGVydHkgTG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV8jI0xvd2VyUHJvcGVydHkuYmFzZVZhbHVlKCk7IH0gXAorICAgICAgICB2
b2lkIHNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKERlY29yYXRlZFR5cGVGb3IjI1VwcGVy
UHJvcGVydHkgdHlwZSkgeyBtXyMjTG93ZXJQcm9wZXJ0eS5zZXRCYXNlVmFsdWUodHlwZSk7IH0g
XAorICAgICAgICBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHkjI1VwcGVyUHJvcGVydHk6
OlRlYXJPZmY+IExvd2VyUHJvcGVydHkjI0FuaW1hdGVkKCkgY29uc3QgeyByZXR1cm4gbV8jI0xv
d2VyUHJvcGVydHkuYW5pbWF0ZWRUZWFyT2ZmKCk7IH0gXAorICAgICAgICB2b2lkIHN5bmNocm9u
aXplIyNVcHBlclByb3BlcnR5KCkgY29uc3QgeyBtXyMjTG93ZXJQcm9wZXJ0eS5zeW5jaHJvbml6
ZSgpOyB9CisKK307CisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFRlbXBsYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUZW1w
bGF0ZS5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVtcGxh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDE4ICsxNDUsMTkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBtX2Fzc29jaWF0ZWRBdHRyaWJ1dGVO
YW1lOwogICAgIH07CiAKLSAgICB0eXBlZGVmIHZvaWQgKCpBbmltYXRlZFByb3BlcnR5U3luY2hy
b25pemVyKShjb25zdCBTVkdFbGVtZW50Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJU
eXBlQXJnLCB0eXBlbmFtZSBBbmltYXRlZFR5cGVBcmcsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNv
bnN0IGNoYXIqIFByb3BlcnR5TmFtZT4KKyAgICBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5Owog
Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFR5cGUsIGNsYXNzIFNWR0VsZW1lbnRTdWJDbGFzcz4KLSAg
ICBQYXNzUmVmUHRyPFR5cGU+IGxvb2t1cE9yQ3JlYXRlV3JhcHBlcihjb25zdCBTVkdFbGVtZW50
U3ViQ2xhc3MqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGRvbUF0dHJOYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cklkZW50aWZpZXIsIEFuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIgc3luY2hyb25p
emVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlwZW5hbWUgQW5pbWF0ZWRU
eXBlLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWUsIHR5cGVu
YW1lIFR5cGUsIHR5cGVuYW1lIE93bmVyRWxlbWVudD4gCisgICAgUGFzc1JlZlB0cjxUeXBlPiBs
b29rdXBPckNyZWF0ZVdyYXBwZXIoY29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGUs
IEFuaW1hdGVkVHlwZSwgVGFnTmFtZSwgUHJvcGVydHlOYW1lPiYgY3JlYXRvciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBPd25lckVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJJZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktl
eSBrZXkoZWxlbWVudCwgYXR0cklkZW50aWZpZXIpOwogICAgICAgICBSZWZQdHI8VHlwZT4gd3Jh
cHBlciA9IHN0YXRpY19jYXN0PFR5cGUqPihUeXBlOjp3cmFwcGVyQ2FjaGUoKS0+Z2V0KGtleSkp
OwogCiAgICAgICAgIGlmICghd3JhcHBlcikgewotICAgICAgICAgICAgd3JhcHBlciA9IFR5cGU6
OmNyZWF0ZShlbGVtZW50LCBkb21BdHRyTmFtZSk7Ci0gICAgICAgICAgICBlbGVtZW50LT5hZGRT
VkdQcm9wZXJ0eVN5bmNocm9uaXplcihkb21BdHRyTmFtZSwgc3luY2hyb25pemVyKTsKKyAgICAg
ICAgICAgIHdyYXBwZXIgPSBUeXBlOjpjcmVhdGUoY3JlYXRvciwgZWxlbWVudCwgYXR0ck5hbWUp
OworICAgICAgICAgICAgZWxlbWVudC0+YWRkU1ZHUHJvcGVydHlTeW5jaHJvbml6ZXIoYXR0ck5h
bWUsIGNyZWF0b3IpOwogICAgICAgICAgICAgVHlwZTo6d3JhcHBlckNhY2hlKCktPnNldChrZXks
IHdyYXBwZXIuZ2V0KCkpOwogICAgICAgICB9CiAKQEAgLTE2Niw0OCArMTY3LDcyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAvLyBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBwb2ludGVy
IHR5cGVzCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KICAgICBzdHJ1Y3QgU1ZHQW5pbWF0
ZWRUeXBlVmFsdWUgOiBOb25jb3B5YWJsZSB7CisgICAgICAgIHR5cGVkZWYgUmVmUHRyPFR5cGU+
IFN0b3JhYmxlVHlwZTsKKyAgICAgICAgdHlwZWRlZiBUeXBlKiBEZWNvcmF0ZWRUeXBlOworCiAg
ICAgICAgIHN0YXRpYyBUeXBlIG51bGwoKSB7IHJldHVybiAwOyB9CiAgICAgICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcgdG9TdHJpbmcoVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID8gQXRvbWljU3Ry
aW5nKHR5cGUtPnZhbHVlQXNTdHJpbmcoKSkgOiBudWxsQXRvbTsgfQogICAgIH07CiAKICAgICB0
ZW1wbGF0ZTw+CiAgICAgc3RydWN0IFNWR0FuaW1hdGVkVHlwZVZhbHVlPGJvb2w+IDogTm9uY29w
eWFibGUgeworICAgICAgICB0eXBlZGVmIGJvb2wgU3RvcmFibGVUeXBlOworICAgICAgICB0eXBl
ZGVmIGJvb2wgRGVjb3JhdGVkVHlwZTsKKwogICAgICAgICBzdGF0aWMgYm9vbCBudWxsKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyB0b1N0cmluZyhib29s
IHR5cGUpIHsgcmV0dXJuIHR5cGUgPyAidHJ1ZSIgOiAiZmFsc2UiOyB9CiAgICAgfTsKIAogICAg
IHRlbXBsYXRlPD4KICAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRUeXBlVmFsdWU8aW50PiA6IE5vbmNv
cHlhYmxlIHsKKyAgICAgICAgdHlwZWRlZiBpbnQgU3RvcmFibGVUeXBlOworICAgICAgICB0eXBl
ZGVmIGludCBEZWNvcmF0ZWRUeXBlOworCiAgICAgICAgIHN0YXRpYyBpbnQgbnVsbCgpIHsgcmV0
dXJuIDA7IH0KICAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyB0b1N0cmluZyhpbnQgdHlwZSkg
eyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8
PgogICAgIHN0cnVjdCBTVkdBbmltYXRlZFR5cGVWYWx1ZTxsb25nPiA6IE5vbmNvcHlhYmxlIHsK
KyAgICAgICAgdHlwZWRlZiBsb25nIFN0b3JhYmxlVHlwZTsKKyAgICAgICAgdHlwZWRlZiBsb25n
IERlY29yYXRlZFR5cGU7CisKICAgICAgICAgc3RhdGljIGxvbmcgbnVsbCgpIHsgcmV0dXJuIDBs
OyB9CiAgICAgICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdG9TdHJpbmcobG9uZyB0eXBlKSB7IHJl
dHVybiBTdHJpbmc6Om51bWJlcih0eXBlKTsgfQogICAgIH07CiAKICAgICB0ZW1wbGF0ZTw+CiAg
ICAgc3RydWN0IFNWR0FuaW1hdGVkVHlwZVZhbHVlPFNWR0xlbmd0aD4gOiBOb25jb3B5YWJsZSB7
CisgICAgICAgIHR5cGVkZWYgU1ZHTGVuZ3RoIFN0b3JhYmxlVHlwZTsKKyAgICAgICAgdHlwZWRl
ZiBTVkdMZW5ndGggRGVjb3JhdGVkVHlwZTsKKwogICAgICAgICBzdGF0aWMgU1ZHTGVuZ3RoIG51
bGwoKSB7IHJldHVybiBTVkdMZW5ndGgoKTsgfQogICAgICAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IHRvU3RyaW5nKGNvbnN0IFNWR0xlbmd0aCYgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3Ry
aW5nKCk7IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8PgogICAgIHN0cnVjdCBTVkdBbmltYXRl
ZFR5cGVWYWx1ZTxmbG9hdD4gOiBOb25jb3B5YWJsZSB7CisgICAgICAgIHR5cGVkZWYgZmxvYXQg
U3RvcmFibGVUeXBlOworICAgICAgICB0eXBlZGVmIGZsb2F0IERlY29yYXRlZFR5cGU7CisKICAg
ICAgICAgc3RhdGljIGZsb2F0IG51bGwoKSB7IHJldHVybiAwLjBmOyB9CiAgICAgICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcgdG9TdHJpbmcoZmxvYXQgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpudW1i
ZXIodHlwZSk7IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8PgogICAgIHN0cnVjdCBTVkdBbmlt
YXRlZFR5cGVWYWx1ZTxGbG9hdFJlY3Q+IDogTm9uY29weWFibGUgeworICAgICAgICB0eXBlZGVm
IEZsb2F0UmVjdCBTdG9yYWJsZVR5cGU7CisgICAgICAgIHR5cGVkZWYgRmxvYXRSZWN0IERlY29y
YXRlZFR5cGU7CisKICAgICAgICAgc3RhdGljIEZsb2F0UmVjdCBudWxsKCkgeyByZXR1cm4gRmxv
YXRSZWN0KCk7IH0KICAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyB0b1N0cmluZyhjb25zdCBG
bG9hdFJlY3QmIHR5cGUpIHsgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlZiAlZiAlZiAlZiIsIHR5
cGUueCgpLCB0eXBlLnkoKSwgdHlwZS53aWR0aCgpLCB0eXBlLmhlaWdodCgpKTsgfQogICAgIH07
CiAKICAgICB0ZW1wbGF0ZTw+CiAgICAgc3RydWN0IFNWR0FuaW1hdGVkVHlwZVZhbHVlPFN0cmlu
Zz4gOiBOb25jb3B5YWJsZSB7CisgICAgICAgIHR5cGVkZWYgU3RyaW5nIFN0b3JhYmxlVHlwZTsK
KyAgICAgICAgdHlwZWRlZiBTdHJpbmcgRGVjb3JhdGVkVHlwZTsKKwogICAgICAgICBzdGF0aWMg
U3RyaW5nIG51bGwoKSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgICAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nIHRvU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgeyByZXR1cm4gdHlwZTsgfQogICAg
IH07CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysr
IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTUs
NyArOTUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVBbmltYXRpb24oZmxvYXQgcGVyY2VudCwgdW5zaWduZWQgcmVwZWF0LCBTVkdTTUlMRWxlbWVu
dCogcmVzdWx0RWxlbWVudCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbmRlZEFjdGl2ZUludGVy
dmFsKCk7CiAgICAgICAgIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xB
UkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5n
JiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKSA9IDA7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdDaXJj
bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50
LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcsOSArMzcsOSBAQCBTVkdDaXJjbGVFbGVtZW50OjpTVkdD
aXJjbGVFbGVtZW50KGNvbnN0CiAgICAgLCBTVkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2Uo
KQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgLCBtX2N4KExlbmd0
aE1vZGVXaWR0aCkKLSAgICAsIG1fY3koTGVuZ3RoTW9kZUhlaWdodCkKLSAgICAsIG1fcihMZW5n
dGhNb2RlT3RoZXIpCisgICAgLCBtX2N4KHRoaXMsIFNWR05hbWVzOjpjeEF0dHIsIExlbmd0aE1v
ZGVXaWR0aCkKKyAgICAsIG1fY3kodGhpcywgU1ZHTmFtZXM6OmN5QXR0ciwgTGVuZ3RoTW9kZUhl
aWdodCkKKyAgICAsIG1fcih0aGlzLCBTVkdOYW1lczo6ckF0dHIsIExlbmd0aE1vZGVPdGhlcikK
IHsKIH0KIApAQCAtNDcsMTAgKzQ3LDYgQEAgU1ZHQ2lyY2xlRWxlbWVudDo6flNWR0NpcmNsZUVs
ZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDaXJjbGVF
bGVtZW50LCBTVkdMZW5ndGgsIEN4LCBjeCwgU1ZHTmFtZXM6OmN4QXR0cikKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCwgQ3ksIGN5LCBT
VkdOYW1lczo6Y3lBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xl
RWxlbWVudCwgU1ZHTGVuZ3RoLCBSLCByLCBTVkdOYW1lczo6ckF0dHIpCi0KIHZvaWQgU1ZHQ2ly
Y2xlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQog
ewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmN4QXR0cikKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdD
aXJjbGVFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHQ2lyY2xl
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMSArNTEsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNSZWxhdGl2ZVZhbHVlcygpIGNvbnN0Owog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJB
VElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoLCBDeCwg
Y3gpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDaXJjbGVFbGVt
ZW50LCBTVkdMZW5ndGgsIEN5LCBjeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCwgUiwgcikKKyAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR05hbWVzOjpjaXJj
bGVUYWdTdHJpbmcsIFNWR05hbWVzOjpjeEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgQ3gsIGN4KQor
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwg
U1ZHTmFtZXM6OmNpcmNsZVRhZ1N0cmluZywgU1ZHTmFtZXM6OmN5QXR0clN0cmluZywgU1ZHTGVu
Z3RoLCBDeSwgY3kpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdD
aXJjbGVFbGVtZW50LCBTVkdOYW1lczo6Y2lyY2xlVGFnU3RyaW5nLCBTVkdOYW1lczo6ckF0dHJT
dHJpbmcsIFNWR0xlbmd0aCwgUiwgcikKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1KQorKysg
V2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNyBAQCBTVkdDbGlwUGF0aEVsZW1lbnQ6OlNWR0NsaXBQYXRoRWxlbWVudChjCiAgICAg
LCBTVkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCgpCi0gICAgLCBtX2NsaXBQYXRoVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdf
VU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQorICAgICwgbV9jbGlwUGF0aFVuaXRzKHRoaXMsIFNW
R05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0ciwgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VT
RVJTUEFDRU9OVVNFKQogewogfQogCkBAIC00Niw4ICs0Niw2IEBAIFNWR0NsaXBQYXRoRWxlbWVu
dDo6flNWR0NsaXBQYXRoRWxlbWVudCgKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHQ2xpcFBhdGhFbGVtZW50LCBpbnQsIENsaXBQYXRoVW5pdHMsIGNsaXBQYXRoVW5p
dHMsIFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0cikKLQogdm9pZCBTVkdDbGlwUGF0aEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBp
ZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0cikgewpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcv
U1ZHQ2xpcFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDkgKzI0LDkgQEAKICNk
ZWZpbmUgU1ZHQ2xpcFBhdGhFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSAi
U1ZHUmVzb3VyY2VDbGlwcGVyLmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZC5oIgogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZS5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNl
Q2xpcHBlci5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU1ZHVGVzdHMuaCIKIApAQCAtNTQsOSArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQotCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDbGlwUGF0
aEVsZW1lbnQsIGludCwgQ2xpcFBhdGhVbml0cywgY2xpcFBhdGhVbml0cykKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NsaXBQYXRoRWxlbWVudCwgU1ZHTmFtZXM6
OmNsaXBQYXRoVGFnU3RyaW5nLCBTVkdOYW1lczo6Y2xpcFBhdGhVbml0c0F0dHJTdHJpbmcsIGlu
dCwgQ2xpcFBhdGhVbml0cywgY2xpcFBhdGhVbml0cykKIAogICAgICAgICBSZWZQdHI8U1ZHUmVz
b3VyY2VDbGlwcGVyPiBtX2NsaXBwZXI7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1
MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNSArMzEsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjaGFyIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SWRlbnRpZmll
cltdID0gIlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IjsKKwogU1ZHQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25F
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAg
OiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvYykKLSAgICAsIG1fdHlwZShGRUNPTVBPTkVOVFRSQU5T
RkVSX1RZUEVfVU5LTk9XTikKLSAgICAsIG1fdGFibGVWYWx1ZXMoU1ZHTnVtYmVyTGlzdDo6Y3Jl
YXRlKFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIpKQotICAgICwgbV9zbG9wZSgxLjBmKQotICAg
ICwgbV9pbnRlcmNlcHQoMC4wZikKLSAgICAsIG1fYW1wbGl0dWRlKDEuMGYpCi0gICAgLCBtX2V4
cG9uZW50KDEuMGYpCi0gICAgLCBtX29mZnNldCgwLjBmKQorICAgICwgbV90eXBlKHRoaXMsIFNW
R05hbWVzOjp0eXBlQXR0ciwgRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1VOS05PV04pCisgICAg
LCBtX3RhYmxlVmFsdWVzKHRoaXMsIFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIsIFNWR051bWJl
ckxpc3Q6OmNyZWF0ZShTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRyKSkKKyAgICAsIG1fc2xvcGUo
dGhpcywgU1ZHTmFtZXM6OnNsb3BlQXR0ciwgMS4wZikKKyAgICAsIG1faW50ZXJjZXB0KHRoaXMs
IFNWR05hbWVzOjppbnRlcmNlcHRBdHRyKQorICAgICwgbV9hbXBsaXR1ZGUodGhpcywgU1ZHTmFt
ZXM6OmFtcGxpdHVkZUF0dHIsIDEuMGYpCisgICAgLCBtX2V4cG9uZW50KHRoaXMsIFNWR05hbWVz
OjpleHBvbmVudEF0dHIsIDEuMGYpCisgICAgLCBtX29mZnNldCh0aGlzLCBTVkdOYW1lczo6b2Zm
c2V0QXR0cikKIHsKIH0KIApAQCAtNDcsMTQgKzQ5LDYgQEAgU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQ6On5TVgogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgaW50LCBUeXBlLCB0eXBlLCBT
VkdOYW1lczo6dHlwZUF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19SRUZDT1VO
VEVEKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOdW1iZXJMaXN0LCBU
YWJsZVZhbHVlcywgdGFibGVWYWx1ZXMsIFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudCwgZmxvYXQsIFNsb3BlLCBzbG9wZSwgU1ZHTmFtZXM6OnNsb3BlQXR0cikKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
LCBmbG9hdCwgSW50ZXJjZXB0LCBpbnRlcmNlcHQsIFNWR05hbWVzOjppbnRlcmNlcHRBdHRyKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQsIGZsb2F0LCBBbXBsaXR1ZGUsIGFtcGxpdHVkZSwgU1ZHTmFtZXM6OmFtcGxpdHVk
ZUF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudCwgZmxvYXQsIEV4cG9uZW50LCBleHBvbmVudCwgU1ZHTmFtZXM6OmV4
cG9uZW50QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50LCBmbG9hdCwgT2Zmc2V0LCBvZmZzZXQsIFNWR05hbWVzOjpv
ZmZzZXRBdHRyKQotCiB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3Qg
U3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQor
KysgV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjIs
NDEgKzIyLDM2IEBACiAKICNpZm5kZWYgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnRfaAogI2RlZmluZSBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudF9oCi0jaWYg
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogCisjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKKyNpbmNsdWRlICJT
VkdOdW1iZXJMaXN0LmgiCiAjaW5jbHVkZSAiRkVDb21wb25lbnRUcmFuc2Zlci5oIgogCi1uYW1l
c3BhY2UgV2ViQ29yZQotewotICAgIGNsYXNzIFNWR051bWJlckxpc3Q7CituYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSAgICBjbGFzcyBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCA6
IHB1YmxpYyBTVkdFbGVtZW50Ci0gICAgeworICAgIGV4dGVybiBjaGFyIFNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50SWRlbnRpZmllcltdOworCisgICAgY2xhc3MgU1ZHQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgOiBwdWJsaWMgU1ZHRWxlbWVudCB7CiAgICAgcHVi
bGljOgogICAgICAgICBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQoKTsKIAotICAgICAgICAvLyAnU1ZHQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbkVsZW1lbnQnIGZ1bmN0aW9ucwotICAgICAgICAvLyBEZXJpdmVkIGZyb206
ICdFbGVtZW50JwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFw
cGVkQXR0cmlidXRlKiBhdHRyKTsKICAgICAgICAgCiAgICAgICAgIENvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfU1RBUlRfREVDTEFSQVRJT05TCi0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dCwgaW50LCBUeXBlLCB0eXBlKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlNfUkVGQ09VTlRFRChTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTnVt
YmVyTGlzdCwgVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVzKQotICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIGZs
b2F0LCBTbG9wZSwgc2xvcGUpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgZmxvYXQsIEludGVyY2VwdCwg
aW50ZXJjZXB0KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIGZsb2F0LCBBbXBsaXR1ZGUsIGFtcGxpdHVk
ZSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50LCBmbG9hdCwgRXhwb25lbnQsIGV4cG9uZW50KQotICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQsIGZsb2F0LCBPZmZzZXQsIG9mZnNldCkKKyAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjp0
eXBlQXR0clN0cmluZywgaW50LCBUeXBlLCB0eXBlKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6OnRhYmxl
VmFsdWVzQXR0clN0cmluZywgU1ZHTnVtYmVyTGlzdCwgVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVz
KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
SWRlbnRpZmllciwgU1ZHTmFtZXM6OnNsb3BlQXR0clN0cmluZywgZmxvYXQsIFNsb3BlLCBzbG9w
ZSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dElkZW50aWZpZXIsIFNWR05hbWVzOjppbnRlcmNlcHRBdHRyU3RyaW5nLCBmbG9hdCwgSW50ZXJj
ZXB0LCBpbnRlcmNlcHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnRJZGVudGlmaWVyLCBTVkdOYW1lczo6YW1wbGl0dWRlQXR0clN0cmluZywg
ZmxvYXQsIEFtcGxpdHVkZSwgYW1wbGl0dWRlKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6OmV4cG9uZW50
QXR0clN0cmluZywgZmxvYXQsIEV4cG9uZW50LCBleHBvbmVudCkKKyAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
LCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVz
OjpvZmZzZXRBdHRyU3RyaW5nLCBmbG9hdCwgT2Zmc2V0LCBvZmZzZXQpCiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19GSUxURVJTKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0N1cnNvckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0N1cnNv
ckVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4IEBAIFNWR0N1cnNvckVsZW1l
bnQ6OlNWR0N1cnNvckVsZW1lbnQoY29uc3QKICAgICAsIFNWR1Rlc3RzKCkKICAgICAsIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkKLSAgICAs
IG1feChMZW5ndGhNb2RlV2lkdGgpCi0gICAgLCBtX3koTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAs
IG1feCh0aGlzLCBTVkdOYW1lczo6eEF0dHIsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feSh0
aGlzLCBTVkdOYW1lczo6eUF0dHIsIExlbmd0aE1vZGVIZWlnaHQpCiB7CiB9CiAKQEAgLTQ1LDkg
KzQ1LDYgQEAgU1ZHQ3Vyc29yRWxlbWVudDo6flNWR0N1cnNvckVsZW1lbnQoKQogewogfQogCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDdXJzb3JFbGVtZW50LCBTVkdMZW5ndGgs
IFgsIHgsIFNWR05hbWVzOjp4QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyKQotCiB2b2lk
IFNWR0N1cnNvckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSog
YXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdDdXJzb3JFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZH
Q3Vyc29yRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMSArNTQsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFU
SU9OUyhTVkdVUklSZWZlcmVuY2UsIFN0cmluZywgSHJlZiwgaHJlZikKLQotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTGVuZ3RoLCBY
LCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ3Vyc29yRWxl
bWVudCwgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTmFtZXM6OmN1cnNvclRhZ1N0cmluZywgU1ZHTmFt
ZXM6OnhBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdDdXJzb3JFbGVtZW50LCBTVkdOYW1lczo6Y3Vyc29yVGFnU3Ry
aW5nLCBTVkdOYW1lczo6eUF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWSwgeSkKIAogICAgICAgICBI
YXNoU2V0PFNWR0VsZW1lbnQqPiBtX2NsaWVudHM7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0RlZnNFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1l
bnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKLSAg
ICAKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJTVkdE
b2N1bWVudEV4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKICNp
bmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAi
U1ZHU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IlNWR1VzZUVsZW1lbnQuaCIKQEAgLTI2OSw3ICsyNzAsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OmF0
dHJpYnV0ZUNoYW5nZWQoQXR0cmliCiAgICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyLT5uYW1l
KCkpOwogfQogCi12b2lkIFNWR0VsZW1lbnQ6OnVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRlKFN0
cmluZ0ltcGwqIG5hbWUpIGNvbnN0Cit2b2lkIFNWR0VsZW1lbnQ6OnVwZGF0ZUFuaW1hdGVkU1ZH
QXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIW1fYXJl
U1ZHQXR0cmlidXRlc1ZhbGlkKTsKIApAQCAtMjc4LDEyICsyNzksMTEgQEAgdm9pZCBTVkdFbGVt
ZW50Ojp1cGRhdGVBbmltYXRlZFNWR0F0dHJpYgogCiAgICAgbV9zeW5jaHJvbml6aW5nU1ZHQXR0
cmlidXRlcyA9IHRydWU7CiAKLSAgICBpZiAobmFtZSkKLSAgICAgICAgaW52b2tlU1ZHUHJvcGVy
dHlTeW5jaHJvbml6ZXIobmFtZSk7Ci0gICAgZWxzZSB7CisgICAgaWYgKG5hbWUuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGludm9rZUFsbFNWR1Byb3BlcnR5U3luY2hyb25pemVycygpOwogICAgICAg
ICBzZXRTeW5jaHJvbml6ZWRTVkdBdHRyaWJ1dGVzKHRydWUpOwotICAgIH0KKyAgICB9IGVsc2UK
KyAgICAgICAgaW52b2tlU1ZHUHJvcGVydHlTeW5jaHJvbml6ZXIobmFtZSk7CiAKICAgICBtX3N5
bmNocm9uaXppbmdTVkdBdHRyaWJ1dGVzID0gZmFsc2U7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCShyZXZp
c2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUsMjUyICsyNSw5IEBACiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgot
I2luY2x1ZGUgIlNWR0FuaW1hdGVkVGVtcGxhdGUuaCIKLSNpbmNsdWRlICJTVkdEb2N1bWVudEV4
dGVuc2lvbnMuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5LmgiCiAjaW5jbHVkZSAi
U1ZHTmFtZXMuaCIKLSNpbmNsdWRlICJTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyLmgiCi0KLSNk
ZWZpbmUgQU5JTUFURURfUFJPUEVSVFlfRU1QVFlfREVDTEFSQVRJT05TX0lOVEVSTkFMKERlY29y
YXRlZFR5cGUsIE51bGxUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1wdWJs
aWM6IFwKLSAgICB2aXJ0dWFsIERlY29yYXRlZFR5cGUgTG93ZXJQcm9wZXJ0eSgpIGNvbnN0IHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBOdWxsVHlwZTsgfSBcCi0gICAgdmlydHVhbCB2
b2lkIHNldCMjVXBwZXJQcm9wZXJ0eShEZWNvcmF0ZWRUeXBlKSB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9IFwKLSAgICB2aXJ0dWFsIERlY29yYXRlZFR5cGUgTG93ZXJQcm9wZXJ0eSMjQmFzZVZh
bHVlKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIE51bGxUeXBlOyB9IFwK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5IyNCYXNlVmFsdWUoRGVjb3JhdGVk
VHlwZSkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSBcCi0gICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplIyNVcHBlclByb3BlcnR5KCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSBc
Ci0gICAgdmlydHVhbCBBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyIHN5bmNocm9uaXplckZv
ciMjVXBwZXJQcm9wZXJ0eSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBB
bmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyKCk7IH0gXAotICAgIHZpcnR1YWwgdm9pZCBzdGFy
dCMjVXBwZXJQcm9wZXJ0eSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gXAotICAg
IHZpcnR1YWwgdm9pZCBzdG9wIyNVcHBlclByb3BlcnR5KCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQotCi0jZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TX0lO
VEVSTkFMKEZvcndhcmRDbGFzcywgRGVjb3JhdGVkVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQ
cm9wZXJ0eSkgXAotcHVibGljOiBcCi0gICAgdmlydHVhbCBEZWNvcmF0ZWRUeXBlIExvd2VyUHJv
cGVydHkoKSBjb25zdCB7IHJldHVybiBGb3J3YXJkQ2xhc3M6Okxvd2VyUHJvcGVydHkoKTsgfSBc
Ci0gICAgdmlydHVhbCB2b2lkIHNldCMjVXBwZXJQcm9wZXJ0eShEZWNvcmF0ZWRUeXBlIG5ld1Zh
bHVlKSB7IEZvcndhcmRDbGFzczo6c2V0IyNVcHBlclByb3BlcnR5KG5ld1ZhbHVlKTsgfSBcCi0g
ICAgdmlydHVhbCBEZWNvcmF0ZWRUeXBlIExvd2VyUHJvcGVydHkjI0Jhc2VWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIEZvcndhcmRDbGFzczo6TG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCk7IH0gXAot
ICAgIHZpcnR1YWwgdm9pZCBzZXQjI1VwcGVyUHJvcGVydHkjI0Jhc2VWYWx1ZShEZWNvcmF0ZWRU
eXBlIG5ld1ZhbHVlKSB7IEZvcndhcmRDbGFzczo6c2V0IyNVcHBlclByb3BlcnR5IyNCYXNlVmFs
dWUobmV3VmFsdWUpOyB9IFwKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemUjI1VwcGVyUHJv
cGVydHkoKSBjb25zdCB7IEZvcndhcmRDbGFzczo6c3luY2hyb25pemUjI1VwcGVyUHJvcGVydHko
KTsgfSBcCi0gICAgdmlydHVhbCBBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyIHN5bmNocm9u
aXplckZvciMjVXBwZXJQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIEZvcndhcmRDbGFzczo6c3lu
Y2hyb25pemVyRm9yIyNVcHBlclByb3BlcnR5KCk7IH0gXAotICAgIHZpcnR1YWwgdm9pZCBzdGFy
dCMjVXBwZXJQcm9wZXJ0eSgpIGNvbnN0IHsgRm9yd2FyZENsYXNzOjpzdGFydCMjVXBwZXJQcm9w
ZXJ0eSgpOyB9IFwKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCMjVXBwZXJQcm9wZXJ0eSgpIHsgRm9y
d2FyZENsYXNzOjpzdG9wIyNVcHBlclByb3BlcnR5KCk7IH0KLQotI2RlZmluZSBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlNfSU5URVJOQUwoQ2xhc3NUeXBlLCBEZWNvcmF0ZWRUeXBlLCBT
dG9yYWdlVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotY2xhc3MgU1ZHQW5p
bWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eSA6IHB1YmxpYyBTVkdBbmltYXRlZFRlbXBsYXRl
PERlY29yYXRlZFR5cGU+IHsgXAotcHVibGljOiBcCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZH
QW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eT4gY3JlYXRlKGNvbnN0IENsYXNzVHlwZSog
ZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgXAotICAgIHsgXAot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0FuaW1hdGVkVGVtcGxhdGUjI1VwcGVyUHJv
cGVydHkoZWxlbWVudCwgYXR0cmlidXRlTmFtZSkpOyBcCi0gICAgfSBcCi0gICAgdmlydHVhbCBE
ZWNvcmF0ZWRUeXBlIGJhc2VWYWwoKSBjb25zdDsgXAotICAgIHZpcnR1YWwgdm9pZCBzZXRCYXNl
VmFsKERlY29yYXRlZFR5cGUpOyBcCi0gICAgdmlydHVhbCBEZWNvcmF0ZWRUeXBlIGFuaW1WYWwo
KSBjb25zdDsgXAotICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltVmFsKERlY29yYXRlZFR5cGUpOyBc
Ci0gICAgXAotcHJpdmF0ZTogXAotICAgIFNWR0FuaW1hdGVkVGVtcGxhdGUjI1VwcGVyUHJvcGVy
dHkoY29uc3QgQ2xhc3NUeXBlKiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOyBcCi0gICAgUmVmUHRy
PENsYXNzVHlwZT4gbV9lbGVtZW50OyBcCi19OyBcCi1wdWJsaWM6IFwKLSAgICBEZWNvcmF0ZWRU
eXBlIExvd2VyUHJvcGVydHkoKSBjb25zdDsgXAotICAgIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5
KERlY29yYXRlZFR5cGUpOyBcCi0gICAgRGVjb3JhdGVkVHlwZSBMb3dlclByb3BlcnR5IyNCYXNl
VmFsdWUoKSBjb25zdDsgXAotICAgIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5IyNCYXNlVmFsdWUo
RGVjb3JhdGVkVHlwZSk7IFwKLSAgICBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkVGVtcGxhdGUjI1Vw
cGVyUHJvcGVydHk+IExvd2VyUHJvcGVydHkjI0FuaW1hdGVkKCkgY29uc3Q7IFwKLSAgICB2b2lk
IHN5bmNocm9uaXplIyNVcHBlclByb3BlcnR5KCkgY29uc3Q7IFwKLSAgICBBbmltYXRlZFByb3Bl
cnR5U3luY2hyb25pemVyIHN5bmNocm9uaXplckZvciMjVXBwZXJQcm9wZXJ0eSgpIGNvbnN0OyBc
Ci0gICAgdm9pZCBzdGFydCMjVXBwZXJQcm9wZXJ0eSgpIGNvbnN0OyBcCi0gICAgdm9pZCBzdG9w
IyNVcHBlclByb3BlcnR5KCk7IFwKLVwKLXByaXZhdGU6IFwKLSAgICBtdXRhYmxlIFN5bmNocm9u
aXphYmxlVHlwZVdyYXBwZXI8U3RvcmFnZVR5cGU+IG1fIyNMb3dlclByb3BlcnR5OwotCi0jZGVm
aW5lIEFOSU1BVEVEX1BST1BFUlRZX1NUQVJUX0RFQ0xBUkFUSU9OUyBcCi1wdWJsaWM6IFwKLSAg
ICB2aXJ0dWFsIHZvaWQgaW52b2tlU1ZHUHJvcGVydHlTeW5jaHJvbml6ZXIoU3RyaW5nSW1wbCog
c3RyaW5nSW1wbCkgY29uc3QgXAotICAgIHsgXAotICAgICAgICBpZiAobV9zdmdQcm9wZXJ0eVVw
ZGF0ZU1hcC5jb250YWlucyhzdHJpbmdJbXBsKSkgeyBcCi0gICAgICAgICAgICBBbmltYXRlZFBy
b3BlcnR5U3luY2hyb25pemVyIHVwZGF0ZU1ldGhvZCA9IG1fc3ZnUHJvcGVydHlVcGRhdGVNYXAu
Z2V0KHN0cmluZ0ltcGwpOyBcCi0gICAgICAgICAgICAoKnVwZGF0ZU1ldGhvZCkodGhpcyk7IFwK
LSAgICAgICAgfSBcCi0gICAgfSBcCi1cCi0gICAgdmlydHVhbCB2b2lkIGludm9rZUFsbFNWR1By
b3BlcnR5U3luY2hyb25pemVycygpIGNvbnN0IFwKLSAgICB7IFwKLSAgICAgICAgSGFzaE1hcDxT
dHJpbmdJbXBsKiwgQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcj46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV9zdmdQcm9wZXJ0eVVwZGF0ZU1hcC5iZWdpbigpOyBcCi0gICAgICAgIGNvbnN0IEhh
c2hNYXA8U3RyaW5nSW1wbCosIEFuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI+Ojpjb25zdF9p
dGVyYXRvciBlbmQgPSBtX3N2Z1Byb3BlcnR5VXBkYXRlTWFwLmVuZCgpOyBcCi0gICAgICAgIGZv
ciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsgXAotICAgICAgICAgICAgQW5pbWF0ZWRQcm9wZXJ0eVN5
bmNocm9uaXplciB1cGRhdGVNZXRob2QgPSBpdC0+c2Vjb25kOyBcCi0gICAgICAgICAgICAoKnVw
ZGF0ZU1ldGhvZCkodGhpcyk7IFwKLSAgICAgICAgfSBcCi0gICAgfSBcCi1cCi0gICAgdmlydHVh
bCB2b2lkIGFkZFNWR1Byb3BlcnR5U3luY2hyb25pemVyKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lLCBBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyIG1ldGhvZCkgY29uc3QgXAotICAg
IHsgXAotICAgICAgICBtX3N2Z1Byb3BlcnR5VXBkYXRlTWFwLnNldChhdHRyTmFtZS5sb2NhbE5h
bWUoKS5pbXBsKCksIG1ldGhvZCk7IFwKLSAgICB9IFwKLVwKLXByaXZhdGU6IFwKLSAgICBtdXRh
YmxlIEhhc2hNYXA8U3RyaW5nSW1wbCosIEFuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI+IG1f
c3ZnUHJvcGVydHlVcGRhdGVNYXA7Ci0KLSNkZWZpbmUgQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlNfSU5URVJOQUwoQ2xhc3NOYW1lLCBDbGFzc1R5cGUsIERlY29yYXRlZFR5cGUsIFVwcGVy
UHJvcGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lLCBBdHRySWRlbnRpZmllciwgQ29udGV4
dEVsZW1lbnQpIFwKLXZvaWQgc3luY2hyb25pemUjI1VwcGVyUHJvcGVydHkjI0NsYXNzTmFtZSMj
Q2FsbEJhY2soY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkgXAoteyBcCi0gICAgc3RhdGljX2Nh
c3Q8Y29uc3QgQ2xhc3NUeXBlKj4oZWxlbWVudCktPnN5bmNocm9uaXplIyNVcHBlclByb3BlcnR5
KCk7IFwKLX0gXAotQ2xhc3NOYW1lOjpTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclByb3BlcnR5
OjpTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclByb3BlcnR5KGNvbnN0IENsYXNzVHlwZSogZWxl
bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgXAotOiBTVkdBbmltYXRl
ZFRlbXBsYXRlPERlY29yYXRlZFR5cGU+KGF0dHJpYnV0ZU5hbWUpLCBtX2VsZW1lbnQoY29uc3Rf
Y2FzdDxDbGFzc1R5cGUqPihlbGVtZW50KSkgeyB9IFwKLVwKLURlY29yYXRlZFR5cGUgQ2xhc3NO
YW1lOjpTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclByb3BlcnR5OjpiYXNlVmFsKCkgY29uc3Qg
XAoteyBcCi0gICAgcmV0dXJuIG1fZWxlbWVudC0+TG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCk7
IFwKLX0gXAotdm9pZCBDbGFzc05hbWU6OlNWR0FuaW1hdGVkVGVtcGxhdGUjI1VwcGVyUHJvcGVy
dHk6OnNldEJhc2VWYWwoRGVjb3JhdGVkVHlwZSBuZXdCYXNlVmFsKSBcCi17IFwKLSAgICBtX2Vs
ZW1lbnQtPnNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKG5ld0Jhc2VWYWwpOyBcCi19IFwK
LURlY29yYXRlZFR5cGUgQ2xhc3NOYW1lOjpTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclByb3Bl
cnR5OjphbmltVmFsKCkgY29uc3QgXAoteyBcCi0gICAgcmV0dXJuIG1fZWxlbWVudC0+TG93ZXJQ
cm9wZXJ0eSgpOyBcCi19IFwKLXZvaWQgQ2xhc3NOYW1lOjpTVkdBbmltYXRlZFRlbXBsYXRlIyNV
cHBlclByb3BlcnR5OjpzZXRBbmltVmFsKERlY29yYXRlZFR5cGUgbmV3QW5pbVZhbCkgXAoteyBc
Ci0gICAgbV9lbGVtZW50LT5zZXQjI1VwcGVyUHJvcGVydHkobmV3QW5pbVZhbCk7IFwKLX0gXAot
RGVjb3JhdGVkVHlwZSBDbGFzc05hbWU6Okxvd2VyUHJvcGVydHkoKSBjb25zdCBcCi17IFwKLSAg
ICByZXR1cm4gbV8jI0xvd2VyUHJvcGVydHk7IFwKLX0gXAotdm9pZCBDbGFzc05hbWU6OnNldCMj
VXBwZXJQcm9wZXJ0eShEZWNvcmF0ZWRUeXBlIG5ld1ZhbHVlKSBcCi17IFwKLSAgICBtXyMjTG93
ZXJQcm9wZXJ0eSA9IG5ld1ZhbHVlOyBcCi0gICAgXAotICAgIGNvbnN0IFNWR0VsZW1lbnQqIGNv
bnRleHQgPSBDb250ZXh0RWxlbWVudDsgXAotICAgIEFTU0VSVChjb250ZXh0KTsgXAotICAgIGNv
bnRleHQtPnNldFN5bmNocm9uaXplZFNWR0F0dHJpYnV0ZXMoZmFsc2UpOyBcCi19IFwKLURlY29y
YXRlZFR5cGUgQ2xhc3NOYW1lOjpMb3dlclByb3BlcnR5IyNCYXNlVmFsdWUoKSBjb25zdCBcCi17
IFwKLSAgICBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0ID0gQ29udGV4dEVsZW1lbnQ7IFwKLSAg
ICBBU1NFUlQoY29udGV4dCk7IFwKLSAgICBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIGV4dGVuc2lv
bnMgPSAoY29udGV4dC0+ZG9jdW1lbnQoKSA/IGNvbnRleHQtPmRvY3VtZW50KCktPmFjY2Vzc1NW
R0V4dGVuc2lvbnMoKSA6IDApOyBcCi0gICAgaWYgKGV4dGVuc2lvbnMgJiYgZXh0ZW5zaW9ucy0+
aGFzQmFzZVZhbHVlPERlY29yYXRlZFR5cGU+KGNvbnRleHQsIEF0dHJJZGVudGlmaWVyKSkgXAot
ICAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnMtPmJhc2VWYWx1ZTxEZWNvcmF0ZWRUeXBlPihjb250
ZXh0LCBBdHRySWRlbnRpZmllcik7IFwKLSAgICByZXR1cm4gTG93ZXJQcm9wZXJ0eSgpOyBcCi19
IFwKLVwKLXZvaWQgQ2xhc3NOYW1lOjpzZXQjI1VwcGVyUHJvcGVydHkjI0Jhc2VWYWx1ZShEZWNv
cmF0ZWRUeXBlIG5ld1ZhbHVlKSBcCi17IFwKLSAgICBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0
ID0gQ29udGV4dEVsZW1lbnQ7IFwKLSAgICBBU1NFUlQoY29udGV4dCk7IFwKLSAgICBTVkdEb2N1
bWVudEV4dGVuc2lvbnMqIGV4dGVuc2lvbnMgPSAoY29udGV4dC0+ZG9jdW1lbnQoKSA/IGNvbnRl
eHQtPmRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKSA6IDApOyBcCi0gICAgaWYgKGV4
dGVuc2lvbnMgJiYgZXh0ZW5zaW9ucy0+aGFzQmFzZVZhbHVlPERlY29yYXRlZFR5cGU+KGNvbnRl
eHQsIEF0dHJJZGVudGlmaWVyKSkgeyBcCi0gICAgICAgIGV4dGVuc2lvbnMtPnNldEJhc2VWYWx1
ZTxEZWNvcmF0ZWRUeXBlPihjb250ZXh0LCBBdHRySWRlbnRpZmllciwgbmV3VmFsdWUpOyBcCi0g
ICAgICAgIHJldHVybjsgXAotICAgIH0gXAotICAgIC8qIE9ubHkgdXBkYXRlIHN0b3JlZCBwcm9w
ZXJ0eSwgaWYgbm90IGFuaW1hdGluZyAqLyBcCi0gICAgc2V0IyNVcHBlclByb3BlcnR5KG5ld1Zh
bHVlKTsgXAotfSBcCi1cCi12b2lkIENsYXNzTmFtZTo6c3luY2hyb25pemUjI1VwcGVyUHJvcGVy
dHkoKSBjb25zdCBcCi17IFwKLSAgICBpZiAoIW1fIyNMb3dlclByb3BlcnR5Lm5lZWRzU3luY2hy
b25pemF0aW9uKCkpIFwKLSAgICAgICAgcmV0dXJuOyBcCi0gICAgY29uc3QgU1ZHRWxlbWVudCog
Y29udGV4dCA9IENvbnRleHRFbGVtZW50OyBcCi0gICAgQVNTRVJUKGNvbnRleHQpOyBcCi0gICAg
UmVmUHRyPENsYXNzTmFtZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eT4gYW5p
bWF0ZWRDbGFzcyhMb3dlclByb3BlcnR5IyNBbmltYXRlZCgpKTsgXAotICAgIEFTU0VSVChhbmlt
YXRlZENsYXNzKTsgXAotICAgIEF0b21pY1N0cmluZyB2YWx1ZShTVkdBbmltYXRlZFR5cGVWYWx1
ZTxEZWNvcmF0ZWRUeXBlPjo6dG9TdHJpbmcoYW5pbWF0ZWRDbGFzcy0+YmFzZVZhbCgpKSk7IFwK
LSAgICBOYW1lZEF0dHJNYXAqIG5hbWVkQXR0ck1hcCA9IGNvbnRleHQtPmF0dHJpYnV0ZXMoZmFs
c2UpOyBcCi0gICAgQXR0cmlidXRlKiBvbGQgPSBuYW1lZEF0dHJNYXAtPmdldEF0dHJpYnV0ZUl0
ZW0oQXR0ck5hbWUpOyBcCi0gICAgaWYgKG9sZCAmJiB2YWx1ZS5pc051bGwoKSkgXAotICAgICAg
ICBuYW1lZEF0dHJNYXAtPnJlbW92ZUF0dHJpYnV0ZShvbGQtPm5hbWUoKSk7IFwKLSAgICBlbHNl
IGlmICghb2xkICYmICF2YWx1ZS5pc051bGwoKSkgXAotICAgICAgICBuYW1lZEF0dHJNYXAtPmFk
ZEF0dHJpYnV0ZShjb25zdF9jYXN0PFNWR0VsZW1lbnQqPihjb250ZXh0KS0+Y3JlYXRlQXR0cmli
dXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIEF0dHJJZGVudGlmaWVyLCBudWxsQXRvbSksIHZh
bHVlKSk7IFwKLSAgICBlbHNlIGlmIChvbGQgJiYgIXZhbHVlLmlzTnVsbCgpKSBcCi0gICAgICAg
IG9sZC0+c2V0VmFsdWUodmFsdWUpOyBcCi0gICAgbV8jI0xvd2VyUHJvcGVydHkuc2V0U3luY2hy
b25pemVkKCk7IFwKLX0gXAotXAotdm9pZCBDbGFzc05hbWU6OnN0YXJ0IyNVcHBlclByb3BlcnR5
KCkgY29uc3QgXAoteyBcCi0gICAgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dCA9IENvbnRleHRF
bGVtZW50OyBcCi0gICAgQVNTRVJUKGNvbnRleHQpOyBcCi0gICAgU1ZHRG9jdW1lbnRFeHRlbnNp
b25zKiBleHRlbnNpb25zID0gKGNvbnRleHQtPmRvY3VtZW50KCkgPyBjb250ZXh0LT5kb2N1bWVu
dCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCkgOiAwKTsgXAotICAgIGlmIChleHRlbnNpb25zKSB7
IFwKLSAgICAgICAgQVNTRVJUKCFleHRlbnNpb25zLT5oYXNCYXNlVmFsdWU8RGVjb3JhdGVkVHlw
ZT4oY29udGV4dCwgQXR0cklkZW50aWZpZXIpKTsgXAotICAgICAgICBleHRlbnNpb25zLT5zZXRC
YXNlVmFsdWU8RGVjb3JhdGVkVHlwZT4oY29udGV4dCwgQXR0cklkZW50aWZpZXIsIExvd2VyUHJv
cGVydHkoKSk7IFwKLSAgICB9IFwKLX0gXAotXAotdm9pZCBDbGFzc05hbWU6OnN0b3AjI1VwcGVy
UHJvcGVydHkoKSBcCi17IFwKLSAgICBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0ID0gQ29udGV4
dEVsZW1lbnQ7IFwKLSAgICBBU1NFUlQoY29udGV4dCk7IFwKLSAgICBTVkdEb2N1bWVudEV4dGVu
c2lvbnMqIGV4dGVuc2lvbnMgPSAoY29udGV4dC0+ZG9jdW1lbnQoKSA/IGNvbnRleHQtPmRvY3Vt
ZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKSA6IDApOyBcCi0gICAgaWYgKGV4dGVuc2lvbnMp
IHsgXAotICAgICAgICBBU1NFUlQoZXh0ZW5zaW9ucy0+aGFzQmFzZVZhbHVlPERlY29yYXRlZFR5
cGU+KGNvbnRleHQsIEF0dHJJZGVudGlmaWVyKSk7IFwKLSAgICAgICAgc2V0IyNVcHBlclByb3Bl
cnR5KGV4dGVuc2lvbnMtPmJhc2VWYWx1ZTxEZWNvcmF0ZWRUeXBlPihjb250ZXh0LCBBdHRySWRl
bnRpZmllcikpOyBcCi0gICAgICAgIGV4dGVuc2lvbnMtPnJlbW92ZUJhc2VWYWx1ZTxEZWNvcmF0
ZWRUeXBlPihjb250ZXh0LCBBdHRySWRlbnRpZmllcik7IFwKLSAgICB9IFwKLX0gXAotXAotQW5p
bWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplciBDbGFzc05hbWU6OnN5bmNocm9uaXplckZvciMjVXBw
ZXJQcm9wZXJ0eSgpIGNvbnN0IFwKLXsgXAotICAgIHJldHVybiAmc3luY2hyb25pemUjI1VwcGVy
UHJvcGVydHkjI0NsYXNzTmFtZSMjQ2FsbEJhY2s7IFwKLX0gXAotUGFzc1JlZlB0cjxDbGFzc05h
bWU6OlNWR0FuaW1hdGVkVGVtcGxhdGUjI1VwcGVyUHJvcGVydHk+IENsYXNzTmFtZTo6TG93ZXJQ
cm9wZXJ0eSMjQW5pbWF0ZWQoKSBjb25zdCBcCi17IFwKLSAgICBjb25zdCBDbGFzc1R5cGUqIGNv
bnRleHQgPSBDb250ZXh0RWxlbWVudDsgXAotICAgIEFTU0VSVChjb250ZXh0KTsgXAotICAgIHJl
dHVybiBsb29rdXBPckNyZWF0ZVdyYXBwZXI8Q2xhc3NOYW1lOjpTVkdBbmltYXRlZFRlbXBsYXRl
IyNVcHBlclByb3BlcnR5LCBDbGFzc1R5cGU+KGNvbnRleHQsIEF0dHJOYW1lLCBBdHRySWRlbnRp
Zmllciwgc3luY2hyb25pemVyRm9yIyNVcHBlclByb3BlcnR5KCkpOyBcCi19Ci0KLS8vIEZvcndh
cmQgZGVjbGFyYXRpb25zLCB1c2VkIGluIGNsYXNzZXMgdGhhdCBpbmhlcml0IGZyb20gU1ZHRWxl
bWVudCwgYW5kIGFub3RoZXIgYmFzZSBjbGFzcyBpZS4gU1ZHVVJJUmVmZXJlbmNlIC0gd2hpY2gg
ZGVjbGFyZWQgaXQncyBwcm9wZXJ0aWVzIHVzaW5nIHRoZSBXSVRIX0NPTlRFWFQoLi4uKSBtYWNy
b3MpCi0jZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKEZvcndh
cmRDbGFzcywgQmFyZVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLUFOSU1B
VEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TX0lOVEVSTkFMKEZvcndhcmRDbGFzcywg
QmFyZVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCi0KLSNkZWZpbmUgQU5JTUFU
RURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlNfUkVGQ09VTlRFRChGb3J3YXJkQ2xhc3Ms
IEJhcmVUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1BTklNQVRFRF9QUk9Q
RVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OU19JTlRFUk5BTChGb3J3YXJkQ2xhc3MsIEJhcmVUeXBl
KiwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKLQotI2RlZmluZSBBTklNQVRFRF9QUk9Q
RVJUWV9FTVBUWV9ERUNMQVJBVElPTlMoQmFyZVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJv
cGVydHkpIFwKLUFOSU1BVEVEX1BST1BFUlRZX0VNUFRZX0RFQ0xBUkFUSU9OU19JTlRFUk5BTChC
YXJlVHlwZSwgQmFyZVR5cGUoKSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKLQotI2Rl
ZmluZSBBTklNQVRFRF9QUk9QRVJUWV9FTVBUWV9ERUNMQVJBVElPTlNfUkVGQ09VTlRFRChCYXJl
VHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotQU5JTUFURURfUFJPUEVSVFlf
RU1QVFlfREVDTEFSQVRJT05TX0lOVEVSTkFMKEJhcmVUeXBlKiwgMCwgVXBwZXJQcm9wZXJ0eSwg
TG93ZXJQcm9wZXJ0eSkKLQotLy8gTWFjcm9zIHVzZWQgZm9yIHByaW1pdGl2ZSB0eXBlcyBpbiBT
VkdFbGVtZW50IGRlcml2ZWQgY2xhc3NlcwotI2RlZmluZSBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0
eSkgXAotQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TX0lOVEVSTkFMKENsYXNzTmFtZSwg
QmFyZVR5cGUsIEJhcmVUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQotCi0jZGVm
aW5lIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKENsYXNzTmFtZSwgQmFyZVR5cGUsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lKSBcCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OU19JTlRFUk5BTChDbGFzc05hbWUsIENsYXNzTmFtZSwgQmFyZVR5cGUsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lLCBBdHRyTmFtZS5sb2NhbE5hbWUo
KSwgdGhpcykKLQotI2RlZmluZSBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19XSVRIX0NV
U1RPTV9JREVOVElGSUVSKENsYXNzTmFtZSwgQmFyZVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2Vy
UHJvcGVydHksIEF0dHJOYW1lLCBBdHRySWRlbnRpZmllcikgXAotQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlNfSU5URVJOQUwoQ2xhc3NOYW1lLCBDbGFzc05hbWUsIEJhcmVUeXBlLCBVcHBl
clByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZSwgQXR0cklkZW50aWZpZXIsIHRoaXMp
Ci0KLS8vIE1hY3JvcyB1c2VkIGZvciByZWZjb3VudGVkIHR5cGVzIGluIFNWR0VsZW1lbnQgZGVy
aXZlZCBjbGFzc2VzCi0jZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OU19SRUZD
T1VOVEVEKENsYXNzTmFtZSwgQmFyZVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkp
IFwKLUFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OU19JTlRFUk5BTChDbGFzc05hbWUsIEJh
cmVUeXBlKiwgUmVmUHRyPEJhcmVUeXBlPiwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkK
LQotI2RlZmluZSBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19SRUZDT1VOVEVEKENsYXNz
TmFtZSwgQmFyZVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lKSBc
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19JTlRFUk5BTChDbGFzc05hbWUsIENsYXNz
TmFtZSwgQmFyZVR5cGUqLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZSwg
QXR0ck5hbWUubG9jYWxOYW1lKCksIHRoaXMpCi0KLSNkZWZpbmUgQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlNfUkVGQ09VTlRFRF9XSVRIX0NVU1RPTV9JREVOVElGSUVSKENsYXNzTmFtZSwg
QmFyZVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lLCBBdHRySWRl
bnRpZmllcikgXAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfSU5URVJOQUwoQ2xhc3NO
YW1lLCBDbGFzc05hbWUsIEJhcmVUeXBlKiwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSwg
QXR0ck5hbWUsIEF0dHJJZGVudGlmaWVyLCB0aGlzKQotCi0vLyBNYWNyb3MgdXNlZCBmb3IgcHJp
bWl0aXZlIHR5cGVzIGluIG5vbi1TVkdFbGVtZW50IGJhc2UgY2xhc3NlcyAoaWUuIFNWR1VSSVJl
ZmVyZW5jZSBhY3RzIGFzIGJhc2UgY2xhc3MsIGdsdWVkIHVzaW5nIG11bHRpcGxlIGluaGVyaXRh
bmNlIGluIHRoZSBTVkcqRWxlbWVudCBjbGFzc2VzKQotI2RlZmluZSBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlNfV0lUSF9DT05URVhUKENsYXNzTmFtZSwgQmFyZVR5cGUsIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpIFwKLUFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OU19J
TlRFUk5BTChTVkdFbGVtZW50LCBCYXJlVHlwZSwgQmFyZVR5cGUsIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpCi0KLSNkZWZpbmUgQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfV0lU
SF9DT05URVhUKENsYXNzTmFtZSwgQmFyZVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHksIEF0dHJOYW1lKSBcCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19JTlRFUk5BTChD
bGFzc05hbWUsIFNWR0VsZW1lbnQsIEJhcmVUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3Bl
cnR5LCBBdHRyTmFtZSwgQXR0ck5hbWUubG9jYWxOYW1lKCksIGNvbnRleHRFbGVtZW50KCkpCi0K
LS8vIE1hY3JvcyB1c2VkIGZvciByZWZjb3VudGVkIHR5cGVzIGluIG5vbi1TVkdFbGVtZW50IGJh
c2UgY2xhc3NlcyAoaWUuIHNlZSBhYm92ZSkKLSNkZWZpbmUgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TX1JFRkNPVU5URURfV0lUSF9DT05URVhUKENsYXNzTmFtZSwgQmFyZVR5cGUsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLUFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OU19JTlRFUk5BTChTVkdFbGVtZW50LCBCYXJlVHlwZSosIFJlZlB0cjxCYXJlVHlwZT4sIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCi0KLSNkZWZpbmUgQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlNfUkVGQ09VTlRFRF9XSVRIX0NPTlRFWFQoQ2xhc3NOYW1lLCBCYXJlVHlwZSwg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSwgQXR0ck5hbWUpIFwKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TX0lOVEVSTkFMKENsYXNzTmFtZSwgU1ZHRWxlbWVudCwgQmFyZVR5cGUq
LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZSwgQXR0ck5hbWUubG9jYWxO
YW1lKCksIGNvbnRleHRFbGVtZW50KCkpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzIz
LDMzICs4MCw0NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2VuZFNWR0xv
YWRFdmVudElmUG9zc2libGUoYm9vbCBzZW5kUGFyZW50TG9hZEV2ZW50cyA9IGZhbHNlKTsKICAg
ICAgICAgCiAgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtKiBzdXBwbGVtZW50YWxUcmFu
c2Zvcm0oKSB7IHJldHVybiAwOyB9Ci0KLSAgICAgICAgLy8gRm9yd2FyZGVkIHByb3BlcnRpZXMg
KGRlY2xhcmVkL2RlZmluZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgaW5oZXJpdGFuY2Ugc3RydWN0
dXJlKQotCi0gICAgICAgIC8vIC0+IEZvciBTVkdVUklSZWZlcmVuY2UKLSAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfRU1QVFlfREVDTEFSQVRJT05TKFN0cmluZywgSHJlZiwgaHJlZikKLQotICAg
ICAgICAvLyAtPiBGb3IgU1ZHRml0VG9WaWV3Qm94Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0VNUFRZX0RFQ0xBUkFUSU9OUyhGbG9hdFJlY3QsIFZpZXdCb3gsIHZpZXdCb3gpICAgIAotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9FTVBUWV9ERUNMQVJBVElPTlNfUkVGQ09VTlRFRChTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJh
dGlvKQotCi0gICAgICAgIC8vIC0+IEZvciBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0VNUFRZX0RFQ0xBUkFUSU9OUyhib29sLCBFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGUsIEV4Y2VwdGlv
bkNvZGUmIGVjLCBib29sIHRlbXBFdmVudCA9IGZhbHNlKTsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgaW52b2tlU1ZHUHJvcGVydHlTeW5jaHJvbml6ZXIoU3RyaW5nSW1wbCopIGNvbnN0IHsgfQot
ICAgICAgICB2aXJ0dWFsIHZvaWQgaW52b2tlQWxsU1ZHUHJvcGVydHlTeW5jaHJvbml6ZXJzKCkg
Y29uc3QgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGRTVkdQcm9wZXJ0eVN5bmNocm9uaXpl
cihjb25zdCBRdWFsaWZpZWROYW1lJiwgQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcikgY29u
c3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVBbmltYXRlZFNWR0F0dHJpYnV0ZShTdHJpbmdJbXBsKikgY29uc3Q7CisgICAgICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHNldFN5bmNocm9uaXplZFNWR0F0dHJpYnV0ZXMoYm9vbCkg
Y29uc3Q7CiAKKyAgICAgICAgLy8gSW5saW5lZCBtZXRob2RzIGhhbmRsaW5nIFNWRyBwcm9wZXJ0
eSBzeW5jaHJvbml6YXRpb24KKyAgICAgICAgdm9pZCBpbnZva2VTVkdQcm9wZXJ0eVN5bmNocm9u
aXplcihjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChtX3N2Z1Byb3BlcnR5TWFwLmNvbnRhaW5zKG5hbWUpKSB7CisgICAgICAgICAgICAgICAgY29u
c3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2UqIHByb3BlcnR5ID0gbV9zdmdQcm9wZXJ0eU1hcC5n
ZXQobmFtZSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5KTsKKworICAgICAgICAg
ICAgICAgIHByb3BlcnR5LT5zeW5jaHJvbml6ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgdm9pZCBpbnZva2VBbGxTVkdQcm9wZXJ0eVN5bmNocm9uaXplcnMoKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgY29uc3QgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUJhc2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N2Z1Byb3BlcnR5TWFwLmJl
Z2luKCk7CisgICAgICAgICAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgY29uc3QgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUJhc2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdmdQcm9wZXJ0eU1hcC5l
bmQoKTsKKyAgICAgICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAg
ICAgICBjb25zdCBTVkdBbmltYXRlZFByb3BlcnR5QmFzZSogcHJvcGVydHkgPSBpdC0+c2Vjb25k
OworICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7CisKKyAgICAgICAgICAgICAgICBw
cm9wZXJ0eS0+c3luY2hyb25pemUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIHZvaWQgYWRkU1ZHUHJvcGVydHlTeW5jaHJvbml6ZXIoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUsIGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHlCYXNlJiBiYXNlKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICBtX3N2Z1Byb3BlcnR5TWFwLnNldChhdHRyTmFtZS5sb2NhbE5h
bWUoKSwgJmJhc2UpOworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGFk
ZFNWR0V2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEF0
dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3Vy
Y2VzKCk7CiAKICAgICAgICAgTm9kZSogbV9zaGFkb3dQYXJlbnQ7CisgICAgICAgIG11dGFibGUg
SGFzaE1hcDxTdHJpbmcsIGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHlCYXNlKj4gbV9zdmdQcm9w
ZXJ0eU1hcDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIApJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0VsbGlwc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdF
bGxpcHNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICszNywxMCBAQCBTVkdF
bGxpcHNlRWxlbWVudDo6U1ZHRWxsaXBzZUVsZW1lbnQoY29uCiAgICAgLCBTVkdUZXN0cygpCiAg
ICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgp
Ci0gICAgLCBtX2N4KExlbmd0aE1vZGVXaWR0aCkKLSAgICAsIG1fY3koTGVuZ3RoTW9kZUhlaWdo
dCkKLSAgICAsIG1fcngoTGVuZ3RoTW9kZVdpZHRoKQotICAgICwgbV9yeShMZW5ndGhNb2RlSGVp
Z2h0KQorICAgICwgbV9jeCh0aGlzLCBTVkdOYW1lczo6Y3hBdHRyLCBMZW5ndGhNb2RlV2lkdGgp
CisgICAgLCBtX2N5KHRoaXMsIFNWR05hbWVzOjpjeUF0dHIsIExlbmd0aE1vZGVIZWlnaHQpCisg
ICAgLCBtX3J4KHRoaXMsIFNWR05hbWVzOjpyeEF0dHIsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAs
IG1fcnkodGhpcywgU1ZHTmFtZXM6OnJ5QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCkKIHsKIH0gICAg
CiAKQEAgLTQ4LDExICs0OCw2IEBAIFNWR0VsbGlwc2VFbGVtZW50Ojp+U1ZHRWxsaXBzZUVsZW1l
bnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdFbGxpcHNlRWxl
bWVudCwgU1ZHTGVuZ3RoLCBDeCwgY3gsIFNWR05hbWVzOjpjeEF0dHIpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBDeSwgY3ksIFNW
R05hbWVzOjpjeUF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdFbGxpcHNl
RWxlbWVudCwgU1ZHTGVuZ3RoLCBSeCwgcngsIFNWR05hbWVzOjpyeEF0dHIpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBSeSwgcnks
IFNWR05hbWVzOjpyeUF0dHIpCi0KIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjpjeEF0dHIpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHJldmlz
aW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsMTIgKzUxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCBib29sIGhhc1JlbGF0aXZlVmFsdWVzKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQotIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwgQ3gsIGN4KQotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwg
Q3ksIGN5KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRWxsaXBz
ZUVsZW1lbnQsIFNWR0xlbmd0aCwgUngsIHJ4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwgUnksIHJ5KQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR05h
bWVzOjplbGxpcHNlVGFnU3RyaW5nLCBTVkdOYW1lczo6Y3hBdHRyU3RyaW5nLCBTVkdMZW5ndGgs
IEN4LCBjeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0VsbGlw
c2VFbGVtZW50LCBTVkdOYW1lczo6ZWxsaXBzZVRhZ1N0cmluZywgU1ZHTmFtZXM6OmN5QXR0clN0
cmluZywgU1ZHTGVuZ3RoLCBDeSwgY3kpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OmVsbGlwc2VUYWdTdHJpbmcsIFNW
R05hbWVzOjpyeEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgUngsIHJ4KQorICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR05hbWVzOjplbGxp
cHNlVGFnU3RyaW5nLCBTVkdOYW1lczo6cnlBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFJ5LCByeSkK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJD
b3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsOCArMzEsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjaGFyIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWRJZGVudGlmaWVyW10gPSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCI7CisKIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OlNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQoKQotICAgIDogbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKGZhbHNl
KQorICAgIDogbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKHRoaXMsIFNWR05hbWVzOjpleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgZmFsc2UpCiB7CiB9CiAKQEAgLTQwLDggKzQyLDYg
QEAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6flNWR0V4dGVybgogewogfQogCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19XSVRIX0NPTlRFWFQoU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyKQot
CiBib29sIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05h
bWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0cikgewpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJD
b3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDExICsyNCwxMSBAQAogI2RlZmluZSBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkX2gK
IAogI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgIlNW
R0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisgICAgZXh0ZXJuIGNoYXIgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZElkZW50aWZpZXJbXTsKICAgICBjbGFzcyBNYXBwZWRB
dHRyaWJ1dGU7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyB3cm9uZyBmb3Igc2V2ZXJhbCByZWFz
b25zOgpAQCAtNDksMTEgKzQ5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9v
bCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgYm9vbCBp
c0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIHByb3RlY3RlZDoK
ICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0
ID0gMDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OU19XSVRIX0NPTlRFWFQoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJZGVudGlmaWVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWRBdHRyU3RyaW5nLCBib29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQmxl
bmRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFNWR0ZFQmxlbmRFbGVtZW50OjpTVkdGRUJsZW5kRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKLSAgICAsIG1fbW9kZShGRUJM
RU5EX01PREVfTk9STUFMKQorICAgICwgbV9pbjEodGhpcywgU1ZHTmFtZXM6OmluQXR0cikKKyAg
ICAsIG1faW4yKHRoaXMsIFNWR05hbWVzOjppbjJBdHRyKQorICAgICwgbV9tb2RlKHRoaXMsIFNW
R05hbWVzOjptb2RlQXR0ciwgRkVCTEVORF9NT0RFX05PUk1BTCkKICAgICAsIG1fZmlsdGVyRWZm
ZWN0KDApCiB7CiB9CkBAIC00MCwxMCArNDIsNiBAQCBTVkdGRUJsZW5kRWxlbWVudDo6flNWR0ZF
QmxlbmRFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
RkVCbGVuZEVsZW1lbnQsIFN0cmluZywgSW4xLCBpbjEsIFNWR05hbWVzOjppbkF0dHIpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUJsZW5kRWxlbWVudCwgU3RyaW5nLCBJbjIs
IGluMiwgU1ZHTmFtZXM6OmluMkF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdGRUJsZW5kRWxlbWVudCwgaW50LCBNb2RlLCBtb2RlLCBTVkdOYW1lczo6bW9kZUF0dHIpCi0K
IHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMyArMzksMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZp
bHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwogICAgICAgICBib29sIGJ1aWxk
KEZpbHRlckJ1aWxkZXIqKTsKIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBjb25z
dCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KLQog
ICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdG
RUJsZW5kRWxlbWVudCwgU3RyaW5nLCBJbjEsIGluMSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ZFQmxlbmRFbGVtZW50LCBTdHJpbmcsIEluMiwgaW4yKQotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVCbGVuZEVsZW1lbnQsIGlu
dCwgTW9kZSwgbW9kZSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R0ZFQmxlbmRFbGVtZW50LCBTVkdOYW1lczo6ZmVCbGVuZFRhZ1N0cmluZywgU1ZHTmFtZXM6Omlu
QXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdOYW1lczo6ZmVCbGVuZFRhZ1N0cmlu
ZywgU1ZHTmFtZXM6OmluMkF0dHJTdHJpbmcsIFN0cmluZywgSW4yLCBpbjIpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUJsZW5kRWxlbWVudCwgU1ZHTmFtZXM6
OmZlQmxlbmRUYWdTdHJpbmcsIFNWR05hbWVzOjptb2RlQXR0clN0cmluZywgaW50LCBNb2RlLCBt
b2RlKQogCiAgICAgICAgIG11dGFibGUgUmVmUHRyPEZFQmxlbmQ+IG1fZmlsdGVyRWZmZWN0Owog
ICAgIH07CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKLSAgICAsIG1fdHlwZShGRUNPTE9S
TUFUUklYX1RZUEVfVU5LTk9XTikKLSAgICAsIG1fdmFsdWVzKFNWR051bWJlckxpc3Q6OmNyZWF0
ZShTVkdOYW1lczo6dmFsdWVzQXR0cikpCisgICAgLCBtX2luMSh0aGlzLCBTVkdOYW1lczo6aW5B
dHRyKQorICAgICwgbV90eXBlKHRoaXMsIFNWR05hbWVzOjp0eXBlQXR0ciwgRkVDT0xPUk1BVFJJ
WF9UWVBFX1VOS05PV04pCisgICAgLCBtX3ZhbHVlcyh0aGlzLCBTVkdOYW1lczo6dmFsdWVzQXR0
ciwgU1ZHTnVtYmVyTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjp2YWx1ZXNBdHRyKSkKICAgICAsIG1f
ZmlsdGVyRWZmZWN0KDApCiB7CiB9CkBAIC00MywxMCArNDQsNiBAQCBTVkdGRUNvbG9yTWF0cml4
RWxlbWVudDo6flNWR0ZFQ29sb3JNYXRyCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTdHJpbmcsIEluMSwgaW4xLCBTVkdOYW1l
czo6aW5BdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQsIGludCwgVHlwZSwgdHlwZSwgU1ZHTmFtZXM6OnR5cGVBdHRyKQotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlNfUkVGQ09VTlRFRChTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwg
U1ZHTnVtYmVyTGlzdCwgVmFsdWVzLCB2YWx1ZXMsIFNWR05hbWVzOjp2YWx1ZXNBdHRyKQotCiB2
b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVl
KCk7CkBAIC05Nyw1ICs5NCwzIEBAIGJvb2wgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxk
KEZpbHQKIH0gLy9uYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQot
Ly8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5o
CShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxMSBAQAogI2lmIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJGRUNvbG9yTWF0cml4LmgiCiAjaW5jbHVk
ZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiU1ZH
TnVtYmVyTGlzdC5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQotewotICAgIGNsYXNzIFNWR051bWJl
ckxpc3Q7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTVkdGRUNvbG9yTWF0cml4
RWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMKLSAg
ICB7CisgICAgY2xhc3MgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAg
ICAgICB2aXJ0dWFsIH5TVkdGRUNvbG9yTWF0cml4RWxlbWVudCgpOwpAQCAtNDEsMTMgKzM5LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBm
aWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKICAgICAgICAgYm9vbCBidWls
ZChGaWx0ZXJCdWlsZGVyKik7CiAKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgY29u
c3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9Ci0K
ICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQsIFN0cmluZywgSW4xLCBpbjEpCi0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgaW50LCBUeXBl
LCB0eXBlKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlNfUkVGQ09VTlRF
RChTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTnVtYmVyTGlzdCwgVmFsdWVzLCB2YWx1ZXMp
CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbG9yTWF0cml4
RWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29sb3JNYXRyaXhUYWdTdHJpbmcsIFNWR05hbWVzOjppbkF0
dHJTdHJpbmcsIFN0cmluZywgSW4xLCBpbjEpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29sb3JNYXRy
aXhUYWdTdHJpbmcsIFNWR05hbWVzOjp0eXBlQXR0clN0cmluZywgaW50LCBUeXBlLCB0eXBlKQor
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQsIFNWR05hbWVzOjpmZUNvbG9yTWF0cml4VGFnU3RyaW5nLCBTVkdOYW1lczo6dmFsdWVz
QXR0clN0cmluZywgU1ZHTnVtYmVyTGlzdCwgVmFsdWVzLCB2YWx1ZXMpCiAKICAgICAgICAgbXV0
YWJsZSBSZWZQdHI8RkVDb2xvck1hdHJpeD4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKQEAgLTU2
LDUgKzUxLDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAj
ZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudDo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCisgICAgLCBtX2luMSh0aGlzLCBTVkdOYW1lczo6
aW5BdHRyKQogICAgICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsKIH0KQEAgLTQ2LDggKzQ3LDYgQEAg
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6On5TVkdGRUNvbQogewogfQogCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCwgU3Ry
aW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0cikKLQogdm9pZCBTVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRy
KQogewogICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCShyZXZpc2lvbiAzNTIw
NSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDExICsyNyw5IEBACiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRkVDb21wb25lbnRUcmFuc2Zlci5oIgog
Ci1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3Mg
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzCi0gICAgeworICAgIGNsYXNzIFNWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50IDogcHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7
CiAgICAgcHVibGljOgogICAgICAgICBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQoKTsKQEAgLTQwLDExICszOCw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVz
b3VyY2VGaWx0ZXIqKSBjb25zdDsKICAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7
CiAKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9Ci0KICAgICBwcml2YXRlOgotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckVsZW1lbnQsIFN0cmluZywgSW4xLCBpbjEpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29t
cG9uZW50VHJhbnNmZXJUYWdTdHJpbmcsIFNWR05hbWVzOjppbkF0dHJTdHJpbmcsIFN0cmluZywg
SW4xLCBpbjEpCiAKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVDb21wb25lbnRUcmFuc2Zlcj4g
bV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsMTMgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKLSAgICAsIG1fX29w
ZXJhdG9yKEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIpCi0gICAgLCBtX2sxKDAuMGYpCi0gICAg
LCBtX2syKDAuMGYpCi0gICAgLCBtX2szKDAuMGYpCi0gICAgLCBtX2s0KDAuMGYpCisgICAgLCBt
X2luMSh0aGlzLCBTVkdOYW1lczo6aW5BdHRyKQorICAgICwgbV9pbjIodGhpcywgU1ZHTmFtZXM6
OmluMkF0dHIpCisgICAgLCBtX19vcGVyYXRvcih0aGlzLCBTVkdOYW1lczo6b3BlcmF0b3JBdHRy
LCBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSKQorICAgICwgbV9rMSh0aGlzLCBTVkdOYW1lczo6
azFBdHRyKQorICAgICwgbV9rMih0aGlzLCBTVkdOYW1lczo6azJBdHRyKQorICAgICwgbV9rMyh0
aGlzLCBTVkdOYW1lczo6azNBdHRyKQorICAgICwgbV9rNCh0aGlzLCBTVkdOYW1lczo6azRBdHRy
KQogICAgICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsKIH0KQEAgLTQ1LDE0ICs0Nyw2IEBAIFNWR0ZF
Q29tcG9zaXRlRWxlbWVudDo6flNWR0ZFQ29tcG9zaXRlRWwKIHsKIH0KIAotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTdHJpbmcsIEluMSwgaW4x
LCBTVkdOYW1lczo6aW5BdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVD
b21wb3NpdGVFbGVtZW50LCBTdHJpbmcsIEluMiwgaW4yLCBTVkdOYW1lczo6aW4yQXR0cikKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgaW50LCBf
b3BlcmF0b3IsIF9vcGVyYXRvciwgU1ZHTmFtZXM6Om9wZXJhdG9yQXR0cikKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgZmxvYXQsIEsxLCBrMSwg
U1ZHTmFtZXM6OmsxQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFQ29t
cG9zaXRlRWxlbWVudCwgZmxvYXQsIEsyLCBrMiwgU1ZHTmFtZXM6OmsyQXR0cikKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgZmxvYXQsIEszLCBr
MywgU1ZHTmFtZXM6OmszQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZF
Q29tcG9zaXRlRWxlbWVudCwgZmxvYXQsIEs0LCBrNCwgU1ZHTmFtZXM6Oms0QXR0cikKLQogdm9p
ZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZSAqYXR0cikKIHsKICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsK
QEAgLTExMCw1ICsxMDQsMyBAQCBib29sIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoRmls
dGVyCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTEg
KzI3LDkgQEAKICNpbmNsdWRlICJGRUNvbXBvc2l0ZS5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgU1ZHRkVDb21wb3NpdGVFbGVtZW50IDogcHVi
bGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcwotICAgIHsKKyAgICBjbGFz
cyBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0ZFQ29tcG9zaXRlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZH
RkVDb21wb3NpdGVFbGVtZW50KCk7CkBAIC00MCwxNyArMzgsMTQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUKICAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNv
dXJjZUZpbHRlciopIGNvbnN0OwogICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsK
IAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KLQogICAgIHByaXZhdGU6Ci0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQs
IFN0cmluZywgSW4xLCBpbjEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFN0cmluZywgSW4yLCBpbjIpCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIGludCwgX29w
ZXJhdG9yLCBfb3BlcmF0b3IpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIGZsb2F0LCBLMSwgazEpCi0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIGZsb2F0LCBLMiwg
azIpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbXBvc2l0
ZUVsZW1lbnQsIGZsb2F0LCBLMywgazMpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIGZsb2F0LCBLNCwgazQpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05h
bWVzOjpmZUNvbXBvc2l0ZVRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5n
LCBJbjEsIGluMSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZF
Q29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29tcG9zaXRlVGFnU3RyaW5nLCBTVkdOYW1l
czo6aW4yQXR0clN0cmluZywgU3RyaW5nLCBJbjIsIGluMikKKyAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29t
cG9zaXRlVGFnU3RyaW5nLCBTVkdOYW1lczo6b3BlcmF0b3JBdHRyU3RyaW5nLCBpbnQsIF9vcGVy
YXRvciwgX29wZXJhdG9yKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6ZmVDb21wb3NpdGVUYWdTdHJpbmcsIFNW
R05hbWVzOjprMUF0dHJTdHJpbmcsIGZsb2F0LCBLMSwgazEpCisgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjpmZUNv
bXBvc2l0ZVRhZ1N0cmluZywgU1ZHTmFtZXM6OmsyQXR0clN0cmluZywgZmxvYXQsIEsyLCBrMikK
KyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxl
bWVudCwgU1ZHTmFtZXM6OmZlQ29tcG9zaXRlVGFnU3RyaW5nLCBTVkdOYW1lczo6azNBdHRyU3Ry
aW5nLCBmbG9hdCwgSzMsIGszKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6ZmVDb21wb3NpdGVUYWdTdHJpbmcs
IFNWR05hbWVzOjprNEF0dHJTdHJpbmcsIGZsb2F0LCBLNCwgazQpCiAKICAgICAgICAgbXV0YWJs
ZSBSZWZQdHI8RkVDb21wb3NpdGU+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CkBAIC01OSw1ICs1
NCwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlm
Ci0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMiArMzQsMTYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjaGFyIFNWR0tlcm5lbFVuaXRMZW5ndGhYSWRl
bnRpZmllcltdID0gIlNWR0tlcm5lbFVuaXRMZW5ndGhYIjsKK2NoYXIgU1ZHS2VybmVsVW5pdExl
bmd0aFlJZGVudGlmaWVyW10gPSAiU1ZHS2VybmVsVW5pdExlbmd0aFkiOworCiBTVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKLSAgICAsIG1fZGlmZnVzZUNvbnN0
YW50KDEuMGYpCi0gICAgLCBtX3N1cmZhY2VTY2FsZSgxLjBmKQotICAgICwgbV9rZXJuZWxVbml0
TGVuZ3RoWCgwLjBmKQotICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoWSgwLjBmKQorICAgICwgbV9p
bjEodGhpcywgU1ZHTmFtZXM6OmluQXR0cikKKyAgICAsIG1fZGlmZnVzZUNvbnN0YW50KHRoaXMs
IFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyLCAxLjBmKQorICAgICwgbV9zdXJmYWNlU2Nh
bGUodGhpcywgU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIsIDEuMGYpCisgICAgLCBtX2tlcm5l
bFVuaXRMZW5ndGhYKHRoaXMsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikKKyAgICAs
IG1fa2VybmVsVW5pdExlbmd0aFkodGhpcywgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRy
KQogICAgICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsKIH0KQEAgLTQ4LDEyICs1Miw2IEBAIFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6flNWR0ZFRGlmZnUKIHsKIH0KIAotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTdHJpbmcsIElu
MSwgaW4xLCBTVkdOYW1lczo6aW5BdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBmbG9hdCwgRGlmZnVzZUNvbnN0YW50LCBkaWZm
dXNlQ29uc3RhbnQsIFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyKQotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBmbG9hdCwgU3Vy
ZmFjZVNjYWxlLCBzdXJmYWNlU2NhbGUsIFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyKQotQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfV0lUSF9DVVNUT01fSURFTlRJRklFUihTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQsIGZsb2F0LCBLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5p
dExlbmd0aFgsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwgImtlcm5lbFVuaXRMZW5n
dGhYIikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ1VTVE9NX0lERU5USUZJ
RVIoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBmbG9hdCwgS2VybmVsVW5pdExlbmd0aFks
IGtlcm5lbFVuaXRMZW5ndGhZLCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsICJrZXJu
ZWxVbml0TGVuZ3RoWSIpCi0KIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiB7CiAgICAgY29uc3QgU3Ry
aW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkBAIC0xMTksNSArMTE3LDMgQEAgTGlnaHRTb3Vy
Y2UqIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudAogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNW
RykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxNCBAQAog
I2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyAgICBleHRlcm4gY2hhciBTVkdLZXJuZWxVbml0TGVuZ3RoWElk
ZW50aWZpZXJbXTsKKyAgICBleHRlcm4gY2hhciBTVkdLZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZp
ZXJbXTsKKwogICAgIGNsYXNzIEZFRGlmZnVzZUxpZ2h0aW5nOwogICAgIGNsYXNzIFNWR0NvbG9y
OwogCi0gICAgY2xhc3MgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50IDogcHVibGljIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcwotICAgIHsKKyAgICBjbGFzcyBTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KCk7CkBAIC00MCwxNSArNDMsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZm
ZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CiAgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVy
QnVpbGRlciopOwogCi0gICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0Vs
ZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQotCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudCwgU3RyaW5nLCBJbjEsIGluMSkKLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgZmxvYXQsIERp
ZmZ1c2VDb25zdGFudCwgZGlmZnVzZUNvbnN0YW50KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBmbG9hdCwgU3VyZmFj
ZVNjYWxlLCBzdXJmYWNlU2NhbGUpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIGZsb2F0LCBLZXJuZWxVbml0TGVuZ3Ro
WCwga2VybmVsVW5pdExlbmd0aFgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIGZsb2F0LCBLZXJuZWxVbml0TGVuZ3Ro
WSwga2VybmVsVW5pdExlbmd0aFkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpmZURpZmZ1c2VMaWdo
dGluZ1RhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkK
KyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudCwgU1ZHTmFtZXM6OmZlRGlmZnVzZUxpZ2h0aW5nVGFnU3RyaW5nLCBTVkdOYW1l
czo6ZGlmZnVzZUNvbnN0YW50QXR0clN0cmluZywgZmxvYXQsIERpZmZ1c2VDb25zdGFudCwgZGlm
ZnVzZUNvbnN0YW50KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVEaWZmdXNlTGlnaHRpbmdUYWdT
dHJpbmcsIFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyU3RyaW5nLCBmbG9hdCwgU3VyZmFjZVNj
YWxlLCBzdXJmYWNlU2NhbGUpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpmZURpZmZ1c2VMaWdodGlu
Z1RhZ1N0cmluZywgU1ZHS2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyLCBmbG9hdCwgS2VybmVs
VW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVE
aWZmdXNlTGlnaHRpbmdUYWdTdHJpbmcsIFNWR0tlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllciwg
ZmxvYXQsIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKIAogICAgICAgICBM
aWdodFNvdXJjZSogZmluZExpZ2h0cygpIGNvbnN0OwogICAgICAgICAKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisr
KyBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw5ICsyOSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudDo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jKQotICAgICwgbV94Q2hhbm5lbFNlbGVj
dG9yKENIQU5ORUxfQSkKLSAgICAsIG1feUNoYW5uZWxTZWxlY3RvcihDSEFOTkVMX0EpCi0gICAg
LCBtX3NjYWxlKDAuMGYpCisgICAgLCBtX2luMSh0aGlzLCBTVkdOYW1lczo6aW5BdHRyKQorICAg
ICwgbV9pbjIodGhpcywgU1ZHTmFtZXM6OmluMkF0dHIpCisgICAgLCBtX3hDaGFubmVsU2VsZWN0
b3IodGhpcywgU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyLCBDSEFOTkVMX0EpCisgICAg
LCBtX3lDaGFubmVsU2VsZWN0b3IodGhpcywgU1ZHTmFtZXM6OnlDaGFubmVsU2VsZWN0b3JBdHRy
LCBDSEFOTkVMX0EpCisgICAgLCBtX3NjYWxlKHRoaXMsIFNWR05hbWVzOjpzY2FsZUF0dHIpCiAg
ICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewogfQpAQCAtNDAsMTIgKzQyLDYgQEAgU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50Ojp+U1ZHRkVEaXNwbAogewogfQogCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFN0cmluZywgSW4xLCBp
bjEsIFNWR05hbWVzOjppbkF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFN0cmluZywgSW4yLCBpbjIsIFNWR05hbWVzOjppbjJB
dHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50LCBpbnQsIFhDaGFubmVsU2VsZWN0b3IsIHhDaGFubmVsU2VsZWN0b3IsIFNWR05hbWVz
Ojp4Q2hhbm5lbFNlbGVjdG9yQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgaW50LCBZQ2hhbm5lbFNlbGVjdG9yLCB5Q2hhbm5l
bFNlbGVjdG9yLCBTVkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHIpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIGZsb2F0LCBTY2Fs
ZSwgc2NhbGUsIFNWR05hbWVzOjpzY2FsZUF0dHIpCi0KIENoYW5uZWxTZWxlY3RvclR5cGUgU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpzdHJpbmdUb0NoYW5uZWwoY29uc3QgU3RyaW5nJiBr
ZXkpCiB7CiAgICAgaWYgKGtleSA9PSAiUiIpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTUgKzM3LDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3Qq
IGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwogICAgICAgICBib29sIGJ1
aWxkKEZpbHRlckJ1aWxkZXIqKTsKICAgICAgICAgCi0gICAgcHJvdGVjdGVkOgotICAgICAgICB2
aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
dGhpczsgfQotCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU3RyaW5nLCBJbjEsIGluMSkKLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudCwgU3RyaW5nLCBJbjIsIGluMikKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgaW50LCBYQ2hhbm5lbFNlbGVj
dG9yLCB4Q2hhbm5lbFNlbGVjdG9yKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBpbnQsIFlDaGFubmVsU2VsZWN0b3Is
IHlDaGFubmVsU2VsZWN0b3IpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIGZsb2F0LCBTY2FsZSwgc2NhbGUpCisgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQsIFNWR05hbWVzOjpmZURpc3BsYWNlbWVudE1hcFRhZ1N0cmluZywgU1ZHTmFtZXM6Omlu
QXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OmZlRGlz
cGxhY2VtZW50TWFwVGFnU3RyaW5nLCBTVkdOYW1lczo6aW4yQXR0clN0cmluZywgU3RyaW5nLCBJ
bjIsIGluMikKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OmZlRGlzcGxhY2VtZW50TWFwVGFnU3RyaW5n
LCBTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHJTdHJpbmcsIGludCwgWENoYW5uZWxTZWxl
Y3RvciwgeENoYW5uZWxTZWxlY3RvcikKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OmZlRGlzcGxhY2Vt
ZW50TWFwVGFnU3RyaW5nLCBTVkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHJTdHJpbmcsIGlu
dCwgWUNoYW5uZWxTZWxlY3RvciwgeUNoYW5uZWxTZWxlY3RvcikKKyAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFt
ZXM6OmZlRGlzcGxhY2VtZW50TWFwVGFnU3RyaW5nLCBTVkdOYW1lczo6c2NhbGVBdHRyU3RyaW5n
LCBmbG9hdCwgU2NhbGUsIHNjYWxlKQogCiAgICAgICAgIG11dGFibGUgUmVmUHRyPEZFRGlzcGxh
Y2VtZW50TWFwPiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RkVGbG9vZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxl
bWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAg
ICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZp
bHRlciopIGNvbnN0OwogICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKIAotICAg
IHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KLQogICAgIHByaXZhdGU6CiAgICAgICAgIG11
dGFibGUgUmVmUHRyPEZFRmxvb2Q+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1KQorKysg
V2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsMTAgKzMxLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2hhciBTVkdTdGRE
ZXZpYXRpb25YQXR0cklkZW50aWZpZXJbXSA9ICJTVkdTdGREZXZpYXRpb25YQXR0ciI7CitjaGFy
IFNWR1N0ZERldmlhdGlvbllBdHRySWRlbnRpZmllcltdID0gIlNWR1N0ZERldmlhdGlvbllBdHRy
IjsKKwogU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX3N0
ZERldmlhdGlvblgoMC4wZikKLSAgICAsIG1fc3RkRGV2aWF0aW9uWSgwLjBmKQorICAgICwgbV9p
bjEodGhpcywgU1ZHTmFtZXM6OmluQXR0cikKKyAgICAsIG1fc3RkRGV2aWF0aW9uWCh0aGlzLCBT
VkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0cikKKyAgICAsIG1fc3RkRGV2aWF0aW9uWSh0aGlzLCBT
VkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0cikKICAgICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7CiB9
CkBAIC00MywxMCArNDcsNiBAQCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6On5TVkdGRUdhdXNz
aWFuCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudCwgU3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0cikKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ1VTVE9NX0lERU5USUZJRVIoU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LCBmbG9hdCwgU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCwgU1ZHTmFt
ZXM6OnN0ZERldmlhdGlvbkF0dHIsICJzdGREZXZpYXRpb25YIikKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TX1dJVEhfQ1VTVE9NX0lERU5USUZJRVIoU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LCBmbG9hdCwgU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSwgU1ZHTmFtZXM6OnN0ZERl
dmlhdGlvbkF0dHIsICJzdGREZXZpYXRpb25ZIikKLQogdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OnNldFN0ZERldmlhdGlvbihmbG9hdCBzdGREZXZpYXRpb25YLCBmbG9hdCBzdGREZXZp
YXRpb25ZKQogewogfQpAQCAtODcsNSArODcsMyBAQCBib29sIFNWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudDo6YnVpbGQoRmlsCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9
NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAkocmV2aXNp
b24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3LDEyIEBACiAjaW5jbHVkZSAiU1ZHRkVHYXVzc2lhbkJs
dXIuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIK
IAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNz
IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMKLSAgICB7CisgICAgZXh0ZXJuIGNoYXIgU1ZHU3RkRGV2aWF0aW9uWEF0
dHJJZGVudGlmaWVyW107CisgICAgZXh0ZXJuIGNoYXIgU1ZHU3RkRGV2aWF0aW9uWUF0dHJJZGVu
dGlmaWVyW107CisKKyAgICBjbGFzcyBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQgOiBwdWJsaWMg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50KCk7CkBAIC00
MiwxMyArNDMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBTVkdGaWx0
ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwogICAgICAg
ICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAg
dmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IHRoaXM7IH0KLQogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFN0cmluZywgSW4xLCBpbjEpCi0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQsIGZsb2F0LCBTdGREZXZpYXRpb25YLCBzdGREZXZpYXRpb25YKQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBmbG9hdCwg
U3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCwgU1ZHTmFtZXM6OmZlR2F1c3Np
YW5CbHVyVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4x
KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LCBTVkdOYW1lczo6ZmVHYXVzc2lhbkJsdXJUYWdTdHJpbmcsIFNWR1N0ZERldmlh
dGlvblhBdHRySWRlbnRpZmllciwgZmxvYXQsIFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlvblgp
CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQsIFNWR05hbWVzOjpmZUdhdXNzaWFuQmx1clRhZ1N0cmluZywgU1ZHU3RkRGV2aWF0
aW9uWUF0dHJJZGVudGlmaWVyLCBmbG9hdCwgU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkK
IAogICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRUdhdXNzaWFuQmx1cj4gbV9maWx0ZXJFZmZlY3Q7
CiAgICAgfTsKQEAgLTU3LDUgKzU1LDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUlt
YWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgU1ZHRkVJbWFn
ZUVsZW1lbnQ6OlNWR0ZFSW1hZ2VFbGVtZW50KGNvbgogICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkK
ICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KCkKLSAgICAsIG1fcHJlc2VydmVBc3BlY3RSYXRpbyhTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpj
cmVhdGUoKSkKKyAgICAsIG1fcHJlc2VydmVBc3BlY3RSYXRpbyh0aGlzLCBTVkdOYW1lczo6cHJl
c2VydmVBc3BlY3RSYXRpb0F0dHIsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmNyZWF0ZSgpKQog
ICAgICwgbV9jYWNoZWRJbWFnZSgwKQogICAgICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsKQEAgLTUz
LDggKzUzLDYgQEAgU1ZHRkVJbWFnZUVsZW1lbnQ6On5TVkdGRUltYWdlRWxlbWVudCgpCiAgICAg
ICAgIG1fY2FjaGVkSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlNfUkVGQ09VTlRFRChTVkdGRUltYWdlRWxlbWVudCwgU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbywg
U1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKQotCiB2b2lkIFNWR0ZFSW1hZ2VFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAg
Y29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkBAIC0xMTMsNSArMTExLDMgQEAg
dm9pZCBTVkdGRUltYWdlRWxlbWVudDo6Z2V0U3VicmVzb3VyY2VBdAogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDE2ICsyOSwxNSBAQAogI2luY2x1ZGUgIlNWR0xhbmdTcGFj
ZS5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRl
ICJTVkdGRUltYWdlLmgiCisjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzsKIAog
ICAgIGNsYXNzIFNWR0ZFSW1hZ2VFbGVtZW50IDogcHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBT
VkdVUklSZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZH
TGFuZ1NwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQKLSAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAg
U1ZHRkVJbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAg
ICAgIHZpcnR1YWwgflNWR0ZFSW1hZ2VFbGVtZW50KCk7CkBAIC01MSwxNSArNTAsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIFNWR0Zp
bHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0KLSAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdVUklSZWZlcmVuY2UsIFN0
cmluZywgSHJlZiwgaHJlZikKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNM
QVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLSAKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TX1JFRkNPVU5URUQoU1ZHRkVJbWFnZUVsZW1lbnQs
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNw
ZWN0UmF0aW8pCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUlt
YWdlRWxlbWVudCwgU1ZHTmFtZXM6OmZlSW1hZ2VUYWdTdHJpbmcsIFNWR05hbWVzOjpwcmVzZXJ2
ZUFzcGVjdFJhdGlvQXR0clN0cmluZywgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2VydmVB
c3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKIAogICAgICAgICBDYWNoZWRJbWFnZSog
bV9jYWNoZWRJbWFnZTsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVJbWFnZT4gbV9maWx0ZXJF
ZmZlY3Q7CkBAIC02OSw1ICs2MywzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZF
TGlnaHRFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUxp
Z2h0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDIzICsyMywyNCBAQAogCiAjaWYg
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFTGlnaHRF
bGVtZW50LmgiCi0KICNpbmNsdWRlICJTVkdOYW1lcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NoYXIgU1ZHRkVMaWdodEVsZW1lbnRJZGVudGlmaWVyW10gPSAiU1ZHRkVMaWdodEVsZW1l
bnQiOworCiBTVkdGRUxpZ2h0RWxlbWVudDo6U1ZHRkVMaWdodEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0VsZW1lbnQodGFnTmFt
ZSwgZG9jKQotICAgICwgbV9hemltdXRoKDAuMGYpCi0gICAgLCBtX2VsZXZhdGlvbigwLjBmKQot
ICAgICwgbV94KDAuMGYpCi0gICAgLCBtX3koMC4wZikKLSAgICAsIG1feigwLjBmKQotICAgICwg
bV9wb2ludHNBdFgoMC4wZikKLSAgICAsIG1fcG9pbnRzQXRZKDAuMGYpCi0gICAgLCBtX3BvaW50
c0F0WigwLjBmKQotICAgICwgbV9zcGVjdWxhckV4cG9uZW50KDEuMGYpCi0gICAgLCBtX2xpbWl0
aW5nQ29uZUFuZ2xlKDAuMGYpCisgICAgLCBtX2F6aW11dGgodGhpcywgU1ZHTmFtZXM6OmF6aW11
dGhBdHRyKQorICAgICwgbV9lbGV2YXRpb24odGhpcywgU1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIp
CisgICAgLCBtX3godGhpcywgU1ZHTmFtZXM6OnhBdHRyKQorICAgICwgbV95KHRoaXMsIFNWR05h
bWVzOjp5QXR0cikKKyAgICAsIG1feih0aGlzLCBTVkdOYW1lczo6ekF0dHIpCisgICAgLCBtX3Bv
aW50c0F0WCh0aGlzLCBTVkdOYW1lczo6cG9pbnRzQXRYQXR0cikKKyAgICAsIG1fcG9pbnRzQXRZ
KHRoaXMsIFNWR05hbWVzOjpwb2ludHNBdFlBdHRyKQorICAgICwgbV9wb2ludHNBdFoodGhpcywg
U1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIpCisgICAgLCBtX3NwZWN1bGFyRXhwb25lbnQodGhpcywg
U1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLCAxLjBmKQorICAgICwgbV9saW1pdGluZ0Nv
bmVBbmdsZSh0aGlzLCBTVkdOYW1lczo6bGltaXRpbmdDb25lQW5nbGVBdHRyKQogewogfQogCkBA
IC00NywxNyArNDgsNiBAQCBTVkdGRUxpZ2h0RWxlbWVudDo6flNWR0ZFTGlnaHRFbGVtZW50KCkK
IHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQs
IGZsb2F0LCBBemltdXRoLCBhemltdXRoLCBTVkdOYW1lczo6YXppbXV0aEF0dHIpCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgZmxvYXQsIEVsZXZhdGlv
biwgZWxldmF0aW9uLCBTVkdOYW1lczo6ZWxldmF0aW9uQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgWCwgeCwgU1ZHTmFtZXM6OnhB
dHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZs
b2F0LCBZLCB5LCBTVkdOYW1lczo6eUF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdGRUxpZ2h0RWxlbWVudCwgZmxvYXQsIFosIHosIFNWR05hbWVzOjp6QXR0cikKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgUG9pbnRz
QXRYLCBwb2ludHNBdFgsIFNWR05hbWVzOjpwb2ludHNBdFhBdHRyKQotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0LCBQb2ludHNBdFksIHBvaW50
c0F0WSwgU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgZmxvYXQsIFBvaW50c0F0WiwgcG9pbnRzQXRaLCBTVkdO
YW1lczo6cG9pbnRzQXRaQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZF
TGlnaHRFbGVtZW50LCBmbG9hdCwgU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCwg
U1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0LCBMaW1pdGluZ0NvbmVBbmdsZSwgbGltaXRp
bmdDb25lQW5nbGUsIFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIpCi0KIHZvaWQgU1ZH
RkVMaWdodEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0
cikKIHsKICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVMaWdodEVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdG
RUxpZ2h0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTEgQEAKICNpbmNs
dWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTGlnaHRTb3VyY2UuaCIKIAotbmFtZXNw
YWNlIFdlYkNvcmUKLXsKLSAgICBjbGFzcyBTVkdOdW1iZXJMaXN0OwotICAgIAotICAgIGNsYXNz
IFNWR0ZFTGlnaHRFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQKLSAgICB7CituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKyAgICBleHRlcm4gY2hhciBTVkdGRUxpZ2h0RWxlbWVudElkZW50aWZpZXJb
XTsKKworICAgIGNsYXNzIFNWR0ZFTGlnaHRFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQgewog
ICAgIHB1YmxpYzoKICAgICAgICAgU1ZHRkVMaWdodEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0ZFTGlnaHRFbGVtZW50KCk7CkBA
IC0zOSwxOCArMzgsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBMaWdo
dFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIAorICAgIHByb3RlY3RlZDoK
KyAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIHRoaXM7IH0KKwogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX1NUQVJUX0RFQ0xBUkFUSU9OUwotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0LCBBemltdXRoLCBhemltdXRoKQotICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0
LCBFbGV2YXRpb24sIGVsZXZhdGlvbikKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgWCwgeCkKLSAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgWSwgeSkKLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBm
bG9hdCwgWiwgeikKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZF
TGlnaHRFbGVtZW50LCBmbG9hdCwgUG9pbnRzQXRYLCBwb2ludHNBdFgpCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgZmxvYXQsIFBvaW50
c0F0WSwgcG9pbnRzQXRZKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0LCBQb2ludHNBdFosIHBvaW50c0F0WikKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwg
U3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgTGltaXRpbmdDb25l
QW5nbGUsIGxpbWl0aW5nQ29uZUFuZ2xlKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR0ZFTGlnaHRFbGVtZW50SWRlbnRpZmllciwg
U1ZHTmFtZXM6OmF6aW11dGhBdHRyU3RyaW5nLCBmbG9hdCwgQXppbXV0aCwgYXppbXV0aCkKKyAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBT
VkdGRUxpZ2h0RWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjplbGV2YXRpb25BdHRyU3RyaW5n
LCBmbG9hdCwgRWxldmF0aW9uLCBlbGV2YXRpb24pCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHRkVMaWdodEVsZW1lbnRJZGVudGlm
aWVyLCBTVkdOYW1lczo6eEF0dHJTdHJpbmcsIGZsb2F0LCBYLCB4KQorICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR0ZFTGlnaHRFbGVt
ZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6OnlBdHRyU3RyaW5nLCBmbG9hdCwgWSwgeSkKKyAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdG
RUxpZ2h0RWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjp6QXR0clN0cmluZywgZmxvYXQsIFos
IHopCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUxpZ2h0RWxl
bWVudCwgU1ZHRkVMaWdodEVsZW1lbnRJZGVudGlmaWVyLCBTVkdOYW1lczo6cG9pbnRzQXRYQXR0
clN0cmluZywgZmxvYXQsIFBvaW50c0F0WCwgcG9pbnRzQXRYKQorICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR0ZFTGlnaHRFbGVtZW50
SWRlbnRpZmllciwgU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHJTdHJpbmcsIGZsb2F0LCBQb2ludHNB
dFksIHBvaW50c0F0WSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R0ZFTGlnaHRFbGVtZW50LCBTVkdGRUxpZ2h0RWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjpw
b2ludHNBdFpBdHRyU3RyaW5nLCBmbG9hdCwgUG9pbnRzQXRaLCBwb2ludHNBdFopCisgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHRkVM
aWdodEVsZW1lbnRJZGVudGlmaWVyLCBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHJTdHJp
bmcsIGZsb2F0LCBTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50KQorICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR0ZFTGln
aHRFbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0clN0cmlu
ZywgZmxvYXQsIExpbWl0aW5nQ29uZUFuZ2xlLCBsaW1pdGluZ0NvbmVBbmdsZSkKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgJKHJl
dmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDkgQEAKICNpbmNsdWRlICJTVkdGRU1lcmdlLmgiCiAjaW5j
bHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAKLW5hbWVzcGFj
ZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgU1ZHRkVNZXJnZUVsZW1lbnQgOiBwdWJsaWMgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzCi0gICAgeworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisgICAgY2xhc3MgU1ZHRkVNZXJnZUVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0ZFTWVyZ2VF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFs
IH5TVkdGRU1lcmdlRWxlbWVudCgpOwpAQCAtMzgsOSArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZQogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291
cmNlRmlsdGVyKikgY29uc3Q7CiAgICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwog
Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQotCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgbXV0YWJsZSBSZWZQdHI8RkVNZXJnZT4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHRkVNZXJnZU5vZGVFbGVtZW50
OjpTVkdGRU1lcmdlTm9kZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvYykKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jKQorICAgICwgbV9pbjEo
dGhpcywgU1ZHTmFtZXM6OmluQXR0cikKIHsKIH0KIApAQCAtMzYsOCArMzcsNiBAQCBTVkdGRU1l
cmdlTm9kZUVsZW1lbnQ6On5TVkdGRU1lcmdlTm9kZUVsCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCwgU3RyaW5nLCBJbjEsIGluMSwg
U1ZHTmFtZXM6OmluQXR0cikKLQogdm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBTdHJpbmcm
IHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKQEAgLTUwLDUgKzQ5LDMgQEAgdm9pZCBTVkdGRU1lcmdl
Tm9kZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQot
Ly8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgJKHJl
dmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiw5IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKIAotbmFtZXNwYWNlIFdlYkNv
cmUKLXsKLSAgICBjbGFzcyBTVkdGRU1lcmdlTm9kZUVsZW1lbnQgOiBwdWJsaWMgU1ZHRWxlbWVu
dAotICAgIHsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNWR0ZFTWVyZ2VOb2Rl
RWxlbWVudCA6IHB1YmxpYyBTVkdFbGVtZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0ZF
TWVyZ2VOb2RlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAg
ICAgdmlydHVhbCB+U1ZHRkVNZXJnZU5vZGVFbGVtZW50KCk7CkBAIC00MCwxMyArMzksMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX1NUQVJUX0RFQ0xBUkFUSU9OUwotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVNZXJnZU5vZGVFbGVtZW50LCBTdHJpbmcsIElu
MSwgaW4xKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVNZXJn
ZU5vZGVFbGVtZW50LCBTVkdOYW1lczo6ZmVNZXJnZU5vZGVUYWdTdHJpbmcsIFNWR05hbWVzOjpp
bkF0dHJTdHJpbmcsIFN0cmluZywgSW4xLCBpbjEpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1KQor
KysgV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsOCArMzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR0ZFT2Zmc2V0RWxlbWVudDo6
U1ZHRkVPZmZzZXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2MpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFt
ZSwgZG9jKQotICAgICwgbV9keCgwLjBmKQotICAgICwgbV9keSgwLjBmKQorICAgICwgbV9pbjEo
dGhpcywgU1ZHTmFtZXM6OmluQXR0cikKKyAgICAsIG1fZHgodGhpcywgU1ZHTmFtZXM6OmR4QXR0
cikKKyAgICAsIG1fZHkodGhpcywgU1ZHTmFtZXM6OmR5QXR0cikKICAgICAsIG1fZmlsdGVyRWZm
ZWN0KDApCiB7CiB9CkBAIC00MiwxMCArNDMsNiBAQCBTVkdGRU9mZnNldEVsZW1lbnQ6On5TVkdG
RU9mZnNldEVsZW1lbnQoCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0ZFT2Zmc2V0RWxlbWVudCwgU3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0cikKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFT2Zmc2V0RWxlbWVudCwgZmxvYXQsIER4
LCBkeCwgU1ZHTmFtZXM6OmR4QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0ZFT2Zmc2V0RWxlbWVudCwgZmxvYXQsIER5LCBkeSwgU1ZHTmFtZXM6OmR5QXR0cikKLQogdm9p
ZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSogYXR0cikKIHsKICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKQEAg
LTgwLDUgKzc3LDMgQEAgYm9vbCBTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aQog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZH
RkVPZmZzZXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNyw5IEBACiAjaW5j
bHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAi
U1ZHRkVPZmZzZXQuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotICAgIGNsYXNzIFNWR0ZFT2Zmc2V0RWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMKLSAgICB7CisgICAgY2xhc3MgU1ZHRkVPZmZzZXRFbGVt
ZW50IDogcHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7CiAgICAg
cHVibGljOgogICAgICAgICBTVkdGRU9mZnNldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0ZFT2Zmc2V0RWxlbWVudCgpOwpAQCAt
NDAsMTMgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgU1ZHRmls
dGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKICAgICAg
ICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CiAKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biB0aGlzOyB9Ci0KICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRkVPZmZzZXRFbGVtZW50LCBTdHJpbmcsIEluMSwgaW4xKQotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVPZmZzZXRFbGVtZW50LCBmbG9hdCwg
RHgsIGR4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVPZmZz
ZXRFbGVtZW50LCBmbG9hdCwgRHksIGR5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6ZmVPZmZzZXRUYWdTdHJpbmcs
IFNWR05hbWVzOjppbkF0dHJTdHJpbmcsIFN0cmluZywgSW4xLCBpbjEpCisgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRU9mZnNldEVsZW1lbnQsIFNWR05hbWVzOjpm
ZU9mZnNldFRhZ1N0cmluZywgU1ZHTmFtZXM6OmR4QXR0clN0cmluZywgZmxvYXQsIER4LCBkeCkK
KyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFT2Zmc2V0RWxlbWVu
dCwgU1ZHTmFtZXM6OmZlT2Zmc2V0VGFnU3RyaW5nLCBTVkdOYW1lczo6ZHlBdHRyU3RyaW5nLCBm
bG9hdCwgRHksIGR5KQogCiAgICAgICAgIG11dGFibGUgUmVmUHRyPEZFT2Zmc2V0PiBtX2ZpbHRl
ckVmZmVjdDsKICAgICB9OwpAQCAtNTUsNSArNTAsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24g
MzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKLSAgICAsIG1f
c3BlY3VsYXJDb25zdGFudCgxLjBmKQotICAgICwgbV9zcGVjdWxhckV4cG9uZW50KDEuMGYpCi0g
ICAgLCBtX3N1cmZhY2VTY2FsZSgxLjBmKQotICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoWCgwLjBm
KQotICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoWSgwLjBmKQorICAgICwgbV9pbjEodGhpcywgU1ZH
TmFtZXM6OmluQXR0cikKKyAgICAsIG1fc3BlY3VsYXJDb25zdGFudCh0aGlzLCBTVkdOYW1lczo6
c3BlY3VsYXJDb25zdGFudEF0dHIsIDEuMGYpCisgICAgLCBtX3NwZWN1bGFyRXhwb25lbnQodGhp
cywgU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLCAxLjBmKQorICAgICwgbV9zdXJmYWNl
U2NhbGUodGhpcywgU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIsIDEuMGYpCisgICAgLCBtX2tl
cm5lbFVuaXRMZW5ndGhYKHRoaXMsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikKKyAg
ICAsIG1fa2VybmVsVW5pdExlbmd0aFkodGhpcywgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhB
dHRyKQogICAgICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsKIH0KQEAgLTQ4LDEzICs0OSw2IEBAIFNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6On5TVkdGRVNwZWMKIHsKIH0KIAotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU3RyaW5n
LCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIGZsb2F0LCBTcGVjdWxhckNvbnN0YW50
LCBzcGVjdWxhckNvbnN0YW50LCBTVkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBm
bG9hdCwgU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCwgU1ZHTmFtZXM6OnNwZWN1
bGFyRXhwb25lbnRBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudCwgZmxvYXQsIFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNjYWxlLCBT
VkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
X1dJVEhfQ1VTVE9NX0lERU5USUZJRVIoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgZmxv
YXQsIEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCwgU1ZHTmFtZXM6Omtlcm5l
bFVuaXRMZW5ndGhBdHRyLCAia2VybmVsVW5pdExlbmd0aFgiKQotQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlNfV0lUSF9DVVNUT01fSURFTlRJRklFUihTVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LCBmbG9hdCwgS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZLCBTVkdO
YW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsICJrZXJuZWxVbml0TGVuZ3RoWSIpCi0KIHZvaWQg
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKiBhdHRyKQogeyAgICAKICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+
dmFsdWUoKTsKQEAgLTEyMyw1ICsxMTcsMyBAQCBib29sIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQ6OmJ1aWxkCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCShy
ZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTIgKzI2LDE0IEBACiAjaW5jbHVkZSAiU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKyAgICBleHRlcm4gY2hhciBTVkdLZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXJbXTsKKyAg
ICBleHRlcm4gY2hhciBTVkdLZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXJbXTsKKwogICAgIGNs
YXNzIFNWR0NvbG9yOwogICAgIAotICAgIGNsYXNzIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzCi0gICAgewor
ICAgIGNsYXNzIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CiAgICAgICAgIHZpcnR1YWwgflNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQoKTsKQEAgLTQw
LDE2ICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRl
ckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CiAgICAgICAg
IGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwogCi0gICAgcHJvdGVjdGVkOgotICAgICAgICB2
aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
dGhpczsgfQotCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFN0cmluZywgSW4xLCBpbjEpCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LCBmbG9hdCwgU3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJDb25zdGFudCkKLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQsIGZsb2F0LCBTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50KQotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudCwgZmxvYXQsIFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNjYWxlKQotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwg
ZmxvYXQsIEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQs
IGZsb2F0LCBLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LCBTVkdOYW1lczo6ZmVTcGVjdWxhckxpZ2h0aW5nVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRy
U3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OmZlU3BlY3Vs
YXJMaWdodGluZ1RhZ1N0cmluZywgU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyU3RyaW5n
LCBmbG9hdCwgU3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJDb25zdGFudCkKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQs
IFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdUYWdTdHJpbmcsIFNWR05hbWVzOjpzcGVjdWxh
ckV4cG9uZW50QXR0clN0cmluZywgZmxvYXQsIFNwZWN1bGFyRXhwb25lbnQsIHNwZWN1bGFyRXhw
b25lbnQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVTcGVjdWxhckxpZ2h0aW5nVGFnU3RyaW5n
LCBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0clN0cmluZywgZmxvYXQsIFN1cmZhY2VTY2FsZSwg
c3VyZmFjZVNjYWxlKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OmZlU3BlY3VsYXJMaWdodGluZ1Rh
Z1N0cmluZywgU1ZHS2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyLCBmbG9hdCwgS2VybmVsVW5p
dExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OmZlU3Bl
Y3VsYXJMaWdodGluZ1RhZ1N0cmluZywgU1ZHS2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyLCBm
bG9hdCwgS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQogCiAgICAgICAgIG11
dGFibGUgUmVmUHRyPEZFU3BlY3VsYXJMaWdodGluZz4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgICAg
IApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1KQorKysgV2Vi
Q29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdGRVRpbGVFbGVtZW50OjpTVkdGRVRpbGVF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAg
OiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jKQorICAg
ICwgbV9pbjEodGhpcywgU1ZHTmFtZXM6OmluQXR0cikKICAgICAsIG1fZmlsdGVyRWZmZWN0KDAp
CiB7CiB9CkBAIC00MSw4ICs0Miw2IEBAIFNWR0ZFVGlsZUVsZW1lbnQ6On5TVkdGRVRpbGVFbGVt
ZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVUaWxlRWxl
bWVudCwgU3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0cikKLQogdm9pZCBTVkdGRVRp
bGVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7
CiAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkBAIC03Myw1ICs3Miwz
IEBAIGJvb2wgU1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGQKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0ZFVGlsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVt
ZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMCArMjcsOSBAQAogI2luY2x1ZGUgIlNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIlNWR0ZFVGlsZS5oIgogCi1u
YW1lc3BhY2UgV2ViQ29yZQotewotICAgIGNsYXNzIFNWR0ZFVGlsZUVsZW1lbnQgOiBwdWJsaWMg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzCi0gICAgeworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgY2xhc3MgU1ZHRkVUaWxlRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHRkVU
aWxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmly
dHVhbCB+U1ZHRkVUaWxlRWxlbWVudCgpOwpAQCAtMzksMTEgKzM4LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdS
ZXNvdXJjZUZpbHRlciopIGNvbnN0OwogICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIq
KTsKIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KLQogICAgIHByaXZhdGU6Ci0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVRpbGVFbGVtZW50LCBT
dHJpbmcsIEluMSwgaW4xKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHRkVUaWxlRWxlbWVudCwgU1ZHTmFtZXM6OmZlVGlsZVRhZ1N0cmluZywgU1ZHTmFtZXM6Omlu
QXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkKIAogICAgICAgICBtdXRhYmxlIFJlZlB0cjxG
RVRpbGU+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVR1
cmJ1bGVuY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVR1
cmJ1bGVuY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTQgKzMwLDE3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2hhciBTVkdCYXNlRnJlcXVlbmN5WElkZW50aWZpZXJb
XSA9ICJTVkdCYXNlRnJlcXVlbmN5WCI7CitjaGFyIFNWR0Jhc2VGcmVxdWVuY3lZSWRlbnRpZmll
cltdID0gIlNWR0Jhc2VGcmVxdWVuY3lZIjsKKwogU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6U1ZH
RkVUdXJidWxlbmNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jKQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05h
bWUsIGRvYykKLSAgICAsIG1fYmFzZUZyZXF1ZW5jeVgoMC4wZikKLSAgICAsIG1fYmFzZUZyZXF1
ZW5jeVkoMC4wZikKLSAgICAsIG1fbnVtT2N0YXZlcygxKQotICAgICwgbV9zZWVkKDAuMGYpCi0g
ICAgLCBtX3N0aXRjaFRpbGVzKFNWR19TVElUQ0hUWVBFX05PU1RJVENIKQotICAgICwgbV90eXBl
KEZFVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UpCisgICAgLCBtX2Jhc2VGcmVxdWVuY3lYKHRo
aXMsIFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0cikKKyAgICAsIG1fYmFzZUZyZXF1ZW5jeVko
dGhpcywgU1ZHTmFtZXM6OmJhc2VGcmVxdWVuY3lBdHRyKQorICAgICwgbV9udW1PY3RhdmVzKHRo
aXMsIFNWR05hbWVzOjpudW1PY3RhdmVzQXR0ciwgMSkKKyAgICAsIG1fc2VlZCh0aGlzLCBTVkdO
YW1lczo6c2VlZEF0dHIpCisgICAgLCBtX3N0aXRjaFRpbGVzKHRoaXMsIFNWR05hbWVzOjpzdGl0
Y2hUaWxlc0F0dHIsIFNWR19TVElUQ0hUWVBFX05PU1RJVENIKQorICAgICwgbV90eXBlKHRoaXMs
IFNWR05hbWVzOjp0eXBlQXR0ciwgRkVUVVJCVUxFTkNFX1RZUEVfVFVSQlVMRU5DRSkKICAgICAs
IG1fZmlsdGVyRWZmZWN0KDApCiB7CiB9CkBAIC00NiwxMyArNDksNiBAQCBTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50Ojp+U1ZHRkVUdXJidWxlbmNlCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TX1dJVEhfQ1VTVE9NX0lERU5USUZJRVIoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwg
ZmxvYXQsIEJhc2VGcmVxdWVuY3lYLCBiYXNlRnJlcXVlbmN5WCwgU1ZHTmFtZXM6OmJhc2VGcmVx
dWVuY3lBdHRyLCAiYmFzZUZyZXF1ZW5jeVgiKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlNfV0lUSF9DVVNUT01fSURFTlRJRklFUihTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBmbG9hdCwg
QmFzZUZyZXF1ZW5jeVksIGJhc2VGcmVxdWVuY3lZLCBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0
dHIsICJiYXNlRnJlcXVlbmN5WSIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LCBmbG9hdCwgU2VlZCwgc2VlZCwgU1ZHTmFtZXM6OnNlZWRBdHRy
KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwg
bG9uZywgTnVtT2N0YXZlcywgbnVtT2N0YXZlcywgU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgaW50
LCBTdGl0Y2hUaWxlcywgc3RpdGNoVGlsZXMsIFNWR05hbWVzOjpzdGl0Y2hUaWxlc0F0dHIpCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBpbnQs
IFR5cGUsIHR5cGUsIFNWR05hbWVzOjp0eXBlQXR0cikKLQogdm9pZCBTVkdGRVR1cmJ1bGVuY2VF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAg
ICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkBAIC05OCw1ICs5NCwzIEBA
IGJvb2wgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YnVpbGQoRmlsdGUKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNiArMjcsMTggQEAKICNpbmNs
dWRlICJTVkdGRVR1cmJ1bGVuY2UuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworICAgIGV4dGVybiBjaGFyIFNWR0Jhc2VGcmVxdWVuY3lYSWRlbnRpZmllcltdOwor
ICAgIGV4dGVybiBjaGFyIFNWR0Jhc2VGcmVxdWVuY3lZSWRlbnRpZmllcltdOworCiAgICAgZW51
bSBTVkdTdGl0Y2hPcHRpb25zIHsKICAgICAgICAgU1ZHX1NUSVRDSFRZUEVfVU5LTk9XTiAgPSAw
LAogICAgICAgICBTVkdfU1RJVENIVFlQRV9TVElUQ0ggICA9IDEsCiAgICAgICAgIFNWR19TVElU
Q0hUWVBFX05PU1RJVENIID0gMgogICAgIH07CiAKLSAgICBjbGFzcyBTVkdGRVR1cmJ1bGVuY2VF
bGVtZW50IDogcHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcwotICAg
IHsKKyAgICBjbGFzcyBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50IDogcHVibGljIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdGRVR1
cmJ1bGVuY2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAg
ICB2aXJ0dWFsIH5TVkdGRVR1cmJ1bGVuY2VFbGVtZW50KCk7CkBAIC00NSwxNiArNDcsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRl
ckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwogICAgICAgICBib29sIGJ1aWxkKEZp
bHRlckJ1aWxkZXIqKTsKIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBjb25zdCBT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KLQogICAg
IHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVR1
cmJ1bGVuY2VFbGVtZW50LCBmbG9hdCwgQmFzZUZyZXF1ZW5jeVgsIGJhc2VGcmVxdWVuY3lYKQot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxl
bWVudCwgZmxvYXQsIEJhc2VGcmVxdWVuY3lZLCBiYXNlRnJlcXVlbmN5WSkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIGxvbmcs
IE51bU9jdGF2ZXMsIG51bU9jdGF2ZXMpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBmbG9hdCwgU2VlZCwgc2VlZCkKLSAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQs
IGludCwgU3RpdGNoVGlsZXMsIHN0aXRjaFRpbGVzKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgaW50LCBUeXBlLCB0eXBlKQor
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxl
bWVudCwgU1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZ1N0cmluZywgU1ZHQmFzZUZyZXF1ZW5jeVhJ
ZGVudGlmaWVyLCBmbG9hdCwgQmFzZUZyZXF1ZW5jeVgsIGJhc2VGcmVxdWVuY3lYKQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwg
U1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZ1N0cmluZywgU1ZHQmFzZUZyZXF1ZW5jeVlJZGVudGlm
aWVyLCBmbG9hdCwgQmFzZUZyZXF1ZW5jeVksIGJhc2VGcmVxdWVuY3lZKQorICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFt
ZXM6OmZlVHVyYnVsZW5jZVRhZ1N0cmluZywgU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyU3RyaW5n
LCBsb25nLCBOdW1PY3RhdmVzLCBudW1PY3RhdmVzKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OmZlVHVyYnVs
ZW5jZVRhZ1N0cmluZywgU1ZHTmFtZXM6OnNlZWRBdHRyU3RyaW5nLCBmbG9hdCwgU2VlZCwgc2Vl
ZCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQsIFNWR05hbWVzOjpmZVR1cmJ1bGVuY2VUYWdTdHJpbmcsIFNWR05hbWVzOjpzdGl0
Y2hUaWxlc0F0dHJTdHJpbmcsIGludCwgU3RpdGNoVGlsZXMsIHN0aXRjaFRpbGVzKQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwg
U1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZ1N0cmluZywgU1ZHTmFtZXM6OnR5cGVBdHRyU3RyaW5n
LCBpbnQsIFR5cGUsIHR5cGUpCiAKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVUdXJidWxlbmNl
PiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwpAQCAtNjMsNSArNjIsMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTkgKzM1
LDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2hhciBTVkdGaWx0ZXJSZXNYSWRlbnRp
ZmllcltdID0gIlNWR0ZpbHRlclJlc1giOworY2hhciBTVkdGaWx0ZXJSZXNZSWRlbnRpZmllcltd
ID0gIlNWR0ZpbHRlclJlc1kiOworCiBTVkdGaWx0ZXJFbGVtZW50OjpTVkdGaWx0ZXJFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdT
dHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvYykKICAgICAsIFNWR1VSSVJlZmVyZW5jZSgpCiAgICAg
LCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0g
ICAgLCBtX2ZpbHRlclVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VO
RElOR0JPWCkKLSAgICAsIG1fcHJpbWl0aXZlVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9U
WVBFX1VTRVJTUEFDRU9OVVNFKQotICAgICwgbV94KExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiKQot
ICAgICwgbV95KExlbmd0aE1vZGVIZWlnaHQsICItMTAlIikKLSAgICAsIG1fd2lkdGgoTGVuZ3Ro
TW9kZVdpZHRoLCAiMTIwJSIpCi0gICAgLCBtX2hlaWdodChMZW5ndGhNb2RlSGVpZ2h0LCAiMTIw
JSIpCi0gICAgLCBtX2ZpbHRlclJlc1goMCkKLSAgICAsIG1fZmlsdGVyUmVzWSgwKQorICAgICwg
bV9maWx0ZXJVbml0cyh0aGlzLCBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLCBTVkdVbml0VHlw
ZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpCisgICAgLCBtX3ByaW1pdGl2ZVVu
aXRzKHRoaXMsIFNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6U1ZH
X1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkKKyAgICAsIG1feCh0aGlzLCBTVkdOYW1lczo6eEF0
dHIsIExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiKQorICAgICwgbV95KHRoaXMsIFNWR05hbWVzOjp5
QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCwgIi0xMCUiKQorICAgICwgbV93aWR0aCh0aGlzLCBTVkdO
YW1lczo6d2lkdGhBdHRyLCBMZW5ndGhNb2RlV2lkdGgsICIxMjAlIikKKyAgICAsIG1faGVpZ2h0
KHRoaXMsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMTIwJSIpCisg
ICAgLCBtX2ZpbHRlclJlc1godGhpcywgU1ZHTmFtZXM6OmZpbHRlclJlc0F0dHIpCisgICAgLCBt
X2ZpbHRlclJlc1kodGhpcywgU1ZHTmFtZXM6OmZpbHRlclJlc0F0dHIpCiB7CiAgICAgLy8gU3Bl
YzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBh
cyBpZiBhIHZhbHVlIG9mICItMTAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICAvLyBTcGVjOiBJZiB0
aGUgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlz
IGFzIGlmIGEgdmFsdWUgb2YgIjEyMCUiIHdlcmUgc3BlY2lmaWVkLgpAQCAtNTcsMTUgKzYwLDYg
QEAgU1ZHRmlsdGVyRWxlbWVudDo6flNWR0ZpbHRlckVsZW1lbnQoKQogewogfQogCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBpbnQsIEZpbHRlclVuaXRz
LCBmaWx0ZXJVbml0cywgU1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0cikKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGludCwgUHJpbWl0aXZlVW5pdHMsIHBy
aW1pdGl2ZVVuaXRzLCBTVkdOYW1lczo6cHJpbWl0aXZlVW5pdHNBdHRyKQotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBYLCB4LCBTVkdO
YW1lczo6eEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVt
ZW50LCBTVkdMZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoLCBT
VkdOYW1lczo6d2lkdGhBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmls
dGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0
dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19XSVRIX0NVU1RPTV9JREVOVElGSUVS
KFNWR0ZpbHRlckVsZW1lbnQsIGxvbmcsIEZpbHRlclJlc1gsIGZpbHRlclJlc1gsIFNWR05hbWVz
OjpmaWx0ZXJSZXNBdHRyLCAiZmlsdGVyUmVzWCIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OU19XSVRIX0NVU1RPTV9JREVOVElGSUVSKFNWR0ZpbHRlckVsZW1lbnQsIGxvbmcsIEZpbHRl
clJlc1ksIGZpbHRlclJlc1ksIFNWR05hbWVzOjpmaWx0ZXJSZXNBdHRyLCAiZmlsdGVyUmVzWSIp
Ci0KIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6c2V0RmlsdGVyUmVzKHVuc2lnbmVkIGxvbmcsIHVu
c2lnbmVkIGxvbmcpIGNvbnN0CiB7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCShyZXZp
c2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsMTMgKzMyLDE0IEBACiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBTVkdMZW5ndGg7CisKKyAgICBleHRlcm4g
Y2hhciBTVkdGaWx0ZXJSZXNYSWRlbnRpZmllcltdOworICAgIGV4dGVybiBjaGFyIFNWR0ZpbHRl
clJlc1lJZGVudGlmaWVyW107CiAKICAgICBjbGFzcyBTVkdGaWx0ZXJFbGVtZW50IDogcHVibGlj
IFNWR1N0eWxlZEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBT
VkdVUklSZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdM
YW5nU3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkCi0gICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7CiAgICAgcHVibGljOgogICAgICAg
ICBTVkdGaWx0ZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAg
ICAgICB2aXJ0dWFsIH5TVkdGaWx0ZXJFbGVtZW50KCk7CkBAIC01NCwxNyArNTUsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHVVJJUmVmZXJlbmNl
LCBTdHJpbmcsIEhyZWYsIGhyZWYpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRf
REVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0gCi0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBpbnQsIEZp
bHRlclVuaXRzLCBmaWx0ZXJVbml0cykKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGludCwgUHJpbWl0aXZlVW5pdHMsIHByaW1pdGl2ZVVu
aXRzKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxl
bWVudCwgU1ZHTGVuZ3RoLCBYLCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBZLCB5KQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBXaWR0
aCwgd2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0
ZXJFbGVtZW50LCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgbG9uZywgRmlsdGVyUmVzWCwg
ZmlsdGVyUmVzWCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0Zp
bHRlckVsZW1lbnQsIGxvbmcsIEZpbHRlclJlc1ksIGZpbHRlclJlc1kpCisgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6Zmls
dGVyVGFnU3RyaW5nLCBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyU3RyaW5nLCBpbnQsIEZpbHRl
clVuaXRzLCBmaWx0ZXJVbml0cykKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpmaWx0ZXJUYWdTdHJpbmcsIFNWR05hbWVz
OjpwcmltaXRpdmVVbml0c0F0dHJTdHJpbmcsIGludCwgUHJpbWl0aXZlVW5pdHMsIHByaW1pdGl2
ZVVuaXRzKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVy
RWxlbWVudCwgU1ZHTmFtZXM6OmZpbHRlclRhZ1N0cmluZywgU1ZHTmFtZXM6OnhBdHRyU3RyaW5n
LCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyVGFnU3RyaW5nLCBTVkdOYW1lczo6
eUF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpmaWx0ZXJUYWdTdHJpbmcs
IFNWR05hbWVzOjp3aWR0aEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoKQorICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZH
TmFtZXM6OmZpbHRlclRhZ1N0cmluZywgU1ZHTmFtZXM6OmhlaWdodEF0dHJTdHJpbmcsIFNWR0xl
bmd0aCwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyVGFnU3RyaW5nLCBTVkdGaWx0
ZXJSZXNYSWRlbnRpZmllciwgbG9uZywgRmlsdGVyUmVzWCwgZmlsdGVyUmVzWCkKKyAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVz
OjpmaWx0ZXJUYWdTdHJpbmcsIFNWR0ZpbHRlclJlc1lJZGVudGlmaWVyLCBsb25nLCBGaWx0ZXJS
ZXNZLCBmaWx0ZXJSZXNZKQogCiAgICAgICAgIFJlZlB0cjxTVkdSZXNvdXJjZUZpbHRlcj4gbV9m
aWx0ZXI7CiAgICAgfTsKQEAgLTczLDUgKzcxLDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5jcHAJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTIgKzM0LDE1IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2hhciBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXNJZGVudGlmaWVySWRlbnRpZmllcltdID0gIlNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlc0lkZW50aWZpZXIiOworCiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHU3R5bGVkRWxl
bWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX3goTGVuZ3RoTW9kZVdpZHRoLCAiMCUiKQotICAg
ICwgbV95KExlbmd0aE1vZGVIZWlnaHQsICIwJSIpCi0gICAgLCBtX3dpZHRoKExlbmd0aE1vZGVX
aWR0aCwgIjEwMCUiKQotICAgICwgbV9oZWlnaHQoTGVuZ3RoTW9kZUhlaWdodCwgIjEwMCUiKQor
ICAgICwgbV94KHRoaXMsIFNWR05hbWVzOjp4QXR0ciwgTGVuZ3RoTW9kZVdpZHRoLCAiMCUiKQor
ICAgICwgbV95KHRoaXMsIFNWR05hbWVzOjp5QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCwgIjAlIikK
KyAgICAsIG1fd2lkdGgodGhpcywgU1ZHTmFtZXM6OndpZHRoQXR0ciwgTGVuZ3RoTW9kZVdpZHRo
LCAiMTAwJSIpCisgICAgLCBtX2hlaWdodCh0aGlzLCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgTGVu
Z3RoTW9kZUhlaWdodCwgIjEwMCUiKQorICAgICwgbV9yZXN1bHQodGhpcywgU1ZHTmFtZXM6OnJl
c3VsdEF0dHIpCiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNw
ZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIwJSIgd2VyZSBzcGVjaWZp
ZWQuCiAgICAgLy8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNw
ZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMDAlIiB3ZXJlIHNwZWNp
ZmllZC4KQEAgLTQ5LDEyICs1Miw2IEBAIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6flMKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4
QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyKQotQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0cikK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcywgU3RyaW5nLCBSZXN1bHQsIHJlc3VsdCwgU1ZHTmFtZXM6OnJlc3VsdEF0dHIp
Ci0KIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMzUyMDUpCisr
KyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDEzIEBACiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVu
dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBleHRlcm4gY2hhciBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXNJZGVudGlmaWVyW107CisKICAgICBjbGFzcyBTVkdG
aWx0ZXJFZmZlY3Q7CiAgICAgY2xhc3MgU1ZHUmVzb3VyY2VGaWx0ZXI7CiAKLSAgICBjbGFzcyBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgOiBwdWJsaWMgU1ZHU3R5bGVkRWxl
bWVudAotICAgIHsKKyAgICBjbGFzcyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcygpOwpAQCAtNDUsMjIgKzQ3LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBm
YWxzZTsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIHNldFN0YW5kYXJkQXR0cmli
dXRlcyhTVkdGaWx0ZXJFZmZlY3QqKSBjb25zdDsKLQotICAgIHByb3RlY3RlZDoKICAgICAgICAg
dmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IHRoaXM7IH0KKyAgICAgICAgdm9pZCBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoU1ZHRmlsdGVyRWZm
ZWN0KikgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5n
dGgsIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCwgWSwgeSkKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMs
IFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFN0cmluZywg
UmVzdWx0LCByZXN1bHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlc0lkZW50aWZpZXIsIFNWR05hbWVzOjp4QXR0clN0cmluZywgU1ZHTGVu
Z3RoLCBYLCB4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXNJZGVudGlmaWVyLCBTVkdOYW1lczo6eUF0dHJTdHJpbmcsIFNWR0xlbmd0aCwg
WSwgeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzSWRlbnRpZmllciwgU1ZHTmFtZXM6OndpZHRoQXR0clN0cmluZywgU1ZHTGVuZ3RoLCBX
aWR0aCwgd2lkdGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlc0lkZW50aWZpZXIsIFNWR05hbWVzOjpoZWlnaHRBdHRyU3RyaW5nLCBTVkdM
ZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXNJZGVudGlmaWVyLCBTVkdOYW1lczo6cmVzdWx0QXR0clN0
cmluZywgU3RyaW5nLCBSZXN1bHQsIHJlc3VsdCkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5v
ZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2
IEBACiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKLSNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJTVkdOYW1l
cy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlNWR1ByZXNl
cnZlQXNwZWN0UmF0aW8uaCIKQEAgLTM1LDkgKzM0LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2hhciBTVkdGaXRUb1ZpZXdCb3hJZGVudGlmaWVyW10gPSAiU1ZHRml0VG9WaWV3Qm94
IjsKKwogU1ZHRml0VG9WaWV3Qm94OjpTVkdGaXRUb1ZpZXdCb3goKQotICAgIDogbV92aWV3Qm94
KCkKLSAgICAsIG1fcHJlc2VydmVBc3BlY3RSYXRpbyhTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpj
cmVhdGUoKSkKKyAgICA6IG1fdmlld0JveCh0aGlzLCBTVkdOYW1lczo6dmlld0JveEF0dHIpCisg
ICAgLCBtX3ByZXNlcnZlQXNwZWN0UmF0aW8odGhpcywgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0
UmF0aW9BdHRyLCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpjcmVhdGUoKSkKIHsKIH0KIApAQCAt
NDUsOSArNDYsNiBAQCBTVkdGaXRUb1ZpZXdCb3g6On5TVkdGaXRUb1ZpZXdCb3goKQogewogfQog
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19XSVRIX0NPTlRFWFQoU1ZHRml0VG9WaWV3
Qm94LCBGbG9hdFJlY3QsIFZpZXdCb3gsIHZpZXdCb3gsIFNWR05hbWVzOjp2aWV3Qm94QXR0cikK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1JFRkNPVU5URURfV0lUSF9DT05URVhUKFNW
R0ZpdFRvVmlld0JveCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2VydmVBc3BlY3RSYXRp
bywgcHJlc2VydmVBc3BlY3RSYXRpbywgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRy
KQotCiBib29sIFNWR0ZpdFRvVmlld0JveDo6cGFyc2VWaWV3Qm94KGNvbnN0IFVDaGFyKiYgYywg
Y29uc3QgVUNoYXIqIGVuZCwgZmxvYXQmIHgsIGZsb2F0JiB5LCBmbG9hdCYgdywgZmxvYXQmIGgs
IGJvb2wgdmFsaWRhdGUpCiB7CiAgICAgRG9jdW1lbnQqIGRvYyA9IGNvbnRleHRFbGVtZW50KCkt
PmRvY3VtZW50KCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAkocmV2aXNpb24gMzUyMDUpCisr
KyBXZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMzAg
KzI1LDMwIEBACiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKKyNp
bmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorICAgIGV4dGVybiBjaGFyIFNWR0ZpdFRvVmlld0JveElkZW50aWZpZXJbXTsKKwogICAgIGNs
YXNzIEFmZmluZVRyYW5zZm9ybTsKLSAgICBjbGFzcyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOwog
CiAgICAgY2xhc3MgU1ZHRml0VG9WaWV3Qm94IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0Zp
dFRvVmlld0JveCgpOwogICAgICAgICB2aXJ0dWFsIH5TVkdGaXRUb1ZpZXdCb3goKTsKIAotICAg
ICAgICAvLyAnU1ZHRml0VG9WaWV3Qm94JyBmdW5jdGlvbnMKICAgICAgICAgYm9vbCBwYXJzZVZp
ZXdCb3goY29uc3QgVUNoYXIqJiBzdGFydCwgY29uc3QgVUNoYXIqIGVuZCwgZmxvYXQmIHgsIGZs
b2F0JiB5LCBmbG9hdCYgdywgZmxvYXQmIGgsIGJvb2wgdmFsaWRhdGUgPSB0cnVlKTsKICAgICAg
ICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2
aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAgICAgIGJvb2wgaXNLbm93bkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCA9IDA7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlNfV0lU
SF9DT05URVhUKFNWR0ZpdFRvVmlld0JveCwgRmxvYXRSZWN0LCBWaWV3Qm94LCB2aWV3Qm94KQot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlNfUkVGQ09VTlRFRF9XSVRIX0NP
TlRFWFQoU1ZHRml0VG9WaWV3Qm94LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFz
cGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRml0VG9WaWV3Qm94LCBTVkdGaXRUb1ZpZXdCb3hJZGVudGlmaWVy
LCBTVkdOYW1lczo6dmlld0JveEF0dHJTdHJpbmcsIEZsb2F0UmVjdCwgVmlld0JveCwgdmlld0Jv
eCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpdFRvVmlld0Jv
eCwgU1ZHRml0VG9WaWV3Qm94SWRlbnRpZmllciwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0
aW9BdHRyU3RyaW5nLCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJhdGlv
LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9T
VkdGb250RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+U1ZHRm9udEVsZW1lbnQoKTsKIAogICAgICAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZh
bHNlOyB9ICAgIAotICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAgICAgICAgIHZvaWQgaW52YWxpZGF0ZUds
eXBoQ2FjaGUoKTsKIApAQCAtNDgsNiArNDcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgU1ZHTWlzc2luZ0dseXBoRWxlbWVudCogZmlyc3RNaXNzaW5nR2x5cGhFbGVtZW50KCkg
Y29uc3Q7CiAKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVu
dCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CisKICAgICBwcml2YXRl
OgogICAgICAgICB2b2lkIGVuc3VyZUdseXBoQ2FjaGUoKSBjb25zdDsKIApAQCAtNjIsNSArNjQs
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHX0ZPTlRTKQog
I2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTAgQEAgU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQ6OlNWR0ZvcmVpZ25PYmplYwogICAgICwgU1ZHVGVzdHMoKQog
ICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
KQotICAgICwgbV94KExlbmd0aE1vZGVXaWR0aCkKLSAgICAsIG1feShMZW5ndGhNb2RlSGVpZ2h0
KQotICAgICwgbV93aWR0aChMZW5ndGhNb2RlV2lkdGgpCi0gICAgLCBtX2hlaWdodChMZW5ndGhN
b2RlSGVpZ2h0KQorICAgICwgbV94KHRoaXMsIFNWR05hbWVzOjp4QXR0ciwgTGVuZ3RoTW9kZVdp
ZHRoKQorICAgICwgbV95KHRoaXMsIFNWR05hbWVzOjp5QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCkK
KyAgICAsIG1fd2lkdGgodGhpcywgU1ZHTmFtZXM6OndpZHRoQXR0ciwgTGVuZ3RoTW9kZVdpZHRo
KQorICAgICwgbV9oZWlnaHQodGhpcywgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIExlbmd0aE1vZGVI
ZWlnaHQpCiB7CiB9CiAKQEAgLTUwLDExICs1MCw2IEBAIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
Ojp+U1ZHRm9yZWlnbk9iamUKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRy
KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQs
IFNWR0xlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRo
LCBTVkdOYW1lczo6d2lkdGhBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVz
OjpoZWlnaHRBdHRyKQotCiB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTMgKzUyLDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFU
SU9OUyhTVkdVUklSZWZlcmVuY2UsIFN0cmluZywgSHJlZiwgaHJlZikKLQotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xl
bmd0aCwgWCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgsIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBX
aWR0aCwgd2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdG
b3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBT
VkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZ1N0cmluZywgU1ZHTmFtZXM6OnhBdHRyU3RyaW5nLCBT
VkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWdTdHJpbmcs
IFNWR05hbWVzOjp5QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVz
Ojpmb3JlaWduT2JqZWN0VGFnU3RyaW5nLCBTVkdOYW1lczo6d2lkdGhBdHRyU3RyaW5nLCBTVkdM
ZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZ1N0
cmluZywgU1ZHTmFtZXM6OmhlaWdodEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWln
aHQpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCShy
ZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDkgKzUxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNM
QVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkgCi0KLSAgICBwcml2YXRl
OgogICAgICAgICBmcmllbmQgY2xhc3MgU1ZHVXNlRWxlbWVudDsKICAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIGxvY2FsTWF0cml4KCkgY29uc3Q7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdHcmFkaWVu
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMyArMzgsMTUgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjaGFyIFNWR0dyYWRpZW50RWxlbWVudElkZW50aWZpZXJbXSA9ICJT
VkdHcmFkaWVudEVsZW1lbnQiOworCiBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR0dyYWRpZW50RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDog
U1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2MpCiAgICAgLCBTVkdVUklSZWZlcmVuY2UoKQog
ICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgLCBtX3NwcmVhZE1ldGhv
ZCgwKQotICAgICwgbV9ncmFkaWVudFVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9P
QkpFQ1RCT1VORElOR0JPWCkKLSAgICAsIG1fZ3JhZGllbnRUcmFuc2Zvcm0oU1ZHVHJhbnNmb3Jt
TGlzdDo6Y3JlYXRlKFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIpKQorICAgICwgbV9z
cHJlYWRNZXRob2QodGhpcywgU1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIpCisgICAgLCBtX2dy
YWRpZW50VW5pdHModGhpcywgU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyLCBTVkdVbml0VHlw
ZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpCisgICAgLCBtX2dyYWRpZW50VHJh
bnNmb3JtKHRoaXMsIFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIsIFNWR1RyYW5zZm9y
bUxpc3Q6OmNyZWF0ZShTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyKSkKIHsKIH0KIApA
QCAtNTIsMTAgKzU0LDYgQEAgU1ZHR3JhZGllbnRFbGVtZW50Ojp+U1ZHR3JhZGllbnRFbGVtZW50
KAogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdHcmFkaWVudEVsZW1l
bnQsIGludCwgR3JhZGllbnRVbml0cywgZ3JhZGllbnRVbml0cywgU1ZHTmFtZXM6OmdyYWRpZW50
VW5pdHNBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfUkVGQ09VTlRFRChTVkdH
cmFkaWVudEVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3QsIEdyYWRpZW50VHJhbnNmb3JtLCBncmFk
aWVudFRyYW5zZm9ybSwgU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0cikKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0dyYWRpZW50RWxlbWVudCwgaW50LCBTcHJlYWRNZXRo
b2QsIHNwcmVhZE1ldGhvZCwgU1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIpCi0KIHZvaWQgU1ZH
R3JhZGllbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0
dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Z3JhZGllbnRVbml0c0F0
dHIpIHsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysr
IFdlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywx
MiArMjcsMTIgQEAKICNpbmNsdWRlICJTVkdQYWludFNlcnZlckdyYWRpZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAjaW5jbHVkZSAiU1ZHVVJJ
UmVmZXJlbmNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFNWR0dyYWRp
ZW50RWxlbWVudDsKLSAgICBjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0OworICAgIGV4dGVybiBjaGFy
IFNWR0dyYWRpZW50RWxlbWVudElkZW50aWZpZXJbXTsKIAogICAgIGNsYXNzIFNWR0dyYWRpZW50
RWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2UsCkBAIC02NywxMyArNjcsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBWZWN0b3I8U1ZHR3JhZGllbnRTdG9wPiBidWlsZFN0
b3BzKCkgY29uc3Q7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR1BhaW50U2VydmVyR3JhZGll
bnQ+IG1fcmVzb3VyY2U7CiAgCisgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CisKICAgICBwcm90ZWN0ZWQ6Ci0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR1VSSVJlZmVy
ZW5jZSwgU3RyaW5nLCBIcmVmLCBocmVmKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JX
QVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotIAotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHR3JhZGllbnRFbGVtZW50LCBp
bnQsIFNwcmVhZE1ldGhvZCwgc3ByZWFkTWV0aG9kKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHR3JhZGllbnRFbGVtZW50LCBpbnQsIEdyYWRpZW50VW5pdHMsIGdy
YWRpZW50VW5pdHMpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OU19SRUZD
T1VOVEVEKFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHVHJhbnNmb3JtTGlzdCwgR3JhZGllbnRUcmFu
c2Zvcm0sIGdyYWRpZW50VHJhbnNmb3JtKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHR3JhZGllbnRFbGVtZW50LCBTVkdHcmFkaWVudEVsZW1lbnRJZGVudGlmaWVy
LCBTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0clN0cmluZywgaW50LCBTcHJlYWRNZXRob2QsIHNw
cmVhZE1ldGhvZCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0dy
YWRpZW50RWxlbWVudCwgU1ZHR3JhZGllbnRFbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6Omdy
YWRpZW50VW5pdHNBdHRyU3RyaW5nLCBpbnQsIEdyYWRpZW50VW5pdHMsIGdyYWRpZW50VW5pdHMp
CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdHcmFkaWVudEVsZW1l
bnQsIFNWR0dyYWRpZW50RWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjpncmFkaWVudFRyYW5z
Zm9ybUF0dHJTdHJpbmcsIFNWR1RyYW5zZm9ybUxpc3QsIEdyYWRpZW50VHJhbnNmb3JtLCBncmFk
aWVudFRyYW5zZm9ybSkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0ltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZH
SW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEgKzQyLDExIEBAIFNWR0lt
YWdlRWxlbWVudDo6U1ZHSW1hZ2VFbGVtZW50KGNvbnN0IFEKICAgICAsIFNWR0xhbmdTcGFjZSgp
CiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAgICAsIFNWR1VSSVJlZmVy
ZW5jZSgpCi0gICAgLCBtX3goTGVuZ3RoTW9kZVdpZHRoKQotICAgICwgbV95KExlbmd0aE1vZGVI
ZWlnaHQpCi0gICAgLCBtX3dpZHRoKExlbmd0aE1vZGVXaWR0aCkKLSAgICAsIG1faGVpZ2h0KExl
bmd0aE1vZGVIZWlnaHQpCi0gICAgLCBtX3ByZXNlcnZlQXNwZWN0UmF0aW8oU1ZHUHJlc2VydmVB
c3BlY3RSYXRpbzo6Y3JlYXRlKCkpCisgICAgLCBtX3godGhpcywgU1ZHTmFtZXM6OnhBdHRyLCBM
ZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kodGhpcywgU1ZHTmFtZXM6OnlBdHRyLCBMZW5ndGhN
b2RlSGVpZ2h0KQorICAgICwgbV93aWR0aCh0aGlzLCBTVkdOYW1lczo6d2lkdGhBdHRyLCBMZW5n
dGhNb2RlV2lkdGgpCisgICAgLCBtX2hlaWdodCh0aGlzLCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwg
TGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fcHJlc2VydmVBc3BlY3RSYXRpbyh0aGlzLCBTVkdO
YW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmNy
ZWF0ZSgpKQogICAgICwgbV9pbWFnZUxvYWRlcih0aGlzKQogewogfQpAQCAtNTUsMTIgKzU1LDYg
QEAgU1ZHSW1hZ2VFbGVtZW50Ojp+U1ZHSW1hZ2VFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgsIFgsIHgsIFNW
R05hbWVzOjp4QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ltYWdlRWxl
bWVudCwgU1ZHTGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIpCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoLCBT
VkdOYW1lczo6d2lkdGhBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHSW1h
Z2VFbGVtZW50LCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0
cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1JFRkNPVU5URUQoU1ZHSW1hZ2VFbGVt
ZW50LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2
ZUFzcGVjdFJhdGlvLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpCi0gCiB2b2lk
IFNWR0ltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICph
dHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCwxMCBAQAogI2luY2x1ZGUg
IlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVGVzdHMuaCIK
ICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW87CiAgICAgY2xhc3MgU1ZHTGVuZ3RoOwogCiAgICAgY2xhc3MgU1ZHSW1hZ2VF
bGVtZW50IDogcHVibGljIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LApAQCAtNTgsMjEg
KzU4LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAg
dmlydHVhbCBib29sIGhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpOwotICAgICAgICAKICAg
ICAgICAgdmlydHVhbCBib29sIGhhc1JlbGF0aXZlVmFsdWVzKCkgY29uc3Q7Ci0KLSAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKSAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMo
U1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYpCi0KLSAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoLCBYLCB4KQot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBT
VkdMZW5ndGgsIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoKQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgsIEhlaWdo
dCwgaGVpZ2h0KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlNfUkVGQ09V
TlRFRChTVkdJbWFnZUVsZW1lbnQsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNw
ZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjppbWFnZVRhZ1N0cmluZywg
U1ZHTmFtZXM6OnhBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjppbWFnZVRh
Z1N0cmluZywgU1ZHTmFtZXM6OnlBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVz
OjppbWFnZVRhZ1N0cmluZywgU1ZHTmFtZXM6OndpZHRoQXR0clN0cmluZywgU1ZHTGVuZ3RoLCBX
aWR0aCwgd2lkdGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJ
bWFnZUVsZW1lbnQsIFNWR05hbWVzOjppbWFnZVRhZ1N0cmluZywgU1ZHTmFtZXM6OmhlaWdodEF0
dHJTdHJpbmcsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjppbWFnZVRhZ1N0
cmluZywgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyU3RyaW5nLCBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQog
CiAgICAgICAgIFNWR0ltYWdlTG9hZGVyIG1faW1hZ2VMb2FkZXI7CiAgICAgfTsKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdMaW5lRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHTGlu
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMCArMzcsMTAgQEAgU1ZHTGluZUVs
ZW1lbnQ6OlNWR0xpbmVFbGVtZW50KGNvbnN0IFF1YQogICAgICwgU1ZHVGVzdHMoKQogICAgICwg
U1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQotICAg
ICwgbV94MShMZW5ndGhNb2RlV2lkdGgpCi0gICAgLCBtX3kxKExlbmd0aE1vZGVIZWlnaHQpCi0g
ICAgLCBtX3gyKExlbmd0aE1vZGVXaWR0aCkKLSAgICAsIG1feTIoTGVuZ3RoTW9kZUhlaWdodCkK
KyAgICAsIG1feDEodGhpcywgU1ZHTmFtZXM6OngxQXR0ciwgTGVuZ3RoTW9kZVdpZHRoKQorICAg
ICwgbV95MSh0aGlzLCBTVkdOYW1lczo6eTFBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwg
bV94Mih0aGlzLCBTVkdOYW1lczo6eDJBdHRyLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3ky
KHRoaXMsIFNWR05hbWVzOjp5MkF0dHIsIExlbmd0aE1vZGVIZWlnaHQpCiB7CiB9CiAKQEAgLTQ4
LDExICs0OCw2IEBAIFNWR0xpbmVFbGVtZW50Ojp+U1ZHTGluZUVsZW1lbnQoKQogewogfQogCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBY
MSwgeDEsIFNWR05hbWVzOjp4MUF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBZMSwgeTEsIFNWR05hbWVzOjp5MUF0dHIpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBYMiwg
eDIsIFNWR05hbWVzOjp4MkF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdM
aW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBZMiwgeTIsIFNWR05hbWVzOjp5MkF0dHIpCi0KIHZvaWQg
U1ZHTGluZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0
cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4MUF0dHIpCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0xpbmVFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHTGluZUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTIgKzU1LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGhhc1JlbGF0aXZlVmFsdWVzKCkgY29uc3Q7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFU
SU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotIAotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCwgWDEsIHgx
KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQs
IFNWR0xlbmd0aCwgWTEsIHkxKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCwgWDIsIHgyKQotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCwgWTIsIHkyKQor
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNW
R05hbWVzOjpsaW5lVGFnU3RyaW5nLCBTVkdOYW1lczo6eDFBdHRyU3RyaW5nLCBTVkdMZW5ndGgs
IFgxLCB4MSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVF
bGVtZW50LCBTVkdOYW1lczo6bGluZVRhZ1N0cmluZywgU1ZHTmFtZXM6OnkxQXR0clN0cmluZywg
U1ZHTGVuZ3RoLCBZMSwgeTEpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OmxpbmVUYWdTdHJpbmcsIFNWR05hbWVzOjp4MkF0
dHJTdHJpbmcsIFNWR0xlbmd0aCwgWDIsIHgyKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR05hbWVzOjpsaW5lVGFnU3RyaW5nLCBTVkdO
YW1lczo6eTJBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFkyLCB5MikKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6
IFNWR0dyYWRpZW50RWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX3gxKExlbmd0aE1vZGVX
aWR0aCkKLSAgICAsIG1feTEoTGVuZ3RoTW9kZUhlaWdodCkKLSAgICAsIG1feDIoTGVuZ3RoTW9k
ZVdpZHRoLCAiMTAwJSIpCi0gICAgLCBtX3kyKExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3gx
KHRoaXMsIFNWR05hbWVzOjp4MUF0dHIsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feTEodGhp
cywgU1ZHTmFtZXM6OnkxQXR0ciwgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1feDIodGhpcywg
U1ZHTmFtZXM6OngyQXR0ciwgTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIpCisgICAgLCBtX3kyKHRo
aXMsIFNWR05hbWVzOjp5MkF0dHIsIExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgLy8gU3BlYzog
SWYgdGhlIHgyIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlm
IGEgdmFsdWUgb2YgIjEwMCUiIHdlcmUgc3BlY2lmaWVkLgogfQpAQCAtNTAsMTEgKzUwLDYgQEAg
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Ojp+U1ZHTGluZWFyR3JhZAogewogfQogCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0
aCwgWDEsIHgxLCBTVkdOYW1lczo6eDFBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIFkxLCB5MSwgU1ZHTmFtZXM6
OnkxQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50
RWxlbWVudCwgU1ZHTGVuZ3RoLCBYMiwgeDIsIFNWR05hbWVzOjp4MkF0dHIpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwg
WTIsIHkyLCBTVkdOYW1lczo6eTJBdHRyKQotCiB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlm
IChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OngxQXR0cikKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIExpbmVhckdyYWRpZW50QXR0cmlidXRl
cyBjb2xsZWN0R3JhZGllbnRQcm9wZXJ0aWVzKCkgY29uc3Q7CiAKLSAgICBwcm90ZWN0ZWQ6Ci0g
ICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7
IHJldHVybiB0aGlzOyB9Ci0KICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIFgxLCB4
MSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBZMSwgeTEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgWDIsIHgy
KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LCBTVkdMZW5ndGgsIFkyLCB5MikKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmxpbmVhckdy
YWRpZW50VGFnU3RyaW5nLCBTVkdOYW1lczo6eDFBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFgxLCB4
MSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudCwgU1ZHTmFtZXM6OmxpbmVhckdyYWRpZW50VGFnU3RyaW5nLCBTVkdOYW1lczo6
eTFBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFkxLCB5MSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmxpbmVh
ckdyYWRpZW50VGFnU3RyaW5nLCBTVkdOYW1lczo6eDJBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFgy
LCB4MikKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmxpbmVhckdyYWRpZW50VGFnU3RyaW5nLCBTVkdOYW1l
czo6eTJBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFkyLCB5MikKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMzUy
MDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzQsMTggKzM0LDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2hhciBTVkdPcmll
bnRUeXBlQXR0cklkZW50aWZpZXJbXSA9ICJTVkdPcmllbnRUeXBlQXR0ciI7CitjaGFyIFNWR09y
aWVudEFuZ2xlQXR0cklkZW50aWZpZXJbXSA9ICJTVkdPcmllbnRBbmdsZUF0dHIiOworCiBTVkdN
YXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvYykK
ICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KCkKICAgICAsIFNWR0ZpdFRvVmlld0JveCgpCi0gICAgLCBtX3JlZlgoTGVuZ3RoTW9kZVdpZHRo
KQotICAgICwgbV9yZWZZKExlbmd0aE1vZGVIZWlnaHQpCi0gICAgLCBtX21hcmtlcldpZHRoKExl
bmd0aE1vZGVXaWR0aCwgIjMiKQotICAgICwgbV9tYXJrZXJIZWlnaHQoTGVuZ3RoTW9kZUhlaWdo
dCwgIjMiKSAKLSAgICAsIG1fbWFya2VyVW5pdHMoU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRI
KQotICAgICwgbV9vcmllbnRUeXBlKDApCi0gICAgLCBtX29yaWVudEFuZ2xlKFNWR0FuZ2xlOjpj
cmVhdGUoKSkKKyAgICAsIG1fcmVmWCh0aGlzLCBTVkdOYW1lczo6cmVmWEF0dHIsIExlbmd0aE1v
ZGVXaWR0aCkKKyAgICAsIG1fcmVmWSh0aGlzLCBTVkdOYW1lczo6cmVmWUF0dHIsIExlbmd0aE1v
ZGVIZWlnaHQpCisgICAgLCBtX21hcmtlcldpZHRoKHRoaXMsIFNWR05hbWVzOjptYXJrZXJXaWR0
aEF0dHIsIExlbmd0aE1vZGVXaWR0aCwgIjMiKQorICAgICwgbV9tYXJrZXJIZWlnaHQodGhpcywg
U1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIsIExlbmd0aE1vZGVIZWlnaHQsICIzIikgCisgICAg
LCBtX21hcmtlclVuaXRzKHRoaXMsIFNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIsIFNWR19NQVJL
RVJVTklUU19TVFJPS0VXSURUSCkKKyAgICAsIG1fb3JpZW50VHlwZSh0aGlzLCBTVkdOYW1lczo6
b3JpZW50QXR0cikKKyAgICAsIG1fb3JpZW50QW5nbGUodGhpcywgU1ZHTmFtZXM6Om9yaWVudEF0
dHIsIFNWR0FuZ2xlOjpjcmVhdGUoKSkKIHsKICAgICAvLyBTcGVjOiBJZiB0aGUgbWFya2VyV2lk
dGgvbWFya2VySGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlz
IGFzIGlmIGEgdmFsdWUgb2YgIjMiIHdlcmUgc3BlY2lmaWVkLgogfQpAQCAtNTQsMTQgKzU3LDYg
QEAgU1ZHTWFya2VyRWxlbWVudDo6flNWR01hcmtlckVsZW1lbnQoKQogewogfQogCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIFJlZlgs
IHJlZlgsIFNWR05hbWVzOjpyZWZYQXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwgUmVmWSwgcmVmWSwgU1ZHTmFtZXM6OnJlZllB
dHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgaW50
LCBNYXJrZXJVbml0cywgbWFya2VyVW5pdHMsIFNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIpCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgs
IE1hcmtlcldpZHRoLCBtYXJrZXJXaWR0aCwgU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0cikKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwg
TWFya2VySGVpZ2h0LCBtYXJrZXJIZWlnaHQsIFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfV0lUSF9DVVNUT01fSURFTlRJRklFUihTVkdN
YXJrZXJFbGVtZW50LCBpbnQsIE9yaWVudFR5cGUsIG9yaWVudFR5cGUsIFNWR05hbWVzOjpvcmll
bnRBdHRyLCAib3JpZW50VHlwZSIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19SRUZD
T1VOVEVEX1dJVEhfQ1VTVE9NX0lERU5USUZJRVIoU1ZHTWFya2VyRWxlbWVudCwgU1ZHQW5nbGUs
IE9yaWVudEFuZ2xlLCBvcmllbnRBbmdsZSwgU1ZHTmFtZXM6Om9yaWVudEF0dHIsICJvcmllbnRB
bmdsZSIpCi0KIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFw
cGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6
Om1hcmtlclVuaXRzQXR0cikgewpAQCAtMTQ3LDcgKzE0Miw3IEBAIFNWR1Jlc291cmNlKiBTVkdN
YXJrZXJFbGVtZW50OjpjYW52YXNSZXMKIAogICAgIC8vIFNwZWM6IElmIHRoZSBhdHRyaWJ1dGUg
aXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhCiAgICAgLy8gdmFsdWUgb2Yg
IjAiIHdlcmUgc3BlY2lmaWVkLgotICAgIGlmICghbV9vcmllbnRUeXBlKQorICAgIGlmICghb3Jp
ZW50VHlwZSgpKQogICAgICAgICBzZXRPcmllbnRUb0FuZ2xlKFNWR1NWR0VsZW1lbnQ6OmNyZWF0
ZVNWR0FuZ2xlKCkpOwogCiAgICAgaWYgKG9yaWVudFR5cGUoKSA9PSBTVkdfTUFSS0VSX09SSUVO
VF9BTkdMRSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysg
V2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICsz
NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBEb2N1bWVudDsKICAgICBjbGFz
cyBTVkdBbmdsZTsKIAorICAgIGV4dGVybiBjaGFyIFNWR09yaWVudFR5cGVBdHRySWRlbnRpZmll
cltdOworICAgIGV4dGVybiBjaGFyIFNWR09yaWVudEFuZ2xlQXR0cklkZW50aWZpZXJbXTsKKwog
ICAgIGNsYXNzIFNWR01hcmtlckVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0xhbmdTcGFjZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
CkBAIC02OSwxNyArNzIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNM
QVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkgCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0ZpdFRvVmlld0JveCwgRmxvYXRS
ZWN0LCBWaWV3Qm94LCB2aWV3Qm94KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJE
X0RFQ0xBUkFUSU9OU19SRUZDT1VOVEVEKFNWR0ZpdFRvVmlld0JveCwgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKLQotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZH
TGVuZ3RoLCBSZWZYLCByZWZYKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoLCBSZWZZLCByZWZZKQotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoLCBN
YXJrZXJXaWR0aCwgbWFya2VyV2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIE1hcmtlckhlaWdodCwgbWFya2Vy
SGVpZ2h0KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2Vy
RWxlbWVudCwgaW50LCBNYXJrZXJVbml0cywgbWFya2VyVW5pdHMpCi0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBpbnQsIE9yaWVudFR5cGUs
IG9yaWVudFR5cGUpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OU19SRUZD
T1VOVEVEKFNWR01hcmtlckVsZW1lbnQsIFNWR0FuZ2xlLCBPcmllbnRBbmdsZSwgb3JpZW50QW5n
bGUpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVt
ZW50LCBTVkdOYW1lczo6bWFya2VyVGFnU3RyaW5nLCBTVkdOYW1lczo6cmVmWEF0dHJTdHJpbmcs
IFNWR0xlbmd0aCwgUmVmWCwgcmVmWCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjptYXJrZXJUYWdTdHJpbmcsIFNWR05h
bWVzOjpyZWZZQXR0clN0cmluZywgU1ZHTGVuZ3RoLCBSZWZZLCByZWZZKQorICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6Om1h
cmtlclRhZ1N0cmluZywgU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0clN0cmluZywgU1ZHTGVuZ3Ro
LCBNYXJrZXJXaWR0aCwgbWFya2VyV2lkdGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6bWFya2VyVGFnU3RyaW5nLCBT
VkdOYW1lczo6bWFya2VySGVpZ2h0QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBNYXJrZXJIZWlnaHQs
IG1hcmtlckhlaWdodCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjptYXJrZXJUYWdTdHJpbmcsIFNWR05hbWVzOjptYXJr
ZXJVbml0c0F0dHJTdHJpbmcsIGludCwgTWFya2VyVW5pdHMsIG1hcmtlclVuaXRzKQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFt
ZXM6Om1hcmtlclRhZ1N0cmluZywgU1ZHT3JpZW50VHlwZUF0dHJJZGVudGlmaWVyLCBpbnQsIE9y
aWVudFR5cGUsIG9yaWVudFR5cGUpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6bWFya2VyVGFnU3RyaW5nLCBTVkdPcmll
bnRBbmdsZUF0dHJJZGVudGlmaWVyLCBTVkdBbmdsZSwgT3JpZW50QW5nbGUsIG9yaWVudEFuZ2xl
KQogCiAgICAgICAgIFJlZlB0cjxTVkdSZXNvdXJjZU1hcmtlcj4gbV9tYXJrZXI7CiAgICAgfTsK
QEAgLTg3LDUgKzg2LDQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdNYXNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTWFza0Vs
ZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTIgKzQ4LDEyIEBAIFNWR01hc2tFbGVtZW50OjpT
VkdNYXNrRWxlbWVudChjb25zdCBRdWEKICAgICAsIFNWR1Rlc3RzKCkKICAgICAsIFNWR0xhbmdT
cGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAgICAsIG1fbWFz
a1VuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKLSAg
ICAsIG1fbWFza0NvbnRlbnRVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQ
QUNFT05VU0UpCi0gICAgLCBtX3goTGVuZ3RoTW9kZVdpZHRoLCAiLTEwJSIpCi0gICAgLCBtX3ko
TGVuZ3RoTW9kZUhlaWdodCwgIi0xMCUiKQotICAgICwgbV93aWR0aChMZW5ndGhNb2RlV2lkdGgs
ICIxMjAlIikKLSAgICAsIG1faGVpZ2h0KExlbmd0aE1vZGVIZWlnaHQsICIxMjAlIikKKyAgICAs
IG1fbWFza1VuaXRzKHRoaXMsIFNWR05hbWVzOjptYXNrVW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6
OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpCisgICAgLCBtX21hc2tDb250ZW50VW5p
dHModGhpcywgU1ZHTmFtZXM6Om1hc2tDb250ZW50VW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNW
R19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpCisgICAgLCBtX3godGhpcywgU1ZHTmFtZXM6OnhB
dHRyLCBMZW5ndGhNb2RlV2lkdGgsICItMTAlIikKKyAgICAsIG1feSh0aGlzLCBTVkdOYW1lczo6
eUF0dHIsIExlbmd0aE1vZGVIZWlnaHQsICItMTAlIikKKyAgICAsIG1fd2lkdGgodGhpcywgU1ZH
TmFtZXM6OndpZHRoQXR0ciwgTGVuZ3RoTW9kZVdpZHRoLCAiMTIwJSIpCisgICAgLCBtX2hlaWdo
dCh0aGlzLCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCwgIjEyMCUiKQog
ewogICAgIC8vIFNwZWM6IElmIHRoZSB4L3kgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRo
ZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiLTEwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAg
Ly8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwg
dGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMjAlIiB3ZXJlIHNwZWNpZmllZC4KQEAg
LTYzLDEzICs2Myw2IEBAIFNWR01hc2tFbGVtZW50Ojp+U1ZHTWFza0VsZW1lbnQoKQogewogfQog
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgaW50LCBNYXNr
VW5pdHMsIG1hc2tVbml0cywgU1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgaW50LCBNYXNrQ29udGVudFVuaXRzLCBt
YXNrQ29udGVudFVuaXRzLCBTVkdOYW1lczo6bWFza0NvbnRlbnRVbml0c0F0dHIpCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBYLCB4LCBT
VkdOYW1lczo6eEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxl
bWVudCwgU1ZHTGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIpCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNW
R05hbWVzOjp3aWR0aEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNr
RWxlbWVudCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIp
Ci0KIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjptYXNrVW5p
dHNBdHRyKSB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsMjAgKzU0LDE2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RkOjphdXRvX3B0cjxJbWFnZUJ1ZmZl
cj4gZHJhd01hc2tlckNvbnRlbnQoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBGbG9hdFJl
Y3QmIG1hc2tSZWN0KSBjb25zdDsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcsIEhy
ZWYsIGhyZWYpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05T
KFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0gICAgICAgICAgICAKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hc2tFbGVtZW50LCBpbnQsIE1hc2tV
bml0cywgbWFza1VuaXRzKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHTWFza0VsZW1lbnQsIGludCwgTWFza0NvbnRlbnRVbml0cywgbWFza0NvbnRlbnRVbml0cykK
LSAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hc2tFbGVtZW50
LCBTVkdMZW5ndGgsIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBZLCB5KQotICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRo
KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFza0VsZW1lbnQs
IFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCi0KICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHBy
aXZhdGU6CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxl
bWVudCwgU1ZHTmFtZXM6Om1hc2tUYWdTdHJpbmcsIFNWR05hbWVzOjptYXNrVW5pdHNBdHRyU3Ry
aW5nLCBpbnQsIE1hc2tVbml0cywgbWFza1VuaXRzKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR05hbWVzOjptYXNrVGFnU3RyaW5nLCBT
VkdOYW1lczo6bWFza0NvbnRlbnRVbml0c0F0dHJTdHJpbmcsIGludCwgTWFza0NvbnRlbnRVbml0
cywgbWFza0NvbnRlbnRVbml0cykKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6bWFza1RhZ1N0cmluZywgU1ZHTmFtZXM6OnhB
dHRyU3RyaW5nLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6Om1hc2tUYWdTdHJpbmcsIFNWR05h
bWVzOjp5QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR05hbWVzOjptYXNrVGFnU3RyaW5n
LCBTVkdOYW1lczo6d2lkdGhBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdO
YW1lczo6bWFza1RhZ1N0cmluZywgU1ZHTmFtZXM6OmhlaWdodEF0dHJTdHJpbmcsIFNWR0xlbmd0
aCwgSGVpZ2h0LCBoZWlnaHQpCisKICAgICAgICAgUmVmUHRyPFNWR1Jlc291cmNlTWFza2VyPiBt
X21hc2tlcjsKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAz
NTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDgsNyArNDgsNyBAQCBTVkdQYXRoRWxlbWVudDo6U1ZHUGF0aEVsZW1lbnQoY29uc3QgUXVh
CiAgICAgLCBTVkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgLCBtX3BhdGhMZW5ndGgoMC4wZikKKyAgICAsIG1f
cGF0aExlbmd0aCh0aGlzLCBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIsIDAuMGYpCiB7CiB9CiAK
QEAgLTU2LDggKzU2LDYgQEAgU1ZHUGF0aEVsZW1lbnQ6On5TVkdQYXRoRWxlbWVudCgpCiB7CiB9
CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdGhFbGVtZW50LCBmbG9hdCwg
UGF0aExlbmd0aCwgcGF0aExlbmd0aCwgU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyKQotCiBmbG9h
dCBTVkdQYXRoRWxlbWVudDo6Z2V0VG90YWxMZW5ndGgoKQogewogICAgIC8vIEZJWE1FOiB0aGlz
IG1heSB3aXNoIHRvIHVzZSB0aGUgcGF0aFNlZ0xpc3QgaW5zdGVhZCBvZiB0aGUgcGF0aGRhdGEg
aWYgdGhhdCdzIGNoZWFwZXIgdG8gYnVpbGQgKG9yIGNhY2hlZCkKQEAgLTE3OSw4ICsxNzcsOCBA
QCB2b2lkIFNWR1BhdGhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0CiAgICAgICAgIGlmICgh
cGF0aFNlZ0xpc3RGcm9tU1ZHRGF0YShwYXRoU2VnTGlzdCgpLCBhdHRyLT52YWx1ZSgpLCB0cnVl
KSkKICAgICAgICAgICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVwb3J0
RXJyb3IoIlByb2JsZW0gcGFyc2luZyBkPVwiIiArIGF0dHItPnZhbHVlKCkgKyAiXCIiKTsKICAg
ICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIpIHsK
LSAgICAgICAgbV9wYXRoTGVuZ3RoID0gYXR0ci0+dmFsdWUoKS50b0Zsb2F0KCk7Ci0gICAgICAg
IGlmIChtX3BhdGhMZW5ndGggPCAwLjBmKQorICAgICAgICBzZXRQYXRoTGVuZ3RoQmFzZVZhbHVl
KGF0dHItPnZhbHVlKCkudG9GbG9hdCgpKTsKKyAgICAgICAgaWYgKHBhdGhMZW5ndGhCYXNlVmFs
dWUoKSA8IDAuMGYpCiAgICAgICAgICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25z
KCktPnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBwYXRoIGF0dHJpYnV0ZSA8cGF0
aExlbmd0aD4gaXMgbm90IGFsbG93ZWQiKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoU1ZH
VGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
UGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5o
CShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwNiw5ICsxMDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJp
dmF0ZToKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHUGF0aFNlZ0xpc3Q+IG1fcGF0aFNlZ0xp
c3Q7CiAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLSAKLSAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR1BhdGhFbGVtZW50LCBmbG9hdCwgUGF0aExlbmd0aCwgcGF0aExl
bmd0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1BhdGhFbGVt
ZW50LCBTVkdOYW1lczo6cGF0aFRhZ1N0cmluZywgU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyU3Ry
aW5nLCBmbG9hdCwgUGF0aExlbmd0aCwgcGF0aExlbmd0aCkKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCShyZXZpc2lvbiAz
NTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTcsMTMgKzU3LDEzIEBAIFNWR1BhdHRlcm5FbGVtZW50OjpTVkdQYXR0ZXJuRWxlbWVu
dChjb24KICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCkKICAgICAsIFNWR0ZpdFRvVmlld0JveCgpCi0gICAgLCBtX3goTGVuZ3RoTW9kZVdp
ZHRoKQotICAgICwgbV95KExlbmd0aE1vZGVIZWlnaHQpCi0gICAgLCBtX3dpZHRoKExlbmd0aE1v
ZGVXaWR0aCkKLSAgICAsIG1faGVpZ2h0KExlbmd0aE1vZGVIZWlnaHQpCi0gICAgLCBtX3BhdHRl
cm5Vbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpCi0g
ICAgLCBtX3BhdHRlcm5Db250ZW50VW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VT
RVJTUEFDRU9OVVNFKQotICAgICwgbV9wYXR0ZXJuVHJhbnNmb3JtKFNWR1RyYW5zZm9ybUxpc3Q6
OmNyZWF0ZShTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIpKQorICAgICwgbV94KHRoaXMs
IFNWR05hbWVzOjp4QXR0ciwgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KHRoaXMsIFNWR05h
bWVzOjp5QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fd2lkdGgodGhpcywgU1ZHTmFt
ZXM6OndpZHRoQXR0ciwgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhpcywgU1ZH
TmFtZXM6OmhlaWdodEF0dHIsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3BhdHRlcm5Vbml0
cyh0aGlzLCBTVkdOYW1lczo6cGF0dGVyblVuaXRzQXR0ciwgU1ZHVW5pdFR5cGVzOjpTVkdfVU5J
VF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKQorICAgICwgbV9wYXR0ZXJuQ29udGVudFVuaXRzKHRo
aXMsIFNWR05hbWVzOjpwYXR0ZXJuQ29udGVudFVuaXRzQXR0ciwgU1ZHVW5pdFR5cGVzOjpTVkdf
VU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQorICAgICwgbV9wYXR0ZXJuVHJhbnNmb3JtKHRoaXMs
IFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0ciwgU1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRl
KFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0cikpCiB7CiB9CiAKQEAgLTcxLDE0ICs3MSw2
IEBAIFNWR1BhdHRlcm5FbGVtZW50Ojp+U1ZHUGF0dGVybkVsZW1lbnQoKQogewogfQogCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgaW50LCBQYXR0ZXJu
VW5pdHMsIHBhdHRlcm5Vbml0cywgU1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIpCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgaW50LCBQYXR0ZXJuQ29u
dGVudFVuaXRzLCBwYXR0ZXJuQ29udGVudFVuaXRzLCBTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRV
bml0c0F0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVu
dCwgU1ZHTGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6
eUF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwg
U1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBIZWlnaHQs
IGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OU19SRUZDT1VOVEVEKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0LCBQYXR0
ZXJuVHJhbnNmb3JtLCBwYXR0ZXJuVHJhbnNmb3JtLCBTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9y
bUF0dHIpCi0KIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
OjpwYXR0ZXJuVW5pdHNBdHRyKSB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHJldmlz
aW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjQsMjEgKzI0LDIwIEBACiAjZGVmaW5lIFNWR1BhdHRlcm5FbGVtZW50X2gKIAog
I2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuLmgiCiAjaW5j
bHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0ZpdFRv
Vmlld0JveC5oIgogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZS5oIgorI2luY2x1ZGUgIlNWR1BhaW50
U2VydmVyUGF0dGVybi5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdUZXN0cy5oIgorI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRlICJT
VkdVUklSZWZlcmVuY2UuaCIKIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBzdHJ1Y3Qg
UGF0dGVybkF0dHJpYnV0ZXM7CiAgCiAgICAgY2xhc3MgU1ZHTGVuZ3RoOwotICAgIGNsYXNzIFNW
R1RyYW5zZm9ybUxpc3Q7CiAKICAgICBjbGFzcyBTVkdQYXR0ZXJuRWxlbWVudCA6IHB1YmxpYyBT
VkdTdHlsZWRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNW
R1VSSVJlZmVyZW5jZSwKQEAgLTYwLDIyICs1OSwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgU1ZHUmVzb3VyY2UqIGNhbnZhc1Jlc291cmNlKCk7CiAKICAgICBwcm90
ZWN0ZWQ6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNW
R1VSSVJlZmVyZW5jZSwgU3RyaW5nLCBIcmVmLCBocmVmKQotICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBi
b29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdGaXRU
b1ZpZXdCb3gsIEZsb2F0UmVjdCwgVmlld0JveCwgdmlld0JveCkKLSAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlNfUkVGQ09VTlRFRChTVkdGaXRUb1ZpZXdCb3gs
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNw
ZWN0UmF0aW8pCi0KLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1Bh
dHRlcm5FbGVtZW50LCBTVkdMZW5ndGgsIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBZLCB5KQotICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xl
bmd0aCwgV2lkdGgsIHdpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCi0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgaW50LCBQ
YXR0ZXJuVW5pdHMsIHBhdHRlcm5Vbml0cykKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBpbnQsIFBhdHRlcm5Db250ZW50VW5pdHMsIHBh
dHRlcm5Db250ZW50VW5pdHMpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
U19SRUZDT1VOVEVEKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0LCBQYXR0ZXJu
VHJhbnNmb3JtLCBwYXR0ZXJuVHJhbnNmb3JtKQorICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0Vs
ZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCi0gICAgICAg
IG11dGFibGUgUmVmUHRyPFNWR1BhaW50U2VydmVyUGF0dGVybj4gbV9yZXNvdXJjZTsKKyAgICBw
cml2YXRlOgorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVy
bkVsZW1lbnQsIFNWR05hbWVzOjpwYXR0ZXJuVGFnU3RyaW5nLCBTVkdOYW1lczo6eEF0dHJTdHJp
bmcsIFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cGF0dGVyblRhZ1N0cmluZywgU1ZHTmFt
ZXM6OnlBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnBhdHRlcm5UYWdT
dHJpbmcsIFNWR05hbWVzOjp3aWR0aEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRo
KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1l
bnQsIFNWR05hbWVzOjpwYXR0ZXJuVGFnU3RyaW5nLCBTVkdOYW1lczo6aGVpZ2h0QXR0clN0cmlu
ZywgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cGF0dGVyblRhZ1N0cmlu
ZywgU1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHJTdHJpbmcsIGludCwgUGF0dGVyblVuaXRzLCBw
YXR0ZXJuVW5pdHMpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQ
YXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnBhdHRlcm5UYWdTdHJpbmcsIFNWR05hbWVzOjpwYXR0
ZXJuQ29udGVudFVuaXRzQXR0clN0cmluZywgaW50LCBQYXR0ZXJuQ29udGVudFVuaXRzLCBwYXR0
ZXJuQ29udGVudFVuaXRzKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwYXR0ZXJuVGFnU3RyaW5nLCBTVkdOYW1lczo6
cGF0dGVyblRyYW5zZm9ybUF0dHJTdHJpbmcsIFNWR1RyYW5zZm9ybUxpc3QsIFBhdHRlcm5UcmFu
c2Zvcm0sIHBhdHRlcm5UcmFuc2Zvcm0pCiAKLSAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KKyAgICAgICAgbXV0
YWJsZSBSZWZQdHI8U1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuPiBtX3Jlc291cmNlOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNWR1BhaW50U2VydmVyUGF0dGVybjsKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHUG9seUVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdQb2x5
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICBib29sIG1faWdub3JlQXR0cmlidXRlQ2hhbmdl
cyA6IDE7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR1BvaW50TGlzdD4gbV9wb2ludHM7Ci0K
LSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAkocmV2aXNpb24gMzUy
MDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHUHJl
c2VydmVBc3BlY3RSYXRpby5oIgogCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5j
bHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgog
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9u
IDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDEsMTEgKzQxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50OjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0dyYWRpZW50RWxl
bWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX2N4KExlbmd0aE1vZGVXaWR0aCwgIjUwJSIpCi0g
ICAgLCBtX2N5KExlbmd0aE1vZGVIZWlnaHQsICI1MCUiKQotICAgICwgbV9yKExlbmd0aE1vZGVP
dGhlciwgIjUwJSIpCi0gICAgLCBtX2Z4KExlbmd0aE1vZGVXaWR0aCkKLSAgICAsIG1fZnkoTGVu
Z3RoTW9kZUhlaWdodCkKKyAgICAsIG1fY3godGhpcywgU1ZHTmFtZXM6OmN4QXR0ciwgTGVuZ3Ro
TW9kZVdpZHRoLCAiNTAlIikKKyAgICAsIG1fY3kodGhpcywgU1ZHTmFtZXM6OmN5QXR0ciwgTGVu
Z3RoTW9kZUhlaWdodCwgIjUwJSIpCisgICAgLCBtX3IodGhpcywgU1ZHTmFtZXM6OnJBdHRyLCBM
ZW5ndGhNb2RlT3RoZXIsICI1MCUiKQorICAgICwgbV9meCh0aGlzLCBTVkdOYW1lczo6ZnhBdHRy
LCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX2Z5KHRoaXMsIFNWR05hbWVzOjpmeUF0dHIsIExl
bmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIGN4L2N5L3IgYXR0cmlidXRl
IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiNTAlIiB3
ZXJlIHNwZWNpZmllZC4KIH0KQEAgLTU0LDEyICs1NCw2IEBAIFNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudDo6flNWR1JhZGlhbEdyYWQKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIEN4LCBjeCwgU1ZHTmFtZXM6
OmN4QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50
RWxlbWVudCwgU1ZHTGVuZ3RoLCBDeSwgY3ksIFNWR05hbWVzOjpjeUF0dHIpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwg
RngsIGZ4LCBTVkdOYW1lczo6ZnhBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIEZ5LCBmeSwgU1ZHTmFtZXM6OmZ5
QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudCwgU1ZHTGVuZ3RoLCBSLCByLCBTVkdOYW1lczo6ckF0dHIpCi0KIHZvaWQgU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0
dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Y3hBdHRyKQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysg
V2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDE1ICs0NSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgUmFkaWFsR3Jh
ZGllbnRBdHRyaWJ1dGVzIGNvbGxlY3RHcmFkaWVudFByb3BlcnRpZXMoKSBjb25zdDsKIAotICAg
IHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KLQogICAgIHByaXZhdGU6Ci0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNW
R0xlbmd0aCwgQ3gsIGN4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIEN5LCBjeSkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZH
TGVuZ3RoLCBSLCByKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIEZ4LCBmeCkKLSAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVu
Z3RoLCBGeSwgZnkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZ1N0cmluZywg
U1ZHTmFtZXM6OmN4QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBDeCwgY3gpCisgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05h
bWVzOjpyYWRpYWxHcmFkaWVudFRhZ1N0cmluZywgU1ZHTmFtZXM6OmN5QXR0clN0cmluZywgU1ZH
TGVuZ3RoLCBDeSwgY3kpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZ1N0cmlu
ZywgU1ZHTmFtZXM6OnJBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFIsIHIpCisgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05h
bWVzOjpyYWRpYWxHcmFkaWVudFRhZ1N0cmluZywgU1ZHTmFtZXM6OmZ4QXR0clN0cmluZywgU1ZH
TGVuZ3RoLCBGeCwgZngpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZ1N0cmlu
ZywgU1ZHTmFtZXM6OmZ5QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBGeSwgZnkpCiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkocmV2aXNp
b24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDEyICszNiwxMiBAQCBTVkdSZWN0RWxlbWVudDo6U1ZHUmVjdEVsZW1lbnQoY29u
c3QgUXVhCiAgICAgLCBTVkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgLCBtX3goTGVuZ3RoTW9kZVdpZHRoKQot
ICAgICwgbV95KExlbmd0aE1vZGVIZWlnaHQpCi0gICAgLCBtX3dpZHRoKExlbmd0aE1vZGVXaWR0
aCkKLSAgICAsIG1faGVpZ2h0KExlbmd0aE1vZGVIZWlnaHQpCi0gICAgLCBtX3J4KExlbmd0aE1v
ZGVXaWR0aCkKLSAgICAsIG1fcnkoTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1feCh0aGlzLCBT
VkdOYW1lczo6eEF0dHIsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feSh0aGlzLCBTVkdOYW1l
czo6eUF0dHIsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKHRoaXMsIFNWR05hbWVz
Ojp3aWR0aEF0dHIsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1faGVpZ2h0KHRoaXMsIFNWR05h
bWVzOjpoZWlnaHRBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV9yeCh0aGlzLCBTVkdO
YW1lczo6cnhBdHRyLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3J5KHRoaXMsIFNWR05hbWVz
OjpyeUF0dHIsIExlbmd0aE1vZGVIZWlnaHQpCiB7CiB9CiAKQEAgLTQ5LDEzICs0OSw2IEBAIFNW
R1JlY3RFbGVtZW50Ojp+U1ZHUmVjdEVsZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6
eEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZH
TGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3
aWR0aEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwg
U1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBSeCwgcngs
IFNWR05hbWVzOjpyeEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0
RWxlbWVudCwgU1ZHTGVuZ3RoLCBSeSwgcnksIFNWR05hbWVzOjpyeUF0dHIpCi0KIHZvaWQgU1ZH
UmVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikK
IHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUmVj
dEVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNCArNTEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVWYWx1ZXMoKSBjb25zdDsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05T
KFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0KLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIFgsIHgpCi0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVu
Z3RoLCBZLCB5KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVj
dEVsZW1lbnQsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWln
aHQpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVu
dCwgU1ZHTGVuZ3RoLCBSeCwgcngpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBSeSwgcnkpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnJlY3RUYWdT
dHJpbmcsIFNWR05hbWVzOjp4QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjpy
ZWN0VGFnU3RyaW5nLCBTVkdOYW1lczo6eUF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWSwgeSkKKyAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdO
YW1lczo6cmVjdFRhZ1N0cmluZywgU1ZHTmFtZXM6OndpZHRoQXR0clN0cmluZywgU1ZHTGVuZ3Ro
LCBXaWR0aCwgd2lkdGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnJlY3RUYWdTdHJpbmcsIFNWR05hbWVzOjpoZWlnaHRB
dHRyU3RyaW5nLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjpyZWN0VGFnU3Ry
aW5nLCBTVkdOYW1lczo6cnhBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFJ4LCByeCkKKyAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6
cmVjdFRhZ1N0cmluZywgU1ZHTmFtZXM6OnJ5QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBSeSwgcnkp
CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5j
cHAJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYxLDEwICs2MSwxMCBAQCBTVkdTVkdFbGVtZW50OjpTVkdTVkdFbGVt
ZW50KGNvbnN0IFF1YWxpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAg
ICAsIFNWR0ZpdFRvVmlld0JveCgpCiAgICAgLCBTVkdab29tQW5kUGFuKCkKLSAgICAsIG1feChM
ZW5ndGhNb2RlV2lkdGgpCi0gICAgLCBtX3koTGVuZ3RoTW9kZUhlaWdodCkKLSAgICAsIG1fd2lk
dGgoTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIpCi0gICAgLCBtX2hlaWdodChMZW5ndGhNb2RlSGVp
Z2h0LCAiMTAwJSIpCisgICAgLCBtX3godGhpcywgU1ZHTmFtZXM6OnhBdHRyLCBMZW5ndGhNb2Rl
V2lkdGgpCisgICAgLCBtX3kodGhpcywgU1ZHTmFtZXM6OnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0
KQorICAgICwgbV93aWR0aCh0aGlzLCBTVkdOYW1lczo6d2lkdGhBdHRyLCBMZW5ndGhNb2RlV2lk
dGgsICIxMDAlIikKKyAgICAsIG1faGVpZ2h0KHRoaXMsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBM
ZW5ndGhNb2RlSGVpZ2h0LCAiMTAwJSIpCiAgICAgLCBtX3VzZUN1cnJlbnRWaWV3KGZhbHNlKQog
ICAgICwgbV90aW1lQ29udGFpbmVyKFNNSUxUaW1lQ29udGFpbmVyOjpjcmVhdGUodGhpcykpCiAg
ICAgLCBtX3ZpZXdTcGVjKDApCkBAIC04MiwxMSArODIsNiBAQCBTVkdTVkdFbGVtZW50Ojp+U1ZH
U1ZHRWxlbWVudCgpCiAgICAgZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZW1v
dmVUaW1lQ29udGFpbmVyKHRoaXMpOwogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0cikKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgWSwgeSwg
U1ZHTmFtZXM6OnlBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU1ZHRWxl
bWVudCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgsIEhlaWdo
dCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLQogY29uc3QgQXRvbWljU3RyaW5nJiBT
VkdTVkdFbGVtZW50Ojpjb250ZW50U2NyaXB0VHlwZSgpIGNvbnN0CiB7CiAgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyBkZWZhdWx0VmFsdWUoInRleHQvZWNtYXNjcmlwdCIpOwpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NywxNSArMTQ3LDExIEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBhZGRTVkdXaW5kb3dFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBBdHRyaWJ1dGUqIGF0dHIpOyAg
IAogCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZP
UldBUkRfREVDTEFSQVRJT05TKFNWR0ZpdFRvVmlld0JveCwgRmxvYXRSZWN0LCBWaWV3Qm94LCB2
aWV3Qm94KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OU19S
RUZDT1VOVEVEKFNWR0ZpdFRvVmlld0JveCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2Vy
dmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjpzdmdUYWdTdHJpbmcs
IFNWR05hbWVzOjp4QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnN2Z1RhZ1N0
cmluZywgU1ZHTmFtZXM6OnlBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6c3Zn
VGFnU3RyaW5nLCBTVkdOYW1lczo6d2lkdGhBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFdpZHRoLCB3
aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1l
bnQsIFNWR05hbWVzOjpzdmdUYWdTdHJpbmcsIFNWR05hbWVzOjpoZWlnaHRBdHRyU3RyaW5nLCBT
VkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQogCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgsIFgsIHgpCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgsIFksIHkp
Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBT
VkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCi0gICAgICAg
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNhdmVUb0NhY2hlKCk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCB3aWxsUmVzdG9yZUZyb21DYWNoZSgpOwogCkBAIC0xNzEsNSArMTY3LDMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmlt
OnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1
KQorKysgV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFpp
bW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAg
ICAgICAgICAyMDA0LCAyMDA1LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIxLDkgKzIxLDkgQEAKICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZH
U2NyaXB0RWxlbWVudC5oIgotCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNzAsNiArNzAsNCBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmdldFN1YnJl
c291cmNlQXR0CiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIEVOQUJMRShTVkcp
Ci0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29y
ZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxk
Zm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMiwzOSArMjIsMzEgQEAKIAogI2lmbmRlZiBTVkdT
Y3JpcHRFbGVtZW50X2gKICNkZWZpbmUgU1ZHU2NyaXB0RWxlbWVudF9oCi0jaWYgRU5BQkxFKFNW
RykKIAorI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR1VSSVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogICAg
IGNsYXNzIFNWR1NjcmlwdEVsZW1lbnQgOiBwdWJsaWMgU1ZHRWxlbWVudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1VSSVJlZmVyZW5jZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1NjcmlwdEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR1NjcmlwdEVs
ZW1lbnQoKTsKIAotICAgICAgICAvLyAnU1ZHU2NyaXB0RWxlbWVudCcgZnVuY3Rpb25zCiAgICAg
ICAgIFN0cmluZyB0eXBlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0VHlwZShjb25zdCBTdHJp
bmcmKTsKIAotICAgICAgICAvLyBJbnRlcm5hbAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKTsKLQogICAgICAgICB2aXJ0dWFs
IHZvaWQgZ2V0U3VicmVzb3VyY2VBdHRyaWJ1dGVTdHJpbmdzKFZlY3RvcjxTdHJpbmc+JikgY29u
c3Q7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCog
Y29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9TVEFSVF9ERUNMQVJBVElPTlMKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHVVJJUmVmZXJlbmNlLCBTdHJp
bmcsIEhyZWYsIGhyZWYpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFS
QVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0KICAgICAgICAgU3RyaW5n
IG1fdHlwZTsKICAgICB9OwogCkBAIC02Miw1ICs1NCwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdTdG9wRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZH
U3RvcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogU1ZHU3RvcEVsZW1lbnQ6OlNWR1N0b3BFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50
KHRhZ05hbWUsIGRvYykKLSAgICAsIG1fb2Zmc2V0KDAuMGYpCisgICAgLCBtX29mZnNldCh0aGlz
LCBTVkdOYW1lczo6b2Zmc2V0QXR0ciwgMC4wZikKIHsKIH0KIApAQCAtNDIsOCArNDIsNiBAQCBT
VkdTdG9wRWxlbWVudDo6flNWR1N0b3BFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHU3RvcEVsZW1lbnQsIGZsb2F0LCBPZmZzZXQsIG9mZnNldCwgU1ZH
TmFtZXM6Om9mZnNldEF0dHIpCi0KIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09
IFNWR05hbWVzOjpvZmZzZXRBdHRyKSB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJKHJldmlzaW9u
IDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
U3RvcEVsZW1lbnQsIGZsb2F0LCBPZmZzZXQsIG9mZnNldCkKKyAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR1N0b3BFbGVtZW50LCBTVkdOYW1lczo6c3RvcFRhZ1N0cmlu
ZywgU1ZHTmFtZXM6Om9mZnNldEF0dHJTdHJpbmcsIGZsb2F0LCBPZmZzZXQsIG9mZnNldCkKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50
LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTAgKzQyLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIFNWR05hbWVzOwogCitjaGFyIFNWR1N0eWxlZEVsZW1lbnRJZGVu
dGlmaWVyW10gPSAiU1ZHU3R5bGVkRWxlbWVudCI7CiBzdGF0aWMgSGFzaFNldDxjb25zdCBTVkdT
dHlsZWRFbGVtZW50Kj4qIGdFbGVtZW50c1dpdGhJbnN0YW5jZVVwZGF0ZXNCbG9ja2VkID0gMDsK
IAogU1ZHU3R5bGVkRWxlbWVudDo6U1ZHU3R5bGVkRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2Mp
CisgICAgLCBtX2NsYXNzTmFtZSh0aGlzLCBIVE1MTmFtZXM6OmNsYXNzQXR0cikKIHsKIH0KIApA
QCAtNTQsOCArNTYsNiBAQCBTVkdTdHlsZWRFbGVtZW50Ojp+U1ZHU3R5bGVkRWxlbWVudCgpCiAg
ICAgU1ZHUmVzb3VyY2U6OnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHU3R5bGVkRWxlbWVudCwgU3RyaW5nLCBDbGFzc05hbWUsIGNsYXNz
TmFtZSwgSFRNTE5hbWVzOjpjbGFzc0F0dHIpCi0KIGJvb2wgU1ZHU3R5bGVkRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgLy8gaHR0cDovL3d3dy53
My5vcmcvVFIvU1ZHL2V4dGVuZC5odG1sI1ByaXZhdGVEYXRhCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdTdHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxl
bWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTUgKzI0LDE1IEBACiAjZGVmaW5lIFNWR1N0eWxlZEVs
ZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
LSNpbmNsdWRlICJQYXRoLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiU1ZH
RWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgotI2luY2x1ZGUgIlNWR1Jlc291cmNl
LmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGFibGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisg
ICAgZXh0ZXJuIGNoYXIgU1ZHU3R5bGVkRWxlbWVudElkZW50aWZpZXJbXTsKKyAgICBjbGFzcyBT
VkdSZXNvdXJjZTsKKwogICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQgOiBwdWJsaWMgU1ZHRWxl
bWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1N0eWxhYmxlIHsK
ICAgICBwdWJsaWM6CkBAIC03MSw4ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgc3RhdGljIGludCBjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9T
VEFSVF9ERUNMQVJBVElPTlMKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR1N0eWxlZEVsZW1lbnQsIFN0cmluZywgQ2xhc3NOYW1lLCBjbGFzc05hbWUpCisgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTdHlsZWRFbGVtZW50LCBTVkdTdHls
ZWRFbGVtZW50SWRlbnRpZmllciwgSFRNTE5hbWVzOjpjbGFzc0F0dHJTdHJpbmcsIFN0cmluZywg
Q2xhc3NOYW1lLCBjbGFzc05hbWUpCiAKICAgICAgICAgdm9pZCB1cGRhdGVFbGVtZW50SW5zdGFu
Y2UoU1ZHRG9jdW1lbnRFeHRlbnNpb25zKikgY29uc3Q7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1
KQorKysgV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
aGFyIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50SWRlbnRpZmllcltdID0gIlNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50IjsKKwogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6
OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50KHRhZ05h
bWUsIGRvYykKICAgICAsIFNWR1RyYW5zZm9ybWFibGUoKQotICAgICwgbV90cmFuc2Zvcm0oU1ZH
VHJhbnNmb3JtTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSkKKyAgICAsIG1f
dHJhbnNmb3JtKHRoaXMsIFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBTVkdUcmFuc2Zvcm1MaXN0
OjpjcmVhdGUoU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpKQogewogfQogCkBAIC00Niw4ICs0OCw2
IEBAIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojp+U1ZHU3R5bGUKIHsKIH0KIAotQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfUkVGQ09VTlRFRChTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudCwgU1ZHVHJhbnNmb3JtTGlzdCwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0sIFNWR05h
bWVzOjp0cmFuc2Zvcm1BdHRyKQotCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFi
bGU6OmdldENUTSh0aGlzKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMyArMjQsMTUgQEAK
ICNkZWZpbmUgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNW
RykKKyNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybWFibGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCisgICAgZXh0ZXJuIGNoYXIgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJZGVudGlm
aWVyW107CisKICAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07Ci0gICAgY2xhc3MgU1ZHVHJhbnNm
b3JtTGlzdDsKIAogICAgIGNsYXNzIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50IDogcHVi
bGljIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVHJhbnNmb3JtYWJsZSB7CkBAIC01OSw3ICs2MSw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHByb3RlY3Rl
ZDoKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TX1JFRkNPVU5URUQoU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3QsIFRyYW5zZm9ybSwg
dHJhbnNmb3JtKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50SWRl
bnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVz
Ojp0cmFuc2Zvcm1BdHRyU3RyaW5nLCBTVkdUcmFuc2Zvcm1MaXN0LCBUcmFuc2Zvcm0sIHRyYW5z
Zm9ybSkKIAogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIFVzZWQgYnkgPGFuaW1hdGVNb3Rpb24+
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUv
c3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsOCArNTEsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgbXV0YWJsZSBib29sIG1f
aW5zaWRlUmVuZGVyU2VjdGlvbjsKLQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJE
X0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgJKHJldmlz
aW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSwxMyArMjksMTIgQEAKICNpbmNsdWRlICJTVkdMYW5nU3BhY2UuaCIKICNpbmNs
dWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKICAgICBjbGFzcyBTVkdTeW1ib2xFbGVtZW50IDogcHVibGljIFNWR1N0
eWxlZEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5n
U3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZH
Rml0VG9WaWV3Qm94Ci0gICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
U1ZHRml0VG9WaWV3Qm94IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1N5bWJvbEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR1N5
bWJvbEVsZW1lbnQoKTsKQEAgLTQ3LDE1ICs0Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9Ci0gCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJv
b2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
ICAgICAgIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhT
VkdGaXRUb1ZpZXdCb3gsIEZsb2F0UmVjdCwgVmlld0JveCwgdmlld0JveCkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlNfUkVGQ09VTlRFRChTVkdGaXRUb1Zp
ZXdCb3gsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNl
cnZlQXNwZWN0UmF0aW8pCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RS
ZWZFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1h
bm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVj
dApAQCAtMjIsMTUgKzIyLDE1IEBACiAKICNpZm5kZWYgU1ZHVFJlZkVsZW1lbnRfaAogI2RlZmlu
ZSBTVkdUUmVmRWxlbWVudF9oCi0jaWYgRU5BQkxFKFNWRykKIAorI2lmIEVOQUJMRShTVkcpCiAj
aW5jbHVkZSAiU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1VSSVJl
ZmVyZW5jZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQotewotICAgIGNsYXNzIFNWR1RSZWZFbGVt
ZW50IDogcHVibGljIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIHB1YmxpYyBTVkdVUklSZWZl
cmVuY2UKLSAgICB7CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTVkdUUmVmRWxl
bWVudCA6IHB1YmxpYyBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFNWR1VSSVJlZmVyZW5jZSB7CiAgICAgcHVibGljOgogICAgICAg
ICBTVkdUUmVmRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAg
ICAgdmlydHVhbCB+U1ZHVFJlZkVsZW1lbnQoKTsKQEAgLTQ0LDggKzQ0LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR1VSSVJlZmVyZW5jZSwgU3RyaW5n
LCBIcmVmLCBocmVmKQotCiAgICAgICAgIHZvaWQgdXBkYXRlUmVmZXJlbmNlZFRleHQoKTsKICAg
ICB9OwogCkBAIC01Myw1ICs1MSwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR1RTcGFuRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RTcGFuRWxl
bWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBA
IC0yMiwyOCArMjIsMjIgQEAKIAogI2lmbmRlZiBTVkdUU3BhbkVsZW1lbnRfaAogI2RlZmluZSBT
VkdUU3BhbkVsZW1lbnRfaAotI2lmIEVOQUJMRShTVkcpCiAKKyNpZiBFTkFCTEUoU1ZHKQogI2lu
Y2x1ZGUgIlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUK
LXsKLSAgICBjbGFzcyBTVkdUU3BhbkVsZW1lbnQgOiBwdWJsaWMgU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudAotICAgIHsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNWR1RTcGFu
RWxlbWVudCA6IHB1YmxpYyBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50IHsKICAgICBwdWJsaWM6
CiAgICAgICAgIFNWR1RTcGFuRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKICAgICAgICAgdmlydHVhbCB+U1ZHVFNwYW5FbGVtZW50KCk7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSosIFJlbmRlclN0eWxlKik7CiAgICAgICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihOb2RlKikgY29uc3Q7Ci0gICAgCi0gICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIGNv
bnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQog
ICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcp
CiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVu
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1RleHRDb250
ZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEzICs0MSwxNSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NoYXIgU1ZHVGV4dENvbnRlbnRFbGVtZW50SWRlbnRpZmllcltd
ID0gIlNWR1RleHRDb250ZW50RWxlbWVudCI7CisKIFNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZH
VGV4dENvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2MpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvYykKICAgICAsIFNWR1Rl
c3RzKCkKICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCkKLSAgICAsIG1fdGV4dExlbmd0aChMZW5ndGhNb2RlT3RoZXIpCi0gICAgLCBtX2xl
bmd0aEFkanVzdChMRU5HVEhBREpVU1RfU1BBQ0lORykKKyAgICAsIG1fdGV4dExlbmd0aCh0aGlz
LCBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIsIExlbmd0aE1vZGVPdGhlcikKKyAgICAsIG1fbGVu
Z3RoQWRqdXN0KHRoaXMsIFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyLCBMRU5HVEhBREpVU1Rf
U1BBQ0lORykKIHsKIH0KIApAQCAtNTUsOSArNTcsNiBAQCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
On5TVkdUZXh0Q29udGVudEVsCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBUZXh0TGVuZ3RoLCB0ZXh0TGVuZ3Ro
LCBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdUZXh0Q29udGVudEVsZW1lbnQsIGludCwgTGVuZ3RoQWRqdXN0LCBsZW5ndGhBZGp1c3Qs
IFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyKQotCiBzdGF0aWMgaW5saW5lIGZsb2F0IGN1bXVs
YXRpdmVDaGFyYWN0ZXJSYW5nZUxlbmd0aChjb25zdCBWZWN0b3I8U1ZHQ2hhcj46Oml0ZXJhdG9y
JiBzdGFydCwgY29uc3QgVmVjdG9yPFNWR0NoYXI+OjppdGVyYXRvciYgZW5kLCBTVkdJbmxpbmVU
ZXh0Qm94KiB0ZXh0Qm94LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0LCBsb25nIHN0YXJ0UG9zaXRpb24sIGxvbmcgbGVu
Z3RoLCBib29sIGlzVmVydGljYWxUZXh0LCBsb25nJiBhdENoYXJhY3RlcikKIHsKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUv
c3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw5
IEBACiAjaW5jbHVkZSAiU1ZHVGVzdHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
ZXh0ZXJuIGNoYXIgU1ZHVGV4dENvbnRlbnRFbGVtZW50SWRlbnRpZmllcltdOworCiAgICAgY2xh
c3MgU1ZHTGVuZ3RoOwogCiAgICAgY2xhc3MgU1ZHVGV4dENvbnRlbnRFbGVtZW50IDogcHVibGlj
IFNWR1N0eWxlZEVsZW1lbnQsCkBAIC02MywxMSArNjYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAKLSAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xB
UkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIHByb3RlY3RlZDoK
KyAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIHRoaXM7IH0KIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdMZW5ndGgsIFRleHRMZW5ndGgsIHRleHRMZW5n
dGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdUZXh0Q29udGVu
dEVsZW1lbnQsIGludCwgTGVuZ3RoQWRqdXN0LCBsZW5ndGhBZGp1c3QpCisgICAgcHJpdmF0ZToK
KyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1RleHRDb250ZW50RWxl
bWVudCwgU1ZHVGV4dENvbnRlbnRFbGVtZW50SWRlbnRpZmllciwgU1ZHTmFtZXM6OnRleHRMZW5n
dGhBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFRleHRMZW5ndGgsIHRleHRMZW5ndGgpCisgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNW
R1RleHRDb250ZW50RWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRy
U3RyaW5nLCBpbnQsIExlbmd0aEFkanVzdCwgbGVuZ3RoQWRqdXN0KQogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHJldmlzaW9uIDM1
MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNWR1RleHRFbGVtZW50OjpTVkdU
ZXh0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQog
ICAgIDogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCh0YWdOYW1lLCBkb2MpCiAgICAgLCBTVkdU
cmFuc2Zvcm1hYmxlKCkKLSAgICAsIG1fdHJhbnNmb3JtKFNWR1RyYW5zZm9ybUxpc3Q6OmNyZWF0
ZShTVkdOYW1lczo6dHJhbnNmb3JtQXR0cikpCisgICAgLCBtX3RyYW5zZm9ybSh0aGlzLCBTVkdO
YW1lczo6dHJhbnNmb3JtQXR0ciwgU1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjp0
cmFuc2Zvcm1BdHRyKSkKIHsKIH0KIApAQCAtNDYsOCArNDYsNiBAQCBTVkdUZXh0RWxlbWVudDo6
flNWR1RleHRFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNf
UkVGQ09VTlRFRChTVkdUZXh0RWxlbWVudCwgU1ZHVHJhbnNmb3JtTGlzdCwgVHJhbnNmb3JtLCB0
cmFuc2Zvcm0sIFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKQotCiB2b2lkIFNWR1RleHRFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYg
KGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6dHJhbnNmb3JtQXR0cikgewpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0
RWxlbWVudC5oCShyZXZpc2lvbiAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDExICs1MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCi0gICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0
dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhp
czsgfQotCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TX1JFRkNPVU5URUQoU1ZHVGV4dEVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3QsIFRyYW5zZm9y
bSwgdHJhbnNmb3JtKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
VGV4dEVsZW1lbnQsIFNWR05hbWVzOjp0ZXh0VGFnU3RyaW5nLCBTVkdOYW1lczo6dHJhbnNmb3Jt
QXR0clN0cmluZywgU1ZHVHJhbnNmb3JtTGlzdCwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCiAgICAg
ICAgCiAgICAgICAgLy8gVXNlZCBieSA8YW5pbWF0ZU1vdGlvbj4KICAgICAgICBPd25QdHI8QWZm
aW5lVHJhbnNmb3JtPiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybTsKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR1RleHRQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4
dFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0
UGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw5ICszOCw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIFNWR1RleHRQYXRoRWxlbWVudDo6U1ZHVGV4dFBhdGhFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdUZXh0Q29u
dGVudEVsZW1lbnQodGFnTmFtZSwgZG9jKQogICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkKLSAgICAs
IG1fc3RhcnRPZmZzZXQoTGVuZ3RoTW9kZU90aGVyKQotICAgICwgbV9tZXRob2QoU1ZHX1RFWFRQ
QVRIX01FVEhPRFRZUEVfQUxJR04pCi0gICAgLCBtX3NwYWNpbmcoU1ZHX1RFWFRQQVRIX1NQQUNJ
TkdUWVBFX0VYQUNUKQorICAgICwgbV9zdGFydE9mZnNldCh0aGlzLCBTVkdOYW1lczo6c3RhcnRP
ZmZzZXRBdHRyLCBMZW5ndGhNb2RlT3RoZXIpCisgICAgLCBtX21ldGhvZCh0aGlzLCBTVkdOYW1l
czo6bWV0aG9kQXR0ciwgU1ZHX1RFWFRQQVRIX01FVEhPRFRZUEVfQUxJR04pCisgICAgLCBtX3Nw
YWNpbmcodGhpcywgU1ZHTmFtZXM6OnNwYWNpbmdBdHRyLCBTVkdfVEVYVFBBVEhfU1BBQ0lOR1RZ
UEVfRVhBQ1QpCiB7CiB9CiAKQEAgLTQ4LDEwICs0OCw2IEBAIFNWR1RleHRQYXRoRWxlbWVudDo6
flNWR1RleHRQYXRoRWxlbWVudCgKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHVGV4dFBhdGhFbGVtZW50LCBTVkdMZW5ndGgsIFN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNl
dCwgU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR1RleHRQYXRoRWxlbWVudCwgaW50LCBNZXRob2QsIG1ldGhvZCwgU1ZHTmFtZXM6Om1l
dGhvZEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0UGF0aEVsZW1l
bnQsIGludCwgU3BhY2luZywgc3BhY2luZywgU1ZHTmFtZXM6OnNwYWNpbmdBdHRyKQotCiB2b2lk
IFNWR1RleHRQYXRoRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRl
KiBhdHRyKQogewogICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9z
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDIxICs2NSwxNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgICAgIGJvb2wgY2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7Ci0gICAgCisKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdVUklSZWZlcmVuY2UsIFN0cmluZywgSHJl
ZiwgaHJlZikKLQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4
dFBhdGhFbGVtZW50LCBTVkdMZW5ndGgsIFN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCkKLSAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1RleHRQYXRoRWxlbWVudCwgaW50
LCBNZXRob2QsIG1ldGhvZCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR1RleHRQYXRoRWxlbWVudCwgaW50LCBTcGFjaW5nLCBzcGFjaW5nKQorICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dFBhdGhFbGVtZW50LCBTVkdOYW1lczo6
dGV4dFBhdGhUYWdTdHJpbmcsIFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHJTdHJpbmcsIFNWR0xl
bmd0aCwgU3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHVGV4dFBhdGhFbGVtZW50LCBTVkdOYW1lczo6dGV4dFBhdGhUYWdT
dHJpbmcsIFNWR05hbWVzOjptZXRob2RBdHRyU3RyaW5nLCBpbnQsIE1ldGhvZCwgbWV0aG9kKQor
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dFBhdGhFbGVtZW50
LCBTVkdOYW1lczo6dGV4dFBhdGhUYWdTdHJpbmcsIFNWR05hbWVzOjpzcGFjaW5nQXR0clN0cmlu
ZywgaW50LCBTcGFjaW5nLCBzcGFjaW5nKQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJKHJldmlzaW9u
IDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDEzICszMSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NoYXIgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudElkZW50aWZpZXJbXSA9ICJTVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50IjsKKwogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6U1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jKQogICAgIDogU1ZHVGV4dENvbnRlbnRFbGVtZW50KHRhZ05hbWUsIGRvYykKLSAgICAsIG1f
eChTVkdMZW5ndGhMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OnhBdHRyKSkKLSAgICAsIG1feShTVkdM
ZW5ndGhMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OnlBdHRyKSkKLSAgICAsIG1fZHgoU1ZHTGVuZ3Ro
TGlzdDo6Y3JlYXRlKFNWR05hbWVzOjpkeEF0dHIpKQotICAgICwgbV9keShTVkdMZW5ndGhMaXN0
OjpjcmVhdGUoU1ZHTmFtZXM6OmR5QXR0cikpCi0gICAgLCBtX3JvdGF0ZShTVkdOdW1iZXJMaXN0
OjpjcmVhdGUoU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpKQorICAgICwgbV94KHRoaXMsIFNWR05hbWVz
Ojp4QXR0ciwgU1ZHTGVuZ3RoTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjp4QXR0cikpCisgICAgLCBt
X3kodGhpcywgU1ZHTmFtZXM6OnlBdHRyLCBTVkdMZW5ndGhMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6
OnlBdHRyKSkKKyAgICAsIG1fZHgodGhpcywgU1ZHTmFtZXM6OmR4QXR0ciwgU1ZHTGVuZ3RoTGlz
dDo6Y3JlYXRlKFNWR05hbWVzOjpkeEF0dHIpKQorICAgICwgbV9keSh0aGlzLCBTVkdOYW1lczo6
ZHlBdHRyLCBTVkdMZW5ndGhMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OmR5QXR0cikpCisgICAgLCBt
X3JvdGF0ZSh0aGlzLCBTVkdOYW1lczo6cm90YXRlQXR0ciwgU1ZHTnVtYmVyTGlzdDo6Y3JlYXRl
KFNWR05hbWVzOjpyb3RhdGVBdHRyKSkKIHsKIH0KIApAQCAtNDUsMTIgKzQ3LDYgQEAgU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudDo6flNWR1RleHRQb3NpdAogewogfQogCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OU19SRUZDT1VOVEVEKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNW
R0xlbmd0aExpc3QsIFgsIHgsIFNWR05hbWVzOjp4QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TX1JFRkNPVU5URUQoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTGVuZ3Ro
TGlzdCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlNfUkVGQ09VTlRFRChTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdMZW5ndGhMaXN0LCBE
eCwgZHgsIFNWR05hbWVzOjpkeEF0dHIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19S
RUZDT1VOVEVEKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR0xlbmd0aExpc3QsIER5LCBk
eSwgU1ZHTmFtZXM6OmR5QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1JFRkNP
VU5URUQoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTnVtYmVyTGlzdCwgUm90YXRlLCBy
b3RhdGUsIFNWR05hbWVzOjpyb3RhdGVBdHRyKQotCiB2b2lkIFNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9z
dmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMSAr
MjUsMTIgQEAKIAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LmgiCisjaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgorI2luY2x1ZGUgIlNWR051bWJlckxp
c3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgU1ZHTGVuZ3RoTGlzdDsK
LSAgICBjbGFzcyBTVkdOdW1iZXJMaXN0OworICAgIGV4dGVybiBjaGFyIFNWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnRJZGVudGlmaWVyW107CiAKICAgICBjbGFzcyBTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50IDogcHVibGljIFNWR1RleHRDb250ZW50RWxlbWVudCB7CiAgICAgcHVibGljOgpAQCAt
NDEsMTEgKzQyLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0tub3du
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OU19SRUZDT1VOVEVEKFNWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQsIFNWR0xlbmd0aExpc3QsIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OU19SRUZDT1VOVEVEKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNW
R0xlbmd0aExpc3QsIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
U19SRUZDT1VOVEVEKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR0xlbmd0aExpc3QsIER4
LCBkeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TX1JFRkNPVU5URUQo
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTGVuZ3RoTGlzdCwgRHksIGR5KQotICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlNfUkVGQ09VTlRFRChTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LCBTVkdOdW1iZXJMaXN0LCBSb3RhdGUsIHJvdGF0ZSkKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnRJZGVudGlmaWVyLCBTVkdOYW1lczo6eEF0dHJTdHJpbmcs
IFNWR0xlbmd0aExpc3QsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
SWRlbnRpZmllciwgU1ZHTmFtZXM6OnlBdHRyU3RyaW5nLCBTVkdMZW5ndGhMaXN0LCBZLCB5KQor
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudCwgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudElkZW50aWZpZXIsIFNWR05hbWVzOjpk
eEF0dHJTdHJpbmcsIFNWR0xlbmd0aExpc3QsIER4LCBkeCkKKyAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnRJZGVudGlmaWVyLCBTVkdOYW1lczo6ZHlBdHRyU3RyaW5nLCBTVkdMZW5n
dGhMaXN0LCBEeSwgZHkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50SWRlbnRp
ZmllciwgU1ZHTmFtZXM6OnJvdGF0ZUF0dHJTdHJpbmcsIFNWR051bWJlckxpc3QsIFJvdGF0ZSwg
cm90YXRlKQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1RyYW5zZm9ybWFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUcmFu
c2Zvcm1hYmxlLmgJKHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3Jt
YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpZiBFTkFCTEUoU1ZH
KQogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmgi
CisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgCiAgICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogICAgIGNsYXNzIEF0b21pY1N0cmluZzsK
ICAgICBjbGFzcyBTVkdUcmFuc2Zvcm07Ci0gICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKICAg
ICBjbGFzcyBRdWFsaWZpZWROYW1lOwogCiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtYWJsZSA6IHZp
cnR1YWwgcHVibGljIFNWR0xvY2F0YWJsZSB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdVUklSZWZl
cmVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAJ
KHJldmlzaW9uIDM1MjA1KQorKysgV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDEyIEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRl
ICJTVkdVUklSZWZlcmVuY2UuaCIKIAotI2luY2x1ZGUgIlNWR05hbWVzLmgiCi0jaW5jbHVkZSAi
U1ZHU3R5bGVkRWxlbWVudC5oIgotI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjaGFyIFNWR1VSSVJlZmVyZW5jZUlkZW50aWZpZXJbXSA9ICJTVkdVUklS
ZWZlcmVuY2UiOworCiBTVkdVUklSZWZlcmVuY2U6OlNWR1VSSVJlZmVyZW5jZSgpCisgICAgOiBt
X2hyZWYodGhpcywgWExpbmtOYW1lczo6aHJlZkF0dHIpCiB7CiB9CiAKQEAgLTM3LDggKzM2LDYg
QEAgU1ZHVVJJUmVmZXJlbmNlOjp+U1ZHVVJJUmVmZXJlbmNlKCkKIHsKIH0KIAotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlNfV0lUSF9DT05URVhUKFNWR1VSSVJlZmVyZW5jZSwgU3RyaW5n
LCBIcmVmLCBocmVmLCBYTGlua05hbWVzOjpocmVmQXR0cikKLQogYm9vbCBTVkdVUklSZWZlcmVu
Y2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBp
ZiAoYXR0ci0+bmFtZSgpLm1hdGNoZXMoWExpbmtOYW1lczo6aHJlZkF0dHIpKSB7CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdVUklSZWZlcmVuY2UuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdVUklS
ZWZlcmVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUsMTEgQEAKIAogI2lmIEVOQUJM
RShTVkcpCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisgICAgZXh0ZXJuIGNoYXIgU1ZHVVJJUmVmZXJlbmNl
SWRlbnRpZmllcltdOwogICAgIGNsYXNzIE1hcHBlZEF0dHJpYnV0ZTsKIAogICAgIGNsYXNzIFNW
R1VSSVJlZmVyZW5jZSB7CkBAIC00MCwxMSArNDIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIHN0YXRpYyBTdHJpbmcgZ2V0VGFyZ2V0KGNvbnN0IFN0cmluZyYgdXJsKTsKIAot
ICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCgpIGNvbnN0ID0gMDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OU19XSVRIX0NPTlRFWFQoU1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcs
IEhyZWYsIGhyZWYpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdV
UklSZWZlcmVuY2UsIFNWR1VSSVJlZmVyZW5jZUlkZW50aWZpZXIsIFhMaW5rTmFtZXM6OmhyZWZB
dHRyU3RyaW5nLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjA1KQorKysgV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDEwICs1Nywx
MCBAQCBTVkdVc2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KGNvbnN0IFF1YWxpCiAgICAgLCBTVkdM
YW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAgLCBT
VkdVUklSZWZlcmVuY2UoKQotICAgICwgbV94KExlbmd0aE1vZGVXaWR0aCkKLSAgICAsIG1feShM
ZW5ndGhNb2RlSGVpZ2h0KQotICAgICwgbV93aWR0aChMZW5ndGhNb2RlV2lkdGgpCi0gICAgLCBt
X2hlaWdodChMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV94KHRoaXMsIFNWR05hbWVzOjp4QXR0
ciwgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KHRoaXMsIFNWR05hbWVzOjp5QXR0ciwgTGVu
Z3RoTW9kZUhlaWdodCkKKyAgICAsIG1fd2lkdGgodGhpcywgU1ZHTmFtZXM6OndpZHRoQXR0ciwg
TGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhpcywgU1ZHTmFtZXM6OmhlaWdodEF0
dHIsIExlbmd0aE1vZGVIZWlnaHQpCiB7CiB9CiAKQEAgLTY4LDExICs2OCw2IEBAIFNWR1VzZUVs
ZW1lbnQ6On5TVkdVc2VFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIpCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgsIFks
IHksIFNWR05hbWVzOjp5QXR0cikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1Vz
ZUVsZW1lbnQsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBI
ZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0KIFNWR0VsZW1lbnRJbnN0YW5j
ZSogU1ZHVXNlRWxlbWVudDo6aW5zdGFuY2VSb290KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90
YXJnZXRFbGVtZW50SW5zdGFuY2UuZ2V0KCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCShyZXZpc2lv
biAzNTIwNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNzEsMTkgKzcxLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBj
b25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0K
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFS
QVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR1VSSVJlZmVyZW5jZSwgU3RyaW5nLCBI
cmVmLCBocmVmKQotCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdV
c2VFbGVtZW50LCBTVkdMZW5ndGgsIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgsIFksIHkpCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgsIFdpZHRo
LCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1VzZUVs
ZW1lbnQsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6dXNlVGFnU3RyaW5nLCBT
VkdOYW1lczo6eEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVzOjp1c2VUYWdTdHJp
bmcsIFNWR05hbWVzOjp5QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OnVzZVRh
Z1N0cmluZywgU1ZHTmFtZXM6OndpZHRoQXR0clN0cmluZywgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lk
dGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdVc2VFbGVtZW50
LCBTVkdOYW1lczo6dXNlVGFnU3RyaW5nLCBTVkdOYW1lczo6aGVpZ2h0QXR0clN0cmluZywgU1ZH
TGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBTVkdFbGVtZW50OwogICAgICAgICBTVkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNlRm9y
U2hhZG93VHJlZUVsZW1lbnQoTm9kZSogZWxlbWVudCkgY29uc3Q7CiAKLSAgICBwcml2YXRlOgog
ICAgICAgICAvLyBJbnN0YW5jZSB0cmVlIGhhbmRsaW5nCiAgICAgICAgIHZvaWQgYnVpbGRJbnN0
YW5jZVRyZWUoU1ZHRWxlbWVudCogdGFyZ2V0LCBTVkdFbGVtZW50SW5zdGFuY2UqIHRhcmdldElu
c3RhbmNlLCBib29sJiBmb3VuZEN5Y2xlKTsKICAgICAgICAgdm9pZCBoYW5kbGVEZWVwVXNlUmVm
ZXJlbmNpbmcoU1ZHVXNlRWxlbWVudCogdXNlLCBTVkdFbGVtZW50SW5zdGFuY2UqIHRhcmdldElu
c3RhbmNlLCBib29sJiBmb3VuZEN5Y2xlKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAkocmV2aXNp
b24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSwxMCArNTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdTdHJpbmdMaXN0PiBtX3ZpZXdUYXJnZXQ7Ci0KLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9E
RUNMQVJBVElPTlMoU1ZHRml0VG9WaWV3Qm94LCBGbG9hdFJlY3QsIFZpZXdCb3gsIHZpZXdCb3gp
Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TX1JFRkNPVU5U
RUQoU1ZHRml0VG9WaWV3Qm94LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVj
dFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHVmlld1NwZWMuaAkocmV2aXNpb24gMzUyMDUpCisrKyBXZWJDb3JlL3N2Zy9T
VkdWaWV3U3BlYy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIHZpZXdUYXJnZXRTdHJpbmcoKSBjb25zdCB7IHJldHVy
biBtX3ZpZXdUYXJnZXRTdHJpbmc7IH0KICAgICAgICAgU1ZHRWxlbWVudCogdmlld1RhcmdldCgp
IGNvbnN0OwogCi0gICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375744</attachid>
            <date>2019-08-07 13:23:01 -0700</date>
            <delta_ts>2019-08-07 13:37:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-20051-20190807132300.patch</filename>
            <type>text/plain</type>
            <size>1739</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFmNmM0ZjIzZDExY2JlNDI1
ZWE4MGU3Y2JmZDg2NTFjNzM3YzQ1MDQuLmJlMzRlYTc2ODA1ODBhM2M3ZjEyODZiM2RiN2MzMzkz
ZTI2ZTYzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDgtMDcgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgc3Bl
Y3VsYXRpdmUgd29ya2Fyb3VuZCBmb3IgdXBsb2FkIGNyYXNoCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd29ya2Fyb3VuZCBkaWRuJ3QgaGVscCBh
bnl3YXlzLCBhbmQgdGhlIGNyYXNoIGhhcyBiZWVuIHJlc29sdmVkLiAgTGV0J3MgY2xlYW4gdXAu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
OgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOm5l
ZWROZXdCb2R5U3RyZWFtOl0pOgorCiAyMDE5LTA4LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIHNwZWN1bGF0aXZlIGxvYWRpbmcgaWYgY2Fj
aGUgaXMgbm90IHRvIGJlIHVzZWQgZm9yIHRoZSBsb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXgg
ZDgyZWVmYjBiMjkyYmU2ZGU0OWFkNDJkNjZjNWZiMmFhMmE2ODQ4MS4uMWY4ZDRjYmZjN2E1MzM4
Y2YwZWY1MjRlOWE2NzU0MzFiNDAxN2ZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMzk0LDEw
ICszOTQsNyBAQCBzdGF0aWMgU3RyaW5nIHN0cmluZ0ZvclNTTENpcGhlcihTU0xDaXBoZXJTdWl0
ZSBjaXBoZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogQ2FsbCB0
aGUgY29tcGxldGlvbkhhbmRsZXIgaW1tZWRpYXRlbHkgb25jZSByZGFyOi8vcHJvYmxlbS8yODIz
Mzc0NiBpcyBmaXhlZC4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2JvZHkgPSBtYWtl
UmVmKCpib2R5KSwgY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OmNyZWF0ZUhUVFBC
b2R5TlNJbnB1dFN0cmVhbShib2R5LmdldCgpKS5nZXQoKSk7Ci0gICAgfSk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoV2ViQ29yZTo6Y3JlYXRlSFRUUEJvZHlOU0lucHV0U3RyZWFtKCpib2R5KS5n
ZXQoKSk7CiB9CiAKICNpZiBIQVZFKENGTkVUV09SS19XSVRIX0lHTk9SRV9IU1RTKSAmJiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375745</attachid>
            <date>2019-08-07 13:37:14 -0700</date>
            <delta_ts>2019-08-07 13:48:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-20051-20190807133713.patch</filename>
            <type>text/plain</type>
            <size>1739</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFmNmM0ZjIzZDExY2JlNDI1
ZWE4MGU3Y2JmZDg2NTFjNzM3YzQ1MDQuLmJlMzRlYTc2ODA1ODBhM2M3ZjEyODZiM2RiN2MzMzkz
ZTI2ZTYzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDgtMDcgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgc3Bl
Y3VsYXRpdmUgd29ya2Fyb3VuZCBmb3IgdXBsb2FkIGNyYXNoCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd29ya2Fyb3VuZCBkaWRuJ3QgaGVscCBh
bnl3YXlzLCBhbmQgdGhlIGNyYXNoIGhhcyBiZWVuIHJlc29sdmVkLiAgTGV0J3MgY2xlYW4gdXAu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
OgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOm5l
ZWROZXdCb2R5U3RyZWFtOl0pOgorCiAyMDE5LTA4LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIHNwZWN1bGF0aXZlIGxvYWRpbmcgaWYgY2Fj
aGUgaXMgbm90IHRvIGJlIHVzZWQgZm9yIHRoZSBsb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXgg
ZDgyZWVmYjBiMjkyYmU2ZGU0OWFkNDJkNjZjNWZiMmFhMmE2ODQ4MS4uMWY4ZDRjYmZjN2E1MzM4
Y2YwZWY1MjRlOWE2NzU0MzFiNDAxN2ZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMzk0LDEw
ICszOTQsNyBAQCBzdGF0aWMgU3RyaW5nIHN0cmluZ0ZvclNTTENpcGhlcihTU0xDaXBoZXJTdWl0
ZSBjaXBoZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogQ2FsbCB0
aGUgY29tcGxldGlvbkhhbmRsZXIgaW1tZWRpYXRlbHkgb25jZSByZGFyOi8vcHJvYmxlbS8yODIz
Mzc0NiBpcyBmaXhlZC4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2JvZHkgPSBtYWtl
UmVmKCpib2R5KSwgY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OmNyZWF0ZUhUVFBC
b2R5TlNJbnB1dFN0cmVhbShib2R5LmdldCgpKS5nZXQoKSk7Ci0gICAgfSk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoV2ViQ29yZTo6Y3JlYXRlSFRUUEJvZHlOU0lucHV0U3RyZWFtKCpib2R5KS5n
ZXQoKSk7CiB9CiAKICNpZiBIQVZFKENGTkVUV09SS19XSVRIX0lHTk9SRV9IU1RTKSAmJiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>