<?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>95282</bug_id>
          
          <creation_ts>2012-08-28 21:24:34 -0700</creation_ts>
          <short_desc>Deploy ASCIILiteral hotness throughout WebCore</short_desc>
          <delta_ts>2012-08-29 00:37:44 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>707068</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-28 21:24:34 -0700</bug_when>
    <thetext>Deploy ASCIILiteral hotness throughout WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707071</commentid>
    <comment_count>1</comment_count>
      <attachid>161132</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-28 21:25:21 -0700</bug_when>
    <thetext>Created attachment 161132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707073</commentid>
    <comment_count>2</comment_count>
      <attachid>161132</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-28 21:38:14 -0700</bug_when>
    <thetext>Comment on attachment 161132
Patch

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

&gt; Source/WebCore/css/CSSPropertySourceData.cpp:91
&gt; +    DEFINE_STATIC_LOCAL(String, emptyValue, (ASCIILiteral(&quot;e&quot;)));

Maw?

&gt; Source/WebCore/dom/MicroDataItemList.cpp:45
&gt;      DEFINE_STATIC_LOCAL(String, undefinedItemTypeString, (&quot;&quot;));
&gt; +    // FIXME: Why not just return emptyString(); ?
&gt;      return undefinedItemTypeString;

Someone hit me with a spoon.

&gt; Source/WebCore/editing/MarkupAccumulator.cpp:238
&gt; -    DEFINE_STATIC_LOCAL(String, xmlnsWithColon, (&quot;xmlns:&quot;));
&gt; +    DEFINE_STATIC_LOCAL(String, xmlnsWithColon, (ASCIILiteral(&quot;xmlns:&quot;)));

This seems odd.

&gt; Source/WebCore/inspector/InspectorStyleSheet.cpp:638
&gt; +    DEFINE_STATIC_LOCAL(String, defaultPrefix, (ASCIILiteral(&quot;    &quot;)));

!?!

&gt; Source/WebCore/loader/MainResourceLoader.cpp:374
&gt; +            DEFINE_STATIC_LOCAL(String, consoleMessage, (ASCIILiteral(&quot;Refused to display document because display forbidden by X-Frame-Options.\n&quot;)));

Why the \n?

&gt; Source/WebCore/page/Page.cpp:395
&gt;      DEFINE_STATIC_LOCAL(String, nullString, ());
&gt; +    // FIXME: Why not just return String()?

Oh please.

&gt; Source/WebCore/platform/blackberry/RenderThemeBlackBerry.cpp:126
&gt; -    DEFINE_STATIC_LOCAL(String, fontFace, (&quot;Arial&quot;));
&gt; +    DEFINE_STATIC_LOCAL(String, fontFace, (ASCIILiteral(&quot;Arial&quot;)));

WTF?

&gt; Source/WebCore/xml/parser/XMLTokenizer.cpp:485
&gt; -        DEFINE_STATIC_LOCAL(String, xmlString, (&quot;xml&quot;));
&gt; +        DEFINE_STATIC_LOCAL(String, xmlString, (ASCIILiteral(&quot;xml&quot;)));

XMLNames bro.

&gt; Source/WebCore/xml/parser/XMLTreeBuilder.cpp:341
&gt; +    DEFINE_STATIC_LOCAL(String, ampS, (ASCIILiteral(&quot;&amp;&quot;)));
&gt; +    DEFINE_STATIC_LOCAL(String, aposS, (ASCIILiteral(&quot;&apos;&quot;)));
&gt; +    DEFINE_STATIC_LOCAL(String, gtS, (ASCIILiteral(&quot;&gt;&quot;)));
&gt; +    DEFINE_STATIC_LOCAL(String, ltS, (ASCIILiteral(&quot;&lt;&quot;)));
&gt; +    DEFINE_STATIC_LOCAL(String, quotS, (ASCIILiteral(&quot;\&quot;&quot;)));

We have the Entity technology to help you. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707084</commentid>
    <comment_count>3</comment_count>
      <attachid>161132</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-28 22:07:01 -0700</bug_when>
    <thetext>Comment on attachment 161132
Patch

I&apos;ll fix some of these in a followup patch.  I&apos;m not that inclined to improve the NEWXML at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707100</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-28 22:29:56 -0700</bug_when>
    <thetext>Adam, thank you for deploying this widely, it is gonna help me a lot to track our memory.

All those static strings make me wonder if that is causing some of the memory behaviors we have. Once the StringImpl is created in a page, we can no longer give that page back to the system. :(

Maybe we should have some dense memory area just for things like these. It&apos;s something we should measure...

&gt; &gt; Source/WebCore/dom/MicroDataItemList.cpp:45
&gt; &gt;      DEFINE_STATIC_LOCAL(String, undefinedItemTypeString, (&quot;&quot;));
&gt; &gt; +    // FIXME: Why not just return emptyString(); ?
&gt; &gt;      return undefinedItemTypeString;
&gt; 
&gt; Someone hit me with a spoon.

Brilliant :-D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707119</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-28 23:13:30 -0700</bug_when>
    <thetext>&gt; All those static strings make me wonder if that is causing some of the memory behaviors we have. Once the StringImpl is created in a page, we can no longer give that page back to the system. :(
&gt; 
&gt; Maybe we should have some dense memory area just for things like these. It&apos;s something we should measure...

Yeah, that makes a lot of sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707178</commentid>
    <comment_count>6</comment_count>
      <attachid>161132</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-29 00:37:40 -0700</bug_when>
    <thetext>Comment on attachment 161132
Patch

Clearing flags on attachment: 161132

Committed r126968: &lt;http://trac.webkit.org/changeset/126968&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707179</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-29 00:37:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161132</attachid>
            <date>2012-08-28 21:25:21 -0700</date>
            <delta_ts>2012-08-29 00:37:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95282-20120828212511.patch</filename>
            <type>text/plain</type>
            <size>57267</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2OTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc3NTNlNGZkM2VjNjFk
ZGVmYWIyZjZmNjQ3MjQzMzgyODdiMThiZS4uZWZiMjBiNTU3ZTYwZTgwZjY3YTc1ZmFjZGIyZjQy
ZjU3NmQ0ODkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMi0wOC0yOCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIERlcGxveSBBU0NJSUxpdGVy
YWwgaG90bmVzcyB0aHJvdWdob3V0IFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQXMgcmVjb21tZW5kZWQgYnkgaHR0cDovL3RyYWMud2Via2l0
Lm9yZy93aWtpL0VmZmljaWVudFN0cmluZ3MuCisgICAgICAgIFRoaXMgcGF0Y2ggY29udmVydHMg
YWxsIHRoZSBERUZJTkVfU1RBVElDX0xPQ0FMIFN0cmluZ3MuCisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZTo6dHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZTo6b3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmtpbmQpOgor
ICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlTb3VyY2VEYXRhOjp0b1N0cmluZyk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KToK
KyAgICAgICAgKiBkb20vTWljcm9EYXRhSXRlbUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWljcm9EYXRhSXRlbUxpc3Q6OnVuZGVmaW5lZEl0ZW1UeXBlKToKKyAgICAgICAgKiBkb20vU2Ny
aXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojpub3RpZnlG
aW5pc2hlZCk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNlRWxlbWVu
dCk6CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpmb3JtU3RhdGVTaWduYXR1cmUpOgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKToKKyAg
ICAgICAgKiBodG1sL0ltYWdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
SW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YSk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRp
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmluaXQpOgorICAgICAgICAo
V2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNT
QXVkaXRvcjo6ZXJhc2VEYW5nZXJvdXNBdHRyaWJ1dGVzSWZJbmplY3RlZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1
dGVQc2V1ZG9DbGFzc01hc2spOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNv
dXJjZU1hcFVSTEZvclNjcmlwdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6c2V0UHJvcGVydHlU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpuZXdMaW5lQW5kV2hpdGVz
cGFjZURlbGltaXRlcnMpOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxv
YWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIGxvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9s
aWN5UHJldmVudGVkTG9hZCk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5h
bWUpOgorICAgICAgICAqIHBhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SmF2YVNjcmlwdFVSTHMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVFdmVudEhhbmRsZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU2NyaXB0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dFdmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93U2NyaXB0Tm9uY2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHRGcm9tU291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93T2JqZWN0RnJvbVNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkRnJhbWVGcm9tU291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW1hZ2VGcm9t
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93U3R5bGVG
cm9tU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Rm9u
dEZyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dN
ZWRpYUZyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxs
b3dDb25uZWN0VG9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dGb3JtQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmFk
ZERpcmVjdGl2ZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6Omdyb3VwTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25OYW1l
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0
b3JlL0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
b2tpZURhdGFiYXNlQmFja2luZ1N0b3JlOjp1cGdyYWRlVGFibGVJZk5lZWRlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpkZWZhdWx0R1VJRm9udCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkVXRpbGl0aWVzQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZU5ld2xpbmVzV2l0aFdpbmRvd3NTdHlsZU5ld2xpbmVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OnN5c3RlbUZvbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZU5ld2xpbmVzV2l0aFdpbmRvd3NTdHls
ZU5ld2xpbmVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmRlZmF1bHRH
VUlGb250KToKKyAgICAgICAgKiBzdmcvU1ZHQW5nbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5nbGU6OnZhbHVlQXNTdHJpbmcpOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9y
UGFyc2luZyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MVG9rZW5pemVyOjpuZXh0VG9rZW4pOgorICAgICAgICAqIHhtbC9wYXJz
ZXIvWE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NYTUxFbnRpdHkpOgorCiAyMDEyLTA4LTI4ICBUb20gU2VwZXogIDx0c2VwZXpAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIENTUCBkb2Vzbid0IHR1cm4gb2ZmIGV2YWwsIGV0Yy4gaW4g
V2ViIFdvcmtlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlLmNwcAppbmRleCBhYTkzZTZhODJjNzU0OGM5OGIxOTk0MjVhYTAwYjJjZWMzOWU4ODkz
Li5iM2Y3MGFkZDI5MzJjZTE1OTdlY2EwNTVhZWQxZWVmMDcwY2Q1ZGE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0yNjMsNyAr
MjYzLDggQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKIAogUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gcHJwU3RvcmVOYW1lcywgdW5zaWduZWQg
c2hvcnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIk51bWVyaWMgdHJhbnNhY3Rpb24gbW9kZXMgYXJl
IGRlcHJlY2F0ZWQgaW4gSURCRGF0YWJhc2UudHJhbnNhY3Rpb24uIFVzZSBcInJlYWRvbmx5XCIg
b3IgXCJyZWFkd3JpdGVcIi4iKSk7CisgICAgLy8gRklYTUU6IElzIHRoaXMgdGhyZWFkLXNhZmU/
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlM
aXRlcmFsKCJOdW1lcmljIHRyYW5zYWN0aW9uIG1vZGVzIGFyZSBkZXByZWNhdGVkIGluIElEQkRh
dGFiYXNlLnRyYW5zYWN0aW9uLiBVc2UgXCJyZWFkb25seVwiIG9yIFwicmVhZHdyaXRlXCIuIikp
KTsKICAgICBjb250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VUeXBlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgQXRv
bWljU3RyaW5nIG1vZGVTdHJpbmcgPSBJREJUcmFuc2FjdGlvbjo6bW9kZVRvU3RyaW5nKElEQlRy
YW5zYWN0aW9uOjpNb2RlKG1vZGUpLCBlYyk7CiAgICAgaWYgKGVjKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCmluZGV4IDFlMDJkOTA2MzZmMGY3ZWQy
NTJlMDZjZTExZTk2NjhlNzk1ZTZlMmIuLmUzN2VmMGI4ZmZmYjJhM2Q1NTE1Njk4OGJiZWRjNDNh
NjNiZjY1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eC5jcHAKQEAgLTg3LDcgKzg3LDggQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6
b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXMKIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNo
b3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJJ
bmRleDo6b3BlbkN1cnNvciIpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25z
b2xlTWVzc2FnZSwgKCJOdW1lcmljIGRpcmVjdGlvbiB2YWx1ZXMgYXJlIGRlcHJlY2F0ZWQgaW4g
SURCSW5kZXgub3BlbkN1cnNvci4gVXNlIFwibmV4dFwiLCBcIm5leHR1bmlxdWVcIiwgXCJwcmV2
XCIsIG9yIFwicHJldnVuaXF1ZVwiLiIpKTsKKyAgICAvLyBGSVhNRTogSXMgdGhpcyB0aHJlYWQt
c2FmZT8KKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChB
U0NJSUxpdGVyYWwoIk51bWVyaWMgZGlyZWN0aW9uIHZhbHVlcyBhcmUgZGVwcmVjYXRlZCBpbiBJ
REJJbmRleC5vcGVuQ3Vyc29yLiBVc2UgXCJuZXh0XCIsIFwibmV4dHVuaXF1ZVwiLCBcInByZXZc
Iiwgb3IgXCJwcmV2dW5pcXVlXCIuIikpKTsKICAgICBjb250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBj
b25zb2xlTWVzc2FnZSk7CiAgICAgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcgPSBJREJD
dXJzb3I6OmRpcmVjdGlvblRvU3RyaW5nKGRpcmVjdGlvbiwgZWMpOwogICAgIGlmIChlYykKQEAg
LTE3MCw3ICsxNzEsOCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5
Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBk
aXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXg6
Om9wZW5LZXlDdXJzb3IiKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29s
ZU1lc3NhZ2UsICgiTnVtZXJpYyBkaXJlY3Rpb24gdmFsdWVzIGFyZSBkZXByZWNhdGVkIGluIElE
QkluZGV4Lm9wZW5LZXlDdXJzb3IuIFVzZSBcIm5leHRcIiwgXCJuZXh0dW5pcXVlXCIsIFwicHJl
dlwiLCBvciBcInByZXZ1bmlxdWVcIi4iKSk7CisgICAgLy8gRklYTUU6IElzIHRoaXMgdGhyZWFk
LXNhZmU/CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAo
QVNDSUlMaXRlcmFsKCJOdW1lcmljIGRpcmVjdGlvbiB2YWx1ZXMgYXJlIGRlcHJlY2F0ZWQgaW4g
SURCSW5kZXgub3BlbktleUN1cnNvci4gVXNlIFwibmV4dFwiLCBcIm5leHR1bmlxdWVcIiwgXCJw
cmV2XCIsIG9yIFwicHJldnVuaXF1ZVwiLiIpKSk7CiAgICAgY29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01lc3NhZ2VMZXZl
bCwgY29uc29sZU1lc3NhZ2UpOwogICAgIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nID0g
SURCQ3Vyc29yOjpkaXJlY3Rpb25Ub1N0cmluZyhkaXJlY3Rpb24sIGVjKTsKICAgICBpZiAoZWMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5jcHAKaW5kZXggYzMwYTI1M2E0MDY1M2U4OTZiMjRkM2Y3NThkN2NhNTg5MzYxMjg4Yy4uYTdh
YThhM2VhYjYwOWM2OTJiZTA4NDgyZDY1YTY2ZjQ2ODc3NDVkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtNTE5LDcg
KzUxOSw4IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJz
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6
Om9wZW5DdXJzb3IiKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1l
c3NhZ2UsICgiTnVtZXJpYyBkaXJlY3Rpb24gdmFsdWVzIGFyZSBkZXByZWNhdGVkIGluIElEQk9i
amVjdFN0b3JlLm9wZW5DdXJzb3IuIFVzZSBcIm5leHRcIiwgXCJuZXh0dW5pcXVlXCIsIFwicHJl
dlwiLCBvciBcInByZXZ1bmlxdWVcIi4iKSk7CisgICAgLy8gRklYTUU6IElzIHRoaXMgdGhyZWFk
LXNhZmU/CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAo
QVNDSUlMaXRlcmFsKCJOdW1lcmljIGRpcmVjdGlvbiB2YWx1ZXMgYXJlIGRlcHJlY2F0ZWQgaW4g
SURCT2JqZWN0U3RvcmUub3BlbkN1cnNvci4gVXNlIFwibmV4dFwiLCBcIm5leHR1bmlxdWVcIiwg
XCJwcmV2XCIsIG9yIFwicHJldnVuaXF1ZVwiLiIpKSk7CiAgICAgY29udGV4dC0+YWRkQ29uc29s
ZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01lc3NhZ2VM
ZXZlbCwgY29uc29sZU1lc3NhZ2UpOwogICAgIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5n
ID0gSURCQ3Vyc29yOjpkaXJlY3Rpb25Ub1N0cmluZyhkaXJlY3Rpb24sIGVjKTsKICAgICBpZiAo
ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmNwcAppbmRleCBmYTA3MWZlZjI5YmU5YmEzNDlmMjUzYzJhNzJiOGUwZjgw
YTY1NmM4Li4yMTBhMmYzNmU3ODc2OWRiNDBlNTUwYzg2NjljMjdlOTdjOWNlNmQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHAKQEAgLTU3LDggKzU3LDggQEAgTWVkaWFTdHJlYW1UcmFjazo6fk1lZGlhU3RyZWFt
VHJhY2soKQogCiBTdHJpbmcgTWVkaWFTdHJlYW1UcmFjazo6a2luZCgpIGNvbnN0CiB7Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGF1ZGlvS2luZCwgKCJhdWRpbyIpKTsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdmlkZW9LaW5kLCAoInZpZGVvIikpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBhdWRpb0tpbmQsIChBU0NJSUxpdGVyYWwoImF1ZGlv
IikpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdmlkZW9LaW5kLCAoQVNDSUlM
aXRlcmFsKCJ2aWRlbyIpKSk7CiAKICAgICBzd2l0Y2ggKG1fY29tcG9uZW50LT5zb3VyY2UoKS0+
dHlwZSgpKSB7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZUF1ZGlvOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcAppbmRleCBkMTdhYzhkYjY0
ZWQxNTA1OWNlZDdjNGU2NDc4NTZhNjllMDBhMmZlLi45NmZhMTIxYzg5NTY2MjVjMzA4NzY5ZTI3
NDU0OTYwNWY0ODEyYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHlTb3VyY2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3Vy
Y2VEYXRhLmNwcApAQCAtODgsOCArODgsOCBAQCBDU1NQcm9wZXJ0eVNvdXJjZURhdGE6OkNTU1By
b3BlcnR5U291cmNlRGF0YSgpCiAKIFN0cmluZyBDU1NQcm9wZXJ0eVNvdXJjZURhdGE6OnRvU3Ry
aW5nKCkgY29uc3QKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZW1wdHlWYWx1
ZSwgKCJlIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBpbXBvcnRhbnRTdWZm
aXgsICgiICFpbXBvcnRhbnQiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGVt
cHR5VmFsdWUsIChBU0NJSUxpdGVyYWwoImUiKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBpbXBvcnRhbnRTdWZmaXgsIChBU0NJSUxpdGVyYWwoIiAhaW1wb3J0YW50IikpKTsK
ICAgICBpZiAoIW5hbWUgJiYgdmFsdWUgPT0gZW1wdHlWYWx1ZSkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA5MWZhMmU4M2NkYzQwNWU5ZGU0
YjhiNDgxYjFiOTVkYzQyMTk2NzBmLi5iZWI2MzU5OGJkMzdkNGFkYWFmMjk1MjViMWNlZDEwMjRl
ZTE1M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTMwNjMsNyArMzA2Myw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29uc3QgU3RyaW5nJiBlcXVpdiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50KQogICAgICAgICAgICAgICAgIGZyYW1lTG9hZGVyLT5zdG9wQWxsTG9h
ZGVycygpOwogICAgICAgICAgICAgICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCktPnNj
aGVkdWxlTG9jYXRpb25DaGFuZ2Uoc2VjdXJpdHlPcmlnaW4oKSwgYmxhbmtVUkwoKSwgU3RyaW5n
KCkpOwogCi0gICAgICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNv
bGVNZXNzYWdlLCAoIlJlZnVzZWQgdG8gZGlzcGxheSBkb2N1bWVudCBiZWNhdXNlIGRpc3BsYXkg
Zm9yYmlkZGVuIGJ5IFgtRnJhbWUtT3B0aW9ucy5cbiIpKTsKKyAgICAgICAgICAgICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlJl
ZnVzZWQgdG8gZGlzcGxheSBkb2N1bWVudCBiZWNhdXNlIGRpc3BsYXkgZm9yYmlkZGVuIGJ5IFgt
RnJhbWUtT3B0aW9ucy5cbiIpKSk7CiAgICAgICAgICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2Uo
SlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNvbnNv
bGVNZXNzYWdlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL01pY3JvRGF0YUl0ZW1MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
aWNyb0RhdGFJdGVtTGlzdC5jcHAKaW5kZXggMzg0NjBjZTNkZjdiYjUyNzEyYTEyM2RmOTkzMTgy
YTA5OWUzOTFjYi4uNTM0YzBkMGI0M2YxMWEzZGU4N2VmNDY5ODI1YTRmMzdjOWJkZWE3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvRGF0YUl0ZW1MaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTWljcm9EYXRhSXRlbUxpc3QuY3BwCkBAIC00MSw2ICs0MSw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBjb25zdCBTdHJpbmcmIE1pY3JvRGF0YUl0ZW1M
aXN0Ojp1bmRlZmluZWRJdGVtVHlwZSgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIHVuZGVmaW5lZEl0ZW1UeXBlU3RyaW5nLCAoIiIpKTsKKyAgICAvLyBGSVhNRTogV2h5IG5v
dCBqdXN0IHJldHVybiBlbXB0eVN0cmluZygpOyA/CiAgICAgcmV0dXJuIHVuZGVmaW5lZEl0ZW1U
eXBlU3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNjJl
ODIzMDZjMThjOTVkNDRiYjIxNTkyYTg1MzVhYzZhZWE0ODkzMC4uMjA5ZmM3OWMxYzhjMDhhNGY2
OWE5OTk5ODNmYjA3MTk4NjM4ZTY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNw
cApAQCAtMzM1LDcgKzMzNSw3IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgICAgICAmJiAhbV9jYWNoZWRTY3JpcHQtPnBh
c3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhtX2VsZW1lbnQtPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCkpKSB7CiAKICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7Ci0gICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJDcm9zcy1vcmlnaW4gc2Ny
aXB0IGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4i
KSk7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwg
KEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHNjcmlwdCBsb2FkIGRlbmllZCBieSBDcm9zcy1P
cmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikpKTsKICAgICAgICAgbV9lbGVtZW50LT5k
b2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VU
eXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVs
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApp
bmRleCBjYTNjMjQ5YTNiZWQ5Y2I4ZGNlNzllYjRmYzAwZDViZTI4MzhjMzdmLi4yZGYxMTRjMzE2
MzgyYjRjMTZiMmZjZWM2MzU1MDVkNzVlMmUzMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIGJvb2wgTWFya3Vw
QWNjdW11bGF0b3I6OnNob3VsZEFkZE5hbWVzcGFjZUVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxl
bWVudCkKICAgICBpZiAocHJlZml4LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuICFlbGVtZW50
LT5oYXNBdHRyaWJ1dGUoeG1sbnNBdG9tKTsKIAotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCB4bWxuc1dpdGhDb2xvbiwgKCJ4bWxuczoiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIHhtbG5zV2l0aENvbG9uLCAoQVNDSUlMaXRlcmFsKCJ4bWxuczoiKSkpOwogICAg
IHJldHVybiAhZWxlbWVudC0+aGFzQXR0cmlidXRlKHhtbG5zV2l0aENvbG9uICsgcHJlZml4KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCBlMzVlZmYxOWUx
OWJhOWM1ZTVkMTVjODAyYjZiYjlmZTQ1NDFhNDZhLi40OTQxMmJlNDM3YTljOGVjY2M2NDY1OGMw
NmY0NWVmNDUyMDdhNTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApA
QCAtMzkxLDcgKzM5MSw3IEBAIHN0YXRpYyBTdHJpbmcgZm9ybVN0YXRlU2lnbmF0dXJlKCkKICAg
ICAvLyBJbiB0aGUgbGVnYWN5IHZlcnNpb24gb2Ygc2VyaWFsaXplZCBzdGF0ZSwgdGhlIGZpcnN0
IGl0ZW0gd2FzIGEgbmFtZQogICAgIC8vIGF0dHJpYnV0ZSB2YWx1ZSBvZiBhIGZvcm0gY29udHJv
bC4gVGhlIGZvbGxvd2luZyBzdHJpbmcgbGl0ZXJhbCBzaG91bGQKICAgICAvLyBjb250YWluIHNv
bWUgY2hhcmFjdGVycyB3aGljaCBhcmUgcmFyZWx5IHVzZWQgZm9yIG5hbWUgYXR0cmlidXRlIHZh
bHVlcy4KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc2lnbmF0dXJlLCAoIlxuXHI/
JSBXZWJLaXQgc2VyaWFsaXplZCBmb3JtIHN0YXRlIHZlcnNpb24gNyBcblxyPSYiKSk7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNpZ25hdHVyZSwgKEFTQ0lJTGl0ZXJhbCgiXG5c
cj8lIFdlYktpdCBzZXJpYWxpemVkIGZvcm0gc3RhdGUgdmVyc2lvbiA3IFxuXHI9JiIpKSk7CiAg
ICAgcmV0dXJuIHNpZ25hdHVyZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxl
bWVudC5jcHAKaW5kZXggYjMxNjYyYzhiZDY0NzhiZGUxYjYwYzE5OTk1NzM0NzRmZGFmMzAxMi4u
NmM2YzllNDBiYjMxMGY5OGQ2ODhmN2ZmYjM4MWY3YTBjNmQwYWIzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCkBAIC0yMzQsNyArMjM0LDcgQEAgYm9vbCBIVE1M
VHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKGNvbnN0IEtVUkwmIHVybCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKCFkb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+
YWxsb3dNZWRpYUZyb21Tb3VyY2UodXJsKSkgewotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgiVGV4dCB0cmFjayBsb2FkIGRlbmllZCBieSBDb250
ZW50IFNlY3VyaXR5IFBvbGljeS4iKSk7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiVGV4dCB0cmFjayBsb2FkIGRlbmll
ZCBieSBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4iKSkpOwogICAgICAgICBkb2N1bWVudCgpLT5h
ZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1l
c3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UpOwogICAgICAgICBMT0coTWVkaWEsICJIVE1MVHJh
Y2tFbGVtZW50OjpjYW5Mb2FkVXJsKCVzKSAtPiByZWplY3RlZCBieSBDb250ZW50IFNlY3VyaXR5
IFBvbGljeSIsIHVybEZvckxvZ2dpbmcodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAppbmRleCBhZjRj
YzkwNjg0MTMyZDUwMzZjMjRjNmQ5OWE5YzQxNWRmNTYxYzUzLi4xMTAxNTQ3NTRiYzY5ZjNjNzcy
NzU3MmQ1OGI2OGQ3N2MyZTRlMDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBl
LmNwcApAQCAtNjgsOCArNjgsOCBAQCBib29sIEltYWdlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0
YShGb3JtRGF0YUxpc3QmIGVuY29kaW5nLCBib29sKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG90WFN0cmluZywg
KCIueCIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG90WVN0cmluZywgKCIu
eSIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG90WFN0cmluZywgKEFTQ0lJ
TGl0ZXJhbCgiLngiKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBkb3RZU3Ry
aW5nLCAoQVNDSUlMaXRlcmFsKCIueSIpKSk7CiAgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShuYW1l
ICsgZG90WFN0cmluZywgbV9jbGlja0xvY2F0aW9uLngoKSk7CiAgICAgZW5jb2RpbmcuYXBwZW5k
RGF0YShuYW1lICsgZG90WVN0cmluZywgbV9jbGlja0xvY2F0aW9uLnkoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCmluZGV4IDhhZmExZTdiMTJjYWI0ZTkyMzZlODAwYWNhMjc5ZDBiODdkYzU4YTIuLjkxNWIy
MjY4MzIxZjNhYzBiZDk3M2ViMTE1MjkxYmZlM2I5ZjZkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAt
MTg2Nyw3ICsxODY3LDcgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6d2Via2l0R2V0SW1hZ2VEYXRhSEQoZmxvYXQgc3gsIGYKIFBhc3NSZWZQdHI8SW1h
Z2VEYXRhPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmdldEltYWdlRGF0YShJbWFnZUJ1ZmZl
cjo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCBmbG9hdCBzeCwgZmxvYXQgc3ks
IGZsb2F0IHN3LCBmbG9hdCBzaCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYg
KCFjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSkgewotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgiVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRhIGZyb20g
Y2FudmFzIGJlY2F1c2UgdGhlIGNhbnZhcyBoYXMgYmVlbiB0YWludGVkIGJ5IGNyb3NzLW9yaWdp
biBkYXRhLiIpKTsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVN
ZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52
YXMgYmVjYXVzZSB0aGUgY2FudmFzIGhhcyBiZWVuIHRhaW50ZWQgYnkgY3Jvc3Mtb3JpZ2luIGRh
dGEuIikpKTsKICAgICAgICAgY2FudmFzKCktPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdl
KEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjb25z
b2xlTWVzc2FnZSk7CiAgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwogICAgICAgICByZXR1cm4g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKaW5kZXggN2M4MTY0
NzVhNjYwYzJjMmI5NjJmOTI4OTNmOGVkOTdlNjgwNTQyOS4uODIyZmEzYTg1ZmRmOGYwMWFhMTUw
YWNjOTk3Mzg0ZTA0MzcwYmM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvWFNTQXVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFhTU0F1ZGl0b3I6OmluaXQoKQogICAg
ICAgICBtX2RlY29kZWRVUkwgPSBTdHJpbmcoKTsKIAogICAgIGlmIChEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIgPSBtX3BhcnNlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCkt
PmRvY3VtZW50TG9hZGVyKCkpIHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IFhTU1Byb3RlY3Rpb25IZWFkZXIsICgiWC1YU1MtUHJvdGVjdGlvbiIpKTsKKyAgICAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIFhTU1Byb3RlY3Rpb25IZWFkZXIsIChBU0NJSUxpdGVy
YWwoIlgtWFNTLVByb3RlY3Rpb24iKSkpOwogICAgICAgICBtX3hzc1Byb3RlY3Rpb24gPSBwYXJz
ZVhTU1Byb3RlY3Rpb25IZWFkZXIoZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRl
ckZpZWxkKFhTU1Byb3RlY3Rpb25IZWFkZXIpKTsKIAogICAgICAgICBGb3JtRGF0YSogaHR0cEJv
ZHkgPSBkb2N1bWVudExvYWRlci0+b3JpZ2luYWxSZXF1ZXN0KCkuaHR0cEJvZHkoKTsKQEAgLTI1
Niw3ICsyNTYsNyBAQCB2b2lkIFhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKEhUTUxUb2tlbiYgdG9r
ZW4pCiAKICAgICBpZiAoZGlkQmxvY2tTY3JpcHQpIHsKICAgICAgICAgLy8gRklYTUU6IENvbnNp
ZGVyIHVzaW5nIGEgbW9yZSBoZWxwZnVsIGNvbnNvbGUgbWVzc2FnZS4KLSAgICAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIlJlZnVzZWQgdG8gZXhlY3V0
ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGlu
IHJlcXVlc3QuXG4iKSk7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25z
b2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlw
dCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC5cbiIp
KSk7CiAgICAgICAgIG1fcGFyc2VyLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01l
c3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1l
c3NhZ2UpOwogCiAgICAgICAgIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlID0gKG1feHNzUHJvdGVj
dGlvbiA9PSBYU1NQcm90ZWN0aW9uQmxvY2tFbmFibGVkKTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBi
b29sIFhTU0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbihIVE1MVG9rZW4mIHRva2VuKQogCiBib29s
IFhTU0F1ZGl0b3I6OmVyYXNlRGFuZ2Vyb3VzQXR0cmlidXRlc0lmSW5qZWN0ZWQoSFRNTFRva2Vu
JiB0b2tlbikKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc2FmZUphdmFTY3Jp
cHRVUkwsICgiamF2YXNjcmlwdDp2b2lkKDApIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBzYWZlSmF2YVNjcmlwdFVSTCwgKEFTQ0lJTGl0ZXJhbCgiamF2YXNjcmlwdDp2b2lk
KDApIikpKTsKIAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBmYWxzZTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHRva2VuLmF0dHJpYnV0ZXMoKS5zaXplKCk7ICsraSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggNTNhMzUz
ZjkwZDgyZDFhNWY2NTcwMDE2MGU0MGJmNmM1YWVmZWRmMC4uY2EwYTRjNTVmMDcxZjU2MjFhN2Nm
OWEyM2RkYmQ2NDY2NDJhOTY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0xMzMsMTAgKzEzMywxMCBAQCBwcml2YXRlOgogCiBzdGF0
aWMgdW5zaWduZWQgY29tcHV0ZVBzZXVkb0NsYXNzTWFzayhJbnNwZWN0b3JBcnJheSogcHNldWRv
Q2xhc3NBcnJheSkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgYWN0aXZlLCAo
ImFjdGl2ZSIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaG92ZXIsICgiaG92
ZXIiKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZvY3VzLCAoImZvY3VzIikp
OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB2aXNpdGVkLCAoInZpc2l0ZWQiKSk7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFjdGl2ZSwgKEFTQ0lJTGl0ZXJhbCgi
YWN0aXZlIikpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaG92ZXIsIChBU0NJ
SUxpdGVyYWwoImhvdmVyIikpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZm9j
dXMsIChBU0NJSUxpdGVyYWwoImZvY3VzIikpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgdmlzaXRlZCwgKEFTQ0lJTGl0ZXJhbCgidmlzaXRlZCIpKSk7CiAgICAgaWYgKCFwc2V1
ZG9DbGFzc0FycmF5IHx8ICFwc2V1ZG9DbGFzc0FycmF5LT5sZW5ndGgoKSkKICAgICAgICAgcmV0
dXJuIFBzZXVkb05vbmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCAxYmMxNmYyMGYzYzViMWVlNjA5YjVjM2YxOWM0
MjJlNDk2Yzg4ZjU0Li43NmM5Yzk1MzBiYTc5NGZhNzUxMDAzMjJkNzJlZDE4NTgzZWFhZDEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCkBAIC01OTQsNyArNTk0LDcgQEAgUGFzc1JlZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkNhbGxGcmFtZT4gPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXIKIAogU3Ry
aW5nIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclNjcmlwdChjb25zdCBT
Y3JpcHQmIHNjcmlwdCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc291cmNl
TWFwSHR0cEhlYWRlciwgKCJYLVNvdXJjZU1hcCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgc291cmNlTWFwSHR0cEhlYWRlciwgKEFTQ0lJTGl0ZXJhbCgiWC1Tb3VyY2VNYXAi
KSkpOwogCiAgICAgU3RyaW5nIHNvdXJjZU1hcFVSTCA9IENvbnRlbnRTZWFyY2hVdGlsczo6Zmlu
ZFNvdXJjZU1hcFVSTChzY3JpcHQuc291cmNlKTsKICAgICBpZiAoIXNvdXJjZU1hcFVSTC5pc0Vt
cHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcAppbmRleCAzM2IyMWI0ZmRkMTJjMTk5MjVmNDVjMzMzYWVhNzA0NzM3ZWM2
ZjgxLi44Nzk2MWQ4MmMwOTBiZjIyZjU3N2MzZTRiZWU3ZTI1MWY3N2VmMWQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAK
QEAgLTM2NiwxMCArMzY2LDEwIEBAIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gaWRiS2V5RnJv
bUluc3BlY3Rvck9iamVjdChJbnNwZWN0b3JPYmplY3QqIGtleSkKICAgICBpZiAoIWtleS0+Z2V0
U3RyaW5nKCJ0eXBlIiwgJnR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBudW1iZXIsICgibnVtYmVyIikpOwotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBzdHJpbmcsICgic3RyaW5nIikpOwotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBkYXRlLCAoImRhdGUiKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGFycmF5LCAoImFycmF5IikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBudW1iZXIsIChBU0NJSUxpdGVyYWwoIm51bWJlciIpKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIHN0cmluZywgKEFTQ0lJTGl0ZXJhbCgic3RyaW5nIikpKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZGF0ZSwgKEFTQ0lJTGl0ZXJhbCgiZGF0ZSIpKSk7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFycmF5LCAoQVNDSUlMaXRlcmFsKCJhcnJh
eSIpKSk7CiAKICAgICBpZiAodHlwZSA9PSBudW1iZXIpIHsKICAgICAgICAgZG91YmxlIG51bWJl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRl
eCBiNmNkNWYyMDUwYmYxMWY2NDY5YmY0ZTA1YzdlN2RkNTNmZWMxY2IzLi42OTllYjRiODAzZTdi
Y2VhZmU2NzAwMzZhYzRkYWM2MGE0YTM2YWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBkcmF3RWxl
bWVudFRpdGxlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgTm9kZSogbm9kZSwgUmVuZGVyT2Jq
ZWN0KiByZW5kZXIKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBub3JtYWxDb2xvciwg
KENvbG9yOjpibGFjaykpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIHB4QW5kQm9y
ZGVyQ29sb3IsICgxMjgsIDEyOCwgMTI4KSk7CiAKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgcHhTdHJpbmcsICgicHgiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IHB4U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJweCIpKSk7CiAgICAgY29uc3Qgc3RhdGljIFVDaGFy
IHRpbWVzVUNoYXJbXSA9IHsgMHgwMDIwLCAweDAwRDcsIDB4MDAyMCwgMCB9OwogICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0aW1lc1N0cmluZywgKHRpbWVzVUNoYXIpKTsgLy8gJnRp
bWVzOyBzdHJpbmcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwCmluZGV4IDgzYjQwMmQ2ZWE5MzlmNGYzZTVlN2ViNDlkODBlMzBkYTc0NzFm
ZjcuLjljY2E3YWMxMDAzZjM1MTFhMjI3ZmNiZDYxY2MxYzQ1ZTc4ZTJhZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTMyNSw3
ICszMjUsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+ID4gSW5zcAogYm9vbCBJbnNwZWN0b3JTdHlsZTo6
c2V0UHJvcGVydHlUZXh0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIHByb3BlcnR5VGV4
dCwgYm9vbCBvdmVyd3JpdGUsIFN0cmluZyogb2xkVGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgQVNTRVJUKG1fcGFyZW50U3R5bGVTaGVldCk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIGJvZ3VzUHJvcGVydHlOYW1lLCAoIi13ZWJraXQtYm9ndXotcHJvcGVydGVlIikp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBib2d1c1Byb3BlcnR5TmFtZSwgKEFT
Q0lJTGl0ZXJhbCgiLXdlYmtpdC1ib2d1ei1wcm9wZXJ0ZWUiKSkpOwogCiAgICAgaWYgKCFtX3Bh
cmVudFN0eWxlU2hlZXQtPmVuc3VyZVBhcnNlZERhdGFSZWFkeSgpKSB7CiAgICAgICAgIGVjID0g
Tk9UX0ZPVU5EX0VSUjsKQEAgLTYzNSw3ICs2MzUsNyBAQCBWZWN0b3I8U3RyaW5nPiBJbnNwZWN0
b3JTdHlsZTo6bG9uZ2hhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0cmluZyYgc2hvcnRoYW5kUHJvcGVy
dAogCiBOZXdMaW5lQW5kV2hpdGVzcGFjZSYgSW5zcGVjdG9yU3R5bGU6Om5ld0xpbmVBbmRXaGl0
ZXNwYWNlRGVsaW1pdGVycygpIGNvbnN0CiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIGRlZmF1bHRQcmVmaXgsICgiICAgICIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgZGVmYXVsdFByZWZpeCwgKEFTQ0lJTGl0ZXJhbCgiICAgICIpKSk7CiAKICAgICBpZiAo
bV9mb3JtYXRBY3F1aXJlZCkKICAgICAgICAgcmV0dXJuIG1fZm9ybWF0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggODc0NTM0NmRhNzNiY2ZlOGU0NmQxZTBiYTcyYTc0
N2QxZDY5Y2JmZC4uMDUyM2IzYTg5ZjMxNjc1Y2M2OTllMTVkOWQxNjE2MDdmN2U3NWIxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC0yNzksNyArMjc5LDcgQEAgdm9p
ZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQog
ICAgICAgICBtX2hhc1BlbmRpbmdFcnJvckV2ZW50ID0gdHJ1ZTsKICAgICAgICAgZXJyb3JFdmVu
dFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOwogCi0gICAgICAgIERFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJDcm9zcy1vcmlnaW4gaW1hZ2UgbG9h
ZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIpKTsKKyAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlM
aXRlcmFsKCJDcm9zcy1vcmlnaW4gaW1hZ2UgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJl
c291cmNlIFNoYXJpbmcgcG9saWN5LiIpKSk7CiAgICAgICAgIGRvY3VtZW50KCktPmFkZENvbnNv
bGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCBjb25zb2xlTWVzc2FnZSk7CiAKICAgICAgICAgQVNTRVJUKCFtX2hhc1BlbmRpbmdMb2Fk
RXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcApp
bmRleCAwODM2ZDhjYzAwZTg5MDU4ZTk4MzIzYmI2ZDYwNjQ1M2ZjZTljNTM3Li5kNmE2MDcyNDgw
ZDZiMzFkMDAwMjE2NmI5OTMyYmFmMDFiMzg2NjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcApAQCAtMzcxLDcgKzM3MSw3IEBAIHZvaWQgTWFpblJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cikKICAgICAgICAgU3RyaW5nIGNvbnRlbnQgPSBpdC0+c2Vjb25kOwogICAgICAgICBpZiAobV9m
cmFtZS0+bG9hZGVyKCktPnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnRl
bnQsIHIudXJsKCkpKSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bnRpbnVlQWZ0ZXJYRnJhbWVPcHRpb25zRGVuaWVkKG1fZnJhbWUuZ2V0KCksIGRvY3VtZW50TG9h
ZGVyKCksIGlkZW50aWZpZXIoKSwgcik7Ci0gICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgiUmVmdXNlZCB0byBkaXNwbGF5IGRvY3VtZW50IGJl
Y2F1c2UgZGlzcGxheSBmb3JiaWRkZW4gYnkgWC1GcmFtZS1PcHRpb25zLlxuIikpOworICAgICAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlM
aXRlcmFsKCJSZWZ1c2VkIHRvIGRpc3BsYXkgZG9jdW1lbnQgYmVjYXVzZSBkaXNwbGF5IGZvcmJp
ZGRlbiBieSBYLUZyYW1lLU9wdGlvbnMuXG4iKSkpOwogICAgICAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UpOwog
CiAgICAgICAgICAgICBjYW5jZWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xv
YWRlci5jcHAKaW5kZXggODM1NWE0YTRjNDIwYzdhM2M4YmM0YzcwZGM2OTZkYTRmYzkyN2UxYS4u
MjAyNTcwZDFkMGE4ZDVlMzVmNmMxNDRiODlhZmYyYzIwYTg4MTU3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFRl
eHRUcmFja0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQog
CiB2b2lkIFRleHRUcmFja0xvYWRlcjo6Y29yc1BvbGljeVByZXZlbnRlZExvYWQoKQogewotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJDcm9zcy1vcmln
aW4gdGV4dCB0cmFjayBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmlu
ZyBwb2xpY3kuIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVz
c2FnZSwgKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHRleHQgdHJhY2sgbG9hZCBkZW5pZWQg
YnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIpKSk7CiAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOwogICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2Us
IExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UpOwogICAg
IG1fc3RhdGUgPSBGYWlsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFi
YXNlLmNwcAppbmRleCA3MTA2NDhmOTRhZGUxZmQ2MjBkZGRlYWRiNjA3NmViZTVlNTEwYjIyLi40
MGE3NzU1YWM0NzBiYTBiMjE3NmViMzE2OTM5MGExYWYwYzYzMWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTkxMCw3ICs5MTAsNyBAQCBTdHJp
bmcgSWNvbkRhdGFiYXNlOjpkYXRhYmFzZVBhdGgoKSBjb25zdAogCiBTdHJpbmcgSWNvbkRhdGFi
YXNlOjpkZWZhdWx0RGF0YWJhc2VGaWxlbmFtZSgpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lLCAoIldlYnBhZ2VJY29ucy5kYiIpKTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUs
IChBU0NJSUxpdGVyYWwoIldlYnBhZ2VJY29ucy5kYiIpKSk7CiAgICAgcmV0dXJuIGRlZmF1bHRE
YXRhYmFzZUZpbGVuYW1lLmlzb2xhdGVkQ29weSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggYzc3MTcwZDExNGMzZGU2YWNmMjYw
ZjU3NzMzNWZiN2FmMDJhOTdhZS4uMWJmOTA3ZjU1NjgzMmU2MGZiNDE4ZjY5ZTU2NWZmMDIyY2U1
M2RiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNw
cApAQCAtODk5LDcgKzg5OSw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tTb3VyY2VB
bmRSZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0CiAKIGJvb2wgQ1NQ
RGlyZWN0aXZlTGlzdDo6YWxsb3dKYXZhU2NyaXB0VVJMcyhjb25zdCBTdHJpbmcmIGNvbnRleHRV
UkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgiUmVmdXNlZCB0byBl
eGVjdXRlIEphdmFTY3JpcHQgVVJMIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBD
b250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8g
ZXhlY3V0ZSBKYXZhU2NyaXB0IFVSTCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcg
Q29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSkpOwogICAgIGlmIChyZXBvcnRp
bmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpTZW5kUmVwb3J0KSB7CiAgICAgICAg
IHJldHVybiAoY2hlY2tJbmxpbmVBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZl
KG1fc2NyaXB0U3JjLmdldCgpKSwgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIGNvbnRleHRM
aW5lKQogICAgICAgICAgICAgICAgICYmIGNoZWNrTm9uY2VBbmRSZXBvcnRWaW9sYXRpb24obV9z
Y3JpcHROb25jZS5nZXQoKSwgU3RyaW5nKCksIGNvbnNvbGVNZXNzYWdlLCBjb250ZXh0VVJMLCBj
b250ZXh0TGluZSkpOwpAQCAtOTExLDcgKzkxMSw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dKYXZhU2NyaXB0VVJMcyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6
CiAKIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVFdmVudEhhbmRsZXJzKGNvbnN0
IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGlu
ZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVz
KSBjb25zdAogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2Fn
ZSwgKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgaW5saW5lIGV2ZW50IGhhbmRsZXIgYmVjYXVzZSBpdCB2
aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTog
IikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFT
Q0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIGlubGluZSBldmVudCBoYW5kbGVyIGJlY2F1
c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJl
Y3RpdmU6ICIpKSk7CiAgICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OlNlbmRSZXBvcnQpIHsKICAgICAgICAgcmV0dXJuIChjaGVja0lubGluZUFuZFJlcG9y
dFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBjb25zb2xl
TWVzc2FnZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpCiAgICAgICAgICAgICAgICAgJiYgY2hl
Y2tOb25jZUFuZFJlcG9ydFZpb2xhdGlvbihtX3NjcmlwdE5vbmNlLmdldCgpLCBTdHJpbmcoKSwg
Y29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lKSk7CkBAIC05MjMsNyArOTIz
LDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZUV2ZW50SGFuZGxlcnMoY29u
c3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdAogCiBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFs
bG93SW5saW5lU2NyaXB0KGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRp
bmFsTnVtYmVyJiBjb250ZXh0TGluZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdT
dGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgaW5saW5lIHNjcmlw
dCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xp
Y3kgZGlyZWN0aXZlOiAiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNv
bGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgaW5saW5lIHNjcmlw
dCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xp
Y3kgZGlyZWN0aXZlOiAiKSkpOwogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tJbmxpbmVBbmRSZXBv
cnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSwgY29uc29s
ZU1lc3NhZ2UsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lKSA6CiAgICAgICAgIGNoZWNrSW5saW5l
KG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSkpOwpAQCAtOTMxLDcgKzkzMSw3
IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTY3JpcHQoY29uc3QgU3RyaW5n
JiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yCiAKIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxs
b3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5h
bE51bWJlciYgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3Rh
dHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgY29uc29sZU1lc3NhZ2UsICgiUmVmdXNlZCB0byBhcHBseSBpbmxpbmUgc3R5bGUgYmVj
YXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRp
cmVjdGl2ZTogIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVz
c2FnZSwgKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBhcHBseSBpbmxpbmUgc3R5bGUgYmVjYXVz
ZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVj
dGl2ZTogIikpKTsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0
eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0
aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3N0eWxlU3JjLmdldCgpKSwgY29uc29sZU1lc3NhZ2Us
IGNvbnRleHRVUkwsIGNvbnRleHRMaW5lKSA6CiAgICAgICAgIGNoZWNrSW5saW5lKG9wZXJhdGl2
ZURpcmVjdGl2ZShtX3N0eWxlU3JjLmdldCgpKSk7CkBAIC05MzksNyArOTM5LDcgQEAgYm9vbCBD
U1BEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgY29udGV4dFVS
TCwgY29uc3QgV1RGOjpPcmQKIAogYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0V2YWwoUGFz
c1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaywgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJSZWZ1c2VkIHRvIGV2YWx1YXRl
IHNjcmlwdCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0
eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV2YWx1YXRlIHNjcmlw
dCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xp
Y3kgZGlyZWN0aXZlOiAiKSkpOwogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tFdmFsQW5kUmVwb3J0
VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIGNvbnNvbGVN
ZXNzYWdlLCBTdHJpbmcoKSwgV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBjYWxs
U3RhY2spIDoKICAgICAgICAgY2hlY2tFdmFsKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNy
Yy5nZXQoKSkpOwpAQCAtOTQ3LDcgKzk0Nyw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxs
b3dFdmFsKFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2ssIENvbnRlbnRTCiAK
IGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5v
bmNlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKIHsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgiUmVmdXNlZCB0byBleGVjdXRlIHNjcmlw
dCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xp
Y3kgZGlyZWN0aXZlOiAiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNv
bGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgc2NyaXB0IGJlY2F1
c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJl
Y3RpdmU6ICIpKSk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBjaGVj
a05vbmNlQW5kUmVwb3J0VmlvbGF0aW9uKG1fc2NyaXB0Tm9uY2UuZ2V0KCksIG5vbmNlLCBjb25z
b2xlTWVzc2FnZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOwogICAgIHJldHVybiBjaGVja05v
bmNlQW5kUmVwb3J0VmlvbGF0aW9uKG1fc2NyaXB0Tm9uY2UuZ2V0KCksIG5vbmNlLCAiUmVmdXNl
ZCB0byBsb2FkICciICsgdXJsLnN0cmluZygpICsgIicgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUg
Zm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIiwgY29udGV4dFVS
TCwgY29udGV4dExpbmUpOwpAQCAtOTYyLDcgKzk2Miw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlz
dDo6YWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBl
QXR0CiAKIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0
IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0
aW5nU3RhdHVzKSBjb25zdAogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0eXBl
LCAoInNjcmlwdCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdHlwZSwgKEFT
Q0lJTGl0ZXJhbCgic2NyaXB0IikpKTsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENv
bnRlbnRTZWN1cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrU291cmNlQW5k
UmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIHVy
bCwgdHlwZSkgOgogICAgICAgICBjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3Jp
cHRTcmMuZ2V0KCkpLCB1cmwpOwpAQCAtOTcwLDcgKzk3MCw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZl
TGlzdDo6YWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3Vy
aXR5UG9sCiAKIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNv
bnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVw
b3J0aW5nU3RhdHVzKSBjb25zdAogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0
eXBlLCAoIm9iamVjdCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdHlwZSwg
KEFTQ0lJTGl0ZXJhbCgib2JqZWN0IikpKTsKICAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwpAQCAtOTgwLDcgKzk4MCw3IEBAIGJvb2wgQ1NQ
RGlyZWN0aXZlTGlzdDo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29u
dGVudFNlY3VyaXR5UG9sCiAKIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dDaGlsZEZyYW1l
RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0
aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgdHlwZSwgKCJmcmFtZSIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgdHlwZSwgKEFTQ0lJTGl0ZXJhbCgiZnJhbWUiKSkpOwogICAgIGlmICh1cmwuaXNCbGFu
a1VSTCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVz
ID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CkBAIC05OTAsNyArOTkwLDcg
QEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0
IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXQKIAogYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxv
d0ltYWdlRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgdHlwZSwgKCJpbWFnZSIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgdHlwZSwgKEFTQ0lJTGl0ZXJhbCgiaW1hZ2UiKSkpOwogICAgIHJldHVybiBy
ZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpTZW5kUmVwb3J0ID8KICAg
ICAgICAgY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1f
aW1nU3JjLmdldCgpKSwgdXJsLCB0eXBlKSA6CiAgICAgICAgIGNoZWNrU291cmNlKG9wZXJhdGl2
ZURpcmVjdGl2ZShtX2ltZ1NyYy5nZXQoKSksIHVybCk7CkBAIC05OTgsNyArOTk4LDcgQEAgYm9v
bCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmws
IENvbnRlbnRTZWN1cml0eVBvbGkKIAogYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1N0eWxl
RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0
aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgdHlwZSwgKCJzdHlsZSIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgdHlwZSwgKEFTQ0lJTGl0ZXJhbCgic3R5bGUiKSkpOwogICAgIHJldHVybiByZXBvcnRp
bmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpTZW5kUmVwb3J0ID8KICAgICAgICAg
Y2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVT
cmMuZ2V0KCkpLCB1cmwsIHR5cGUpIDoKICAgICAgICAgY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGly
ZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpLCB1cmwpOwpAQCAtMTAwNiw3ICsxMDA2LDcgQEAgYm9v
bCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1N0eWxlRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmws
IENvbnRlbnRTZWN1cml0eVBvbGkKIAogYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0ZvbnRG
cm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRp
bmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCB0eXBlLCAoImZvbnQiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIHR5cGUsIChBU0NJSUxpdGVyYWwoImZvbnQiKSkpOwogICAgIHJldHVybiByZXBvcnRpbmdT
dGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hl
Y2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fZm9udFNyYy5n
ZXQoKSksIHVybCwgdHlwZSkgOgogICAgICAgICBjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3Rp
dmUobV9mb250U3JjLmdldCgpKSwgdXJsKTsKQEAgLTEwMTQsNyArMTAxNCw3IEBAIGJvb2wgQ1NQ
RGlyZWN0aXZlTGlzdDo6YWxsb3dGb250RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRl
bnRTZWN1cml0eVBvbGljCiAKIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dNZWRpYUZyb21T
b3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0
YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIHR5cGUsICgibWVkaWEiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IHR5cGUsIChBU0NJSUxpdGVyYWwoIm1lZGlhIikpKTsKICAgICByZXR1cm4gcmVwb3J0aW5nU3Rh
dHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNr
U291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX21lZGlhU3JjLmdl
dCgpKSwgdXJsLCB0eXBlKSA6CiAgICAgICAgIGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2
ZShtX21lZGlhU3JjLmdldCgpKSwgdXJsKTsKQEAgLTEwMjIsNyArMTAyMiw3IEBAIGJvb2wgQ1NQ
RGlyZWN0aXZlTGlzdDo6YWxsb3dNZWRpYUZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250
ZW50U2VjdXJpdHlQb2xpCiAKIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dDb25uZWN0VG9T
b3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0
YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIHR5cGUsICgiY29ubmVjdCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgdHlwZSwgKEFTQ0lJTGl0ZXJhbCgiY29ubmVjdCIpKSk7CiAgICAgcmV0dXJuIHJlcG9ydGlu
Z1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwogICAgICAgICBj
aGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9jb25uZWN0
U3JjLmdldCgpKSwgdXJsLCB0eXBlKSA6CiAgICAgICAgIGNoZWNrU291cmNlKG9wZXJhdGl2ZURp
cmVjdGl2ZShtX2Nvbm5lY3RTcmMuZ2V0KCkpLCB1cmwpOwpAQCAtMTAzNiw3ICsxMDM2LDcgQEAg
dm9pZCBDU1BEaXJlY3RpdmVMaXN0OjpnYXRoZXJSZXBvcnRVUklzKERPTVN0cmluZ0xpc3QmIGxp
c3QpIGNvbnN0CiAKIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dGb3JtQWN0aW9uKGNvbnN0
IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0
aW5nU3RhdHVzKSBjb25zdAogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0eXBl
LCAoImZvcm0iKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHR5cGUsIChBU0NJ
SUxpdGVyYWwoImZvcm0iKSkpOwogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tTb3VyY2VBbmRSZXBv
cnRWaW9sYXRpb24obV9mb3JtQWN0aW9uLmdldCgpLCB1cmwsIHR5cGUpIDoKICAgICAgICAgY2hl
Y2tTb3VyY2UobV9mb3JtQWN0aW9uLmdldCgpLCB1cmwpOwpAQCAtMTE2NiwyMSArMTE2NiwyMSBA
QCB2b2lkIENTUERpcmVjdGl2ZUxpc3Q6OmFwcGx5U2FuZGJveFBvbGljeShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgc2FuZAogCiB2b2lkIENTUERpcmVjdGl2ZUxpc3Q6OmFkZERp
cmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRlZmF1bHRTcmMsICgiZGVmYXVsdC1zcmMiKSk7
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNjcmlwdFNyYywgKCJzY3JpcHQtc3Jj
IikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBvYmplY3RTcmMsICgib2JqZWN0
LXNyYyIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZnJhbWVTcmMsICgiZnJh
bWUtc3JjIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBpbWdTcmMsICgiaW1n
LXNyYyIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3R5bGVTcmMsICgic3R5
bGUtc3JjIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmb250U3JjLCAoImZv
bnQtc3JjIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBtZWRpYVNyYywgKCJt
ZWRpYS1zcmMiKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbm5lY3RTcmMs
ICgiY29ubmVjdC1zcmMiKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNhbmRi
b3gsICgic2FuZGJveCIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcmVwb3J0
VVJJLCAoInJlcG9ydC11cmkiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRl
ZmF1bHRTcmMsIChBU0NJSUxpdGVyYWwoImRlZmF1bHQtc3JjIikpKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgc2NyaXB0U3JjLCAoQVNDSUlMaXRlcmFsKCJzY3JpcHQtc3JjIikp
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgb2JqZWN0U3JjLCAoQVNDSUlMaXRl
cmFsKCJvYmplY3Qtc3JjIikpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZnJh
bWVTcmMsIChBU0NJSUxpdGVyYWwoImZyYW1lLXNyYyIpKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIGltZ1NyYywgKEFTQ0lJTGl0ZXJhbCgiaW1nLXNyYyIpKSk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHN0eWxlU3JjLCAoQVNDSUlMaXRlcmFsKCJzdHlsZS1z
cmMiKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmb250U3JjLCAoQVNDSUlM
aXRlcmFsKCJmb250LXNyYyIpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG1l
ZGlhU3JjLCAoQVNDSUlMaXRlcmFsKCJtZWRpYS1zcmMiKSkpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBjb25uZWN0U3JjLCAoQVNDSUlMaXRlcmFsKCJjb25uZWN0LXNyYyIpKSk7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNhbmRib3gsIChBU0NJSUxpdGVyYWwo
InNhbmRib3giKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCByZXBvcnRVUkks
IChBU0NJSUxpdGVyYWwoInJlcG9ydC11cmkiKSkpOwogI2lmIEVOQUJMRShDU1BfTkVYVCkKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZm9ybUFjdGlvbiwgKCJmb3JtLWFjdGlvbiIp
KTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcGx1Z2luVHlwZXMsICgicGx1Z2lu
LXR5cGVzIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzY3JpcHROb25jZSwg
KCJzY3JpcHQtbm9uY2UiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZvcm1B
Y3Rpb24sIChBU0NJSUxpdGVyYWwoImZvcm0tYWN0aW9uIikpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgcGx1Z2luVHlwZXMsIChBU0NJSUxpdGVyYWwoInBsdWdpbi10eXBlcyIp
KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNjcmlwdE5vbmNlLCAoQVNDSUlM
aXRlcmFsKCJzY3JpcHQtbm9uY2UiKSkpOwogI2VuZGlmCiAKICAgICBBU1NFUlQoIW5hbWUuaXNF
bXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDhjNzBmNzg1NGM1NTZiOGU5YTUyMjc0MTRk
MjQwY2FmMGVjYWMwOTIuLmI4YjgzNTY5MjYxMDYwZWZhOTk2YTAzMzMyYTJiY2VjOWM4MDRiNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzkyLDYgKzM5Miw3IEBAIHZvaWQgUGFnZTo6c2V0R3Jv
dXBOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKIGNvbnN0IFN0cmluZyYgUGFnZTo6Z3JvdXBOYW1l
KCkgY29uc3QKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbnVsbFN0cmluZywg
KCkpOworICAgIC8vIEZJWE1FOiBXaHkgbm90IGp1c3QgcmV0dXJuIFN0cmluZygpPwogICAgIHJl
dHVybiBtX2dyb3VwID8gbV9ncm91cC0+bmFtZSgpIDogbnVsbFN0cmluZzsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAppbmRleCBkMzk3
YWUyMDE2NGJjOTc3M2QzMGMwOTgwNTAwOTAwMDY2MWNkOWRhLi4zMzNmMWQ4Mjg0MzQ5MzAyMDg2
MjBmN2I3NmMwY2Y2M2MzZGY5YjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
bmltYXRpb24vQW5pbWF0aW9uLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIGJvb2wgQW5pbWF0aW9u
OjphbmltYXRpb25zTWF0Y2goY29uc3QgQW5pbWF0aW9uKiBvLCBib29sIG1hdGNoUGxheVN0YXRl
cykgY29uc3QKIAogY29uc3QgU3RyaW5nJiBBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25OYW1l
KCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaW5pdGlhbFZhbHVlLCAoIm5v
bmUiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGluaXRpYWxWYWx1ZSwgKEFT
Q0lJTGl0ZXJhbCgibm9uZSIpKSk7CiAgICAgcmV0dXJuIGluaXRpYWxWYWx1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVEYXRhYmFz
ZUJhY2tpbmdTdG9yZS9Db29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlL0Nvb2tp
ZURhdGFiYXNlQmFja2luZ1N0b3JlLmNwcAppbmRleCA3ZDM4ZDk5NTM2NzFlOTFmM2MxNDZjODFl
MTg1ZDRkNmYxYTM1MjM4Li44ZDcxZjBkYjVlYjJkOGY3YzdiNDFjMjA1NDY5MmM3MGJlNmFkOWU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZURh
dGFiYXNlQmFja2luZ1N0b3JlL0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0
b3JlL0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlLmNwcApAQCAtMTE2LDggKzExNiw4IEBAIHZv
aWQgQ29va2llRGF0YWJhc2VCYWNraW5nU3RvcmU6OnVwZ3JhZGVUYWJsZUlmTmVlZGVkKGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VGaWVsCiAgICAgICAgIH0KIAogICAgICAgICB3aGlsZSAoc3RhdGVt
ZW50LnN0ZXAoKSA9PSBTUUxSZXN1bHRSb3cpIHsKLSAgICAgICAgICAgIERFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBjcmVhdGlvblRpbWUsICgiY3JlYXRpb25UaW1lIikpOwotICAgICAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHByb3RvY29sLCAoInByb3RvY29sIikpOwor
ICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNyZWF0aW9uVGltZSwgKEFT
Q0lJTGl0ZXJhbCgiY3JlYXRpb25UaW1lIikpKTsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBwcm90b2NvbCwgKEFTQ0lJTGl0ZXJhbCgicHJvdG9jb2wiKSkpOwogICAg
ICAgICAgICAgU3RyaW5nIG5hbWUgPSBzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKTsKICAgICAg
ICAgICAgIGlmIChuYW1lID09IGNyZWF0aW9uVGltZSkKICAgICAgICAgICAgICAgICBjcmVhdGlv
blRpbWVFeGlzdHMgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCmluZGV4IDNiYmIyMzE4
YjIxYjY0NzJjM2RjYTVkZTVkZWEyODZkMTI4ODQ4ZTYuLjA2ODhkYTg0N2RmMDk4N2M2MjE3NTFl
ZDg5NjgwMWEzOTg3Y2RiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAKQEAgLTEyMyw3ICsx
MjMsNyBAQCBmbG9hdCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmRlZmF1bHRGb250U2l6ZSA9IDE2
OwogLy8gc2l6ZXMgKGUuZy4gMTVweCkuIFNvIHdlIGp1c3QgdXNlIEFyaWFsIGZvciBub3cuCiBj
b25zdCBTdHJpbmcmIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6ZGVmYXVsdEdVSUZvbnQoKQogewot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmb250RmFjZSwgKCJBcmlhbCIpKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZm9udEZhY2UsIChBU0NJSUxpdGVyYWwoIkFy
aWFsIikpKTsKICAgICByZXR1cm4gZm9udEZhY2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZFV0aWxpdGllc0Nocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZFV0aWxpdGllc0Nocm9t
aXVtLmNwcAppbmRleCBlMmVjOWYxNWU0N2Y0YmVhZGUxYTc1NTc2ZjE2YTZkNTRlMDI3ZGY4Li4w
NDk0MGZiYmNhZTMwMGUxYmY0OThlYTJiYmNmMDg3OTZiMzY5NWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRVdGlsaXRpZXNDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkVXRpbGl0
aWVzQ2hyb21pdW0uY3BwCkBAIC01MCw3ICs1MCw3IEBAIFdlYktpdDo6V2ViQ2xpcGJvYXJkOjpC
dWZmZXIgY3VycmVudFBhc3RlYm9hcmRCdWZmZXIoKQogI2lmIE9TKFdJTkRPV1MpCiB2b2lkIHJl
cGxhY2VOZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhTdHJpbmcmIHN0cikKIHsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgd2luZG93c05ld2xpbmUsICgiXHJcbiIpKTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgd2luZG93c05ld2xpbmUsIChBU0NJSUxp
dGVyYWwoIlxyXG4iKSkpOwogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHN0ci5sZW5ndGgoKTsgKytpbmRleCkgewogICAgICAg
ICBpZiAoc3RyW2luZGV4XSAhPSAnXG4nIHx8IChpbmRleCA+IDAgJiYgc3RyW2luZGV4IC0gMV0g
PT0gJ1xyJykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVy
VGhlbWVFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZs
LmNwcAppbmRleCAzNWRkNDZlZWQzYmI2MzI0OWM1Y2UzY2U0MTIwMmJmOGI3ZTViYmRkLi45OGM4
MWMyOWEzOTdjNDA5OTI0OWM2YmI1NTE0NzEyOGUwYWEzZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTEwNDcsNyArMTA0Nyw3IEBA
IHZvaWQgUmVuZGVyVGhlbWVFZmw6OnN5c3RlbUZvbnQoaW50IHByb3BJZCwgRm9udERlc2NyaXB0
aW9uJiBmb250RGVzY3JpcHRpb24pIGNvCiB7CiAgICAgLy8gSXQgd2FzIGNhbGxlZCBieSBSZW5k
ZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZCB0byByZW5kZXIgYWx0ZXJuYXRpdmUgc3Ry
aW5nLgogICAgIC8vIFRvIGF2b2lkIGNhaXJvX2Vycm9yIHdoaWxlIHJlbmRlcmluZywgZm9udERl
c2NyaXB0aW9uIHNob3VsZCBiZSBwYXNzZWQuCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIGZvbnRGYWNlLCAoIlNhbnMiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGZvbnRGYWNlLCAoQVNDSUlMaXRlcmFsKCJTYW5zIikpKTsKICAgICBmbG9hdCBmb250U2l6ZSA9
IGRlZmF1bHRGb250U2l6ZTsKIAogICAgIGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpLnNl
dEZhbWlseShmb250RmFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJv
Z3JhbS5jcHAKaW5kZXggMWVhYmQ3ZWNkMjM0MWI3ZmU1YjdlNWQ0OTdjMTI4YmQ4YmJjNjM2Ni4u
MTA2ZjM0ZjM4OTdiMWQyYjViYWQxMmZmZDc4YWQ1OWJlNDAwM2Y4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxl
ZFByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNkZWZpbmUgU0hBREVSKFNyYykgKCNTcmMpCisjZGVmaW5l
IFNIQURFUihTcmMpIChBU0NJSUxpdGVyYWwoI1NyYykpCiAKIFN0cmluZyBDdXN0b21GaWx0ZXJD
b21waWxlZFByb2dyYW06OmRlZmF1bHRWZXJ0ZXhTaGFkZXJTdHJpbmcoKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApp
bmRleCA2MWUzNjIxYjUzZGM0OTU4NjUxM2FiNzQxNDRkZjVlNjJiYTFjMTYwLi5hMTY4MTc5Mjdk
MTkxNTJiNzg3NTc0NzNmYmU4ZWMwZDExYmM4ODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApAQCAtMjk5LDcgKzI5
OSw3IEBAIHZvaWQgbWFya3VwVG9DRkhUTUwoY29uc3QgU3RyaW5nJiBtYXJrdXAsIGNvbnN0IFN0
cmluZyYgc3JjVVJMLCBWZWN0b3I8Y2hhcj4mIHJlCiAKIHZvaWQgcmVwbGFjZU5ld2xpbmVzV2l0
aFdpbmRvd3NTdHlsZU5ld2xpbmVzKFN0cmluZyYgc3RyKQogewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCB3aW5kb3dzTmV3bGluZSwgKCJcclxuIikpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCB3aW5kb3dzTmV3bGluZSwgKEFTQ0lJTGl0ZXJhbCgiXHJcbiIpKSk7
CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgc3RyLmxlbmd0aCgpOyArK2luZGV4KSB7CiAgICAgICAgIGlmIChzdHJbaW5kZXhd
ICE9ICdcbicgfHwgKGluZGV4ID4gMCAmJiBzdHJbaW5kZXggLSAxXSA9PSAnXHInKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuY3Bw
CmluZGV4IDBhNThhZjYwNWQ5NDRjNDU4MDhhNzk0ZWFlZTEzMzQyMzgwNGNjZmQuLmM3MGJkZmJl
ODA1MjVlMDZhNDUyNmM1N2JjZjMyMjgzNzEwZmVjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmNwcApAQCAtODEsNyArODEs
NyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgZGVmYXVsdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbldp
ZHRoID0gMTg7CiAvLyBzaXplcyAoZS5nLiAxNXB4KS4gU28sIGZvciBub3cgd2UganVzdCB1c2Ug
QXJpYWwuCiBjb25zdCBTdHJpbmcmIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpkZWZhdWx0R1VJ
Rm9udCgpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZvbnRGYWNlLCAoIkFy
aWFsIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmb250RmFjZSwgKEFTQ0lJ
TGl0ZXJhbCgiQXJpYWwiKSkpOwogICAgIHJldHVybiBmb250RmFjZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmdsZS5jcHAKaW5kZXggZTI3MjE2MmQzNzg0MmY4MmZlYTQzZmM5OTEwY2ZiZjhjMTdmNGQz
NS4uOTc4NzRkODc2NDE1MjQ5MWEzZjUzZTM5OGQ1NDBhYTcxZGFiOGQzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5nbGUuY3BwCkBAIC0xMTQsMTUgKzExNCwxNSBAQCBTdHJpbmcgU1ZHQW5nbGU6OnZhbHVl
QXNTdHJpbmcoKSBjb25zdAogewogICAgIHN3aXRjaCAobV91bml0VHlwZSkgewogICAgIGNhc2Ug
U1ZHX0FOR0xFVFlQRV9ERUc6IHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGRlZ1N0cmluZywgKCJkZWciKSk7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBkZWdTdHJpbmcsIChBU0NJSUxpdGVyYWwoImRlZyIpKSk7CiAgICAgICAgIHJldHVybiBTdHJp
bmc6Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykgKyBkZWdTdHJpbmc7CiAgICAgfQog
ICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9SQUQ6IHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIHJhZFN0cmluZywgKCJyYWQiKSk7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCByYWRTdHJpbmcsIChBU0NJSUxpdGVyYWwoInJhZCIpKSk7CiAgICAgICAgIHJl
dHVybiBTdHJpbmc6Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykgKyByYWRTdHJpbmc7
CiAgICAgfQogICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9HUkFEOiB7Ci0gICAgICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBncmFkU3RyaW5nLCAoImdyYWQiKSk7CisgICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBncmFkU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJncmFkIikp
KTsKICAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRz
KSArIGdyYWRTdHJpbmc7CiAgICAgfQogICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklF
RDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKaW5kZXggNzM5ZTQ4YzkxOGVlMmZlYWYw
N2RjMDYxNDM1YzRkZjg3M2ZmY2M3MC4uZTEzNjM2NmU4MDEzZjUxZDFiYTM0ZDk4YzFhY2IyZGFk
YTFlYzkxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKQEAgLTEzNywyNyArMTM3
LDI3IEBAIGNvbnN0IFN0cmluZyYgU1ZHVHJhbnNmb3JtOjp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9y
UGFyc2luZyhTVkdUcmFuc2Zvcm1UeXBlIHR5cGUpCiAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1VO
S05PV046CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIGNhc2UgU1ZHX1RSQU5T
Rk9STV9NQVRSSVg6IHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG1hdHJp
eFN0cmluZywgKCJtYXRyaXgoIikpOworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgbWF0cml4U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJtYXRyaXgoIikpKTsKICAgICAgICAgcmV0
dXJuIG1hdHJpeFN0cmluZzsKICAgICB9CiAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1RSQU5TTEFU
RTogewotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdHJhbnNsYXRlU3RyaW5n
LCAoInRyYW5zbGF0ZSgiKSk7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0
cmFuc2xhdGVTdHJpbmcsIChBU0NJSUxpdGVyYWwoInRyYW5zbGF0ZSgiKSkpOwogICAgICAgICBy
ZXR1cm4gdHJhbnNsYXRlU3RyaW5nOwogICAgIH0KICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0NB
TEU6IHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNjYWxlU3RyaW5nLCAo
InNjYWxlKCIpKTsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNjYWxlU3Ry
aW5nLCAoQVNDSUlMaXRlcmFsKCJzY2FsZSgiKSkpOwogICAgICAgICByZXR1cm4gc2NhbGVTdHJp
bmc7CiAgICAgfQogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9ST1RBVEU6IHsKLSAgICAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHJvdGF0ZVN0cmluZywgKCJyb3RhdGUoIikpOworICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcm90YXRlU3RyaW5nLCAoQVNDSUlMaXRl
cmFsKCJyb3RhdGUoIikpKTsKICAgICAgICAgcmV0dXJuIHJvdGF0ZVN0cmluZzsKICAgICB9ICAg
IAogICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9TS0VXWDogewotICAgICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgc2tld1hTdHJpbmcsICgic2tld1goIikpOworICAgICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgc2tld1hTdHJpbmcsIChBU0NJSUxpdGVyYWwoInNrZXdYKCIp
KSk7CiAgICAgICAgIHJldHVybiBza2V3WFN0cmluZzsKICAgICB9CiAgICAgY2FzZSBTVkdfVFJB
TlNGT1JNX1NLRVdZOiB7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBza2V3
WVN0cmluZywgKCJza2V3WSgiKSk7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBza2V3WVN0cmluZywgKEFTQ0lJTGl0ZXJhbCgic2tld1koIikpKTsKICAgICAgICAgcmV0dXJu
IHNrZXdZU3RyaW5nOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TFRva2VuaXplci5jcHAKaW5kZXggOWU2MmU3NDNjZTc3YzE5MGEzN2IwYzNkZDg1NGE3MTNmYTI1
OTQ4YS4uYmIzZTY4Y2Q4YmVlMzg1NTljNTdjYTViYmM5ZjQ4OTA0YTZlOGQ2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmNwcApAQCAtNDgyLDcgKzQ4Miw3IEBA
IGJvb2wgWE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIFhN
TFRva2VuJiB0b2tlbikKICAgICBFTkRfU1RBVEUoKQogCiAgICAgWE1MX0JFR0lOX1NUQVRFKFBy
b2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldFN0YXJ0U3RhdGUpIHsKLSAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIHhtbFN0cmluZywgKCJ4bWwiKSk7CisgICAgICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCB4bWxTdHJpbmcsIChBU0NJSUxpdGVyYWwoInhtbCIpKSk7CiAg
ICAgICAgIC8vIEZJWE1FOiB0aGlzIHByb2JhYmx5IHNob3VsZG4ndCBiZSBjYXNlLWluc2Vuc2l0
aXZlLCBidXQgSSBkb24ndCBrbm93IGlmIHBlb3BsZSB0cnkgY2FwaXRhbGl6aW5nIGl0IGV2ZXIu
CiAgICAgICAgIGlmIChjYyA9PSAneCcgfHwgY2MgPT0gJ1gnKSB7CiAgICAgICAgICAgICBTZWdt
ZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkSWdu
b3JpbmdDYXNlKHhtbFN0cmluZyk7CkBAIC01MjMsNyArNTIzLDcgQEAgYm9vbCBYTUxUb2tlbml6
ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgWE1MVG9rZW4mIHRva2VuKQog
ICAgIEVORF9TVEFURSgpCiAKICAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVjbEJlZm9yZVZlcnNp
b25OYW1lU3RhdGUpIHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHZlcnNp
b25TdHJpbmcsICgidmVyc2lvbiIpKTsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIHZlcnNpb25TdHJpbmcsIChBU0NJSUxpdGVyYWwoInZlcnNpb24iKSkpOwogICAgICAgICBp
ZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKICAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RP
KFhNTERlY2xCZWZvcmVWZXJzaW9uTmFtZVN0YXRlKTsKICAgICAgICAgZWxzZSB7CkBAIC01NDIs
NyArNTQyLDcgQEAgYm9vbCBYTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcm
IHNvdXJjZSwgWE1MVG9rZW4mIHRva2VuKQogICAgIEVRX0JFRk9SRV9WQUxVRV9TVEFURVMoWE1M
RGVjbEFmdGVyVmVyc2lvbk5hbWVTdGF0ZSwgWE1MRGVjbEJlZm9yZVZlcnNpb25WYWx1ZVN0YXRl
LCBYTUxEZWNsQmVmb3JlVmVyc2lvbk9uZVBvaW50U3RhdGUpCiAKICAgICBYTUxfQkVHSU5fU1RB
VEUoWE1MRGVjbEJlZm9yZVZlcnNpb25PbmVQb2ludFN0YXRlKSB7Ci0gICAgICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBvbmVQb2ludFN0cmluZywgKCIxLiIpKTsKKyAgICAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG9uZVBvaW50U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCIx
LiIpKSk7CiAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9
IHNvdXJjZS5sb29rQWhlYWQob25lUG9pbnRTdHJpbmcpOwogICAgICAgICBpZiAocmVzdWx0ID09
IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNl
QW5kQVNTRVJUKCcxJyk7CkBAIC01ODMsOCArNTgzLDggQEAgYm9vbCBYTUxUb2tlbml6ZXI6Om5l
eHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgWE1MVG9rZW4mIHRva2VuKQogICAgIEVO
RF9TVEFURSgpCiAKICAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVjbEJlZm9yZUVuY29kaW5nTmFt
ZVN0YXRlKSB7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBlbmNvZGluZ1N0
cmluZywgKCJlbmNvZGluZyIpKTsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IHN0YW5kYWxvbmVTdHJpbmcsICgic3RhbmRhbG9uZSIpKTsKKyAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIGVuY29kaW5nU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJlbmNvZGluZyIp
KSk7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzdGFuZGFsb25lU3RyaW5n
LCAoQVNDSUlMaXRlcmFsKCJzdGFuZGFsb25lIikpKTsKICAgICAgICAgaWYgKGlzVG9rZW5pemVy
V2hpdGVzcGFjZShjYykpCiAgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQmVmb3Jl
RW5jb2RpbmdOYW1lU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnZScpIHsKQEAgLTY0
Niw3ICs2NDYsNyBAQCBib29sIFhNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmlu
ZyYgc291cmNlLCBYTUxUb2tlbiYgdG9rZW4pCiAgICAgRU5EX1NUQVRFKCkKIAogICAgIFhNTF9C
RUdJTl9TVEFURShYTUxEZWNsQmVmb3JlU3RhbmRhbG9uZU5hbWVTdGF0ZSkgewotICAgICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3RhbmRhbG9uZVN0cmluZywgKCJzdGFuZGFsb25l
IikpOworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3RhbmRhbG9uZVN0cmlu
ZywgKEFTQ0lJTGl0ZXJhbCgic3RhbmRhbG9uZSIpKSk7CiAgICAgICAgIGlmIChpc1Rva2VuaXpl
cldoaXRlc3BhY2UoY2MpKQogICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbEJlZm9y
ZVN0YW5kYWxvbmVOYW1lU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAncycpIHsKQEAg
LTY2Niw4ICs2NjYsOCBAQCBib29sIFhNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0
cmluZyYgc291cmNlLCBYTUxUb2tlbiYgdG9rZW4pCiAgICAgRVFfQkVGT1JFX1ZBTFVFX1NUQVRF
UyhYTUxEZWNsQWZ0ZXJTdGFuZGFsb25lTmFtZVN0YXRlLCBYTUxEZWNsQmVmb3JlU3RhbmRhbG9u
ZVZhbHVlU3RhdGUsIFhNTERlY2xTdGFuZGFsb25lVmFsdWVRdW90ZWRTdGF0ZSkKIAogICAgIFhN
TF9CRUdJTl9TVEFURShYTUxEZWNsU3RhbmRhbG9uZVZhbHVlUXVvdGVkU3RhdGUpIHsKLSAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHllc1N0cmluZywgKCJ5ZXNcIiIpKTsKLSAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5vU3RyaW5nLCAoIm5vXCIiKSk7Cisg
ICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB5ZXNTdHJpbmcsIChBU0NJSUxpdGVy
YWwoInllc1wiIikpKTsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5vU3Ry
aW5nLCAoQVNDSUlMaXRlcmFsKCJub1wiIikpKTsKICAgICAgICAgaWYgKGNjID09ICd5Jykgewog
ICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291
cmNlLmxvb2tBaGVhZCh5ZXNTdHJpbmcpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdt
ZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CkBAIC03NjUsOSArNzY1LDkgQEAgYm9vbCBYTUxUb2tl
bml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgWE1MVG9rZW4mIHRva2Vu
KQogICAgIEVORF9TVEFURSgpCiAKICAgICBYTUxfQkVHSU5fU1RBVEUoTWFya3VwRGVjbGFyYXRp
b25PcGVuU3RhdGUpIHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRhc2hE
YXNoU3RyaW5nLCAoIi0tIikpOwotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
ZG9jdHlwZVN0cmluZywgKCJkb2N0eXBlIikpOwotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgY2RhdGFTdHJpbmcsICgiW0NEQVRBWyIpKTsKKyAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIGRhc2hEYXNoU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCItLSIpKSk7Cisg
ICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBkb2N0eXBlU3RyaW5nLCAoQVNDSUlM
aXRlcmFsKCJkb2N0eXBlIikpKTsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGNkYXRhU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJbQ0RBVEFbIikpKTsKICAgICAgICAgaWYgKGNj
ID09ICctJykgewogICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQg
cmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZChkYXNoRGFzaFN0cmluZyk7CiAgICAgICAgICAgICBp
ZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKQEAgLTg3NCw4ICs4NzQs
OCBAQCBib29sIFhNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNl
LCBYTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAg
ICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwogICAgICAgICB9Ci0gICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBwdWJsaWNTdHJpbmcsICgicHVibGljIikpOwotICAgICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3lzdGVtU3RyaW5nLCAoInN5c3RlbSIpKTsK
KyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHB1YmxpY1N0cmluZywgKEFTQ0lJ
TGl0ZXJhbCgicHVibGljIikpKTsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IHN5c3RlbVN0cmluZywgKEFTQ0lJTGl0ZXJhbCgic3lzdGVtIikpKTsKICAgICAgICAgaWYgKGNj
ID09ICdQJyB8fCBjYyA9PSAncCcpIHsKICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9v
a0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2UocHVibGlj
U3RyaW5nKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRN
YXRjaCkgewpAQCAtMTAyMSw3ICsxMDIxLDcgQEAgYm9vbCBYTUxUb2tlbml6ZXI6Om5leHRUb2tl
bihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgWE1MVG9rZW4mIHRva2VuKQogICAgIEVORF9TVEFU
RSgpCiAKICAgICBYTUxfQkVHSU5fU1RBVEUoQ0RBVEFTZWN0aW9uU3RhdGUpIHsKLSAgICAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNsb3NlU3RyaW5nLCAoIl1dPiIpKTsKKyAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNsb3NlU3RyaW5nLCAoQVNDSUlMaXRlcmFs
KCJdXT4iKSkpOwogICAgICAgICBpZiAoY2MgPT0gJ10nKSB7CiAgICAgICAgICAgICBTZWdtZW50
ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKGNsb3Nl
U3RyaW5nKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRN
YXRjaCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUcmVlQnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRyZWVCdWlsZGVyLmNwcApp
bmRleCA0Y2QzYWM5NzAwNjBhMTczYjk4OTgzNWYxZDAyNjU0MmIzNzgyNzdlLi43ZGQ4OTAxOTRm
ZGI5ZGVjNTRkZmQ5ZjVmZmFhMGJmZjJiYWQ5ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTFRyZWVCdWlsZGVyLmNwcApAQCAtMzM0LDExICszMzQsMTEgQEAgdm9pZCBYTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc1hNTEVudGl0eShjb25zdCBBdG9taWNYTUxUb2tlbiYgdG9rZW4p
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGd0LCAoImd0IikpOwogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBsdCwgKCJsdCIpKTsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcXVvdCwgKCJxdW90IikpOwotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBhbXBTLCAoIiYiKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIGFwb3NTLCAoIiciKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIGd0UywgKCI+IikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBsdFMsICgi
PCIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcXVvdFMsICgiXCIiKSk7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFtcFMsIChBU0NJSUxpdGVyYWwoIiYiKSkp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBhcG9zUywgKEFTQ0lJTGl0ZXJhbCgi
JyIpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGd0UywgKEFTQ0lJTGl0ZXJh
bCgiPiIpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGx0UywgKEFTQ0lJTGl0
ZXJhbCgiPCIpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHF1b3RTLCAoQVND
SUlMaXRlcmFsKCJcIiIpKSk7CiAKICAgICBpZiAodG9rZW4ubmFtZSgpID09IGFtcCkKICAgICAg
ICAgYXBwZW5kVG9UZXh0KGFtcFMuY2hhcmFjdGVycygpLCAxKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>