<?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>44650</bug_id>
          
          <creation_ts>2010-08-25 16:57:17 -0700</creation_ts>
          <short_desc>Support element() CSS image type</short_desc>
          <delta_ts>2025-05-16 00:29:14 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Anish">bhayani</assigned_to>
          <cc>50167214</cc>
    
    <cc>709922234</cc>
    
    <cc>abarth</cc>
    
    <cc>abecsi</cc>
    
    <cc>achicu</cc>
    
    <cc>benjamin</cc>
    
    <cc>bhayani</cc>
    
    <cc>bugmail</cc>
    
    <cc>cdn</cc>
    
    <cc>cevans</cc>
    
    <cc>chrisjshull</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>david.mulder</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>doyer.guyllaume</cc>
    
    <cc>dtrebbien</cc>
    
    <cc>eoconnor</cc>
    
    <cc>ericbidelman</cc>
    
    <cc>firefoxic.dev</cc>
    
    <cc>ginesehen</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>huijing</cc>
    
    <cc>hyatt</cc>
    
    <cc>itsbusticated</cc>
    
    <cc>ivan.enderlin</cc>
    
    <cc>james0x57</cc>
    
    <cc>jamesr</cc>
    
    <cc>j</cc>
    
    <cc>macpherson</cc>
    
    <cc>maggotfish</cc>
    
    <cc>marcoos+bwo</cc>
    
    <cc>marsjaninzmarsa</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>me</cc>
    
    <cc>menard</cc>
    
    <cc>m.goleb+bugzilla</cc>
    
    <cc>mrpeteb+webkit</cc>
    
    <cc>ndonets</cc>
    
    <cc>negenentwintig</cc>
    
    <cc>noam</cc>
    
    <cc>paulirish</cc>
    
    <cc>peter</cc>
    
    <cc>rakuco</cc>
    
    <cc>rik</cc>
    
    <cc>sam</cc>
    
    <cc>sebastianzartner</cc>
    
    <cc>seddon.ryan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>syoichi</cc>
    
    <cc>tony</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>woodlxf00</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>269611</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-08-25 16:57:17 -0700</bug_when>
    <thetext>See http://hacks.mozilla.org/2010/08/mozelement/ for more info. Looks awesome IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456874</commentid>
    <comment_count>1</comment_count>
    <who name="Anthony Ricaud">rik</who>
    <bug_when>2011-08-25 08:37:50 -0700</bug_when>
    <thetext>FWIW, this has been added to a draft spec : http://dev.w3.org/csswg/css3-images/#element-reference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474372</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-27 16:58:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/10197315&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492560</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-28 11:35:42 -0700</bug_when>
    <thetext>Adam, can you think of any security issues in the CSS element() function? Could you add some notes here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492574</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-28 11:59:06 -0700</bug_when>
    <thetext>&gt; Adam, can you think of any security issues in the CSS element() function?

Not of the top of my head.  Did you have something in mind?  I can ask the security team to do a more thorough security review if you&apos;d like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492580</commentid>
    <comment_count>5</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-10-28 12:04:40 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Adam, can you think of any security issues in the CSS element() function?
&gt; 
&gt; Not of the top of my head.  Did you have something in mind?  I can ask the security team to do a more thorough security review if you&apos;d like.

Lets do that. I&apos;d really like to see us implement this and it would be good to catch and security issues early.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492606</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-28 12:34:10 -0700</bug_when>
    <thetext>That could be good. We&apos;re trying to look at the use cases of this vs. canvas.drawElement(); there&apos;s some overlap, so maybe this is preferable in some cases for having fewer security issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519191</commentid>
    <comment_count>7</comment_count>
    <who name="David Mulder">david.mulder</who>
    <bug_when>2011-12-12 07:48:00 -0800</bug_when>
    <thetext>As I was looking into support in other browsers I came across this ticket and thought I would share a demo which I made and supports Simon Frasers suggestion: https://developer.mozilla.org/en-US/demos/detail/aero-windows

Secondly a more realistic use case which would not be possible with the canvas.drawElement is for example displaying a slide from a slideshow which contains images form different domains (quite common for online slideshow applications).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546716</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pearson">j</who>
    <bug_when>2012-01-31 18:34:31 -0800</bug_when>
    <thetext>I&apos;ve been quietly riding this bug for a few months, so I thought I&apos;d contribute why this would be huge for our project (the open-source ebook library, Monocle).

Here&apos;s a (Flipboard-inspired) example that works in Firefox 11:

   http://monocle.inventivelabs.com.au/static/scripts/src/test/experimental/moz-element-flipper/index.html


Our general use case for element(): we display &quot;pages&quot; as overlapping frames. Right now we load the content into multiple iframes — this is suboptimal for large/complex content, common in ebooks. element() would let us load the content just once into an &quot;origin&quot; iframe, and echo it for visual effects. An example of our current approach: http://monocle.inventivelabs.com.au/static/scripts/src/test/showcase/01-velveteen/index.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548643</commentid>
    <comment_count>9</comment_count>
    <who name="Pete Boere">mrpeteb+webkit</who>
    <bug_when>2012-02-03 04:59:04 -0800</bug_when>
    <thetext>Another use case is to create watermark backgrounds (view dabblet in firefox):

http://dabblet.com/gist/1729950</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641679</commentid>
    <comment_count>10</comment_count>
    <who name="bop">negenentwintig</who>
    <bug_when>2012-06-05 10:21:34 -0700</bug_when>
    <thetext>In my humble opinion, it&apos;s more important that mask-image accepts the element() image type than background-image. I&apos;d love to use text as a mask for an image (=text with a pattern).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715101</commentid>
    <comment_count>11</comment_count>
      <attachid>162898</attachid>
    <who name="Anish">bhayani</who>
    <bug_when>2012-09-07 16:23:44 -0700</bug_when>
    <thetext>Created attachment 162898
This sets the foundation for -webkit-element by adding it to the grammar, parser, and values

first step for bug (parsing and grammar), not complete solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715149</commentid>
    <comment_count>12</comment_count>
      <attachid>162898</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-07 17:07:28 -0700</bug_when>
    <thetext>Comment on attachment 162898
This sets the foundation for -webkit-element by adding it to the grammar, parser, and values

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

I just skimmed the patch.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Updated the grammar to notice IDSEL for term -webkit-element(#elementid). CSSParser

Please include a link to the spec.

&gt; Source/WebCore/ChangeLog:23
&gt; +        * css/CSSGrammar.y:
&gt; +        * css/CSSParser.cpp:
&gt; +        (WebCore::CSSParser::parseContent):
&gt; +        (WebCore::CSSParser::parseFillImage):
&gt; +        (WebCore):
&gt; +        (WebCore::CSSParser::parseWebKitElement):
&gt; +        * css/CSSParser.h:

Please describe your changes in this section of the ChangeLog.

&gt; Source/WTF/wtf/Platform.h:1054
&gt; +#if PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(QT) || (PLATFORM(WIN) &amp;&amp; !OS(WINCE) &amp;&amp; !PLATFORM(WIN_CAIRO))
&gt; +#define ENABLE_CSS_WEBKIT_ELEMENT 1

How did you pick which platforms to enable this on?  I suspect everyone will want it disabled until it&apos;s a bit more complete.
Also, if I can bikeshed over the name, I would call it CSS_ELEMENT.

&gt; Source/WebCore/css/CSSGrammar.y:1461
&gt; +  | IDSEL maybe_space {
&gt; +#if ENABLE(CSS_WEBKIT_ELEMENT)
&gt; +      $$.id = 0;
&gt; +      $$.unit = CSSPrimitiveValue::CSS_WEBKIT_ELEM;

Can you explain this change to the grammar? Would be good to note in the ChangeLog.

&gt; Source/WebCore/css/CSSParser.cpp:7253
&gt; +    if (arg-&gt;unit != CSSPrimitiveValue::CSS_WEBKIT_ELEM &amp;&amp; arg-&gt;unit != CSSPrimitiveValue::CSS_PARSER_HEXCOLOR)

Why CSS_PARSER_HEXCOLOR?

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:1144
&gt; +        case CSS_WEBKIT_ELEM:
&gt; +            text = &quot;#&quot; + String(m_value.string);

Shouldn&apos;t this include the -webkit-element()?

&gt; Source/WebCore/css/CSSPrimitiveValue.h:137
&gt; +        CSS_WEBKIT_ELEM = 116,

We normally avoid abbreviations. I would name this CSS_ELEMENT or CSS_ELEMENT_FUNCTION.

&gt; Source/WebCore/css/CSSPrimitiveValue.h:189
&gt; +    bool isWebKitElement() const { return primitiveType() == CSS_WEBKIT_ELEM; }

Nit: isElement.  The reason for dropping WebKit is that at some point we would drop the vendor prefix and it would just be element.

&gt; Source/WebCore/css/WebKitCSSElementValue.cpp:42
&gt; +    {
&gt; +    }

Please left align.

&gt; Source/WebCore/css/WebKitCSSElementValue.cpp:47
&gt; +    {
&gt; +    }

Please left align.

&gt; Source/WebCore/css/WebKitCSSElementValue.cpp:52
&gt; +String WebKitCSSElementValue::customCssText() const
&gt; +    {
&gt; +        return &quot;-webkit-element(&quot; + CSSValueList::customCssText() + &quot;)&quot;;
&gt; +    }

Remove extra indention.

&gt; Source/WebCore/css/WebKitCSSElementValue.cpp:57
&gt; +PassRefPtr&lt;WebKitCSSElementValue&gt; WebKitCSSElementValue::cloneForCSSOM() const
&gt; +    {
&gt; +        return adoptRef(new WebKitCSSElementValue(*this));
&gt; +    }

Ditto.

&gt; Source/WebCore/css/WebKitCSSElementValue.cpp:60
&gt; +void WebKitCSSElementValue::reportDescendantMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
&gt; +    {

Ditto.

&gt; Source/WebCore/css/WebKitCSSElementValue.h:45
&gt; +    public:
&gt; +        static PassRefPtr&lt;WebKitCSSElementValue&gt; create()
&gt; +        {
&gt; +            return adoptRef(new WebKitCSSElementValue());
&gt; +        }

Indent is wrong. Please see the coding style guide: http://www.webkit.org/coding/coding-style.html

&gt; Source/WebCore/css/WebKitCSSElementValue.h:55
&gt; +        WebKitCSSElementValue(const WebKitCSSElementValue&amp; cloneFrom);

Nit: explicit

&gt; LayoutTests/ChangeLog:22
&gt; +        * fast/css/webkit-element-parsing-expected.txt: Added.
&gt; +        * fast/css/webkit-element-parsing-invalid-expected.txt: Added.
&gt; +        * fast/css/webkit-element-parsing-invalid.html: Added.
&gt; +        * fast/css/webkit-element-parsing.html: Added.

Nit: I would put these in a subdirectory so it&apos;s easy for ports that disable to feature to skip the whole directory.
Speaking of which, since you didn&apos;t enable on Chromium, I think you need to update platform/chromium/TestExpectations

&gt; LayoutTests/fast/css/script-tests/webkit-element-parsing-invalid.js:3
&gt; +description(&quot;Test the parsing of the -webkit-element function.&quot;);
&gt; +
&gt; +// These have to be global for the test helpers to see them.

You could inline the script-tests .js files into the html file.  There&apos;s no real benefit to having separate files for them.

&gt; LayoutTests/fast/css/script-tests/webkit-element-parsing.js:54
&gt; +                &quot;#elementA&quot;);

Shouldn&apos;t the expected text be -webkit-element(#elementA)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716357</commentid>
    <comment_count>13</comment_count>
      <attachid>163180</attachid>
    <who name="Anish">bhayani</who>
    <bug_when>2012-09-10 12:23:02 -0700</bug_when>
    <thetext>Created attachment 163180
CSS Element grammar and parsing patch. Not full implementation.

incorporated Tony Chang&apos;s review suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716488</commentid>
    <comment_count>14</comment_count>
      <attachid>163180</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-10 14:00:06 -0700</bug_when>
    <thetext>Comment on attachment 163180
CSS Element grammar and parsing patch. Not full implementation.

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

Some comments + this looks a little light on testing.

&gt; Source/WTF/ChangeLog:3
&gt; +        Support parsing -webkit-element() CSS image typeÂ with ENABLE_CSS_ELEMENT

&quot;typeÂ&quot;

&gt; Source/WTF/ChangeLog:5
&gt; +        Since only grammar and parsing is implemented, only enables on MAC Plaform
&gt; +        and tests are skipped on others.

Isn&apos;t this the description? This ChangeLog looks a bit messed up.

I don&apos;t understand why &quot;only grammar and parsing is implemented&quot; =&gt; &quot;only enables on MAC Plaform&quot;.
You can have good reason to only enable this on Mac, but I don&apos;t get the relation with grammar &amp;&amp; parsing.

&gt; Source/WebCore/ChangeLog:9
&gt; +        saves the string (#elementID) as CSS_ELEMENT_FUNCTION  CSSParser

&quot;CSS_ELEMENT_FUNCTION  CSSParser&quot; -&gt; Missing period?

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:21077
&gt; +				F5493E6715EDA7AA0097FE55 /* CSSElementValue.cpp */,
&gt; +				F5493E6815EDA7AA0097FE55 /* CSSElementValue.h */,
&gt;  				FBD6AF8415EF21D4008B7110 /* BasicShapeFunctions.cpp */,

The file section should be sorted alphabetically by filename.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:25541
&gt;  				31B801BB15EC58C700CE643D /* LayoutTypesInlineMethods.h in Headers */,
&gt; +				F5493E6A15EDA7AA0097FE55 /* CSSElementValue.h in Headers */,
&gt;  				FBD6AF8815EF25C9008B7110 /* CSSBasicShapes.h in Headers */,

The build section should be sorted alphabetically by filename.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:28634
&gt;  				52CCA9E915E3F64C0053C77F /* DOMDOMNamedFlowCollection.mm in Sources */,
&gt; +				F5493E6915EDA7AA0097FE55 /* CSSElementValue.cpp in Sources */,
&gt;  				FBD6AF8915EF25DB008B7110 /* BasicShapeFunctions.cpp in Sources */,

Ditto.

&gt; Source/WebCore/css/CSSElementValue.h:55
&gt; +    CSSElementValue(const CSSElementValue&amp; cloneFrom);

Not sure what this is fore. Did you mean to use WTF_MAKE_NONCOPYABLE?

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:1145
&gt; +            text = &quot;#&quot; + String(m_value.string);

&quot;#&quot; -&gt; &apos;#&apos;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716578</commentid>
    <comment_count>15</comment_count>
    <who name="Anish">bhayani</who>
    <bug_when>2012-09-10 15:14:52 -0700</bug_when>
    <thetext>CSSGrammar.y:
The &apos;#&apos; creates an IDSEL in CSSParser.cpp. IDSEL is parsed as a selector grammar in the file. For there to be a way to extract the value inside the function, I needed to create an IDSEL rule under term. Else it would fail the grammar by going into selector. Adding IDSEL catches the case where there is a &apos;#&apos; inside the function -webkit-element() and then creates the CSSPrimitiveValue CSS_ELEMENT_FUNCTION which stores #elementID for use by the styler and render.

platform.h:
I have restricted it to MAC because it is the platform I have been developing on and testing on. 

CSSPrimitiveValue.cpp:
It is just &quot;#&quot; because the &quot;-webkit-element()&quot; is derived from CSSElement Value. CSS_ELEMENT_FUNCTION just holds the parameters of the function (#elementID). I have to use double quotes or else it thinks &apos;#&apos; is an int.

CSSParser.cpp:
I followed a very similar approach as -webkit-image-set() when handling the parsing. It is only used as a background-image and those parsing methods handle background-image.

Tests:
Again, I took the example of the parsing tests of -webkit-image-set(). The expected text is &apos;#elementA&apos; because it checks to first ensure background-image&apos;s elementRule is a ValueList and then checks that its inner value is the #elementID. -webkit-image-set() follows the same process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716601</commentid>
    <comment_count>16</comment_count>
      <attachid>163229</attachid>
    <who name="Anish">bhayani</who>
    <bug_when>2012-09-10 15:26:15 -0700</bug_when>
    <thetext>Created attachment 163229
CSS Element grammar and parsing patch. Not full implementation.

updated changelog and cleaned up code. See above comment for details about bigger changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716634</commentid>
    <comment_count>17</comment_count>
      <attachid>163229</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-10 16:04:44 -0700</bug_when>
    <thetext>Comment on attachment 163229
CSS Element grammar and parsing patch. Not full implementation.

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

Please send an email to webkit-dev explaining that you&apos;re going to be working on this feature.  See http://trac.webkit.org/wiki/AddingFeatures or you can use a previous email as a template (like the email about CSS Device Adaptation).

&gt; Source/WTF/ChangeLog:8
&gt; +        Reviewed by Tony Chang.

You are only supposed to fill this in after you get an r+. Most of the time, webkit-patch or bugzilla will do it for you.  Please restore this to Reviewed by NOBODY (OOPS!).

&gt; Source/WebCore/ChangeLog:6
&gt; +        Reviewed by Tony Chang.

Please restore this to Reviewed by NOBODY (OOPS!).

&gt; Source/WTF/wtf/Platform.h:1055
&gt; +#if PLATFORM(MAC)
&gt; +#define ENABLE_CSS_ELEMENT 1
&gt; +#endif

It&apos;s more common for new features to be disabled by default on all platforms until it is useful.  You can enable it during development by making sure that build-webkit --enable-css-element works. See Scripts/webkitperl/FeatureList.pm.

&gt; Source/WebCore/css/CSSElementValue.cpp:40
&gt; +CSSElementValue::CSSElementValue()
&gt; +    : CSSValueList(CSSElementClass, SpaceSeparator)

Why does this inherit from CSSValueList? It looks like there can only be 1 ID.  I would probably inherit from CSSValue.

&gt; Source/WebCore/css/CSSParser.cpp:7250
&gt; +    RefPtr&lt;CSSElementValue&gt; webElem = CSSElementValue::create();

Nit: webElem -&gt; cssElement

&gt; Source/WebCore/css/CSSParser.h:218
&gt; +    PassRefPtr&lt;CSSValue&gt; parseWebKitElement(CSSParserValueList*);

Nit: I would probably call this parseCSSElement.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:120
&gt; +    case CSSPrimitiveValue:: CSS_ELEMENT_FUNCTION:

Nit: Remove the extra space after ::.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:1145
&gt; +        case CSS_ELEMENT_FUNCTION:
&gt; +            text = &quot;#&quot; + String(m_value.string);

This should be &quot;-webkit-element(#&quot; + String(m_value.string) + &quot;)&quot;. That is, if you get the cssText, it should include the -webkit-element() part. See CSSImageSetValue::customCssText for how this works.

&gt; LayoutTests/ChangeLog:6
&gt; +        Reviewed by Tony Chang.

Please restore this to Reviewed by NOBODY (OOPS!).

&gt; LayoutTests/ChangeLog:18
&gt; +        * platform/efl/Skipped:
&gt; +        * platform/qt/Skipped:

I think you need to skip the directory in platform/chromium/TestExpectations too.

&gt; LayoutTests/fast/css/cssElement/webkit-element-parsing-invalid.html:15
&gt; +function testInvalidImageSet(description, property, rule)

Nit: You probably don&apos;t mean ImageSet here.

&gt; LayoutTests/fast/css/cssElement/webkit-element-parsing.html:34
&gt; +function testelementRule(description, property, rule, expectedTexts)

Nit: testelementRule -&gt; testElementRule

&gt; LayoutTests/fast/css/cssElement/webkit-element-parsing.html:54
&gt; +            subRule = elementRule[0].cssText;
&gt; +            shouldBe(&quot;subRule&quot;, &quot;&apos;&quot; + expectedTexts + &quot;&apos;&quot;);

I think part of the confusion is that you&apos;re inheriting from a CSSValueList.  If you don&apos;t inherit from list, then you don&apos;t have to use [0] and you can check elementRule.cssText directly, which should include -webkit-element().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716635</commentid>
    <comment_count>18</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-10 16:05:58 -0700</bug_when>
    <thetext>Also, can you add some tests that verify an ID like #fff gets parsed properly (rather than getting parsed as a color)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716771</commentid>
    <comment_count>19</comment_count>
    <who name="Anish">bhayani</who>
    <bug_when>2012-09-10 19:02:02 -0700</bug_when>
    <thetext>The reason I chose CSSValueList instead of just CSSValue is for a few reasons. Currently, there are already set ways of extracting a CSSValue from a CSSValueList. For me to create webkit-element() as a value would require different means of extracting the elementID. The specification for this feature does not suggest what the type should be and seeing that the specification is still not mature, I thought it would be safer to stick with a CSSValueList incase CSS Element can take more than one argument. Since CSSParser is one small check to ensure only one ID, to allow multiple IDs would be a very simple change. Lastly, seeing how Mozilla implemented this feature as a CSSPrimitiveValue and the troubles they ran into (https://bugzilla.mozilla.org/show_bug.cgi?id=506826) made me want to deter from that. 
That is why I chose CSSValueList over CSSValue. What are your thoughts? I can change it if need be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717337</commentid>
    <comment_count>20</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-11 10:25:25 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; The reason I chose CSSValueList instead of just CSSValue is for a few reasons. Currently, there are already set ways of extracting a CSSValue from a CSSValueList. For me to create webkit-element() as a value would require different means of extracting the elementID. 

That&apos;s just a single getter method.

&gt; The specification for this feature does not suggest what the type should be and seeing that the specification is still not mature, I thought it would be safer to stick with a CSSValueList incase CSS Element can take more than one argument.

If the spec changes to allow multiple params, then we can switch the code to use a CSSValueList.  It&apos;s not clear that a list would be the best abstraction without knowing what the multiple values are.

&gt; Lastly, seeing how Mozilla implemented this feature as a CSSPrimitiveValue and the troubles they ran into (https://bugzilla.mozilla.org/show_bug.cgi?id=506826) made me want to deter from that. 

Which comments on the bug are you looking at?  I&apos;m not seeing the problem in the bug thread, but maybe I&apos;m not understanding the moz code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717499</commentid>
    <comment_count>21</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-11 13:26:26 -0700</bug_when>
    <thetext>I think we should not land this.

From webkit-dev, it is not clear to me anyone will finish this feature in the short term.

This patch is simple enough to be rebased and integrated later as needed. On the other hand, it is intrusive enough to cause useless maintenance if we land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717516</commentid>
    <comment_count>22</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-11 13:47:57 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; I think we should not land this.
&gt; 
&gt; From webkit-dev, it is not clear to me anyone will finish this feature in the short term.
&gt; 
&gt; This patch is simple enough to be rebased and integrated later as needed. On the other hand, it is intrusive enough to cause useless maintenance if we land it.

I agree.  If someone else at Adobe plans on finishing the feature, s/he should upload the updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717877</commentid>
    <comment_count>23</comment_count>
      <attachid>163510</attachid>
    <who name="Anish">bhayani</who>
    <bug_when>2012-09-11 20:44:10 -0700</bug_when>
    <thetext>Created attachment 163510
Patch v1: Grammar &amp; Parsing

Incorporated the suggestions by Tony Chang and made CSS Element a CSSPrimitiveValue instead of a CSSValueList. Looking at how CSS Variables handles its parsing and grammar, it made more sense to make it a CSSPrimitiveValue instead of a CSS Value (the usage of -webkit-var(foo) is a CSSPrimitiveValue whereas the setting of it is a CSSValue). Updated tests to test that #fff is an elementID and not a color and to look out for CSSPrimitiveValue. ENABLE_CSS_ELEMENT is no longer in Platform.h, it is a command line feature disabled by default. Please review this patch as whoever continues it will benefit greatly if not use this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718858</commentid>
    <comment_count>24</comment_count>
      <attachid>163510</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-12 16:19:25 -0700</bug_when>
    <thetext>Comment on attachment 163510
Patch v1: Grammar &amp; Parsing

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

This change seems much better. I just have some style nits.

As mentioned earlier, I don&apos;t think we should land this change until someone is ready to finish implementing.  I&apos;m going to remove the review flag to try and avoid confusion.

&gt; Source/WebCore/ChangeLog:10
&gt; +        CSSPrimitiveValue::CSS_ELEMENT_FUNCTION. Webkit-element is treated similarly to webkit-image-set 

Nit: Webkit-element -&gt; -webkit-element

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:21216
&gt; +				93CA4C9C09DF93FA00DF8677 /* maketokenizer */,

This seems like an unintentional change.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:28715
&gt; +				SYMROOT = bhayani/WebKit/WebKitBuild;

This seems like an unintentional change.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:28724
&gt; +				SYMROOT = bhayani/WebKit/WebKitBuild;

This seems like an unintentional change.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:28733
&gt; +				SYMROOT = bhayani/WebKit/WebKitBuild;

This seems like an unintentional change.

&gt; Source/WebCore/css/CSSParser.cpp:7246
&gt; +    if (arg-&gt;unit != CSSPrimitiveValue::CSS_ELEMENT_FUNCTION &amp;&amp; arg-&gt;unit != CSSPrimitiveValue::CSS_PARSER_HEXCOLOR)

Nit: The CSS_PARSER_HEXCOLOR check probably deserves a comment.

&gt; LayoutTests/fast/css/cssElement/webkit-element-parsing.html:48
&gt; +    if (elementRule) {
&gt; +            subRule = elementRule.cssText;
&gt; +            shouldBe(&quot;subRule&quot;, &quot;&apos;&quot; + expectedTexts + &quot;&apos;&quot;);

Nit: weird indent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195495</commentid>
    <comment_count>25</comment_count>
    <who name="yisibl">50167214</who>
    <bug_when>2016-05-23 05:30:18 -0700</bug_when>
    <thetext>Is no one continuing to follow up on this feature?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509451</commentid>
    <comment_count>26</comment_count>
    <who name="">ginesehen</who>
    <bug_when>2019-02-24 00:16:39 -0800</bug_when>
    <thetext>I&apos;m really looking forward to this feature. There is some movement over on the chromium issue: https://bugs.chromium.org/p/chromium/issues/detail?id=108972 But it looks like the new Houdini stuff needs to be ironed out first.

This blog post shows some neat possibilities in the form of several demos: https://iamvdo.me/en/blog/css-element-function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538836</commentid>
    <comment_count>27</comment_count>
    <who name="jonjohnjohnson">hi</who>
    <bug_when>2019-05-23 16:38:45 -0700</bug_when>
    <thetext>In the previously linked blink issue (https://bugs.chromium.org/p/chromium/issues/detail?id=108972), there&apos;s talk of similarities for implementing and specifying backdrop-filter (https://github.com/w3c/fxtf-drafts/issues/53).

I&apos;m really hoping element() can seamlessly fall into place for webkit, and all vendors, when backdrop-filter is nailed down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1952468</commentid>
    <comment_count>28</comment_count>
    <who name="Sebastian Zartner">sebastianzartner</who>
    <bug_when>2023-05-02 13:12:46 -0700</bug_when>
    <thetext>For what it&apos;s worth, this function is now defined in CSS Images 4:
https://drafts.csswg.org/css-images-4/#element-notation

Sebastian</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162898</attachid>
            <date>2012-09-07 16:23:44 -0700</date>
            <delta_ts>2012-09-10 12:22:57 -0700</delta_ts>
            <desc>This sets the foundation for -webkit-element by adding it to the grammar, parser, and values</desc>
            <filename>bug-44650-20120907162324.patch</filename>
            <type>text/plain</type>
            <size>33885</size>
            <attacher name="Anish">bhayani</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE3M2EwYWVjZTRlM2UxYWJlYzA1MWZm
ODc1Zjg5Mjk2NTBhMDU4YWQuLjA5NmQ0ZjA4ZGU1MDg2NGQ5N2Y4ZjQzN2QxYjZjYWNiNDBkMWU4
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMDcgIEFuaXNoIEJoYXlhbmkgIDxhbmlz
aC5iaGF5YW5pQGdtYWlsLmNvbT4KKworICAgICAgICBTdXBwb3J0IHBhcnNpbmcgLXdlYmtpdC1l
bGVtZW50KCkgQ1NTIGltYWdlIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ0NjUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRGVmaW5lZCBXRUJLSVRfRUxFTUVOVCB0byBydW4gb24gY2VydGFpbiBw
bGF0Zm9ybXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiB3
dGYvUGxhdGZvcm0uaDoKKwogMjAxMi0wOS0wNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFw
cGxlLmNvbT4KIAogICAgICAgICBTdHJpbmdJbXBsOjpmaW5kKFN0cmluZ0ltcGwqKSBkb2Vzbid0
IGhhbmRsZSBjYXNlcyB3aGVyZSBzZWFyY2ggYW5kIG1hdGNoIHN0cmluZ3MgYXJlIGRpZmZlcmVu
dCBiaXRuZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M4ZmNhM2IzZGI5ZTQ0ZjMwZDllMzRlOTljNWNmOTZi
MmRiZDg1ZS4uMzBiNTkzMjdkNDQ4ZjU3NjA0ZThlMzVjMDEwYzg1MjJjNzIzNDhiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTA5LTA3ICBBbmlzaCBCaGF5YW5pICA8YW5pc2gu
YmhheWFuaUBnbWFpbC5jb20+CisKKyAgICAgICAgU3VwcG9ydCB0aGUgZ3JhbW1hciBhbmQgcGFy
c2luZyBvZiAtd2Via2l0LWVsZW1lbnQoKSBDU1MgaW1hZ2UgdHlwZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ2NTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRoZSBncmFtbWFyIHRvIG5v
dGljZSBJRFNFTCBmb3IgdGVybSAtd2Via2l0LWVsZW1lbnQoI2VsZW1lbnRpZCkuIENTU1BhcnNl
cgorICAgICAgICBwYXJzZXMgdGhlIHRva2VuIGFuZCBjcmVhdGVzIGEgdmFsdWVMaXN0IHdpdGgg
YSBDU1NQcmltaXRpdmVWYWx1ZSBXRUJLSVRfRUxFTQorICAgICAgICBzdG9yaW5nIHRoZSAjZWxl
bWVudGlkLiBXZWJLaXRDU1NFbGVtZW50VmFsdWUgY2xhc3MgYWRkZWQgYW5kIGFwcHJvcHJpYXRl
CisgICAgICAgIENTU1ZhbHVlIGNsYXNzZXMgd2VyZSB1cGRhdGVkLgorCisgICAgICAgIFRlc3Rz
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtZWxlbWVudC1wYXJzaW5nLmh0bWwKKyAgICAg
ICAgICAgICAgIExheW91dFRlc3RzL2Zhc3QvY3NzL3dlYmtpdC1lbGVtZW50LXBhcnNpbmctaW52
YWxpZC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb250ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGaWxsSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlV2ViS2l0RWxlbWVudCk6CisgICAg
ICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1ZhbHVlKToKKyAg
ICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNW
YWxpZENTU1VuaXRUeXBlRm9yRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6Y2xlYW51cCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6Z2V0U3RyaW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6OmN1c3RvbUNzc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OmNsb25lRm9yQ1NTT00pOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOgor
ICAgICAgICAoQ1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0
aXZlVmFsdWU6OmlzV2ViS2l0RWxlbWVudCk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1
ZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6Y2xvbmVGb3JDU1NPTSk6
CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAgIChDU1NWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NWYWx1ZTo6aXNXZWJLaXRDU1NFbGVtZW50VmFsdWUpOgorICAgICAgICAq
IGNzcy9XZWJLaXRDU1NFbGVtZW50VmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTRWxlbWVudFZhbHVlOjpXZWJLaXRDU1NFbGVt
ZW50VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTRWxlbWVudFZhbHVlOjpjdXN0
b21Dc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU0VsZW1lbnRWYWx1ZTo6Y2xv
bmVGb3JDU1NPTSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NFbGVtZW50VmFsdWU6OnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU0VsZW1l
bnRWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0Q1NT
RWxlbWVudFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU0VsZW1lbnRWYWx1ZTo6
Y3JlYXRlKToKKwogMjAxMi0wOS0wNyAgU3RlcGhlbiBDaGVubmV5ICA8c2NoZW5uZXlAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIE1hYyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBlYjBlNzMy
MjhiNDI3YWM4MzBjZjNiOWZmMGI1NzM5MjgyNWMyYzY3Li40MTBkNGU5Njg1ZTU1YWRmYjhmMGEz
NWY2NmNiZDVhMTViNGQxNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTEwNDksNiArMTA0OSwxMSBAQAog
I2RlZmluZSBFTkFCTEVfQ1NTX0lNQUdFX1NFVCAxCiAjZW5kaWYKIAorLyogV2ViS2l0IEVsZW1l
bnQgYXMgYmFja2dyb3VuZCAqLworI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8
fCBQTEFURk9STShRVCkgfHwgKFBMQVRGT1JNKFdJTikgJiYgIU9TKFdJTkNFKSAmJiAhUExBVEZP
Uk0oV0lOX0NBSVJPKSkKKyNkZWZpbmUgRU5BQkxFX0NTU19XRUJLSVRfRUxFTUVOVCAxCisjZW5k
aWYKKwogCiAvKiBRdCBhbHdheXMgdXNlcyBUZXh0dXJlIE1hcHBlciAqLwogI2lmIFBMQVRGT1JN
KFFUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGU0ZGNmNTAyZTc2MGY2N2MyZmM2YTljOTNmYTViMGM2NTQ1MWMzNjguLjhhZDk0
MzE0YjM3MDAwNmJlYjllZTk2ZWY2YThiOWJlN2UyNTRlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYyMjQsNiArNjIyNCw4
IEBACiAJCUY1MkFENUU0MTUzNDI0NUYwMDU5RkJFNiAvKiBFbXB0eUNsaWVudHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUyQUQ1RTMxNTM0MjQ1
RjAwNTlGQkU2IC8qIEVtcHR5Q2xpZW50cy5jcHAgKi87IH07CiAJCUY1NDRGNzg4MTVDRkIyQTgw
MEFGMzNBOCAvKiBOdW1iZXJMb2NhbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjU0NEY3ODYxNUNGQjJBODAwQUYzM0E4IC8qIE51bWJlckxv
Y2FsaXplci5jcHAgKi87IH07CiAJCUY1NDRGNzg5MTVDRkIyQTgwMEFGMzNBOCAvKiBOdW1iZXJM
b2NhbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY1NDRGNzg3MTVDRkIyQTgwMEFGMzNBOCAvKiBOdW1iZXJMb2NhbGl6ZXIuaCAqLzsgfTsKKwkJ
RjU0OTNFNjkxNUVEQTdBQTAwOTdGRTU1IC8qIFdlYktpdENTU0VsZW1lbnRWYWx1ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTQ5M0U2NzE1RURB
N0FBMDA5N0ZFNTUgLyogV2ViS2l0Q1NTRWxlbWVudFZhbHVlLmNwcCAqLzsgfTsKKwkJRjU0OTNF
NkExNUVEQTdBQTAwOTdGRTU1IC8qIFdlYktpdENTU0VsZW1lbnRWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU0OTNFNjgxNUVEQTdBQTAwOTdG
RTU1IC8qIFdlYktpdENTU0VsZW1lbnRWYWx1ZS5oICovOyB9OwogCQlGNTVCM0RBRDEyNTFGMTJE
MDAzRUYyNjkgLyogQmFzZVRleHRJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1QjNENzkxMjUxRjEyRDAwM0VGMjY5IC8qIEJhc2VU
ZXh0SW5wdXRUeXBlLmNwcCAqLzsgfTsKIAkJRjU1QjNEQUUxMjUxRjEyRDAwM0VGMjY5IC8qIEJh
c2VUZXh0SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNTVCM0Q3QTEyNTFGMTJEMDAzRUYyNjkgLyogQmFzZVRleHRJbnB1dFR5cGUuaCAq
LzsgfTsKIAkJRjU1QjNEQUYxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlwZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTVCM0Q3QjEy
NTFGMTJEMDAzRUYyNjkgLyogQnV0dG9uSW5wdXRUeXBlLmNwcCAqLzsgfTsKQEAgLTEzNjA5LDYg
KzEzNjExLDggQEAKIAkJRjUyQUQ1RTMxNTM0MjQ1RjAwNTlGQkU2IC8qIEVtcHR5Q2xpZW50cy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbXB0eUNsaWVudHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNTQ0Rjc4NjE1Q0ZCMkE4MDBBRjMzQTgg
LyogTnVtYmVyTG9jYWxpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE51bWJlckxvY2FsaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1
NDRGNzg3MTVDRkIyQTgwMEFGMzNBOCAvKiBOdW1iZXJMb2NhbGl6ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTnVtYmVyTG9jYWxpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY1NDkzRTY3MTVFREE3QUEwMDk3RkU1NSAvKiBXZWJLaXRDU1NFbGVtZW50
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NT
RWxlbWVudFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjU0OTNFNjgx
NUVEQTdBQTAwOTdGRTU1IC8qIFdlYktpdENTU0VsZW1lbnRWYWx1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NFbGVtZW50VmFsdWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjU1QjNENzkxMjUxRjEyRDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5w
dXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2VUZXh0
SW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjU1QjNEN0ExMjUx
RjEyRDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEJhc2VUZXh0SW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY1NUIzRDdCMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnV0dG9uSW5wdXRUeXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDUwLDYgKzIxMDU0LDggQEAKIAkJRjUy
M0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJRjU0OTNFNjcxNUVEQTdBQTAwOTdGRTU1IC8qIFdlYktpdENT
U0VsZW1lbnRWYWx1ZS5jcHAgKi8sCisJCQkJRjU0OTNFNjgxNUVEQTdBQTAwOTdGRTU1IC8qIFdl
YktpdENTU0VsZW1lbnRWYWx1ZS5oICovLAogCQkJCUZCRDZBRjg0MTVFRjIxRDQwMDhCNzExMCAv
KiBCYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCAqLywKIAkJCQlGQkQ2QUY4NTE1RUYyMUQ0MDA4Qjcx
MTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5oICovLAogCQkJCTkzQ0E0QzlDMDlERjkzRkEwMERG
ODY3NyAvKiBtYWtldG9rZW5pemVyICovLApAQCAtMjU1MDUsNiArMjU1MTEsNyBAQAogCQkJCTkz
NzdBQkEwMTVERUZFRUYwMDMxRkQwNCAvKiBQYWdpbmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDQ3NkFBODE1REM0QkIxMDAzMDVEQjIgLyogV3JpdGluZ01vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTMxQjgwMUJCMTVFQzU4QzcwMENFNjQzRCAvKiBMYXlvdXRUeXBlc0lubGluZU1ldGhv
ZHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUY1NDkzRTZBMTVFREE3QUEwMDk3RkU1NSAvKiBXZWJL
aXRDU1NFbGVtZW50VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZCRDZBRjg4MTVFRjI1Qzkw
MDhCNzExMCAvKiBDU1NCYXNpY1NoYXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkJENkFGOEEx
NUVGMjVERjAwOEI3MTEwIC8qIEJhc2ljU2hhcGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZCRDZBRjhDMTVFRjI2MDQwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yODU5NSw2ICsyODYwMiw3IEBACiAJCQkJNTJCNkM5QzUxNUUzRjRERjAwNjkwQjA1
IC8qIE5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJDQ0E5RTIx
NUUzRjYyQzAwNTNDNzdGIC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MkNDQTlFOTE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29s
bGVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCUY1NDkzRTY5MTVFREE3QUEwMDk3RkU1NSAv
KiBXZWJLaXRDU1NFbGVtZW50VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkJENkFGODkx
NUVGMjVEQjAwOEI3MTEwIC8qIEJhc2ljU2hhcGVGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkJENkFGOEIxNUVGMjVFNTAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUZCRDZBRjhEMTVFRjI2MEEwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CmluZGV4IDUxNjc1MzdmNzFi
N2U0OWU1ODRkNzk4MmRjNDVjMDU1ZDg5Mzg1MDkuLmYyZjYwMzlhMjU3MDkwMjQ1MGRjNGUzOTcz
ZGY3NDI4YWUzZTZkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpAQCAtOTUsNyArOTUsNyBA
QCBzdGF0aWMgaW5saW5lIGludCBjc3N5eWVycm9yKHZvaWQqLCBjb25zdCBjaGFyKikKIAogJX0K
IAotJWV4cGVjdCA2MworJWV4cGVjdCA2NAogCiAlbm9uYXNzb2MgTE9XRVNUX1BSRUMKIApAQCAt
MTQ1NSw2ICsxNDU1LDEzIEBAIHRlcm06CiAgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19WQVJJQUJMRV9OQU1FOwogI2VuZGlmCiAgIH0KKyAgfCBJRFNFTCBtYXliZV9zcGFj
ZSB7CisjaWYgRU5BQkxFKENTU19XRUJLSVRfRUxFTUVOVCkKKyAgICAgICQkLmlkID0gMDsKKyAg
ICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1dFQktJVF9FTEVNOworICAgICAg
JCQuc3RyaW5nID0gJDE7CisjZW5kaWYKKyAgfQogICAvKiBGSVhNRTogYWNjb3JkaW5nIHRvIHRo
ZSBzcGVjcyBhIGZ1bmN0aW9uIGNhbiBoYXZlIGEgdW5hcnlfb3BlcmF0b3IgaW4gZnJvbnQuIEkg
a25vdyBubyBjYXNlIHdoZXJlIHRoaXMgbWFrZXMgc2Vuc2UgKi8KICAgfCBmdW5jdGlvbiB7CiAg
ICAgICAkJCA9ICQxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAyOGNlMTMxNTdmOTU1
NGI2YTkyZjc1ZTA4YTVkYWVkOWZhZTUxOGUzLi41YmJlZDAxY2FlZjNhZWNkN2I1MmYwMTIzMGQ5
MDhjNjM0M2MzNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNTcsNiArNTcsOSBA
QAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogI2luY2x1ZGUgIkNTU1ZhcmlhYmxlVmFsdWUu
aCIKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfV0VCS0lUX0VMRU1FTlQpCisjaW5jbHVkZSAiV2Vi
S2l0Q1NTRWxlbWVudFZhbHVlLmgiCisjZW5kaWYKICNpbmNsdWRlICJDb3VudGVyLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKQEAgLTM1MDks
NiArMzUxMiwxMiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb250ZW50KENTU1Byb3BlcnR5SUQg
cHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVl
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
Q1NTX1dFQktJVF9FTEVNRU5UKQorICAgICAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5n
Q2FzZSh2YWwtPmZ1bmN0aW9uLT5uYW1lLCAiLXdlYmtpdC1lbGVtZW50KCIpKSB7CisgICAgICAg
ICAgICAgICAgcGFyc2VkVmFsdWUgPSBwYXJzZVdlYktpdEVsZW1lbnQobV92YWx1ZUxpc3QuZ2V0
KCkpOworICAgICAgICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0dlbmVy
YXRlZEltYWdlVmFsdWUodmFsKSkgewogICAgICAgICAgICAgICAgIGlmICghcGFyc2VHZW5lcmF0
ZWRJbWFnZShtX3ZhbHVlTGlzdC5nZXQoKSwgcGFyc2VkVmFsdWUpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTk2LDYgKzM2MDUsMTQgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlRmlsbEltYWdlKENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBSZWZQdHI8Q1NT
VmFsdWU+JgogICAgIGlmIChpc0dlbmVyYXRlZEltYWdlVmFsdWUodmFsdWVMaXN0LT5jdXJyZW50
KCkpKQogICAgICAgICByZXR1cm4gcGFyc2VHZW5lcmF0ZWRJbWFnZSh2YWx1ZUxpc3QsIHZhbHVl
KTsKICAgICAKKyNpZiBFTkFCTEUoQ1NTX1dFQktJVF9FTEVNRU5UKQorICAgIGlmICh2YWx1ZUxp
c3QtPmN1cnJlbnQoKS0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24gJiYgZXF1YWxJ
Z25vcmluZ0Nhc2UodmFsdWVMaXN0LT5jdXJyZW50KCktPmZ1bmN0aW9uLT5uYW1lLCAiLXdlYmtp
dC1lbGVtZW50KCIpKSB7CisgICAgICAgIHZhbHVlID0gcGFyc2VXZWJLaXRFbGVtZW50KG1fdmFs
dWVMaXN0LmdldCgpKTsKKyAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCiAgICAg
aWYgKHZhbHVlTGlzdC0+Y3VycmVudCgpLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpGdW5jdGlv
biAmJiBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZUxpc3QtPmN1cnJlbnQoKS0+ZnVuY3Rpb24tPm5h
bWUsICItd2Via2l0LWltYWdlLXNldCgiKSkgewogICAgICAgICB2YWx1ZSA9IHBhcnNlSW1hZ2VT
ZXQobV92YWx1ZUxpc3QuZ2V0KCkpOwpAQCAtNzIxNCw2ICs3MjMxLDMzIEBAIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VJbWFnZVJlc29sdXRpb24oQ1NTUGFyc2VyVmFsdWVM
aXN0KiB2YWx1ZUxpCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFC
TEUoQ1NTX1dFQktJVF9FTEVNRU5UKQorUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpw
YXJzZVdlYktpdEVsZW1lbnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QpCit7CisgICAg
Q1NTUGFyc2VyVmFsdWUqIGZ1bmN0aW9uID0gdmFsdWVMaXN0LT5jdXJyZW50KCk7CisgICAgCisg
ICAgaWYgKGZ1bmN0aW9uLT51bml0ICE9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbikKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgCisgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBmdW5jdGlvbkFyZ3Mg
PSB2YWx1ZUxpc3QtPmN1cnJlbnQoKS0+ZnVuY3Rpb24tPmFyZ3MuZ2V0KCk7CisgICAgaWYgKCFm
dW5jdGlvbkFyZ3MgfHwgIWZ1bmN0aW9uQXJncy0+c2l6ZSgpIHx8ICFmdW5jdGlvbkFyZ3MtPmN1
cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgaWYgKGZ1bmN0aW9uQXJncy0+
c2l6ZSgpICE9IDEpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFJlZlB0cjxXZWJLaXRD
U1NFbGVtZW50VmFsdWU+IHdlYkVsZW0gPSBXZWJLaXRDU1NFbGVtZW50VmFsdWU6OmNyZWF0ZSgp
OworICAgIAorICAgIENTU1BhcnNlclZhbHVlKiBhcmcgPSBmdW5jdGlvbkFyZ3MtPmN1cnJlbnQo
KTsKKyAgICBpZiAoYXJnLT51bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfV0VCS0lUX0VM
RU0gJiYgYXJnLT51bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9S
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHdlYkVsZW0tPmFwcGVuZChjc3NWYWx1ZVBvb2wo
KS5jcmVhdGVWYWx1ZShhcmctPnN0cmluZywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19XRUJLSVRf
RUxFTSkpOworICAgIAorICAgIHJldHVybiB3ZWJFbGVtOworfQorI2VuZGlmCiAKICNpZiBFTkFC
TEUoQ1NTX0lNQUdFX1NFVCkKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VJ
bWFnZVNldChDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
aAppbmRleCBlMzMwOTBmODMyNmZhNjRiM2MyZDNhZWI4M2ViNDZiMzRkMzA2YmQ5Li4yMzVhM2Vm
ODAzOGJhZmI5ODhlYzkwNDdjYmIzN2Q2YWMxNDkzMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5o
CkBAIC0yMTMsNiArMjEzLDEwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09M
VVRJT04pCiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VJbWFnZVJlc29sdXRpb24oQ1NT
UGFyc2VyVmFsdWVMaXN0Kik7CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoQ1NTX1dFQktJVF9F
TEVNRU5UKQorICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlV2ViS2l0RWxlbWVudChDU1NQ
YXJzZXJWYWx1ZUxpc3QqKTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCiAg
ICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VJbWFnZVNldChDU1NQYXJzZXJWYWx1ZUxpc3Qq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKaW5kZXggOGI3NjI1NTc4ZjRm
NTJjMzY4OWZhYzRjNmZlMDczZGZjZDlmZWM4NS4uOWJkZDVmNTNkNjk1OTI5NWVjY2RlMGVmNDI2
MGFmZDA2ZWRkNmNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZh
bHVlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKQEAg
LTkwLDYgKzkwLDkgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyVmFsdWU6OmNyZWF0
ZUNTU1ZhbHVlKCkKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfVkFSSUFCTEVfTkFNRToKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfV0VC
S0lUX0VMRU1FTlQpCisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1dFQktJVF9FTEVN
OgorI2VuZGlmCiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xP
UjoKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3RyaW5nLCBwcmlt
aXRpdmVVbml0KTsKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDZlYWViMWM3MGU3
YzJjM2E3ZTBiYzcxN2FlNWFkYWZiMTkxZjM3OWYuLmEwZDY0NzI0Y2U5MzhhZjdiYTEyMTE4MzE5
MmM3ZWI2YTA2MThjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cApAQCAtMTE2LDYgKzExNiw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTVW5pdFR5
cGVGb3JEb3VibGVDb252ZXJzaW9uKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0CiAjaWYgRU5BQkxF
KENTU19WQVJJQUJMRVMpCiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6IENTU19WQVJJQUJM
RV9OQU1FOgogI2VuZGlmCisjaWYgRU5BQkxFKENTU19XRUJLSVRfRUxFTUVOVCkKKyAgICBjYXNl
IENTU1ByaW1pdGl2ZVZhbHVlOjogQ1NTX1dFQktJVF9FTEVNOgorI2VuZGlmCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTM3MCw2ICszNzMsOSBAQCB2b2lkIENTU1ByaW1pdGl2
ZVZhbHVlOjpjbGVhbnVwKCkKICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PFVuaXRUeXBlcz4obV9w
cmltaXRpdmVVbml0VHlwZSkpIHsKICAgICBjYXNlIENTU19TVFJJTkc6CiAgICAgY2FzZSBDU1Nf
VVJJOgorI2lmIEVOQUJMRShDU1NfV0VCS0lUX0VMRU1FTlQpCisgICAgY2FzZSBDU1NfV0VCS0lU
X0VMRU06CisjZW5kaWYKICAgICBjYXNlIENTU19BVFRSOgogICAgIGNhc2UgQ1NTX0NPVU5URVJf
TkFNRToKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKQEAgLTc0Niw2ICs3NTIsOSBAQCBTdHJp
bmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFN0cmluZ1ZhbHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAogICAgICAgICBjYXNlIENTU19TVFJJTkc6CiAgICAgICAgIGNhc2UgQ1NTX0FUVFI6CiAg
ICAgICAgIGNhc2UgQ1NTX1VSSToKKyNpZiBFTkFCTEUoQ1NTX1dFQktJVF9FTEVNRU5UKQorICAg
ICAgICBjYXNlIENTU19XRUJLSVRfRUxFTToKKyNlbmRpZgogI2lmIEVOQUJMRShDU1NfVkFSSUFC
TEVTKQogICAgICAgICBjYXNlIENTU19WQVJJQUJMRV9OQU1FOgogI2VuZGlmCkBAIC03NjYsNiAr
Nzc1LDkgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRTdHJpbmdWYWx1ZSgpIGNvbnN0
CiAgICAgICAgIGNhc2UgQ1NTX1NUUklORzoKICAgICAgICAgY2FzZSBDU1NfQVRUUjoKICAgICAg
ICAgY2FzZSBDU1NfVVJJOgorI2lmIEVOQUJMRShDU1NfV0VCS0lUX0VMRU1FTlQpCisgICAgICAg
IGNhc2UgQ1NTX1dFQktJVF9FTEVNOgorI2VuZGlmCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMp
CiAgICAgICAgIGNhc2UgQ1NTX1ZBUklBQkxFX05BTUU6CiAjZW5kaWYKQEAgLTExMjcsNiArMTEz
OSwxMSBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAog
ICAgICAgICAgICAgdGV4dCA9ICItd2Via2l0LXZhcigiICsgU3RyaW5nKG1fdmFsdWUuc3RyaW5n
KSArICIpIjsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCisjaWYgRU5BQkxFKENTU19XRUJL
SVRfRUxFTUVOVCkKKyAgICAgICAgY2FzZSBDU1NfV0VCS0lUX0VMRU06CisgICAgICAgICAgICB0
ZXh0ID0gIiMiICsgU3RyaW5nKG1fdmFsdWUuc3RyaW5nKTsKKyAgICAgICAgICAgIGJyZWFrOwor
I2VuZGlmCiAgICAgfQogCiAgICAgQVNTRVJUKCFjc3NUZXh0Q2FjaGUoKS5jb250YWlucyh0aGlz
KSk7CkBAIC0xMTc5LDYgKzExOTYsOSBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAgICAgc3dpdGNoIChtX3By
aW1pdGl2ZVVuaXRUeXBlKSB7CiAgICAgY2FzZSBDU1NfU1RSSU5HOgogICAgIGNhc2UgQ1NTX1VS
SToKKyNpZiBFTkFCTEUoQ1NTX1dFQktJVF9FTEVNRU5UKQorICAgIGNhc2UgQ1NTX1dFQktJVF9F
TEVNOgorI2VuZGlmCiAgICAgY2FzZSBDU1NfQVRUUjoKICAgICBjYXNlIENTU19DT1VOVEVSX05B
TUU6CiAgICAgICAgIHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1ZS5z
dHJpbmcsIHN0YXRpY19jYXN0PFVuaXRUeXBlcz4obV9wcmltaXRpdmVVbml0VHlwZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCAxMDNlYTZhODNkMmQ2NjJjNDUz
MTQyM2Y3MGI4MzI5NDkyMGZhY2I5Li5mNmU1NmNkODcwMWJlODkyZjQwMGExOWFlMGRiYTZkYzgy
NDQ5MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtOTgsNiAr
OTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIENTU19EUFBYID0gMjksCiAgICAgICAgIENTU19EUEkg
PSAzMCwKICAgICAgICAgQ1NTX0RQQ00gPSAzMSwKKwogICAgICAgICBDU1NfUEFJUiA9IDEwMCwg
Ly8gV2UgZW52aXNpb24gdGhpcyBiZWluZyBleHBvc2VkIGFzIGEgbWVhbnMgb2YgZ2V0dGluZyBj
b21wdXRlZCBzdHlsZSB2YWx1ZXMgZm9yIHBhaXJzIChib3JkZXItc3BhY2luZy9yYWRpdXMsIGJh
Y2tncm91bmQtcG9zaXRpb24sIGV0Yy4pCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8
fCBFTkFCTEUoV0lER0VUX1JFR0lPTikKICAgICAgICAgQ1NTX0RBU0hCT0FSRF9SRUdJT04gPSAx
MDEsIC8vIEZJWE1FOiBEYXNoYm9hcmQgcmVnaW9uIHNob3VsZCBub3QgYmUgYSBwcmltaXRpdmUg
dmFsdWUuCkBAIC0xMzIsNiArMTMzLDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfVkFSSUFC
TEVTKQogICAgICAgICBDU1NfVkFSSUFCTEVfTkFNRSA9IDExNSwKICNlbmRpZgorI2lmIEVOQUJM
RShDU1NfV0VCS0lUX0VMRU1FTlQpCisgICAgICAgIENTU19XRUJLSVRfRUxFTSA9IDExNiwKKyNl
bmRpZgogICAgIH07CiAKICAgICAvLyBUaGlzIGVudW0gZm9sbG93cyB0aGUgQ1NTUGFyc2VyOjpV
bml0cyBlbnVtIGF1Z21lbnRlZCB3aXRoIFVOSVRfRlJFUVVFTkNZIGZvciBmcmVxdWVuY2llcy4K
QEAgLTE4MSw2ICsxODUsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NhbGN1bGF0ZWQoKSBjb25z
dCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19DQUxDOyB9CiAgICAgYm9vbCBp
c0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2
ZVR5cGUoKSA9PSBDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTlVNQkVSOyB9CiAgICAgYm9vbCBp
c0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2
ZVR5cGUoKSA9PSBDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTEVOR1RIOyB9CisjaWYgRU5BQkxF
KENTU19XRUJLSVRfRUxFTUVOVCkKKyAgICBib29sIGlzV2ViS2l0RWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NfV0VCS0lUX0VMRU07IH0KKyNlbmRpZgogI2lm
IEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIGJvb2wgaXNWYXJpYWJsZU5hbWUoKSBjb25zdCB7
IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX1ZBUklBQkxFX05BTUU7IH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZS5jcHAKaW5kZXggZjVlZjFlZjQxNzExZGI1OGFiZjgwYzNkN2IwM2Y0
ZTU3YThiZWQ1Zi4uMWI0NmU4OGFkODNlMDJhOTNiMjg1MzQ0Y2VkZTAyZTJlNGZhYjVkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWUuY3BwCkBAIC01MCw2ICs1MCw5IEBACiAjaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVWYWx1ZS5oIgogI2VuZGlmCisjaWYgRU5B
QkxFKENTU19XRUJLSVRfRUxFTUVOVCkKKyNpbmNsdWRlICJXZWJLaXRDU1NFbGVtZW50VmFsdWUu
aCIKKyNlbmRpZgogI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkZvbnRGZWF0dXJl
VmFsdWUuaCIKICNpbmNsdWRlICJTaGFkb3dWYWx1ZS5oIgpAQCAtMjQ1LDYgKzI0OCwxMSBAQCB2
b2lkIENTU1ZhbHVlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKSBjb25zdAogICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NWYXJpYWJsZVZh
bHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZv
KTsKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCisjaWYgRU5BQkxFKENTU19XRUJLSVRfRUxFTUVO
VCkKKyAgICBjYXNlIFdlYktpdENTU0VsZW1lbnRDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8
Y29uc3QgV2ViS2l0Q1NTRWxlbWVudFZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCiAjaWYg
RU5BQkxFKFNWRykKICAgICBjYXNlIFNWR0NvbG9yQ2xhc3M6CiAgICAgICAgIHN0YXRpY19jYXN0
PGNvbnN0IFNWR0NvbG9yKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1v
cnlPYmplY3RJbmZvKTsKQEAgLTM1NSw2ICszNjMsMTAgQEAgU3RyaW5nIENTU1ZhbHVlOjpjc3NU
ZXh0KCkgY29uc3QKICAgICBjYXNlIFZhcmlhYmxlQ2xhc3M6CiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBDU1NWYXJpYWJsZVZhbHVlKj4odGhpcyktPnZhbHVlKCk7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoQ1NTX1dFQktJVF9FTEVNRU5UKQorICAgIGNhc2UgV2ViS2l0Q1NTRWxlbWVu
dENsYXNzOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViS2l0Q1NTRWxlbWVu
dFZhbHVlKj4odGhpcyktPmN1c3RvbUNzc1RleHQoKTsKKyNlbmRpZgogI2lmIEVOQUJMRShTVkcp
CiAgICAgY2FzZSBTVkdDb2xvckNsYXNzOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgU1ZHQ29sb3IqPih0aGlzKS0+Y3VzdG9tQ3NzVGV4dCgpOwpAQCAtNDk1LDYgKzUwNywxMSBA
QCB2b2lkIENTU1ZhbHVlOjpkZXN0cm95KCkKICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PENT
U1ZhcmlhYmxlVmFsdWUqPih0aGlzKTsKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCisjaWYgRU5B
QkxFKENTU19XRUJLSVRfRUxFTUVOVCkKKyAgICBjYXNlIFdlYktpdENTU0VsZW1lbnRDbGFzczoK
KyAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFdlYktpdENTU0VsZW1lbnRWYWx1ZSo+KHRoaXMp
OworICAgICAgICByZXR1cm47CisjZW5kaWYKICNpZiBFTkFCTEUoU1ZHKQogICAgIGNhc2UgU1ZH
Q29sb3JDbGFzczoKICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFNWR0NvbG9yKj4odGhpcyk7
CkBAIC01MzYsNiArNTUzLDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1ZhbHVlOjpjbG9u
ZUZvckNTU09NKCkgY29uc3QKICAgICBjYXNlIEltYWdlU2V0Q2xhc3M6CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBDU1NJbWFnZVNldFZhbHVlKj4odGhpcyktPmNsb25lRm9yQ1NT
T00oKTsKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfV0VCS0lUX0VMRU1FTlQpCisgICAgY2FzZSBX
ZWJLaXRDU1NFbGVtZW50Q2xhc3M6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBX
ZWJLaXRDU1NFbGVtZW50VmFsdWUqPih0aGlzKS0+Y2xvbmVGb3JDU1NPTSgpOworI2VuZGlmCiAj
aWYgRU5BQkxFKFNWRykKICAgICBjYXNlIFNWR0NvbG9yQ2xhc3M6CiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBTVkdDb2xvcio+KHRoaXMpLT5jbG9uZUZvckNTU09NKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZS5oCmluZGV4IDI1YTAwOTVkOTM0Y2Y5YTdkNTFhNjVhYTljMDA2ODI5YjVlZWZj
NmUuLjJmYjJkMDU0ZmJkNjBkYTk1M2FmZjliMDEzYzVjYTRiYmJhZDMzZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5oCkBAIC0xMDMsNiArMTAzLDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfVkFS
SUFCTEVTKQogICAgIGJvb2wgaXNWYXJpYWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFz
c1R5cGUgPT0gVmFyaWFibGVDbGFzczsgfQogI2VuZGlmCisjaWYgRU5BQkxFKENTU19XRUJLSVRf
RUxFTUVOVCkKKyAgICBib29sIGlzV2ViS2l0Q1NTRWxlbWVudFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9jbGFzc1R5cGUgPT0gV2ViS2l0Q1NTRWxlbWVudENsYXNzOyB9CisjZW5kaWYKICNpZiBF
TkFCTEUoU1ZHKQogICAgIGJvb2wgaXNTVkdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NU
eXBlID09IFNWR0NvbG9yQ2xhc3MgfHwgbV9jbGFzc1R5cGUgPT0gU1ZHUGFpbnRDbGFzczsgfQog
ICAgIGJvb2wgaXNTVkdQYWludCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFNWR1Bh
aW50Q2xhc3M7IH0KQEAgLTE4OCw2ICsxOTEsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFdlYktp
dENTU01peEZ1bmN0aW9uVmFsdWVDbGFzcywKICNlbmRpZgogI2VuZGlmCisjaWYgRU5BQkxFKENT
U19XRUJLSVRfRUxFTUVOVCkKKyAgICAgICAgV2ViS2l0Q1NTRWxlbWVudENsYXNzLAorI2VuZGlm
CiAgICAgICAgIFdlYktpdENTU1RyYW5zZm9ybUNsYXNzLAogICAgICAgICAvLyBEbyBub3QgYXBw
ZW5kIG5vbi1saXN0IGNsYXNzIHR5cGVzIGhlcmUuCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NFbGVtZW50VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU0VsZW1lbnRWYWx1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTZmMWQ4OWU0YzY2MGE1
MWI5MDMzMmM2NDZhN2EyZjhlNjYzMDM0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NFbGVtZW50VmFsdWUuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
CisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAor
ICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJLaXRDU1NFbGVtZW50VmFsdWUuaCIKKyAKKyNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1dFQktJVF9FTEVNRU5UKQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisgICAgCitXZWJLaXRDU1NFbGVtZW50VmFsdWU6OldlYktpdENTU0Vs
ZW1lbnRWYWx1ZSgpCisgICAgOiBDU1NWYWx1ZUxpc3QoV2ViS2l0Q1NTRWxlbWVudENsYXNzLCBT
cGFjZVNlcGFyYXRvcikKKyAgICB7CisgICAgfQorICAgIAorV2ViS2l0Q1NTRWxlbWVudFZhbHVl
OjpXZWJLaXRDU1NFbGVtZW50VmFsdWUoY29uc3QgV2ViS2l0Q1NTRWxlbWVudFZhbHVlJiBjbG9u
ZUZyb20pCisgICAgOiBDU1NWYWx1ZUxpc3QoY2xvbmVGcm9tKQorICAgIHsKKyAgICB9CisgICAg
CitTdHJpbmcgV2ViS2l0Q1NTRWxlbWVudFZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiAiLXdlYmtpdC1lbGVtZW50KCIgKyBDU1NWYWx1ZUxpc3Q6OmN1
c3RvbUNzc1RleHQoKSArICIpIjsKKyAgICB9CisgICAgCitQYXNzUmVmUHRyPFdlYktpdENTU0Vs
ZW1lbnRWYWx1ZT4gV2ViS2l0Q1NTRWxlbWVudFZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0Q1NTRWxlbWVudFZhbHVl
KCp0aGlzKSk7CisgICAgfQorICAgIAordm9pZCBXZWJLaXRDU1NFbGVtZW50VmFsdWU6OnJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb25zdAorICAgIHsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0
SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOworICAgICAgICBDU1NWYWx1ZUxp
c3Q6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICB9
CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1dF
QktJVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0Vs
ZW1lbnRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0VsZW1lbnRWYWx1ZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZkNGRkNWRmNjY1MzZmNmMxNThlMmEyZGJmYTVkYzFhZTQwOTExMTIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRWxlbWVudFZhbHVl
LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0
ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJLaXRDU1NFbGVtZW50VmFsdWVfaAorI2RlZmluZSBXZWJLaXRDU1NFbGVtZW50VmFs
dWVfaAorCisjaWYgRU5BQkxFKENTU19XRUJLSVRfRUxFTUVOVCkKKworI2luY2x1ZGUgIkNTU1Zh
bHVlTGlzdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICAKK2NsYXNzIFdlYktpdENTU0VsZW1lbnRWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1
ZUxpc3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0Q1NT
RWxlbWVudFZhbHVlPiBjcmVhdGUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYktpdENTU0VsZW1lbnRWYWx1ZSgpKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKKyAgICAgICAgCisgICAgICAg
IFBhc3NSZWZQdHI8V2ViS2l0Q1NTRWxlbWVudFZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7
CisgICAgICAgIAorICAgICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKikgY29uc3Q7CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIFdl
YktpdENTU0VsZW1lbnRWYWx1ZSgpOworICAgICAgICBXZWJLaXRDU1NFbGVtZW50VmFsdWUoY29u
c3QgV2ViS2l0Q1NTRWxlbWVudFZhbHVlJiBjbG9uZUZyb20pOworICAgIH07CisgICAgCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1dFQktJVF9FTEVNRU5U
KQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBhYzcyYzA2NzQ5NjkxYmViNzI0ZTYyNmM2NTk0NDc2NzJkN2Y1
OGYyLi4wMzQzYTliMTU5NGQ0NzExZTUyMWI5Yjc3OWNmM2UyMTQzOWE3YzI1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMTItMDktMDcgIEFuaXNoIEJoYXlhbmkgIDxhbmlzaC5iaGF5YW5pQGdt
YWlsLmNvbT4KKworICAgICAgICBTdXBwb3J0IHRoZSBncmFtbWFyIGFuZCBwYXJzaW5nIG9mIC13
ZWJraXQtZWxlbWVudCgpIENTUyBpbWFnZSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDY1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciB0aGUgdXBkYXRlZCB0aGUgZ3Jh
bW1hciB0byBub3RpY2UgSURTRUwgZm9yIHRlcm0gLXdlYmtpdC1lbGVtZW50KCNlbGVtZW50aWQp
LiAKKyAgICAgICAgQ1NTUGFyc2VyIHBhcnNlcyB0aGUgdG9rZW4gYW5kIGNyZWF0ZXMgYSB2YWx1
ZUxpc3Qgd2l0aCBhIENTU1ByaW1pdGl2ZVZhbHVlIFdFQktJVF9FTEVNCisgICAgICAgIHN0b3Jp
bmcgdGhlICNlbGVtZW50aWQuIFdlYktpdENTU0VsZW1lbnRWYWx1ZSBjbGFzcyBhZGRlZCBhbmQg
YXBwcm9wcmlhdGUKKyAgICAgICAgQ1NTVmFsdWUgY2xhc3NlcyB3ZXJlIHVwZGF0ZWQuCisKKyAg
ICAgICAgKiBmYXN0L2Nzcy9zY3JpcHQtdGVzdHMvd2Via2l0LWVsZW1lbnQtcGFyc2luZy1pbnZh
bGlkLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RJbnZhbGlkSW1hZ2VTZXQpOgorICAgICAgICAq
IGZhc3QvY3NzL3NjcmlwdC10ZXN0cy93ZWJraXQtZWxlbWVudC1wYXJzaW5nLmpzOiBBZGRlZC4K
KyAgICAgICAgKGpzV3JhcHBlckNsYXNzKToKKyAgICAgICAgKHNob3VsZEJlVHlwZSk6CisgICAg
ICAgICh0ZXN0ZWxlbWVudFJ1bGUpOgorICAgICAgICAqIGZhc3QvY3NzL3dlYmtpdC1lbGVtZW50
LXBhcnNpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy93ZWJraXQt
ZWxlbWVudC1wYXJzaW5nLWludmFsaWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy93ZWJraXQtZWxlbWVudC1wYXJzaW5nLWludmFsaWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jc3Mvd2Via2l0LWVsZW1lbnQtcGFyc2luZy5odG1sOiBBZGRlZC4KKwogMjAx
Mi0wOS0wNyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCB0
aGUgcmVtYWluaW5nIGxpbnRlciBlcnJvcnMuIFRoZXNlIGFyZSBhbGwgY2FzZXMgb2YgcGF0aHMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3NjcmlwdC10ZXN0cy93ZWJraXQtZWxl
bWVudC1wYXJzaW5nLWludmFsaWQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zY3JpcHQtdGVz
dHMvd2Via2l0LWVsZW1lbnQtcGFyc2luZy1pbnZhbGlkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1YTg2MGU2
MjUxMGMyMzVkOTdlMDEyYjM4MTk4ZGNjMDM0YzhhM2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9zY3JpcHQtdGVzdHMvd2Via2l0LWVsZW1lbnQtcGFyc2luZy1pbnZh
bGlkLmpzCkBAIC0wLDAgKzEsMjUgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoZSBwYXJzaW5nIG9m
IHRoZSAtd2Via2l0LWVsZW1lbnQgZnVuY3Rpb24uIik7CisKKy8vIFRoZXNlIGhhdmUgdG8gYmUg
Z2xvYmFsIGZvciB0aGUgdGVzdCBoZWxwZXJzIHRvIHNlZSB0aGVtLgordmFyIGNzc1J1bGU7CisK
K2Z1bmN0aW9uIHRlc3RJbnZhbGlkSW1hZ2VTZXQoZGVzY3JpcHRpb24sIHByb3BlcnR5LCBydWxl
KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZyhkZXNjcmlwdGlvbiArICIgOiAiICsgcnVs
ZSk7CisKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAg
ZGl2LnNldEF0dHJpYnV0ZSgic3R5bGUiLCBwcm9wZXJ0eSArICI6IC13ZWJraXQtZWxlbWVudCgi
ICsgcnVsZSArICIpIik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisg
ICAgY3NzUnVsZSA9IGRpdi5zdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KTsKKyAg
ICBzaG91bGRCZSgiY3NzUnVsZSIsICJudWxsIik7CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92
ZUNoaWxkKGRpdik7Cit9CisKK3Rlc3RJbnZhbGlkSW1hZ2VTZXQoIlRvbyBtYW55IGVsZW1lbnQt
aWQgcGFyYW1ldGVycyIsICJiYWNrZ3JvdW5kLWltYWdlIiwgIiNlbGVtZW50QSAjZWxlbWVudEIi
KTsKK3Rlc3RJbnZhbGlkSW1hZ2VTZXQoIlRvbyBtYW55IGVsZW1lbnQtaWQgcGFyYW1ldGVycyIs
ICJiYWNrZ3JvdW5kLWltYWdlIiwgIiNlbGVtZW50QywgI2VsZW1lbnREIik7Cit0ZXN0SW52YWxp
ZEltYWdlU2V0KCJObyAjIiwgImJhY2tncm91bmQtaW1hZ2UiLCAiZWxlbWVudEUiKTsKKworc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L3NjcmlwdC10ZXN0cy93ZWJraXQtZWxlbWVudC1wYXJzaW5nLmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3Mvc2NyaXB0LXRlc3RzL3dlYmtpdC1lbGVtZW50LXBhcnNpbmcuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODg5ZTM3M2M5NGJhZGIyNzQzYjQyY2FkODZjZGIwNTYyYjllZGFlZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3NjcmlwdC10ZXN0cy93ZWJraXQtZWxlbWVudC1wYXJz
aW5nLmpzCkBAIC0wLDAgKzEsNjEgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoZSBwYXJzaW5nIG9m
IHRoZSAtd2Via2l0LWVsZW1lbnQgZnVuY3Rpb24uIik7CisKK2Z1bmN0aW9uIGpzV3JhcHBlckNs
YXNzKG5vZGUpCit7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gIltudWxsXSI7Cisg
ICAgdmFyIHN0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkobm9kZSk7Cisg
ICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoOCwgc3RyaW5nLmxlbmd0aCAtIDkpOworfQorCitmdW5j
dGlvbiBzaG91bGRCZVR5cGUoZXhwcmVzc2lvbiwgY2xhc3NOYW1lLCBwcm90b3R5cGVOYW1lLCBj
b25zdHJ1Y3Rvck5hbWUpCit7CisgICAgaWYgKCFwcm90b3R5cGVOYW1lKQorICAgICAgICBwcm90
b3R5cGVOYW1lID0gY2xhc3NOYW1lICsgIlByb3RvdHlwZSI7CisgICAgaWYgKCFjb25zdHJ1Y3Rv
ck5hbWUpCisgICAgICAgIGNvbnN0cnVjdG9yTmFtZSA9IGNsYXNzTmFtZSArICJDb25zdHJ1Y3Rv
ciI7CisgICAgc2hvdWxkQmUoImpzV3JhcHBlckNsYXNzKCIgKyBleHByZXNzaW9uICsgIikiLCAi
JyIgKyBjbGFzc05hbWUgKyAiJyIpOworICAgIHNob3VsZEJlKCJqc1dyYXBwZXJDbGFzcygiICsg
ZXhwcmVzc2lvbiArICIuX19wcm90b19fKSIsICInIiArIHByb3RvdHlwZU5hbWUgKyAiJyIpOwor
ICAgIHNob3VsZEJlKCJqc1dyYXBwZXJDbGFzcygiICsgZXhwcmVzc2lvbiArICIuY29uc3RydWN0
b3IpIiwgIiciICsgY29uc3RydWN0b3JOYW1lICsgIiciKTsKK30KKworLy8gVGhlc2UgaGF2ZSB0
byBiZSBnbG9iYWwgZm9yIHRoZSB0ZXN0IGhlbHBlcnMgdG8gc2VlIHRoZW0uCit2YXIgZWxlbWVu
dFJ1bGUsIHN1YlJ1bGU7CisKK2Z1bmN0aW9uIHRlc3RlbGVtZW50UnVsZShkZXNjcmlwdGlvbiwg
cHJvcGVydHksIHJ1bGUsIGV4cGVjdGVkVGV4dHMpCit7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKGRlc2NyaXB0aW9uICsgIiA6ICIgKyBydWxlKTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBkaXYuc2V0QXR0cmlidXRlKCJzdHlsZSIsIHBy
b3BlcnR5ICsgIjogLXdlYmtpdC1lbGVtZW50KCIgKyBydWxlICsgIikiKTsKKyAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICBlbGVtZW50UnVsZSA9IGRpdi5zdHlsZS5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KTsKKyAgICBzaG91bGRCZVR5cGUoImVsZW1lbnRS
dWxlIiwgIkNTU1ZhbHVlTGlzdCIpOworCisgICBpZiAoZWxlbWVudFJ1bGUpIHsKKyAgICAgICAg
aWYgKGpzV3JhcHBlckNsYXNzKGVsZW1lbnRSdWxlWzBdKSA9PSAiQ1NTVmFsdWVMaXN0Iikgewor
ICAgICAgICAgICAgZWxlbWVudFJ1bGUgPSBlbGVtZW50UnVsZVswXTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmIChlbGVtZW50UnVsZSkgeworICAgICAgICAgICAgc3ViUnVsZSA9IGVsZW1l
bnRSdWxlWzBdLmNzc1RleHQ7CisgICAgICAgICAgICBzaG91bGRCZSgic3ViUnVsZSIsICInIiAr
IGV4cGVjdGVkVGV4dHMgKyAiJyIpOworICAgIH0KKworICAgIGRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQoZGl2KTsKK30KKwordGVzdGVsZW1lbnRSdWxlKCJTaW5nbGUgdmFsdWUgZm9yIGJhY2tn
cm91bmQtaW1hZ2UiLAorICAgICAgICAgICAgICAgICJiYWNrZ3JvdW5kLWltYWdlIiwKKyAgICAg
ICAgICAgICAgICAiI2VsZW1lbnRBIiwKKyAgICAgICAgICAgICAgICAiI2VsZW1lbnRBIik7CisK
K3Rlc3RlbGVtZW50UnVsZSgiU2luZ2xlIHZhbHVlIGZvciBiYWNrZ3JvdW5kLWltYWdlIiwKKyAg
ICAgICAgICAgICAgICAiYmFja2dyb3VuZC1pbWFnZSIsCisgICAgICAgICAgICAgICAgIiNkaXYi
LAorICAgICAgICAgICAgICAgICIjZGl2Iik7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtZWxlbWVudC1wYXJzaW5n
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3dlYmtpdC1lbGVtZW50LXBhcnNp
bmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlNzgxYjliZTU2Y2ExZjQzMmIzYTViOGFiNDFl
ZDQ5OTIzNmRhN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJr
aXQtZWxlbWVudC1wYXJzaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitUZXN0IHRo
ZSBwYXJzaW5nIG9mIHRoZSAtd2Via2l0LWVsZW1lbnQgZnVuY3Rpb24uCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCisKK1NpbmdsZSB2YWx1ZSBmb3IgYmFja2dyb3VuZC1pbWFnZSA6
ICNlbGVtZW50QQorUEFTUyBqc1dyYXBwZXJDbGFzcyhlbGVtZW50UnVsZSkgaXMgJ0NTU1ZhbHVl
TGlzdCcKK1BBU1MganNXcmFwcGVyQ2xhc3MoZWxlbWVudFJ1bGUuX19wcm90b19fKSBpcyAnQ1NT
VmFsdWVMaXN0UHJvdG90eXBlJworUEFTUyBqc1dyYXBwZXJDbGFzcyhlbGVtZW50UnVsZS5jb25z
dHJ1Y3RvcikgaXMgJ0NTU1ZhbHVlTGlzdENvbnN0cnVjdG9yJworUEFTUyBzdWJSdWxlIGlzICcj
ZWxlbWVudEEnCisKK1NpbmdsZSB2YWx1ZSBmb3IgYmFja2dyb3VuZC1pbWFnZSA6ICNkaXYKK1BB
U1MganNXcmFwcGVyQ2xhc3MoZWxlbWVudFJ1bGUpIGlzICdDU1NWYWx1ZUxpc3QnCitQQVNTIGpz
V3JhcHBlckNsYXNzKGVsZW1lbnRSdWxlLl9fcHJvdG9fXykgaXMgJ0NTU1ZhbHVlTGlzdFByb3Rv
dHlwZScKK1BBU1MganNXcmFwcGVyQ2xhc3MoZWxlbWVudFJ1bGUuY29uc3RydWN0b3IpIGlzICdD
U1NWYWx1ZUxpc3RDb25zdHJ1Y3RvcicKK1BBU1Mgc3ViUnVsZSBpcyAnI2RpdicKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJraXQtZWxlbWVudC1wYXJzaW5nLWludmFsaWQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2Via2l0LWVsZW1lbnQtcGFyc2luZy1pbnZh
bGlkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjI5NWJhYWNkYzJhMzU2YjIzN2FlNzljMjcx
M2E3MmVlM2E1YTNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2Vi
a2l0LWVsZW1lbnQtcGFyc2luZy1pbnZhbGlkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBA
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTY6IG51bGwKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAx
NjogbnVsbAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE2OiBudWxsCitUZXN0IHRoZSBwYXJzaW5n
IG9mIHRoZSAtd2Via2l0LWVsZW1lbnQgZnVuY3Rpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCisKK1RvbyBtYW55IGVsZW1lbnQtaWQgcGFyYW1ldGVycyA6ICNlbGVtZW50QSAj
ZWxlbWVudEIKK1BBU1MgY3NzUnVsZSBpcyBudWxsCisKK1RvbyBtYW55IGVsZW1lbnQtaWQgcGFy
YW1ldGVycyA6ICNlbGVtZW50QywgI2VsZW1lbnRECitQQVNTIGNzc1J1bGUgaXMgbnVsbAorCitO
byAjIDogZWxlbWVudEUKK1BBU1MgY3NzUnVsZSBpcyBudWxsCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3Mvd2Via2l0LWVsZW1lbnQtcGFyc2luZy1pbnZhbGlkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy93ZWJraXQtZWxlbWVudC1wYXJzaW5nLWludmFsaWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42OGI4MjY1ZTg3ZTkzYWFkNWNjNGVhNmY1NjA1YTc1ODQ3YzRhMDdhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2Via2l0LWVsZW1lbnQtcGFyc2luZy1pbnZhbGlk
Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy93ZWJraXQtZWxlbWVudC1wYXJzaW5nLWludmFsaWQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2Via2l0
LWVsZW1lbnQtcGFyc2luZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvd2Via2l0LWVsZW1l
bnQtcGFyc2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1YzhjYjY0NGU1OTgwYmMxY2RhZDBlMzE0N2Zl
NzE2NmI0ZWI0NmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy93ZWJr
aXQtZWxlbWVudC1wYXJzaW5nLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy93ZWJraXQtZWxlbWVudC1wYXJzaW5nLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163180</attachid>
            <date>2012-09-10 12:23:02 -0700</date>
            <delta_ts>2012-09-10 15:26:08 -0700</delta_ts>
            <desc>CSS Element grammar and parsing patch. Not full implementation.</desc>
            <filename>bug-44650-20120910122238.patch</filename>
            <type>text/plain</type>
            <size>34587</size>
            <attacher name="Anish">bhayani</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNmNGVhZGE3OGVmNjM1MmExN2RjODRl
ZThhZDUzMjhlZGMwMmVjYjkuLmU3YjZjMzIyYjc4YzE1YjViNjJjOGZhZGVmYmYwOWM4ODg1YzQ3
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMTAgIEFuaXNoIEJoYXlhbmkgIDxhbmlz
aC5iaGF5YW5pQGdtYWlsLmNvbT4KKworICAgICAgICBTdXBwb3J0IHBhcnNpbmcgLXdlYmtpdC1l
bGVtZW50KCkgQ1NTIGltYWdlIHR5cGXCoHdpdGggRU5BQkxFX0NTU19FTEVNRU5UCisgICAgICAg
IFNpbmNlIG9ubHkgZ3JhbW1hciBhbmQgcGFyc2luZyBpcyBpbXBsZW1lbnRlZCwgb25seSBlbmFi
bGVzIG9uIE1BQyBQbGFmb3JtCisgICAgICAgIGFuZCB0ZXN0cyBhcmUgc2tpcHBlZCBvbiBvdGhl
cnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDY1
MAorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgRGVmaW5lZCBX
RUJLSVRfRUxFTUVOVCB0byBydW4gb24gY2VydGFpbiBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiB3
dGYvUGxhdGZvcm0uaDoKKwogMjAxMi0wOS0wOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4ZWQgQVNTRVJUKCkgYW5kIEFTU0VSVF9BVCgpIG1hY3JvcyBzbyB0
aGF0IHRoZXkgY2FuIGJlIHVzZWQgaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3N2RmNzQ1ZWJjNjgxYzEyMzc0
ZjYyOTA5MjQzYjIwNmMxMGM2ZTNjLi44Y2YyYzk5MmM2MmYxOTY4ODRjZDIwOGMyNmE3ZDQzZjJm
MTQwZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTItMDktMTAgIEFuaXNoIEJo
YXlhbmkgIDxhbmlzaC5iaGF5YW5pQGdtYWlsLmNvbT4KKworICAgICAgICBTdXBwb3J0IGVsZW1l
bnQoKSBDU1MgaW1hZ2UgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDQ2NTAKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisg
ICAgICAgIFVwZGF0ZWQgdGhlIGdyYW1tYXIgdG8gbm90aWNlIElEU0VMIChpZGVudGlmaWVyIHNl
bGVjdG9yKSBmb3IgdGVybSAtd2Via2l0LWVsZW1lbnQoI2VsZW1lbnRpZCkgYW5kIAorICAgICAg
ICBzYXZlcyB0aGUgc3RyaW5nICgjZWxlbWVudElEKSBhcyBDU1NfRUxFTUVOVF9GVU5DVElPTiAg
Q1NTUGFyc2VyCisgICAgICAgIHBhcnNlcyB0aGUgdG9rZW4gYW5kIGNyZWF0ZXMgYSB2YWx1ZUxp
c3Qgd2l0aCBhIENTU1ByaW1pdGl2ZVZhbHVlLiBXZWJraXQtZWxlbWVudCBpcyB0cmVhdGVkIAor
ICAgICAgICBzaW1pbGFybHkgdG8gd2Via2l0LWltYWdlLXNldCBmb2xsb3dpbmcgdGhlIHNhbWUg
cGF0aCB0aHJvdWdoIHRoZSBwYXJzZXIgaW5jbHVkaW5nIAorICAgICAgICBwYXJzZUZpbGxJbWFn
ZSgpLiBDU1NFbGVtZW50VmFsdWUgY2xhc3MgYWRkZWQgYW5kIGFwcHJvcHJpYXRlIENTU1ZhbHVl
IGNsYXNzZXMgCisgICAgICAgIHdlcmUgdXBkYXRlZC4KKyAgICAgICAgRmVhdHVyZSBpcyBjb3B5
IG9mIC1tb3otZWxlbWVudCgpOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVn
LmNnaT9pZD01MDY4MjYjYXR0YWNoXzQ2Mzk2NQorICAgICAgICBDU1M0IFNwZWM6IGh0dHA6Ly9k
ZXYudzMub3JnL2Nzc3dnL2NzczQtaW1hZ2VzLyNlbGVtZW50LW5vdGF0aW9uCisKKyAgICAgICAg
VGVzdHM6IGZhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFyc2luZy1pbnZhbGlk
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQt
cGFyc2luZy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY3NzL0NTU0VsZW1lbnRWYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NFbGVtZW50VmFsdWU6OkNTU0VsZW1lbnRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NFbGVtZW50VmFsdWU6OmN1c3RvbUNzc1RleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRWxlbWVudFZhbHVlOjpjbG9uZUZvckNTU09NKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0VsZW1lbnRWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKToKKyAgICAgICAgKiBjc3MvQ1NTRWxlbWVudFZhbHVlLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChDU1NFbGVtZW50VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRWxlbWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6Cisg
ICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRmlsbElt
YWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVdlYktpdEVsZW1lbnQpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAg
KiBjc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclZh
bHVlOjpjcmVhdGVDU1NWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRDU1NVbml0VHlwZUZvckRvdWJsZUNvbnZlcnNp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNsZWFudXApOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmdldFN0cmluZ1ZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjdXN0b21Dc3NUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBj
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgKENTU1ByaW1pdGl2ZVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjppc1dlYktpdEVsZW1lbnQpOgorICAg
ICAgICAqIGNzcy9DU1NWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6cmVw
b3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1RleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVmFsdWU6OmNsb25lRm9yQ1NTT00pOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5oOgorICAg
ICAgICAoQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzQ1NTRWxlbWVu
dFZhbHVlKToKKwogMjAxMi0wOS0xMCAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFkb2JlLmNvbT4K
IAogICAgICAgICBbQ1NTIEV4bHVzaW9uc10gYWRkIHN1cHBvcnQgZm9yIHRoZSBiYXNpYyBzaGFw
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCmluZGV4IGViMGU3MzIyOGI0MjdhYzgzMGNmM2I5ZmYwYjU3MzkyODI1YzJj
NjcuLjAzNzFkMDE0Y2NmNWI5N2Q2ZTQ0YWQ4ZDZkZWQxYzZiZDZiN2NmMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0u
aApAQCAtMTA0OSw2ICsxMDQ5LDExIEBACiAjZGVmaW5lIEVOQUJMRV9DU1NfSU1BR0VfU0VUIDEK
ICNlbmRpZgogCisvKiBXZWJLaXQgRWxlbWVudCBhcyBiYWNrZ3JvdW5kICovCisjaWYgUExBVEZP
Uk0oTUFDKQorI2RlZmluZSBFTkFCTEVfQ1NTX0VMRU1FTlQgMQorI2VuZGlmCisKIAogLyogUXQg
YWx3YXlzIHVzZXMgVGV4dHVyZSBNYXBwZXIgKi8KICNpZiBQTEFURk9STShRVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NzEx
MDM3YzJlNzFlNzc4ODRjMDJkN2Y3M2EwODBjMjdhZWVkYTg4Li42N2UzYWVhODk2ZDYzZTUwNTI0
YWEwMTVjZWJjMDU5Yzc3ZTgyMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjMyLDYgKzYyMzIsOCBAQAogCQlGNTJBRDVF
NDE1MzQyNDVGMDA1OUZCRTYgLyogRW1wdHlDbGllbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MkFENUUzMTUzNDI0NUYwMDU5RkJFNiAvKiBF
bXB0eUNsaWVudHMuY3BwICovOyB9OwogCQlGNTQ0Rjc4ODE1Q0ZCMkE4MDBBRjMzQTggLyogTnVt
YmVyTG9jYWxpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY1NDRGNzg2MTVDRkIyQTgwMEFGMzNBOCAvKiBOdW1iZXJMb2NhbGl6ZXIuY3BwICov
OyB9OwogCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBBRjMzQTggLyogTnVtYmVyTG9jYWxpemVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTQ0Rjc4NzE1Q0ZC
MkE4MDBBRjMzQTggLyogTnVtYmVyTG9jYWxpemVyLmggKi87IH07CisJCUY1NDkzRTY5MTVFREE3
QUEwMDk3RkU1NSAvKiBDU1NFbGVtZW50VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU0OTNFNjcxNUVEQTdBQTAwOTdGRTU1IC8qIENTU0Vs
ZW1lbnRWYWx1ZS5jcHAgKi87IH07CisJCUY1NDkzRTZBMTVFREE3QUEwMDk3RkU1NSAvKiBDU1NF
bGVtZW50VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY1NDkzRTY4MTVFREE3QUEwMDk3RkU1NSAvKiBDU1NFbGVtZW50VmFsdWUuaCAqLzsgfTsK
IAkJRjU1QjNEQUQxMjUxRjEyRDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5wdXRUeXBlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1NUIzRDc5MTI1MUYx
MkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0VHlwZS5jcHAgKi87IH07CiAJCUY1NUIzREFFMTI1
MUYxMkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1QjNEN0ExMjUxRjEyRDAwM0VGMjY5IC8qIEJh
c2VUZXh0SW5wdXRUeXBlLmggKi87IH07CiAJCUY1NUIzREFGMTI1MUYxMkQwMDNFRjI2OSAvKiBC
dXR0b25JbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjU1QjNEN0IxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlwZS5jcHAg
Ki87IH07CkBAIC0xMzYyNSw2ICsxMzYyNyw4IEBACiAJCUY1MkFENUUzMTUzNDI0NUYwMDU5RkJF
NiAvKiBFbXB0eUNsaWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRW1wdHlDbGllbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjU0NEY3
ODYxNUNGQjJBODAwQUYzM0E4IC8qIE51bWJlckxvY2FsaXplci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOdW1iZXJMb2NhbGl6ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNTQ0Rjc4NzE1Q0ZCMkE4MDBBRjMzQTggLyogTnVtYmVyTG9jYWxp
emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE51bWJlckxvY2FsaXplci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNTQ5M0U2NzE1RURBN0FBMDA5N0ZFNTUg
LyogQ1NTRWxlbWVudFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENTU0VsZW1lbnRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1
NDkzRTY4MTVFREE3QUEwMDk3RkU1NSAvKiBDU1NFbGVtZW50VmFsdWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRWxlbWVudFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY1NUIzRDc5MTI1MUYxMkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0VHlw
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlVGV4dElucHV0
VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1NUIzRDdBMTI1MUYxMkQw
MDNFRjI2OSAvKiBCYXNlVGV4dElucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCYXNlVGV4dElucHV0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNTVCM0Q3QjEyNTFGMTJEMDAzRUYyNjkgLyogQnV0dG9uSW5wdXRUeXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ1dHRvbklucHV0VHlwZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTA2OCw2ICsyMTA3Miw4IEBACiAJCUY1MjNEMTg0
MDJERTQyRTgwMTg2MzVDQSAvKiBjc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCUY1NDkzRTY3MTVFREE3QUEwMDk3RkU1NSAvKiBDU1NFbGVtZW50VmFs
dWUuY3BwICovLAorCQkJCUY1NDkzRTY4MTVFREE3QUEwMDk3RkU1NSAvKiBDU1NFbGVtZW50VmFs
dWUuaCAqLywKIAkJCQlGQkQ2QUY4NDE1RUYyMUQ0MDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0
aW9ucy5jcHAgKi8sCiAJCQkJRkJENkFGODUxNUVGMjFENDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVG
dW5jdGlvbnMuaCAqLywKIAkJCQk5M0NBNEM5QzA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXRva2Vu
aXplciAqLywKQEAgLTI1NTMxLDYgKzI1NTM3LDcgQEAKIAkJCQk5Mzc3QUJBMDE1REVGRUVGMDAz
MUZEMDQgLyogUGFnaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0NzZBQTgxNURDNEJC
MTAwMzA1REIyIC8qIFdyaXRpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUI4MDFCQjE1
RUM1OEM3MDBDRTY0M0QgLyogTGF5b3V0VHlwZXNJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVycyAq
LywKKwkJCQlGNTQ5M0U2QTE1RURBN0FBMDA5N0ZFNTUgLyogQ1NTRWxlbWVudFZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4ODE1RUYyNUM5MDA4QjcxMTAgLyogQ1NTQmFzaWNTaGFw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZCRDZBRjhBMTVFRjI1REYwMDhCNzExMCAvKiBCYXNp
Y1NoYXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4QzE1RUYyNjA0MDA4
QjcxMTAgLyogQmFzaWNTaGFwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjg2MjMsNiArMjg2MzAs
NyBAQAogCQkJCTUyQjZDOUM1MTVFM0Y0REYwMDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyQ0NBOUUyMTVFM0Y2MkMwMDUzQzc3RiAvKiBKU0RP
TU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJDQ0E5RTkxNUUz
RjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb24ubW0gaW4gU291cmNlcyAq
LywKKwkJCQlGNTQ5M0U2OTE1RURBN0FBMDA5N0ZFNTUgLyogQ1NTRWxlbWVudFZhbHVlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZCRDZBRjg5MTVFRjI1REIwMDhCNzExMCAvKiBCYXNpY1NoYXBl
RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZCRDZBRjhCMTVFRjI1RTUwMDhCNzEx
MCAvKiBDU1NCYXNpY1NoYXBlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQkQ2QUY4RDE1RUYy
NjBBMDA4QjcxMTAgLyogQmFzaWNTaGFwZXMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRWxlbWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NFbGVtZW50VmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1MmJhM2M0MWRjYTdhODVhOGIx
NWJjYWNiOGM0NWQ1YmQ3MjQxMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRWxlbWVudFZhbHVlLmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTRWxlbWVu
dFZhbHVlLmgiCisgCisjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgor
CisjaWYgRU5BQkxFKENTU19FTEVNRU5UKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitD
U1NFbGVtZW50VmFsdWU6OkNTU0VsZW1lbnRWYWx1ZSgpCisgICAgOiBDU1NWYWx1ZUxpc3QoQ1NT
RWxlbWVudENsYXNzLCBTcGFjZVNlcGFyYXRvcikKK3sKK30KKyAgICAKK0NTU0VsZW1lbnRWYWx1
ZTo6Q1NTRWxlbWVudFZhbHVlKGNvbnN0IENTU0VsZW1lbnRWYWx1ZSYgY2xvbmVGcm9tKQorICAg
IDogQ1NTVmFsdWVMaXN0KGNsb25lRnJvbSkKK3sKK30KKyAgICAKK1N0cmluZyBDU1NFbGVtZW50
VmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAoreworICAgIHJldHVybiAiLXdlYmtpdC1lbGVt
ZW50KCIgKyBDU1NWYWx1ZUxpc3Q6OmN1c3RvbUNzc1RleHQoKSArICIpIjsKK30KKyAgICAKK1Bh
c3NSZWZQdHI8Q1NTRWxlbWVudFZhbHVlPiBDU1NFbGVtZW50VmFsdWU6OmNsb25lRm9yQ1NTT00o
KSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTRWxlbWVudFZhbHVlKCp0aGlz
KSk7Cit9CisgICAgCit2b2lkIENTU0VsZW1lbnRWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAg
TWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9y
eVR5cGVzOjpDU1MpOworICAgIENTU1ZhbHVlTGlzdDo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKG1lbW9yeU9iamVjdEluZm8pOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKENTU19FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0VsZW1lbnRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0VsZW1lbnRW
YWx1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE5YmVkMjhlZDUxZWMwZmM5MTkyNmU0ZDg1MDZkNmU2MDE5MWZj
ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRWxlbWVudFZhbHVl
LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0
ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBDU1NFbGVtZW50VmFsdWVfaAorI2RlZmluZSBDU1NFbGVtZW50VmFsdWVfaAorCisjaWYg
RU5BQkxFKENTU19FTEVNRU5UKQorCisjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3Mg
Q1NTRWxlbWVudFZhbHVlIDogcHVibGljIENTU1ZhbHVlTGlzdCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q1NTRWxlbWVudFZhbHVlPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NFbGVtZW50VmFsdWUoKSk7CisgICAgfQorICAgICAgICAK
KyAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OworICAgICAgICAKKyAgICBQYXNzUmVm
UHRyPENTU0VsZW1lbnRWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OworICAgICAgICAKKyAg
ICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CisgICAgICAgIAorcHJpdmF0ZToKKyAgICBDU1NFbGVtZW50VmFsdWUoKTsKKyAgICBDU1NF
bGVtZW50VmFsdWUoY29uc3QgQ1NTRWxlbWVudFZhbHVlJiBjbG9uZUZyb20pOworfTsKKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfRUxFTUVOVCkK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCA1MTY3NTM3ZjcxYjdlNDllNTg0
ZDc5ODJkYzQ1YzA1NWQ4OTM4NTA5Li5hYjQyNGQ0MWM0Njk1NWQ2YzMwZDYzNmY0NDUxMTdiNDA0
MDYwMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGlj
IGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3QgY2hhciopCiAKICV9CiAKLSVleHBl
Y3QgNjMKKyVleHBlY3QgNjQKIAogJW5vbmFzc29jIExPV0VTVF9QUkVDCiAKQEAgLTE0NTUsNiAr
MTQ1NSwxMyBAQCB0ZXJtOgogICAgICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
VkFSSUFCTEVfTkFNRTsKICNlbmRpZgogICB9CisgIHwgSURTRUwgbWF5YmVfc3BhY2UgeworI2lm
IEVOQUJMRShDU1NfRUxFTUVOVCkKKyAgICAgICQkLmlkID0gMDsKKyAgICAgICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VMRU1FTlRfRlVOQ1RJT047CisgICAgICAkJC5zdHJpbmcg
PSAkMTsKKyNlbmRpZgorICB9CiAgIC8qIEZJWE1FOiBhY2NvcmRpbmcgdG8gdGhlIHNwZWNzIGEg
ZnVuY3Rpb24gY2FuIGhhdmUgYSB1bmFyeV9vcGVyYXRvciBpbiBmcm9udC4gSSBrbm93IG5vIGNh
c2Ugd2hlcmUgdGhpcyBtYWtlcyBzZW5zZSAqLwogICB8IGZ1bmN0aW9uIHsKICAgICAgICQkID0g
JDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDI4Y2UxMzE1N2Y5NTU0YjZhOTJmNzVl
MDhhNWRhZWQ5ZmFlNTE4ZTMuLmQ0OWEwNmI1MjQ5MmM3NTFkYjgxZTZmYjMzOTgzMzlhZDg4ZTA0
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC01Nyw2ICs1Nyw5IEBACiAjaWYgRU5B
QkxFKENTU19WQVJJQUJMRVMpCiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVWYWx1ZS5oIgogI2VuZGlm
CisjaWYgRU5BQkxFKENTU19FTEVNRU5UKQorI2luY2x1ZGUgIkNTU0VsZW1lbnRWYWx1ZS5oIgor
I2VuZGlmCiAjaW5jbHVkZSAiQ291bnRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCkBAIC0zNTA5LDYgKzM1MTIsMTIgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlQ29udGVudChDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogI2VuZGlmCisjaWYgRU5BQkxFKENTU19FTEVNRU5UKQorICAgICAgICAg
ICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWwtPmZ1bmN0aW9uLT5uYW1lLCAiLXdl
YmtpdC1lbGVtZW50KCIpKSB7CisgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBwYXJzZVdl
YktpdEVsZW1lbnQobV92YWx1ZUxpc3QuZ2V0KCkpOworICAgICAgICAgICAgICAgIGlmICghcGFy
c2VkVmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAg
ICAgICAgICAgfSBlbHNlIGlmIChpc0dlbmVyYXRlZEltYWdlVmFsdWUodmFsKSkgewogICAgICAg
ICAgICAgICAgIGlmICghcGFyc2VHZW5lcmF0ZWRJbWFnZShtX3ZhbHVlTGlzdC5nZXQoKSwgcGFy
c2VkVmFsdWUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTk2LDYg
KzM2MDUsMTQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmlsbEltYWdlKENTU1BhcnNlclZhbHVl
TGlzdCogdmFsdWVMaXN0LCBSZWZQdHI8Q1NTVmFsdWU+JgogICAgIGlmIChpc0dlbmVyYXRlZElt
YWdlVmFsdWUodmFsdWVMaXN0LT5jdXJyZW50KCkpKQogICAgICAgICByZXR1cm4gcGFyc2VHZW5l
cmF0ZWRJbWFnZSh2YWx1ZUxpc3QsIHZhbHVlKTsKICAgICAKKyNpZiBFTkFCTEUoQ1NTX0VMRU1F
TlQpCisgICAgaWYgKHZhbHVlTGlzdC0+Y3VycmVudCgpLT51bml0ID09IENTU1BhcnNlclZhbHVl
OjpGdW5jdGlvbiAmJiBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZUxpc3QtPmN1cnJlbnQoKS0+ZnVu
Y3Rpb24tPm5hbWUsICItd2Via2l0LWVsZW1lbnQoIikpIHsKKyAgICAgICAgdmFsdWUgPSBwYXJz
ZVdlYktpdEVsZW1lbnQobV92YWx1ZUxpc3QuZ2V0KCkpOworICAgICAgICBpZiAodmFsdWUpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUo
Q1NTX0lNQUdFX1NFVCkKICAgICBpZiAodmFsdWVMaXN0LT5jdXJyZW50KCktPnVuaXQgPT0gQ1NT
UGFyc2VyVmFsdWU6OkZ1bmN0aW9uICYmIGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlTGlzdC0+Y3Vy
cmVudCgpLT5mdW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtaW1hZ2Utc2V0KCIpKSB7CiAgICAgICAg
IHZhbHVlID0gcGFyc2VJbWFnZVNldChtX3ZhbHVlTGlzdC5nZXQoKSk7CkBAIC03MjE0LDYgKzcy
MzEsMzMgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUltYWdlUmVzb2x1
dGlvbihDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGkKICAgICByZXR1cm4gbGlzdDsKIH0KICNl
bmRpZgorICAgIAorI2lmIEVOQUJMRShDU1NfRUxFTUVOVCkKK1Bhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU1BhcnNlcjo6cGFyc2VXZWJLaXRFbGVtZW50KENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVM
aXN0KQoreworICAgIENTU1BhcnNlclZhbHVlKiBmdW5jdGlvbiA9IHZhbHVlTGlzdC0+Y3VycmVu
dCgpOworICAgIAorICAgIGlmIChmdW5jdGlvbi0+dW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6RnVu
Y3Rpb24pCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIENTU1BhcnNlclZhbHVlTGlzdCog
ZnVuY3Rpb25BcmdzID0gdmFsdWVMaXN0LT5jdXJyZW50KCktPmZ1bmN0aW9uLT5hcmdzLmdldCgp
OworICAgIGlmICghZnVuY3Rpb25BcmdzIHx8ICFmdW5jdGlvbkFyZ3MtPnNpemUoKSB8fCAhZnVu
Y3Rpb25BcmdzLT5jdXJyZW50KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIGlmIChm
dW5jdGlvbkFyZ3MtPnNpemUoKSAhPSAxKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0
cjxDU1NFbGVtZW50VmFsdWU+IHdlYkVsZW0gPSBDU1NFbGVtZW50VmFsdWU6OmNyZWF0ZSgpOwor
ICAgIAorICAgIENTU1BhcnNlclZhbHVlKiBhcmcgPSBmdW5jdGlvbkFyZ3MtPmN1cnJlbnQoKTsK
KyAgICBpZiAoYXJnLT51bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRUxFTUVOVF9GVU5D
VElPTikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB3ZWJFbGVtLT5hcHBlbmQoY3NzVmFsdWVQ
b29sKCkuY3JlYXRlVmFsdWUoYXJnLT5zdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRUxF
TUVOVF9GVU5DVElPTikpOworICAgIAorICAgIHJldHVybiB3ZWJFbGVtOworfQorI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNl
cjo6cGFyc2VJbWFnZVNldChDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuaAppbmRleCBlMzMwOTBmODMyNmZhNjRiM2MyZDNhZWI4M2ViNDZiMzRkMzA2YmQ5
Li43MDU1NWQzZTUwNmI3ZGViYThmOWI0MTk5YWQ0N2JlMDkwZDFlNTRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5oCkBAIC0yMTMsNiArMjEzLDEwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0lN
QUdFX1JFU09MVVRJT04pCiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VJbWFnZVJlc29s
dXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0Kik7CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoQ1NT
X0VMRU1FTlQpCisgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VXZWJLaXRFbGVtZW50KENT
U1BhcnNlclZhbHVlTGlzdCopOworI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkK
ICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUltYWdlU2V0KENTU1BhcnNlclZhbHVlTGlz
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAppbmRleCA4Yjc2MjU1Nzhm
NGY1MmMzNjg5ZmFjNGM2ZmUwNzNkZmNkOWZlYzg1Li40N2NlMjNlYTEyNmM1YThjMWJjYmNjMjMz
NzlhMDExNzYwYjMwYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
VmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcApA
QCAtOTAsNiArOTAsOSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXJWYWx1ZTo6Y3Jl
YXRlQ1NTVmFsdWUoKQogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9OQU1FOgogI2VuZGlmCisjaWYgRU5BQkxFKENTU19F
TEVNRU5UKQorICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTEVNRU5UX0ZVTkNUSU9O
OgorI2VuZGlmCiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xP
UjoKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3RyaW5nLCBwcmlt
aXRpdmVVbml0KTsKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IGMxYmQwMjIzM2E1
ODczYTJjZjk1OWQxODJmMzQ2NjUwY2JhYzI4NDUuLmNkYzljMjRjOTU1Y2MzMTIwZWY3YmM5Njgx
ZTlkOGExMTlkOTAzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cApAQCAtMTE2LDYgKzExNiw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTVW5pdFR5
cGVGb3JEb3VibGVDb252ZXJzaW9uKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0CiAjaWYgRU5BQkxF
KENTU19WQVJJQUJMRVMpCiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6IENTU19WQVJJQUJM
RV9OQU1FOgogI2VuZGlmCisjaWYgRU5BQkxFKENTU19FTEVNRU5UKQorICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OiBDU1NfRUxFTUVOVF9GVU5DVElPTjoKKyNlbmRpZgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCkBAIC0zNzAsNiArMzczLDkgQEAgdm9pZCBDU1NQcmltaXRpdmVW
YWx1ZTo6Y2xlYW51cCgpCiAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxVbml0VHlwZXM+KG1fcHJp
bWl0aXZlVW5pdFR5cGUpKSB7CiAgICAgY2FzZSBDU1NfU1RSSU5HOgogICAgIGNhc2UgQ1NTX1VS
SToKKyNpZiBFTkFCTEUoQ1NTX0VMRU1FTlQpCisgICAgY2FzZSBDU1NfRUxFTUVOVF9GVU5DVElP
TjoKKyNlbmRpZgogICAgIGNhc2UgQ1NTX0FUVFI6CiAgICAgY2FzZSBDU1NfQ09VTlRFUl9OQU1F
OgogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQpAQCAtNzQ3LDYgKzc1Myw5IEBAIFN0cmluZyBD
U1NQcmltaXRpdmVWYWx1ZTo6Z2V0U3RyaW5nVmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CiAgICAgICAgIGNhc2UgQ1NTX1NUUklORzoKICAgICAgICAgY2FzZSBDU1NfQVRUUjoKICAgICAg
ICAgY2FzZSBDU1NfVVJJOgorI2lmIEVOQUJMRShDU1NfRUxFTUVOVCkKKyAgICAgICAgY2FzZSBD
U1NfRUxFTUVOVF9GVU5DVElPTjoKKyNlbmRpZgogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQog
ICAgICAgICBjYXNlIENTU19WQVJJQUJMRV9OQU1FOgogI2VuZGlmCkBAIC03NjcsNiArNzc2LDkg
QEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRTdHJpbmdWYWx1ZSgpIGNvbnN0CiAgICAg
ICAgIGNhc2UgQ1NTX1NUUklORzoKICAgICAgICAgY2FzZSBDU1NfQVRUUjoKICAgICAgICAgY2Fz
ZSBDU1NfVVJJOgorI2lmIEVOQUJMRShDU1NfRUxFTUVOVCkKKyAgICAgICAgY2FzZSBDU1NfRUxF
TUVOVF9GVU5DVElPTjoKKyNlbmRpZgogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgICAg
ICBjYXNlIENTU19WQVJJQUJMRV9OQU1FOgogI2VuZGlmCkBAIC0xMTI4LDYgKzExNDAsMTEgQEAg
U3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICAgICAg
ICAgIHRleHQgPSAiLXdlYmtpdC12YXIoIiArIFN0cmluZyhtX3ZhbHVlLnN0cmluZykgKyAiKSI7
CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfRUxFTUVOVCkKKyAg
ICAgICAgY2FzZSBDU1NfRUxFTUVOVF9GVU5DVElPTjoKKyAgICAgICAgICAgIHRleHQgPSAiIyIg
KyBTdHJpbmcobV92YWx1ZS5zdHJpbmcpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAg
ICB9CiAKICAgICBBU1NFUlQoIWNzc1RleHRDYWNoZSgpLmNvbnRhaW5zKHRoaXMpKTsKQEAgLTEx
ODAsNiArMTE5Nyw5IEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ByaW1pdGl2
ZVZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICBzd2l0Y2ggKG1fcHJpbWl0aXZlVW5p
dFR5cGUpIHsKICAgICBjYXNlIENTU19TVFJJTkc6CiAgICAgY2FzZSBDU1NfVVJJOgorI2lmIEVO
QUJMRShDU1NfRUxFTUVOVCkKKyAgICBjYXNlIENTU19FTEVNRU5UX0ZVTkNUSU9OOgorI2VuZGlm
CiAgICAgY2FzZSBDU1NfQVRUUjoKICAgICBjYXNlIENTU19DT1VOVEVSX05BTUU6CiAgICAgICAg
IHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1ZS5zdHJpbmcsIHN0YXRp
Y19jYXN0PFVuaXRUeXBlcz4obV9wcmltaXRpdmVVbml0VHlwZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCAxMDNlYTZhODNkMmQ2NjJjNDUzMTQyM2Y3MGI4MzI5
NDkyMGZhY2I5Li43NGJiNGNmMDY0ZWE5ZjBkZWVlYjA4NjBjMmQ3MjY3YTUwYjkzODY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtOTgsNiArOTgsNyBAQCBwdWJs
aWM6CiAgICAgICAgIENTU19EUFBYID0gMjksCiAgICAgICAgIENTU19EUEkgPSAzMCwKICAgICAg
ICAgQ1NTX0RQQ00gPSAzMSwKKwogICAgICAgICBDU1NfUEFJUiA9IDEwMCwgLy8gV2UgZW52aXNp
b24gdGhpcyBiZWluZyBleHBvc2VkIGFzIGEgbWVhbnMgb2YgZ2V0dGluZyBjb21wdXRlZCBzdHls
ZSB2YWx1ZXMgZm9yIHBhaXJzIChib3JkZXItc3BhY2luZy9yYWRpdXMsIGJhY2tncm91bmQtcG9z
aXRpb24sIGV0Yy4pCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lE
R0VUX1JFR0lPTikKICAgICAgICAgQ1NTX0RBU0hCT0FSRF9SRUdJT04gPSAxMDEsIC8vIEZJWE1F
OiBEYXNoYm9hcmQgcmVnaW9uIHNob3VsZCBub3QgYmUgYSBwcmltaXRpdmUgdmFsdWUuCkBAIC0x
MzIsNiArMTMzLDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgICAg
ICBDU1NfVkFSSUFCTEVfTkFNRSA9IDExNSwKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfRUxFTUVO
VCkKKyAgICAgICAgQ1NTX0VMRU1FTlRfRlVOQ1RJT04gPSAxMTYsCisjZW5kaWYKICAgICB9Owog
CiAgICAgLy8gVGhpcyBlbnVtIGZvbGxvd3MgdGhlIENTU1BhcnNlcjo6VW5pdHMgZW51bSBhdWdt
ZW50ZWQgd2l0aCBVTklUX0ZSRVFVRU5DWSBmb3IgZnJlcXVlbmNpZXMuCkBAIC0xODEsNiArMTg1
LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNDYWxjdWxhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9w
cmltaXRpdmVVbml0VHlwZSA9PSBDU1NfQ0FMQzsgfQogICAgIGJvb2wgaXNDYWxjdWxhdGVkUGVy
Y2VudGFnZVdpdGhOdW1iZXIoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NT
X0NBTENfUEVSQ0VOVEFHRV9XSVRIX05VTUJFUjsgfQogICAgIGJvb2wgaXNDYWxjdWxhdGVkUGVy
Y2VudGFnZVdpdGhMZW5ndGgoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NT
X0NBTENfUEVSQ0VOVEFHRV9XSVRIX0xFTkdUSDsgfQorI2lmIEVOQUJMRShDU1NfRUxFTUVOVCkK
KyAgICBib29sIGlzV2ViS2l0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUo
KSA9PSBDU1NfRUxFTUVOVF9GVU5DVElPTjsgfQorI2VuZGlmCiAjaWYgRU5BQkxFKENTU19WQVJJ
QUJMRVMpCiAgICAgYm9vbCBpc1ZhcmlhYmxlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2
ZVR5cGUoKSA9PSBDU1NfVkFSSUFCTEVfTkFNRTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
LmNwcAppbmRleCBmNWVmMWVmNDE3MTFkYjU4YWJmODBjM2Q3YjAzZjRlNTdhOGJlZDVmLi5jYmU2
MWMwNTA2ZGNiZTFmZjMwM2E4NWRjMDUxYTBhZTE2YmY2NDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZS5jcHAKQEAgLTUwLDYgKzUwLDkgQEAKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICNpbmNs
dWRlICJDU1NWYXJpYWJsZVZhbHVlLmgiCiAjZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX0VMRU1FTlQp
CisjaW5jbHVkZSAiQ1NTRWxlbWVudFZhbHVlLmgiCisjZW5kaWYKICNpbmNsdWRlICJGb250VmFs
dWUuaCIKICNpbmNsdWRlICJGb250RmVhdHVyZVZhbHVlLmgiCiAjaW5jbHVkZSAiU2hhZG93VmFs
dWUuaCIKQEAgLTI0NSw2ICsyNDgsMTEgQEAgdm9pZCBDU1NWYWx1ZTo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICAgICAgc3Rh
dGljX2Nhc3Q8Y29uc3QgQ1NTVmFyaWFibGVWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgICAgIHJldHVybjsKICNlbmRpZgor
I2lmIEVOQUJMRShDU1NfRUxFTUVOVCkKKyAgICBjYXNlIENTU0VsZW1lbnRDbGFzczoKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTRWxlbWVudFZhbHVlKj4odGhpcyktPnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworI2Vu
ZGlmCiAjaWYgRU5BQkxFKFNWRykKICAgICBjYXNlIFNWR0NvbG9yQ2xhc3M6CiAgICAgICAgIHN0
YXRpY19jYXN0PGNvbnN0IFNWR0NvbG9yKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlV
c2FnZShtZW1vcnlPYmplY3RJbmZvKTsKQEAgLTM1NSw2ICszNjMsMTAgQEAgU3RyaW5nIENTU1Zh
bHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICBjYXNlIFZhcmlhYmxlQ2xhc3M6CiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NWYXJpYWJsZVZhbHVlKj4odGhpcyktPnZhbHVlKCk7
CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX0VMRU1FTlQpCisgICAgY2FzZSBDU1NFbGVtZW50Q2xh
c3M6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NFbGVtZW50VmFsdWUqPih0
aGlzKS0+Y3VzdG9tQ3NzVGV4dCgpOworI2VuZGlmCiAjaWYgRU5BQkxFKFNWRykKICAgICBjYXNl
IFNWR0NvbG9yQ2xhc3M6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTVkdDb2xv
cio+KHRoaXMpLT5jdXN0b21Dc3NUZXh0KCk7CkBAIC00OTUsNiArNTA3LDExIEBAIHZvaWQgQ1NT
VmFsdWU6OmRlc3Ryb3koKQogICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8Q1NTVmFyaWFibGVW
YWx1ZSo+KHRoaXMpOwogICAgICAgICByZXR1cm47CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX0VM
RU1FTlQpCisgICAgY2FzZSBDU1NFbGVtZW50Q2xhc3M6CisgICAgICAgIGRlbGV0ZSBzdGF0aWNf
Y2FzdDxDU1NFbGVtZW50VmFsdWUqPih0aGlzKTsKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCiAj
aWYgRU5BQkxFKFNWRykKICAgICBjYXNlIFNWR0NvbG9yQ2xhc3M6CiAgICAgICAgIGRlbGV0ZSBz
dGF0aWNfY2FzdDxTVkdDb2xvcio+KHRoaXMpOwpAQCAtNTM2LDYgKzU1MywxMCBAQCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBDU1NWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAgICAgY2FzZSBJ
bWFnZVNldENsYXNzOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTSW1hZ2VT
ZXRWYWx1ZSo+KHRoaXMpLT5jbG9uZUZvckNTU09NKCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ1NT
X0VMRU1FTlQpCisgICAgY2FzZSBDU1NFbGVtZW50Q2xhc3M6CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBDU1NFbGVtZW50VmFsdWUqPih0aGlzKS0+Y2xvbmVGb3JDU1NPTSgpOwor
I2VuZGlmCiAjaWYgRU5BQkxFKFNWRykKICAgICBjYXNlIFNWR0NvbG9yQ2xhc3M6CiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTVkdDb2xvcio+KHRoaXMpLT5jbG9uZUZvckNTU09N
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IDI1YTAwOTVkOTM0Y2Y5YTdkNTFhNjVhYTljMDA2
ODI5YjVlZWZjNmUuLjI2Y2EyNTQ4ZjQ5OGE4Yzk3ZmNlZjIxZmMyMWQwZmYyMGYyOTQ5NGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC0xMDMsNiArMTAzLDkgQEAgcHVibGljOgogI2lmIEVOQUJM
RShDU1NfVkFSSUFCTEVTKQogICAgIGJvb2wgaXNWYXJpYWJsZVZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9jbGFzc1R5cGUgPT0gVmFyaWFibGVDbGFzczsgfQogI2VuZGlmCisjaWYgRU5BQkxFKENT
U19FTEVNRU5UKQorICAgIGJvb2wgaXNDU1NFbGVtZW50VmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X2NsYXNzVHlwZSA9PSBDU1NFbGVtZW50Q2xhc3M7IH0KKyNlbmRpZgogI2lmIEVOQUJMRShTVkcp
CiAgICAgYm9vbCBpc1NWR0NvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gU1ZH
Q29sb3JDbGFzcyB8fCBtX2NsYXNzVHlwZSA9PSBTVkdQYWludENsYXNzOyB9CiAgICAgYm9vbCBp
c1NWR1BhaW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gU1ZHUGFpbnRDbGFzczsg
fQpAQCAtMTg4LDYgKzE5MSw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgV2ViS2l0Q1NTTWl4RnVu
Y3Rpb25WYWx1ZUNsYXNzLAogI2VuZGlmCiAjZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX0VMRU1FTlQp
CisgICAgICAgIENTU0VsZW1lbnRDbGFzcywKKyNlbmRpZgogICAgICAgICBXZWJLaXRDU1NUcmFu
c2Zvcm1DbGFzcywKICAgICAgICAgLy8gRG8gbm90IGFwcGVuZCBub24tbGlzdCBjbGFzcyB0eXBl
cyBoZXJlLgogICAgIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTFkYTU1NDE0N2UzMTZhNzY3Y2I3YzQ1ZDJlOTI1NTY1
MWJmMTM0OC4uZTRjOWFlYmRmYWUyODJiMTUwNDdkZDYwNGRjNDIwNzVjZjNiMmM0OSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTEwICBBbmlzaCBCaGF5YW5pICA8YW5pc2guYmhheWFu
aUBnbWFpbC5jb20+CisKKyAgICAgICAgU3VwcG9ydCB0aGUgZ3JhbW1hciBhbmQgcGFyc2luZyBv
ZiAtd2Via2l0LWVsZW1lbnQoKSBDU1MgaW1hZ2UgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ2NTAKKworICAgICAgICBSZXZpZXdlZCBieSBU
b255IENoYW5nLgorCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciB0aGUgdXBkYXRlZCB0aGUgZ3Jh
bW1hciB0byBub3RpY2UgSURTRUwgZm9yIHRlcm0gLXdlYmtpdC1lbGVtZW50KCNlbGVtZW50aWQp
LiAKKyAgICAgICAgQ1NTUGFyc2VyIHBhcnNlcyB0aGUgdG9rZW4gYW5kIGNyZWF0ZXMgYSB2YWx1
ZUxpc3Qgd2l0aCBhIENTU1ByaW1pdGl2ZVZhbHVlIFdFQktJVF9FTEVNCisgICAgICAgIHN0b3Jp
bmcgdGhlICNlbGVtZW50aWQuIFdlYktpdENTU0VsZW1lbnRWYWx1ZSBjbGFzcyBhZGRlZCBhbmQg
YXBwcm9wcmlhdGUKKyAgICAgICAgQ1NTVmFsdWUgY2xhc3NlcyB3ZXJlIHVwZGF0ZWQuCisKKyAg
ICAgICAgKiBmYXN0L2Nzcy9jc3NFbGVtZW50L3dlYmtpdC1lbGVtZW50LXBhcnNpbmctZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jc3NFbGVtZW50L3dlYmtpdC1lbGVt
ZW50LXBhcnNpbmctaW52YWxpZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFyc2luZy1pbnZhbGlkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFyc2luZy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAy
MDEyLTA5LTA3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIDxh
dWRpbz4gYW5kIDx2aWRlbz4gc2hvdWxkIHNlbmQgRG8gTm90IFRyYWNrIHdoZW4gYXBwcm9wcmlh
dGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVs
ZW1lbnQtcGFyc2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3NFbGVt
ZW50L3dlYmtpdC1lbGVtZW50LXBhcnNpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlNzgx
YjliZTU2Y2ExZjQzMmIzYTViOGFiNDFlZDQ5OTIzNmRhN2YKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3NFbGVtZW50L3dlYmtpdC1lbGVtZW50LXBhcnNpbmctZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKK1Rlc3QgdGhlIHBhcnNpbmcgb2YgdGhlIC13ZWJr
aXQtZWxlbWVudCBmdW5jdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKwor
U2luZ2xlIHZhbHVlIGZvciBiYWNrZ3JvdW5kLWltYWdlIDogI2VsZW1lbnRBCitQQVNTIGpzV3Jh
cHBlckNsYXNzKGVsZW1lbnRSdWxlKSBpcyAnQ1NTVmFsdWVMaXN0JworUEFTUyBqc1dyYXBwZXJD
bGFzcyhlbGVtZW50UnVsZS5fX3Byb3RvX18pIGlzICdDU1NWYWx1ZUxpc3RQcm90b3R5cGUnCitQ
QVNTIGpzV3JhcHBlckNsYXNzKGVsZW1lbnRSdWxlLmNvbnN0cnVjdG9yKSBpcyAnQ1NTVmFsdWVM
aXN0Q29uc3RydWN0b3InCitQQVNTIHN1YlJ1bGUgaXMgJyNlbGVtZW50QScKKworU2luZ2xlIHZh
bHVlIGZvciBiYWNrZ3JvdW5kLWltYWdlIDogI2RpdgorUEFTUyBqc1dyYXBwZXJDbGFzcyhlbGVt
ZW50UnVsZSkgaXMgJ0NTU1ZhbHVlTGlzdCcKK1BBU1MganNXcmFwcGVyQ2xhc3MoZWxlbWVudFJ1
bGUuX19wcm90b19fKSBpcyAnQ1NTVmFsdWVMaXN0UHJvdG90eXBlJworUEFTUyBqc1dyYXBwZXJD
bGFzcyhlbGVtZW50UnVsZS5jb25zdHJ1Y3RvcikgaXMgJ0NTU1ZhbHVlTGlzdENvbnN0cnVjdG9y
JworUEFTUyBzdWJSdWxlIGlzICcjZGl2JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2Nz
c0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFyc2luZy1pbnZhbGlkLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFyc2luZy1pbnZh
bGlkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODMwNDk3ZDZlYmFmZjM1ZmY1NzUxY2U1MWYz
ZDAzYjIyZGNjYTU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Nz
RWxlbWVudC93ZWJraXQtZWxlbWVudC1wYXJzaW5nLWludmFsaWQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTggQEAKK1Rlc3QgdGhlIHBhcnNpbmcgb2YgdGhlIC13ZWJraXQtZWxlbWVudCBmdW5j
dGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworVG9vIG1hbnkgZWxlbWVu
dC1pZCBwYXJhbWV0ZXJzIDogI2VsZW1lbnRBICNlbGVtZW50QgorUEFTUyBjc3NSdWxlIGlzIG51
bGwKKworVG9vIG1hbnkgZWxlbWVudC1pZCBwYXJhbWV0ZXJzIDogI2VsZW1lbnRDLCAjZWxlbWVu
dEQKK1BBU1MgY3NzUnVsZSBpcyBudWxsCisKK05vICMgOiBlbGVtZW50RQorUEFTUyBjc3NSdWxl
IGlzIG51bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3NFbGVtZW50L3dlYmtpdC1l
bGVtZW50LXBhcnNpbmctaW52YWxpZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzRWxl
bWVudC93ZWJraXQtZWxlbWVudC1wYXJzaW5nLWludmFsaWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGEy
YmRlMWFhOGJlNWRjZjdmOTQwYmZkNGMwNGU4ZGM2MzhhNThmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzRWxlbWVudC93ZWJraXQtZWxlbWVudC1wYXJzaW5nLWlu
dmFsaWQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorZGVzY3JpcHRpb24oIlRlc3QgdGhlIHBhcnNpbmcgb2YgdGhlIC13ZWJraXQtZWxlbWVudCBm
dW5jdGlvbi4iKTsKKworLy8gVGhlc2UgaGF2ZSB0byBiZSBnbG9iYWwgZm9yIHRoZSB0ZXN0IGhl
bHBlcnMgdG8gc2VlIHRoZW0uCit2YXIgY3NzUnVsZTsKKworZnVuY3Rpb24gdGVzdEludmFsaWRJ
bWFnZVNldChkZXNjcmlwdGlvbiwgcHJvcGVydHksIHJ1bGUpCit7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKGRlc2NyaXB0aW9uICsgIiA6ICIgKyBydWxlKTsKKworICAgIHZhciBkaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBkaXYuc2V0QXR0cmlidXRlKCJzdHls
ZSIsIHByb3BlcnR5ICsgIjogLXdlYmtpdC1lbGVtZW50KCIgKyBydWxlICsgIikiKTsKKyAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICBjc3NSdWxlID0gZGl2LnN0eWxl
LmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHkpOworICAgIHNob3VsZEJlKCJjc3NSdWxlIiwg
Im51bGwiKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTsKK30KKwordGVz
dEludmFsaWRJbWFnZVNldCgiVG9vIG1hbnkgZWxlbWVudC1pZCBwYXJhbWV0ZXJzIiwgImJhY2tn
cm91bmQtaW1hZ2UiLCAiI2VsZW1lbnRBICNlbGVtZW50QiIpOwordGVzdEludmFsaWRJbWFnZVNl
dCgiVG9vIG1hbnkgZWxlbWVudC1pZCBwYXJhbWV0ZXJzIiwgImJhY2tncm91bmQtaW1hZ2UiLCAi
I2VsZW1lbnRDLCAjZWxlbWVudEQiKTsKK3Rlc3RJbnZhbGlkSW1hZ2VTZXQoIk5vICMiLCAiYmFj
a2dyb3VuZC1pbWFnZSIsICJlbGVtZW50RSIpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9jc3NFbGVtZW50L3dlYmtpdC1lbGVtZW50LXBhcnNpbmcuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFyc2luZy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ3MmY4MTM1YjhiNzE1MDE4NTdlNTBkM2JmYzliMmJlYmVlYzc4OTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3NFbGVtZW50L3dlYmtpdC1lbGVt
ZW50LXBhcnNpbmcuaHRtbApAQCAtMCwwICsxLDc0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdGhlIHBhcnNpbmcgb2YgdGhlIC13ZWJraXQtZWxl
bWVudCBmdW5jdGlvbi4iKTsKKworZnVuY3Rpb24ganNXcmFwcGVyQ2xhc3Mobm9kZSkKK3sKKyAg
ICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiAiW251bGxdIjsKKyAgICB2YXIgc3RyaW5nID0g
T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShub2RlKTsKKyAgICByZXR1cm4gc3RyaW5n
LnN1YnN0cig4LCBzdHJpbmcubGVuZ3RoIC0gOSk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlVHlw
ZShleHByZXNzaW9uLCBjbGFzc05hbWUsIHByb3RvdHlwZU5hbWUsIGNvbnN0cnVjdG9yTmFtZSkK
K3sKKyAgICBpZiAoIXByb3RvdHlwZU5hbWUpCisgICAgICAgIHByb3RvdHlwZU5hbWUgPSBjbGFz
c05hbWUgKyAiUHJvdG90eXBlIjsKKyAgICBpZiAoIWNvbnN0cnVjdG9yTmFtZSkKKyAgICAgICAg
Y29uc3RydWN0b3JOYW1lID0gY2xhc3NOYW1lICsgIkNvbnN0cnVjdG9yIjsKKyAgICBzaG91bGRC
ZSgianNXcmFwcGVyQ2xhc3MoIiArIGV4cHJlc3Npb24gKyAiKSIsICInIiArIGNsYXNzTmFtZSAr
ICInIik7CisgICAgc2hvdWxkQmUoImpzV3JhcHBlckNsYXNzKCIgKyBleHByZXNzaW9uICsgIi5f
X3Byb3RvX18pIiwgIiciICsgcHJvdG90eXBlTmFtZSArICInIik7CisgICAgc2hvdWxkQmUoImpz
V3JhcHBlckNsYXNzKCIgKyBleHByZXNzaW9uICsgIi5jb25zdHJ1Y3RvcikiLCAiJyIgKyBjb25z
dHJ1Y3Rvck5hbWUgKyAiJyIpOworfQorCisvLyBUaGVzZSBoYXZlIHRvIGJlIGdsb2JhbCBmb3Ig
dGhlIHRlc3QgaGVscGVycyB0byBzZWUgdGhlbS4KK3ZhciBlbGVtZW50UnVsZSwgc3ViUnVsZTsK
KworZnVuY3Rpb24gdGVzdGVsZW1lbnRSdWxlKGRlc2NyaXB0aW9uLCBwcm9wZXJ0eSwgcnVsZSwg
ZXhwZWN0ZWRUZXh0cykKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoZGVzY3JpcHRpb24g
KyAiIDogIiArIHJ1bGUpOworCisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgIGRpdi5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgcHJvcGVydHkgKyAiOiAtd2Vi
a2l0LWVsZW1lbnQoIiArIHJ1bGUgKyAiKSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZGl2KTsKKworICAgIGVsZW1lbnRSdWxlID0gZGl2LnN0eWxlLmdldFByb3BlcnR5Q1NTVmFs
dWUocHJvcGVydHkpOworICAgIHNob3VsZEJlVHlwZSgiZWxlbWVudFJ1bGUiLCAiQ1NTVmFsdWVM
aXN0Iik7CisKKyAgIGlmIChlbGVtZW50UnVsZSkgeworICAgICAgICBpZiAoanNXcmFwcGVyQ2xh
c3MoZWxlbWVudFJ1bGVbMF0pID09ICJDU1NWYWx1ZUxpc3QiKSB7CisgICAgICAgICAgICBlbGVt
ZW50UnVsZSA9IGVsZW1lbnRSdWxlWzBdOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGVs
ZW1lbnRSdWxlKSB7CisgICAgICAgICAgICBzdWJSdWxlID0gZWxlbWVudFJ1bGVbMF0uY3NzVGV4
dDsKKyAgICAgICAgICAgIHNob3VsZEJlKCJzdWJSdWxlIiwgIiciICsgZXhwZWN0ZWRUZXh0cyAr
ICInIik7CisgICAgfQorCisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOworfQor
Cit0ZXN0ZWxlbWVudFJ1bGUoIlNpbmdsZSB2YWx1ZSBmb3IgYmFja2dyb3VuZC1pbWFnZSIsCisg
ICAgICAgICAgICAgICAgImJhY2tncm91bmQtaW1hZ2UiLAorICAgICAgICAgICAgICAgICIjZWxl
bWVudEEiLAorICAgICAgICAgICAgICAgICIjZWxlbWVudEEiKTsKKwordGVzdGVsZW1lbnRSdWxl
KCJTaW5nbGUgdmFsdWUgZm9yIGJhY2tncm91bmQtaW1hZ2UiLAorICAgICAgICAgICAgICAgICJi
YWNrZ3JvdW5kLWltYWdlIiwKKyAgICAgICAgICAgICAgICAiI2RpdiIsCisgICAgICAgICAgICAg
ICAgIiNkaXYiKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCAwZDMxZjVlOGZk
ZWQ1YjcyMTg0MmE2YWI1NzM0NDlmZDQ2OTc3OTQ5Li41MDNjMTk4N2JlYjMwY2IyNzJjM2VmNjYz
ZjIzNjllMDFkMmRjNTQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAtODk2LDMgKzg5
Niw3IEBAIGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtZXZhbC1jb250ZW50LXNjcmlw
dC5odG1sCiAKICMgRU5BQkxFKFdJREdFVF9SRUdJT04pIGlzIGRpc2FibGVkCiBmYXN0L2Nzcy93
aWRnZXQtcmVnaW9uLXBhcnNlci5odG1sCisKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ0NjUwCisjIEZ1cnRoZXIgZGV2ZWxvcG1lbnQgbmVlZGVkIGZvciBDU1Mg
RWxlbWVudAorZmFzdC9jc3MvY3NzRWxlbWVudC8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4
IDkyMjdhZDE1ZGNmNWIwZWJlOTY0ZDU3OGEwY2JiNDQzN2JmNDE3NTkuLjE2YjExZmMxNzk0MjZi
YjkzNTBkZWE5MmNkYTE5YjExOGZlOWEyYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAt
NTI5LDYgKzUyOSwxMCBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS8xLjEKIGZhc3QvZG9tL1Byb3hpbWl0eQogZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL2Rldmlj
ZS1wcm94aW1pdHktZXZlbnQtY29uc3RydWN0b3IuaHRtbAogCisjIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDY1MAorIyBDU1MgRWxlbWVudCAobmVlZHMgRU5BQkxF
X0NTU19FTEVNRU5UKQorZmFzdC9jc3MvY3NzRWxlbWVudC8KKwogIyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0gIwogIyAgICAgICBEcmFnIGFuZCBEcm9wIFN1cHBvcnQgaW4gRFJULiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCAzY2E2YWMyNTYzZjA2ZTA0ZDBjZjc2NDczMThhNThl
NjRhOTQ0NDFjLi41NDQxYzkyZjg1ZGVjY2JlOTFmYzg0MmIzMTY0ZWJjZmMyNTBhNmU3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtNDQsNiArNDQsMTAgQEAgY3NzMy9maWx0ZXJzL2N1
c3RvbQogZmFzdC9jc3MvaW1hZ2Utc2V0LXBhcnNpbmcuaHRtbAogZmFzdC9jc3MvaW1hZ2Utc2V0
LXBhcnNpbmctaW52YWxpZC5odG1sCiAKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ0NjUwCisjIEZ1cnRoZXIgZGV2ZWxvcG1lbnQgbmVlZGVkIGZvciBDU1MgRWxl
bWVudCAobmVlZHMgRU5BQkxFX0NTU19FTEVNRU5UKS4KK2Zhc3QvY3NzL2Nzc0VsZW1lbnQvCisK
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NjQ1CiBjc3MzL2Zp
bHRlcnMvZmlsdGVyZWQtY29tcG9zaXRpbmctZGVzY2VuZGFudC5odG1sCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163229</attachid>
            <date>2012-09-10 15:26:15 -0700</date>
            <delta_ts>2012-09-11 20:44:01 -0700</delta_ts>
            <desc>CSS Element grammar and parsing patch. Not full implementation.</desc>
            <filename>bug-44650-20120910152551.patch</filename>
            <type>text/plain</type>
            <size>34877</size>
            <attacher name="Anish">bhayani</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNmNGVhZGE3OGVmNjM1MmExN2RjODRl
ZThhZDUzMjhlZGMwMmVjYjkuLjlkZTdlOTdjMjYzM2ZlMWZmMTgzNDdjMTg3NDIxNzJjZjJlNTMy
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMTAgIEFuaXNoIEJoYXlhbmkgIDxhbmlz
aC5iaGF5YW5pQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnRlZCBncmFtbWFyIGFuZCAg
cGFyc2luZyAtd2Via2l0LWVsZW1lbnQoKSBDU1MgaW1hZ2UgdHlwZSB3aXRoIAorICAgICAgICBF
TkFCTEVfQ1NTX0VMRU1FTlQuIEN1cnJlbnRseSBvbmx5IGVuYWJsZWQgb24gTWFjIHBsYXRmb3Jt
LiBGdXJ0aGVyIAorICAgICAgICBkZXZlbG9wbWVudCB3aWxsIGJlIHN1cHBvcnQgbW9yZSBwbGF0
Zm9ybXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NDY1MAorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm0uaDoKKwogMjAxMi0wOS0wOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4ZWQgQVNTRVJUKCkgYW5kIEFTU0VSVF9BVCgpIG1hY3JvcyBzbyB0aGF0
IHRoZXkgY2FuIGJlIHVzZWQgaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzZDdkNTkxN2ZhNWU4ODZhYWYzNmNk
YzlhYjZkMTE2MzVhYjJmMWEwLi43NWFlNDJhNDU3N2U4OGQ2MmMwMjFkOGZlMjRhZjA3OTQxNTBh
OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTItMDktMTAgIEFuaXNoIEJoYXlh
bmkgIDxhbmlzaC5iaGF5YW5pQGdtYWlsLmNvbT4KKworICAgICAgICBTdXBwb3J0IGVsZW1lbnQo
KSBDU1MgaW1hZ2UgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDQ2NTAKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAg
ICAgIFVwZGF0ZWQgdGhlIGdyYW1tYXIgdG8gbm90aWNlIElEU0VMIChpZGVudGlmaWVyIHNlbGVj
dG9yKSBmb3IgdGVybSAtd2Via2l0LWVsZW1lbnQoI2VsZW1lbnRpZCkgYW5kIAorICAgICAgICBz
YXZlcyB0aGUgc3RyaW5nICgjZWxlbWVudElEKSBhcyBDU1NfRUxFTUVOVF9GVU5DVElPTi4gQ1NT
UGFyc2VyCisgICAgICAgIHBhcnNlcyB0aGUgdG9rZW4gYW5kIGNyZWF0ZXMgYSB2YWx1ZUxpc3Qg
d2l0aCBhIENTU1ByaW1pdGl2ZVZhbHVlLiBXZWJraXQtZWxlbWVudCBpcyB0cmVhdGVkIAorICAg
ICAgICBzaW1pbGFybHkgdG8gd2Via2l0LWltYWdlLXNldCBmb2xsb3dpbmcgdGhlIHNhbWUgcGF0
aCB0aHJvdWdoIHRoZSBwYXJzZXIgaW5jbHVkaW5nIAorICAgICAgICBwYXJzZUZpbGxJbWFnZSgp
LiBDU1NFbGVtZW50VmFsdWUgY2xhc3MgYWRkZWQgYW5kIGFwcHJvcHJpYXRlIENTU1ZhbHVlIGNs
YXNzZXMgCisgICAgICAgIHdlcmUgdXBkYXRlZC4KKyAgICAgICAgRmVhdHVyZSBpcyBjb3B5IG9m
IC1tb3otZWxlbWVudCgpOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNn
aT9pZD01MDY4MjYjYXR0YWNoXzQ2Mzk2NQorICAgICAgICBDU1M0IFNwZWM6IGh0dHA6Ly9kZXYu
dzMub3JnL2Nzc3dnL2NzczQtaW1hZ2VzLyNlbGVtZW50LW5vdGF0aW9uCisKKyAgICAgICAgVGVz
dHM6IGZhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFyc2luZy1pbnZhbGlkLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFy
c2luZy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogY3NzL0NTU0VsZW1lbnRWYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NFbGVtZW50VmFsdWU6OkNTU0VsZW1lbnRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NFbGVtZW50VmFsdWU6OmN1c3RvbUNzc1RleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRWxlbWVudFZhbHVlOjpjbG9uZUZvckNTU09NKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0VsZW1lbnRWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KToKKyAgICAgICAgKiBjc3MvQ1NTRWxlbWVudFZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChDU1NFbGVtZW50VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
RWxlbWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAg
ICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRmlsbEltYWdl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJz
ZVdlYktpdEVsZW1lbnQpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBj
c3MvQ1NTUGFyc2VyVmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclZhbHVl
OjpjcmVhdGVDU1NWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRDU1NVbml0VHlwZUZvckRvdWJsZUNvbnZlcnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNsZWFudXApOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmdldFN0cmluZ1ZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjdXN0b21Dc3NUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBjc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgKENTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjppc1dlYktpdEVsZW1lbnQpOgorICAgICAg
ICAqIGNzcy9DU1NWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6cmVwb3J0
TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1RleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
VmFsdWU6OmNsb25lRm9yQ1NTT00pOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5oOgorICAgICAg
ICAoQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzQ1NTRWxlbWVudFZh
bHVlKToKKwogMjAxMi0wOS0xMCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29t
PgogCiAgICAgICAgIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KiBpcyBub3QgaW4gTWFjIHhjb2Rl
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGViMGU3MzIyOGI0MjdhYzgzMGNmM2I5ZmYwYjU3MzkyODI1
YzJjNjcuLjAzNzFkMDE0Y2NmNWI5N2Q2ZTQ0YWQ4ZDZkZWQxYzZiZDZiN2NmMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaApAQCAtMTA0OSw2ICsxMDQ5LDExIEBACiAjZGVmaW5lIEVOQUJMRV9DU1NfSU1BR0VfU0VU
IDEKICNlbmRpZgogCisvKiBXZWJLaXQgRWxlbWVudCBhcyBiYWNrZ3JvdW5kICovCisjaWYgUExB
VEZPUk0oTUFDKQorI2RlZmluZSBFTkFCTEVfQ1NTX0VMRU1FTlQgMQorI2VuZGlmCisKIAogLyog
UXQgYWx3YXlzIHVzZXMgVGV4dHVyZSBNYXBwZXIgKi8KICNpZiBQTEFURk9STShRVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAy
ZGU3OGY5ZmM5NzE5ZjU1MTIwYWJmMjMwZDIxMWRmZWNjNDY1MWNjLi5kOGY1YmIyNDhhOGYxZWIx
ZWI3ZWQ5MzMxYzVjOGQ0MGQ2YjE2MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjMyLDYgKzYyMzIsOCBAQAogCQlGNTJB
RDVFNDE1MzQyNDVGMDA1OUZCRTYgLyogRW1wdHlDbGllbnRzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MkFENUUzMTUzNDI0NUYwMDU5RkJFNiAv
KiBFbXB0eUNsaWVudHMuY3BwICovOyB9OwogCQlGNTQ0Rjc4ODE1Q0ZCMkE4MDBBRjMzQTggLyog
TnVtYmVyTG9jYWxpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY1NDRGNzg2MTVDRkIyQTgwMEFGMzNBOCAvKiBOdW1iZXJMb2NhbGl6ZXIuY3Bw
ICovOyB9OwogCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBBRjMzQTggLyogTnVtYmVyTG9jYWxpemVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTQ0Rjc4NzE1
Q0ZCMkE4MDBBRjMzQTggLyogTnVtYmVyTG9jYWxpemVyLmggKi87IH07CisJCUY1NDkzRTY5MTVF
REE3QUEwMDk3RkU1NSAvKiBDU1NFbGVtZW50VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU0OTNFNjcxNUVEQTdBQTAwOTdGRTU1IC8qIENT
U0VsZW1lbnRWYWx1ZS5jcHAgKi87IH07CisJCUY1NDkzRTZBMTVFREE3QUEwMDk3RkU1NSAvKiBD
U1NFbGVtZW50VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY1NDkzRTY4MTVFREE3QUEwMDk3RkU1NSAvKiBDU1NFbGVtZW50VmFsdWUuaCAqLzsg
fTsKIAkJRjU1QjNEQUQxMjUxRjEyRDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5wdXRUeXBlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1NUIzRDc5MTI1
MUYxMkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0VHlwZS5jcHAgKi87IH07CiAJCUY1NUIzREFF
MTI1MUYxMkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1QjNEN0ExMjUxRjEyRDAwM0VGMjY5IC8q
IEJhc2VUZXh0SW5wdXRUeXBlLmggKi87IH07CiAJCUY1NUIzREFGMTI1MUYxMkQwMDNFRjI2OSAv
KiBCdXR0b25JbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjU1QjNEN0IxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlwZS5j
cHAgKi87IH07CkBAIC0xMzYyNyw2ICsxMzYyOSw4IEBACiAJCUY1MkFENUUzMTUzNDI0NUYwMDU5
RkJFNiAvKiBFbXB0eUNsaWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRW1wdHlDbGllbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjU0
NEY3ODYxNUNGQjJBODAwQUYzM0E4IC8qIE51bWJlckxvY2FsaXplci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOdW1iZXJMb2NhbGl6ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNTQ0Rjc4NzE1Q0ZCMkE4MDBBRjMzQTggLyogTnVtYmVyTG9j
YWxpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE51bWJlckxvY2FsaXpl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNTQ5M0U2NzE1RURBN0FBMDA5N0ZF
NTUgLyogQ1NTRWxlbWVudFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENTU0VsZW1lbnRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUY1NDkzRTY4MTVFREE3QUEwMDk3RkU1NSAvKiBDU1NFbGVtZW50VmFsdWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRWxlbWVudFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY1NUIzRDc5MTI1MUYxMkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0
VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlVGV4dElu
cHV0VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1NUIzRDdBMTI1MUYx
MkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCYXNlVGV4dElucHV0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNTVCM0Q3QjEyNTFGMTJEMDAzRUYyNjkgLyogQnV0dG9uSW5wdXRUeXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ1dHRvbklucHV0VHlwZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTA5OCw2ICsyMTEwMiw4IEBACiAJCQkJMkQ4
RkVCREIxNDNFM0VGNzAwNzI1MDJCIC8qIENTU0Nyb3NzZmFkZVZhbHVlLmggKi8sCiAJCQkJQUEw
OTc4RUQwQUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvckltYWdlVmFsdWUuY3BwICovLAogCQkJ
CUFBMDk3OEVFMEFCQUE2RTEwMDg3NDQ4MCAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggKi8sCisJ
CQkJRjU0OTNFNjcxNUVEQTdBQTAwOTdGRTU1IC8qIENTU0VsZW1lbnRWYWx1ZS5jcHAgKi8sCisJ
CQkJRjU0OTNFNjgxNUVEQTdBQTAwOTdGRTU1IC8qIENTU0VsZW1lbnRWYWx1ZS5oICovLAogCQkJ
CUJDNjRCNENEMENCNDI5OEEwMDVGMkI2MiAvKiBDU1NGb250RmFjZS5jcHAgKi8sCiAJCQkJQkM2
NEI0Q0UwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRGYWNlLmggKi8sCiAJCQkJQTgwRTZDQkQw
QTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ZvbnRGYWNlUnVsZS5jcHAgKi8sCkBAIC0yMTIwNiw2ICsy
MTIxMiw3IEBACiAJCQkJRTVCQTdENjIxNTE0MzdDQTAwRkUxRTNGIC8qIExlbmd0aEZ1bmN0aW9u
cy5oICovLAogCQkJCTkzQ0E0QzlBMDlERjkzRkEwMERGODY3NyAvKiBtYWtlLWNzcy1maWxlLWFy
cmF5cy5wbCAqLywKIAkJCQk5M0NBNEM5QjA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXByb3AucGwg
Ki8sCisJCQkJOTNDQTRDOUMwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V0b2tlbml6ZXIgKi8sCiAJ
CQkJOTNDQTRDOUQwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V2YWx1ZXMucGwgKi8sCiAJCQkJRkE2
NTRBNjMxMTA4QUJCNzAwMjYxNUUwIC8qIG1hdGhtbC5jc3MgKi8sCiAJCQkJMDcwREQ4RjUwRjAx
ODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovLApAQCAtMjI1MjQsNiArMjI1MzEs
NyBAQAogCQkJCUJDRUE0NzkwMDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOEZFQkREMTQzRTNFRjcwMDcyNTAyQiAv
KiBDU1NDcm9zc2ZhZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUEyMUVDQ0QwQUJGMEZD
NjAwMkI4MzRDIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUY1
NDkzRTZBMTVFREE3QUEwMDk3RkU1NSAvKiBDU1NFbGVtZW50VmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNjRCNEQ2MENCNDI5OEEwMDVGMkI2MiAvKiBDU1NGb250RmFjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTgwRTZDRkQwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ZvbnRGYWNlUnVsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NEI0RDgwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRG
YWNlU291cmNlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MTEzLDYgKzI2MTIxLDcgQEAKIAkJCQlC
Q0VBNDc4RjA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJEOEZFQkRDMTQzRTNFRjcwMDcyNTAyQiAvKiBDU1NDcm9z
c2ZhZGVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTIxRUNDQTBBQkYwRkJBMDAyQjgz
NEMgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNTQ5M0U2
OTE1RURBN0FBMDA5N0ZFNTUgLyogQ1NTRWxlbWVudFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDNjRCNEQ1MENCNDI5OEEwMDVGMkI2MiAvKiBDU1NGb250RmFjZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBODBFNkNFNzBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTRm9udEZhY2VSdWxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjRCNEQ3MENCNDI5OEEwMDVGMkI2MiAvKiBDU1NGb250
RmFjZVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NFbGVtZW50VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0VsZW1lbnRW
YWx1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZmOGZiNTg0NmViOGM3YTFiY2UyMDQyNTYwZjA1ZDgzMTY1
MWZkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NFbGVtZW50VmFs
dWUuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NFbGVtZW50VmFsdWUuaCIKKyAKKyNp
bmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisKKyNpZiBFTkFCTEUoQ1NT
X0VMRU1FTlQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK0NTU0VsZW1lbnRWYWx1ZTo6
Q1NTRWxlbWVudFZhbHVlKCkKKyAgICA6IENTU1ZhbHVlTGlzdChDU1NFbGVtZW50Q2xhc3MsIFNw
YWNlU2VwYXJhdG9yKQoreworfQorICAgIAorU3RyaW5nIENTU0VsZW1lbnRWYWx1ZTo6Y3VzdG9t
Q3NzVGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICItd2Via2l0LWVsZW1lbnQoIiArIENTU1Zh
bHVlTGlzdDo6Y3VzdG9tQ3NzVGV4dCgpICsgIikiOworfQorICAgIAorUGFzc1JlZlB0cjxDU1NF
bGVtZW50VmFsdWU+IENTU0VsZW1lbnRWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NFbGVtZW50VmFsdWUoKnRoaXMpKTsKK30KKyAgICAK
K3ZvaWQgQ1NTRWxlbWVudFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0lu
Zm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7
CisgICAgQ1NTVmFsdWVMaXN0OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2Jq
ZWN0SW5mbyk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoQ1NTX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRWxl
bWVudFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRWxlbWVudFZhbHVlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWJjNDQyMTNmNjkzOTg0MDc3ZDFmZWEyODA4MGU1MTU3ZjEzYzEwZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NFbGVtZW50VmFsdWUuaApAQCAtMCwwICsx
LDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3Jh
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCc
QVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUK
KyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENTU0VsZW1l
bnRWYWx1ZV9oCisjZGVmaW5lIENTU0VsZW1lbnRWYWx1ZV9oCisKKyNpZiBFTkFCTEUoQ1NTX0VM
RU1FTlQpCisKKyNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBDU1NFbGVtZW50VmFs
dWUgOiBwdWJsaWMgQ1NTVmFsdWVMaXN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDU1NFbGVtZW50VmFsdWU+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENTU0VsZW1lbnRWYWx1ZSgpKTsKKyAgICB9CisgICAgICAgIAorICAgIFN0cmluZyBj
dXN0b21Dc3NUZXh0KCkgY29uc3Q7CisgICAgICAgIAorICAgIFBhc3NSZWZQdHI8Q1NTRWxlbWVu
dFZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CisgICAgICAgIAorICAgIHZvaWQgcmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKyAgICAgICAg
Citwcml2YXRlOgorICAgIENTU0VsZW1lbnRWYWx1ZSgpOworfTsKKyAgICAKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfRUxFTUVOVCkKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCA1MTY3NTM3ZjcxYjdlNDllNTg0ZDc5ODJkYzQ1YzA1
NWQ4OTM4NTA5Li5hYjQyNGQ0MWM0Njk1NWQ2YzMwZDYzNmY0NDUxMTdiNDA0MDYwMGYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIGlubGluZSBpbnQg
Y3NzeXllcnJvcih2b2lkKiwgY29uc3QgY2hhciopCiAKICV9CiAKLSVleHBlY3QgNjMKKyVleHBl
Y3QgNjQKIAogJW5vbmFzc29jIExPV0VTVF9QUkVDCiAKQEAgLTE0NTUsNiArMTQ1NSwxMyBAQCB0
ZXJtOgogICAgICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkFSSUFCTEVfTkFN
RTsKICNlbmRpZgogICB9CisgIHwgSURTRUwgbWF5YmVfc3BhY2UgeworI2lmIEVOQUJMRShDU1Nf
RUxFTUVOVCkKKyAgICAgICQkLmlkID0gMDsKKyAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0VMRU1FTlRfRlVOQ1RJT047CisgICAgICAkJC5zdHJpbmcgPSAkMTsKKyNlbmRp
ZgorICB9CiAgIC8qIEZJWE1FOiBhY2NvcmRpbmcgdG8gdGhlIHNwZWNzIGEgZnVuY3Rpb24gY2Fu
IGhhdmUgYSB1bmFyeV9vcGVyYXRvciBpbiBmcm9udC4gSSBrbm93IG5vIGNhc2Ugd2hlcmUgdGhp
cyBtYWtlcyBzZW5zZSAqLwogICB8IGZ1bmN0aW9uIHsKICAgICAgICQkID0gJDE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCmluZGV4IDI4Y2UxMzE1N2Y5NTU0YjZhOTJmNzVlMDhhNWRhZWQ5ZmFl
NTE4ZTMuLmQ0OWEwNmI1MjQ5MmM3NTFkYjgxZTZmYjMzOTgzMzlhZDg4ZTA0NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC01Nyw2ICs1Nyw5IEBACiAjaWYgRU5BQkxFKENTU19WQVJJ
QUJMRVMpCiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVWYWx1ZS5oIgogI2VuZGlmCisjaWYgRU5BQkxF
KENTU19FTEVNRU5UKQorI2luY2x1ZGUgIkNTU0VsZW1lbnRWYWx1ZS5oIgorI2VuZGlmCiAjaW5j
bHVkZSAiQ291bnRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRD
b252ZXJzaW9uLmgiCkBAIC0zNTA5LDYgKzM1MTIsMTIgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
Q29udGVudChDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAg
ICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogI2VuZGlmCisjaWYgRU5BQkxFKENTU19FTEVNRU5UKQorICAgICAgICAgICAgfSBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZSh2YWwtPmZ1bmN0aW9uLT5uYW1lLCAiLXdlYmtpdC1lbGVtZW50
KCIpKSB7CisgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBwYXJzZVdlYktpdEVsZW1lbnQo
bV92YWx1ZUxpc3QuZ2V0KCkpOworICAgICAgICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICAgICAgfSBl
bHNlIGlmIChpc0dlbmVyYXRlZEltYWdlVmFsdWUodmFsKSkgewogICAgICAgICAgICAgICAgIGlm
ICghcGFyc2VHZW5lcmF0ZWRJbWFnZShtX3ZhbHVlTGlzdC5nZXQoKSwgcGFyc2VkVmFsdWUpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTk2LDYgKzM2MDUsMTQgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlRmlsbEltYWdlKENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVM
aXN0LCBSZWZQdHI8Q1NTVmFsdWU+JgogICAgIGlmIChpc0dlbmVyYXRlZEltYWdlVmFsdWUodmFs
dWVMaXN0LT5jdXJyZW50KCkpKQogICAgICAgICByZXR1cm4gcGFyc2VHZW5lcmF0ZWRJbWFnZSh2
YWx1ZUxpc3QsIHZhbHVlKTsKICAgICAKKyNpZiBFTkFCTEUoQ1NTX0VMRU1FTlQpCisgICAgaWYg
KHZhbHVlTGlzdC0+Y3VycmVudCgpLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbiAm
JiBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZUxpc3QtPmN1cnJlbnQoKS0+ZnVuY3Rpb24tPm5hbWUs
ICItd2Via2l0LWVsZW1lbnQoIikpIHsKKyAgICAgICAgdmFsdWUgPSBwYXJzZVdlYktpdEVsZW1l
bnQobV92YWx1ZUxpc3QuZ2V0KCkpOworICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NF
VCkKICAgICBpZiAodmFsdWVMaXN0LT5jdXJyZW50KCktPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6
OkZ1bmN0aW9uICYmIGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlTGlzdC0+Y3VycmVudCgpLT5mdW5j
dGlvbi0+bmFtZSwgIi13ZWJraXQtaW1hZ2Utc2V0KCIpKSB7CiAgICAgICAgIHZhbHVlID0gcGFy
c2VJbWFnZVNldChtX3ZhbHVlTGlzdC5nZXQoKSk7CkBAIC03MjE0LDYgKzcyMzEsMzMgQEAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUltYWdlUmVzb2x1dGlvbihDU1NQYXJz
ZXJWYWx1ZUxpc3QqIHZhbHVlTGkKICAgICByZXR1cm4gbGlzdDsKIH0KICNlbmRpZgorICAgIAor
I2lmIEVOQUJMRShDU1NfRUxFTUVOVCkKK1Bhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6
cGFyc2VXZWJLaXRFbGVtZW50KENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0KQoreworICAg
IENTU1BhcnNlclZhbHVlKiBmdW5jdGlvbiA9IHZhbHVlTGlzdC0+Y3VycmVudCgpOworICAgIAor
ICAgIGlmIChmdW5jdGlvbi0+dW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24pCisgICAg
ICAgIHJldHVybiAwOworICAgIAorICAgIENTU1BhcnNlclZhbHVlTGlzdCogZnVuY3Rpb25Bcmdz
ID0gdmFsdWVMaXN0LT5jdXJyZW50KCktPmZ1bmN0aW9uLT5hcmdzLmdldCgpOworICAgIGlmICgh
ZnVuY3Rpb25BcmdzIHx8ICFmdW5jdGlvbkFyZ3MtPnNpemUoKSB8fCAhZnVuY3Rpb25BcmdzLT5j
dXJyZW50KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIGlmIChmdW5jdGlvbkFyZ3Mt
PnNpemUoKSAhPSAxKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxDU1NFbGVtZW50
VmFsdWU+IHdlYkVsZW0gPSBDU1NFbGVtZW50VmFsdWU6OmNyZWF0ZSgpOworICAgIAorICAgIENT
U1BhcnNlclZhbHVlKiBhcmcgPSBmdW5jdGlvbkFyZ3MtPmN1cnJlbnQoKTsKKyAgICBpZiAoYXJn
LT51bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRUxFTUVOVF9GVU5DVElPTikKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICB3ZWJFbGVtLT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRl
VmFsdWUoYXJnLT5zdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRUxFTUVOVF9GVU5DVElP
TikpOworICAgIAorICAgIHJldHVybiB3ZWJFbGVtOworfQorI2VuZGlmCiAKICNpZiBFTkFCTEUo
Q1NTX0lNQUdFX1NFVCkKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VJbWFn
ZVNldChDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApp
bmRleCBlMzMwOTBmODMyNmZhNjRiM2MyZDNhZWI4M2ViNDZiMzRkMzA2YmQ5Li43MDU1NWQzZTUw
NmI3ZGViYThmOWI0MTk5YWQ0N2JlMDkwZDFlNTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBA
IC0yMTMsNiArMjEzLDEwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJ
T04pCiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VJbWFnZVJlc29sdXRpb24oQ1NTUGFy
c2VyVmFsdWVMaXN0Kik7CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoQ1NTX0VMRU1FTlQpCisg
ICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VXZWJLaXRFbGVtZW50KENTU1BhcnNlclZhbHVl
TGlzdCopOworI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKICAgICBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBwYXJzZUltYWdlU2V0KENTU1BhcnNlclZhbHVlTGlzdCopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAppbmRleCA4Yjc2MjU1NzhmNGY1MmMzNjg5ZmFj
NGM2ZmUwNzNkZmNkOWZlYzg1Li40N2NlMjNlYTEyNmM1YThjMWJjYmNjMjMzNzlhMDExNzYwYjMw
YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcApAQCAtOTAsNiArOTAs
OSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXJWYWx1ZTo6Y3JlYXRlQ1NTVmFsdWUo
KQogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19WQVJJQUJMRV9OQU1FOgogI2VuZGlmCisjaWYgRU5BQkxFKENTU19FTEVNRU5UKQorICAg
IGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTEVNRU5UX0ZVTkNUSU9OOgorI2VuZGlmCiAg
ICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUjoKICAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3RyaW5nLCBwcmltaXRpdmVVbml0KTsK
ICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDVkMmE3ZjdlNGQ1YWE4NWMyMDlhODdi
NDJkNDIyOWQ0Njc1MzdlYjkuLjQ5NjM4ZjRkOTM1ZmYwMDlhZDM1YmVjMGI2NzI2NDVhYTZiMzBm
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtMTE2LDYg
KzExNiw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkQ1NTVW5pdFR5cGVGb3JEb3VibGVD
b252ZXJzaW9uKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0CiAjaWYgRU5BQkxFKENTU19WQVJJQUJM
RVMpCiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUU6CiAjZW5k
aWYKKyNpZiBFTkFCTEUoQ1NTX0VMRU1FTlQpCisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6
IENTU19FTEVNRU5UX0ZVTkNUSU9OOgorI2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTM3MCw2ICszNzMsOSBAQCB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVw
KCkKICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PFVuaXRUeXBlcz4obV9wcmltaXRpdmVVbml0VHlw
ZSkpIHsKICAgICBjYXNlIENTU19TVFJJTkc6CiAgICAgY2FzZSBDU1NfVVJJOgorI2lmIEVOQUJM
RShDU1NfRUxFTUVOVCkKKyAgICBjYXNlIENTU19FTEVNRU5UX0ZVTkNUSU9OOgorI2VuZGlmCiAg
ICAgY2FzZSBDU1NfQVRUUjoKICAgICBjYXNlIENTU19DT1VOVEVSX05BTUU6CiAjaWYgRU5BQkxF
KENTU19WQVJJQUJMRVMpCkBAIC03NDcsNiArNzUzLDkgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZh
bHVlOjpnZXRTdHJpbmdWYWx1ZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICAgICAgY2Fz
ZSBDU1NfU1RSSU5HOgogICAgICAgICBjYXNlIENTU19BVFRSOgogICAgICAgICBjYXNlIENTU19V
Ukk6CisjaWYgRU5BQkxFKENTU19FTEVNRU5UKQorICAgICAgICBjYXNlIENTU19FTEVNRU5UX0ZV
TkNUSU9OOgorI2VuZGlmCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgICAgIGNhc2Ug
Q1NTX1ZBUklBQkxFX05BTUU6CiAjZW5kaWYKQEAgLTc2Nyw2ICs3NzYsOSBAQCBTdHJpbmcgQ1NT
UHJpbWl0aXZlVmFsdWU6OmdldFN0cmluZ1ZhbHVlKCkgY29uc3QKICAgICAgICAgY2FzZSBDU1Nf
U1RSSU5HOgogICAgICAgICBjYXNlIENTU19BVFRSOgogICAgICAgICBjYXNlIENTU19VUkk6Cisj
aWYgRU5BQkxFKENTU19FTEVNRU5UKQorICAgICAgICBjYXNlIENTU19FTEVNRU5UX0ZVTkNUSU9O
OgorI2VuZGlmCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgICAgIGNhc2UgQ1NTX1ZB
UklBQkxFX05BTUU6CiAjZW5kaWYKQEAgLTExMjgsNiArMTE0MCwxMSBAQCBTdHJpbmcgQ1NTUHJp
bWl0aXZlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAgdGV4dCA9ICIt
d2Via2l0LXZhcigiICsgU3RyaW5nKG1fdmFsdWUuc3RyaW5nKSArICIpIjsKICAgICAgICAgICAg
IGJyZWFrOwogI2VuZGlmCisjaWYgRU5BQkxFKENTU19FTEVNRU5UKQorICAgICAgICBjYXNlIENT
U19FTEVNRU5UX0ZVTkNUSU9OOgorICAgICAgICAgICAgdGV4dCA9ICIjIiArIFN0cmluZyhtX3Zh
bHVlLnN0cmluZyk7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIH0KIAogICAgIEFT
U0VSVCghY3NzVGV4dENhY2hlKCkuY29udGFpbnModGhpcykpOwpAQCAtMTE4MCw2ICsxMTk3LDkg
QEAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNsb25l
Rm9yQ1NTT00oKSBjb25zdAogICAgIHN3aXRjaCAobV9wcmltaXRpdmVVbml0VHlwZSkgewogICAg
IGNhc2UgQ1NTX1NUUklORzoKICAgICBjYXNlIENTU19VUkk6CisjaWYgRU5BQkxFKENTU19FTEVN
RU5UKQorICAgIGNhc2UgQ1NTX0VMRU1FTlRfRlVOQ1RJT046CisjZW5kaWYKICAgICBjYXNlIENT
U19BVFRSOgogICAgIGNhc2UgQ1NTX0NPVU5URVJfTkFNRToKICAgICAgICAgcmVzdWx0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3ZhbHVlLnN0cmluZywgc3RhdGljX2Nhc3Q8VW5pdFR5
cGVzPihtX3ByaW1pdGl2ZVVuaXRUeXBlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5oCmluZGV4IDEwM2VhNmE4M2QyZDY2MmM0NTMxNDIzZjcwYjgzMjk0OTIwZmFjYjkuLjc0
YmI0Y2YwNjRlYTlmMGRlZWViMDg2MGMyZDcyNjdhNTBiOTM4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oCkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKICAgICAgICAg
Q1NTX0RQUFggPSAyOSwKICAgICAgICAgQ1NTX0RQSSA9IDMwLAogICAgICAgICBDU1NfRFBDTSA9
IDMxLAorCiAgICAgICAgIENTU19QQUlSID0gMTAwLCAvLyBXZSBlbnZpc2lvbiB0aGlzIGJlaW5n
IGV4cG9zZWQgYXMgYSBtZWFucyBvZiBnZXR0aW5nIGNvbXB1dGVkIHN0eWxlIHZhbHVlcyBmb3Ig
cGFpcnMgKGJvcmRlci1zcGFjaW5nL3JhZGl1cywgYmFja2dyb3VuZC1wb3NpdGlvbiwgZXRjLikK
ICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQog
ICAgICAgICBDU1NfREFTSEJPQVJEX1JFR0lPTiA9IDEwMSwgLy8gRklYTUU6IERhc2hib2FyZCBy
ZWdpb24gc2hvdWxkIG5vdCBiZSBhIHByaW1pdGl2ZSB2YWx1ZS4KQEAgLTEzMiw2ICsxMzMsOSBA
QCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgICAgIENTU19WQVJJQUJM
RV9OQU1FID0gMTE1LAogI2VuZGlmCisjaWYgRU5BQkxFKENTU19FTEVNRU5UKQorICAgICAgICBD
U1NfRUxFTUVOVF9GVU5DVElPTiA9IDExNiwKKyNlbmRpZgogICAgIH07CiAKICAgICAvLyBUaGlz
IGVudW0gZm9sbG93cyB0aGUgQ1NTUGFyc2VyOjpVbml0cyBlbnVtIGF1Z21lbnRlZCB3aXRoIFVO
SVRfRlJFUVVFTkNZIGZvciBmcmVxdWVuY2llcy4KQEAgLTE4MSw2ICsxODUsOSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0NhbGN1bGF0ZWQoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRU
eXBlID09IENTU19DQUxDOyB9CiAgICAgYm9vbCBpc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aE51
bWJlcigpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NfQ0FMQ19QRVJDRU5U
QUdFX1dJVEhfTlVNQkVSOyB9CiAgICAgYm9vbCBpc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NfQ0FMQ19QRVJDRU5U
QUdFX1dJVEhfTEVOR1RIOyB9CisjaWYgRU5BQkxFKENTU19FTEVNRU5UKQorICAgIGJvb2wgaXNX
ZWJLaXRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09IENTU19FTEVN
RU5UX0ZVTkNUSU9OOyB9CisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICBi
b29sIGlzVmFyaWFibGVOYW1lKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09IENT
U19WQVJJQUJMRV9OQU1FOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCmluZGV4IGY1
ZWYxZWY0MTcxMWRiNThhYmY4MGMzZDdiMDNmNGU1N2E4YmVkNWYuLmNiZTYxYzA1MDZkY2JlMWZm
MzAzYTg1ZGMwNTFhMGFlMTZiZjY0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcApAQCAtNTAs
NiArNTAsOSBAQAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogI2luY2x1ZGUgIkNTU1Zhcmlh
YmxlVmFsdWUuaCIKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfRUxFTUVOVCkKKyNpbmNsdWRlICJD
U1NFbGVtZW50VmFsdWUuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgogI2luY2x1
ZGUgIkZvbnRGZWF0dXJlVmFsdWUuaCIKICNpbmNsdWRlICJTaGFkb3dWYWx1ZS5oIgpAQCAtMjQ1
LDYgKzI0OCwxMSBAQCB2b2lkIENTU1ZhbHVlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgICAgICBzdGF0aWNfY2FzdDxjb25z
dCBDU1NWYXJpYWJsZVZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSht
ZW1vcnlPYmplY3RJbmZvKTsKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCisjaWYgRU5BQkxFKENT
U19FTEVNRU5UKQorICAgIGNhc2UgQ1NTRWxlbWVudENsYXNzOgorICAgICAgICBzdGF0aWNfY2Fz
dDxjb25zdCBDU1NFbGVtZW50VmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisjZW5kaWYKICNpZiBFTkFC
TEUoU1ZHKQogICAgIGNhc2UgU1ZHQ29sb3JDbGFzczoKICAgICAgICAgc3RhdGljX2Nhc3Q8Y29u
c3QgU1ZHQ29sb3IqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9i
amVjdEluZm8pOwpAQCAtMzU1LDYgKzM2MywxMCBAQCBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQo
KSBjb25zdAogICAgIGNhc2UgVmFyaWFibGVDbGFzczoKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IENTU1ZhcmlhYmxlVmFsdWUqPih0aGlzKS0+dmFsdWUoKTsKICNlbmRpZgorI2lm
IEVOQUJMRShDU1NfRUxFTUVOVCkKKyAgICBjYXNlIENTU0VsZW1lbnRDbGFzczoKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0VsZW1lbnRWYWx1ZSo+KHRoaXMpLT5jdXN0b21D
c3NUZXh0KCk7CisjZW5kaWYKICNpZiBFTkFCTEUoU1ZHKQogICAgIGNhc2UgU1ZHQ29sb3JDbGFz
czoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFNWR0NvbG9yKj4odGhpcyktPmN1
c3RvbUNzc1RleHQoKTsKQEAgLTQ5NSw2ICs1MDcsMTEgQEAgdm9pZCBDU1NWYWx1ZTo6ZGVzdHJv
eSgpCiAgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxDU1NWYXJpYWJsZVZhbHVlKj4odGhpcyk7
CiAgICAgICAgIHJldHVybjsKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfRUxFTUVOVCkKKyAgICBj
YXNlIENTU0VsZW1lbnRDbGFzczoKKyAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PENTU0VsZW1l
bnRWYWx1ZSo+KHRoaXMpOworICAgICAgICByZXR1cm47CisjZW5kaWYKICNpZiBFTkFCTEUoU1ZH
KQogICAgIGNhc2UgU1ZHQ29sb3JDbGFzczoKICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFNW
R0NvbG9yKj4odGhpcyk7CkBAIC01MzYsNiArNTUzLDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU1ZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICBjYXNlIEltYWdlU2V0Q2xhc3M6
CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NJbWFnZVNldFZhbHVlKj4odGhp
cyktPmNsb25lRm9yQ1NTT00oKTsKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfRUxFTUVOVCkKKyAg
ICBjYXNlIENTU0VsZW1lbnRDbGFzczoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IENTU0VsZW1lbnRWYWx1ZSo+KHRoaXMpLT5jbG9uZUZvckNTU09NKCk7CisjZW5kaWYKICNpZiBF
TkFCTEUoU1ZHKQogICAgIGNhc2UgU1ZHQ29sb3JDbGFzczoKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IFNWR0NvbG9yKj4odGhpcyktPmNsb25lRm9yQ1NTT00oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlLmgKaW5kZXggMjVhMDA5NWQ5MzRjZjlhN2Q1MWE2NWFhOWMwMDY4MjliNWVlZmM2ZS4u
MjZjYTI1NDhmNDk4YThjOTdmY2VmMjFmYzIxZDBmZjIwZjI5NDk0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlLmgKQEAgLTEwMyw2ICsxMDMsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19WQVJJQUJM
RVMpCiAgICAgYm9vbCBpc1ZhcmlhYmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlw
ZSA9PSBWYXJpYWJsZUNsYXNzOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX0VMRU1FTlQpCisg
ICAgYm9vbCBpc0NTU0VsZW1lbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09
IENTU0VsZW1lbnRDbGFzczsgfQorI2VuZGlmCiAjaWYgRU5BQkxFKFNWRykKICAgICBib29sIGlz
U1ZHQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTVkdDb2xvckNsYXNzIHx8
IG1fY2xhc3NUeXBlID09IFNWR1BhaW50Q2xhc3M7IH0KICAgICBib29sIGlzU1ZHUGFpbnQoKSBj
b25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTVkdQYWludENsYXNzOyB9CkBAIC0xODgsNiAr
MTkxLDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlQ2xh
c3MsCiAjZW5kaWYKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfRUxFTUVOVCkKKyAgICAgICAgQ1NT
RWxlbWVudENsYXNzLAorI2VuZGlmCiAgICAgICAgIFdlYktpdENTU1RyYW5zZm9ybUNsYXNzLAog
ICAgICAgICAvLyBEbyBub3QgYXBwZW5kIG5vbi1saXN0IGNsYXNzIHR5cGVzIGhlcmUuCiAgICAg
fTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAzZDExMzFiZDE4NjdhZjI2YTVhZDE2M2RmZTQ4ZDIwYzdhYzkwOTg1Li5mMjRm
MjFkMGUyMWZkOTMzNmNlMzg1ZjhhMmMxNmFkZTkyNGJiZTgyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTItMDktMTAgIEFuaXNoIEJoYXlhbmkgIDxhbmlzaC5iaGF5YW5pQGdtYWlsLmNvbT4K
KworICAgICAgICBTdXBwb3J0IHRoZSBncmFtbWFyIGFuZCBwYXJzaW5nIG9mIC13ZWJraXQtZWxl
bWVudCgpIENTUyBpbWFnZSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NDY1MAorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisK
KyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIHRoZSB1cGRhdGVkIHRoZSBncmFtbWFyIHRvIG5vdGlj
ZSBJRFNFTCBmb3IgdGVybSAtd2Via2l0LWVsZW1lbnQoI2VsZW1lbnRpZCkuIAorICAgICAgICBD
U1NQYXJzZXIgcGFyc2VzIHRoZSB0b2tlbiBhbmQgY3JlYXRlcyBhIHZhbHVlTGlzdCB3aXRoIGEg
Q1NTUHJpbWl0aXZlVmFsdWUgV0VCS0lUX0VMRU0KKyAgICAgICAgc3RvcmluZyB0aGUgI2VsZW1l
bnRpZC4gV2ViS2l0Q1NTRWxlbWVudFZhbHVlIGNsYXNzIGFkZGVkIGFuZCBhcHByb3ByaWF0ZQor
ICAgICAgICBDU1NWYWx1ZSBjbGFzc2VzIHdlcmUgdXBkYXRlZC4KKworICAgICAgICAqIGZhc3Qv
Y3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFyc2luZy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFyc2luZy1p
bnZhbGlkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY3NzRWxlbWVu
dC93ZWJraXQtZWxlbWVudC1wYXJzaW5nLWludmFsaWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jc3MvY3NzRWxlbWVudC93ZWJraXQtZWxlbWVudC1wYXJzaW5nLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Nr
aXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMTItMDgtMzEgIEpv
biBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZSBvcHRpb25zIGRpY3Rpb25h
cnkgaW4gTm90aWZpY2F0aW9uIGNvbnN0cnVjdG9yIHNob3VsZCBub3QgYWNjZXB0IGV2ZW50IGxp
c3RlbmVycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzRWxlbWVudC93ZWJr
aXQtZWxlbWVudC1wYXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2Nz
c0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFyc2luZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWU3ODFiOWJlNTZjYTFmNDMyYjNhNWI4YWI0MWVkNDk5MjM2ZGE3ZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFyc2lu
Zy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorVGVzdCB0aGUgcGFyc2luZyBvZiB0aGUg
LXdlYmtpdC1lbGVtZW50IGZ1bmN0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworCitTaW5nbGUgdmFsdWUgZm9yIGJhY2tncm91bmQtaW1hZ2UgOiAjZWxlbWVudEEKK1BBU1Mg
anNXcmFwcGVyQ2xhc3MoZWxlbWVudFJ1bGUpIGlzICdDU1NWYWx1ZUxpc3QnCitQQVNTIGpzV3Jh
cHBlckNsYXNzKGVsZW1lbnRSdWxlLl9fcHJvdG9fXykgaXMgJ0NTU1ZhbHVlTGlzdFByb3RvdHlw
ZScKK1BBU1MganNXcmFwcGVyQ2xhc3MoZWxlbWVudFJ1bGUuY29uc3RydWN0b3IpIGlzICdDU1NW
YWx1ZUxpc3RDb25zdHJ1Y3RvcicKK1BBU1Mgc3ViUnVsZSBpcyAnI2VsZW1lbnRBJworCitTaW5n
bGUgdmFsdWUgZm9yIGJhY2tncm91bmQtaW1hZ2UgOiAjZGl2CitQQVNTIGpzV3JhcHBlckNsYXNz
KGVsZW1lbnRSdWxlKSBpcyAnQ1NTVmFsdWVMaXN0JworUEFTUyBqc1dyYXBwZXJDbGFzcyhlbGVt
ZW50UnVsZS5fX3Byb3RvX18pIGlzICdDU1NWYWx1ZUxpc3RQcm90b3R5cGUnCitQQVNTIGpzV3Jh
cHBlckNsYXNzKGVsZW1lbnRSdWxlLmNvbnN0cnVjdG9yKSBpcyAnQ1NTVmFsdWVMaXN0Q29uc3Ry
dWN0b3InCitQQVNTIHN1YlJ1bGUgaXMgJyNkaXYnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvY3NzRWxlbWVudC93ZWJraXQtZWxlbWVudC1wYXJzaW5nLWludmFsaWQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzRWxlbWVudC93ZWJraXQtZWxlbWVudC1wYXJzaW5n
LWludmFsaWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4MzA0OTdkNmViYWZmMzVmZjU3NTFj
ZTUxZjNkMDNiMjJkY2NhNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9jc3NFbGVtZW50L3dlYmtpdC1lbGVtZW50LXBhcnNpbmctaW52YWxpZC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxOCBAQAorVGVzdCB0aGUgcGFyc2luZyBvZiB0aGUgLXdlYmtpdC1lbGVtZW50
IGZ1bmN0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCitUb28gbWFueSBl
bGVtZW50LWlkIHBhcmFtZXRlcnMgOiAjZWxlbWVudEEgI2VsZW1lbnRCCitQQVNTIGNzc1J1bGUg
aXMgbnVsbAorCitUb28gbWFueSBlbGVtZW50LWlkIHBhcmFtZXRlcnMgOiAjZWxlbWVudEMsICNl
bGVtZW50RAorUEFTUyBjc3NSdWxlIGlzIG51bGwKKworTm8gIyA6IGVsZW1lbnRFCitQQVNTIGNz
c1J1bGUgaXMgbnVsbAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2Nzc0VsZW1lbnQvd2Vi
a2l0LWVsZW1lbnQtcGFyc2luZy1pbnZhbGlkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
c3NFbGVtZW50L3dlYmtpdC1lbGVtZW50LXBhcnNpbmctaW52YWxpZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM4YTJiZGUxYWE4YmU1ZGNmN2Y5NDBiZmQ0YzA0ZThkYzYzOGE1OGYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3NFbGVtZW50L3dlYmtpdC1lbGVtZW50LXBhcnNp
bmctaW52YWxpZC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB0aGUgcGFyc2luZyBvZiB0aGUgLXdlYmtpdC1lbGVt
ZW50IGZ1bmN0aW9uLiIpOworCisvLyBUaGVzZSBoYXZlIHRvIGJlIGdsb2JhbCBmb3IgdGhlIHRl
c3QgaGVscGVycyB0byBzZWUgdGhlbS4KK3ZhciBjc3NSdWxlOworCitmdW5jdGlvbiB0ZXN0SW52
YWxpZEltYWdlU2V0KGRlc2NyaXB0aW9uLCBwcm9wZXJ0eSwgcnVsZSkKK3sKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoZGVzY3JpcHRpb24gKyAiIDogIiArIHJ1bGUpOworCisgICAgdmFyIGRp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGRpdi5zZXRBdHRyaWJ1dGUo
InN0eWxlIiwgcHJvcGVydHkgKyAiOiAtd2Via2l0LWVsZW1lbnQoIiArIHJ1bGUgKyAiKSIpOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKworICAgIGNzc1J1bGUgPSBkaXYu
c3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eSk7CisgICAgc2hvdWxkQmUoImNzc1J1
bGUiLCAibnVsbCIpOworCisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOworfQor
Cit0ZXN0SW52YWxpZEltYWdlU2V0KCJUb28gbWFueSBlbGVtZW50LWlkIHBhcmFtZXRlcnMiLCAi
YmFja2dyb3VuZC1pbWFnZSIsICIjZWxlbWVudEEgI2VsZW1lbnRCIik7Cit0ZXN0SW52YWxpZElt
YWdlU2V0KCJUb28gbWFueSBlbGVtZW50LWlkIHBhcmFtZXRlcnMiLCAiYmFja2dyb3VuZC1pbWFn
ZSIsICIjZWxlbWVudEMsICNlbGVtZW50RCIpOwordGVzdEludmFsaWRJbWFnZVNldCgiTm8gIyIs
ICJiYWNrZ3JvdW5kLWltYWdlIiwgImVsZW1lbnRFIik7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFyc2luZy5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzRWxlbWVudC93ZWJraXQtZWxlbWVudC1wYXJzaW5nLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDcyZjgxMzViOGI3MTUwMTg1N2U1MGQzYmZjOWIyYmViZWVjNzg5Mgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0
LWVsZW1lbnQtcGFyc2luZy5odG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB0aGUgcGFyc2luZyBvZiB0aGUgLXdlYmtp
dC1lbGVtZW50IGZ1bmN0aW9uLiIpOworCitmdW5jdGlvbiBqc1dyYXBwZXJDbGFzcyhub2RlKQor
eworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuICJbbnVsbF0iOworICAgIHZhciBzdHJp
bmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KG5vZGUpOworICAgIHJldHVybiBz
dHJpbmcuc3Vic3RyKDgsIHN0cmluZy5sZW5ndGggLSA5KTsKK30KKworZnVuY3Rpb24gc2hvdWxk
QmVUeXBlKGV4cHJlc3Npb24sIGNsYXNzTmFtZSwgcHJvdG90eXBlTmFtZSwgY29uc3RydWN0b3JO
YW1lKQoreworICAgIGlmICghcHJvdG90eXBlTmFtZSkKKyAgICAgICAgcHJvdG90eXBlTmFtZSA9
IGNsYXNzTmFtZSArICJQcm90b3R5cGUiOworICAgIGlmICghY29uc3RydWN0b3JOYW1lKQorICAg
ICAgICBjb25zdHJ1Y3Rvck5hbWUgPSBjbGFzc05hbWUgKyAiQ29uc3RydWN0b3IiOworICAgIHNo
b3VsZEJlKCJqc1dyYXBwZXJDbGFzcygiICsgZXhwcmVzc2lvbiArICIpIiwgIiciICsgY2xhc3NO
YW1lICsgIiciKTsKKyAgICBzaG91bGRCZSgianNXcmFwcGVyQ2xhc3MoIiArIGV4cHJlc3Npb24g
KyAiLl9fcHJvdG9fXykiLCAiJyIgKyBwcm90b3R5cGVOYW1lICsgIiciKTsKKyAgICBzaG91bGRC
ZSgianNXcmFwcGVyQ2xhc3MoIiArIGV4cHJlc3Npb24gKyAiLmNvbnN0cnVjdG9yKSIsICInIiAr
IGNvbnN0cnVjdG9yTmFtZSArICInIik7Cit9CisKKy8vIFRoZXNlIGhhdmUgdG8gYmUgZ2xvYmFs
IGZvciB0aGUgdGVzdCBoZWxwZXJzIHRvIHNlZSB0aGVtLgordmFyIGVsZW1lbnRSdWxlLCBzdWJS
dWxlOworCitmdW5jdGlvbiB0ZXN0ZWxlbWVudFJ1bGUoZGVzY3JpcHRpb24sIHByb3BlcnR5LCBy
dWxlLCBleHBlY3RlZFRleHRzKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZyhkZXNjcmlw
dGlvbiArICIgOiAiICsgcnVsZSk7CisKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgZGl2LnNldEF0dHJpYnV0ZSgic3R5bGUiLCBwcm9wZXJ0eSArICI6
IC13ZWJraXQtZWxlbWVudCgiICsgcnVsZSArICIpIik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChkaXYpOworCisgICAgZWxlbWVudFJ1bGUgPSBkaXYuc3R5bGUuZ2V0UHJvcGVydHlD
U1NWYWx1ZShwcm9wZXJ0eSk7CisgICAgc2hvdWxkQmVUeXBlKCJlbGVtZW50UnVsZSIsICJDU1NW
YWx1ZUxpc3QiKTsKKworICAgaWYgKGVsZW1lbnRSdWxlKSB7CisgICAgICAgIGlmIChqc1dyYXBw
ZXJDbGFzcyhlbGVtZW50UnVsZVswXSkgPT0gIkNTU1ZhbHVlTGlzdCIpIHsKKyAgICAgICAgICAg
IGVsZW1lbnRSdWxlID0gZWxlbWVudFJ1bGVbMF07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoZWxlbWVudFJ1bGUpIHsKKyAgICAgICAgICAgIHN1YlJ1bGUgPSBlbGVtZW50UnVsZVswXS5j
c3NUZXh0OworICAgICAgICAgICAgc2hvdWxkQmUoInN1YlJ1bGUiLCAiJyIgKyBleHBlY3RlZFRl
eHRzICsgIiciKTsKKyAgICB9CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7
Cit9CisKK3Rlc3RlbGVtZW50UnVsZSgiU2luZ2xlIHZhbHVlIGZvciBiYWNrZ3JvdW5kLWltYWdl
IiwKKyAgICAgICAgICAgICAgICAiYmFja2dyb3VuZC1pbWFnZSIsCisgICAgICAgICAgICAgICAg
IiNlbGVtZW50QSIsCisgICAgICAgICAgICAgICAgIiNlbGVtZW50QSIpOworCit0ZXN0ZWxlbWVu
dFJ1bGUoIlNpbmdsZSB2YWx1ZSBmb3IgYmFja2dyb3VuZC1pbWFnZSIsCisgICAgICAgICAgICAg
ICAgImJhY2tncm91bmQtaW1hZ2UiLAorICAgICAgICAgICAgICAgICIjZGl2IiwKKyAgICAgICAg
ICAgICAgICAiI2RpdiIpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4IDBkMzFm
NWU4ZmRlZDViNzIxODQyYTZhYjU3MzQ0OWZkNDY5Nzc5NDkuLjUwM2MxOTg3YmViMzBjYjI3MmMz
ZWY2NjNmMjM2OWUwMWQyZGM1NDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCkBAIC04OTYs
MyArODk2LDcgQEAgaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1ldmFsLWNvbnRlbnQt
c2NyaXB0Lmh0bWwKIAogIyBFTkFCTEUoV0lER0VUX1JFR0lPTikgaXMgZGlzYWJsZWQKIGZhc3Qv
Y3NzL3dpZGdldC1yZWdpb24tcGFyc2VyLmh0bWwKKworIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDQ2NTAKKyMgRnVydGhlciBkZXZlbG9wbWVudCBuZWVkZWQgZm9y
IENTUyBFbGVtZW50CitmYXN0L2Nzcy9jc3NFbGVtZW50LwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQK
aW5kZXggOTIyN2FkMTVkY2Y1YjBlYmU5NjRkNTc4YTBjYmI0NDM3YmY0MTc1OS4uMTZiMTFmYzE3
OTQyNmJiOTM1MGRlYTkyY2RhMTliMTE4ZmU5YTJiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
CkBAIC01MjksNiArNTI5LDEwIEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5LzEuMQogZmFzdC9kb20vUHJveGltaXR5CiBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMv
ZGV2aWNlLXByb3hpbWl0eS1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCiAKKyMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NjUwCisjIENTUyBFbGVtZW50IChuZWVkcyBF
TkFCTEVfQ1NTX0VMRU1FTlQpCitmYXN0L2Nzcy9jc3NFbGVtZW50LworCiAjID09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PSAjCiAjICAgICAgIERyYWcgYW5kIERyb3AgU3VwcG9ydCBpbiBEUlQuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAj
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IDNjYTZhYzI1NjNmMDZlMDRkMGNmNzY0NzMx
OGE1OGU2NGE5NDQ0MWMuLjU0NDFjOTJmODVkZWNjYmU5MWZjODQyYjMxNjRlYmNmYzI1MGE2ZTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC00NCw2ICs0NCwxMCBAQCBjc3MzL2ZpbHRl
cnMvY3VzdG9tCiBmYXN0L2Nzcy9pbWFnZS1zZXQtcGFyc2luZy5odG1sCiBmYXN0L2Nzcy9pbWFn
ZS1zZXQtcGFyc2luZy1pbnZhbGlkLmh0bWwKIAorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDQ2NTAKKyMgRnVydGhlciBkZXZlbG9wbWVudCBuZWVkZWQgZm9yIENT
UyBFbGVtZW50IChuZWVkcyBFTkFCTEVfQ1NTX0VMRU1FTlQpLgorZmFzdC9jc3MvY3NzRWxlbWVu
dC8KKwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc2NDUKIGNz
czMvZmlsdGVycy9maWx0ZXJlZC1jb21wb3NpdGluZy1kZXNjZW5kYW50Lmh0bWwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163510</attachid>
            <date>2012-09-11 20:44:10 -0700</date>
            <delta_ts>2012-09-12 16:19:25 -0700</delta_ts>
            <desc>Patch v1: Grammar &amp; Parsing</desc>
            <filename>bug-44650-20120911204344.patch</filename>
            <type>text/plain</type>
            <size>50513</size>
            <attacher name="Anish">bhayani</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YmRlYTI4MWJkNTUxYTljNjliZmM3MzllOTkyYjJkMDYzNjJmNTZkLi4zZTIwMDhiZmFkODBjMjcy
YzJjOTM1ODQ0OTBmZjdiZDk2ZmI2YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOS0xMSAgQW5pc2ggQmhheWFuaSAgPGFuaXNoLmJoYXlhbmlAZ21h
aWwuY29tPgorCisgICAgICAgIFN1cHBvcnQgZWxlbWVudCgpIENTUyBpbWFnZSB0eXBlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDY1MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGNvbmZpZ3Vy
YXRpb24gb3B0aW9uIGZvciBDU1MgRWxlbWVudCBzdXBwb3J0LCBkaXNhYmxpbmcgaXQgYnkgZGVm
YXVsdC4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
OgorCiAyMDEyLTA5LTExICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAg
ICAgICAgIEJ1aWxkIGZpeGVkIGZvciBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8x
MjgyNDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAzODczOTVkYTY3NTI4OWQwODQyNmFjM2MyMDFjNjcyOGZkZTcy
MmQ2Li4xZWRmZDM5NTM1NzFjMGJiNGYyMjZlNmUxNTZjMTUzYjBmMjYxOGY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDMgQEAKKzIwMTItMDktMTEgIEFuaXNoIEJoYXlhbmkgIDxhbmlzaC5iaGF5
YW5pQGdtYWlsLmNvbT4KKworICAgICAgICBTdXBwb3J0IGVsZW1lbnQoKSBDU1MgaW1hZ2UgdHlw
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ2NTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVk
IHRoZSBncmFtbWFyIHRvIG5vdGljZSBJRFNFTCAoaWRlbnRpZmllciBzZWxlY3RvcikgZm9yIHRl
cm0gLXdlYmtpdC1lbGVtZW50KCNlbGVtZW50aWQpIGFuZCAKKyAgICAgICAgc2F2ZXMgdGhlIHN0
cmluZyAoI2VsZW1lbnRJRCkgYXMgQ1NTX0VMRU1FTlRfRlVOQ1RJT04uIENTU1BhcnNlciBwYXJz
ZXMgdGhlIHRva2VuIGFuZCBjcmVhdGVzIGEgCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfRUxFTUVOVF9GVU5DVElPTi4gV2Via2l0LWVsZW1lbnQgaXMgdHJlYXRlZCBzaW1pbGFybHkg
dG8gd2Via2l0LWltYWdlLXNldCAKKyAgICAgICAgZm9sbG93aW5nIHRoZSBzYW1lIHBhdGggdGhy
b3VnaCB0aGUgcGFyc2VyIGluY2x1ZGluZyBwYXJzZUZpbGxJbWFnZSgpLiAKKyAgICAgICAgRmVh
dHVyZSBpcyBjb3B5IG9mIC1tb3otZWxlbWVudCgpOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MDY4MjYjYXR0YWNoXzQ2Mzk2NQorICAgICAgICBDU1M0IFNw
ZWM6IGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczQtaW1hZ2VzLyNlbGVtZW50LW5vdGF0aW9u
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFy
c2luZy1pbnZhbGlkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL2Nzc0VsZW1lbnQvd2Vi
a2l0LWVsZW1lbnQtcGFyc2luZy5odG1sCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5mZWF0dXJlcy5hbToK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
Y3NzL0NTU0dyYW1tYXIueToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6cGFyc2VGaWxsSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ1NTRWxlbWVudCk6CisgICAgICAgICogY3NzL0NTU1Bh
cnNlci5oOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZENTU1VuaXRUeXBl
Rm9yRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6Y2xlYW51cCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0U3Ry
aW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmN1c3RvbUNz
c1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNsb25lRm9yQ1NT
T00pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OnJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAg
ICAgIChDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVW
YWx1ZTo6aXNXZWJLaXRFbGVtZW50KToKKwogMjAxMi0wOS0xMSAgTWljaGFlbCBTYWJvZmYgIDxt
c2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXhlZCBmb3IgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI4MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDgzY2JhYzkyNWE1OTY0MzU0MjhmYWVkZDYxMmMwNWVkYzczZTJhMWQuLmVkZjg5ZTFiNmY5NzFk
NzU3NDlmNzQzNjM4Mzc0OTc4MjY5ODA5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMTEgIEFuaXNoIEJoYXlhbmkgIDxhbmlzaC5iaGF5YW5p
QGdtYWlsLmNvbT4KKworICAgICAgICBTdXBwb3J0IGVsZW1lbnQoKSBDU1MgaW1hZ2UgdHlwZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ2NTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBjb25m
aWd1cmF0aW9uIG9wdGlvbiBmb3IgQ1NTIEVsZW1lbnQgc3VwcG9ydCwgZGlzYWJsaW5nIGl0IGJ5
IGRlZmF1bHQuCisKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorCiAyMDEyLTA5LTExICBDaHJp
c3RvcGhlciBDYW1lcm9uICA8Y2NhbWVyb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gTWFrZSBwcmlvcml0aXplZCB0ZXh0dXJlIG1hbmFnZXIgbm90IHRvdWNoIGJhY2tpbmdz
IGFycmF5IG9uIHRoZSBtYWluIHRocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGE4Y2RhNTI4OTY2
NmQzYTMyMzFlZTdjMDhlYzIyYzY5NjRhZDUwMDYuLjcwNzE3NTE4M2FiOTQ0Nzg1Zjk4YmQyYzlk
M2I5NTZkMTg1YWI0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0w
OS0xMSAgQW5pc2ggQmhheWFuaSAgPGFuaXNoLmJoYXlhbmlAZ21haWwuY29tPgorCisgICAgICAg
IFN1cHBvcnQgZWxlbWVudCgpIENTUyBpbWFnZSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDY1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciBD
U1MgRWxlbWVudCBzdXBwb3J0LCBkaXNhYmxpbmcgaXQgYnkgZGVmYXVsdC4KKworICAgICAgICAq
IENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDEyLTA5LTExICBN
aWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeGVk
IGZvciBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjgyNDMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBiYTIyMTk2MjJkMGZjMDdjMmU4NTAzNWM5ODkzYTAwZDNmMjU1ODBlLi4zOWZjZTkwMDMxZTg2
NjljOWQzMzk4OTA5ZGI2MmViMGI2YTA2YWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDktMTEgIEFuaXNoIEJoYXlhbmkgIDxhbmlzaC5iaGF5YW5pQGdtYWlsLmNvbT4KKwor
ICAgICAgICBTdXBwb3J0IGVsZW1lbnQoKSBDU1MgaW1hZ2UgdHlwZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ2NTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBjb25maWd1cmF0aW9uIG9wdGlv
biBmb3IgQ1NTIEVsZW1lbnQgc3VwcG9ydCwgZGlzYWJsaW5nIGl0IGJ5IGRlZmF1bHQuCisKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxMi0w
OS0xMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFj
Y2VsZXJhdGVkIGNvbXBvc2l0aW5nIHNob3VsZCBhbHdheXMgYmUgZm9yY2VkIHdoZW4gdXNpbmcg
dGhlIHRpbGVkIGRyYXdpbmcgYXJlYQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGY5YTBl
YjI5Y2FjNTUzM2FiZDhmMTM3YTI3ZTY1NDgwZGM4MGJlNTguLmVhMzk3ZjI2NTNmZDc5Mzc2YWQ2
Y2Y4ZTM0Y2VhZjk0MmRjMjA2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTM3LDYg
KzM3LDcgQEAgRU5BQkxFX0FOSU1BVElPTl9BUEkgPSA7CiBFTkFCTEVfQkxPQiA9IEVOQUJMRV9C
TE9COwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
OwogRU5BQkxFX0NTUF9ORVhUID0gOworRU5BQkxFX0NTU19FTEVNRU5UID0gOwogRU5BQkxFX0NT
U19FWENMVVNJT05TID0gRU5BQkxFX0NTU19FWENMVVNJT05TOwogRU5BQkxFX0NTU19GSUxURVJT
ID0gRU5BQkxFX0NTU19GSUxURVJTOwogRU5BQkxFX0NTU19ISUVSQVJDSElFUyA9IDsKQEAgLTEz
OSw0ICsxNDAsNCBAQCBFTkFCTEVfV0lER0VUX1JFR0lPTl9tYWNvc3ggPSBFTkFCTEVfV0lER0VU
X1JFR0lPTjsKIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktFUlM7CiBFTkFCTEVfWFNMVCA9
IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcp
ICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkg
JChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9O
RVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19FWENM
VVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NTX0hJRVJBUkNISUVTKSAk
KEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVU
SU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxF
X0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFCTEVf
Q1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19URVhUX0RFQ09SQVRJT04pICQoRU5BQkxFX0NV
U1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxF
X0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxF
X0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9E
SUFMT0dfRUxFTUVOVCkgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRklMRV9T
WVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJM
RV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFT
KSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFC
TEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfREFURVRJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVf
SU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX0xFR0FD
WV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChF
TkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTElOS19QUkVSRU5ERVIpICQoRU5BQkxFX01B
VEhNTCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAk
KEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTUlDUk9EQVRB
KSAkKEVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5U
X1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlf
QVBJKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVf
UkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkgJChFTkFC
TEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NRTF9EQVRB
QkFTRSkgJChFTkFCTEVfU1RZTEVfU0NPUEVEKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19E
T01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URVhUX0FVVE9T
SVpJTkcpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSAkKEVOQUJMRV9UT1VDSF9J
Q09OX0xPQURJTkcpICQoRU5BQkxFX1VORE9fTUFOQUdFUikgJChFTkFCTEVfVklERU8pICQoRU5B
QkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVO
QUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV0lER0VUX1JF
R0lPTikgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMg
PSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykg
JChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05f
QlJFQUspICQoRU5BQkxFX0NTU19FTEVNRU5UKSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykgJChF
TkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19ISUVSQVJDSElFUykgJChFTkFCTEVfQ1NT
X0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFC
TEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9DU1NfQ09NUE9T
SVRJTkcpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NTU19WQVJJQUJM
RVMpICQoRU5BQkxFX0NTUzNfVEVYVF9ERUNPUkFUSU9OKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1F
X0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9F
TEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VM
RU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElBTE9HX0VMRU1F
TlQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVO
QUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVf
SUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xP
UikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1F
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVf
TU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVL
KSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRP
Ul9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xJTktf
UFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5B
QkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVU
RVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChFTkFCTEVf
TVVUQVRJT05fT0JTRVJWRVJTKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChF
TkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFC
TEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19E
T00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5B
QkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklO
RElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVO
QUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5H
KSAkKEVOQUJMRV9VTkRPX01BTkFHRVIpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19U
UkFDSykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NP
Q0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dJREdFVF9SRUdJT04pICQoRU5B
QkxFX1dPUktFUlMpICQoRU5BQkxFX1hTTFQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCA1ODJmYWQ5MzlmNzcz
OTM0OTk4ZmE2MDFkNWNmMzNkNzc5NmE1NTM0Li4wYTY4YTRlNzM5MjlmOWRmNzIxYmZlODMyZGRl
MTU0MTU1ZGU0N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMzgsNiArMzgsNyBAQCBFTkFCTEVfQkxPQiA9
IEVOQUJMRV9CTE9COwogRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxf
TUVTU0FHSU5HOwogRU5BQkxFX0NTUF9ORVhUID0gOwogRU5BQkxFX0NTU19CT1hfREVDT1JBVElP
Tl9CUkVBSyA9IEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUs7CitFTkFCTEVfQ1NTX0VM
RU1FTlQgPSA7CiBFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMgPSBFTkFCTEVfQ1NTX0VYQ0xVU0lPTlM7
CiBFTkFCTEVfQ1NTX0ZJTFRFUlMgPSBFTkFCTEVfQ1NTX0ZJTFRFUlM7CiBFTkFCTEVfQ1NTX0hJ
RVJBUkNISUVTID0gOwpAQCAtMTQwLDQgKzE0MSw0IEBAIEVOQUJMRV9XSURHRVRfUkVHSU9OX21h
Y29zeCA9IEVOQUJMRV9XSURHRVRfUkVHSU9OOwogRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09S
S0VSUzsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQo
RU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVO
QUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NB
R0lORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVB
SykgJChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJM
RV9DU1NfSElFUkFSQ0hJRVMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFC
TEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9D
U1NfU0hBREVSUykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZ
X1BPU0lUSU9OKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVD
T1JBVElPTikgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9B
UkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFO
U0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJ
RU5UQVRJT04pICQoRU5BQkxFX0RJQUxPR19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBM
T0FEKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRlVM
TFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZS
QU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9T
UEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFU
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
VElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FD
WV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9MSU5LX1BS
RVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxF
X01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1M
KSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5BQkxFX01VVEFUSU9OX09CU0VSVkVSUykgJChFTkFC
TEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5B
QkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfU0NS
SVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VS
UykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVFlMRV9TQ09QRUQpICQoRU5BQkxF
X1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMp
ICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVEVYVF9OT1RJRklDQVRJT05TX09O
TFkpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVU5ET19NQU5BR0VSKSAk
KEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1dFQkdMKSAkKEVO
QUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5H
KSAkKEVOQUJMRV9XSURHRVRfUkVHSU9OKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YU0xU
KTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUND
RUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9C
KSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxF
X0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0VMRU1FTlQpICQoRU5BQkxF
X0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NTX0hJRVJB
UkNISUVTKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFH
RV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQURFUlMp
ICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikg
JChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19URVhUX0RFQ09SQVRJT04pICQo
RU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQp
ICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMp
ICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9ESUFMT0dfRUxFTUVOVCkgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFC
TEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJ
KSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElHSF9E
UElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVT
UykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxF
X0lOUFVUX1RZUEVfREFURVRJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5B
QkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FU
SU9OUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTElOS19QUkVSRU5ERVIpICQo
RU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFU
SVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVf
TUlDUk9EQVRBKSAkKEVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMpICQoRU5BQkxFX05BVklHQVRP
Ul9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJ
U0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJMRV9RVU9UQSkg
JChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVD
SCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxF
X1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1RZTEVfU0NPUEVEKSAkKEVOQUJMRV9TVkcpICQoRU5B
QkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9U
RVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSAkKEVOQUJM
RV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VORE9fTUFOQUdFUikgJChFTkFCTEVfVklE
RU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FV
RElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVf
V0lER0VUX1JFR0lPTikgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFNMVCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5mZWF0dXJlcy5hbSBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmZlYXR1cmVzLmFtCmluZGV4IDIwMDA1OGM4MDQ5YTk5NmVmM2JlMjUw
MDAzNDA5M2I2NDBkZTc2MGYuLjg0MjkwZjZhMGIyNDE0M2ZlZmNhYmVhZjZmNDcwZDcwYjViZWJj
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmZlYXR1cmVzLmFtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmZlYXR1cmVzLmFtCkBAIC04LDYgKzgsNyBA
QCBmZWF0dXJlX2RlZmluZXNfZGVmYXVsdHMgKz0gXAogCUVOQUJMRV9DU1BfTkVYVD0wIFwKIAlF
TkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLPTEgXAogCUVOQUJMRV9DU1NfQ09NUE9TSVRJ
Tkc9MCBcCisJRU5BQkxFX0NTU19FTEVNRU5UPTAgXAogCUVOQUJMRV9DU1NfRVhDTFVTSU9OUz0x
IFwKIAlFTkFCTEVfQ1NTX0ZJTFRFUlM9MCBcCiAJRU5BQkxFX0NTU19ISUVSQVJDSElFUz0wIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAzYzNiZDhkZjdmZmM3N2NkNzQwYjNlYTFmZWUxZTU0ODlhODY1ODdhLi5kMGRmNDdkMGZm
NjAzZjUzMjI1MTZhYzQ5Y2ViNjI1NTdmZWM0ZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTIxMyw2ICsyMTIxMyw3IEBA
CiAJCQkJRTVCQTdENjIxNTE0MzdDQTAwRkUxRTNGIC8qIExlbmd0aEZ1bmN0aW9ucy5oICovLAog
CQkJCTkzQ0E0QzlBMDlERjkzRkEwMERGODY3NyAvKiBtYWtlLWNzcy1maWxlLWFycmF5cy5wbCAq
LywKIAkJCQk5M0NBNEM5QjA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXByb3AucGwgKi8sCisJCQkJ
OTNDQTRDOUMwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V0b2tlbml6ZXIgKi8sCiAJCQkJOTNDQTRD
OUQwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V2YWx1ZXMucGwgKi8sCiAJCQkJRkE2NTRBNjMxMTA4
QUJCNzAwMjYxNUUwIC8qIG1hdGhtbC5jc3MgKi8sCiAJCQkJMDcwREQ4RjUwRjAxODY4MDAwNzI3
REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovLApAQCAtMjg3MTEsNiArMjg3MTIsNyBAQAogCQkJ
YmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQ0RENDVFNTBCQTlDODQ2MDBGOTAxNDcgLyog
V2ViQ29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CiAJCQkJSU5TVEFMTF9Q
QVRIID0gIiQoQlVJTFRfUFJPRFVDVFNfRElSKSI7CisJCQkJU1lNUk9PVCA9IGJoYXlhbmkvV2Vi
S2l0L1dlYktpdEJ1aWxkOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTI4NzE5
LDYgKzI4NzIxLDcgQEAKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUNERDQ1RTUw
QkE5Qzg0NjAwRjkwMTQ3IC8qIFdlYkNvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdz
ID0gewogCQkJCUlOU1RBTExfUEFUSCA9ICIkKEJVSUxUX1BST0RVQ1RTX0RJUikiOworCQkJCVNZ
TVJPT1QgPSBiaGF5YW5pL1dlYktpdC9XZWJLaXRCdWlsZDsKIAkJCX07CiAJCQluYW1lID0gUmVs
ZWFzZTsKIAkJfTsKQEAgLTI4NzI3LDYgKzI4NzMwLDcgQEAKIAkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gMUNERDQ1RTUwQkE5Qzg0NjAwRjkwMTQ3IC8qIFdlYkNvcmUueGNjb25maWcg
Ki87CiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJCUJVSUxEX1ZBUklBTlRTID0gbm9ybWFsOwor
CQkJCVNZTVJPT1QgPSBiaGF5YW5pL1dlYktpdC9XZWJLaXRCdWlsZDsKIAkJCX07CiAJCQluYW1l
ID0gUHJvZHVjdGlvbjsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CmluZGV4IDUxNjc1Mzdm
NzFiN2U0OWU1ODRkNzk4MmRjNDVjMDU1ZDg5Mzg1MDkuLmFiNDI0ZDQxYzQ2OTU1ZDZjMzBkNjM2
ZjQ0NTExN2I0MDQwNjAwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpAQCAtOTUsNyArOTUs
NyBAQCBzdGF0aWMgaW5saW5lIGludCBjc3N5eWVycm9yKHZvaWQqLCBjb25zdCBjaGFyKikKIAog
JX0KIAotJWV4cGVjdCA2MworJWV4cGVjdCA2NAogCiAlbm9uYXNzb2MgTE9XRVNUX1BSRUMKIApA
QCAtMTQ1NSw2ICsxNDU1LDEzIEBAIHRlcm06CiAgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19WQVJJQUJMRV9OQU1FOwogI2VuZGlmCiAgIH0KKyAgfCBJRFNFTCBtYXliZV9z
cGFjZSB7CisjaWYgRU5BQkxFKENTU19FTEVNRU5UKQorICAgICAgJCQuaWQgPSAwOworICAgICAg
JCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRUxFTUVOVF9GVU5DVElPTjsKKyAgICAg
ICQkLnN0cmluZyA9ICQxOworI2VuZGlmCisgIH0KICAgLyogRklYTUU6IGFjY29yZGluZyB0byB0
aGUgc3BlY3MgYSBmdW5jdGlvbiBjYW4gaGF2ZSBhIHVuYXJ5X29wZXJhdG9yIGluIGZyb250LiBJ
IGtub3cgbm8gY2FzZSB3aGVyZSB0aGlzIG1ha2VzIHNlbnNlICovCiAgIHwgZnVuY3Rpb24gewog
ICAgICAgJCQgPSAkMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggMjhjZTEzMTU3Zjk1
NTRiNmE5MmY3NWUwOGE1ZGFlZDlmYWU1MThlMy4uMWViZDQ1YWM3NmI0NzUxMTJjNGNmZDVkNzE2
NjI5NjVhNjFkYjFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTM1MDksNiArMzUw
OSwxMiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb250ZW50KENTU1Byb3BlcnR5SUQgcHJvcElk
LCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX0VM
RU1FTlQpCisgICAgICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbC0+ZnVu
Y3Rpb24tPm5hbWUsICItd2Via2l0LWVsZW1lbnQoIikpIHsKKyAgICAgICAgICAgICAgICBwYXJz
ZWRWYWx1ZSA9IHBhcnNlQ1NTRWxlbWVudChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNHZW5lcmF0ZWRJbWFnZVZh
bHVlKHZhbCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlR2VuZXJhdGVkSW1hZ2UobV92
YWx1ZUxpc3QuZ2V0KCksIHBhcnNlZFZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMzU5Niw2ICszNjAyLDE0IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZpbGxJ
bWFnZShDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdCwgUmVmUHRyPENTU1ZhbHVlPiYKICAg
ICBpZiAoaXNHZW5lcmF0ZWRJbWFnZVZhbHVlKHZhbHVlTGlzdC0+Y3VycmVudCgpKSkKICAgICAg
ICAgcmV0dXJuIHBhcnNlR2VuZXJhdGVkSW1hZ2UodmFsdWVMaXN0LCB2YWx1ZSk7CiAgICAgCisj
aWYgRU5BQkxFKENTU19FTEVNRU5UKQorICAgIGlmICh2YWx1ZUxpc3QtPmN1cnJlbnQoKS0+dW5p
dCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24gJiYgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWVM
aXN0LT5jdXJyZW50KCktPmZ1bmN0aW9uLT5uYW1lLCAiLXdlYmtpdC1lbGVtZW50KCIpKSB7Cisg
ICAgICAgIHZhbHVlID0gcGFyc2VDU1NFbGVtZW50KG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpOwor
ICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5k
aWYKKyAgICAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKICAgICBpZiAodmFsdWVMaXN0LT5j
dXJyZW50KCktPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uICYmIGVxdWFsSWdub3Jp
bmdDYXNlKHZhbHVlTGlzdC0+Y3VycmVudCgpLT5mdW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtaW1h
Z2Utc2V0KCIpKSB7CiAgICAgICAgIHZhbHVlID0gcGFyc2VJbWFnZVNldChtX3ZhbHVlTGlzdC5n
ZXQoKSk7CkBAIC03MjE0LDYgKzcyMjgsMjkgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZUltYWdlUmVzb2x1dGlvbihDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGkKICAg
ICByZXR1cm4gbGlzdDsKIH0KICNlbmRpZgorICAgIAorI2lmIEVOQUJMRShDU1NfRUxFTUVOVCkK
K1Bhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VDU1NFbGVtZW50
KENTU1BhcnNlclZhbHVlKiB2YWx1ZSkKK3sgICAgCisgICAgaWYgKHZhbHVlLT51bml0ICE9IENT
U1BhcnNlclZhbHVlOjpGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgQ1NT
UGFyc2VyVmFsdWVMaXN0KiBmdW5jdGlvbkFyZ3MgPSB2YWx1ZS0+ZnVuY3Rpb24tPmFyZ3MuZ2V0
KCk7CisgICAgaWYgKCFmdW5jdGlvbkFyZ3MgfHwgIWZ1bmN0aW9uQXJncy0+c2l6ZSgpIHx8ICFm
dW5jdGlvbkFyZ3MtPmN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgaWYg
KGZ1bmN0aW9uQXJncy0+c2l6ZSgpICE9IDEpCisgICAgICAgIHJldHVybiAwOworCisgICAgQ1NT
UGFyc2VyVmFsdWUqIGFyZyA9IGZ1bmN0aW9uQXJncy0+Y3VycmVudCgpOworICAgIGlmIChhcmct
PnVuaXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTEVNRU5UX0ZVTkNUSU9OICYmIGFyZy0+
dW5pdCAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUikKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjc3NFbGVtZW50
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShhcmctPnN0cmluZywgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19FTEVNRU5UX0ZVTkNUSU9OKTsKKyAgICAKKyAgICByZXR1cm4gY3NzRWxlbWVudDsK
K30KKyNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCiBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlSW1hZ2VTZXQoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxp
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggZTMzMDkwZjgzMjZmYTY0YjNjMmQzYWViODNl
YjQ2YjM0ZDMwNmJkOS4uZTdmNmRlMDI0N2E0YTc4MmZlM2Q2YTE5NGE1MzNjYjVlNDhhNWM0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtMjEzLDYgKzIxMywxMCBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBh
cnNlSW1hZ2VSZXNvbHV0aW9uKENTU1BhcnNlclZhbHVlTGlzdCopOwogI2VuZGlmCisgICAgCisj
aWYgRU5BQkxFKENTU19FTEVNRU5UKQorICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHBhcnNlQ1NTRWxlbWVudChDU1NQYXJzZXJWYWx1ZSopOworI2VuZGlmCiAKICNpZiBFTkFCTEUo
Q1NTX0lNQUdFX1NFVCkKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUltYWdlU2V0KENT
U1BhcnNlclZhbHVlTGlzdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlclZhbHVlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcApp
bmRleCA4Yjc2MjU1NzhmNGY1MmMzNjg5ZmFjNGM2ZmUwNzNkZmNkOWZlYzg1Li40N2NlMjNlYTEy
NmM1YThjMWJjYmNjMjMzNzlhMDExNzYwYjMwYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyVmFsdWVzLmNwcApAQCAtOTAsNiArOTAsOSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQ
YXJzZXJWYWx1ZTo6Y3JlYXRlQ1NTVmFsdWUoKQogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQog
ICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9OQU1FOgogI2VuZGlmCisj
aWYgRU5BQkxFKENTU19FTEVNRU5UKQorICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19F
TEVNRU5UX0ZVTkNUSU9OOgorI2VuZGlmCiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BBUlNFUl9IRVhDT0xPUjoKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoc3RyaW5nLCBwcmltaXRpdmVVbml0KTsKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmlu
ZGV4IDVkMmE3ZjdlNGQ1YWE4NWMyMDlhODdiNDJkNDIyOWQ0Njc1MzdlYjkuLjVlMTMzMTc1MzY2
YjYzMDcwZWVhMWU1NTE1OGEyZWJkY2ZiOWFjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcApAQCAtMTE2LDYgKzExNiw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c1ZhbGlkQ1NTVW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0CiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1ZBUklBQkxFX05BTUU6CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX0VMRU1FTlQpCisg
ICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VMRU1FTlRfRlVOQ1RJT046CisjZW5kaWYK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMzcwLDYgKzM3Myw5IEBAIHZvaWQg
Q1NTUHJpbWl0aXZlVmFsdWU6OmNsZWFudXAoKQogICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8VW5p
dFR5cGVzPihtX3ByaW1pdGl2ZVVuaXRUeXBlKSkgewogICAgIGNhc2UgQ1NTX1NUUklORzoKICAg
ICBjYXNlIENTU19VUkk6CisjaWYgRU5BQkxFKENTU19FTEVNRU5UKQorICAgIGNhc2UgQ1NTX0VM
RU1FTlRfRlVOQ1RJT046CisjZW5kaWYKICAgICBjYXNlIENTU19BVFRSOgogICAgIGNhc2UgQ1NT
X0NPVU5URVJfTkFNRToKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKQEAgLTc0Nyw2ICs3NTMs
OSBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFN0cmluZ1ZhbHVlKEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAogICAgICAgICBjYXNlIENTU19TVFJJTkc6CiAgICAgICAgIGNhc2UgQ1NT
X0FUVFI6CiAgICAgICAgIGNhc2UgQ1NTX1VSSToKKyNpZiBFTkFCTEUoQ1NTX0VMRU1FTlQpCisg
ICAgICAgIGNhc2UgQ1NTX0VMRU1FTlRfRlVOQ1RJT046CisjZW5kaWYKICNpZiBFTkFCTEUoQ1NT
X1ZBUklBQkxFUykKICAgICAgICAgY2FzZSBDU1NfVkFSSUFCTEVfTkFNRToKICNlbmRpZgpAQCAt
NzY3LDYgKzc3Niw5IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0U3RyaW5nVmFsdWUo
KSBjb25zdAogICAgICAgICBjYXNlIENTU19TVFJJTkc6CiAgICAgICAgIGNhc2UgQ1NTX0FUVFI6
CiAgICAgICAgIGNhc2UgQ1NTX1VSSToKKyNpZiBFTkFCTEUoQ1NTX0VMRU1FTlQpCisgICAgICAg
IGNhc2UgQ1NTX0VMRU1FTlRfRlVOQ1RJT046CisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1ZBUklB
QkxFUykKICAgICAgICAgY2FzZSBDU1NfVkFSSUFCTEVfTkFNRToKICNlbmRpZgpAQCAtMTEyOCw2
ICsxMTQwLDExIEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNv
bnN0CiAgICAgICAgICAgICB0ZXh0ID0gIi13ZWJraXQtdmFyKCIgKyBTdHJpbmcobV92YWx1ZS5z
dHJpbmcpICsgIikiOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ1NT
X0VMRU1FTlQpCisgICAgICAgIGNhc2UgQ1NTX0VMRU1FTlRfRlVOQ1RJT046CisgICAgICAgICAg
ICB0ZXh0ID0gIi13ZWJraXQtZWxlbWVudCgjIiArIFN0cmluZyhtX3ZhbHVlLnN0cmluZykgKyAi
KSI7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIH0KIAogICAgIEFTU0VSVCghY3Nz
VGV4dENhY2hlKCkuY29udGFpbnModGhpcykpOwpAQCAtMTE4MCw2ICsxMTk3LDkgQEAgUGFzc1Jl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNsb25lRm9yQ1NTT00o
KSBjb25zdAogICAgIHN3aXRjaCAobV9wcmltaXRpdmVVbml0VHlwZSkgewogICAgIGNhc2UgQ1NT
X1NUUklORzoKICAgICBjYXNlIENTU19VUkk6CisjaWYgRU5BQkxFKENTU19FTEVNRU5UKQorICAg
IGNhc2UgQ1NTX0VMRU1FTlRfRlVOQ1RJT046CisjZW5kaWYKICAgICBjYXNlIENTU19BVFRSOgog
ICAgIGNhc2UgQ1NTX0NPVU5URVJfTkFNRToKICAgICAgICAgcmVzdWx0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShtX3ZhbHVlLnN0cmluZywgc3RhdGljX2Nhc3Q8VW5pdFR5cGVzPihtX3By
aW1pdGl2ZVVuaXRUeXBlKSk7CkBAIC0xMjcxLDYgKzEyOTEsOSBAQCB2b2lkIENTU1ByaW1pdGl2
ZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZQogICAgIGNhc2UgQ1NTX1BBUlNFUl9IRVhDT0xPUjoKICAgICBjYXNlIENTU19TVFJJ
Tkc6CiAgICAgY2FzZSBDU1NfVVJJOgorI2lmIEVOQUJMRShDU1NfRUxFTUVOVCkKKyAgICBjYXNl
IENTU19FTEVNRU5UX0ZVTkNUSU9OOgorI2VuZGlmCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMp
CiAgICAgY2FzZSBDU1NfVkFSSUFCTEVfTkFNRToKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuaAppbmRleCAxMDNlYTZhODNkMmQ2NjJjNDUzMTQyM2Y3MGI4MzI5NDky
MGZhY2I5Li43NGJiNGNmMDY0ZWE5ZjBkZWVlYjA4NjBjMmQ3MjY3YTUwYjkzODY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtOTgsNiArOTgsNyBAQCBwdWJsaWM6
CiAgICAgICAgIENTU19EUFBYID0gMjksCiAgICAgICAgIENTU19EUEkgPSAzMCwKICAgICAgICAg
Q1NTX0RQQ00gPSAzMSwKKwogICAgICAgICBDU1NfUEFJUiA9IDEwMCwgLy8gV2UgZW52aXNpb24g
dGhpcyBiZWluZyBleHBvc2VkIGFzIGEgbWVhbnMgb2YgZ2V0dGluZyBjb21wdXRlZCBzdHlsZSB2
YWx1ZXMgZm9yIHBhaXJzIChib3JkZXItc3BhY2luZy9yYWRpdXMsIGJhY2tncm91bmQtcG9zaXRp
b24sIGV0Yy4pCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VU
X1JFR0lPTikKICAgICAgICAgQ1NTX0RBU0hCT0FSRF9SRUdJT04gPSAxMDEsIC8vIEZJWE1FOiBE
YXNoYm9hcmQgcmVnaW9uIHNob3VsZCBub3QgYmUgYSBwcmltaXRpdmUgdmFsdWUuCkBAIC0xMzIs
NiArMTMzLDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgICAgICBD
U1NfVkFSSUFCTEVfTkFNRSA9IDExNSwKICNlbmRpZgorI2lmIEVOQUJMRShDU1NfRUxFTUVOVCkK
KyAgICAgICAgQ1NTX0VMRU1FTlRfRlVOQ1RJT04gPSAxMTYsCisjZW5kaWYKICAgICB9OwogCiAg
ICAgLy8gVGhpcyBlbnVtIGZvbGxvd3MgdGhlIENTU1BhcnNlcjo6VW5pdHMgZW51bSBhdWdtZW50
ZWQgd2l0aCBVTklUX0ZSRVFVRU5DWSBmb3IgZnJlcXVlbmNpZXMuCkBAIC0xODEsNiArMTg1LDkg
QEAgcHVibGljOgogICAgIGJvb2wgaXNDYWxjdWxhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9wcmlt
aXRpdmVVbml0VHlwZSA9PSBDU1NfQ0FMQzsgfQogICAgIGJvb2wgaXNDYWxjdWxhdGVkUGVyY2Vu
dGFnZVdpdGhOdW1iZXIoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX0NB
TENfUEVSQ0VOVEFHRV9XSVRIX05VTUJFUjsgfQogICAgIGJvb2wgaXNDYWxjdWxhdGVkUGVyY2Vu
dGFnZVdpdGhMZW5ndGgoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX0NB
TENfUEVSQ0VOVEFHRV9XSVRIX0xFTkdUSDsgfQorI2lmIEVOQUJMRShDU1NfRUxFTUVOVCkKKyAg
ICBib29sIGlzV2ViS2l0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9
PSBDU1NfRUxFTUVOVF9GVU5DVElPTjsgfQorI2VuZGlmCiAjaWYgRU5BQkxFKENTU19WQVJJQUJM
RVMpCiAgICAgYm9vbCBpc1ZhcmlhYmxlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5
cGUoKSA9PSBDU1NfVkFSSUFCTEVfTkFNRTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2Zl
YXR1cmVzLmd5cGkKaW5kZXggNDY2NGIwNGE0MjM0MzMxNzRhMmVhNzBiMzllMjRlNzVkMDM3NzRi
Mi4uOTUzY2NmOTE2YTNlMGZhODNlOWEyYjNiYTY1N2Y4ZDBlNTQ5ZTcwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAtNDEsNiArNDEsNyBAQAogICAgICAgJ0VOQUJMRV9D
U1MzX1RFWFRfREVDT1JBVElPTj0wJywKICAgICAgICdFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9O
X0JSRUFLPTEnLAogICAgICAgJ0VOQUJMRV9DU1NfQ09NUE9TSVRJTkc9MCcsCisgICAgICAnRU5B
QkxFX0NTU19FTEVNRU5UPTAnLAogICAgICAgJ0VOQUJMRV9DU1NfRVhDTFVTSU9OUz0xJywKICAg
ICAgICdFTkFCTEVfQ1NTX0ZJTFRFUlM9MScsCiAgICAgICAnRU5BQkxFX0NTU19ISUVSQVJDSElF
Uz0wJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcKaW5kZXggNmE2NzQwODVlOWQ1ZDYzZDJiZGVjOTAwYTg3Mzg2
OWY3YTU2M2UwOS4uM2MzMDAwMWQxYjZhZGJjODViNzU3ZTAxY2Q1NDcyMzczZDM0NjVlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKQEAgLTM4LDYgKzM4LDcgQEAgRU5BQkxFX0JMT0IgPSBFTkFCTEVfQkxP
QjsKIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsK
IEVOQUJMRV9DU1BfTkVYVCA9IDsKIEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUsgPSBF
TkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLOworRU5BQkxFX0NTU19FTEVNRU5UID0gOwog
RU5BQkxFX0NTU19FWENMVVNJT05TID0gRU5BQkxFX0NTU19FWENMVVNJT05TOwogRU5BQkxFX0NT
U19GSUxURVJTID0gRU5BQkxFX0NTU19GSUxURVJTOwogRU5BQkxFX0NTU19ISUVSQVJDSElFUyA9
IDsKQEAgLTE0MCw0ICsxNDEsNCBAQCBFTkFCTEVfV0lER0VUX1JFR0lPTl9tYWNvc3ggPSBFTkFC
TEVfV0lER0VUX1JFR0lPTjsKIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktFUlM7CiBFTkFC
TEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9S
RU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQU5JTUFU
SU9OX0FQSSkgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5B
QkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxF
X0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NTX0hJRVJB
UkNISUVTKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFH
RV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQURFUlMp
ICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikg
JChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19URVhUX0RFQ09SQVRJT04pICQo
RU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQp
ICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMp
ICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9ESUFMT0dfRUxFTUVOVCkgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFC
TEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJ
KSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElHSF9E
UElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVT
UykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxF
X0lOUFVUX1RZUEVfREFURVRJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5B
QkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FU
SU9OUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTElOS19QUkVSRU5ERVIpICQo
RU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFU
SVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVf
TUlDUk9EQVRBKSAkKEVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMpICQoRU5BQkxFX05BVklHQVRP
Ul9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJ
U0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJMRV9RVU9UQSkg
JChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVD
SCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxF
X1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1RZTEVfU0NPUEVEKSAkKEVOQUJMRV9TVkcpICQoRU5B
QkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9U
RVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSAkKEVOQUJM
RV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VORE9fTUFOQUdFUikgJChFTkFCTEVfVklE
RU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FV
RElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVf
V0lER0VUX1JFR0lPTikgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJF
X0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJE
X0NBTlZBUykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFCTEVfQkxPQikgJChFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RF
Q09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19FTEVNRU5UKSAkKEVOQUJMRV9DU1NfRVhDTFVT
SU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19ISUVSQVJDSElFUykgJChF
TkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElP
TikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9D
U1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NT
U19WQVJJQUJMRVMpICQoRU5BQkxFX0NTUzNfVEVYVF9ERUNPUkFUSU9OKSAkKEVOQUJMRV9DVVNU
T01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9E
QVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9E
RVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElB
TE9HX0VMRU1FTlQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0ZJTEVfU1lT
VEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVf
R0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykg
JChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxF
X0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRf
VFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0RBVEVUSU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lO
UFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9NQVRI
TUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChF
TkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFUQSkg
JChFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9V
VElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQ
SSkgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JF
UVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxF
X1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUUxfREFUQUJB
U0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfRE9N
X09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVYVF9BVVRPU0la
SU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVfVE9VQ0hfSUNP
Tl9MT0FESU5HKSAkKEVOQUJMRV9VTkRPX01BTkFHRVIpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJM
RV9WSURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFC
TEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dJREdFVF9SRUdJ
T04pICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hTTFQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2Uv
V2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCA4YWE5
Y2QzM2E5MmZkMGVhZDM1NjU4MmJjMGQ3ZWRhZGEyYjYzYmI1Li5hNTc2ZWJjY2YyMGVkYTg2MWE4
MTg5MWY2ZjRjNmUzZWU5Nzk3YjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMzksNiArMzksNyBAQCBFTkFC
TEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVf
Q1NQX05FWFQgPSA7CiBFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLID0gRU5BQkxFX0NT
U19CT1hfREVDT1JBVElPTl9CUkVBSzsKIEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcgPSA7CitFTkFC
TEVfQ1NTX0VMRU1FTlQgPSA7CiBFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMgPSBFTkFCTEVfQ1NTX0VY
Q0xVU0lPTlM7CiBFTkFCTEVfQ1NTX0ZJTFRFUlMgPSBFTkFCTEVfQ1NTX0ZJTFRFUlM7CiBFTkFC
TEVfQ1NTX0hJRVJBUkNISUVTID0gOwpAQCAtMTQwLDQgKzE0MSw0IEBAIEVOQUJMRV9XSURHRVRf
UkVHSU9OX21hY29zeCA9IEVOQUJMRV9XSURHRVRfUkVHSU9OOwogRU5BQkxFX1dPUktFUlMgPSBF
TkFCTEVfV09SS0VSUzsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVG
SU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FO
VkFTKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFO
TkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JB
VElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19DT01QT1NJ
VElORykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19ISUVSQVJDSElFUykgJChF
TkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElP
TikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9D
U1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1Mz
X1RFWFRfREVDT1JBVElPTikgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJM
RV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVf
REFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9E
RVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJQUxPR19FTEVNRU5UKSAkKEVOQUJMRV9ESVJF
Q1RPUllfVVBMT0FEKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRklMVEVSUykgJChF
TkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FU
SU9OKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChF
TkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJM
RV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVU
X1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVND
UklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5B
QkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJM
RV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0Up
ICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5B
QkxFX01IVE1MKSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5BQkxFX01VVEFUSU9OX09CU0VSVkVS
UykgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BST0dSRVNTX0VMRU1F
TlQpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChF
TkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVFlMRV9TQ09QRUQp
ICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVEVYVF9OT1RJRklD
QVRJT05TX09OTFkpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVU5ET19N
QU5BR0VSKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1dF
QkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9X
RUJfVElNSU5HKSAkKEVOQUJMRV9XSURHRVRfUkVHSU9OKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVO
QUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChF
TkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVO
QUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQp
ICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0VMRU1FTlQp
ICQoRU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5B
QkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSElFUkFSQ0hJRVMpICQoRU5BQkxFX0NTU19J
TUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxF
X0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NTX1NUSUNLWV9Q
T1NJVElPTikgJChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19URVhUX0RFQ09S
QVRJT04pICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJE
X1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNG
RVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVO
VEFUSU9OKSAkKEVOQUJMRV9ESUFMT0dfRUxFTUVOVCkgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9B
RCkgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExT
Q1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFC
TEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lGUkFN
RV9TRUFNTEVTUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BF
RUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJ
TUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9U
SU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdH
RVIpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lf
Tk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTElOS19QUkVS
RU5ERVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9N
RURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkg
JChFTkFCTEVfTUlDUk9EQVRBKSAkKEVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMpICQoRU5BQkxF
X05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJM
RV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1NDUklQ
VEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMp
ICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1RZTEVfU0NPUEVEKSAkKEVOQUJMRV9T
VkcpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAk
KEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZ
KSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VORE9fTUFOQUdFUikgJChF
TkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFC
TEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykg
JChFTkFCTEVfV0lER0VUX1JFR0lPTikgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFNMVCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UgYi9Tb3VyY2Uv
Y21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKaW5kZXggNThhOTBkMjkwYjI2MTEzZjVlOWU2MWEz
YmMxMDNlNGM4NzkxZjgwMy4uYTg0M2M2M2IzNDQzMDEwOTM5MjU3MDE2NDUxYTgwZjMyOWFhNDRi
MiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCisrKyBiL1Nv
dXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpAQCAtMjMsNiArMjMsNyBAQCBNQUNSTyAo
V0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQ1NT
M19URVhUX0RFQ09SQVRJT04gIlRvZ2dsZSBDU1MzIFRleHQgRGVjb3JhdGlvbiBzdXBwb3J0IiBP
RkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9C
UkVBSyAiVG9nZ2xlIEJveCBEZWNvcmF0aW9uIEJyZWFrIChDU1MgQmFja2dyb3VuZHMgYW5kIEJv
cmRlcnMpIHN1cHBvcnQiIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9DU1Nf
Q09NUE9TSVRJTkcgIlRvZ2dsZSBDU1MgQ09NUE9TSVRJTkcgc3VwcG9ydCIgT0ZGKQorICAgIFdF
QktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9DU1NfRUxFTUVOVCAiVG9nZ2xlIENTUyBFTEVNRU5U
IHN1cHBvcnQiIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQ1NTX0VYQ0xV
U0lPTlMgIlRvZ2dsZSBDU1MgRXhjbHVzaW9uIHN1cHBvcnQiIE9GRikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfQ1NTX0ZJTFRFUlMgIlRvZ2dsZSBDU1MgRmlsdGVycyBzdXBwb3J0
IiBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0NTU19ISUVSQVJDSElFUyAi
VG9nZ2xlIENTUyBIaWVyYXJjaGllcyBzdXBwb3J0IiBPRkYpCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGFlZWJiYzBiYWEzMmVlYTA2ZTBjNGYw
MWIyNWI2MDU5N2QzOWY1ZS4uNDYzNjM4MDgyYzM4Njk2YjAwNzI4MzgyZTdlYzU1YjViMzM2OWZh
NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEyLTA5LTExICBBbmlzaCBCaGF5YW5pICA8YW5pc2guYmhheWFuaUBn
bWFpbC5jb20+CisKKyAgICAgICAgU3VwcG9ydCBlbGVtZW50KCkgQ1NTIGltYWdlIHR5cGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NjUwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgY29uZmln
dXJhdGlvbiBvcHRpb24gZm9yIENTUyBFbGVtZW50IHN1cHBvcnQsIGRpc2FibGluZyBpdCBieSBk
ZWZhdWx0LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgor
ICAgICAgICAqIHFtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJpOgorCiAyMDEyLTA5
LTExICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gcmVuYW1lIHdlYmtpdF9yZXNvdXJjZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0
dXJlTGlzdC5wbQppbmRleCA5ZTEzZmI2ZGIwNGZkNTkwMTkyODllMzIwMjJkNWY0MGRjYjc4N2Zm
Li42M2U4YmIwODFhMzJmNGVlZjc2NDVlZjE4NGE2ZDA4MTRiNjk3MjJlIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC01MSw2ICs1MSw3IEBAIG15ICgKICAgICAk
Y3NwTmV4dFN1cHBvcnQsCiAgICAgJGNzczNUZXh0RGVjb3JhdGlvblN1cHBvcnQsCiAgICAgJGNz
c0JveERlY29yYXRpb25CcmVha1N1cHBvcnQsCisgICAgJGNzc0VsZW1lbnRTdXBwb3J0LAogICAg
ICRjc3NFeGNsdXNpb25zU3VwcG9ydCwKICAgICAkY3NzRmlsdGVyc1N1cHBvcnQsCiAgICAgJGNz
c0hpZXJhcmNoaWVzU3VwcG9ydCwKQEAgLTE2MSw2ICsxNjIsOSBAQCBteSBAZmVhdHVyZXMgPSAo
CiAgICAgeyBvcHRpb24gPT4gImNzcC1uZXh0IiwgZGVzYyA9PiAiVG9nZ2xlIENvbnRlbnQgU2Vj
dXJpdHkgUG9saWN5IDEuMSBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0NTUF9O
RVhUIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGNzcE5leHRTdXBwb3J0IH0sCiAKKyAgICB7
IG9wdGlvbiA9PiAiY3NzLWVsZW1lbnQiLCBkZXNjID0+ICJUb2dnbGUgQ1NTIEVsZW1lbnQgc3Vw
cG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9DU1NfRUxFTUVOVCIsIGRlZmF1bHQgPT4g
MCwgdmFsdWUgPT4gXCRjc3NFbGVtZW50U3VwcG9ydCB9LAorCiAgICAgeyBvcHRpb24gPT4gImNz
cy1leGNsdXNpb25zIiwgZGVzYyA9PiAiVG9nZ2xlIENTUyBFeGNsdXNpb25zIHN1cHBvcnQiLAog
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMiLCBkZWZhdWx0ID0+IDEsIHZh
bHVlID0+IFwkY3NzRXhjbHVzaW9uc1N1cHBvcnQgfSwKIApkaWZmIC0tZ2l0IGEvVG9vbHMvcW1h
a2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmkgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2Zl
YXR1cmVzL2ZlYXR1cmVzLnByaQppbmRleCA5NTI2YmY2YzEyYTAyZDIyYTczOWM4ZGFhOGFhMTg5
NGU3MzM4NmZlLi41OTUyMmM1NTc0NTk5MGQxM2M5NWE0ZDc2N2M4N2QwN2MzMGYzNjRhIDEwMDY0
NAotLS0gYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByaQorKysgYi9U
b29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByaQpAQCAtMjEsNiArMjEsNyBA
QCBGRUFUVVJFX0RFRkFVTFRTID0gXAogICAgIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORz0xIFwK
ICAgICBFTkFCTEVfQ1NQX05FWFQ9MCBcCiAgICAgRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9C
UkVBSz0xIFwKKyAgICBFTkFCTEVfQ1NTX0VMRU1FTlQ9MCBcCiAgICAgRU5BQkxFX0NTU19FWENM
VVNJT05TPTEgXAogICAgIEVOQUJMRV9DU1NfRklMVEVSUz0xIFwKICAgICBFTkFCTEVfQ1NTX0dS
SURfTEFZT1VUPTAgXApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM0OWYyOGIwMzU4N2M5YzlmYTRkMzNhMDU1ZjlmZDBhOGMy
YjViZmMuLjZhZDdhZjgzM2Y2YjBiZjBlNjlhYjRiYjg2ZmI1NjA3Yzc2N2NmYTEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMyBAQAorMjAxMi0wOS0xMSAgQW5pc2ggQmhheWFuaSAgPGFuaXNoLmJoYXlhbmlA
Z21haWwuY29tPgorCisgICAgICAgIFN1cHBvcnQgZWxlbWVudCgpIENTUyBpbWFnZSB0eXBlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDY1MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3Rz
IGZvciB0aGUgdXBkYXRlZCB0aGUgZ3JhbW1hciB0byBub3RpY2UgSURTRUwgZm9yIHRlcm0gLXdl
YmtpdC1lbGVtZW50KCNlbGVtZW50aWQpLiAKKyAgICAgICAgQ1NTUGFyc2VyIHBhcnNlcyB0aGUg
dG9rZW4gYW5kIGNyZWF0ZXMgYSBDU1NQcmltaXRpdmVWYWx1ZSBDU1NfRUxFTUVOVF9GVU5DVElP
TgorICAgICAgICBzdG9yaW5nIHRoZSAjZWxlbWVudGlkLiBUaGVzZSB0ZXN0cyBlbnN1cmUgaW5w
dXRzIGFyZSBjb3JyZWN0IGFuZCBwYXJzZWQgdmFsdWUgaXMgY29ycmVjdC4KKworICAgICAgICAq
IGZhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFyc2luZy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFy
c2luZy1pbnZhbGlkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY3Nz
RWxlbWVudC93ZWJraXQtZWxlbWVudC1wYXJzaW5nLWludmFsaWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jc3MvY3NzRWxlbWVudC93ZWJraXQtZWxlbWVudC1wYXJzaW5nLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAg
ICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBl
ZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMi0wOS0xMSAgU3RlcGhh
bmllIExld2lzICA8c2xld2lzQGFwcGxlLmNvbT4KIAogICAgICAgICBTa2lwIHNwYXRpYWwtbmF2
aWdhdGlvbiB0ZXN0cyBvbiBtYWMtd2syIGJlY2F1c2UgdGhleSBhcmUgYWxsIGZhaWxpbmcuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3NFbGVtZW50L3dlYmtpdC1lbGVtZW50
LXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzRWxlbWVudC93
ZWJraXQtZWxlbWVudC1wYXJzaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2M0Yzc3YjVl
YmE4ZjNmNzgwNjdmMzVmNWI4ZGY5ZTZhZDMwMTc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvY3NzRWxlbWVudC93ZWJraXQtZWxlbWVudC1wYXJzaW5nLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDI3IEBACitUZXN0IHRoZSBwYXJzaW5nIG9mIHRoZSAtd2Via2l0LWVs
ZW1lbnQgZnVuY3Rpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK1Npbmds
ZSB2YWx1ZSBmb3IgYmFja2dyb3VuZC1pbWFnZSA6ICNlbGVtZW50QQorUEFTUyBqc1dyYXBwZXJD
bGFzcyhlbGVtZW50UnVsZSkgaXMgJ0NTU1ByaW1pdGl2ZVZhbHVlJworUEFTUyBqc1dyYXBwZXJD
bGFzcyhlbGVtZW50UnVsZS5fX3Byb3RvX18pIGlzICdDU1NQcmltaXRpdmVWYWx1ZVByb3RvdHlw
ZScKK1BBU1MganNXcmFwcGVyQ2xhc3MoZWxlbWVudFJ1bGUuY29uc3RydWN0b3IpIGlzICdDU1NQ
cmltaXRpdmVWYWx1ZUNvbnN0cnVjdG9yJworUEFTUyBzdWJSdWxlIGlzICctd2Via2l0LWVsZW1l
bnQoI2VsZW1lbnRBKScKKworU2luZ2xlIHZhbHVlIGZvciBiYWNrZ3JvdW5kLWltYWdlIDogI2Rp
dgorUEFTUyBqc1dyYXBwZXJDbGFzcyhlbGVtZW50UnVsZSkgaXMgJ0NTU1ByaW1pdGl2ZVZhbHVl
JworUEFTUyBqc1dyYXBwZXJDbGFzcyhlbGVtZW50UnVsZS5fX3Byb3RvX18pIGlzICdDU1NQcmlt
aXRpdmVWYWx1ZVByb3RvdHlwZScKK1BBU1MganNXcmFwcGVyQ2xhc3MoZWxlbWVudFJ1bGUuY29u
c3RydWN0b3IpIGlzICdDU1NQcmltaXRpdmVWYWx1ZUNvbnN0cnVjdG9yJworUEFTUyBzdWJSdWxl
IGlzICctd2Via2l0LWVsZW1lbnQoI2RpdiknCisKK1NpbmdsZSB2YWx1ZSBmb3IgYmFja2dyb3Vu
ZC1pbWFnZSA6ICNmZmYKK1BBU1MganNXcmFwcGVyQ2xhc3MoZWxlbWVudFJ1bGUpIGlzICdDU1NQ
cmltaXRpdmVWYWx1ZScKK1BBU1MganNXcmFwcGVyQ2xhc3MoZWxlbWVudFJ1bGUuX19wcm90b19f
KSBpcyAnQ1NTUHJpbWl0aXZlVmFsdWVQcm90b3R5cGUnCitQQVNTIGpzV3JhcHBlckNsYXNzKGVs
ZW1lbnRSdWxlLmNvbnN0cnVjdG9yKSBpcyAnQ1NTUHJpbWl0aXZlVmFsdWVDb25zdHJ1Y3RvcicK
K1BBU1Mgc3ViUnVsZSBpcyAnLXdlYmtpdC1lbGVtZW50KCNmZmYpJworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFyc2luZy1pbnZhbGlkLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1l
bnQtcGFyc2luZy1pbnZhbGlkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODMwNDk3ZDZlYmFm
ZjM1ZmY1NzUxY2U1MWYzZDAzYjIyZGNjYTU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY3NzRWxlbWVudC93ZWJraXQtZWxlbWVudC1wYXJzaW5nLWludmFsaWQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1Rlc3QgdGhlIHBhcnNpbmcgb2YgdGhlIC13ZWJr
aXQtZWxlbWVudCBmdW5jdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKwor
VG9vIG1hbnkgZWxlbWVudC1pZCBwYXJhbWV0ZXJzIDogI2VsZW1lbnRBICNlbGVtZW50QgorUEFT
UyBjc3NSdWxlIGlzIG51bGwKKworVG9vIG1hbnkgZWxlbWVudC1pZCBwYXJhbWV0ZXJzIDogI2Vs
ZW1lbnRDLCAjZWxlbWVudEQKK1BBU1MgY3NzUnVsZSBpcyBudWxsCisKK05vICMgOiBlbGVtZW50
RQorUEFTUyBjc3NSdWxlIGlzIG51bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3NF
bGVtZW50L3dlYmtpdC1lbGVtZW50LXBhcnNpbmctaW52YWxpZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvY3NzRWxlbWVudC93ZWJraXQtZWxlbWVudC1wYXJzaW5nLWludmFsaWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZGU0MzczNGM2ZmQ0ZjA5N2MzZTIyZDcyMWZiOGRmMTkxZjM2ZmEzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzRWxlbWVudC93ZWJraXQtZWxl
bWVudC1wYXJzaW5nLWludmFsaWQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdGhlIHBhcnNpbmcgb2YgdGhlIC13
ZWJraXQtZWxlbWVudCBmdW5jdGlvbi4iKTsKKworLy8gVGhlc2UgaGF2ZSB0byBiZSBnbG9iYWwg
Zm9yIHRoZSB0ZXN0IGhlbHBlcnMgdG8gc2VlIHRoZW0uCit2YXIgY3NzUnVsZTsKKworZnVuY3Rp
b24gdGVzdEludmFsaWRDU1NFbGVtZW50KGRlc2NyaXB0aW9uLCBwcm9wZXJ0eSwgcnVsZSkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoZGVzY3JpcHRpb24gKyAiIDogIiArIHJ1bGUpOwor
CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGRpdi5z
ZXRBdHRyaWJ1dGUoInN0eWxlIiwgcHJvcGVydHkgKyAiOiAtd2Via2l0LWVsZW1lbnQoIiArIHJ1
bGUgKyAiKSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKworICAgIGNz
c1J1bGUgPSBkaXYuc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eSk7CisgICAgc2hv
dWxkQmUoImNzc1J1bGUiLCAibnVsbCIpOworCisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGls
ZChkaXYpOworfQorCit0ZXN0SW52YWxpZENTU0VsZW1lbnQoIlRvbyBtYW55IGVsZW1lbnQtaWQg
cGFyYW1ldGVycyIsICJiYWNrZ3JvdW5kLWltYWdlIiwgIiNlbGVtZW50QSAjZWxlbWVudEIiKTsK
K3Rlc3RJbnZhbGlkQ1NTRWxlbWVudCgiVG9vIG1hbnkgZWxlbWVudC1pZCBwYXJhbWV0ZXJzIiwg
ImJhY2tncm91bmQtaW1hZ2UiLCAiI2VsZW1lbnRDLCAjZWxlbWVudEQiKTsKK3Rlc3RJbnZhbGlk
Q1NTRWxlbWVudCgiTm8gIyIsICJiYWNrZ3JvdW5kLWltYWdlIiwgImVsZW1lbnRFIik7CisKK3N1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1l
bnQtcGFyc2luZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzRWxlbWVudC93ZWJraXQt
ZWxlbWVudC1wYXJzaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWIzNDJjYTcwMDdmNTcyY2NhYTJmOTRh
MzM5YmM0NjhlN2EyN2U1YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L2Nzc0VsZW1lbnQvd2Via2l0LWVsZW1lbnQtcGFyc2luZy5odG1sCkBAIC0wLDAgKzEsNzMgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB0aGUgcGFy
c2luZyBvZiB0aGUgLXdlYmtpdC1lbGVtZW50IGZ1bmN0aW9uLiIpOworCitmdW5jdGlvbiBqc1dy
YXBwZXJDbGFzcyhub2RlKQoreworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuICJbbnVs
bF0iOworICAgIHZhciBzdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KG5v
ZGUpOworICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDgsIHN0cmluZy5sZW5ndGggLSA5KTsKK30K
KworZnVuY3Rpb24gc2hvdWxkQmVUeXBlKGV4cHJlc3Npb24sIGNsYXNzTmFtZSwgcHJvdG90eXBl
TmFtZSwgY29uc3RydWN0b3JOYW1lKQoreworICAgIGlmICghcHJvdG90eXBlTmFtZSkKKyAgICAg
ICAgcHJvdG90eXBlTmFtZSA9IGNsYXNzTmFtZSArICJQcm90b3R5cGUiOworICAgIGlmICghY29u
c3RydWN0b3JOYW1lKQorICAgICAgICBjb25zdHJ1Y3Rvck5hbWUgPSBjbGFzc05hbWUgKyAiQ29u
c3RydWN0b3IiOworICAgIHNob3VsZEJlKCJqc1dyYXBwZXJDbGFzcygiICsgZXhwcmVzc2lvbiAr
ICIpIiwgIiciICsgY2xhc3NOYW1lICsgIiciKTsKKyAgICBzaG91bGRCZSgianNXcmFwcGVyQ2xh
c3MoIiArIGV4cHJlc3Npb24gKyAiLl9fcHJvdG9fXykiLCAiJyIgKyBwcm90b3R5cGVOYW1lICsg
IiciKTsKKyAgICBzaG91bGRCZSgianNXcmFwcGVyQ2xhc3MoIiArIGV4cHJlc3Npb24gKyAiLmNv
bnN0cnVjdG9yKSIsICInIiArIGNvbnN0cnVjdG9yTmFtZSArICInIik7Cit9CisKKy8vIFRoZXNl
IGhhdmUgdG8gYmUgZ2xvYmFsIGZvciB0aGUgdGVzdCBoZWxwZXJzIHRvIHNlZSB0aGVtLgordmFy
IGVsZW1lbnRSdWxlLCBzdWJSdWxlOworCitmdW5jdGlvbiB0ZXN0RWxlbWVudFJ1bGUoZGVzY3Jp
cHRpb24sIHByb3BlcnR5LCBydWxlLCBleHBlY3RlZFRleHRzKQoreworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZyhkZXNjcmlwdGlvbiArICIgOiAiICsgcnVsZSk7CisKKyAgICB2YXIgZGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZGl2LnNldEF0dHJpYnV0ZSgic3R5
bGUiLCBwcm9wZXJ0eSArICI6IC13ZWJraXQtZWxlbWVudCgiICsgcnVsZSArICIpIik7CisgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgZWxlbWVudFJ1bGUgPSBkaXYu
c3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eSk7CisgICAgc2hvdWxkQmVUeXBlKCJl
bGVtZW50UnVsZSIsICJDU1NQcmltaXRpdmVWYWx1ZSIpOworCisgICAgaWYgKGVsZW1lbnRSdWxl
KSB7CisgICAgICAgICAgICBzdWJSdWxlID0gZWxlbWVudFJ1bGUuY3NzVGV4dDsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJzdWJSdWxlIiwgIiciICsgZXhwZWN0ZWRUZXh0cyArICInIik7CisgICAg
fQorCisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOworfQorCit0ZXN0RWxlbWVu
dFJ1bGUoIlNpbmdsZSB2YWx1ZSBmb3IgYmFja2dyb3VuZC1pbWFnZSIsCisgICAgICAgICAgICAg
ICAgImJhY2tncm91bmQtaW1hZ2UiLAorICAgICAgICAgICAgICAgICIjZWxlbWVudEEiLAorICAg
ICAgICAgICAgICAgICItd2Via2l0LWVsZW1lbnQoI2VsZW1lbnRBKSIpOworCit0ZXN0RWxlbWVu
dFJ1bGUoIlNpbmdsZSB2YWx1ZSBmb3IgYmFja2dyb3VuZC1pbWFnZSIsCisgICAgICAgICAgICAg
ICAgImJhY2tncm91bmQtaW1hZ2UiLAorICAgICAgICAgICAgICAgICIjZGl2IiwKKyAgICAgICAg
ICAgICAgICAiLXdlYmtpdC1lbGVtZW50KCNkaXYpIik7CisKK3Rlc3RFbGVtZW50UnVsZSgiU2lu
Z2xlIHZhbHVlIGZvciBiYWNrZ3JvdW5kLWltYWdlIiwKKyAgICAgICAgICAgICAgICAiYmFja2dy
b3VuZC1pbWFnZSIsCisgICAgICAgICAgICAgICAgIiNmZmYiLAorICAgICAgICAgICAgICAgICIt
d2Via2l0LWVsZW1lbnQoI2ZmZikiKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZGQ0ZjdlM2VlY2MxNGU4YjYxYzAyZjdjOWEw
YjEzZTJkZDY0OTMzNy4uYzk4Mjg4N2FiZmFmMmYzMjc0ZGYxMDNlYjM5ODg2ODVjNmYyZmZmNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBA
IC0xOTEsNiArMTkxLDkgQEAgQlVHV0s5NDkxNiBTTk9XTEVPUEFSRCBXSU4gTElOVVggOiBmYXN0
L2Zvcm1zL2RhdGFsaXN0L2lucHV0LWFwcGVhcmFuY2UtcmFuZ2Utd2kKIEJVR1dLOTI5NDIgU0tJ
UCA6IGZhc3QvZG9tL1Byb3hpbWl0eSA9IFBBU1MKIEJVR1dLOTI5NDIgU0tJUCA6IGZhc3QvZXZl
bnRzL2NvbnN0cnVjdG9ycy9kZXZpY2UtcHJveGltaXR5LWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwg
PSBQQVNTCiAKKy8vQ1NTIEVsZW1lbnQgbm90IGZ1bGx5IGltcGxlbWVudGVkIGZlYXR1cmUvbm90
IHlldCBlbmFibGVkCitCVUdXSzQ0NjUwIFNLSVAgOiBmYXN0L2Nzcy9jc3NFbGVtZW50ID0gUEFT
UworCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogLy8gV09OVEZJWCBURVNUUwogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL1NraXBwZWQKaW5kZXggMzVhNDNlNGZkYmJiYTVkNWQ4ZDlkMGNiYzRlNTFkNGY4N2Vh
YzlhZi4uYTJjYzY1ZGQ3M2IyNGVmMTJiMjUxMWUwNjQ5NGUyNjMxODExNWJiMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZWZsL1NraXBwZWQKQEAgLTg5NCwzICs4OTQsNyBAQCBpbnNwZWN0b3IvZXh0ZW5zaW9u
cy9leHRlbnNpb25zLWV2YWwtY29udGVudC1zY3JpcHQuaHRtbAogCiAjIEVOQUJMRShXSURHRVRf
UkVHSU9OKSBpcyBkaXNhYmxlZAogZmFzdC9jc3Mvd2lkZ2V0LXJlZ2lvbi1wYXJzZXIuaHRtbAor
CisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDY1MAorIyBGdXJ0
aGVyIGRldmVsb3BtZW50IG5lZWRlZCBmb3IgQ1NTIEVsZW1lbnQKK2Zhc3QvY3NzL2Nzc0VsZW1l
bnQvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBhZDRjZGRlZWNmYTc4MDg2ZWRhZDg3ODZl
OTViMWU5NTZiNTI4M2ZjLi4xMzhkNzU5NGM4NjliMDlkOTNhYjUwNjA5NTc5YWFlMTczMmEwODcz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTUyOSw2ICs1MjksMTAgQEAgaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xCiBmYXN0L2RvbS9Qcm94aW1pdHkK
IGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9kZXZpY2UtcHJveGltaXR5LWV2ZW50LWNvbnN0cnVj
dG9yLmh0bWwKIAorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ2
NTAKKyMgQ1NTIEVsZW1lbnQgKG5lZWRzIEVOQUJMRV9DU1NfRUxFTUVOVCkKK2Zhc3QvY3NzL2Nz
c0VsZW1lbnQvCisKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKICMgICAgICAgRHJhZyBhbmQgRHJv
cCBTdXBwb3J0IGluIERSVC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ICMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXgg
ZGViMDBjZjU1YTk2NjRiNGUzMzg3NTE3NjUzZTZlZGNjYzU5MWZkZC4uNzlmNmRhOWI1MTE0ODFi
ZDNiMjk3YmJjMmY1MDdlMjJhOTdjZTE4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAg
LTQ0LDYgKzQ0LDEwIEBAIGNzczMvZmlsdGVycy9jdXN0b20KIGZhc3QvY3NzL2ltYWdlLXNldC1w
YXJzaW5nLmh0bWwKIGZhc3QvY3NzL2ltYWdlLXNldC1wYXJzaW5nLWludmFsaWQuaHRtbAogCisj
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDY1MAorIyBGdXJ0aGVy
IGRldmVsb3BtZW50IG5lZWRlZCBmb3IgQ1NTIEVsZW1lbnQgKG5lZWRzIEVOQUJMRV9DU1NfRUxF
TUVOVCkuCitmYXN0L2Nzcy9jc3NFbGVtZW50LworCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NzY0NQogY3NzMy9maWx0ZXJzL2ZpbHRlcmVkLWNvbXBvc2l0aW5n
LWRlc2NlbmRhbnQuaHRtbAogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5k
ZXggZDVmNjQ2MDY2MGY0OTMwMDIyMTJlYjM1ZjAxMjEwMWVjNWQ1ODNmZS4uMmRiMzZjZDc3YTA2
M2M4NzM3NDlkZGYwNTJiMWU4YTBkNzljNzJhOCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBi
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTExICBBbmlzaCBCaGF5YW5pICA8
YW5pc2guYmhheWFuaUBnbWFpbC5jb20+CisKKyAgICAgICAgU3VwcG9ydCBlbGVtZW50KCkgQ1NT
IGltYWdlIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ0NjUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGEgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIENTUyBFbGVtZW50IHN1cHBvcnQsIGRp
c2FibGluZyBpdCBieSBkZWZhdWx0LgorCisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZl
YXR1cmVzLmNtYWtlOgorCiAyMDEyLTA5LTExICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVy
QHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0d0a10gYWxsb3cgYnVpbGRpbmcgd2l0aCBj
c3Mtc2hhZGVycwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>