<?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>100155</bug_id>
          
          <creation_ts>2012-10-23 13:01:36 -0700</creation_ts>
          <short_desc>Full-page PDFPlugin should support inline form editing</short_desc>
          <delta_ts>2012-10-31 00:56:03 -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>PDF</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>andersca</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>748877</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-10-23 13:01:36 -0700</bug_when>
    <thetext>Full-page PDFPlugin should support inline form editing. It&apos;s possible we want to support inline-PDFPlugin forms too, but for now, the full-page case is easiest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748880</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-10-23 13:02:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/12558511&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749134</commentid>
    <comment_count>2</comment_count>
      <attachid>170270</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-10-23 17:02:35 -0700</bug_when>
    <thetext>Created attachment 170270
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749140</commentid>
    <comment_count>3</comment_count>
      <attachid>170273</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-10-23 17:17:05 -0700</bug_when>
    <thetext>Created attachment 170273
rebase patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749144</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 17:20:54 -0700</bug_when>
    <thetext>Attachment 170273 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit2/WebProcess/Plugins/PDF/PDFLayerControllerDetails.h:44:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749147</commentid>
    <comment_count>5</comment_count>
      <attachid>170270</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-23 17:21:51 -0700</bug_when>
    <thetext>Comment on attachment 170270
patch

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

Patch is not applying for EWS.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:188
&gt; +    // FIXME: Should we support forms for inline PDFs? Since we touch the document, this might be difficult.

I don’t think the term “inline PDF” is a thing. Do you mean PDFs used as images?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:202
&gt; +        annotationContainer-&gt;setInlineStyleProperty(CSSPropertyOverflow, &quot;hidden&quot;);
&gt; +        annotationContainer-&gt;setInlineStyleProperty(CSSPropertyPosition, &quot;absolute&quot;);
&gt; +        annotationContainer-&gt;setInlineStyleProperty(CSSPropertyPointerEvents, &quot;none&quot;);
&gt; +        annotationContainer-&gt;setInlineStyleProperty(CSSPropertyTop, 0.0, CSSPrimitiveValue::CSS_PX);
&gt; +        annotationContainer-&gt;setInlineStyleProperty(CSSPropertyLeft, 0.0, CSSPrimitiveValue::CSS_PX);
&gt; +        annotationContainer-&gt;setInlineStyleProperty(CSSPropertyRight, 0.0, CSSPrimitiveValue::CSS_PX);
&gt; +        annotationContainer-&gt;setInlineStyleProperty(CSSPropertyBottom, 0.0, CSSPrimitiveValue::CSS_PX);

Is this more efficient than setting a hardcoded style attribute string? Doing that would avoid the need to cast to StyledElement* and cut down a lot on the lines of code.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:585
&gt; +    // FIXME: Should we support forms for inline PDFs? Since we touch the document, this might be difficult.

Would be nice to not repeat this comment. One way to do that would be to add a helper function that just returns this value named something like “supportsForms()”.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:596
&gt; +    }
&gt; +    else

WebKit coding style puts both of these on the same line.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.h:52
&gt; +    PassRefPtr&lt;WebCore::Element&gt; element() { return m_element; }

Correct return type for this kind of getter is is WebCore::Element*, not PassRefPtr. Also should be const.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.h:53
&gt; +    RetainPtr&lt;PDFAnnotation&gt; annotation() { return m_annotation; }

PDFAnnotation * is the correct return type. Also should be const.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.h:54
&gt; +    PDFPlugin* plugin() { return m_plugin; }

Should be const.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.h:57
&gt; +    virtual void updateGeometry();
&gt; +    virtual void commit() = 0;

Can these be private or protected?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.h:70
&gt; +    virtual PassRefPtr&lt;WebCore::Element&gt; createAnnotationElement() = 0;

Can this be private instead of protected?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.h:71
&gt; +    WebCore::Element* parent() { return m_parent; }

Should be const.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.h:73
&gt; +    PDFLayerController *pdfLayerController() { return m_pdfLayerController; }

Should be const.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.h:83
&gt; +         bool operator==(const EventListener&amp; listener) OVERRIDE { return this == &amp;listener; }

Need virtual keyword here.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.h:84
&gt; +         virtual void handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*) OVERRIDE;

I suggest making this private.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.h:93
&gt; +         {
&gt; +
&gt; +         }

Extra blank line.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:47
&gt; +#import &quot;PDFLayerControllerDetails.h&quot;

This should be in with the rest of the includes, sorted.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:59
&gt; +    else if ([annotation isKindOfClass:pdfAnnotationChoiceWidgetClass()])

No else after if in WebKit coding style.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.h:44
&gt; +    virtual ~PDFPluginChoiceAnnotation() { }

This is not needed.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.h:47
&gt; +    virtual void updateGeometry() OVERRIDE;
&gt; +    virtual void commit() OVERRIDE;

Can these be private?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749985</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-10-24 13:35:36 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I don’t think the term “inline PDF” is a thing. Do you mean PDFs used as images?

I meant &quot;subframe PDFs&quot;; I will fix the terminology.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:202
&gt; &gt; +        annotationContainer-&gt;setInlineStyleProperty(CSSPropertyOverflow, &quot;hidden&quot;);
&gt; &gt; +        annotationContainer-&gt;setInlineStyleProperty(CSSPropertyPosition, &quot;absolute&quot;);
&gt; &gt; +        annotationContainer-&gt;setInlineStyleProperty(CSSPropertyPointerEvents, &quot;none&quot;);
&gt; &gt; +        annotationContainer-&gt;setInlineStyleProperty(CSSPropertyTop, 0.0, CSSPrimitiveValue::CSS_PX);
&gt; &gt; +        annotationContainer-&gt;setInlineStyleProperty(CSSPropertyLeft, 0.0, CSSPrimitiveValue::CSS_PX);
&gt; &gt; +        annotationContainer-&gt;setInlineStyleProperty(CSSPropertyRight, 0.0, CSSPrimitiveValue::CSS_PX);
&gt; &gt; +        annotationContainer-&gt;setInlineStyleProperty(CSSPropertyBottom, 0.0, CSSPrimitiveValue::CSS_PX);
&gt; 
&gt; Is this more efficient than setting a hardcoded style attribute string? Doing that would avoid the need to cast to StyledElement* and cut down a lot on the lines of code.

I&apos;ve put what I can in a &lt;style&gt; attached to the animation container. Not sure if I should put that in a separate file, right now it&apos;s just constructed from a static string in PDFPlugin.mm.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.h:57
&gt; &gt; +    virtual void updateGeometry();
&gt; &gt; +    virtual void commit() = 0;
&gt; 
&gt; Can these be private or protected?

They can&apos;t be private, as PDFPlugin needs to call them! Is there a reason to make them protected and make PDFPlugin a friend of PDFPluginAnnotation rather than leaving them public? I&apos;ve not heard any clear policy here.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.h:70
&gt; &gt; +    virtual PassRefPtr&lt;WebCore::Element&gt; createAnnotationElement() = 0;
&gt; 
&gt; Can this be private instead of protected?

Yep.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.h:83
&gt; &gt; +         bool operator==(const EventListener&amp; listener) OVERRIDE { return this == &amp;listener; }
&gt; 
&gt; Need virtual keyword here.

Weird! I thought override complained when the method wasn&apos;t virtual. Weird weird weird.

New patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750005</commentid>
    <comment_count>7</comment_count>
      <attachid>170465</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-10-24 13:54:55 -0700</bug_when>
    <thetext>Created attachment 170465
addressing most of Darin&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750009</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 13:57:51 -0700</bug_when>
    <thetext>Attachment 170465 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit2/WebProcess/Plugins/PDF/PDFLayerControllerDetails.h:44:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754994</commentid>
    <comment_count>9</comment_count>
      <attachid>170465</attachid>
    <who name="">mitz</who>
    <bug_when>2012-10-30 23:15:13 -0700</bug_when>
    <thetext>Comment on attachment 170465
addressing most of Darin&apos;s comments

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

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h:53
&gt;  class PluginView;
&gt; +class PDFPluginAnnotation;

D comes before l.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:42
&gt; +#import &lt;WebCore/CSSPrimitiveValue.h&gt;
&gt; +#import &lt;WebCore/CSSPropertyNames.h&gt;

Uppercase S comes before lowercase H.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:58
&gt; +#import &quot;PDFLayerControllerDetails.h&quot;

This should go after #import &quot;PDFKitImports.h&quot; in the main #import block.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:75
&gt; +#annotationContainer &gt; .annotation { \

Is it necessary to make this selector this complicated? Would .annotation not work by itself?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:79
&gt; +#annotationContainer &gt; textarea.annotation { \

How about textarea.annotation here?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:217
&gt; +        m_annotationContainer-&gt;appendChild(m_annotationStyle.get(), ec);
&gt; +        document-&gt;body()-&gt;appendChild(m_annotationContainer.get(), ec);

Why not use the ASSERT_NO_EXCEPTION default?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:78
&gt; +    m_parent-&gt;appendChild(m_element, ec);

Can’t use the default ASSERT_NO_EXCEPTION?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:87
&gt; +    m_element-&gt;removeEventListener(&quot;change&quot;, m_eventListener.get(), false);
&gt; +    m_element-&gt;removeEventListener(&quot;blur&quot;, m_eventListener.get(), false);

Can you import EventNames.h and use eventNames().{change,blur}Event?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:90
&gt; +    m_parent-&gt;removeChild(element(), ec);

…?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:96
&gt; +    IntSize documentSize([m_pdfLayerController contentSizeRespectingZoom]);
&gt; +    IntPoint scrollPosition([m_pdfLayerController scrollPosition]);

I’d use = and property notation here.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:108
&gt; +    if (event-&gt;type() == eventNames().blurEvent || event-&gt;type() == eventNames().changeEvent)

Apparently you can use eventNames!

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:33
&gt; +#import &quot;PDFKitImports.h&quot;
&gt; +#import &lt;PDFKit/PDFKit.h&gt;
&gt; +#import &quot;PDFLayerControllerDetails.h&quot;

Unsorted.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:35
&gt; +#import &lt;WebCore/ColorMac.h&gt;
&gt; +#import &lt;WebCore/CSSPrimitiveValue.h&gt;

S &lt; o

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:59
&gt; +    styledElement-&gt;setInlineStyleProperty(CSSPropertyFontSize, [[choiceAnnotation() font] pointSize] * [pdfLayerController() tileScaleFactor], CSSPrimitiveValue::CSS_PX);

Property notation for pointSize?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:76
&gt; +    styledElement-&gt;setInlineStyleProperty(CSSPropertyColor, colorFromNSColor([choiceAnnotation fontColor]).serialized());

.fontColor?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:77
&gt; +    styledElement-&gt;setInlineStyleProperty(CSSPropertyFontFamily, [[choiceAnnotation font] familyName]);

.font.familyName?

What about things like font weight and style?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:83
&gt; +    for (NSUInteger i = 0, count = choices.count; i &lt; count; ++i) {

Please use some modern way to enumerate an NSArray (fast enumeration or using block).

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:41
&gt; +#import &quot;PDFKitImports.h&quot;
&gt; +#import &lt;PDFKit/PDFKit.h&gt;
&gt; +#import &quot;PDFLayerControllerDetails.h&quot;
&gt; +#import &lt;WebCore/ColorMac.h&gt;
&gt; +#import &lt;WebCore/CSSPrimitiveValue.h&gt;
&gt; +#import &lt;WebCore/CSSPropertyNames.h&gt;
&gt; +#import &lt;WebCore/HTMLElement.h&gt;
&gt; +#import &lt;WebCore/HTMLInputElement.h&gt;
&gt; +#import &lt;WebCore/HTMLNames.h&gt;
&gt; +#import &lt;WebCore/HTMLTextAreaElement.h&gt;
&gt; +#import &lt;WebCore/Page.h&gt;

:-\

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:64
&gt; +    default:

Not case NSNaturalTextAlignment?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:65
&gt; +        return &quot;inherit&quot;;

Not -webkit-start?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:90
&gt; +    styledElement-&gt;setInlineStyleProperty(CSSPropertyColor, colorFromNSColor([textAnnotation fontColor]).serialized());
&gt; +    styledElement-&gt;setInlineStyleProperty(CSSPropertyFontFamily, [[textAnnotation font] familyName]);
&gt; +    styledElement-&gt;setInlineStyleProperty(CSSPropertyTextAlign, cssAlignmentValueForNSTextAlignment([textAnnotation alignment]));

Less brackets, more dots.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:91
&gt; +

What about setting the dir attribute or the direction CSS property?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:95
&gt; +    if (isMultiline)
&gt; +        static_cast&lt;HTMLTextAreaElement*&gt;(styledElement)-&gt;setValue([textAnnotation stringValue]);
&gt; +    else
&gt; +        static_cast&lt;HTMLInputElement*&gt;(styledElement)-&gt;setValue([textAnnotation stringValue]);

More dots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755001</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-10-30 23:44:40 -0700</bug_when>
    <thetext>Thanks for the review, Dan!

(In reply to comment #9)
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:96
&gt; &gt; +    IntSize documentSize([m_pdfLayerController contentSizeRespectingZoom]);
&gt; &gt; +    IntPoint scrollPosition([m_pdfLayerController scrollPosition]);
&gt; 
&gt; I’d use = and property notation here.

It seems I then need to use the IntSize/Point constructor explicitly? That seems uglier.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:64
&gt; &gt; +    default:
&gt; 
&gt; Not case NSNaturalTextAlignment?

Hmm, sure.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:65
&gt; &gt; +        return &quot;inherit&quot;;
&gt; 
&gt; Not -webkit-start?

What?

&gt; What about setting the dir attribute or the direction CSS property?

I don&apos;t know where I&apos;d get the direction from. I wonder if PDF supports that (it must!).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755026</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-10-31 00:29:32 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; What about things like font weight and style?

I am less sure of exactly how to translate from NSFont properties to CSS here. I&apos;ll add a comment and come back to that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755032</commentid>
    <comment_count>12</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-10-31 00:56:03 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/132992

Thanks, Dan!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170270</attachid>
            <date>2012-10-23 17:02:35 -0700</date>
            <delta_ts>2012-10-23 17:21:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>forms.diff</filename>
            <type>text/plain</type>
            <size>65371</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NmE5MGU5Li5mMjQxMjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTItMTAtMjMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgRnVsbC1wYWdlIFBERlBsdWdpbiBzaG91bGQgc3VwcG9ydCBpbmxpbmUgZm9ybSBl
ZGl0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDAxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgZm9ybSBjb250cm9scyBjb3JyZXNwb25kaW5nIHRvIFRleHQgYW5kIENob2ljZSBQREYgYW5u
b3RhdGlvbnMsCisgICAgICAgIGFsbG93aW5nIGZvciBzaW5nbGUtIGFuZCBtdWx0aS1saW5lIHRl
eHQgaW5wdXQsIGFuZCA8b3B0aW9uPi1saWtlIGlucHV0LgorCisgICAgICAgIEN1cnJlbnRseSwg
Zm9ybXMgYXJlIG9ubHkgaW1wbGVtZW50ZWQgZm9yIGZ1bGwtcGFnZSBQREYgZG9jdW1lbnRzLgor
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9zZSBhIHZhcmlldHkgb2YgYWRkaXRpb25h
bCBXZWJDb3JlIGZ1bmN0aW9uYWxpdHkgdG8gV2ViS2l0Mi4KKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEV4cG9zZSBzb21lIG1vcmUgV2ViQ29yZSBoZWFkZXJz
IGFzIHByaXZhdGUgaGVhZGVycyBmb3IgdXNlIGluIFdlYktpdDIuCisKIDIwMTItMTAtMjIgIFZh
cnVuIEphaW4gIDx2YXJ1bmphaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENvbnRleHQgbWVu
dSBnZW5lcmF0ZWQgZnJvbSB0b3VjaCBnZXN0dXJlcyBvbiB0ZXh0YXJlYXMgaGFzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCmluZGV4IDI3OGQyMjQuLmY3OGZkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC0yMTQsNiArMjE0LDggQEAgX19aTjdXZWJDb3JlMTNBWE9iamVjdENhY2hlMjFnQWNjZXNzaWJp
bGl0eUVuYWJsZWRFCiBfX1pON1dlYkNvcmUxM0FYT2JqZWN0Q2FjaGUyM2ZvY3VzZWRVSUVsZW1l
bnRGb3JQYWdlRVBLTlNfNFBhZ2VFCiBfX1pON1dlYkNvcmUxM0FYT2JqZWN0Q2FjaGU0MmdBY2Nl
c3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlRW5hYmxlZEUKIF9fWk43V2ViQ29yZTEzQ2hh
cmFjdGVyRGF0YTdzZXREYXRhRVJLTjNXVEY2U3RyaW5nRVJpCitfX1pON1dlYkNvcmUxM0NvbnRh
aW5lck5vZGUxMWFwcGVuZENoaWxkRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFUmliCitf
X1pON1dlYkNvcmUxM0NvbnRhaW5lck5vZGUxMXJlbW92ZUNoaWxkRVBOU180Tm9kZUVSaQogX19a
TjdXZWJDb3JlMTNIVFRQSGVhZGVyTWFwQzFFdgogX19aTjdXZWJDb3JlMTNIVFRQSGVhZGVyTWFw
RDFFdgogX19aTjdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0QzFFUktTMF8KQEAgLTIyNSw2ICsyMjcs
OCBAQCBfX1pON1dlYkNvcmUxM0tleWJvYXJkRXZlbnRDMUVSS04zV1RGMTJBdG9taWNTdHJpbmdF
YmJQTlNfOURPTVdpbmRvd0VSS05TMV82U3RyaQogX19aTjdXZWJDb3JlMTNLZXlib2FyZEV2ZW50
QzFFUktOU18yMVBsYXRmb3JtS2V5Ym9hcmRFdmVudEVQTlNfOURPTVdpbmRvd0UKIF9fWk43V2Vi
Q29yZTEzUmVzb3VyY2VFcnJvckMxRVA3TlNFcnJvcgogX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVy
cm9yQzFFUDlfX0NGRXJyb3IKK19fWk43V2ViQ29yZTEzU3R5bGVkRWxlbWVudDIyc2V0SW5saW5l
U3R5bGVQcm9wZXJ0eUVOU18xM0NTU1Byb3BlcnR5SURFUktOM1dURjZTdHJpbmdFYgorX19aTjdX
ZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5TXzEzQ1NTUHJv
cGVydHlJREVkTlNfMTdDU1NQcmltaXRpdmVWYWx1ZTlVbml0VHlwZXNFYgogX19aTjdXZWJDb3Jl
MTNjcmVhdGVXcmFwcGVyRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RF
UE5TXzROb2RlRQogX19aTjdXZWJDb3JlMTNkaXJlY3RvcnlOYW1lRVJLTjNXVEY2U3RyaW5nRQog
X19aTjdXZWJDb3JlMTN0b0hUTUxFbGVtZW50RVBOU18yMUZvcm1Bc3NvY2lhdGVkRWxlbWVudEUK
QEAgLTI2Myw2ICsyNjcsNyBAQCBfX1pON1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uNWNsZWFyRXYK
IF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb242bW9kaWZ5RU5TMF8xMUVBbHRlcmF0aW9uRU5T
XzE4U2VsZWN0aW9uRGlyZWN0aW9uRU5TXzE1VGV4dEdyYW51bGFyaXR5RU5TXzE0RVVzZXJUcmln
Z2VyZWRFCiBfX1pON1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uOXNlbGVjdEFsbEV2CiBfX1pON1dl
YkNvcmUxNEZyYW1lU2VsZWN0aW9uQzFFUE5TXzVGcmFtZUUKK19fWk43V2ViQ29yZTE0UGx1Z2lu
RG9jdW1lbnQxMHBsdWdpbk5vZGVFdgogX19aTjdXZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEycGx1
Z2luV2lkZ2V0RXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXIxMmNyZWF0ZU5TRGF0YUV2
CiBfX1pON1dlYkNvcmUxNFJlc291cmNlQnVmZmVyRDFFdgpAQCAtNDA5LDYgKzQxNCw3IEBAIF9f
Wk43V2ViQ29yZTE2RGV2aWNlTW90aW9uRGF0YTEyUm90YXRpb25SYXRlNmNyZWF0ZUViZGJkYmQK
IF9fWk43V2ViQ29yZTE2RGV2aWNlTW90aW9uRGF0YTZjcmVhdGVFTjNXVEYxMFBhc3NSZWZQdHJJ
TlMwXzEyQWNjZWxlcmF0aW9uRUVFUzRfTlMyX0lOUzBfMTJSb3RhdGlvblJhdGVFRUViZAogX19a
TjdXZWJDb3JlMTZGb250RmFsbGJhY2tMaXN0MTVyZWxlYXNlRm9udERhdGFFdgogX19aTjdXZWJD
b3JlMTZGb250UGxhdGZvcm1EYXRhRDFFdgorX19aTjdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50
OHNldFZhbHVlRVJLTjNXVEY2U3RyaW5nRU5TXzIyVGV4dEZpZWxkRXZlbnRCZWhhdmlvckUKIF9f
Wk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDEzc2V0QXV0b2ZpbGxlZEViCiBfX1pON1dlYkNv
cmUxNkhUTUxJbnB1dEVsZW1lbnQxNXNldEVkaXRpbmdWYWx1ZUVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDE1c2V0VmFsdWVGb3JVc2VyRVJLTjNXVEY2U3Ry
aW5nRQpAQCAtNTIyLDYgKzUyOCw3IEBAIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxl
cjdzdXNwZW5kRXYKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlcjhzY2hlZHVsZUV2
CiBfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXJDMUVQTlNfMjVMYXllckZsdXNoU2No
ZWR1bGVyQ2xpZW50RQogX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyRDFFdgorX19a
TjdXZWJDb3JlMTlIVE1MVGV4dEFyZWFFbGVtZW50OHNldFZhbHVlRVJLTjNXVEY2U3RyaW5nRQog
X19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMTFzZXRIVFRQQm9keUVOM1dURjEwUGFz
c1JlZlB0cklOU184Rm9ybURhdGFFRUUKIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFz
ZTEzc2V0SFRUUE1ldGhvZEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VS
ZXF1ZXN0QmFzZTE4c2V0SFRUUEhlYWRlckZpZWxkRVBLY1JLTjNXVEY2U3RyaW5nRQpAQCAtNjc3
LDYgKzY4NCw3IEBAIF9fWk43V2ViQ29yZTROb2RlMTByZW5kZXJSZWN0RVBiCiBfX1pON1dlYkNv
cmU0Tm9kZTExYXBwZW5kQ2hpbGRFTjNXVEYxMFBhc3NSZWZQdHJJUzBfRUVSaWIKIF9fWk43V2Vi
Q29yZTROb2RlMTFyZW1vdmVDaGlsZEVQUzBfUmkKIF9fWk43V2ViQ29yZTROb2RlMTRyZW1vdmVk
TGFzdFJlZkV2CitfX1pON1dlYkNvcmU0Tm9kZTE0c2V0VGV4dENvbnRlbnRFUktOM1dURjZTdHJp
bmdFUmkKIF9fWk43V2ViQ29yZTROb2RlMTdzdG9wSWdub3JpbmdMZWFrc0V2CiBfX1pON1dlYkNv
cmU0Tm9kZTE4c3RhcnRJZ25vcmluZ0xlYWtzRXYKIF9fWk43V2ViQ29yZTROb2RlMTlzZXROZWVk
c1N0eWxlUmVjYWxjRU5TXzE1U3R5bGVDaGFuZ2VUeXBlRQpAQCAtODI3LDYgKzgzNSw3IEBAIF9f
Wk43V2ViQ29yZTZ0b05vZGVFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTdDb25zb2xlMjFz
aG91bGRQcmludEV4Y2VwdGlvbnNFdgogX19aTjdXZWJDb3JlN0NvbnNvbGUyNHNldFNob3VsZFBy
aW50RXhjZXB0aW9uc0ViCiBfX1pON1dlYkNvcmU3RWxlbWVudDEyc2V0QXR0cmlidXRlRVJLTjNX
VEYxMkF0b21pY1N0cmluZ0VTNF9SaQorX19aTjdXZWJDb3JlN0VsZW1lbnQxMnNldEF0dHJpYnV0
ZUVSS05TXzEzUXVhbGlmaWVkTmFtZUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pON1dlYkNv
cmU3RWxlbWVudDE3c2V0U2hhZG93UHNldWRvSWRFUktOM1dURjEyQXRvbWljU3RyaW5nRVJpCiBf
X1pON1dlYkNvcmU3RWxlbWVudDIxYm91bmRzSW5Sb290Vmlld1NwYWNlRXYKIF9fWk43V2ViQ29y
ZTdFbGVtZW50OWlubmVyVGV4dEV2CkBAIC04NTksNiArODY4LDcgQEAgX19aTjdXZWJDb3JlN3Rv
UmFuZ2VFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZThDU1NWYWx1ZTdkZXN0cm95RXYKIF9f
Wk43V2ViQ29yZThEb2N1bWVudDExY3JlYXRlUmFuZ2VFdgogX19aTjdXZWJDb3JlOERvY3VtZW50
MTJ1cGRhdGVMYXlvdXRFdgorX19aTjdXZWJDb3JlOERvY3VtZW50MTNjcmVhdGVFbGVtZW50RVJL
TlNfMTNRdWFsaWZpZWROYW1lRWIKIF9fWk43V2ViQ29yZThEb2N1bWVudDE0Y3JlYXRlVGV4dE5v
ZGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxNHNldEZvY3VzZWROb2Rl
RU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxNmlz
UGFnZUJveFZpc2libGVFaQpAQCAtMTA0Nyw3ICsxMDU3LDEyIEBAIF9fWk43V2ViQ29yZTlIVE1M
TmFtZXM4dmlkZW9UYWdFCiBfX1pON1dlYkNvcmU5SFRNTE5hbWVzOWFwcGxldFRhZ0UKIF9fWk43
V2ViQ29yZTlIVE1MTmFtZXM5aWZyYW1lVGFnRQogX19aTjdXZWJDb3JlOUhUTUxOYW1lczlvYmpl
Y3RUYWdFCitfX1pON1dlYkNvcmU5SFRNTE5hbWVzOW9wdGlvblRhZ0UKIF9fWk43V2ViQ29yZTlI
VE1MTmFtZXM5c2NyaXB0VGFnRQorX19aTjdXZWJDb3JlOUhUTUxOYW1lczlzZWxlY3RUYWdFCitf
X1pON1dlYkNvcmU5SFRNTE5hbWVzOXN0eWxlQXR0ckUKK19fWk43V2ViQ29yZTlIVE1MTmFtZXM5
dmFsdWVBdHRyRQorX19aTjdXZWJDb3JlOUhUTUxOYW1lczEyc2VsZWN0ZWRBdHRyRQogX19aTjdX
ZWJDb3JlOUpTRWxlbWVudDZzX2luZm9FCiBfX1pON1dlYkNvcmU5UGFnZUNhY2hlMTFzZXRDYXBh
Y2l0eUVpCiBfX1pON1dlYkNvcmU5UGFnZUNhY2hlMjdyZWxlYXNlQXV0b3JlbGVhc2VkUGFnZXNO
b3dFdgpAQCAtMTI2MCw2ICsxMjc1LDcgQEAgX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlv
bjE5cm9vdEVkaXRhYmxlRWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9u
MjNpc0NvbnRlbnRSaWNobHlFZGl0YWJsZUV2CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0
aW9uNWlzQWxsRU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlRQogX19aTks3V2ViQ29y
ZTE3SFRNTFBsdWdJbkVsZW1lbnQxMnBsdWdpbldpZGdldEV2CitfX1pOSzdXZWJDb3JlMTdIVE1M
U2VsZWN0RWxlbWVudDV2YWx1ZUV2CiBfX1pOSzdXZWJDb3JlMTdKU0RPTUdsb2JhbE9iamVjdDIy
c2NyaXB0RXhlY3V0aW9uQ29udGV4dEV2CiBfX1pOSzdXZWJDb3JlMTdSZWd1bGFyRXhwcmVzc2lv
bjEzbWF0Y2hlZExlbmd0aEV2CiBfX1pOSzdXZWJDb3JlMTdSZWd1bGFyRXhwcmVzc2lvbjVtYXRj
aEVSS04zV1RGNlN0cmluZ0VpUGkKQEAgLTEzMjYsNiArMTM0Miw3IEBAIF9fWk5LN1dlYkNvcmU0
S1VSTDhwcm90b2NvbEV2CiBfX1pOSzdXZWJDb3JlNEtVUkxjdlA1TlNVUkxFdgogX19aTks3V2Vi
Q29yZTROb2RlMTF0ZXh0Q29udGVudEViCiBfX1pON1dlYkNvcmU0Tm9kZTEyaW5zZXJ0QmVmb3Jl
RU4zV1RGMTBQYXNzUmVmUHRySVMwX0VFUFMwX1JpYgorX19aTks3V2ViQ29yZTROb2RlMTNvd25l
ckRvY3VtZW50RXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTE0aXNEZXNjZW5kYW50T2ZFUEtTMF8KIF9f
Wk5LN1dlYkNvcmU0Tm9kZTE4Z2V0U3VicmVzb3VyY2VVUkxzRVJOM1dURjExTGlzdEhhc2hTZXRJ
TlNfNEtVUkxFTG0yNTZFTlNfOEtVUkxIYXNoRUVFCiBfX1pOSzdXZWJDb3JlNE5vZGUyMHRyYXZl
cnNlUHJldmlvdXNOb2RlRVBLUzBfCkBAIC0xMzQxLDYgKzEzNTgsNyBAQCBfX1pOSzdXZWJDb3Jl
NFBhZ2UzNGluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xhdGlvbk1vZGVFdgogX19aTks3V2ViQ29y
ZTRQYWdlOWdyb3VwTmFtZUV2CiBfX1pOSzdXZWJDb3JlNFBhZ2U5cGFnZUNvdW50RXYKIF9fWk5L
N1dlYkNvcmU1Q29sb3I3Z2V0UkdCQUVSZFMxX1MxX1MxXworX19aTks3V2ViQ29yZTVDb2xvcjEw
c2VyaWFsaXplZEV2CiBfX1pOSzdXZWJDb3JlNUZyYW1lMTNvd25lclJlbmRlcmVyRXYKIF9fWk5L
N1dlYkNvcmU1RnJhbWUxNHNlbGVjdGlvbkltYWdlRWIKIF9fWk5LN1dlYkNvcmU1RnJhbWUxNWNv
bnRlbnRSZW5kZXJlckV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMzY4OWY0Ni4uNzhjNGI1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDEzNiwxMCArNDEz
NiwxMCBAQAogCQlBODEzNjlENTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTEZpZWxkU2V0RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEz
NjlCOTA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi87IH07CiAJ
CUE4MTM2OUQ2MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MVGV4dEFyZWFFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEzNjlCQTA5NzM3NEY1
MDBENzQ0NjMgLyogSFRNTFRleHRBcmVhRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4MTM2OUQ3MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBI
VE1MVGV4dEFyZWFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4MTM2OUJCMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcCAqLzsgfTsKLQkJQTgxMzY5RDgwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxTZWxlY3RF
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
ODEzNjlCQzA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTFNlbGVjdEVsZW1lbnQuaCAqLzsgfTsKKwkJ
QTgxMzY5RDgwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxTZWxlY3RFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEzNjlCQzA5NzM3NEY1MDBE
NzQ0NjMgLyogSFRNTFNlbGVjdEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBODEzNjlEOTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTFNl
bGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTgxMzY5QkQwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxTZWxlY3RFbGVtZW50LmNwcCAq
LzsgfTsKLQkJQTgxMzY5REEwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxPcHRpb25zQ29sbGVjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5
QkUwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxPcHRpb25zQ29sbGVjdGlvbi5oICovOyB9OwotCQlB
ODEzNjlEQzA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTE9wdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTM2OUMwMDk3Mzc0RjUwMEQ3
NDQ2MyAvKiBIVE1MT3B0aW9uRWxlbWVudC5oICovOyB9OworCQlBODEzNjlEQTA5NzM3NEY2MDBE
NzQ0NjMgLyogSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEzNjlCRTA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTE9w
dGlvbnNDb2xsZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQTgxMzY5REMwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxPcHRpb25FbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEzNjlD
MDA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTE9wdGlvbkVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBODEzNjlERDA5NzM3NEY2MDBENzQ0
NjMgLyogSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QzEwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxPcHRpb25F
bGVtZW50LmNwcCAqLzsgfTsKIAkJQTgxMzY5REUwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxPcHRH
cm91cEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4MTM2OUMyMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MT3B0R3JvdXBFbGVtZW50LmggKi87
IH07CiAJCUE4MTM2OURGMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MT3B0R3JvdXBFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTM2OUMz
MDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MT3B0R3JvdXBFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTU1
MzUsNyArNTUzNSw3IEBACiAJCUJDNzcyRTE2MTMzMTYyQzIwMDFFQzlDRSAvKiBDU1NMaW5lQm94
Q29udGFpblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNzcyRTE1MTMzMTYyQzIwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVl
LmNwcCAqLzsgfTsKIAkJQkM3RjQ0QTgwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0Y0NEE3
MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM3RkE2MjAwRDFGMENCRDAwREIyMkE5IC8q
IER5bmFtaWNOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzdGQTYxRTBEMUYwQ0JEMDBEQjIyQTkgLyogRHluYW1pY05vZGVMaXN0LmNw
cCAqLzsgfTsKLQkJQkM3RkE2MjEwRDFGMENCRDAwREIyMkE5IC8qIER5bmFtaWNOb2RlTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RkE2MUYw
RDFGMENCRDAwREIyMkE5IC8qIER5bmFtaWNOb2RlTGlzdC5oICovOyB9OworCQlCQzdGQTYyMTBE
MUYwQ0JEMDBEQjIyQTkgLyogRHluYW1pY05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdGQTYxRjBEMUYwQ0JEMDBEQjIyQTkgLyogRHlu
YW1pY05vZGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkM3RkE2MkQwRDFGMEVGRjAwREIyMkE5IC8qIFN0YXRpY05vZGVMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdGQTYyQjBEMUYw
RUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3QuaCAqLzsgfTsKIAkJQkM3RkE2MkUwRDFGMEVG
RjAwREIyMkE5IC8qIFN0YXRpY05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjJDMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNO
b2RlTGlzdC5jcHAgKi87IH07CiAJCUJDODBDOTg3MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1p
bmdGdW5jdGlvblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDODBDOTg1MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZh
bHVlLmNwcCAqLzsgfTsKQEAgLTIyMzM2LDYgKzIyMzM2LDEwIEBACiAJCQlpc2EgPSBQQlhIZWFk
ZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxl
cyA9ICgKKwkJCQlCQzdGQTYyMTBEMUYwQ0JEMDBEQjIyQTkgLyogRHluYW1pY05vZGVMaXN0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBODEzNjlEQTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlBODEzNjlEODA5NzM3NEY2MDBENzQ0
NjMgLyogSFRNTFNlbGVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE4MTM2OURDMDk3
Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MT3B0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTdCQzY5REIxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMkUwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxp
dHlBUklBR3JpZENlbGwuaCBpbiBIZWFkZXJzICovLApAQCAtMjMzODgsNyArMjMzOTIsNiBAQAog
CQkJCTMxNjkzNzlDMTQ2MDlDNkMwMEMwMTM2MiAvKiBEcmFnU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODFGNjVGRjYxMzc4OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDk4NzcwREMxMjQyQzUzNTAwMjIyNkJBIC8qIERyYXdpbmdCdWZmZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCUJDN0ZBNjIxMEQxRjBDQkQwMERCMjJBOSAvKiBEeW5hbWljTm9k
ZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENkVEMkM4MTM2QjhFNjYwMDNDRjA3MiAvKiBE
eW5hbWljc0NvbXByZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzU3MTM3QjY1M0Iw
MDAwOERDRSAvKiBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZENkVEMkM0MTM2QjhFNDIwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXByZXNzb3JOb2RlLmggaW4g
SGVhZGVycyAqLywKQEAgLTIzNzAyLDggKzIzNzA1LDYgQEAKIAkJCQlBODcxRDQ1QTBBMTI3Q0JD
MDBCMTJBNjggLyogSFRNTE9iamVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3
OUYxMEExOTE2REYwMEE4RUY1RiAvKiBIVE1MT0xpc3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODEzNjlERTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTE9wdEdyb3VwRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQTgxMzY5REMwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxPcHRpb25F
bGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlBODEzNjlEQTA5NzM3NEY2MDBENzQ0NjMgLyog
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QUQwMTAwOTEyN0U2
NDJBMDAxNTAzNUYgLyogSFRNTE91dHB1dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
RUE3Q0I1MEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MUGFyYWdyYXBoRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTg3MUQ0NTgwQTEyN0NCQzAwQjEyQTY4IC8qIEhUTUxQYXJhbUVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjM3MjEsNyArMjM3MjIsNiBAQAogCQkJCUE4NzFEQzI1MEEx
NTIwNTcwMEIxMkE2OCAvKiBIVE1MU2NyaXB0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTc3QjM4NzUxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxTY3JpcHRSdW5uZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3N0IzODc2MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MU2NyaXB0UnVubmVySG9z
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTgxMzY5RDgwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxT
ZWxlY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QUJERkYwQzE0REJFMzg1MDA0RDEx
N0QgLyogSFRNTFNoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxM0E4MENE
NjMzMTAwMEZBREE3NSAvKiBIVE1MU291cmNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTc3RTJEQ0UxMkYwRTI4MzAwQzEzMzc5IC8qIEhUTUxTb3VyY2VUcmFja2VyLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCBiODA3NmNiLi5iMzBmYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzggQEAKKzIwMTItMTAtMjMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgRnVsbC1wYWdlIFBERlBsdWdpbiBzaG91bGQgc3VwcG9ydCBpbmxpbmUg
Zm9ybSBlZGl0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDAxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgZm9ybSBjb250cm9scyBjb3JyZXNwb25kaW5nIHRvIFRleHQgYW5kIENob2ljZSBQ
REYgYW5ub3RhdGlvbnMsCisgICAgICAgIGFsbG93aW5nIGZvciBzaW5nbGUtIGFuZCBtdWx0aS1s
aW5lIHRleHQgaW5wdXQsIGFuZCA8c2VsZWN0Pi1saWtlIGlucHV0LgorCisgICAgICAgIEN1cnJl
bnRseSwgZm9ybXMgYXJlIG9ubHkgaW1wbGVtZW50ZWQgZm9yIGZ1bGwtcGFnZSBQREYgZG9jdW1l
bnRzLgorCisgICAgICAgICogU2hhcmVkL21hYy9QREZLaXRJbXBvcnRzLmg6CisgICAgICAgIChX
ZWJLaXQpOiBBZGQgcGRmQW5ub3RhdGlvblRleHRXaWRnZXRDbGFzcyBhbmQgcGRmQW5ub3RhdGlv
bkNob2ljZVdpZGdldENsYXNzLgorICAgICAgICAqIFNoYXJlZC9tYWMvUERGS2l0SW1wb3J0cy5t
bToKKyAgICAgICAgKFdlYktpdDo6cGRmQW5ub3RhdGlvblRleHRXaWRnZXRDbGFzcyk6IEFkZCBw
ZGZBbm5vdGF0aW9uVGV4dFdpZGdldENsYXNzLgorICAgICAgICAoV2ViS2l0OjpwZGZBbm5vdGF0
aW9uQ2hvaWNlV2lkZ2V0Q2xhc3MpOiBBZGQgcGRmQW5ub3RhdGlvbkNob2ljZVdpZGdldENsYXNz
LgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIFBERkxh
eWVyQ29udHJvbGxlckRldGFpbHMsIFBERlBsdWdpblRleHRBbm5vdGF0aW9uLCBQREZQbHVnaW5D
aG9pY2VBbm5vdGF0aW9uLAorICAgICAgICBhbmQgUERGUGx1Z2luQW5ub3RhdGlvbi4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaDog
QWRkZWQuIEV4dHJhY3QgUERGTGF5ZXJDb250cm9sbGVyIGRldGFpbHMgY2F0ZWdvcnkgaW50byBh
IGhlYWRlci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgor
ICAgICAgICAoUERGUGx1Z2luKTogQWRkIG1fYWN0aXZlQW5ub3RhdGlvbiwgdG8ga2VlcCB0cmFj
ayBvZiB0aGUgYWN0aXZlIFBERlBsdWdpbkFubm90YXRpb24sIGFuZCBtX2Fubm90YXRpb25Db250
YWluZXIsCisgICAgICAgIHRoZSA8ZGl2PiB0aGF0IGZvcm0gY29udHJvbHMgYXJlIGluc2VydGVk
IGludG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06Cisg
ICAgICAgICgtW1dLUERGTGF5ZXJDb250cm9sbGVyRGVsZWdhdGUgcGRmTGF5ZXJDb250cm9sbGVy
OmRpZENoYW5nZUFjdGl2ZUFubm90YXRpb246XSk6IEZvcndhcmQgYWN0aXZlIGFubm90YXRpb24g
Y2hhbmdlcyB0byBQREZQbHVnaW4uCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1
Z2luKTogQWRkIGEgPGRpdj4gdG8gdGhlIFBsdWdpbkRvY3VtZW50IDxib2R5Piwgd2hpY2ggd2ls
bCBjb250YWluIDxpbnB1dD4sIDxzZWxlY3Q+LCBhbmQgPHRleHRhcmVhPiBlbGVtZW50cworICAg
ICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBhY3RpdmUgYW5ub3RhdGlvbi4gVGhpcyBkaXYgaXMg
bWFkZSB0byBmaXQgdG8gdGhlIGJvZHksIGFuZCBpcyAib3ZlcmZsb3c6IGhpZGRlbiIgc28gdGhh
dCBmb3JtIGVsZW1lbnRzIHNjcm9sbGVkCisgICAgICAgIG91dCBvZiB0aGUgdmlld3BvcnQgZG8g
bm90IGNhdXNlIHRoZSBEb2N1bWVudCB0byBleHBhbmQgdG8gYmUgbGFyZ2VyIHRoYW4gdGhlIFBs
dWdpbi4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwZGZEb2N1bWVudERpZExvYWQpOiBV
cGRhdGUgUERGUGx1Z2luJ3Mgbm90aW9uIG9mIHRoZSBzY3JvbGwgcG9zaXRpb24gaW1tZWRpYXRl
bHkgYWZ0ZXIgdGhlIGRvY3VtZW50IGxvYWRzLCBpbiBjYXNlCisgICAgICAgIHRoZSBzY3JvbGwg
cG9zaXRpb24gaXMgY29uc3RyYWluZWQgYnkgUERGS2l0LgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46OmRlc3Ryb3kpOiBUZWFyIGRvd24gYW55IGZvcm1zIGZvciB0aGUgYWN0aXZlIGFubm90
YXRpb24uCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UpOiBO
b3RpZnkgdGhlIGN1cnJlbnQgYW5ub3RhdGlvbiB0aGF0IGl0IHNob3VsZCB1cGRhdGUgaXRzIGdl
b21ldHJ5IHdoZW4gdGhlIFBsdWdpbidzIGdlb21ldHJ5IGNoYW5nZXMuCisgICAgICAgIChXZWJL
aXQ6OlBERlBsdWdpbjo6c2V0U2Nyb2xsT2Zmc2V0KTogTm90aWZ5IHRoZSBjdXJyZW50IGFubm90
YXRpb24gdGhhdCBpdCBzaG91bGQgdXBkYXRlIGl0cyBnZW9tZXRyeSB3aGVuIHdlIHNjcm9sbC4K
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzZXRBY3RpdmVBbm5vdGF0aW9uKTogQ29tbWl0
IGNoYW5nZXMgdG8gdGhlIGN1cnJlbnQgYW5ub3RhdGlvbiwgaWYgdGhlcmUgaXMgb25lLCB0aGVu
IG1ha2UgYSBuZXcgUERGUGx1Z2luQW5ub3RhdGlvbgorICAgICAgICBjb3JyZXNwb25kaW5nIHRv
IHRoZSBuZXdseSBhY3RpdmUgYW5ub3RhdGlvbiwgYW5kIGF0dGFjaCBpdCB0byBvdXIgZG9jdW1l
bnQuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9u
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5Bbm5vdGF0aW9uOjplbGVtZW50
KTogUmV0dXJuIHRoZSBFbGVtZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBvYmplY3QuCisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OmFubm90YXRpb24pOiBSZXR1cm4gdGhl
IFBERkFubm90YXRpb24gY29ycmVzcG9uZGluZyB0byB0aGlzIG9iamVjdC4KKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luQW5ub3RhdGlvbjo6cGx1Z2luKTogUmV0dXJuIHRoZSBQbHVnaW4gdGhh
dCBjcmVhdGVkIHRoaXMgb2JqZWN0LgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5Bbm5vdGF0
aW9uOjpjb21taXQpOiBDb21taXQgY2hhbmdlcyBmcm9tIHRoZSBmb3JtIHRvIHRoZSBQREZBbm5v
dGF0aW9uLiBUaGlzIGlzIGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXMuCisgICAgICAgIChXZWJL
aXQ6OlBERlBsdWdpbkFubm90YXRpb246OmF0dGFjaCk6IEF0dGFjaCBhIFBERlBsdWdpbkFubm90
YXRpb24gdG8gaXRzIHBhcmVudCBFbGVtZW50LgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5B
bm5vdGF0aW9uOjpwYXJlbnQpOiBSZXR1cm4gdGhlIHBhcmVudCBFbGVtZW50IHRoYXQgd2UncmUg
YXR0YWNoKCllZCB0by4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQW5ub3RhdGlvbjo6cGRm
TGF5ZXJDb250cm9sbGVyKTogUmV0dXJuIHRoZSBwZGZMYXllckNvbnRyb2xsZXIgdGhhdCB0aGUg
UERGQW5ub3RhdGlvbiBjb21lcyBmcm9tLgorICAgICAgICAoUERGUGx1Z2luQW5ub3RhdGlvbkV2
ZW50TGlzdGVuZXIpOiBBZGQgYW4gZXZlbnQgbGlzdGVuZXIgdG8gcmVzcG9uZCB0byAiY2hhbmdl
IiBhbmQgImJsdXIiIGV2ZW50cyBmcm9tIG1fZWxlbWVudC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW06IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpQREZQbHVnaW5Bbm5vdGF0aW9uOjpjcmVhdGUpOiBDcmVhdGUgdGhlIGFwcHJvcHJpYXRl
IFBERlBsdWdpbkFubm90YXRpb24gc3ViY2xhc3MgKFBERlBsdWdpblRleHRBbm5vdGF0aW9uIG9y
CisgICAgICAgIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24gYmFzZWQgb24gdGhlIGNsYXNzIG9m
IHRoZSBQREZBbm5vdGF0aW9uKS4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQW5ub3RhdGlv
bjo6YXR0YWNoKTogTGF6aWx5IGNyZWF0ZSB0aGUgSFRNTCBmb3JtIGVsZW1lbnQgY29ycmVzcG9u
ZGluZyB0byB0aGlzIGFubm90YXRpb24uIEFkZCBpdCB0byBpdHMgcGFyZW50CisgICAgICAgIGVs
ZW1lbnQuIEFkZCBldmVudCBsaXN0ZW5lcnMgZm9yICJjaGFuZ2UiIGFuZCAiYmx1ciIuCisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246On5QREZQbHVnaW5Bbm5vdGF0aW9uKTog
VGVhciBkb3duIHRoZSBhbm5vdGF0aW9uLCBieSByZW1vdmluZyBldmVudCBsaXN0ZW5lcnMgYW5k
IHJlbW92aW5nCisgICAgICAgIHRoZSBmb3JtIGVsZW1lbnQgZnJvbSBpdHMgcGFyZW50IGVsZW1l
bnQuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OnVwZGF0ZUdlb21ldHJ5
KTogVXBkYXRlIHRoZSBzaXplIGFuZCBwb3NpdGlvbiBvZiB0aGUgZm9ybSBlbGVtZW50LCBnaXZl
biB0aGUgY3VycmVudCBQREYgc2NhbGUgYW5kIHNjcm9sbGluZyBwb3NpdGlvbi4KKyAgICAgICAg
KFdlYktpdDo6UERGUGx1Z2luQW5ub3RhdGlvbjo6UERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlz
dGVuZXI6OmhhbmRsZUV2ZW50KTogSWYgd2UgZ2V0IGEgYmx1ciBvciBjaGFuZ2UgZXZlbnQsIHdl
IHNob3VsZCByZW1vdmUgdGhlCisgICAgICAgIGZvcm0gY29udHJvbCB0byBtYXRjaCB0aGUgYmVo
YXZpb3Igb2YgUERGS2l0LgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luQ2hvaWNlQW5ub3RhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2lu
Q2hvaWNlQW5ub3RhdGlvbjo6Y2hvaWNlQW5ub3RhdGlvbik6IFJldHVybiBhbm5vdGF0aW9uKCkg
d2l0aCB0aGUgYXBwcm9wcmlhdGUgY2FzdC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjp1cGRhdGVHZW9tZXRyeSk6IFVwZGF0ZSB0aGUg
Zm9udCBzaXplIG9mIHRoZSBjaG9pY2Ugd2lkZ2V0IGdpdmVuIHRoZSBjdXJyZW50IFBERiBzY2Fs
ZS4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y29tbWl0KTog
U2F2ZSB0aGUgdmFsdWUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCA8b3B0aW9uPiBpbnRvIHRo
ZSBQREZBbm5vdGF0aW9uQ2hvaWNlV2lkZ2V0LgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5D
aG9pY2VBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6IENyZWF0ZSBhIDxzZWxl
Y3Q+IGVsZW1lbnQsIHBvcHVsYXRlZCB3aXRoIDxvcHRpb24+IGVsZW1lbnRzCisgICAgICAgIGZv
ciB0aGUgUERGQW5ub3RhdGlvbkNob2ljZVdpZGdldCdzIGF2YWlsYWJsZSBjaG9pY2VzLiBTZWxl
Y3QgdGhlIGNvcnJlY3QgPG9wdGlvbj4gaW5pdGlhbGx5LgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpblRleHRBbm5vdGF0aW9uOjp0ZXh0QW5ub3RhdGlvbik6IFJldHVybiBh
bm5vdGF0aW9uKCkgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY2FzdC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6Y3NzQWxpZ25tZW50VmFsdWVGb3JOU1RleHRBbGlnbm1lbnQpOiBSZXR1cm4g
dGhlIENTUyBhbGlnbm1lbnQgdmFsdWUgZm9yIGEgZ2l2ZW4gTlNUZXh0QWxpZ25tZW50LgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVs
ZW1lbnQpOiBDcmVhdGUgYSA8dGV4dGFyZWE+IG9yIDxpbnB1dD4gZWxlbWVudCwgZGVwZW5kaW5n
IG9uIHdoZXRoZXIgdGhlCisgICAgICAgIFBERkFubm90YXRpb25UZXh0V2lkZ2V0IHN1cHBvcnRz
IG11bHRpbGluZSBlZGl0aW5nIG9yIG5vdC4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4
dEFubm90YXRpb246OnVwZGF0ZUdlb21ldHJ5KTogVXBkYXRlIHRoZSBmb250IHNpemUgb2YgdGhl
IHRleHQgd2lkZ2V0IGdpdmVuIHRoZSBjdXJyZW50IFBERiBzY2FsZS4KKyAgICAgICAgKFdlYktp
dDo6UERGUGx1Z2luVGV4dEFubm90YXRpb246OmNvbW1pdCk6IFNhdmUgdGhlIGN1cnJlbnQgc3Ry
aW5nIGluIHRoZSBmb3JtIGVsZW1lbnQgaW50byB0aGUgUERGQW5ub3RhdGlvblRleHRXaWRnZXQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0Ojpmb2N1c2VkUGx1Z2luVmlld0ZvckZyYW1lKTogUmV0dXJuIHRoZSBQbHVnaW5WaWV3IGZv
ciBhIEZyYW1lIG9ubHkgaWYgdGhlIFBsdWdpbidzIGVsZW1lbnQgaXMgZm9jdXNlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZXhlY3V0ZUVkaXRpbmdDb21tYW5kKTogT25seSBmb3J3YXJk
IGVkaXRpbmcgY29tbWFuZHMgdG8gUGx1Z2luVmlldyBpZiB0aGUgcGx1Z2luIGl0c2VsZiBpcyBm
b2N1c2VkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc0VkaXRpbmdDb21tYW5kRW5hYmxl
ZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2YWxpZGF0ZUNvbW1hbmQpOiBE
aXR0by4KKwogMjAxMi0xMC0xNyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBTdWJmcmFtZSBQREZQbHVnaW5zIHNob3VsZCBub3QgaGF2ZSBIVURzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1BERktpdEltcG9ydHMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUERGS2l0SW1wb3J0cy5oCmluZGV4IGM5YTFlMGEuLmEx
YTEzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUERGS2l0SW1wb3J0
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUERGS2l0SW1wb3J0cy5oCkBAIC0z
NSw2ICszNSw4IEBAIENsYXNzIHBkZkRvY3VtZW50Q2xhc3MoKTsKIAogI2lmIEVOQUJMRShQREZL
SVRfUExVR0lOKQogQ2xhc3MgcGRmTGF5ZXJDb250cm9sbGVyQ2xhc3MoKTsKK0NsYXNzIHBkZkFu
bm90YXRpb25UZXh0V2lkZ2V0Q2xhc3MoKTsKK0NsYXNzIHBkZkFubm90YXRpb25DaG9pY2VXaWRn
ZXRDbGFzcygpOwogI2VuZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUERGS2l0SW1wb3J0cy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUERGS2l0
SW1wb3J0cy5tbQppbmRleCBiY2NmYmVmLi4xNjY5N2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL1BERktpdEltcG9ydHMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9QREZLaXRJbXBvcnRzLm1tCkBAIC02Miw2ICs2MiwyMCBAQCBDbGFzcyBwZGZMYXll
ckNvbnRyb2xsZXJDbGFzcygpCiAgICAgQVNTRVJUKHBkZkxheWVyQ29udHJvbGxlckNsYXNzKTsK
ICAgICByZXR1cm4gcGRmTGF5ZXJDb250cm9sbGVyQ2xhc3M7CiB9CisKK0NsYXNzIHBkZkFubm90
YXRpb25UZXh0V2lkZ2V0Q2xhc3MoKQoreworICAgIHN0YXRpYyBDbGFzcyBwZGZBbm5vdGF0aW9u
VGV4dFdpZGdldENsYXNzID0gY2xhc3NGcm9tUERGS2l0KEAiUERGQW5ub3RhdGlvblRleHRXaWRn
ZXQiKTsKKyAgICBBU1NFUlQocGRmQW5ub3RhdGlvblRleHRXaWRnZXRDbGFzcyk7CisgICAgcmV0
dXJuIHBkZkFubm90YXRpb25UZXh0V2lkZ2V0Q2xhc3M7Cit9CisKK0NsYXNzIHBkZkFubm90YXRp
b25DaG9pY2VXaWRnZXRDbGFzcygpCit7CisgICAgc3RhdGljIENsYXNzIHBkZkFubm90YXRpb25D
aG9pY2VXaWRnZXRDbGFzcyA9IGNsYXNzRnJvbVBERktpdChAIlBERkFubm90YXRpb25DaG9pY2VX
aWRnZXQiKTsKKyAgICBBU1NFUlQocGRmQW5ub3RhdGlvbkNob2ljZVdpZGdldENsYXNzKTsKKyAg
ICByZXR1cm4gcGRmQW5ub3RhdGlvbkNob2ljZVdpZGdldENsYXNzOworfQogI2VuZGlmCiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA5YjVhYzdiLi4zZTZhZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjksNiArMjY5LDkgQEAKIAkJMjlDRDU1QUIx
MjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUNENTVBOTEyOEUyOTRG
MDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbSAqLzsgfTsKIAkJMjlE
NTVERjExNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RDU1
REVGMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi87IH07CiAJCTI5RDU1REYyMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94
eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyOUQ1NURGMDE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlcy5o
ICovOyB9OworCQkyRDJBREYwOTE2MzYyREQ1MDAxOTdFNDcgLyogUERGUGx1Z2luVGV4dEFubm90
YXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RDJBREYwNjE2MzYyREM3MDAxOTdFNDcgLyogUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0gKi87
IH07CisJCTJEMkFERjBCMTYzNjJEREIwMDE5N0U0NyAvKiBQREZQbHVnaW5Bbm5vdGF0aW9uLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyQURGMDMx
NjM2MjQzNTAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRpb24ubW0gKi87IH07CisJCTJEMkFE
RjEwMTYzNjREODIwMDE5N0U0NyAvKiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyQURGMEUxNjM2NEQ4
MjAwMTk3RTQ3IC8qIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0gKi87IH07CiAJCTJEODcw
RDEwMTYyMzRGRkUwMDBBM0YyMCAvKiBQREZQbHVnaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDg3MEQwRTE2MjJCN0Y5MDAwQTNGMjAgLyogUERG
UGx1Z2luLm1tICovOyB9OwogCQkzMTA5OTk3MzE0NkM3NUEyMDAyOURFQjkgLyogV2ViTm90aWZp
Y2F0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQu
Y3BwICovOyB9OwogCQkzMTA5OTlDNzE0NkM5RTNEMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTA5OTk2ODE0NkM3MUY1MDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi87IH07
CkBAIC0xNDI1LDYgKzE0MjgsMTMgQEAKIAkJMjlENTVERUUxNjFCRjg3ODAwMzFBMkUzIC8qIFdl
YlBhZ2VHcm91cFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlBhZ2VHcm91cFByb3h5Lm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUQ1NURFRjE2MUJGOUYxMDAz
MUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUQ1NURGMDE2MUJGOUYxMDAz
MUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTJEMkFERjAyMTYzNjI0MzUwMDE5N0U0NyAvKiBQREZQbHVnaW5Bbm5v
dGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBERlBsdWdpbkFubm90
YXRpb24uaDsgcGF0aCA9IFBERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTJEMkFERjAzMTYzNjI0MzUwMDE5N0U0NyAvKiBQREZQbHVnaW5Bbm5v
dGF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUERGUGx1
Z2luQW5ub3RhdGlvbi5tbTsgcGF0aCA9IFBERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDJBREYwNTE2MzYyREM3MDAxOTdFNDcgLyogUERG
UGx1Z2luVGV4dEFubm90YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
UERGUGx1Z2luVGV4dEFubm90YXRpb24uaDsgcGF0aCA9IFBERi9QREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDJBREYwNjE2MzYyREM3MDAx
OTdFNDcgLyogUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbTsgcGF0aCA9IFBE
Ri9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMkQyQURGMEMxNjM2M0RFQzAwMTk3RTQ3IC8qIFBERkxheWVyQ29udHJvbGxlckRldGFpbHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oOyBwYXRoID0gUERG
L1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMkQyQURGMEQxNjM2NEQ4MjAwMTk3RTQ3IC8qIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUERGUGx1Z2luQ2hvaWNlQW5ub3Rh
dGlvbi5oOyBwYXRoID0gUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQyQURGMEUxNjM2NEQ4MjAwMTk3RTQ3IC8qIFBERlBsdWdp
bkNob2ljZUFubm90YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tOyBwYXRoID0gUERGL1BERlBsdWdpbkNo
b2ljZUFubm90YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEODcwRDBE
MTYyMkI3RjkwMDBBM0YyMCAvKiBQREZQbHVnaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gUERGUGx1Z2luLmg7IHBhdGggPSBQREYvUERGUGx1Z2luLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJEODcwRDBFMTYyMkI3RjkwMDBBM0YyMCAvKiBQREZQbHVnaW4u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBQREZQbHVnaW4ubW07
IHBhdGggPSBQREYvUERGUGx1Z2luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MTA5OTk2ODE0NkM3MUY1MDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDE5Niw2ICs0MjA2LDEzIEBACiAJCUUxOTk4NzVCMTQyQkY5Q0YwMEJCMkRFNyAv
KiBQREYgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTJE
MkFERjBEMTYzNjREODIwMDE5N0U0NyAvKiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLmggKi8s
CisJCQkJMkQyQURGMEUxNjM2NEQ4MjAwMTk3RTQ3IC8qIFBERlBsdWdpbkNob2ljZUFubm90YXRp
b24ubW0gKi8sCisJCQkJMkQyQURGMEMxNjM2M0RFQzAwMTk3RTQ3IC8qIFBERkxheWVyQ29udHJv
bGxlckRldGFpbHMuaCAqLywKKwkJCQkyRDJBREYwMjE2MzYyNDM1MDAxOTdFNDcgLyogUERGUGx1
Z2luQW5ub3RhdGlvbi5oICovLAorCQkJCTJEMkFERjAzMTYzNjI0MzUwMDE5N0U0NyAvKiBQREZQ
bHVnaW5Bbm5vdGF0aW9uLm1tICovLAorCQkJCTJEMkFERjA1MTYzNjJEQzcwMDE5N0U0NyAvKiBQ
REZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oICovLAorCQkJCTJEMkFERjA2MTYzNjJEQzcwMDE5N0U0
NyAvKiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSAqLywKIAkJCQkyRDg3MEQwRDE2MjJCN0Y5
MDAwQTNGMjAgLyogUERGUGx1Z2luLmggKi8sCiAJCQkJMkQ4NzBEMEUxNjIyQjdGOTAwMEEzRjIw
IC8qIFBERlBsdWdpbi5tbSAqLywKIAkJCQlFMTk5ODc1QzE0MkJGQzk3MDBCQjJERTcgLyogU2lt
cGxlUERGUGx1Z2luLm1tICovLApAQCAtNTY5NCw2ICs1NzExLDkgQEAKIAkJCQk1MTNBMTY0QzE2
MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTE4M0RERUMxNjMwQkRGQzAwOEJFNUM3IC8qIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTEzQkVCMzE2MzVBOUM4MDBGMTlD
MDMgLyogU3RyaW5nUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJEMkFERjA5MTYz
NjJERDUwMDE5N0U0NyAvKiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTJEMkFERjBCMTYzNjJEREIwMDE5N0U0NyAvKiBQREZQbHVnaW5Bbm5vdGF0aW9uLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJMkQyQURGMTAxNjM2NEQ4MjAwMTk3RTQ3IC8qIFBERlBsdWdp
bkNob2ljZUFubm90YXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xs
ZXJEZXRhaWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmEyMDY1Mwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0IDxQREZLaXQvUERGS2l0Lmg+CisKK0Bwcm90b2NvbCBQREZMYXllckNvbnRyb2xs
ZXJEZWxlZ2F0ZSA8TlNPYmplY3Q+CisKKy0gKHZvaWQpdXBkYXRlU2Nyb2xsUG9zaXRpb246KENH
UG9pbnQpbmV3UG9zaXRpb247CistICh2b2lkKXdyaXRlSXRlbXNUb1Bhc3RlYm9hcmQ6KE5TQXJy
YXkgKilpdGVtcyB3aXRoVHlwZXM6KE5TQXJyYXkgKil0eXBlczsKKy0gKHZvaWQpc2hvd0RlZmlu
aXRpb25Gb3JBdHRyaWJ1dGVkU3RyaW5nOihOU0F0dHJpYnV0ZWRTdHJpbmcgKilzdHJpbmcgYXRQ
b2ludDooQ0dQb2ludClwb2ludDsKKy0gKHZvaWQpcGVyZm9ybVdlYlNlYXJjaDooTlNTdHJpbmcg
KilzdHJpbmc7CistICh2b2lkKW9wZW5XaXRoUHJldmlldzsKKy0gKHZvaWQpc2F2ZVRvUERGOwor
CistICh2b2lkKXBkZkxheWVyQ29udHJvbGxlcjooUERGTGF5ZXJDb250cm9sbGVyICopcGRmTGF5
ZXJDb250cm9sbGVyIGRpZENoYW5nZUFjdGl2ZUFubm90YXRpb246KFBERkFubm90YXRpb24gKilh
bm5vdGF0aW9uOworCitAZW5kCisKK0BpbnRlcmZhY2UgUERGTGF5ZXJDb250cm9sbGVyIDogTlNP
YmplY3QKK0BlbmQKKworQGludGVyZmFjZSBQREZMYXllckNvbnRyb2xsZXIgKERldGFpbHMpCisK
K0Bwcm9wZXJ0eSAocmV0YWluKSBDQUxheWVyICpwYXJlbnRMYXllcjsKK0Bwcm9wZXJ0eSAocmV0
YWluKSBQREZEb2N1bWVudCAqZG9jdW1lbnQ7CitAcHJvcGVydHkgKHJldGFpbikgaWQ8UERGTGF5
ZXJDb250cm9sbGVyRGVsZWdhdGU+IGRlbGVnYXRlOworCistICh2b2lkKXNldEZyYW1lU2l6ZToo
Q0dTaXplKXNpemU7CisKKy0gKHZvaWQpc2V0RGlzcGxheU1vZGU6KGludCltb2RlOworLSAodm9p
ZClzZXREaXNwbGF5c1BhZ2VCcmVha3M6KEJPT0wpcGFnZUJyZWFrczsKKworLSAoQ0dGbG9hdCl0
aWxlU2NhbGVGYWN0b3I7CistICh2b2lkKXNldFRpbGVTY2FsZUZhY3RvcjooQ0dGbG9hdClzY2Fs
ZUZhY3RvcjsKKworLSAoQ0dTaXplKWNvbnRlbnRTaXplOworLSAoQ0dTaXplKWNvbnRlbnRTaXpl
UmVzcGVjdGluZ1pvb207CisKKy0gKHZvaWQpc25hcHNob3RJbkNvbnRleHQ6KENHQ29udGV4dFJl
Ziljb250ZXh0OworCistICh2b2lkKW1hZ25pZnlXaXRoTWFnbmlmaWNhdGlvbjooQ0dGbG9hdClt
YWduaWZpY2F0aW9uIGF0UG9pbnQ6KENHUG9pbnQpcG9pbnQgaW1tZWRpYXRlbHk6KEJPT0wpaW1t
ZWRpYXRlbHk7CisKKy0gKENHUG9pbnQpc2Nyb2xsUG9zaXRpb247CistICh2b2lkKXNldFNjcm9s
bFBvc2l0aW9uOihDR1BvaW50KW5ld1Bvc2l0aW9uOworLSAodm9pZClzY3JvbGxXaXRoRGVsdGE6
KENHU2l6ZSlkZWx0YTsKKworLSAodm9pZCltb3VzZURvd246KE5TRXZlbnQgKilldmVudDsKKy0g
KHZvaWQpbW91c2VNb3ZlZDooTlNFdmVudCAqKWV2ZW50OworLSAodm9pZCltb3VzZVVwOihOU0V2
ZW50ICopZXZlbnQ7CistICh2b2lkKW1vdXNlRHJhZ2dlZDooTlNFdmVudCAqKWV2ZW50OworLSAo
dm9pZCltb3VzZUVudGVyZWQ6KE5TRXZlbnQgKilldmVudDsKKy0gKHZvaWQpbW91c2VFeGl0ZWQ6
KE5TRXZlbnQgKilldmVudDsKKworLSAoTlNBcnJheSAqKWZpbmRTdHJpbmc6KE5TU3RyaW5nICop
c3RyaW5nIGNhc2VTZW5zaXRpdmU6KEJPT0wpaXNDYXNlU2Vuc2l0aXZlIGhpZ2hsaWdodE1hdGNo
ZXM6KEJPT0wpc2hvdWxkSGlnaGxpZ2h0TWF0Y2hlczsKKworLSAoaWQpY3VycmVudFNlbGVjdGlv
bjsKKy0gKHZvaWQpY29weVNlbGVjdGlvbjsKKy0gKHZvaWQpc2VsZWN0QWxsOworCistIChib29s
KWtleURvd246KE5TRXZlbnQgKilldmVudDsKKworLSAodm9pZClzZXRIVURFbmFibGVkOihCT09M
KWVuYWJsZWQ7CistIChCT09MKWh1ZEVuYWJsZWQ7CisKKy0gKENHUmVjdClib3VuZHNGb3JBbm5v
dGF0aW9uOihQREZBbm5vdGF0aW9uICopYW5ub3RhdGlvbjsKKworQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggNDlkMDkx
MC4uYjE2Yzg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oCkBAIC0zOCwxNiArMzgsMTkgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
T3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRSZWY7CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVKU1Zh
bHVlKiBKU09iamVjdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTVmFsdWUqIEpT
VmFsdWVSZWY7CiAKK09CSkNfQ0xBU1MgUERGQW5ub3RhdGlvbjsKIE9CSkNfQ0xBU1MgUERGTGF5
ZXJDb250cm9sbGVyOwogT0JKQ19DTEFTUyBXS1BERkxheWVyQ29udHJvbGxlckRlbGVnYXRlOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBFbGVtZW50Owogc3RydWN0IFBsdWdpbkluZm87
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBQbHVnaW5WaWV3OworY2xhc3MgUERG
UGx1Z2luQW5ub3RhdGlvbjsKIGNsYXNzIFdlYkZyYW1lOwogCiBjbGFzcyBQREZQbHVnaW4gOiBw
dWJsaWMgU2ltcGxlUERGUGx1Z2luIHsKQEAgLTU2LDYgKzU5LDcgQEAgcHVibGljOgogICAgIH5Q
REZQbHVnaW4oKTsKIAogICAgIHZvaWQgcGFpbnRDb250cm9sRm9yTGF5ZXJJbkNvbnRleHQoQ0FM
YXllciAqLCBDR0NvbnRleHRSZWYpOworICAgIHZvaWQgc2V0QWN0aXZlQW5ub3RhdGlvbihQREZB
bm5vdGF0aW9uICopOwogICAgIAogICAgIHVzaW5nIFNjcm9sbGFibGVBcmVhOjpub3RpZnlTY3Jv
bGxQb3NpdGlvbkNoYW5nZWQ7CiAKQEAgLTkxLDYgKzk1LDkgQEAgcHJpdmF0ZToKICAgICBSZXRh
aW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxDb3JuZXJMYXllcjsKICAgICBSZXRhaW5QdHI8UERGTGF5
ZXJDb250cm9sbGVyPiBtX3BkZkxheWVyQ29udHJvbGxlcjsKICAgICAKKyAgICBSZWZQdHI8UERG
UGx1Z2luQW5ub3RhdGlvbj4gbV9hY3RpdmVBbm5vdGF0aW9uOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpFbGVtZW50PiBtX2Fubm90YXRpb25Db250YWluZXI7CisKICAgICBXZWJDb3JlOjpBZmZpbmVU
cmFuc2Zvcm0gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtOwogICAgIFdlYkNvcmU6OkludFBv
aW50IG1fbGFzdE1vdXNlUG9pbnQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDE0MGFiYjUuLmI4OTczYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJQREZQbHVnaW4uaCIKIAogI2ltcG9ydCAi
UERGS2l0SW1wb3J0cy5oIgorI2ltcG9ydCAiUERGUGx1Z2luQW5ub3RhdGlvbi5oIgogI2ltcG9y
dCAiUGx1Z2luVmlldy5oIgogI2ltcG9ydCAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW1wb3J0ICJX
ZWJFdmVudC5oIgpAQCAtMzcsMTEgKzM4LDE0IEBACiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0
ekNvcmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0Nocm9tZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9DU1NQcmltaXRpdmVWYWx1ZS5oPgor
I2ltcG9ydCA8V2ViQ29yZS9DU1NQcm9wZXJ0eU5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Rv
Y3VtZW50TG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNp
bXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxF
bGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUVFBIZWFkZXJNYXAuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CkBAIC01
MSw2NCArNTUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxBbmltYXRvci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5oPgogCi1AcHJvdG9jb2wgUERGTGF5ZXJDb250cm9s
bGVyRGVsZWdhdGUgPE5TT2JqZWN0PgotCi0tICh2b2lkKXVwZGF0ZVNjcm9sbFBvc2l0aW9uOihD
R1BvaW50KW5ld1Bvc2l0aW9uOwotLSAodm9pZCl3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkOihOU0Fy
cmF5ICopaXRlbXMgd2l0aFR5cGVzOihOU0FycmF5ICopdHlwZXM7Ci0tICh2b2lkKXNob3dEZWZp
bml0aW9uRm9yQXR0cmlidXRlZFN0cmluZzooTlNBdHRyaWJ1dGVkU3RyaW5nICopc3RyaW5nIGF0
UG9pbnQ6KENHUG9pbnQpcG9pbnQ7Ci0tICh2b2lkKXBlcmZvcm1XZWJTZWFyY2g6KE5TU3RyaW5n
ICopc3RyaW5nOwotLSAodm9pZClvcGVuV2l0aFByZXZpZXc7Ci0tICh2b2lkKXNhdmVUb1BERjsK
LQotQGVuZAotCi1AaW50ZXJmYWNlIFBERkxheWVyQ29udHJvbGxlciA6IE5TT2JqZWN0Ci1AZW5k
Ci0KLUBpbnRlcmZhY2UgUERGTGF5ZXJDb250cm9sbGVyIChEZXRhaWxzKQotCi1AcHJvcGVydHkg
KHJldGFpbikgQ0FMYXllciAqcGFyZW50TGF5ZXI7Ci1AcHJvcGVydHkgKHJldGFpbikgUERGRG9j
dW1lbnQgKmRvY3VtZW50OwotQHByb3BlcnR5IChyZXRhaW4pIGlkPFBERkxheWVyQ29udHJvbGxl
ckRlbGVnYXRlPiBkZWxlZ2F0ZTsKLQotLSAodm9pZClzZXRGcmFtZVNpemU6KENHU2l6ZSlzaXpl
OwotCi0tICh2b2lkKXNldERpc3BsYXlNb2RlOihpbnQpbW9kZTsKLS0gKHZvaWQpc2V0RGlzcGxh
eXNQYWdlQnJlYWtzOihCT09MKXBhZ2VCcmVha3M7Ci0KLS0gKENHRmxvYXQpdGlsZVNjYWxlRmFj
dG9yOwotLSAodm9pZClzZXRUaWxlU2NhbGVGYWN0b3I6KENHRmxvYXQpc2NhbGVGYWN0b3I7Ci0K
LS0gKENHU2l6ZSljb250ZW50U2l6ZTsKLS0gKENHU2l6ZSljb250ZW50U2l6ZVJlc3BlY3Rpbmda
b29tOwotCi0tICh2b2lkKXNuYXBzaG90SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dDsK
LQotLSAodm9pZCltYWduaWZ5V2l0aE1hZ25pZmljYXRpb246KENHRmxvYXQpbWFnbmlmaWNhdGlv
biBhdFBvaW50OihDR1BvaW50KXBvaW50IGltbWVkaWF0ZWx5OihCT09MKWltbWVkaWF0ZWx5Owot
Ci0tIChDR1BvaW50KXNjcm9sbFBvc2l0aW9uOwotLSAodm9pZClzZXRTY3JvbGxQb3NpdGlvbjoo
Q0dQb2ludCluZXdQb3NpdGlvbjsKLS0gKHZvaWQpc2Nyb2xsV2l0aERlbHRhOihDR1NpemUpZGVs
dGE7Ci0KLS0gKHZvaWQpbW91c2VEb3duOihOU0V2ZW50ICopZXZlbnQ7Ci0tICh2b2lkKW1vdXNl
TW92ZWQ6KE5TRXZlbnQgKilldmVudDsKLS0gKHZvaWQpbW91c2VVcDooTlNFdmVudCAqKWV2ZW50
OwotLSAodm9pZCltb3VzZURyYWdnZWQ6KE5TRXZlbnQgKilldmVudDsKLS0gKHZvaWQpbW91c2VF
bnRlcmVkOihOU0V2ZW50ICopZXZlbnQ7Ci0tICh2b2lkKW1vdXNlRXhpdGVkOihOU0V2ZW50ICop
ZXZlbnQ7Ci0KLS0gKE5TQXJyYXkgKilmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBjYXNl
U2Vuc2l0aXZlOihCT09MKWlzQ2FzZVNlbnNpdGl2ZSBoaWdobGlnaHRNYXRjaGVzOihCT09MKXNo
b3VsZEhpZ2hsaWdodE1hdGNoZXM7Ci0KLS0gKGlkKWN1cnJlbnRTZWxlY3Rpb247Ci0tICh2b2lk
KWNvcHlTZWxlY3Rpb247Ci0tICh2b2lkKXNlbGVjdEFsbDsKLQotLSAoYm9vbClrZXlEb3duOihO
U0V2ZW50ICopZXZlbnQ7Ci0KLS0gKHZvaWQpc2V0SFVERW5hYmxlZDooQk9PTCllbmFibGVkOwot
LSAoQk9PTClodWRFbmFibGVkOwotCi1AZW5kCisjaW1wb3J0ICJQREZMYXllckNvbnRyb2xsZXJE
ZXRhaWxzLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0yMDgsMTAgKzE1NSwx
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50Lgog
fQogCistICh2b2lkKXBkZkxheWVyQ29udHJvbGxlcjooUERGTGF5ZXJDb250cm9sbGVyICopcGRm
TGF5ZXJDb250cm9sbGVyIGRpZENoYW5nZUFjdGl2ZUFubm90YXRpb246KFBERkFubm90YXRpb24g
Kilhbm5vdGF0aW9uCit7CisgICAgX3BkZlBsdWdpbi0+c2V0QWN0aXZlQW5ub3RhdGlvbihhbm5v
dGF0aW9uKTsKK30KKwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKKwogUGFzc1JlZlB0cjxQREZQbHVnaW4+IFBERlBsdWdpbjo6Y3JlYXRl
KFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBERlBsdWdpbihm
cmFtZSkpOwpAQCAtMjMxLDYgKzE4NSwyNiBAQCBQREZQbHVnaW46OlBERlBsdWdpbihXZWJGcmFt
ZSogZnJhbWUpCiAgICAgLy8gU3ViZnJhbWUgUERGcyBkb24ndCBuZWVkIGEgSFVELCBhcyB0aGV5
J3JlIGxpa2VseSB0byBiZSBzbWFsbCBhbmQgZXhwZWN0ZWQgdG8gYWN0IG1vcmUgbGlrZSBhbiBp
bWFnZS4KICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgc2V0SFVERW5hYmxlZDp3ZWJG
cmFtZSgpLT5pc01haW5GcmFtZSgpXTsKIAorICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ugc3VwcG9y
dCBmb3JtcyBmb3IgaW5saW5lIFBERnM/IFNpbmNlIHdlIHRvdWNoIHRoZSBkb2N1bWVudCwgdGhp
cyBtaWdodCBiZSBkaWZmaWN1bHQuCisgICAgaWYgKHdlYkZyYW1lKCktPmlzTWFpbkZyYW1lKCkp
IHsKKyAgICAgICAgLy8gU2V0IG92ZXJmbG93OiBoaWRkZW4gb24gdGhlIGFubm90YXRpb24gY29u
dGFpbmVyIHNvIDxpbnB1dD4gZWxlbWVudHMgc2Nyb2xsZWQgb3V0IG9mIHZpZXcgZG9uJ3Qgc2hv
dworICAgICAgICAvLyBzY3JvbGxiYXJzIG9uIHRoZSBib2R5LiBXZSBjYW4ndCBhZGQgYW5ub3Rh
dGlvbnMgZGlyZWN0bHkgdG8gdGhlIGJvZHksIGJlY2F1c2Ugb3ZlcmZsb3c6IGhpZGRlbiBvbiB0
aGUgYm9keQorICAgICAgICAvLyB3aWxsIGJyZWFrIHJ1YmJlci1iYW5kaW5nLgorICAgICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKTsK
KyAgICAgICAgbV9hbm5vdGF0aW9uQ29udGFpbmVyID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQo
ZGl2VGFnLCBmYWxzZSk7CisgICAgICAgIFN0eWxlZEVsZW1lbnQqIGFubm90YXRpb25Db250YWlu
ZXIgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4obV9hbm5vdGF0aW9uQ29udGFpbmVyLmdl
dCgpKTsKKyAgICAgICAgYW5ub3RhdGlvbkNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eU92ZXJmbG93LCAiaGlkZGVuIik7CisgICAgICAgIGFubm90YXRpb25Db250
YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb3NpdGlvbiwgImFic29s
dXRlIik7CisgICAgICAgIGFubm90YXRpb25Db250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzLCAibm9uZSIpOworICAgICAgICBhbm5vdGF0aW9u
Q29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCAwLjAsIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBhbm5vdGF0aW9uQ29udGFpbmVyLT5z
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgMC4wLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgYW5ub3RhdGlvbkNvbnRhaW5lci0+c2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVJpZ2h0LCAwLjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpOworICAgICAgICBhbm5vdGF0aW9uQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5Qm90dG9tLCAwLjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworCisg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBkb2N1bWVudC0+Ym9keSgpLT5h
cHBlbmRDaGlsZChtX2Fubm90YXRpb25Db250YWluZXIuZ2V0KCksIGVjKTsKKyAgICB9CisKICAg
ICBbbV9jb250YWluZXJMYXllci5nZXQoKSBhZGRTdWJsYXllcjptX2NvbnRlbnRMYXllci5nZXQo
KV07CiAgICAgW21fY29udGFpbmVyTGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6bV9zY3JvbGxDb3Ju
ZXJMYXllci5nZXQoKV07CiB9CkBAIC0zMDQsNiArMjc4LDggQEAgdm9pZCBQREZQbHVnaW46OnBk
ZkRvY3VtZW50RGlkTG9hZCgpCiAgICAgaWYgKGhhbmRsZXNQYWdlU2NhbGVGYWN0b3IoKSkKICAg
ICAgICAgcGx1Z2luVmlldygpLT5zZXRQYWdlU2NhbGVGYWN0b3IoW21fcGRmTGF5ZXJDb250cm9s
bGVyLmdldCgpIHRpbGVTY2FsZUZhY3Rvcl0sIEludFBvaW50KCkpOwogCisgICAgbm90aWZ5U2Ny
b2xsUG9zaXRpb25DaGFuZ2VkKEludFBvaW50KFttX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKSBz
Y3JvbGxQb3NpdGlvbl0pKTsKKwogICAgIGNhbGN1bGF0ZVNpemVzKCk7CiAgICAgdXBkYXRlU2Ny
b2xsYmFycygpOwogCkBAIC0zMjksNiArMzA1LDkgQEAgdm9pZCBQREZQbHVnaW46OmRlc3Ryb3ko
KQogICAgICAgICAgICAgZnJhbWVWaWV3LT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKICAg
ICB9CiAKKyAgICBtX2FjdGl2ZUFubm90YXRpb24gPSAwOworICAgIG1fYW5ub3RhdGlvbkNvbnRh
aW5lciA9IDA7CisKICAgICBkZXN0cm95U2Nyb2xsYmFyKEhvcml6b250YWxTY3JvbGxiYXIpOwog
ICAgIGRlc3Ryb3lTY3JvbGxiYXIoVmVydGljYWxTY3JvbGxiYXIpOwogICAgIApAQCAtNDE0LDEx
ICszOTMsMTQgQEAgdm9pZCBQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNp
emUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmLCBjb24KICAgICAgICAgICAgIFttX3BkZkxh
eWVyQ29udHJvbGxlci5nZXQoKSBtYWduaWZ5V2l0aE1hZ25pZmljYXRpb246bWFnbmlmaWNhdGlv
biBhdFBvaW50Om1fbGFzdE1vdXNlUG9pbnQgaW1tZWRpYXRlbHk6WUVTXTsKICAgICB9CiAKLSAg
ICBbbV9jb250ZW50TGF5ZXIuZ2V0KCkgc2V0U3VibGF5ZXJUcmFuc2Zvcm06dHJhbnNmb3JtXTsK
LSAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwotCiAgICAgY2FsY3VsYXRlU2l6ZXMoKTsKICAg
ICB1cGRhdGVTY3JvbGxiYXJzKCk7CisKKyAgICBpZiAobV9hY3RpdmVBbm5vdGF0aW9uKQorICAg
ICAgICBtX2FjdGl2ZUFubm90YXRpb24tPnVwZGF0ZUdlb21ldHJ5KCk7CisKKyAgICBbbV9jb250
ZW50TGF5ZXIuZ2V0KCkgc2V0U3VibGF5ZXJUcmFuc2Zvcm06dHJhbnNmb3JtXTsKKyAgICBbQ0FU
cmFuc2FjdGlvbiBjb21taXRdOwogfQogICAgIAogc3RhdGljIE5TVUludGVnZXIgbW9kaWZpZXJG
bGFnc0Zyb21XZWJFdmVudChjb25zdCBXZWJFdmVudCYgZXZlbnQpCkBAIC01NzAsNyArNTUyLDE0
IEBAIGJvb2wgUERGUGx1Z2luOjppc0VkaXRpbmdDb21tYW5kRW5hYmxlZChjb25zdCBTdHJpbmcm
IGNvbW1hbmROYW1lKQogdm9pZCBQREZQbHVnaW46OnNldFNjcm9sbE9mZnNldChjb25zdCBJbnRQ
b2ludCYgb2Zmc2V0KQogewogICAgIFNpbXBsZVBERlBsdWdpbjo6c2V0U2Nyb2xsT2Zmc2V0KG9m
ZnNldCk7CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW21fcGRmTGF5ZXJDb250
cm9sbGVyLmdldCgpIHNldFNjcm9sbFBvc2l0aW9uOm9mZnNldF07CisKKyAgICBpZiAobV9hY3Rp
dmVBbm5vdGF0aW9uKQorICAgICAgICBtX2FjdGl2ZUFubm90YXRpb24tPnVwZGF0ZUdlb21ldHJ5
KCk7CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCiB2b2lkIFBERlBsdWdpbjo6
aW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCkBAIC01OTEsNiArNTgwLDIzIEBAIGJvb2wgUERGUGx1Z2luOjpoYW5kbGVzUGFn
ZVNjYWxlRmFjdG9yKCkKICAgICByZXR1cm4gd2ViRnJhbWUoKS0+aXNNYWluRnJhbWUoKTsKIH0K
IAordm9pZCBQREZQbHVnaW46OnNldEFjdGl2ZUFubm90YXRpb24oUERGQW5ub3RhdGlvbiAqYW5u
b3RhdGlvbikKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHN1cHBvcnQgZm9ybXMgZm9yIGlu
bGluZSBQREZzPyBTaW5jZSB3ZSB0b3VjaCB0aGUgZG9jdW1lbnQsIHRoaXMgbWlnaHQgYmUgZGlm
ZmljdWx0LgorICAgIGlmICghd2ViRnJhbWUoKS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKG1fYWN0aXZlQW5ub3RhdGlvbikKKyAgICAgICAgbV9hY3RpdmVBbm5v
dGF0aW9uLT5jb21taXQoKTsKKworICAgIGlmIChhbm5vdGF0aW9uKSB7CisgICAgICAgIG1fYWN0
aXZlQW5ub3RhdGlvbiA9IFBERlBsdWdpbkFubm90YXRpb246OmNyZWF0ZShhbm5vdGF0aW9uLCBt
X3BkZkxheWVyQ29udHJvbGxlci5nZXQoKSwgdGhpcyk7CisgICAgICAgIG1fYWN0aXZlQW5ub3Rh
dGlvbi0+YXR0YWNoKG1fYW5ub3RhdGlvbkNvbnRhaW5lci5nZXQoKSk7CisgICAgfQorICAgIGVs
c2UKKyAgICAgICAgbV9hY3RpdmVBbm5vdGF0aW9uID0gMDsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoUERGS0lUX1BMVUdJTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAzNDlhMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luQW5ub3RhdGlvbi5oCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQ
REZQbHVnaW5Bbm5vdGF0aW9uX2gKKyNkZWZpbmUgUERGUGx1Z2luQW5ub3RhdGlvbl9oCisKKyNp
ZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKKworI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRMaXN0ZW5l
ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEVsZW1l
bnQ7Cit9CisKK09CSkNfQ0xBU1MgUERGQW5ub3RhdGlvbjsKK09CSkNfQ0xBU1MgUERGTGF5ZXJD
b250cm9sbGVyOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUERGUGx1Z2luOworCitj
bGFzcyBQREZQbHVnaW5Bbm5vdGF0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UERGUGx1Z2luQW5u
b3RhdGlvbj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBERlBsdWdpbkFubm90
YXRpb24+IGNyZWF0ZShQREZBbm5vdGF0aW9uICosIFBERkxheWVyQ29udHJvbGxlciAqLCBQREZQ
bHVnaW4qKTsKKyAgICB2aXJ0dWFsIH5QREZQbHVnaW5Bbm5vdGF0aW9uKCk7CisKKyAgICBQYXNz
UmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGVsZW1lbnQoKSB7IHJldHVybiBtX2VsZW1lbnQ7IH0K
KyAgICBSZXRhaW5QdHI8UERGQW5ub3RhdGlvbj4gYW5ub3RhdGlvbigpIHsgcmV0dXJuIG1fYW5u
b3RhdGlvbjsgfQorICAgIFBERlBsdWdpbiogcGx1Z2luKCkgeyByZXR1cm4gbV9wbHVnaW47IH0K
KworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHZW9tZXRyeSgpOworICAgIHZpcnR1YWwgdm9pZCBj
b21taXQoKSA9IDA7CisKKyAgICB2b2lkIGF0dGFjaChXZWJDb3JlOjpFbGVtZW50Kik7CisKK3By
b3RlY3RlZDoKKyAgICBQREZQbHVnaW5Bbm5vdGF0aW9uKFBERkFubm90YXRpb24gKmFubm90YXRp
b24sIFBERkxheWVyQ29udHJvbGxlciAqcGRmTGF5ZXJDb250cm9sbGVyLCBQREZQbHVnaW4qIHBs
dWdpbikKKyAgICAgICAgOiBtX2Fubm90YXRpb24oYW5ub3RhdGlvbikKKyAgICAgICAgLCBtX2V2
ZW50TGlzdGVuZXIoUERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXI6OmNyZWF0ZSh0aGlz
KSkKKyAgICAgICAgLCBtX3BkZkxheWVyQ29udHJvbGxlcihwZGZMYXllckNvbnRyb2xsZXIpCisg
ICAgICAgICwgbV9wbHVnaW4ocGx1Z2luKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSA9IDA7
CisgICAgV2ViQ29yZTo6RWxlbWVudCogcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKwor
ICAgIFBERkxheWVyQ29udHJvbGxlciAqcGRmTGF5ZXJDb250cm9sbGVyKCkgeyByZXR1cm4gbV9w
ZGZMYXllckNvbnRyb2xsZXI7IH0KKworcHJpdmF0ZToKKyAgICAgY2xhc3MgUERGUGx1Z2luQW5u
b3RhdGlvbkV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lciB7Cisg
ICAgIHB1YmxpYzoKKyAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBERlBsdWdpbkFubm90YXRp
b25FdmVudExpc3RlbmVyPiBjcmVhdGUoUERGUGx1Z2luQW5ub3RhdGlvbiogYW5ub3RhdGlvbikK
KyAgICAgICAgIHsKKyAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBERlBsdWdpbkFu
bm90YXRpb25FdmVudExpc3RlbmVyKGFubm90YXRpb24pKTsKKyAgICAgICAgIH0KKworICAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBPVkVSUklE
RSB7IHJldHVybiB0aGlzID09ICZsaXN0ZW5lcjsgfQorICAgICAgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3JlOjpFdmVu
dCopIE9WRVJSSURFOworCisgICAgIHByaXZhdGU6CisKKyAgICAgICAgIFBERlBsdWdpbkFubm90
YXRpb25FdmVudExpc3RlbmVyKFBERlBsdWdpbkFubm90YXRpb24qIGFubm90YXRpb24pCisgICAg
ICAgICAgICAgOiBXZWJDb3JlOjpFdmVudExpc3RlbmVyKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXI6
OkNQUEV2ZW50TGlzdGVuZXJUeXBlKQorICAgICAgICAgICAgICwgbV9hbm5vdGF0aW9uKGFubm90
YXRpb24pCisgICAgICAgICB7CisKKyAgICAgICAgIH0KKworICAgICAgICAgUERGUGx1Z2luQW5u
b3RhdGlvbiogbV9hbm5vdGF0aW9uOworICAgICB9OworCisgICAgV2ViQ29yZTo6RWxlbWVudCog
bV9wYXJlbnQ7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gbV9lbGVtZW50OworICAg
IFJldGFpblB0cjxQREZBbm5vdGF0aW9uPiBtX2Fubm90YXRpb247CisKKyAgICBSZWZQdHI8UERG
UGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXI+IG1fZXZlbnRMaXN0ZW5lcjsKKworICAgIFBE
RkxheWVyQ29udHJvbGxlciAqbV9wZGZMYXllckNvbnRyb2xsZXI7CisgICAgUERGUGx1Z2luKiBt
X3BsdWdpbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KFBERktJVF9QTFVHSU4pCisKKyNlbmRpZiAvLyBQREZQbHVnaW5Bbm5vdGF0aW9uX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5u
b3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luQW5ub3RhdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWI1
YWI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQorCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIlBERlBsdWdpbkFubm90YXRpb24uaCIKKworI2ltcG9ydCAiUERGS2l0SW1wb3J0cy5oIgor
I2ltcG9ydCA8UERGS2l0L1BERktpdC5oPgorI2ltcG9ydCAiUERGUGx1Z2luLmgiCisjaW1wb3J0
ICJQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLmgiCisjaW1wb3J0ICJQREZQbHVnaW5UZXh0QW5u
b3RhdGlvbi5oIgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9DU1NQcmltaXRpdmVWYWx1ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9DU1NQcm9wZXJ0eU5hbWVz
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hU
TUxJbnB1dEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0hUTUxPcHRpb25FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxTZWxl
Y3RFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxUZXh0QXJlYUVsZW1lbnQuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvUGFnZS5oPgorCisjaW1wb3J0ICJQREZMYXllckNvbnRyb2xsZXJEZXRh
aWxzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKworUGFzc1JlZlB0cjxQREZQbHVnaW5Bbm5v
dGF0aW9uPiBQREZQbHVnaW5Bbm5vdGF0aW9uOjpjcmVhdGUoUERGQW5ub3RhdGlvbiAqYW5ub3Rh
dGlvbiwgUERGTGF5ZXJDb250cm9sbGVyICpwZGZMYXllckNvbnRyb2xsZXIsIFBERlBsdWdpbiog
cGx1Z2luKQoreworICAgIGlmIChbYW5ub3RhdGlvbiBpc0tpbmRPZkNsYXNzOnBkZkFubm90YXRp
b25UZXh0V2lkZ2V0Q2xhc3MoKV0pCisgICAgICAgIHJldHVybiBQREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbjo6Y3JlYXRlKGFubm90YXRpb24sIHBkZkxheWVyQ29udHJvbGxlciwgcGx1Z2luKTsKKyAg
ICBlbHNlIGlmIChbYW5ub3RhdGlvbiBpc0tpbmRPZkNsYXNzOnBkZkFubm90YXRpb25DaG9pY2VX
aWRnZXRDbGFzcygpXSkKKyAgICAgICAgcmV0dXJuIFBERlBsdWdpbkNob2ljZUFubm90YXRpb246
OmNyZWF0ZShhbm5vdGF0aW9uLCBwZGZMYXllckNvbnRyb2xsZXIsIHBsdWdpbik7CisKKyAgICBy
ZXR1cm4gMDsKK30KKwordm9pZCBQREZQbHVnaW5Bbm5vdGF0aW9uOjphdHRhY2goRWxlbWVudCog
cGFyZW50KQoreworICAgIEFTU0VSVCghbV9wYXJlbnQpOworCisgICAgbV9wYXJlbnQgPSBwYXJl
bnQ7CisgICAgbV9lbGVtZW50ID0gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKTsKKworICAgIFN0
eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4o
bV9lbGVtZW50LmdldCgpKTsKKyAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5UG9zaXRpb24sICJhYnNvbHV0ZSIpOworICAgIHN0eWxlZEVsZW1lbnQt
PnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzLCAiYXV0byIp
OworICAgIHN0eWxlZEVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIG1fZXZlbnRM
aXN0ZW5lciwgZmFsc2UpOworICAgIHN0eWxlZEVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoImJs
dXIiLCBtX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKKworICAgIHVwZGF0ZUdlb21ldHJ5KCk7CisK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBtX3BhcmVudC0+YXBwZW5kQ2hpbGQoc3R5
bGVkRWxlbWVudCwgZWMpOworCisgICAgLy8gRklYTUU6IFRoZSB0ZXh0IGN1cnNvciBkb2Vzbid0
IGJsaW5rIGFmdGVyIHRoaXMuIFdoeT8KKyAgICBzdHlsZWRFbGVtZW50LT5mb2N1cygpOworfQor
CitQREZQbHVnaW5Bbm5vdGF0aW9uOjp+UERGUGx1Z2luQW5ub3RhdGlvbigpCit7CisgICAgU3R5
bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPiht
X2VsZW1lbnQuZ2V0KCkpOworICAgIHN0eWxlZEVsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIo
ImNoYW5nZSIsIG1fZXZlbnRMaXN0ZW5lci5nZXQoKSwgZmFsc2UpOworICAgIHN0eWxlZEVsZW1l
bnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLCBtX2V2ZW50TGlzdGVuZXIuZ2V0KCksIGZh
bHNlKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIG1fcGFyZW50LT5yZW1vdmVD
aGlsZChzdHlsZWRFbGVtZW50LCBlYyk7Cit9CisKK3ZvaWQgUERGUGx1Z2luQW5ub3RhdGlvbjo6
dXBkYXRlR2VvbWV0cnkoKQoreworICAgIEludFNpemUgZG9jdW1lbnRTaXplKFttX3BkZkxheWVy
Q29udHJvbGxlciBjb250ZW50U2l6ZVJlc3BlY3Rpbmdab29tXSk7CisgICAgSW50UG9pbnQgc2Ny
b2xsUG9zaXRpb24oW21fcGRmTGF5ZXJDb250cm9sbGVyIHNjcm9sbFBvc2l0aW9uXSk7CisgICAg
TlNSZWN0IGFubm90YXRpb25SZWN0ID0gW21fcGRmTGF5ZXJDb250cm9sbGVyIGJvdW5kc0ZvckFu
bm90YXRpb246bV9hbm5vdGF0aW9uLmdldCgpXTsKKworICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxl
ZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4obV9lbGVtZW50LmdldCgpKTsK
KyAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lk
dGgsIGFubm90YXRpb25SZWN0LnNpemUud2lkdGgsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgp
OworICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlI
ZWlnaHQsIGFubm90YXRpb25SZWN0LnNpemUuaGVpZ2h0LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BYKTsKKyAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5TGVmdCwgYW5ub3RhdGlvblJlY3Qub3JpZ2luLnggLSBzY3JvbGxQb3NpdGlvbi54KCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIGRvY3VtZW50U2l6ZS5oZWlnaHQoKSAtIGFubm90
YXRpb25SZWN0Lm9yaWdpbi55IC0gYW5ub3RhdGlvblJlY3Quc2l6ZS5oZWlnaHQgLSBzY3JvbGxQ
b3NpdGlvbi55KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworfQorCit2b2lkIFBERlBs
dWdpbkFubm90YXRpb246OlBERlBsdWdpbkFubm90YXRpb25FdmVudExpc3RlbmVyOjpoYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQpCisgICAgICAgIG1fYW5ub3RhdGlvbi0+cGx1Z2lu
KCktPnNldEFjdGl2ZUFubm90YXRpb24oMCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKFBERktJVF9QTFVHSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5u
b3RhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NTk5ODcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbkNob2ljZUFubm90YXRpb24uaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uX2gKKyNkZWZpbmUgUERGUGx1Z2luQ2hv
aWNlQW5ub3RhdGlvbl9oCisKKyNpZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKKworI2luY2x1ZGUg
IlBERlBsdWdpbkFubm90YXRpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRWxl
bWVudDsKK30KKworT0JKQ19DTEFTUyBQREZBbm5vdGF0aW9uQ2hvaWNlV2lkZ2V0OworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbiA6IHB1Ymxp
YyBQREZQbHVnaW5Bbm5vdGF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
REZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uPiBjcmVhdGUoUERGQW5ub3RhdGlvbiAqLCBQREZMYXll
ckNvbnRyb2xsZXIgKiwgUERGUGx1Z2luKik7CisgICAgdmlydHVhbCB+UERGUGx1Z2luQ2hvaWNl
QW5ub3RhdGlvbigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5KCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdCgpIE9WRVJSSURFOworCitwcml2YXRlOgor
ICAgIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24oUERGQW5ub3RhdGlvbiAqYW5ub3RhdGlvbiwg
UERGTGF5ZXJDb250cm9sbGVyICpwZGZMYXllckNvbnRyb2xsZXIsIFBERlBsdWdpbiogcGx1Z2lu
KQorICAgICAgICA6IFBERlBsdWdpbkFubm90YXRpb24oYW5ub3RhdGlvbiwgcGRmTGF5ZXJDb250
cm9sbGVyLCBwbHVnaW4pCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpIE9WRVJSSURFOworCisg
ICAgUERGQW5ub3RhdGlvbkNob2ljZVdpZGdldCAqY2hvaWNlQW5ub3RhdGlvbigpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PFBERkFubm90YXRpb25DaG9pY2VXaWRnZXQgKj4oYW5ub3RhdGlvbigpLmdl
dCgpKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
UERGS0lUX1BMVUdJTikKKworI2VuZGlmIC8vIFBERlBsdWdpbkNob2ljZUFubm90YXRpb25faApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW5DaG9pY2VBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmZjMDgyNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KQEAgLTAs
MCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5oIgor
CisjaW1wb3J0ICJQREZLaXRJbXBvcnRzLmgiCisjaW1wb3J0IDxQREZLaXQvUERGS2l0Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NTU1ByaW1pdGl2
ZVZhbHVlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvSFRNTEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0hUTUxPcHRpb25FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hU
TUxTZWxlY3RFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KKworI2ltcG9ydCAi
UERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK1Bh
c3NSZWZQdHI8UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbj4gUERGUGx1Z2luQ2hvaWNlQW5ub3Rh
dGlvbjo6Y3JlYXRlKFBERkFubm90YXRpb24gKmFubm90YXRpb24sIFBERkxheWVyQ29udHJvbGxl
ciAqcGRmTGF5ZXJDb250cm9sbGVyLCBQREZQbHVnaW4qIHBsdWdpbikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBERlBsdWdpbkNob2ljZUFubm90YXRpb24oYW5ub3RhdGlvbiwgcGRmTGF5
ZXJDb250cm9sbGVyLCBwbHVnaW4pKTsKK30KKwordm9pZCBQREZQbHVnaW5DaG9pY2VBbm5vdGF0
aW9uOjp1cGRhdGVHZW9tZXRyeSgpCit7CisgICAgUERGUGx1Z2luQW5ub3RhdGlvbjo6dXBkYXRl
R2VvbWV0cnkoKTsKKworICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCgpLmdldCgpKTsKKyAgICBzdHlsZWRFbGVtZW50
LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIFtbY2hvaWNlQW5u
b3RhdGlvbigpIGZvbnRdIHBvaW50U2l6ZV0gKiBbcGRmTGF5ZXJDb250cm9sbGVyKCkgdGlsZVNj
YWxlRmFjdG9yXSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Cit9CisKK3ZvaWQgUERGUGx1
Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y29tbWl0KCkKK3sKKyAgICBbY2hvaWNlQW5ub3RhdGlvbigp
IHNldFN0cmluZ1ZhbHVlOnN0YXRpY19jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4oZWxlbWVudCgp
LmdldCgpKS0+dmFsdWUoKV07Cit9CisKK1Bhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luQ2hv
aWNlQW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQoreworICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IHBhcmVudCgpLT5vd25lckRvY3VtZW50KCk7CisgICAgUERGQW5ub3RhdGlv
bkNob2ljZVdpZGdldCAqY2hvaWNlQW5ub3RhdGlvbiA9IHRoaXMtPmNob2ljZUFubm90YXRpb24o
KTsKKworICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1l
bnQoc2VsZWN0VGFnLCBmYWxzZSk7CisKKyAgICBTdHlsZWRFbGVtZW50KiBzdHlsZWRFbGVtZW50
ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpOworCisgICAgc3R5
bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBjb2xv
ckZyb21OU0NvbG9yKFtjaG9pY2VBbm5vdGF0aW9uIGZvbnRDb2xvcl0pLnNlcmlhbGl6ZWQoKSk7
CisgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRGYW1pbHksIFtbY2hvaWNlQW5ub3RhdGlvbiBmb250XSBmYW1pbHlOYW1lXSk7CisKKyAgICBO
U0FycmF5ICpjaG9pY2VzID0gW2Nob2ljZUFubm90YXRpb24gY2hvaWNlc107CisgICAgU3RyaW5n
IHNlbGVjdGVkQ2hvaWNlID0gW2Nob2ljZUFubm90YXRpb24gc3RyaW5nVmFsdWVdOworICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworCisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwLCBjb3VudCA9
IGNob2ljZXMuY291bnQ7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIFJlZlB0cjxFbGVtZW50
PiBjaG9pY2VPcHRpb24gPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChvcHRpb25UYWcsIGZhbHNl
KTsKKyAgICAgICAgU3RyaW5nIGNob2ljZSA9IFtjaG9pY2VzIG9iamVjdEF0SW5kZXg6aV07Cisg
ICAgICAgIGNob2ljZU9wdGlvbi0+c2V0QXR0cmlidXRlKHZhbHVlQXR0ciwgY2hvaWNlKTsKKyAg
ICAgICAgY2hvaWNlT3B0aW9uLT5zZXRUZXh0Q29udGVudChjaG9pY2UsIGVjKTsKKworICAgICAg
ICBpZiAoY2hvaWNlID09IHNlbGVjdGVkQ2hvaWNlKQorICAgICAgICAgICAgY2hvaWNlT3B0aW9u
LT5zZXRBdHRyaWJ1dGUoc2VsZWN0ZWRBdHRyLCAic2VsZWN0ZWQiKTsKKworICAgICAgICBzdHls
ZWRFbGVtZW50LT5hcHBlbmRDaGlsZChjaG9pY2VPcHRpb24sIGVjKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZWxlbWVudDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoUERGS0lUX1BMVUdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2NlMjgwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbi5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBERlBsdWdpblRl
eHRBbm5vdGF0aW9uX2gKKyNkZWZpbmUgUERGUGx1Z2luVGV4dEFubm90YXRpb25faAorCisjaWYg
RU5BQkxFKFBERktJVF9QTFVHSU4pCisKKyNpbmNsdWRlICJQREZQbHVnaW5Bbm5vdGF0aW9uLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEVsZW1lbnQ7Cit9CisKK09CSkNfQ0xBU1Mg
UERGQW5ub3RhdGlvblRleHRXaWRnZXQ7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQ
REZQbHVnaW5UZXh0QW5ub3RhdGlvbiA6IHB1YmxpYyBQREZQbHVnaW5Bbm5vdGF0aW9uIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQREZQbHVnaW5UZXh0QW5ub3RhdGlvbj4gY3Jl
YXRlKFBERkFubm90YXRpb24gKiwgUERGTGF5ZXJDb250cm9sbGVyICosIFBERlBsdWdpbiopOwor
ICAgIHZpcnR1YWwgflBERlBsdWdpblRleHRBbm5vdGF0aW9uKCkgeyB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlR2VvbWV0cnkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0
KCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgUERGUGx1Z2luVGV4dEFubm90YXRpb24oUERG
QW5ub3RhdGlvbiAqYW5ub3RhdGlvbiwgUERGTGF5ZXJDb250cm9sbGVyICpwZGZMYXllckNvbnRy
b2xsZXIsIFBERlBsdWdpbiogcGx1Z2luKQorICAgICAgICA6IFBERlBsdWdpbkFubm90YXRpb24o
YW5ub3RhdGlvbiwgcGRmTGF5ZXJDb250cm9sbGVyLCBwbHVnaW4pCisgICAgeworICAgIH0KKwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9u
RWxlbWVudCgpIE9WRVJSSURFOworCisgICAgUERGQW5ub3RhdGlvblRleHRXaWRnZXQgKiB0ZXh0
QW5ub3RhdGlvbigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFBERkFubm90YXRpb25UZXh0V2lkZ2V0
ICo+KGFubm90YXRpb24oKS5nZXQoKSk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKFBERktJVF9QTFVHSU4pCisKKyNlbmRpZiAvLyBQREZQbHVnaW5U
ZXh0QW5ub3RhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDFlMDBiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlv
bi5tbQpAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoUERGS0lUX1BM
VUdJTikKKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbi5oIgorCisjaW1wb3J0ICJQREZLaXRJbXBvcnRzLmgiCisjaW1wb3J0IDxQREZLaXQvUERG
S2l0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NT
U1ByaW1pdGl2ZVZhbHVlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTElu
cHV0RWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvSFRNTFRleHRBcmVhRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisK
KyNpbXBvcnQgIlBERkxheWVyQ29udHJvbGxlckRldGFpbHMuaCIKKworQGludGVyZmFjZSBQREZB
bm5vdGF0aW9uVGV4dFdpZGdldCAoRGV0YWlscykKKy0gKEJPT0wpaXNNdWx0aWxpbmU7CitAZW5k
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKworc3RhdGljIGNvbnN0IFN0cmluZyBjc3NBbGlnbm1l
bnRWYWx1ZUZvck5TVGV4dEFsaWdubWVudChOU1RleHRBbGlnbm1lbnQgYWxpZ25tZW50KQorewor
ICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7CisgICAgY2FzZSBOU0xlZnRUZXh0QWxpZ25tZW50Ogor
ICAgICAgICByZXR1cm4gImxlZnQiOworICAgIGNhc2UgTlNSaWdodFRleHRBbGlnbm1lbnQ6Cisg
ICAgICAgIHJldHVybiAicmlnaHQiOworICAgIGNhc2UgTlNDZW50ZXJUZXh0QWxpZ25tZW50Ogor
ICAgICAgICByZXR1cm4gImNlbnRlciI7CisgICAgY2FzZSBOU0p1c3RpZmllZFRleHRBbGlnbm1l
bnQ6CisgICAgICAgIHJldHVybiAianVzdGZ5IjsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gImluaGVyaXQiOworICAgIH0KK30KKworUGFzc1JlZlB0cjxQREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbj4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZShQREZBbm5vdGF0aW9uICphbm5v
dGF0aW9uLCBQREZMYXllckNvbnRyb2xsZXIgKnBkZkxheWVyQ29udHJvbGxlciwgUERGUGx1Z2lu
KiBwbHVnaW4pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbihhbm5vdGF0aW9uLCBwZGZMYXllckNvbnRyb2xsZXIsIHBsdWdpbikpOworfQorCitQYXNz
UmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9u
RWxlbWVudCgpCit7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7CisKKyAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBwYXJlbnQoKS0+b3duZXJEb2N1bWVudCgpOworICAgIFBERkFubm90YXRp
b25UZXh0V2lkZ2V0ICp0ZXh0QW5ub3RhdGlvbiA9IHRoaXMtPnRleHRBbm5vdGF0aW9uKCk7Cisg
ICAgYm9vbCBpc011bHRpbGluZSA9IFt0ZXh0QW5ub3RhdGlvbiBpc011bHRpbGluZV07CisKKyAg
ICBpZiAoaXNNdWx0aWxpbmUpCisgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRWxl
bWVudCh0ZXh0YXJlYVRhZywgZmFsc2UpOworICAgIGVsc2UKKyAgICAgICAgZWxlbWVudCA9IGRv
Y3VtZW50LT5jcmVhdGVFbGVtZW50KGlucHV0VGFnLCBmYWxzZSk7CisKKyAgICBTdHlsZWRFbGVt
ZW50KiBzdHlsZWRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQu
Z2V0KCkpOworICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlDb2xvciwgY29sb3JGcm9tTlNDb2xvcihbdGV4dEFubm90YXRpb24gZm9udENvbG9yXSku
c2VyaWFsaXplZCgpKTsKKyAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgW1t0ZXh0QW5ub3RhdGlvbiBmb250XSBmYW1pbHlOYW1l
XSk7CisgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eVRleHRBbGlnbiwgY3NzQWxpZ25tZW50VmFsdWVGb3JOU1RleHRBbGlnbm1lbnQoW3RleHRBbm5v
dGF0aW9uIGFsaWdubWVudF0pKTsKKworICAgIGlmIChpc011bHRpbGluZSkKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KHN0eWxlZEVsZW1lbnQpLT5zZXRWYWx1ZShb
dGV4dEFubm90YXRpb24gc3RyaW5nVmFsdWVdKTsKKyAgICBlbHNlCisgICAgICAgIHN0YXRpY19j
YXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzdHlsZWRFbGVtZW50KS0+c2V0VmFsdWUoW3RleHRBbm5v
dGF0aW9uIHN0cmluZ1ZhbHVlXSk7CisKKyAgICByZXR1cm4gZWxlbWVudDsKK30KKwordm9pZCBQ
REZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6dXBkYXRlR2VvbWV0cnkoKQoreworICAgIFBERlBsdWdp
bkFubm90YXRpb246OnVwZGF0ZUdlb21ldHJ5KCk7CisKKyAgICBTdHlsZWRFbGVtZW50KiBzdHls
ZWRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQoKS5nZXQoKSk7
CisgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRTaXplLCBbW3RleHRBbm5vdGF0aW9uKCkgZm9udF0gcG9pbnRTaXplXSAqIFtwZGZMYXllckNv
bnRyb2xsZXIoKSB0aWxlU2NhbGVGYWN0b3JdLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsK
K30KKwordm9pZCBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y29tbWl0KCkKK3sKKyAgICBQREZB
bm5vdGF0aW9uVGV4dFdpZGdldCAqdGV4dEFubm90YXRpb24gPSB0aGlzLT50ZXh0QW5ub3RhdGlv
bigpOworCisgICAgaWYgKFt0ZXh0QW5ub3RhdGlvbiBpc011bHRpbGluZV0pCisgICAgICAgIFt0
ZXh0QW5ub3RhdGlvbiBzZXRTdHJpbmdWYWx1ZTpzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVt
ZW50Kj4oZWxlbWVudCgpLmdldCgpKS0+dmFsdWUoKV07CisgICAgZWxzZQorICAgICAgICBbdGV4
dEFubm90YXRpb24gc2V0U3RyaW5nVmFsdWU6c3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+
KGVsZW1lbnQoKS5nZXQoKSktPnZhbHVlKCldOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShQREZLSVRfUExVR0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDFhZmUzZTMuLmI0ZjYwYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTYzMCw2
ICs2MzAsMjAgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gV2ViUGFnZTo6dHJhY2tlZFJl
cGFpbnRSZWN0cygpCiAgICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9wdCh2ZWN0b3IpOwog
fQogCitzdGF0aWMgUGx1Z2luVmlldyogZm9jdXNlZFBsdWdpblZpZXdGb3JGcmFtZShGcmFtZSog
ZnJhbWUpCit7CisgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFBsdWdpbkRvY3VtZW50KiBwbHVnaW5Eb2N1bWVu
dCA9IHN0YXRpY19jYXN0PFBsdWdpbkRvY3VtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpOworCisg
ICAgaWYgKHBsdWdpbkRvY3VtZW50LT5mb2N1c2VkTm9kZSgpICE9IHBsdWdpbkRvY3VtZW50LT5w
bHVnaW5Ob2RlKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUGx1Z2luVmlldyogcGx1Z2lu
VmlldyA9IHN0YXRpY19jYXN0PFBsdWdpblZpZXcqPihwbHVnaW5Eb2N1bWVudC0+cGx1Z2luV2lk
Z2V0KCkpOworICAgIHJldHVybiBwbHVnaW5WaWV3OworfQorCiBzdGF0aWMgUGx1Z2luVmlldyog
cGx1Z2luVmlld0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lLT5kb2N1
bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkpCkBAIC02NDYsNyArNjYwLDcgQEAgdm9pZCBXZWJQ
YWdlOjpleGVjdXRlRWRpdGluZ0NvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29u
c3QgU3RyaW5nJiBhcmcKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZShmcmFtZSkpIHsK
KyAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IGZvY3VzZWRQbHVnaW5WaWV3Rm9yRnJh
bWUoZnJhbWUpKSB7CiAgICAgICAgIHBsdWdpblZpZXctPmhhbmRsZUVkaXRpbmdDb21tYW5kKGNv
bW1hbmROYW1lLCBhcmd1bWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02NjAsNyAr
Njc0LDcgQEAgYm9vbCBXZWJQYWdlOjppc0VkaXRpbmdDb21tYW5kRW5hYmxlZChjb25zdCBTdHJp
bmcmIGNvbW1hbmROYW1lKQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmIChQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZy
YW1lKSkKKyAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IGZvY3VzZWRQbHVnaW5WaWV3
Rm9yRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm4gcGx1Z2luVmlldy0+aXNFZGl0aW5nQ29t
bWFuZEVuYWJsZWQoY29tbWFuZE5hbWUpOwogICAgIAogICAgIEVkaXRvcjo6Q29tbWFuZCBjb21t
YW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKTsKQEAgLTE1NzIsNyAr
MTU4Niw3IEBAIHZvaWQgV2ViUGFnZTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29t
bWFuZE5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgaW50MzJfdCBzdGF0ZSA9IDA7CiAg
ICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCk7CiAgICAgaWYgKGZyYW1lKSB7Ci0gICAgICAgIGlmIChQbHVnaW5WaWV3KiBwbHVn
aW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgaWYgKFBsdWdpblZp
ZXcqIHBsdWdpblZpZXcgPSBmb2N1c2VkUGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lKSkKICAgICAg
ICAgICAgIGlzRW5hYmxlZCA9IHBsdWdpblZpZXctPmlzRWRpdGluZ0NvbW1hbmRFbmFibGVkKGNv
bW1hbmROYW1lKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQg
Y29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170273</attachid>
            <date>2012-10-23 17:17:05 -0700</date>
            <delta_ts>2012-10-24 13:54:55 -0700</delta_ts>
            <desc>rebase patch</desc>
            <filename>forms2.diff</filename>
            <type>text/plain</type>
            <size>65962</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZDBjMzk3Li5kM2ZjOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTItMTAtMjMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgRnVsbC1wYWdlIFBERlBsdWdpbiBzaG91bGQgc3VwcG9ydCBpbmxpbmUgZm9ybSBl
ZGl0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDAxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgZm9ybSBjb250cm9scyBjb3JyZXNwb25kaW5nIHRvIFRleHQgYW5kIENob2ljZSBQREYgYW5u
b3RhdGlvbnMsCisgICAgICAgIGFsbG93aW5nIGZvciBzaW5nbGUtIGFuZCBtdWx0aS1saW5lIHRl
eHQgaW5wdXQsIGFuZCA8b3B0aW9uPi1saWtlIGlucHV0LgorCisgICAgICAgIEN1cnJlbnRseSwg
Zm9ybXMgYXJlIG9ubHkgaW1wbGVtZW50ZWQgZm9yIGZ1bGwtcGFnZSBQREYgZG9jdW1lbnRzLgor
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9zZSBhIHZhcmlldHkgb2YgYWRkaXRpb25h
bCBXZWJDb3JlIGZ1bmN0aW9uYWxpdHkgdG8gV2ViS2l0Mi4KKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEV4cG9zZSBzb21lIG1vcmUgV2ViQ29yZSBoZWFkZXJz
IGFzIHByaXZhdGUgaGVhZGVycyBmb3IgdXNlIGluIFdlYktpdDIuCisKIDIwMTItMTAtMjMgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJLaXQyIEFQSV0gQWRk
IHByb3BlcnRpZXMgdG8gZ2V0IHRleHRSZWN0cyBmcm9tIGEgV0tET01SYW5nZSBvciBXS0RPTU5v
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggOThiYjQ4ZC4uMjY3NDM0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTIxNCw2ICsyMTQsOCBAQCBfX1pON1dlYkNvcmUxM0FYT2JqZWN0Q2FjaGUy
MWdBY2Nlc3NpYmlsaXR5RW5hYmxlZEUKIF9fWk43V2ViQ29yZTEzQVhPYmplY3RDYWNoZTIzZm9j
dXNlZFVJRWxlbWVudEZvclBhZ2VFUEtOU180UGFnZUUKIF9fWk43V2ViQ29yZTEzQVhPYmplY3RD
YWNoZTQyZ0FjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkRQogX19aTjdX
ZWJDb3JlMTNDaGFyYWN0ZXJEYXRhN3NldERhdGFFUktOM1dURjZTdHJpbmdFUmkKK19fWk43V2Vi
Q29yZTEzQ29udGFpbmVyTm9kZTExYXBwZW5kQ2hpbGRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5v
ZGVFRUVSaWIKK19fWk43V2ViQ29yZTEzQ29udGFpbmVyTm9kZTExcmVtb3ZlQ2hpbGRFUE5TXzRO
b2RlRVJpCiBfX1pON1dlYkNvcmUxM0hUVFBIZWFkZXJNYXBDMUV2CiBfX1pON1dlYkNvcmUxM0hU
VFBIZWFkZXJNYXBEMUV2CiBfX1pON1dlYkNvcmUxM0hpdFRlc3RSZXN1bHRDMUVSS1MwXwpAQCAt
MjI1LDYgKzIyNyw4IEBAIF9fWk43V2ViQ29yZTEzS2V5Ym9hcmRFdmVudEMxRVJLTjNXVEYxMkF0
b21pY1N0cmluZ0ViYlBOU185RE9NV2luZG93RVJLTlMxXzZTdHJpCiBfX1pON1dlYkNvcmUxM0tl
eWJvYXJkRXZlbnRDMUVSS05TXzIxUGxhdGZvcm1LZXlib2FyZEV2ZW50RVBOU185RE9NV2luZG93
RQogX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVycm9yQzFFUDdOU0Vycm9yCiBfX1pON1dlYkNvcmUx
M1Jlc291cmNlRXJyb3JDMUVQOV9fQ0ZFcnJvcgorX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50
MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5TXzEzQ1NTUHJvcGVydHlJREVSS04zV1RGNlN0cmlu
Z0ViCitfX1pON1dlYkNvcmUxM1N0eWxlZEVsZW1lbnQyMnNldElubGluZVN0eWxlUHJvcGVydHlF
TlNfMTNDU1NQcm9wZXJ0eUlERWROU18xN0NTU1ByaW1pdGl2ZVZhbHVlOVVuaXRUeXBlc0ViCiBf
X1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxM2RpcmVjdG9yeU5hbWVFUktOM1dU
RjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxM3RvSFRNTEVsZW1lbnRFUE5TXzIxRm9ybUFzc29jaWF0
ZWRFbGVtZW50RQpAQCAtMjYzLDYgKzI2Nyw3IEBAIF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rp
b241Y2xlYXJFdgogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjZtb2RpZnlFTlMwXzExRUFs
dGVyYXRpb25FTlNfMThTZWxlY3Rpb25EaXJlY3Rpb25FTlNfMTVUZXh0R3JhbnVsYXJpdHlFTlNf
MTRFVXNlclRyaWdnZXJlZEUKIF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb245c2VsZWN0QWxs
RXYKIF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb25DMUVQTlNfNUZyYW1lRQorX19aTjdXZWJD
b3JlMTRQbHVnaW5Eb2N1bWVudDEwcGx1Z2luTm9kZUV2CiBfX1pON1dlYkNvcmUxNFBsdWdpbkRv
Y3VtZW50MTJwbHVnaW5XaWRnZXRFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlcjEyY3Jl
YXRlTlNEYXRhRXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXJEMUV2CkBAIC00MDksNiAr
NDE0LDcgQEAgX19aTjdXZWJDb3JlMTZEZXZpY2VNb3Rpb25EYXRhMTJSb3RhdGlvblJhdGU2Y3Jl
YXRlRWJkYmRiZAogX19aTjdXZWJDb3JlMTZEZXZpY2VNb3Rpb25EYXRhNmNyZWF0ZUVOM1dURjEw
UGFzc1JlZlB0cklOUzBfMTJBY2NlbGVyYXRpb25FRUVTNF9OUzJfSU5TMF8xMlJvdGF0aW9uUmF0
ZUVFRWJkCiBfX1pON1dlYkNvcmUxNkZvbnRGYWxsYmFja0xpc3QxNXJlbGVhc2VGb250RGF0YUV2
CiBfX1pON1dlYkNvcmUxNkZvbnRQbGF0Zm9ybURhdGFEMUV2CitfX1pON1dlYkNvcmUxNkhUTUxJ
bnB1dEVsZW1lbnQ4c2V0VmFsdWVFUktOM1dURjZTdHJpbmdFTlNfMjJUZXh0RmllbGRFdmVudEJl
aGF2aW9yRQogX19aTjdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50MTNzZXRBdXRvZmlsbGVkRWIK
IF9fWk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDE1c2V0RWRpdGluZ1ZhbHVlRVJLTjNXVEY2
U3RyaW5nRQogX19aTjdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50MTVzZXRWYWx1ZUZvclVzZXJF
UktOM1dURjZTdHJpbmdFCkBAIC01MjIsNiArNTI4LDcgQEAgX19aTjdXZWJDb3JlMTlMYXllckZs
dXNoU2NoZWR1bGVyN3N1c3BlbmRFdgogX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVy
OHNjaGVkdWxlRXYKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlckMxRVBOU18yNUxh
eWVyRmx1c2hTY2hlZHVsZXJDbGllbnRFCiBfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVs
ZXJEMUV2CitfX1pON1dlYkNvcmUxOUhUTUxUZXh0QXJlYUVsZW1lbnQ4c2V0VmFsdWVFUktOM1dU
RjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxMXNldEhUVFBCb2R5
RU4zV1RGMTBQYXNzUmVmUHRySU5TXzhGb3JtRGF0YUVFRQogX19aTjdXZWJDb3JlMTlSZXNvdXJj
ZVJlcXVlc3RCYXNlMTNzZXRIVFRQTWV0aG9kRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
MTlSZXNvdXJjZVJlcXVlc3RCYXNlMThzZXRIVFRQSGVhZGVyRmllbGRFUEtjUktOM1dURjZTdHJp
bmdFCkBAIC02NzcsNiArNjg0LDcgQEAgX19aTjdXZWJDb3JlNE5vZGUxMHJlbmRlclJlY3RFUGIK
IF9fWk43V2ViQ29yZTROb2RlMTFhcHBlbmRDaGlsZEVOM1dURjEwUGFzc1JlZlB0cklTMF9FRVJp
YgogX19aTjdXZWJDb3JlNE5vZGUxMXJlbW92ZUNoaWxkRVBTMF9SaQogX19aTjdXZWJDb3JlNE5v
ZGUxNHJlbW92ZWRMYXN0UmVmRXYKK19fWk43V2ViQ29yZTROb2RlMTRzZXRUZXh0Q29udGVudEVS
S04zV1RGNlN0cmluZ0VSaQogX19aTjdXZWJDb3JlNE5vZGUxN3N0b3BJZ25vcmluZ0xlYWtzRXYK
IF9fWk43V2ViQ29yZTROb2RlMThzdGFydElnbm9yaW5nTGVha3NFdgogX19aTjdXZWJDb3JlNE5v
ZGUxOXNldE5lZWRzU3R5bGVSZWNhbGNFTlNfMTVTdHlsZUNoYW5nZVR5cGVFCkBAIC04MjcsNiAr
ODM1LDcgQEAgX19aTjdXZWJDb3JlNnRvTm9kZUVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3Jl
N0NvbnNvbGUyMXNob3VsZFByaW50RXhjZXB0aW9uc0V2CiBfX1pON1dlYkNvcmU3Q29uc29sZTI0
c2V0U2hvdWxkUHJpbnRFeGNlcHRpb25zRWIKIF9fWk43V2ViQ29yZTdFbGVtZW50MTJzZXRBdHRy
aWJ1dGVFUktOM1dURjEyQXRvbWljU3RyaW5nRVM0X1JpCitfX1pON1dlYkNvcmU3RWxlbWVudDEy
c2V0QXR0cmlidXRlRVJLTlNfMTNRdWFsaWZpZWROYW1lRVJLTjNXVEYxMkF0b21pY1N0cmluZ0UK
IF9fWk43V2ViQ29yZTdFbGVtZW50MTdzZXRTaGFkb3dQc2V1ZG9JZEVSS04zV1RGMTJBdG9taWNT
dHJpbmdFUmkKIF9fWk43V2ViQ29yZTdFbGVtZW50MjFib3VuZHNJblJvb3RWaWV3U3BhY2VFdgog
X19aTjdXZWJDb3JlN0VsZW1lbnQ5aW5uZXJUZXh0RXYKQEAgLTg1OSw2ICs4NjgsNyBAQCBfX1pO
N1dlYkNvcmU3dG9SYW5nZUVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlOENTU1ZhbHVlN2Rl
c3Ryb3lFdgogX19aTjdXZWJDb3JlOERvY3VtZW50MTFjcmVhdGVSYW5nZUV2CiBfX1pON1dlYkNv
cmU4RG9jdW1lbnQxMnVwZGF0ZUxheW91dEV2CitfX1pON1dlYkNvcmU4RG9jdW1lbnQxM2NyZWF0
ZUVsZW1lbnRFUktOU18xM1F1YWxpZmllZE5hbWVFYgogX19aTjdXZWJDb3JlOERvY3VtZW50MTRj
cmVhdGVUZXh0Tm9kZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZThEb2N1bWVudDE0c2V0
Rm9jdXNlZE5vZGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUUKIF9fWk43V2ViQ29yZThE
b2N1bWVudDE2aXNQYWdlQm94VmlzaWJsZUVpCkBAIC0xMDQ4LDcgKzEwNTgsMTIgQEAgX19aTjdX
ZWJDb3JlOUhUTUxOYW1lczh2aWRlb1RhZ0UKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXM5YXBwbGV0
VGFnRQogX19aTjdXZWJDb3JlOUhUTUxOYW1lczlpZnJhbWVUYWdFCiBfX1pON1dlYkNvcmU5SFRN
TE5hbWVzOW9iamVjdFRhZ0UKK19fWk43V2ViQ29yZTlIVE1MTmFtZXM5b3B0aW9uVGFnRQogX19a
TjdXZWJDb3JlOUhUTUxOYW1lczlzY3JpcHRUYWdFCitfX1pON1dlYkNvcmU5SFRNTE5hbWVzOXNl
bGVjdFRhZ0UKK19fWk43V2ViQ29yZTlIVE1MTmFtZXM5c3R5bGVBdHRyRQorX19aTjdXZWJDb3Jl
OUhUTUxOYW1lczl2YWx1ZUF0dHJFCitfX1pON1dlYkNvcmU5SFRNTE5hbWVzMTJzZWxlY3RlZEF0
dHJFCiBfX1pON1dlYkNvcmU5SlNFbGVtZW50NnNfaW5mb0UKIF9fWk43V2ViQ29yZTlQYWdlQ2Fj
aGUxMXNldENhcGFjaXR5RWkKIF9fWk43V2ViQ29yZTlQYWdlQ2FjaGUyN3JlbGVhc2VBdXRvcmVs
ZWFzZWRQYWdlc05vd0V2CkBAIC0xMjYxLDYgKzEyNzYsNyBAQCBfX1pOSzdXZWJDb3JlMTZWaXNp
YmxlU2VsZWN0aW9uMTlyb290RWRpdGFibGVFbGVtZW50RXYKIF9fWk5LN1dlYkNvcmUxNlZpc2li
bGVTZWxlY3Rpb24yM2lzQ29udGVudFJpY2hseUVkaXRhYmxlRXYKIF9fWk5LN1dlYkNvcmUxNlZp
c2libGVTZWxlY3Rpb241aXNBbGxFTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCiBf
X1pOSzdXZWJDb3JlMTdIVE1MUGx1Z0luRWxlbWVudDEycGx1Z2luV2lkZ2V0RXYKK19fWk5LN1dl
YkNvcmUxN0hUTUxTZWxlY3RFbGVtZW50NXZhbHVlRXYKIF9fWk5LN1dlYkNvcmUxN0pTRE9NR2xv
YmFsT2JqZWN0MjJzY3JpcHRFeGVjdXRpb25Db250ZXh0RXYKIF9fWk5LN1dlYkNvcmUxN1JlZ3Vs
YXJFeHByZXNzaW9uMTNtYXRjaGVkTGVuZ3RoRXYKIF9fWk5LN1dlYkNvcmUxN1JlZ3VsYXJFeHBy
ZXNzaW9uNW1hdGNoRVJLTjNXVEY2U3RyaW5nRWlQaQpAQCAtMTMyNyw2ICsxMzQzLDcgQEAgX19a
Tks3V2ViQ29yZTRLVVJMOHByb3RvY29sRXYKIF9fWk5LN1dlYkNvcmU0S1VSTGN2UDVOU1VSTEV2
CiBfX1pOSzdXZWJDb3JlNE5vZGUxMXRleHRDb250ZW50RWIKIF9fWk43V2ViQ29yZTROb2RlMTJp
bnNlcnRCZWZvcmVFTjNXVEYxMFBhc3NSZWZQdHJJUzBfRUVQUzBfUmliCitfX1pOSzdXZWJDb3Jl
NE5vZGUxM293bmVyRG9jdW1lbnRFdgogX19aTks3V2ViQ29yZTROb2RlMTRpc0Rlc2NlbmRhbnRP
ZkVQS1MwXwogX19aTks3V2ViQ29yZTROb2RlMThnZXRTdWJyZXNvdXJjZVVSTHNFUk4zV1RGMTFM
aXN0SGFzaFNldElOU180S1VSTEVMbTI1NkVOU184S1VSTEhhc2hFRUUKIF9fWk5LN1dlYkNvcmU0
Tm9kZTIwdHJhdmVyc2VQcmV2aW91c05vZGVFUEtTMF8KQEAgLTEzNDMsNiArMTM2MCw3IEBAIF9f
Wk5LN1dlYkNvcmU0UGFnZTlncm91cE5hbWVFdgogX19aTks3V2ViQ29yZTRQYWdlOXBhZ2VDb3Vu
dEV2CiBfX1pOSzdXZWJDb3JlNE5vZGU5dGV4dFJlY3RzRVJOM1dURjZWZWN0b3JJTlNfN0ludFJl
Y3RFTG0wRUVFCiBfX1pOSzdXZWJDb3JlNUNvbG9yN2dldFJHQkFFUmRTMV9TMV9TMV8KK19fWk5L
N1dlYkNvcmU1Q29sb3IxMHNlcmlhbGl6ZWRFdgogX19aTks3V2ViQ29yZTVGcmFtZTEzb3duZXJS
ZW5kZXJlckV2CiBfX1pOSzdXZWJDb3JlNUZyYW1lMTRzZWxlY3Rpb25JbWFnZUViCiBfX1pOSzdX
ZWJDb3JlNUZyYW1lMTVjb250ZW50UmVuZGVyZXJFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZjMTU4NTYuLjU5OWFkYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQxMzgsMTAgKzQxMzgsMTAgQEAKIAkJQTgxMzY5RDUwOTczNzRGNjAwRDc0NDYzIC8qIEhU
TUxGaWVsZFNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTgxMzY5QjkwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxGaWVsZFNldEVsZW1l
bnQuY3BwICovOyB9OwogCQlBODEzNjlENjA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTFRleHRBcmVh
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTgxMzY5QkEwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxUZXh0QXJlYUVsZW1lbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBODEzNjlENzA5NzM3
NEY2MDBENzQ0NjMgLyogSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEzNjlCQjA5NzM3NEY1MDBENzQ0NjMgLyog
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAgKi87IH07Ci0JCUE4MTM2OUQ4MDk3Mzc0RjYwMEQ3NDQ2
MyAvKiBIVE1MU2VsZWN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTgxMzY5QkMwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxTZWxlY3RFbGVt
ZW50LmggKi87IH07CisJCUE4MTM2OUQ4MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MU2VsZWN0RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgx
MzY5QkMwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxTZWxlY3RFbGVtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgxMzY5RDkwOTczNzRGNjAw
RDc0NDYzIC8qIEhUTUxTZWxlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTM2OUJEMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MU2Vs
ZWN0RWxlbWVudC5jcHAgKi87IH07Ci0JCUE4MTM2OURBMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1M
T3B0aW9uc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4MTM2OUJFMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MT3B0aW9uc0NvbGxlY3Rp
b24uaCAqLzsgfTsKLQkJQTgxMzY5REMwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxPcHRpb25FbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEz
NjlDMDA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTE9wdGlvbkVsZW1lbnQuaCAqLzsgfTsKKwkJQTgx
MzY5REEwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QkUwOTczNzRGNTAw
RDc0NDYzIC8qIEhUTUxPcHRpb25zQ29sbGVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE4MTM2OURDMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBI
VE1MT3B0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTgxMzY5QzAwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxPcHRpb25FbGVtZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgxMzY5
REQwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxPcHRpb25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTM2OUMxMDk3Mzc0RjUwMEQ3NDQ2
MyAvKiBIVE1MT3B0aW9uRWxlbWVudC5jcHAgKi87IH07CiAJCUE4MTM2OURFMDk3Mzc0RjYwMEQ3
NDQ2MyAvKiBIVE1MT3B0R3JvdXBFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBODEzNjlDMjA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTE9wdEdy
b3VwRWxlbWVudC5oICovOyB9OwogCQlBODEzNjlERjA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTE9w
dEdyb3VwRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBODEzNjlDMzA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTE9wdEdyb3VwRWxlbWVudC5j
cHAgKi87IH07CkBAIC01NTM3LDcgKzU1MzcsNyBAQAogCQlCQzc3MkUxNjEzMzE2MkMyMDAxRUM5
Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc3MkUxNTEzMzE2MkMyMDAxRUM5Q0UgLyogQ1NTTGlu
ZUJveENvbnRhaW5WYWx1ZS5jcHAgKi87IH07CiAJCUJDN0Y0NEE4MEI5RTMyNEUwMEE5RDA4MSAv
KiBJbWFnZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDN0ZBNjIwMEQx
RjBDQkQwMERCMjJBOSAvKiBEeW5hbWljTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RkE2MUUwRDFGMENCRDAwREIyMkE5IC8qIER5
bmFtaWNOb2RlTGlzdC5jcHAgKi87IH07Ci0JCUJDN0ZBNjIxMEQxRjBDQkQwMERCMjJBOSAvKiBE
eW5hbWljTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDN0ZBNjFGMEQxRjBDQkQwMERCMjJBOSAvKiBEeW5hbWljTm9kZUxpc3QuaCAqLzsg
fTsKKwkJQkM3RkE2MjEwRDFGMENCRDAwREIyMkE5IC8qIER5bmFtaWNOb2RlTGlzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RkE2MUYwRDFGMENC
RDAwREIyMkE5IC8qIER5bmFtaWNOb2RlTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDN0ZBNjJEMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0
aWNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM3RkE2MkIwRDFGMEVGRjAwREIyMkE5IC8qIFN0YXRpY05vZGVMaXN0LmggKi87IH07CiAJ
CUJDN0ZBNjJFMEQxRjBFRkYwMERCMjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdGQTYyQzBEMUYwRUZGMDBE
QjIyQTkgLyogU3RhdGljTm9kZUxpc3QuY3BwICovOyB9OwogCQlCQzgwQzk4NzBDRDI5NEVFMDBB
MEI3QjMgLyogQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgwQzk4NTBDRDI5NEVFMDBBMEI3QjMgLyogQ1NT
VGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAgKi87IH07CkBAIC0yMjM0Miw2ICsyMjM0MiwxMCBAQAog
CQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJQkM3RkE2MjEwRDFGMENCRDAwREIyMkE5IC8qIER5
bmFtaWNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTgxMzY5REEwOTczNzRGNjAwRDc0
NDYzIC8qIEhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTgxMzY5
RDgwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxTZWxlY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQlBODEzNjlEQzA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTE9wdGlvbkVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3QkM2OURCMTUwNUYwNzYwMDFCNzRBQyAvKiBBYnN0cmFjdERhdGFi
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJz
dHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5
MyAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKQEAgLTIzMzk1
LDcgKzIzMzk5LDYgQEAKIAkJCQkzMTY5Mzc5QzE0NjA5QzZDMDBDMDEzNjIgLyogRHJhZ1Nlc3Np
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTgxRjY1RkY2MTM3ODhGQUEwMEZGNkYyRCAvKiBEcmFn
U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5ODc3MERDMTI0MkM1MzUwMDIyMjZCQSAvKiBE
cmF3aW5nQnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzdGQTYyMTBEMUYwQ0JEMDBEQjIy
QTkgLyogRHluYW1pY05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDZFRDJDODEzNkI4
RTY2MDAzQ0YwNzIgLyogRHluYW1pY3NDb21wcmVzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDUzNzM1NzEzN0I2NTNCMDAwMDhEQ0UgLyogRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDZFRDJDNDEzNkI4RTQyMDAzQ0YwNzIgLyogRHluYW1pY3NDb21w
cmVzc29yTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzcwOSw4ICsyMzcxMiw2IEBACiAJCQkJ
QTg3MUQ0NUEwQTEyN0NCQzAwQjEyQTY4IC8qIEhUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOEVBNzlGMTBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTE9MaXN0RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxMzY5REUwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxPcHRH
cm91cEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4MTM2OURDMDk3Mzc0RjYwMEQ3NDQ2
MyAvKiBIVE1MT3B0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTgxMzY5REEwOTcz
NzRGNjAwRDc0NDYzIC8qIEhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNEFEMDEwMDkxMjdFNjQyQTAwMTUwMzVGIC8qIEhUTUxPdXRwdXRFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEVBN0NCNTBBMTkyQjlDMDBBOEVGNUYgLyogSFRNTFBhcmFncmFwaEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFENDU4MEExMjdDQkMwMEIxMkE2OCAvKiBI
VE1MUGFyYW1FbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTIzNzI4LDcgKzIzNzI5LDYgQEAK
IAkJCQlBODcxREMyNTBBMTUyMDU3MDBCMTJBNjggLyogSFRNTFNjcmlwdEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3N0IzODc1MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MU2NyaXB0UnVu
bmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzg3NjEyMjg4M0U5MDBCODFGRjggLyogSFRN
TFNjcmlwdFJ1bm5lckhvc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4MTM2OUQ4MDk3Mzc0RjYw
MEQ3NDQ2MyAvKiBIVE1MU2VsZWN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEFCREZG
MEMxNERCRTM4NTAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNDQ2MTNBODBDRDYzMzEwMDBGQURBNzUgLyogSFRNTFNvdXJjZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3N0UyRENFMTJGMEUyODMwMEMxMzM3OSAvKiBIVE1MU291cmNlVHJh
Y2tlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGRkOWIzMS4uN2FlNmM5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDEyLTEwLTIzICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEZ1bGwtcGFnZSBQREZQbHVnaW4gc2hvdWxk
IHN1cHBvcnQgaW5saW5lIGZvcm0gZWRpdGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGZvcm0gY29udHJvbHMgY29ycmVzcG9uZGluZyB0byBU
ZXh0IGFuZCBDaG9pY2UgUERGIGFubm90YXRpb25zLAorICAgICAgICBhbGxvd2luZyBmb3Igc2lu
Z2xlLSBhbmQgbXVsdGktbGluZSB0ZXh0IGlucHV0LCBhbmQgPHNlbGVjdD4tbGlrZSBpbnB1dC4K
KworICAgICAgICBDdXJyZW50bHksIGZvcm1zIGFyZSBvbmx5IGltcGxlbWVudGVkIGZvciBmdWxs
LXBhZ2UgUERGIGRvY3VtZW50cy4KKworICAgICAgICAqIFNoYXJlZC9tYWMvUERGS2l0SW1wb3J0
cy5oOgorICAgICAgICAoV2ViS2l0KTogQWRkIHBkZkFubm90YXRpb25UZXh0V2lkZ2V0Q2xhc3Mg
YW5kIHBkZkFubm90YXRpb25DaG9pY2VXaWRnZXRDbGFzcy4KKyAgICAgICAgKiBTaGFyZWQvbWFj
L1BERktpdEltcG9ydHMubW06CisgICAgICAgIChXZWJLaXQ6OnBkZkFubm90YXRpb25UZXh0V2lk
Z2V0Q2xhc3MpOiBBZGQgcGRmQW5ub3RhdGlvblRleHRXaWRnZXRDbGFzcy4KKyAgICAgICAgKFdl
YktpdDo6cGRmQW5ub3RhdGlvbkNob2ljZVdpZGdldENsYXNzKTogQWRkIHBkZkFubm90YXRpb25D
aG9pY2VXaWRnZXRDbGFzcy4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEFkZCBQREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLCBQREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbiwgUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbiwKKyAgICAgICAgYW5kIFBERlBsdWdpbkFu
bm90YXRpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRy
b2xsZXJEZXRhaWxzLmg6IEFkZGVkLiBFeHRyYWN0IFBERkxheWVyQ29udHJvbGxlciBkZXRhaWxz
IGNhdGVnb3J5IGludG8gYSBoZWFkZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4uaDoKKyAgICAgICAgKFBERlBsdWdpbik6IEFkZCBtX2FjdGl2ZUFubm90YXRp
b24sIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGFjdGl2ZSBQREZQbHVnaW5Bbm5vdGF0aW9uLCBhbmQg
bV9hbm5vdGF0aW9uQ29udGFpbmVyLAorICAgICAgICB0aGUgPGRpdj4gdGhhdCBmb3JtIGNvbnRy
b2xzIGFyZSBpbnNlcnRlZCBpbnRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tOgorICAgICAgICAoLVtXS1BERkxheWVyQ29udHJvbGxlckRlbGVnYXRlIHBk
ZkxheWVyQ29udHJvbGxlcjpkaWRDaGFuZ2VBY3RpdmVBbm5vdGF0aW9uOl0pOiBGb3J3YXJkIGFj
dGl2ZSBhbm5vdGF0aW9uIGNoYW5nZXMgdG8gUERGUGx1Z2luLgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OlBERlBsdWdpbik6IEFkZCBhIDxkaXY+IHRvIHRoZSBQbHVnaW5Eb2N1bWVudCA8
Ym9keT4sIHdoaWNoIHdpbGwgY29udGFpbiA8aW5wdXQ+LCA8c2VsZWN0PiwgYW5kIDx0ZXh0YXJl
YT4gZWxlbWVudHMKKyAgICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgYWN0aXZlIGFubm90YXRp
b24uIFRoaXMgZGl2IGlzIG1hZGUgdG8gZml0IHRvIHRoZSBib2R5LCBhbmQgaXMgIm92ZXJmbG93
OiBoaWRkZW4iIHNvIHRoYXQgZm9ybSBlbGVtZW50cyBzY3JvbGxlZAorICAgICAgICBvdXQgb2Yg
dGhlIHZpZXdwb3J0IGRvIG5vdCBjYXVzZSB0aGUgRG9jdW1lbnQgdG8gZXhwYW5kIHRvIGJlIGxh
cmdlciB0aGFuIHRoZSBQbHVnaW4uCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6cGRmRG9j
dW1lbnREaWRMb2FkKTogVXBkYXRlIFBERlBsdWdpbidzIG5vdGlvbiBvZiB0aGUgc2Nyb2xsIHBv
c2l0aW9uIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBkb2N1bWVudCBsb2FkcywgaW4gY2FzZQorICAg
ICAgICB0aGUgc2Nyb2xsIHBvc2l0aW9uIGlzIGNvbnN0cmFpbmVkIGJ5IFBERktpdC4KKyAgICAg
ICAgKFdlYktpdDo6UERGUGx1Z2luOjpkZXN0cm95KTogVGVhciBkb3duIGFueSBmb3JtcyBmb3Ig
dGhlIGFjdGl2ZSBhbm5vdGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Omdlb21l
dHJ5RGlkQ2hhbmdlKTogTm90aWZ5IHRoZSBjdXJyZW50IGFubm90YXRpb24gdGhhdCBpdCBzaG91
bGQgdXBkYXRlIGl0cyBnZW9tZXRyeSB3aGVuIHRoZSBQbHVnaW4ncyBnZW9tZXRyeSBjaGFuZ2Vz
LgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnNldFNjcm9sbE9mZnNldCk6IE5vdGlmeSB0
aGUgY3VycmVudCBhbm5vdGF0aW9uIHRoYXQgaXQgc2hvdWxkIHVwZGF0ZSBpdHMgZ2VvbWV0cnkg
d2hlbiB3ZSBzY3JvbGwuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c2V0QWN0aXZlQW5u
b3RhdGlvbik6IENvbW1pdCBjaGFuZ2VzIHRvIHRoZSBjdXJyZW50IGFubm90YXRpb24sIGlmIHRo
ZXJlIGlzIG9uZSwgdGhlbiBtYWtlIGEgbmV3IFBERlBsdWdpbkFubm90YXRpb24KKyAgICAgICAg
Y29ycmVzcG9uZGluZyB0byB0aGUgbmV3bHkgYWN0aXZlIGFubm90YXRpb24sIGFuZCBhdHRhY2gg
aXQgdG8gb3VyIGRvY3VtZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luQW5ub3RhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQW5u
b3RhdGlvbjo6ZWxlbWVudCk6IFJldHVybiB0aGUgRWxlbWVudCBjb3JyZXNwb25kaW5nIHRvIHRo
aXMgb2JqZWN0LgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5Bbm5vdGF0aW9uOjphbm5vdGF0
aW9uKTogUmV0dXJuIHRoZSBQREZBbm5vdGF0aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBvYmpl
Y3QuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OnBsdWdpbik6IFJldHVy
biB0aGUgUGx1Z2luIHRoYXQgY3JlYXRlZCB0aGlzIG9iamVjdC4KKyAgICAgICAgKFdlYktpdDo6
UERGUGx1Z2luQW5ub3RhdGlvbjo6Y29tbWl0KTogQ29tbWl0IGNoYW5nZXMgZnJvbSB0aGUgZm9y
bSB0byB0aGUgUERGQW5ub3RhdGlvbi4gVGhpcyBpcyBpbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2Vz
LgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5Bbm5vdGF0aW9uOjphdHRhY2gpOiBBdHRhY2gg
YSBQREZQbHVnaW5Bbm5vdGF0aW9uIHRvIGl0cyBwYXJlbnQgRWxlbWVudC4KKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luQW5ub3RhdGlvbjo6cGFyZW50KTogUmV0dXJuIHRoZSBwYXJlbnQgRWxl
bWVudCB0aGF0IHdlJ3JlIGF0dGFjaCgpZWQgdG8uCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bkFubm90YXRpb246OnBkZkxheWVyQ29udHJvbGxlcik6IFJldHVybiB0aGUgcGRmTGF5ZXJDb250
cm9sbGVyIHRoYXQgdGhlIFBERkFubm90YXRpb24gY29tZXMgZnJvbS4KKyAgICAgICAgKFBERlBs
dWdpbkFubm90YXRpb25FdmVudExpc3RlbmVyKTogQWRkIGFuIGV2ZW50IGxpc3RlbmVyIHRvIHJl
c3BvbmQgdG8gImNoYW5nZSIgYW5kICJibHVyIiBldmVudHMgZnJvbSBtX2VsZW1lbnQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQW5ub3RhdGlvbjo6Y3JlYXRlKTogQ3JlYXRl
IHRoZSBhcHByb3ByaWF0ZSBQREZQbHVnaW5Bbm5vdGF0aW9uIHN1YmNsYXNzIChQREZQbHVnaW5U
ZXh0QW5ub3RhdGlvbiBvcgorICAgICAgICBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uIGJhc2Vk
IG9uIHRoZSBjbGFzcyBvZiB0aGUgUERGQW5ub3RhdGlvbikuCisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbkFubm90YXRpb246OmF0dGFjaCk6IExhemlseSBjcmVhdGUgdGhlIEhUTUwgZm9ybSBl
bGVtZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBhbm5vdGF0aW9uLiBBZGQgaXQgdG8gaXRzIHBh
cmVudAorICAgICAgICBlbGVtZW50LiBBZGQgZXZlbnQgbGlzdGVuZXJzIGZvciAiY2hhbmdlIiBh
bmQgImJsdXIiLgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5Bbm5vdGF0aW9uOjp+UERGUGx1
Z2luQW5ub3RhdGlvbik6IFRlYXIgZG93biB0aGUgYW5ub3RhdGlvbiwgYnkgcmVtb3ZpbmcgZXZl
bnQgbGlzdGVuZXJzIGFuZCByZW1vdmluZworICAgICAgICB0aGUgZm9ybSBlbGVtZW50IGZyb20g
aXRzIHBhcmVudCBlbGVtZW50LgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5Bbm5vdGF0aW9u
Ojp1cGRhdGVHZW9tZXRyeSk6IFVwZGF0ZSB0aGUgc2l6ZSBhbmQgcG9zaXRpb24gb2YgdGhlIGZv
cm0gZWxlbWVudCwgZ2l2ZW4gdGhlIGN1cnJlbnQgUERGIHNjYWxlIGFuZCBzY3JvbGxpbmcgcG9z
aXRpb24uCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OlBERlBsdWdpbkFu
bm90YXRpb25FdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6IElmIHdlIGdldCBhIGJsdXIgb3Ig
Y2hhbmdlIGV2ZW50LCB3ZSBzaG91bGQgcmVtb3ZlIHRoZQorICAgICAgICBmb3JtIGNvbnRyb2wg
dG8gbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIFBERktpdC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24uaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbkNob2ljZUFubm90YXRpb246OmNob2ljZUFubm90YXRpb24pOiBSZXR1
cm4gYW5ub3RhdGlvbigpIHdpdGggdGhlIGFwcHJvcHJpYXRlIGNhc3QuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6dXBkYXRlR2VvbWV0
cnkpOiBVcGRhdGUgdGhlIGZvbnQgc2l6ZSBvZiB0aGUgY2hvaWNlIHdpZGdldCBnaXZlbiB0aGUg
Y3VycmVudCBQREYgc2NhbGUuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkNob2ljZUFubm90
YXRpb246OmNvbW1pdCk6IFNhdmUgdGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQg
PG9wdGlvbj4gaW50byB0aGUgUERGQW5ub3RhdGlvbkNob2ljZVdpZGdldC4KKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQp
OiBDcmVhdGUgYSA8c2VsZWN0PiBlbGVtZW50LCBwb3B1bGF0ZWQgd2l0aCA8b3B0aW9uPiBlbGVt
ZW50cworICAgICAgICBmb3IgdGhlIFBERkFubm90YXRpb25DaG9pY2VXaWRnZXQncyBhdmFpbGFi
bGUgY2hvaWNlcy4gU2VsZWN0IHRoZSBjb3JyZWN0IDxvcHRpb24+IGluaXRpYWxseS4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6dGV4dEFubm90
YXRpb24pOiBSZXR1cm4gYW5ub3RhdGlvbigpIHdpdGggdGhlIGFwcHJvcHJpYXRlIGNhc3QuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5t
bTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmNzc0FsaWdubWVudFZhbHVlRm9yTlNUZXh0QWxp
Z25tZW50KTogUmV0dXJuIHRoZSBDU1MgYWxpZ25tZW50IHZhbHVlIGZvciBhIGdpdmVuIE5TVGV4
dEFsaWdubWVudC4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90YXRpb246OmNy
ZWF0ZUFubm90YXRpb25FbGVtZW50KTogQ3JlYXRlIGEgPHRleHRhcmVhPiBvciA8aW5wdXQ+IGVs
ZW1lbnQsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZQorICAgICAgICBQREZBbm5vdGF0aW9uVGV4
dFdpZGdldCBzdXBwb3J0cyBtdWx0aWxpbmUgZWRpdGluZyBvciBub3QuCisgICAgICAgIChXZWJL
aXQ6OlBERlBsdWdpblRleHRBbm5vdGF0aW9uOjp1cGRhdGVHZW9tZXRyeSk6IFVwZGF0ZSB0aGUg
Zm9udCBzaXplIG9mIHRoZSB0ZXh0IHdpZGdldCBnaXZlbiB0aGUgY3VycmVudCBQREYgc2NhbGUu
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjb21taXQpOiBTYXZl
IHRoZSBjdXJyZW50IHN0cmluZyBpbiB0aGUgZm9ybSBlbGVtZW50IGludG8gdGhlIFBERkFubm90
YXRpb25UZXh0V2lkZ2V0LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Zm9jdXNlZFBsdWdpblZpZXdGb3JGcmFtZSk6IFJldHVybiB0
aGUgUGx1Z2luVmlldyBmb3IgYSBGcmFtZSBvbmx5IGlmIHRoZSBQbHVnaW4ncyBlbGVtZW50IGlz
IGZvY3VzZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmV4ZWN1dGVFZGl0aW5nQ29tbWFu
ZCk6IE9ubHkgZm9yd2FyZCBlZGl0aW5nIGNvbW1hbmRzIHRvIFBsdWdpblZpZXcgaWYgdGhlIHBs
dWdpbiBpdHNlbGYgaXMgZm9jdXNlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNFZGl0
aW5nQ29tbWFuZEVuYWJsZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dmFs
aWRhdGVDb21tYW5kKTogRGl0dG8uCisKIDIwMTItMTAtMjMgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJLaXQyIEFQSV0gQWRkIHByb3BlcnRpZXMgdG8gZ2V0
IHRleHRSZWN0cyBmcm9tIGEgV0tET01SYW5nZSBvciBXS0RPTU5vZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUERGS2l0SW1wb3J0cy5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9QREZLaXRJbXBvcnRzLmgKaW5kZXggYzlhMWUwYS4uYTFhMTNkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9QREZLaXRJbXBvcnRzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9QREZLaXRJbXBvcnRzLmgKQEAgLTM1LDYgKzM1LDggQEAg
Q2xhc3MgcGRmRG9jdW1lbnRDbGFzcygpOwogCiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCiBD
bGFzcyBwZGZMYXllckNvbnRyb2xsZXJDbGFzcygpOworQ2xhc3MgcGRmQW5ub3RhdGlvblRleHRX
aWRnZXRDbGFzcygpOworQ2xhc3MgcGRmQW5ub3RhdGlvbkNob2ljZVdpZGdldENsYXNzKCk7CiAj
ZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9QREZLaXRJ
bXBvcnRzLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9QREZLaXRJbXBvcnRzLm1tCmlu
ZGV4IGJjY2ZiZWYuLjE2Njk3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvUERGS2l0SW1wb3J0cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1BERktp
dEltcG9ydHMubW0KQEAgLTYyLDYgKzYyLDIwIEBAIENsYXNzIHBkZkxheWVyQ29udHJvbGxlckNs
YXNzKCkKICAgICBBU1NFUlQocGRmTGF5ZXJDb250cm9sbGVyQ2xhc3MpOwogICAgIHJldHVybiBw
ZGZMYXllckNvbnRyb2xsZXJDbGFzczsKIH0KKworQ2xhc3MgcGRmQW5ub3RhdGlvblRleHRXaWRn
ZXRDbGFzcygpCit7CisgICAgc3RhdGljIENsYXNzIHBkZkFubm90YXRpb25UZXh0V2lkZ2V0Q2xh
c3MgPSBjbGFzc0Zyb21QREZLaXQoQCJQREZBbm5vdGF0aW9uVGV4dFdpZGdldCIpOworICAgIEFT
U0VSVChwZGZBbm5vdGF0aW9uVGV4dFdpZGdldENsYXNzKTsKKyAgICByZXR1cm4gcGRmQW5ub3Rh
dGlvblRleHRXaWRnZXRDbGFzczsKK30KKworQ2xhc3MgcGRmQW5ub3RhdGlvbkNob2ljZVdpZGdl
dENsYXNzKCkKK3sKKyAgICBzdGF0aWMgQ2xhc3MgcGRmQW5ub3RhdGlvbkNob2ljZVdpZGdldENs
YXNzID0gY2xhc3NGcm9tUERGS2l0KEAiUERGQW5ub3RhdGlvbkNob2ljZVdpZGdldCIpOworICAg
IEFTU0VSVChwZGZBbm5vdGF0aW9uQ2hvaWNlV2lkZ2V0Q2xhc3MpOworICAgIHJldHVybiBwZGZB
bm5vdGF0aW9uQ2hvaWNlV2lkZ2V0Q2xhc3M7Cit9CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDliNWFjN2Iu
LjNlNmFmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTI2OSw2ICsyNjksOSBAQAogCQkyOUNENTVBQjEyOEUyOTRGMDAxMzND
ODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBX
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tICovOyB9OwogCQkyOUQ1NURGMTE2MUJGOUYx
MDAzMUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlENTVERUYxNjFCRjlGMTAw
MzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJ
MjlENTVERjIxNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RDU1REYwMTYx
QkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VzLmggKi87IH07CisJCTJE
MkFERjA5MTYzNjJERDUwMDE5N0U0NyAvKiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMkFERjA2MTYzNjJE
QzcwMDE5N0U0NyAvKiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSAqLzsgfTsKKwkJMkQyQURG
MEIxNjM2MkREQjAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRpb24ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJBREYwMzE2MzYyNDM1MDAxOTdF
NDcgLyogUERGUGx1Z2luQW5ub3RhdGlvbi5tbSAqLzsgfTsKKwkJMkQyQURGMTAxNjM2NEQ4MjAw
MTk3RTQ3IC8qIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJBREYwRTE2MzY0RDgyMDAxOTdFNDcgLyog
UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbSAqLzsgfTsKIAkJMkQ4NzBEMTAxNjIzNEZGRTAw
MEEzRjIwIC8qIFBERlBsdWdpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEODcwRDBFMTYyMkI3RjkwMDBBM0YyMCAvKiBQREZQbHVnaW4ubW0gKi87
IH07CiAJCTMxMDk5OTczMTQ2Qzc1QTIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwOTk5
NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgKi87IH07CiAJ
CTMxMDk5OUM3MTQ2QzlFM0QwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDk5OTY4MTQ2Qzcx
RjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLzsgfTsKQEAgLTE0MjUsNiAr
MTQyOCwxMyBAQAogCQkyOUQ1NURFRTE2MUJGODc4MDAzMUEyRTMgLyogV2ViUGFnZUdyb3VwUHJv
eHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViUGFnZUdyb3VwUHJveHkubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5RDU1REVGMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQ
YWdlR3JvdXBQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5RDU1REYwMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQ
YWdlR3JvdXBQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMkQyQURGMDIxNjM2MjQzNTAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUERGUGx1Z2luQW5ub3RhdGlvbi5oOyBwYXRo
ID0gUERGL1BERlBsdWdpbkFubm90YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMkQyQURGMDMxNjM2MjQzNTAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRpb24ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBQREZQbHVnaW5Bbm5vdGF0aW9u
Lm1tOyBwYXRoID0gUERGL1BERlBsdWdpbkFubm90YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTJEMkFERjA1MTYzNjJEQzcwMDE5N0U0NyAvKiBQREZQbHVnaW5UZXh0QW5u
b3RhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQREZQbHVnaW5UZXh0
QW5ub3RhdGlvbi5oOyBwYXRoID0gUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMkFERjA2MTYzNjJEQzcwMDE5N0U0NyAvKiBQREZQ
bHVnaW5UZXh0QW5ub3RhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFBERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tOyBwYXRoID0gUERGL1BERlBsdWdpblRl
eHRBbm5vdGF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDJBREYwQzE2
MzYzREVDMDAxOTdFNDcgLyogUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBQREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmg7IHBhdGggPSBQREYvUERGTGF5ZXJDb250
cm9sbGVyRGV0YWlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDJBREYwRDE2
MzY0RDgyMDAxOTdFNDcgLyogUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLmg7IHBhdGgg
PSBQREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyRDJBREYwRTE2MzY0RDgyMDAxOTdFNDcgLyogUERGUGx1Z2luQ2hvaWNlQW5ub3Rh
dGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBERlBsdWdp
bkNob2ljZUFubm90YXRpb24ubW07IHBhdGggPSBQREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlv
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4NzBEMEQxNjIyQjdGOTAwMEEz
RjIwIC8qIFBERlBsdWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQREZQ
bHVnaW4uaDsgcGF0aCA9IFBERi9QREZQbHVnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkQ4NzBEMEUxNjIyQjdGOTAwMEEzRjIwIC8qIFBERlBsdWdpbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBERlBsdWdpbi5tbTsgcGF0aCA9IFBERi9Q
REZQbHVnaW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTY4MTQ2Qzcx
RjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTk2
LDYgKzQyMDYsMTMgQEAKIAkJRTE5OTg3NUIxNDJCRjlDRjAwQkIyREU3IC8qIFBERiAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMkQyQURGMEQxNjM2NEQ4
MjAwMTk3RTQ3IC8qIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24uaCAqLywKKwkJCQkyRDJBREYw
RTE2MzY0RDgyMDAxOTdFNDcgLyogUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbSAqLywKKwkJ
CQkyRDJBREYwQzE2MzYzREVDMDAxOTdFNDcgLyogUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5o
ICovLAorCQkJCTJEMkFERjAyMTYzNjI0MzUwMDE5N0U0NyAvKiBQREZQbHVnaW5Bbm5vdGF0aW9u
LmggKi8sCisJCQkJMkQyQURGMDMxNjM2MjQzNTAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRp
b24ubW0gKi8sCisJCQkJMkQyQURGMDUxNjM2MkRDNzAwMTk3RTQ3IC8qIFBERlBsdWdpblRleHRB
bm5vdGF0aW9uLmggKi8sCisJCQkJMkQyQURGMDYxNjM2MkRDNzAwMTk3RTQ3IC8qIFBERlBsdWdp
blRleHRBbm5vdGF0aW9uLm1tICovLAogCQkJCTJEODcwRDBEMTYyMkI3RjkwMDBBM0YyMCAvKiBQ
REZQbHVnaW4uaCAqLywKIAkJCQkyRDg3MEQwRTE2MjJCN0Y5MDAwQTNGMjAgLyogUERGUGx1Z2lu
Lm1tICovLAogCQkJCUUxOTk4NzVDMTQyQkZDOTcwMEJCMkRFNyAvKiBTaW1wbGVQREZQbHVnaW4u
bW0gKi8sCkBAIC01Njk0LDYgKzU3MTEsOSBAQAogCQkJCTUxM0ExNjRDMTYzMEE5QkYwMDVEN0Qy
MiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MTgzRERFQzE2MzBCREZDMDA4QkU1QzcgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBMTNCRUIzMTYzNUE5QzgwMEYxOUMwMyAvKiBTdHJpbmdS
ZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkQyQURGMDkxNjM2MkRENTAwMTk3RTQ3
IC8qIFBERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMkQyQURG
MEIxNjM2MkREQjAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRpb24ubW0gaW4gU291cmNlcyAq
LywKKwkJCQkyRDJBREYxMDE2MzY0RDgyMDAxOTdFNDcgLyogUERGUGx1Z2luQ2hvaWNlQW5ub3Rh
dGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTdiNTJhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRy
b2xsZXJEZXRhaWxzLmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFBE
RktpdC9QREZLaXQuaD4KKworQHByb3RvY29sIFBERkxheWVyQ29udHJvbGxlckRlbGVnYXRlIDxO
U09iamVjdD4KKworLSAodm9pZCl1cGRhdGVTY3JvbGxQb3NpdGlvbjooQ0dQb2ludCluZXdQb3Np
dGlvbjsKKy0gKHZvaWQpd3JpdGVJdGVtc1RvUGFzdGVib2FyZDooTlNBcnJheSAqKWl0ZW1zIHdp
dGhUeXBlczooTlNBcnJheSAqKXR5cGVzOworLSAodm9pZClzaG93RGVmaW5pdGlvbkZvckF0dHJp
YnV0ZWRTdHJpbmc6KE5TQXR0cmlidXRlZFN0cmluZyAqKXN0cmluZyBhdFBvaW50OihDR1BvaW50
KXBvaW50OworLSAodm9pZClwZXJmb3JtV2ViU2VhcmNoOihOU1N0cmluZyAqKXN0cmluZzsKKy0g
KHZvaWQpb3BlbldpdGhQcmV2aWV3OworLSAodm9pZClzYXZlVG9QREY7CisKKy0gKHZvaWQpcGRm
TGF5ZXJDb250cm9sbGVyOihQREZMYXllckNvbnRyb2xsZXIgKilwZGZMYXllckNvbnRyb2xsZXIg
ZGlkQ2hhbmdlQWN0aXZlQW5ub3RhdGlvbjooUERGQW5ub3RhdGlvbiAqKWFubm90YXRpb247CisK
K0BlbmQKKworQGludGVyZmFjZSBQREZMYXllckNvbnRyb2xsZXIgOiBOU09iamVjdAorQGVuZAor
CitAaW50ZXJmYWNlIFBERkxheWVyQ29udHJvbGxlciAoRGV0YWlscykKKworQHByb3BlcnR5KHJl
dGFpbikgQ0FMYXllciAqcGFyZW50TGF5ZXI7CitAcHJvcGVydHkocmV0YWluKSBQREZEb2N1bWVu
dCAqZG9jdW1lbnQ7CitAcHJvcGVydHkocmV0YWluKSBpZDxQREZMYXllckNvbnRyb2xsZXJEZWxl
Z2F0ZT4gZGVsZWdhdGU7CisKKy0gKHZvaWQpc2V0RnJhbWVTaXplOihDR1NpemUpc2l6ZTsKKwor
LSAodm9pZClzZXREaXNwbGF5TW9kZTooaW50KW1vZGU7CistICh2b2lkKXNldERpc3BsYXlzUGFn
ZUJyZWFrczooQk9PTClwYWdlQnJlYWtzOworCistIChDR0Zsb2F0KXRpbGVTY2FsZUZhY3RvcjsK
Ky0gKHZvaWQpc2V0VGlsZVNjYWxlRmFjdG9yOihDR0Zsb2F0KXNjYWxlRmFjdG9yOworCistIChD
R1NpemUpY29udGVudFNpemU7CistIChDR1NpemUpY29udGVudFNpemVSZXNwZWN0aW5nWm9vbTsK
KworLSAodm9pZClzbmFwc2hvdEluQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQ7CisKKy0g
KHZvaWQpbWFnbmlmeVdpdGhNYWduaWZpY2F0aW9uOihDR0Zsb2F0KW1hZ25pZmljYXRpb24gYXRQ
b2ludDooQ0dQb2ludClwb2ludCBpbW1lZGlhdGVseTooQk9PTClpbW1lZGlhdGVseTsKKworLSAo
Q0dQb2ludClzY3JvbGxQb3NpdGlvbjsKKy0gKHZvaWQpc2V0U2Nyb2xsUG9zaXRpb246KENHUG9p
bnQpbmV3UG9zaXRpb247CistICh2b2lkKXNjcm9sbFdpdGhEZWx0YTooQ0dTaXplKWRlbHRhOwor
CistICh2b2lkKW1vdXNlRG93bjooTlNFdmVudCAqKWV2ZW50OworLSAodm9pZCltb3VzZU1vdmVk
OihOU0V2ZW50ICopZXZlbnQ7CistICh2b2lkKW1vdXNlVXA6KE5TRXZlbnQgKilldmVudDsKKy0g
KHZvaWQpbW91c2VEcmFnZ2VkOihOU0V2ZW50ICopZXZlbnQ7CistICh2b2lkKW1vdXNlRW50ZXJl
ZDooTlNFdmVudCAqKWV2ZW50OworLSAodm9pZCltb3VzZUV4aXRlZDooTlNFdmVudCAqKWV2ZW50
OworCistIChOU0FycmF5ICopZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgY2FzZVNlbnNp
dGl2ZTooQk9PTClpc0Nhc2VTZW5zaXRpdmUgaGlnaGxpZ2h0TWF0Y2hlczooQk9PTClzaG91bGRI
aWdobGlnaHRNYXRjaGVzOworCistIChpZCljdXJyZW50U2VsZWN0aW9uOworLSAodm9pZCljb3B5
U2VsZWN0aW9uOworLSAodm9pZClzZWxlY3RBbGw7CisKKy0gKGJvb2wpa2V5RG93bjooTlNFdmVu
dCAqKWV2ZW50OworCistICh2b2lkKXNldEhVREVuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKKy0gKEJP
T0wpaHVkRW5hYmxlZDsKKworLSAoQ0dSZWN0KWJvdW5kc0ZvckFubm90YXRpb246KFBERkFubm90
YXRpb24gKilhbm5vdGF0aW9uOworCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCBjZDU4ZDg3Li5hNWQ0OTZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgK
QEAgLTM4LDE2ICszOCwxOSBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHQq
IEpTQ29udGV4dFJlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUpTVmFsdWUqIEpTT2JqZWN0UmVm
OwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNWYWx1ZVJlZjsKIAorT0JK
Q19DTEFTUyBQREZBbm5vdGF0aW9uOwogT0JKQ19DTEFTUyBQREZMYXllckNvbnRyb2xsZXI7CiBP
QkpDX0NMQVNTIFdLUERGTGF5ZXJDb250cm9sbGVyRGVsZWdhdGU7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIEVsZW1lbnQ7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFBsdWdpblZpZXc7CitjbGFzcyBQREZQbHVnaW5Bbm5vdGF0aW9u
OwogY2xhc3MgV2ViRnJhbWU7CiAKIGNsYXNzIFBERlBsdWdpbiA6IHB1YmxpYyBTaW1wbGVQREZQ
bHVnaW4gewpAQCAtNTYsNiArNTksNyBAQCBwdWJsaWM6CiAgICAgflBERlBsdWdpbigpOwogCiAg
ICAgdm9pZCBwYWludENvbnRyb2xGb3JMYXllckluQ29udGV4dChDQUxheWVyICosIENHQ29udGV4
dFJlZik7CisgICAgdm9pZCBzZXRBY3RpdmVBbm5vdGF0aW9uKFBERkFubm90YXRpb24gKik7CiAg
ICAgCiAgICAgdXNpbmcgU2Nyb2xsYWJsZUFyZWE6Om5vdGlmeVNjcm9sbFBvc2l0aW9uQ2hhbmdl
ZDsKIApAQCAtOTEsNiArOTUsOSBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDQUxheWVyPiBt
X3Njcm9sbENvcm5lckxheWVyOwogICAgIFJldGFpblB0cjxQREZMYXllckNvbnRyb2xsZXI+IG1f
cGRmTGF5ZXJDb250cm9sbGVyOwogICAgIAorICAgIFJlZlB0cjxQREZQbHVnaW5Bbm5vdGF0aW9u
PiBtX2FjdGl2ZUFubm90YXRpb247CisgICAgUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IG1fYW5u
b3RhdGlvbkNvbnRhaW5lcjsKKwogICAgIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSBtX3Jvb3RW
aWV3VG9QbHVnaW5UcmFuc2Zvcm07CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9sYXN0TW91c2VQ
b2ludDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KaW5kZXggYzVhMzQ2OS4uOWJlNzIzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTI5LDYgKzI5
LDcgQEAKICNpbXBvcnQgIlBERlBsdWdpbi5oIgogCiAjaW1wb3J0ICJQREZLaXRJbXBvcnRzLmgi
CisjaW1wb3J0ICJQREZQbHVnaW5Bbm5vdGF0aW9uLmgiCiAjaW1wb3J0ICJQbHVnaW5WaWV3Lmgi
CiAjaW1wb3J0ICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbXBvcnQgIldlYkV2ZW50LmgiCkBAIC0z
NywxMSArMzgsMTQgQEAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2hyb21lLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0NTU1ByaW1pdGl2ZVZhbHVlLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0NTU1Byb3BlcnR5TmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zy
YW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1lbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSFRUUEhlYWRlck1hcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRT
dHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KQEAgLTUxLDY0ICs1NSw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL1Njcm9sbEFuaW1hdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9s
bGJhclRoZW1lLmg+CiAKLUBwcm90b2NvbCBQREZMYXllckNvbnRyb2xsZXJEZWxlZ2F0ZSA8TlNP
YmplY3Q+Ci0KLS0gKHZvaWQpdXBkYXRlU2Nyb2xsUG9zaXRpb246KENHUG9pbnQpbmV3UG9zaXRp
b247Ci0tICh2b2lkKXdyaXRlSXRlbXNUb1Bhc3RlYm9hcmQ6KE5TQXJyYXkgKilpdGVtcyB3aXRo
VHlwZXM6KE5TQXJyYXkgKil0eXBlczsKLS0gKHZvaWQpc2hvd0RlZmluaXRpb25Gb3JBdHRyaWJ1
dGVkU3RyaW5nOihOU0F0dHJpYnV0ZWRTdHJpbmcgKilzdHJpbmcgYXRQb2ludDooQ0dQb2ludClw
b2ludDsKLS0gKHZvaWQpcGVyZm9ybVdlYlNlYXJjaDooTlNTdHJpbmcgKilzdHJpbmc7Ci0tICh2
b2lkKW9wZW5XaXRoUHJldmlldzsKLS0gKHZvaWQpc2F2ZVRvUERGOwotCi1AZW5kCi0KLUBpbnRl
cmZhY2UgUERGTGF5ZXJDb250cm9sbGVyIDogTlNPYmplY3QKLUBlbmQKLQotQGludGVyZmFjZSBQ
REZMYXllckNvbnRyb2xsZXIgKERldGFpbHMpCi0KLUBwcm9wZXJ0eSAocmV0YWluKSBDQUxheWVy
ICpwYXJlbnRMYXllcjsKLUBwcm9wZXJ0eSAocmV0YWluKSBQREZEb2N1bWVudCAqZG9jdW1lbnQ7
Ci1AcHJvcGVydHkgKHJldGFpbikgaWQ8UERGTGF5ZXJDb250cm9sbGVyRGVsZWdhdGU+IGRlbGVn
YXRlOwotCi0tICh2b2lkKXNldEZyYW1lU2l6ZTooQ0dTaXplKXNpemU7Ci0KLS0gKHZvaWQpc2V0
RGlzcGxheU1vZGU6KGludCltb2RlOwotLSAodm9pZClzZXREaXNwbGF5c1BhZ2VCcmVha3M6KEJP
T0wpcGFnZUJyZWFrczsKLQotLSAoQ0dGbG9hdCl0aWxlU2NhbGVGYWN0b3I7Ci0tICh2b2lkKXNl
dFRpbGVTY2FsZUZhY3RvcjooQ0dGbG9hdClzY2FsZUZhY3RvcjsKLQotLSAoQ0dTaXplKWNvbnRl
bnRTaXplOwotLSAoQ0dTaXplKWNvbnRlbnRTaXplUmVzcGVjdGluZ1pvb207Ci0KLS0gKHZvaWQp
c25hcHNob3RJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0OwotCi0tICh2b2lkKW1hZ25p
ZnlXaXRoTWFnbmlmaWNhdGlvbjooQ0dGbG9hdCltYWduaWZpY2F0aW9uIGF0UG9pbnQ6KENHUG9p
bnQpcG9pbnQgaW1tZWRpYXRlbHk6KEJPT0wpaW1tZWRpYXRlbHk7Ci0KLS0gKENHUG9pbnQpc2Ny
b2xsUG9zaXRpb247Ci0tICh2b2lkKXNldFNjcm9sbFBvc2l0aW9uOihDR1BvaW50KW5ld1Bvc2l0
aW9uOwotLSAodm9pZClzY3JvbGxXaXRoRGVsdGE6KENHU2l6ZSlkZWx0YTsKLQotLSAodm9pZClt
b3VzZURvd246KE5TRXZlbnQgKilldmVudDsKLS0gKHZvaWQpbW91c2VNb3ZlZDooTlNFdmVudCAq
KWV2ZW50OwotLSAodm9pZCltb3VzZVVwOihOU0V2ZW50ICopZXZlbnQ7Ci0tICh2b2lkKW1vdXNl
RHJhZ2dlZDooTlNFdmVudCAqKWV2ZW50OwotLSAodm9pZCltb3VzZUVudGVyZWQ6KE5TRXZlbnQg
KilldmVudDsKLS0gKHZvaWQpbW91c2VFeGl0ZWQ6KE5TRXZlbnQgKilldmVudDsKLQotLSAoTlNB
cnJheSAqKWZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGNhc2VTZW5zaXRpdmU6KEJPT0wp
aXNDYXNlU2Vuc2l0aXZlIGhpZ2hsaWdodE1hdGNoZXM6KEJPT0wpc2hvdWxkSGlnaGxpZ2h0TWF0
Y2hlczsKLQotLSAoaWQpY3VycmVudFNlbGVjdGlvbjsKLS0gKHZvaWQpY29weVNlbGVjdGlvbjsK
LS0gKHZvaWQpc2VsZWN0QWxsOwotCi0tIChib29sKWtleURvd246KE5TRXZlbnQgKilldmVudDsK
LQotLSAodm9pZClzZXRIVURFbmFibGVkOihCT09MKWVuYWJsZWQ7Ci0tIChCT09MKWh1ZEVuYWJs
ZWQ7Ci0KLUBlbmQKKyNpbXBvcnQgIlBERkxheWVyQ29udHJvbGxlckRldGFpbHMuaCIKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTExNyw3ICs2NCw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogICAgIFdlYktpdDo6UERGUGx1Z2luKiBfcGRmUGx1Z2luOwogfQogCi1AcHJv
cGVydHkgKGFzc2lnbikgV2ViS2l0OjpQREZQbHVnaW4qIHBkZlBsdWdpbjsKK0Bwcm9wZXJ0eShh
c3NpZ24pIFdlYktpdDo6UERGUGx1Z2luKiBwZGZQbHVnaW47CiAKIEBlbmQKIApAQCAtMTUyLDcg
Kzk5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgV2ViS2l0OjpQREZQbHVnaW4q
IF9wZGZQbHVnaW47CiB9CiAKLUBwcm9wZXJ0eSAoYXNzaWduKSBXZWJLaXQ6OlBERlBsdWdpbiog
cGRmUGx1Z2luOworQHByb3BlcnR5KGFzc2lnbikgV2ViS2l0OjpQREZQbHVnaW4qIHBkZlBsdWdp
bjsKIAogQGVuZAogCkBAIC0yMDgsMTAgKzE1NSwxNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQogCistICh2b2lkKXBkZkxheWVyQ29udHJv
bGxlcjooUERGTGF5ZXJDb250cm9sbGVyICopcGRmTGF5ZXJDb250cm9sbGVyIGRpZENoYW5nZUFj
dGl2ZUFubm90YXRpb246KFBERkFubm90YXRpb24gKilhbm5vdGF0aW9uCit7CisgICAgX3BkZlBs
dWdpbi0+c2V0QWN0aXZlQW5ub3RhdGlvbihhbm5vdGF0aW9uKTsKK30KKwogQGVuZAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogUGFzc1JlZlB0
cjxQREZQbHVnaW4+IFBERlBsdWdpbjo6Y3JlYXRlKFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBERlBsdWdpbihmcmFtZSkpOwpAQCAtMjI3LDcgKzE4MSwyOCBA
QCBQREZQbHVnaW46OlBERlBsdWdpbihXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgbV9wZGZMYXll
ckNvbnRyb2xsZXIuZ2V0KCkuZGVsZWdhdGUgPSBtX3BkZkxheWVyQ29udHJvbGxlckRlbGVnYXRl
LmdldCgpOwogICAgIG1fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgpLnBhcmVudExheWVyID0gbV9j
b250ZW50TGF5ZXIuZ2V0KCk7Ci0gICAgCisKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHN1cHBv
cnQgZm9ybXMgZm9yIGlubGluZSBQREZzPyBTaW5jZSB3ZSB0b3VjaCB0aGUgZG9jdW1lbnQsIHRo
aXMgbWlnaHQgYmUgZGlmZmljdWx0LgorICAgIGlmICh3ZWJGcmFtZSgpLT5pc01haW5GcmFtZSgp
KSB7CisgICAgICAgIC8vIFNldCBvdmVyZmxvdzogaGlkZGVuIG9uIHRoZSBhbm5vdGF0aW9uIGNv
bnRhaW5lciBzbyA8aW5wdXQ+IGVsZW1lbnRzIHNjcm9sbGVkIG91dCBvZiB2aWV3IGRvbid0IHNo
b3cKKyAgICAgICAgLy8gc2Nyb2xsYmFycyBvbiB0aGUgYm9keS4gV2UgY2FuJ3QgYWRkIGFubm90
YXRpb25zIGRpcmVjdGx5IHRvIHRoZSBib2R5LCBiZWNhdXNlIG92ZXJmbG93OiBoaWRkZW4gb24g
dGhlIGJvZHkKKyAgICAgICAgLy8gd2lsbCBicmVhayBydWJiZXItYmFuZGluZy4KKyAgICAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gd2ViRnJhbWUoKS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCk7
CisgICAgICAgIG1fYW5ub3RhdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50
KGRpdlRhZywgZmFsc2UpOworICAgICAgICBTdHlsZWRFbGVtZW50KiBhbm5vdGF0aW9uQ29udGFp
bmVyID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG1fYW5ub3RhdGlvbkNvbnRhaW5lci5n
ZXQoKSk7CisKKyAgICAgICAgYW5ub3RhdGlvbkNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93LCAiaGlkZGVuIik7CisgICAgICAgIGFubm90YXRpb25D
b250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb3NpdGlvbiwgImFi
c29sdXRlIik7CisgICAgICAgIGFubm90YXRpb25Db250YWluZXItPnNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzLCAibm9uZSIpOworICAgICAgICBhbm5vdGF0
aW9uQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCAwLjAs
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBhbm5vdGF0aW9uQ29udGFpbmVy
LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgMC4wLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgYW5ub3RhdGlvbkNvbnRhaW5lci0+c2V0SW5saW5l
U3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVJpZ2h0LCAwLjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFgpOworICAgICAgICBhbm5vdGF0aW9uQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5Qm90dG9tLCAwLjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwor
CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBkb2N1bWVudC0+Ym9keSgp
LT5hcHBlbmRDaGlsZChtX2Fubm90YXRpb25Db250YWluZXIuZ2V0KCksIGVjKTsKKyAgICB9CisK
ICAgICBbbV9jb250YWluZXJMYXllci5nZXQoKSBhZGRTdWJsYXllcjptX2NvbnRlbnRMYXllci5n
ZXQoKV07CiAgICAgW21fY29udGFpbmVyTGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6bV9zY3JvbGxD
b3JuZXJMYXllci5nZXQoKV07CiB9CkBAIC0zMDAsNiArMjc1LDggQEAgdm9pZCBQREZQbHVnaW46
OnBkZkRvY3VtZW50RGlkTG9hZCgpCiAgICAgCiAgICAgcGx1Z2luVmlldygpLT5zZXRQYWdlU2Nh
bGVGYWN0b3IoW21fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgpIHRpbGVTY2FsZUZhY3Rvcl0sIElu
dFBvaW50KCkpOwogCisgICAgbm90aWZ5U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKEludFBvaW50KFtt
X3BkZkxheWVyQ29udHJvbGxlci5nZXQoKSBzY3JvbGxQb3NpdGlvbl0pKTsKKwogICAgIGNhbGN1
bGF0ZVNpemVzKCk7CiAgICAgdXBkYXRlU2Nyb2xsYmFycygpOwogCkBAIC0zMjUsNiArMzAyLDkg
QEAgdm9pZCBQREZQbHVnaW46OmRlc3Ryb3koKQogICAgICAgICAgICAgZnJhbWVWaWV3LT5yZW1v
dmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKICAgICB9CiAKKyAgICBtX2FjdGl2ZUFubm90YXRpb24g
PSAwOworICAgIG1fYW5ub3RhdGlvbkNvbnRhaW5lciA9IDA7CisKICAgICBkZXN0cm95U2Nyb2xs
YmFyKEhvcml6b250YWxTY3JvbGxiYXIpOwogICAgIGRlc3Ryb3lTY3JvbGxiYXIoVmVydGljYWxT
Y3JvbGxiYXIpOwogICAgIApAQCAtNDA1LDExICszODUsMTUgQEAgdm9pZCBQREZQbHVnaW46Omdl
b21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3Qm
LCBjb24KICAgICAKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBtX2xhc3RNb3VzZVBvaW50LCB3
ZSBzaG91bGQgdXNlIHRoZSB6b29tIG9yaWdpbiBmcm9tIFBsdWdpblZpZXc6OnNldFBhZ2VTY2Fs
ZUZhY3Rvci4KICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgbWFnbmlmeVdpdGhNYWdu
aWZpY2F0aW9uOm1hZ25pZmljYXRpb24gYXRQb2ludDptX2xhc3RNb3VzZVBvaW50IGltbWVkaWF0
ZWx5OllFU107Ci0gICAgW21fY29udGVudExheWVyLmdldCgpIHNldFN1YmxheWVyVHJhbnNmb3Jt
OkNBVHJhbnNmb3JtM0RUcmFuc2xhdGUodHJhbnNmb3JtLCAwLCAtcGx1Z2luU2l6ZS5oZWlnaHQo
KSwgMCldOwotICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiAKICAgICBjYWxjdWxhdGVTaXpl
cygpOwogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKKworICAgIGlmIChtX2FjdGl2ZUFubm90YXRp
b24pCisgICAgICAgIG1fYWN0aXZlQW5ub3RhdGlvbi0+dXBkYXRlR2VvbWV0cnkoKTsKKworICAg
IFttX2NvbnRlbnRMYXllci5nZXQoKSBzZXRTdWJsYXllclRyYW5zZm9ybTpDQVRyYW5zZm9ybTNE
VHJhbnNsYXRlKHRyYW5zZm9ybSwgMCwgLXBsdWdpblNpemUuaGVpZ2h0KCksIDApXTsKKyAgICBb
Q0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogICAgIAogc3RhdGljIE5TVUludGVnZXIgbW9kaWZp
ZXJGbGFnc0Zyb21XZWJFdmVudChjb25zdCBXZWJFdmVudCYgZXZlbnQpCkBAIC01NjEsNyArNTQ1
LDE0IEBAIGJvb2wgUERGUGx1Z2luOjppc0VkaXRpbmdDb21tYW5kRW5hYmxlZChjb25zdCBTdHJp
bmcmIGNvbW1hbmROYW1lKQogdm9pZCBQREZQbHVnaW46OnNldFNjcm9sbE9mZnNldChjb25zdCBJ
bnRQb2ludCYgb2Zmc2V0KQogewogICAgIFNpbXBsZVBERlBsdWdpbjo6c2V0U2Nyb2xsT2Zmc2V0
KG9mZnNldCk7CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW21fcGRmTGF5ZXJD
b250cm9sbGVyLmdldCgpIHNldFNjcm9sbFBvc2l0aW9uOm9mZnNldF07CisKKyAgICBpZiAobV9h
Y3RpdmVBbm5vdGF0aW9uKQorICAgICAgICBtX2FjdGl2ZUFubm90YXRpb24tPnVwZGF0ZUdlb21l
dHJ5KCk7CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCiB2b2lkIFBERlBsdWdp
bjo6aW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCkBAIC01NzcsNiArNTY4LDIzIEBAIHZvaWQgUERGUGx1Z2luOjppbnZhbGlk
YXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIFttX3Njcm9sbENv
cm5lckxheWVyLmdldCgpIHNldE5lZWRzRGlzcGxheV07CiB9CiAKK3ZvaWQgUERGUGx1Z2luOjpz
ZXRBY3RpdmVBbm5vdGF0aW9uKFBERkFubm90YXRpb24gKmFubm90YXRpb24pCit7CisgICAgLy8g
RklYTUU6IFNob3VsZCB3ZSBzdXBwb3J0IGZvcm1zIGZvciBpbmxpbmUgUERGcz8gU2luY2Ugd2Ug
dG91Y2ggdGhlIGRvY3VtZW50LCB0aGlzIG1pZ2h0IGJlIGRpZmZpY3VsdC4KKyAgICBpZiAoIXdl
YkZyYW1lKCktPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2Fj
dGl2ZUFubm90YXRpb24pCisgICAgICAgIG1fYWN0aXZlQW5ub3RhdGlvbi0+Y29tbWl0KCk7CisK
KyAgICBpZiAoYW5ub3RhdGlvbikgeworICAgICAgICBtX2FjdGl2ZUFubm90YXRpb24gPSBQREZQ
bHVnaW5Bbm5vdGF0aW9uOjpjcmVhdGUoYW5ub3RhdGlvbiwgbV9wZGZMYXllckNvbnRyb2xsZXIu
Z2V0KCksIHRoaXMpOworICAgICAgICBtX2FjdGl2ZUFubm90YXRpb24tPmF0dGFjaChtX2Fubm90
YXRpb25Db250YWluZXIuZ2V0KCkpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIG1fYWN0aXZl
QW5ub3RhdGlvbiA9IDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
RU5BQkxFKFBERktJVF9QTFVHSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNzk2YjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaApAQCAt
MCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUERGUGx1Z2luQW5ub3RhdGlvbl9o
CisjZGVmaW5lIFBERlBsdWdpbkFubm90YXRpb25faAorCisjaWYgRU5BQkxFKFBERktJVF9QTFVH
SU4pCisKKyNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50TGlzdGVuZXIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBFbGVtZW50OworfQorCitPQkpDX0NMQVNT
IFBERkFubm90YXRpb247CitPQkpDX0NMQVNTIFBERkxheWVyQ29udHJvbGxlcjsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFBERlBsdWdpbjsKKworY2xhc3MgUERGUGx1Z2luQW5ub3Rh
dGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFBERlBsdWdpbkFubm90YXRpb24+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQREZQbHVnaW5Bbm5vdGF0aW9uPiBjcmVhdGUoUERGQW5u
b3RhdGlvbiAqLCBQREZMYXllckNvbnRyb2xsZXIgKiwgUERGUGx1Z2luKik7CisgICAgdmlydHVh
bCB+UERGUGx1Z2luQW5ub3RhdGlvbigpOworCisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVt
ZW50PiBlbGVtZW50KCkgeyByZXR1cm4gbV9lbGVtZW50OyB9CisgICAgUmV0YWluUHRyPFBERkFu
bm90YXRpb24+IGFubm90YXRpb24oKSB7IHJldHVybiBtX2Fubm90YXRpb247IH0KKyAgICBQREZQ
bHVnaW4qIHBsdWdpbigpIHsgcmV0dXJuIG1fcGx1Z2luOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2VvbWV0cnkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0KCkgPSAwOworCisgICAg
dm9pZCBhdHRhY2goV2ViQ29yZTo6RWxlbWVudCopOworCitwcm90ZWN0ZWQ6CisgICAgUERGUGx1
Z2luQW5ub3RhdGlvbihQREZBbm5vdGF0aW9uICphbm5vdGF0aW9uLCBQREZMYXllckNvbnRyb2xs
ZXIgKnBkZkxheWVyQ29udHJvbGxlciwgUERGUGx1Z2luKiBwbHVnaW4pCisgICAgICAgIDogbV9h
bm5vdGF0aW9uKGFubm90YXRpb24pCisgICAgICAgICwgbV9ldmVudExpc3RlbmVyKFBERlBsdWdp
bkFubm90YXRpb25FdmVudExpc3RlbmVyOjpjcmVhdGUodGhpcykpCisgICAgICAgICwgbV9wZGZM
YXllckNvbnRyb2xsZXIocGRmTGF5ZXJDb250cm9sbGVyKQorICAgICAgICAsIG1fcGx1Z2luKHBs
dWdpbikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkVs
ZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkgPSAwOworICAgIFdlYkNvcmU6OkVsZW1l
bnQqIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisKKyAgICBQREZMYXllckNvbnRyb2xs
ZXIgKnBkZkxheWVyQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fcGRmTGF5ZXJDb250cm9sbGVyOyB9
CisKK3ByaXZhdGU6CisgICAgY2xhc3MgUERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIg
OiBwdWJsaWMgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lciB7CisgICAgcHVibGljOgorICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxQREZQbHVnaW5Bbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcj4gY3JlYXRl
KFBERlBsdWdpbkFubm90YXRpb24qIGFubm90YXRpb24pCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIoYW5u
b3RhdGlvbikpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2
ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBPVkVSUklERSB7IHJldHVybiB0aGlzID09ICZsaXN0ZW5l
cjsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50KikgT1ZFUlJJREU7CisKKyAgICBwcml2YXRl
OgorCisgICAgICAgIFBERlBsdWdpbkFubm90YXRpb25FdmVudExpc3RlbmVyKFBERlBsdWdpbkFu
bm90YXRpb24qIGFubm90YXRpb24pCisgICAgICAgICAgICA6IFdlYkNvcmU6OkV2ZW50TGlzdGVu
ZXIoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcjo6Q1BQRXZlbnRMaXN0ZW5lclR5cGUpCisgICAgICAg
ICAgICAsIG1fYW5ub3RhdGlvbihhbm5vdGF0aW9uKQorICAgICAgICB7CisKKyAgICAgICAgfQor
CisgICAgICAgIFBERlBsdWdpbkFubm90YXRpb24qIG1fYW5ub3RhdGlvbjsKKyAgICB9OworCisg
ICAgV2ViQ29yZTo6RWxlbWVudCogbV9wYXJlbnQ7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6RWxl
bWVudD4gbV9lbGVtZW50OworICAgIFJldGFpblB0cjxQREZBbm5vdGF0aW9uPiBtX2Fubm90YXRp
b247CisKKyAgICBSZWZQdHI8UERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXI+IG1fZXZl
bnRMaXN0ZW5lcjsKKworICAgIFBERkxheWVyQ29udHJvbGxlciAqbV9wZGZMYXllckNvbnRyb2xs
ZXI7CisgICAgUERGUGx1Z2luKiBtX3BsdWdpbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFBERktJVF9QTFVHSU4pCisKKyNlbmRpZiAvLyBQREZQbHVn
aW5Bbm5vdGF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5jOWI1YWI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCkBAIC0wLDAg
KzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQorCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBERlBsdWdpbkFubm90YXRpb24uaCIKKworI2ltcG9y
dCAiUERGS2l0SW1wb3J0cy5oIgorI2ltcG9ydCA8UERGS2l0L1BERktpdC5oPgorI2ltcG9ydCAi
UERGUGx1Z2luLmgiCisjaW1wb3J0ICJQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLmgiCisjaW1w
b3J0ICJQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oIgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1h
Yy5oPgorI2ltcG9ydCA8V2ViQ29yZS9DU1NQcmltaXRpdmVWYWx1ZS5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9DU1NQcm9wZXJ0eU5hbWVzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxFbGVtZW50Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
SFRNTE5hbWVzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxPcHRpb25FbGVtZW50Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL0hUTUxTZWxlY3RFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgorCisjaW1wb3J0ICJQ
REZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKworUGFz
c1JlZlB0cjxQREZQbHVnaW5Bbm5vdGF0aW9uPiBQREZQbHVnaW5Bbm5vdGF0aW9uOjpjcmVhdGUo
UERGQW5ub3RhdGlvbiAqYW5ub3RhdGlvbiwgUERGTGF5ZXJDb250cm9sbGVyICpwZGZMYXllckNv
bnRyb2xsZXIsIFBERlBsdWdpbiogcGx1Z2luKQoreworICAgIGlmIChbYW5ub3RhdGlvbiBpc0tp
bmRPZkNsYXNzOnBkZkFubm90YXRpb25UZXh0V2lkZ2V0Q2xhc3MoKV0pCisgICAgICAgIHJldHVy
biBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlKGFubm90YXRpb24sIHBkZkxheWVyQ29u
dHJvbGxlciwgcGx1Z2luKTsKKyAgICBlbHNlIGlmIChbYW5ub3RhdGlvbiBpc0tpbmRPZkNsYXNz
OnBkZkFubm90YXRpb25DaG9pY2VXaWRnZXRDbGFzcygpXSkKKyAgICAgICAgcmV0dXJuIFBERlBs
dWdpbkNob2ljZUFubm90YXRpb246OmNyZWF0ZShhbm5vdGF0aW9uLCBwZGZMYXllckNvbnRyb2xs
ZXIsIHBsdWdpbik7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBQREZQbHVnaW5Bbm5vdGF0
aW9uOjphdHRhY2goRWxlbWVudCogcGFyZW50KQoreworICAgIEFTU0VSVCghbV9wYXJlbnQpOwor
CisgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CisgICAgbV9lbGVtZW50ID0gY3JlYXRlQW5ub3RhdGlv
bkVsZW1lbnQoKTsKKworICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxTdHlsZWRFbGVtZW50Kj4obV9lbGVtZW50LmdldCgpKTsKKyAgICBzdHlsZWRFbGVtZW50
LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5UG9zaXRpb24sICJhYnNvbHV0ZSIp
OworICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQ
b2ludGVyRXZlbnRzLCAiYXV0byIpOworICAgIHN0eWxlZEVsZW1lbnQtPmFkZEV2ZW50TGlzdGVu
ZXIoImNoYW5nZSIsIG1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOworICAgIHN0eWxlZEVsZW1lbnQt
PmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCBtX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKKworICAg
IHVwZGF0ZUdlb21ldHJ5KCk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBtX3Bh
cmVudC0+YXBwZW5kQ2hpbGQoc3R5bGVkRWxlbWVudCwgZWMpOworCisgICAgLy8gRklYTUU6IFRo
ZSB0ZXh0IGN1cnNvciBkb2Vzbid0IGJsaW5rIGFmdGVyIHRoaXMuIFdoeT8KKyAgICBzdHlsZWRF
bGVtZW50LT5mb2N1cygpOworfQorCitQREZQbHVnaW5Bbm5vdGF0aW9uOjp+UERGUGx1Z2luQW5u
b3RhdGlvbigpCit7CisgICAgU3R5bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCA9IHN0YXRpY19j
YXN0PFN0eWxlZEVsZW1lbnQqPihtX2VsZW1lbnQuZ2V0KCkpOworICAgIHN0eWxlZEVsZW1lbnQt
PnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIG1fZXZlbnRMaXN0ZW5lci5nZXQoKSwgZmFs
c2UpOworICAgIHN0eWxlZEVsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLCBtX2V2
ZW50TGlzdGVuZXIuZ2V0KCksIGZhbHNlKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIG1fcGFyZW50LT5yZW1vdmVDaGlsZChzdHlsZWRFbGVtZW50LCBlYyk7Cit9CisKK3ZvaWQg
UERGUGx1Z2luQW5ub3RhdGlvbjo6dXBkYXRlR2VvbWV0cnkoKQoreworICAgIEludFNpemUgZG9j
dW1lbnRTaXplKFttX3BkZkxheWVyQ29udHJvbGxlciBjb250ZW50U2l6ZVJlc3BlY3Rpbmdab29t
XSk7CisgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oW21fcGRmTGF5ZXJDb250cm9sbGVyIHNj
cm9sbFBvc2l0aW9uXSk7CisgICAgTlNSZWN0IGFubm90YXRpb25SZWN0ID0gW21fcGRmTGF5ZXJD
b250cm9sbGVyIGJvdW5kc0ZvckFubm90YXRpb246bV9hbm5vdGF0aW9uLmdldCgpXTsKKworICAg
IFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50
Kj4obV9lbGVtZW50LmdldCgpKTsKKyAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIGFubm90YXRpb25SZWN0LnNpemUud2lkdGgsIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIGFubm90YXRpb25SZWN0LnNpemUuaGVpZ2h0LCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgYW5ub3RhdGlvblJlY3Qub3JpZ2luLnggLSBz
Y3JvbGxQb3NpdGlvbi54KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgIHN0eWxl
ZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIGRvY3VtZW50
U2l6ZS5oZWlnaHQoKSAtIGFubm90YXRpb25SZWN0Lm9yaWdpbi55IC0gYW5ub3RhdGlvblJlY3Qu
c2l6ZS5oZWlnaHQgLSBzY3JvbGxQb3NpdGlvbi55KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpOworfQorCit2b2lkIFBERlBsdWdpbkFubm90YXRpb246OlBERlBsdWdpbkFubm90YXRpb25F
dmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQq
IGV2ZW50KQoreworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZl
bnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQpCisgICAgICAg
IG1fYW5ub3RhdGlvbi0+cGx1Z2luKCktPnNldEFjdGl2ZUFubm90YXRpb24oMCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBERktJVF9QTFVHSU4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bkNob2ljZUFubm90YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmE0NTk5ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24uaApAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uX2gK
KyNkZWZpbmUgUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbl9oCisKKyNpZiBFTkFCTEUoUERGS0lU
X1BMVUdJTikKKworI2luY2x1ZGUgIlBERlBsdWdpbkFubm90YXRpb24uaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgRWxlbWVudDsKK30KKworT0JKQ19DTEFTUyBQREZBbm5vdGF0aW9u
Q2hvaWNlV2lkZ2V0OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUERGUGx1Z2luQ2hv
aWNlQW5ub3RhdGlvbiA6IHB1YmxpYyBQREZQbHVnaW5Bbm5vdGF0aW9uIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uPiBjcmVhdGUoUERG
QW5ub3RhdGlvbiAqLCBQREZMYXllckNvbnRyb2xsZXIgKiwgUERGUGx1Z2luKik7CisgICAgdmly
dHVhbCB+UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbigpIHsgfQorCisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUdlb21ldHJ5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdCgpIE9W
RVJSSURFOworCitwcml2YXRlOgorICAgIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24oUERGQW5u
b3RhdGlvbiAqYW5ub3RhdGlvbiwgUERGTGF5ZXJDb250cm9sbGVyICpwZGZMYXllckNvbnRyb2xs
ZXIsIFBERlBsdWdpbiogcGx1Z2luKQorICAgICAgICA6IFBERlBsdWdpbkFubm90YXRpb24oYW5u
b3RhdGlvbiwgcGRmTGF5ZXJDb250cm9sbGVyLCBwbHVnaW4pCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCgpIE9WRVJSSURFOworCisgICAgUERGQW5ub3RhdGlvbkNob2ljZVdpZGdldCAqY2hvaWNl
QW5ub3RhdGlvbigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFBERkFubm90YXRpb25DaG9pY2VXaWRn
ZXQgKj4oYW5ub3RhdGlvbigpLmdldCgpKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoUERGS0lUX1BMVUdJTikKKworI2VuZGlmIC8vIFBERlBsdWdp
bkNob2ljZUFubm90YXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMDgyNjMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2lj
ZUFubm90YXRpb24ubW0KQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxF
KFBERktJVF9QTFVHSU4pCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUERGUGx1Z2lu
Q2hvaWNlQW5ub3RhdGlvbi5oIgorCisjaW1wb3J0ICJQREZLaXRJbXBvcnRzLmgiCisjaW1wb3J0
IDxQREZLaXQvUERGS2l0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0NTU1ByaW1pdGl2ZVZhbHVlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NTU1Byb3Bl
cnR5TmFtZXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvSFRNTE5hbWVzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxPcHRpb25FbGVtZW50Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxTZWxlY3RFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3Jl
L1BhZ2UuaD4KKworI2ltcG9ydCAiUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CisKK1Bhc3NSZWZQdHI8UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbj4g
UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y3JlYXRlKFBERkFubm90YXRpb24gKmFubm90YXRp
b24sIFBERkxheWVyQ29udHJvbGxlciAqcGRmTGF5ZXJDb250cm9sbGVyLCBQREZQbHVnaW4qIHBs
dWdpbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBERlBsdWdpbkNob2ljZUFubm90YXRp
b24oYW5ub3RhdGlvbiwgcGRmTGF5ZXJDb250cm9sbGVyLCBwbHVnaW4pKTsKK30KKwordm9pZCBQ
REZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjp1cGRhdGVHZW9tZXRyeSgpCit7CisgICAgUERGUGx1
Z2luQW5ub3RhdGlvbjo6dXBkYXRlR2VvbWV0cnkoKTsKKworICAgIFN0eWxlZEVsZW1lbnQqIHN0
eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCgpLmdldCgp
KTsKKyAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFNpemUsIFtbY2hvaWNlQW5ub3RhdGlvbigpIGZvbnRdIHBvaW50U2l6ZV0gKiBbcGRmTGF5
ZXJDb250cm9sbGVyKCkgdGlsZVNjYWxlRmFjdG9yXSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
WCk7Cit9CisKK3ZvaWQgUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y29tbWl0KCkKK3sKKyAg
ICBbY2hvaWNlQW5ub3RhdGlvbigpIHNldFN0cmluZ1ZhbHVlOnN0YXRpY19jYXN0PEhUTUxTZWxl
Y3RFbGVtZW50Kj4oZWxlbWVudCgpLmdldCgpKS0+dmFsdWUoKV07Cit9CisKK1Bhc3NSZWZQdHI8
RWxlbWVudD4gUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1l
bnQoKQoreworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHBhcmVudCgpLT5vd25lckRvY3VtZW50
KCk7CisgICAgUERGQW5ub3RhdGlvbkNob2ljZVdpZGdldCAqY2hvaWNlQW5ub3RhdGlvbiA9IHRo
aXMtPmNob2ljZUFubm90YXRpb24oKTsKKworICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0g
ZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoc2VsZWN0VGFnLCBmYWxzZSk7CisKKyAgICBTdHlsZWRF
bGVtZW50KiBzdHlsZWRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1l
bnQuZ2V0KCkpOworCisgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eUNvbG9yLCBjb2xvckZyb21OU0NvbG9yKFtjaG9pY2VBbm5vdGF0aW9uIGZvbnRD
b2xvcl0pLnNlcmlhbGl6ZWQoKSk7CisgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIFtbY2hvaWNlQW5ub3RhdGlvbiBmb250XSBm
YW1pbHlOYW1lXSk7CisKKyAgICBOU0FycmF5ICpjaG9pY2VzID0gW2Nob2ljZUFubm90YXRpb24g
Y2hvaWNlc107CisgICAgU3RyaW5nIHNlbGVjdGVkQ2hvaWNlID0gW2Nob2ljZUFubm90YXRpb24g
c3RyaW5nVmFsdWVdOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworCisgICAgZm9yIChOU1VJ
bnRlZ2VyIGkgPSAwLCBjb3VudCA9IGNob2ljZXMuY291bnQ7IGkgPCBjb3VudDsgKytpKSB7Cisg
ICAgICAgIFJlZlB0cjxFbGVtZW50PiBjaG9pY2VPcHRpb24gPSBkb2N1bWVudC0+Y3JlYXRlRWxl
bWVudChvcHRpb25UYWcsIGZhbHNlKTsKKyAgICAgICAgU3RyaW5nIGNob2ljZSA9IFtjaG9pY2Vz
IG9iamVjdEF0SW5kZXg6aV07CisgICAgICAgIGNob2ljZU9wdGlvbi0+c2V0QXR0cmlidXRlKHZh
bHVlQXR0ciwgY2hvaWNlKTsKKyAgICAgICAgY2hvaWNlT3B0aW9uLT5zZXRUZXh0Q29udGVudChj
aG9pY2UsIGVjKTsKKworICAgICAgICBpZiAoY2hvaWNlID09IHNlbGVjdGVkQ2hvaWNlKQorICAg
ICAgICAgICAgY2hvaWNlT3B0aW9uLT5zZXRBdHRyaWJ1dGUoc2VsZWN0ZWRBdHRyLCAic2VsZWN0
ZWQiKTsKKworICAgICAgICBzdHlsZWRFbGVtZW50LT5hcHBlbmRDaGlsZChjaG9pY2VPcHRpb24s
IGVjKTsKKyAgICB9CisKKyAgICByZXR1cm4gZWxlbWVudDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUERGS0lUX1BMVUdJTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRp
b24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4
dEFubm90YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2NlMjgw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFBERlBsdWdpblRleHRBbm5vdGF0aW9uX2gKKyNkZWZpbmUgUERGUGx1Z2luVGV4
dEFubm90YXRpb25faAorCisjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCisKKyNpbmNsdWRlICJQ
REZQbHVnaW5Bbm5vdGF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEVsZW1l
bnQ7Cit9CisKK09CSkNfQ0xBU1MgUERGQW5ub3RhdGlvblRleHRXaWRnZXQ7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbiA6IHB1YmxpYyBQREZQ
bHVnaW5Bbm5vdGF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQREZQbHVn
aW5UZXh0QW5ub3RhdGlvbj4gY3JlYXRlKFBERkFubm90YXRpb24gKiwgUERGTGF5ZXJDb250cm9s
bGVyICosIFBERlBsdWdpbiopOworICAgIHZpcnR1YWwgflBERlBsdWdpblRleHRBbm5vdGF0aW9u
KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VvbWV0cnkoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29tbWl0KCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgUERGUGx1
Z2luVGV4dEFubm90YXRpb24oUERGQW5ub3RhdGlvbiAqYW5ub3RhdGlvbiwgUERGTGF5ZXJDb250
cm9sbGVyICpwZGZMYXllckNvbnRyb2xsZXIsIFBERlBsdWdpbiogcGx1Z2luKQorICAgICAgICA6
IFBERlBsdWdpbkFubm90YXRpb24oYW5ub3RhdGlvbiwgcGRmTGF5ZXJDb250cm9sbGVyLCBwbHVn
aW4pCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVt
ZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpIE9WRVJSSURFOworCisgICAgUERGQW5ub3Rh
dGlvblRleHRXaWRnZXQgKiB0ZXh0QW5ub3RhdGlvbigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFBE
RkFubm90YXRpb25UZXh0V2lkZ2V0ICo+KGFubm90YXRpb24oKS5nZXQoKSk7IH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBERktJVF9QTFVHSU4pCisK
KyNlbmRpZiAvLyBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5u
b3RhdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDFlMDBiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQpAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oIgorCisjaW1wb3J0ICJQREZLaXRJbXBvcnRzLmgi
CisjaW1wb3J0IDxQREZLaXQvUERGS2l0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0NTU1ByaW1pdGl2ZVZhbHVlLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0NTU1Byb3BlcnR5TmFtZXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1lbnQuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1M
TmFtZXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTFRleHRBcmVhRWxlbWVudC5oPgorI2ltcG9y
dCA8V2ViQ29yZS9QYWdlLmg+CisKKyNpbXBvcnQgIlBERkxheWVyQ29udHJvbGxlckRldGFpbHMu
aCIKKworQGludGVyZmFjZSBQREZBbm5vdGF0aW9uVGV4dFdpZGdldCAoRGV0YWlscykKKy0gKEJP
T0wpaXNNdWx0aWxpbmU7CitAZW5kCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKworc3RhdGljIGNv
bnN0IFN0cmluZyBjc3NBbGlnbm1lbnRWYWx1ZUZvck5TVGV4dEFsaWdubWVudChOU1RleHRBbGln
bm1lbnQgYWxpZ25tZW50KQoreworICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7CisgICAgY2FzZSBO
U0xlZnRUZXh0QWxpZ25tZW50OgorICAgICAgICByZXR1cm4gImxlZnQiOworICAgIGNhc2UgTlNS
aWdodFRleHRBbGlnbm1lbnQ6CisgICAgICAgIHJldHVybiAicmlnaHQiOworICAgIGNhc2UgTlND
ZW50ZXJUZXh0QWxpZ25tZW50OgorICAgICAgICByZXR1cm4gImNlbnRlciI7CisgICAgY2FzZSBO
U0p1c3RpZmllZFRleHRBbGlnbm1lbnQ6CisgICAgICAgIHJldHVybiAianVzdGZ5IjsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gImluaGVyaXQiOworICAgIH0KK30KKworUGFzc1JlZlB0
cjxQREZQbHVnaW5UZXh0QW5ub3RhdGlvbj4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0
ZShQREZBbm5vdGF0aW9uICphbm5vdGF0aW9uLCBQREZMYXllckNvbnRyb2xsZXIgKnBkZkxheWVy
Q29udHJvbGxlciwgUERGUGx1Z2luKiBwbHVnaW4pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbihhbm5vdGF0aW9uLCBwZGZMYXllckNvbnRyb2xsZXIs
IHBsdWdpbikpOworfQorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpblRleHRBbm5vdGF0
aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCit7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVs
ZW1lbnQ7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBwYXJlbnQoKS0+b3duZXJEb2N1bWVu
dCgpOworICAgIFBERkFubm90YXRpb25UZXh0V2lkZ2V0ICp0ZXh0QW5ub3RhdGlvbiA9IHRoaXMt
PnRleHRBbm5vdGF0aW9uKCk7CisgICAgYm9vbCBpc011bHRpbGluZSA9IFt0ZXh0QW5ub3RhdGlv
biBpc011bHRpbGluZV07CisKKyAgICBpZiAoaXNNdWx0aWxpbmUpCisgICAgICAgIGVsZW1lbnQg
PSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudCh0ZXh0YXJlYVRhZywgZmFsc2UpOworICAgIGVsc2UK
KyAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50KGlucHV0VGFnLCBmYWxz
ZSk7CisKKyAgICBTdHlsZWRFbGVtZW50KiBzdHlsZWRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5
bGVkRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpOworICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvciwgY29sb3JGcm9tTlNDb2xvcihbdGV4dEFu
bm90YXRpb24gZm9udENvbG9yXSkuc2VyaWFsaXplZCgpKTsKKyAgICBzdHlsZWRFbGVtZW50LT5z
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgW1t0ZXh0QW5ub3Rh
dGlvbiBmb250XSBmYW1pbHlOYW1lXSk7CisgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgY3NzQWxpZ25tZW50VmFsdWVGb3JOU1Rl
eHRBbGlnbm1lbnQoW3RleHRBbm5vdGF0aW9uIGFsaWdubWVudF0pKTsKKworICAgIGlmIChpc011
bHRpbGluZSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KHN0eWxl
ZEVsZW1lbnQpLT5zZXRWYWx1ZShbdGV4dEFubm90YXRpb24gc3RyaW5nVmFsdWVdKTsKKyAgICBl
bHNlCisgICAgICAgIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzdHlsZWRFbGVtZW50
KS0+c2V0VmFsdWUoW3RleHRBbm5vdGF0aW9uIHN0cmluZ1ZhbHVlXSk7CisKKyAgICByZXR1cm4g
ZWxlbWVudDsKK30KKwordm9pZCBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6dXBkYXRlR2VvbWV0
cnkoKQoreworICAgIFBERlBsdWdpbkFubm90YXRpb246OnVwZGF0ZUdlb21ldHJ5KCk7CisKKyAg
ICBTdHlsZWRFbGVtZW50KiBzdHlsZWRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVu
dCo+KGVsZW1lbnQoKS5nZXQoKSk7CisgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBbW3RleHRBbm5vdGF0aW9uKCkgZm9udF0gcG9p
bnRTaXplXSAqIFtwZGZMYXllckNvbnRyb2xsZXIoKSB0aWxlU2NhbGVGYWN0b3JdLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BYKTsKK30KKwordm9pZCBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6
Y29tbWl0KCkKK3sKKyAgICBQREZBbm5vdGF0aW9uVGV4dFdpZGdldCAqdGV4dEFubm90YXRpb24g
PSB0aGlzLT50ZXh0QW5ub3RhdGlvbigpOworCisgICAgaWYgKFt0ZXh0QW5ub3RhdGlvbiBpc011
bHRpbGluZV0pCisgICAgICAgIFt0ZXh0QW5ub3RhdGlvbiBzZXRTdHJpbmdWYWx1ZTpzdGF0aWNf
Y2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4oZWxlbWVudCgpLmdldCgpKS0+dmFsdWUoKV07Cisg
ICAgZWxzZQorICAgICAgICBbdGV4dEFubm90YXRpb24gc2V0U3RyaW5nVmFsdWU6c3RhdGljX2Nh
c3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQoKS5nZXQoKSktPnZhbHVlKCldOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQREZLSVRfUExVR0lOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDlk
ZTgxYmQuLjk0YWE3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTYzMCw2ICs2MzAsMjAgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJh
eT4gV2ViUGFnZTo6dHJhY2tlZFJlcGFpbnRSZWN0cygpCiAgICAgcmV0dXJuIEltbXV0YWJsZUFy
cmF5OjphZG9wdCh2ZWN0b3IpOwogfQogCitzdGF0aWMgUGx1Z2luVmlldyogZm9jdXNlZFBsdWdp
blZpZXdGb3JGcmFtZShGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQo
KS0+aXNQbHVnaW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFBsdWdpbkRv
Y3VtZW50KiBwbHVnaW5Eb2N1bWVudCA9IHN0YXRpY19jYXN0PFBsdWdpbkRvY3VtZW50Kj4oZnJh
bWUtPmRvY3VtZW50KCkpOworCisgICAgaWYgKHBsdWdpbkRvY3VtZW50LT5mb2N1c2VkTm9kZSgp
ICE9IHBsdWdpbkRvY3VtZW50LT5wbHVnaW5Ob2RlKCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHN0YXRpY19jYXN0PFBsdWdpblZpZXcqPihwbHVn
aW5Eb2N1bWVudC0+cGx1Z2luV2lkZ2V0KCkpOworICAgIHJldHVybiBwbHVnaW5WaWV3OworfQor
CiBzdGF0aWMgUGx1Z2luVmlldyogcGx1Z2luVmlld0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkKIHsK
ICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkpCkBAIC02NDYs
NyArNjYwLDcgQEAgdm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdGluZ0NvbW1hbmQoY29uc3QgU3Ry
aW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmcKICAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZp
ZXdGb3JGcmFtZShmcmFtZSkpIHsKKyAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IGZv
Y3VzZWRQbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUpKSB7CiAgICAgICAgIHBsdWdpblZpZXctPmhh
bmRsZUVkaXRpbmdDb21tYW5kKGNvbW1hbmROYW1lLCBhcmd1bWVudCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC02NjAsNyArNjc0LDcgQEAgYm9vbCBXZWJQYWdlOjppc0VkaXRpbmdDb21t
YW5kRW5hYmxlZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQogICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0g
cGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lKSkKKyAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmll
dyA9IGZvY3VzZWRQbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm4gcGx1
Z2luVmlldy0+aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29tbWFuZE5hbWUpOwogICAgIAogICAg
IEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1h
bmROYW1lKTsKQEAgLTE1NzMsNyArMTU4Nyw3IEBAIHZvaWQgV2ViUGFnZTo6dmFsaWRhdGVDb21t
YW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAg
aW50MzJfdCBzdGF0ZSA9IDA7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKGZyYW1lKSB7Ci0gICAgICAg
IGlmIChQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lKSkK
KyAgICAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBmb2N1c2VkUGx1Z2luVmlld0Zv
ckZyYW1lKGZyYW1lKSkKICAgICAgICAgICAgIGlzRW5hYmxlZCA9IHBsdWdpblZpZXctPmlzRWRp
dGluZ0NvbW1hbmRFbmFibGVkKGNvbW1hbmROYW1lKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChj
b21tYW5kTmFtZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170465</attachid>
            <date>2012-10-24 13:54:55 -0700</date>
            <delta_ts>2012-10-30 23:15:13 -0700</delta_ts>
            <desc>addressing most of Darin&apos;s comments</desc>
            <filename>forms.diff</filename>
            <type>text/plain</type>
            <size>65914</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NjcxYjNkLi41YTA4ZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTItMTAtMjMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgRnVsbC1wYWdlIFBERlBsdWdpbiBzaG91bGQgc3VwcG9ydCBpbmxpbmUgZm9ybSBl
ZGl0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDAxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgZm9ybSBjb250cm9scyBjb3JyZXNwb25kaW5nIHRvIFRleHQgYW5kIENob2ljZSBQREYgYW5u
b3RhdGlvbnMsCisgICAgICAgIGFsbG93aW5nIGZvciBzaW5nbGUtIGFuZCBtdWx0aS1saW5lIHRl
eHQgaW5wdXQsIGFuZCA8b3B0aW9uPi1saWtlIGlucHV0LgorCisgICAgICAgIEN1cnJlbnRseSwg
Zm9ybXMgYXJlIG9ubHkgaW1wbGVtZW50ZWQgZm9yIGZ1bGwtcGFnZSBQREYgZG9jdW1lbnRzLgor
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9zZSBhIHZhcmlldHkgb2YgYWRkaXRpb25h
bCBXZWJDb3JlIGZ1bmN0aW9uYWxpdHkgdG8gV2ViS2l0Mi4KKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEV4cG9zZSBzb21lIG1vcmUgV2ViQ29yZSBoZWFkZXJz
IGFzIHByaXZhdGUgaGVhZGVycyBmb3IgdXNlIGluIFdlYktpdDIuCisKIDIwMTItMTAtMjQgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIHN0cmF0ZWd5
IGZvciBsb2FkZXIgY3VzdG9taXphdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNDYxOWEy
NS4uNGMxYWEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTIxNCw2ICsyMTQsOCBAQCBfX1pO
N1dlYkNvcmUxM0FYT2JqZWN0Q2FjaGUyMWdBY2Nlc3NpYmlsaXR5RW5hYmxlZEUKIF9fWk43V2Vi
Q29yZTEzQVhPYmplY3RDYWNoZTIzZm9jdXNlZFVJRWxlbWVudEZvclBhZ2VFUEtOU180UGFnZUUK
IF9fWk43V2ViQ29yZTEzQVhPYmplY3RDYWNoZTQyZ0FjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJ
bnRlcmZhY2VFbmFibGVkRQogX19aTjdXZWJDb3JlMTNDaGFyYWN0ZXJEYXRhN3NldERhdGFFUktO
M1dURjZTdHJpbmdFUmkKK19fWk43V2ViQ29yZTEzQ29udGFpbmVyTm9kZTExYXBwZW5kQ2hpbGRF
TjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUVSaWIKK19fWk43V2ViQ29yZTEzQ29udGFpbmVy
Tm9kZTExcmVtb3ZlQ2hpbGRFUE5TXzROb2RlRVJpCiBfX1pON1dlYkNvcmUxM0hUVFBIZWFkZXJN
YXBDMUV2CiBfX1pON1dlYkNvcmUxM0hUVFBIZWFkZXJNYXBEMUV2CiBfX1pON1dlYkNvcmUxM0hp
dFRlc3RSZXN1bHRDMUVSS1MwXwpAQCAtMjI1LDYgKzIyNyw4IEBAIF9fWk43V2ViQ29yZTEzS2V5
Ym9hcmRFdmVudEMxRVJLTjNXVEYxMkF0b21pY1N0cmluZ0ViYlBOU185RE9NV2luZG93RVJLTlMx
XzZTdHJpCiBfX1pON1dlYkNvcmUxM0tleWJvYXJkRXZlbnRDMUVSS05TXzIxUGxhdGZvcm1LZXli
b2FyZEV2ZW50RVBOU185RE9NV2luZG93RQogX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVycm9yQzFF
UDdOU0Vycm9yCiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JDMUVQOV9fQ0ZFcnJvcgorX19a
TjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5TXzEzQ1NT
UHJvcGVydHlJREVSS04zV1RGNlN0cmluZ0ViCitfX1pON1dlYkNvcmUxM1N0eWxlZEVsZW1lbnQy
MnNldElubGluZVN0eWxlUHJvcGVydHlFTlNfMTNDU1NQcm9wZXJ0eUlERWROU18xN0NTU1ByaW1p
dGl2ZVZhbHVlOVVuaXRUeXBlc0ViCiBfX1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlND
OUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNv
cmUxM2RpcmVjdG9yeU5hbWVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxM3RvSFRNTEVs
ZW1lbnRFUE5TXzIxRm9ybUFzc29jaWF0ZWRFbGVtZW50RQpAQCAtMjYzLDYgKzI2Nyw3IEBAIF9f
Wk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb241Y2xlYXJFdgogX19aTjdXZWJDb3JlMTRGcmFtZVNl
bGVjdGlvbjZtb2RpZnlFTlMwXzExRUFsdGVyYXRpb25FTlNfMThTZWxlY3Rpb25EaXJlY3Rpb25F
TlNfMTVUZXh0R3JhbnVsYXJpdHlFTlNfMTRFVXNlclRyaWdnZXJlZEUKIF9fWk43V2ViQ29yZTE0
RnJhbWVTZWxlY3Rpb245c2VsZWN0QWxsRXYKIF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb25D
MUVQTlNfNUZyYW1lRQorX19aTjdXZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEwcGx1Z2luTm9kZUV2
CiBfX1pON1dlYkNvcmUxNFBsdWdpbkRvY3VtZW50MTJwbHVnaW5XaWRnZXRFdgogX19aTjdXZWJD
b3JlMTRSZXNvdXJjZUJ1ZmZlcjEyY3JlYXRlTlNEYXRhRXYKIF9fWk43V2ViQ29yZTE0UmVzb3Vy
Y2VCdWZmZXJEMUV2CkBAIC00MDksNiArNDE0LDcgQEAgX19aTjdXZWJDb3JlMTZEZXZpY2VNb3Rp
b25EYXRhMTJSb3RhdGlvblJhdGU2Y3JlYXRlRWJkYmRiZAogX19aTjdXZWJDb3JlMTZEZXZpY2VN
b3Rpb25EYXRhNmNyZWF0ZUVOM1dURjEwUGFzc1JlZlB0cklOUzBfMTJBY2NlbGVyYXRpb25FRUVT
NF9OUzJfSU5TMF8xMlJvdGF0aW9uUmF0ZUVFRWJkCiBfX1pON1dlYkNvcmUxNkZvbnRGYWxsYmFj
a0xpc3QxNXJlbGVhc2VGb250RGF0YUV2CiBfX1pON1dlYkNvcmUxNkZvbnRQbGF0Zm9ybURhdGFE
MUV2CitfX1pON1dlYkNvcmUxNkhUTUxJbnB1dEVsZW1lbnQ4c2V0VmFsdWVFUktOM1dURjZTdHJp
bmdFTlNfMjJUZXh0RmllbGRFdmVudEJlaGF2aW9yRQogX19aTjdXZWJDb3JlMTZIVE1MSW5wdXRF
bGVtZW50MTNzZXRBdXRvZmlsbGVkRWIKIF9fWk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDE1
c2V0RWRpdGluZ1ZhbHVlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTZIVE1MSW5wdXRF
bGVtZW50MTVzZXRWYWx1ZUZvclVzZXJFUktOM1dURjZTdHJpbmdFCkBAIC01MjIsNiArNTI4LDcg
QEAgX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyN3N1c3BlbmRFdgogX19aTjdXZWJD
b3JlMTlMYXllckZsdXNoU2NoZWR1bGVyOHNjaGVkdWxlRXYKIF9fWk43V2ViQ29yZTE5TGF5ZXJG
bHVzaFNjaGVkdWxlckMxRVBOU18yNUxheWVyRmx1c2hTY2hlZHVsZXJDbGllbnRFCiBfX1pON1dl
YkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXJEMUV2CitfX1pON1dlYkNvcmUxOUhUTUxUZXh0QXJl
YUVsZW1lbnQ4c2V0VmFsdWVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOVJlc291cmNl
UmVxdWVzdEJhc2UxMXNldEhUVFBCb2R5RU4zV1RGMTBQYXNzUmVmUHRySU5TXzhGb3JtRGF0YUVF
RQogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMTNzZXRIVFRQTWV0aG9kRVJLTjNX
VEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMThzZXRIVFRQSGVh
ZGVyRmllbGRFUEtjUktOM1dURjZTdHJpbmdFCkBAIC02NzcsNiArNjg0LDcgQEAgX19aTjdXZWJD
b3JlNE5vZGUxMHJlbmRlclJlY3RFUGIKIF9fWk43V2ViQ29yZTROb2RlMTFhcHBlbmRDaGlsZEVO
M1dURjEwUGFzc1JlZlB0cklTMF9FRVJpYgogX19aTjdXZWJDb3JlNE5vZGUxMXJlbW92ZUNoaWxk
RVBTMF9SaQogX19aTjdXZWJDb3JlNE5vZGUxNHJlbW92ZWRMYXN0UmVmRXYKK19fWk43V2ViQ29y
ZTROb2RlMTRzZXRUZXh0Q29udGVudEVSS04zV1RGNlN0cmluZ0VSaQogX19aTjdXZWJDb3JlNE5v
ZGUxN3N0b3BJZ25vcmluZ0xlYWtzRXYKIF9fWk43V2ViQ29yZTROb2RlMThzdGFydElnbm9yaW5n
TGVha3NFdgogX19aTjdXZWJDb3JlNE5vZGUxOXNldE5lZWRzU3R5bGVSZWNhbGNFTlNfMTVTdHls
ZUNoYW5nZVR5cGVFCkBAIC04MjcsNiArODM1LDcgQEAgX19aTjdXZWJDb3JlNnRvTm9kZUVOM0pT
QzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlN0NvbnNvbGUyMXNob3VsZFByaW50RXhjZXB0aW9uc0V2
CiBfX1pON1dlYkNvcmU3Q29uc29sZTI0c2V0U2hvdWxkUHJpbnRFeGNlcHRpb25zRWIKIF9fWk43
V2ViQ29yZTdFbGVtZW50MTJzZXRBdHRyaWJ1dGVFUktOM1dURjEyQXRvbWljU3RyaW5nRVM0X1Jp
CitfX1pON1dlYkNvcmU3RWxlbWVudDEyc2V0QXR0cmlidXRlRVJLTlNfMTNRdWFsaWZpZWROYW1l
RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk43V2ViQ29yZTdFbGVtZW50MTdzZXRTaGFkb3dQ
c2V1ZG9JZEVSS04zV1RGMTJBdG9taWNTdHJpbmdFUmkKIF9fWk43V2ViQ29yZTdFbGVtZW50MjFi
b3VuZHNJblJvb3RWaWV3U3BhY2VFdgogX19aTjdXZWJDb3JlN0VsZW1lbnQ5aW5uZXJUZXh0RXYK
QEAgLTg1OSw2ICs4NjgsNyBAQCBfX1pON1dlYkNvcmU3dG9SYW5nZUVOM0pTQzdKU1ZhbHVlRQog
X19aTjdXZWJDb3JlOENTU1ZhbHVlN2Rlc3Ryb3lFdgogX19aTjdXZWJDb3JlOERvY3VtZW50MTFj
cmVhdGVSYW5nZUV2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxMnVwZGF0ZUxheW91dEV2CitfX1pO
N1dlYkNvcmU4RG9jdW1lbnQxM2NyZWF0ZUVsZW1lbnRFUktOU18xM1F1YWxpZmllZE5hbWVFYgog
X19aTjdXZWJDb3JlOERvY3VtZW50MTRjcmVhdGVUZXh0Tm9kZUVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZThEb2N1bWVudDE0c2V0Rm9jdXNlZE5vZGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNf
NE5vZGVFRUUKIF9fWk43V2ViQ29yZThEb2N1bWVudDE2aXNQYWdlQm94VmlzaWJsZUVpCkBAIC0x
MDQ0LDExICsxMDU0LDE4IEBAIF9fWk43V2ViQ29yZTlIVE1MTmFtZXM4ZnJhbWVUYWdFCiBfX1pO
N1dlYkNvcmU5SFRNTE5hbWVzOGhyZWZBdHRyRQogX19aTjdXZWJDb3JlOUhUTUxOYW1lczhpbnB1
dFRhZ0UKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXM4bmFtZUF0dHJFCitfX1pON1dlYkNvcmU5SFRN
TE5hbWVzOHN0eWxlVGFnRQogX19aTjdXZWJDb3JlOUhUTUxOYW1lczh2aWRlb1RhZ0UKIF9fWk43
V2ViQ29yZTlIVE1MTmFtZXM5YXBwbGV0VGFnRQorX19aTjdXZWJDb3JlOUhUTUxOYW1lczljbGFz
c0F0dHJFCiBfX1pON1dlYkNvcmU5SFRNTE5hbWVzOWlmcmFtZVRhZ0UKIF9fWk43V2ViQ29yZTlI
VE1MTmFtZXM5b2JqZWN0VGFnRQorX19aTjdXZWJDb3JlOUhUTUxOYW1lczlvcHRpb25UYWdFCiBf
X1pON1dlYkNvcmU5SFRNTE5hbWVzOXNjcmlwdFRhZ0UKK19fWk43V2ViQ29yZTlIVE1MTmFtZXM5
c2VsZWN0VGFnRQorX19aTjdXZWJDb3JlOUhUTUxOYW1lczlzdHlsZUF0dHJFCitfX1pON1dlYkNv
cmU5SFRNTE5hbWVzOXZhbHVlQXR0ckUKK19fWk43V2ViQ29yZTlIVE1MTmFtZXMxMnNlbGVjdGVk
QXR0ckUKIF9fWk43V2ViQ29yZTlKU0VsZW1lbnQ2c19pbmZvRQogX19aTjdXZWJDb3JlOVBhZ2VD
YWNoZTExc2V0Q2FwYWNpdHlFaQogX19aTjdXZWJDb3JlOVBhZ2VDYWNoZTI3cmVsZWFzZUF1dG9y
ZWxlYXNlZFBhZ2VzTm93RXYKQEAgLTEyNjEsNiArMTI3OCw3IEBAIF9fWk5LN1dlYkNvcmUxNlZp
c2libGVTZWxlY3Rpb24xOXJvb3RFZGl0YWJsZUVsZW1lbnRFdgogX19aTks3V2ViQ29yZTE2Vmlz
aWJsZVNlbGVjdGlvbjIzaXNDb250ZW50UmljaGx5RWRpdGFibGVFdgogX19aTks3V2ViQ29yZTE2
VmlzaWJsZVNlbGVjdGlvbjVpc0FsbEVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUK
IF9fWk5LN1dlYkNvcmUxN0hUTUxQbHVnSW5FbGVtZW50MTJwbHVnaW5XaWRnZXRFdgorX19aTks3
V2ViQ29yZTE3SFRNTFNlbGVjdEVsZW1lbnQ1dmFsdWVFdgogX19aTks3V2ViQ29yZTE3SlNET01H
bG9iYWxPYmplY3QyMnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRFdgogX19aTks3V2ViQ29yZTE3UmVn
dWxhckV4cHJlc3Npb24xM21hdGNoZWRMZW5ndGhFdgogX19aTks3V2ViQ29yZTE3UmVndWxhckV4
cHJlc3Npb241bWF0Y2hFUktOM1dURjZTdHJpbmdFaVBpCkBAIC0xMzI3LDYgKzEzNDUsNyBAQCBf
X1pOSzdXZWJDb3JlNEtVUkw4cHJvdG9jb2xFdgogX19aTks3V2ViQ29yZTRLVVJMY3ZQNU5TVVJM
RXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTExdGV4dENvbnRlbnRFYgogX19aTjdXZWJDb3JlNE5vZGUx
Mmluc2VydEJlZm9yZUVOM1dURjEwUGFzc1JlZlB0cklTMF9FRVBTMF9SaWIKK19fWk5LN1dlYkNv
cmU0Tm9kZTEzb3duZXJEb2N1bWVudEV2CiBfX1pOSzdXZWJDb3JlNE5vZGUxNGlzRGVzY2VuZGFu
dE9mRVBLUzBfCiBfX1pOSzdXZWJDb3JlNE5vZGUxOGdldFN1YnJlc291cmNlVVJMc0VSTjNXVEYx
MUxpc3RIYXNoU2V0SU5TXzRLVVJMRUxtMjU2RU5TXzhLVVJMSGFzaEVFRQogX19aTks3V2ViQ29y
ZTROb2RlMjB0cmF2ZXJzZVByZXZpb3VzTm9kZUVQS1MwXwpAQCAtMTM0Myw2ICsxMzYyLDcgQEAg
X19aTks3V2ViQ29yZTRQYWdlOWdyb3VwTmFtZUV2CiBfX1pOSzdXZWJDb3JlNFBhZ2U5cGFnZUNv
dW50RXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTl0ZXh0UmVjdHNFUk4zV1RGNlZlY3RvcklOU183SW50
UmVjdEVMbTBFRUUKIF9fWk5LN1dlYkNvcmU1Q29sb3I3Z2V0UkdCQUVSZFMxX1MxX1MxXworX19a
Tks3V2ViQ29yZTVDb2xvcjEwc2VyaWFsaXplZEV2CiBfX1pOSzdXZWJDb3JlNUZyYW1lMTNvd25l
clJlbmRlcmVyRXYKIF9fWk5LN1dlYkNvcmU1RnJhbWUxNHNlbGVjdGlvbkltYWdlRWIKIF9fWk5L
N1dlYkNvcmU1RnJhbWUxNWNvbnRlbnRSZW5kZXJlckV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTQxN2M1Mi4uYzNjYmUzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNDE0MiwxMCArNDE0MiwxMCBAQAogCQlBODEzNjlENTA5NzM3NEY2MDBENzQ0NjMgLyog
SFRNTEZpZWxkU2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBODEzNjlCOTA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTEZpZWxkU2V0RWxl
bWVudC5jcHAgKi87IH07CiAJCUE4MTM2OUQ2MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MVGV4dEFy
ZWFFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBODEzNjlCQTA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTFRleHRBcmVhRWxlbWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4MTM2OUQ3MDk3
Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTM2OUJCMDk3Mzc0RjUwMEQ3NDQ2MyAv
KiBIVE1MVGV4dEFyZWFFbGVtZW50LmNwcCAqLzsgfTsKLQkJQTgxMzY5RDgwOTczNzRGNjAwRDc0
NDYzIC8qIEhUTUxTZWxlY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBODEzNjlCQzA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTFNlbGVjdEVs
ZW1lbnQuaCAqLzsgfTsKKwkJQTgxMzY5RDgwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxTZWxlY3RF
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
ODEzNjlCQzA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTFNlbGVjdEVsZW1lbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBODEzNjlEOTA5NzM3NEY2
MDBENzQ0NjMgLyogSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QkQwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxT
ZWxlY3RFbGVtZW50LmNwcCAqLzsgfTsKLQkJQTgxMzY5REEwOTczNzRGNjAwRDc0NDYzIC8qIEhU
TUxPcHRpb25zQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTgxMzY5QkUwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxPcHRpb25zQ29sbGVj
dGlvbi5oICovOyB9OwotCQlBODEzNjlEQzA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTE9wdGlvbkVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
MTM2OUMwMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MT3B0aW9uRWxlbWVudC5oICovOyB9OworCQlB
ODEzNjlEQTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEzNjlCRTA5NzM3NEY1
MDBENzQ0NjMgLyogSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTgxMzY5REMwOTczNzRGNjAwRDc0NDYzIC8q
IEhUTUxPcHRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBODEzNjlDMDA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTE9wdGlvbkVsZW1lbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBODEz
NjlERDA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QzEwOTczNzRGNTAwRDc0
NDYzIC8qIEhUTUxPcHRpb25FbGVtZW50LmNwcCAqLzsgfTsKIAkJQTgxMzY5REUwOTczNzRGNjAw
RDc0NDYzIC8qIEhUTUxPcHRHcm91cEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTM2OUMyMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MT3B0
R3JvdXBFbGVtZW50LmggKi87IH07CiAJCUE4MTM2OURGMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1M
T3B0R3JvdXBFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4MTM2OUMzMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MT3B0R3JvdXBFbGVtZW50
LmNwcCAqLzsgfTsKQEAgLTU1NDEsNyArNTU0MSw3IEBACiAJCUJDNzcyRTE2MTMzMTYyQzIwMDFF
QzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzcyRTE1MTMzMTYyQzIwMDFFQzlDRSAvKiBDU1NM
aW5lQm94Q29udGFpblZhbHVlLmNwcCAqLzsgfTsKIAkJQkM3RjQ0QTgwQjlFMzI0RTAwQTlEMDgx
IC8qIEltYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM3RkE2MjAw
RDFGMENCRDAwREIyMkE5IC8qIER5bmFtaWNOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdGQTYxRTBEMUYwQ0JEMDBEQjIyQTkgLyog
RHluYW1pY05vZGVMaXN0LmNwcCAqLzsgfTsKLQkJQkM3RkE2MjEwRDFGMENCRDAwREIyMkE5IC8q
IER5bmFtaWNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM3RkE2MUYwRDFGMENCRDAwREIyMkE5IC8qIER5bmFtaWNOb2RlTGlzdC5oICov
OyB9OworCQlCQzdGQTYyMTBEMUYwQ0JEMDBEQjIyQTkgLyogRHluYW1pY05vZGVMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdGQTYxRjBEMUYw
Q0JEMDBEQjIyQTkgLyogRHluYW1pY05vZGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM3RkE2MkQwRDFGMEVGRjAwREIyMkE5IC8qIFN0
YXRpY05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzdGQTYyQjBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3QuaCAqLzsgfTsK
IAkJQkM3RkE2MkUwRDFGMEVGRjAwREIyMkE5IC8qIFN0YXRpY05vZGVMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjJDMEQxRjBFRkYw
MERCMjJBOSAvKiBTdGF0aWNOb2RlTGlzdC5jcHAgKi87IH07CiAJCUJDODBDOTg3MENEMjk0RUUw
MEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODBDOTg1MENEMjk0RUUwMEEwQjdCMyAvKiBD
U1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcCAqLzsgfTsKQEAgLTIyMzU3LDYgKzIyMzU3LDEwIEBA
CiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlCQzdGQTYyMTBEMUYwQ0JEMDBEQjIyQTkgLyog
RHluYW1pY05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBODEzNjlEQTA5NzM3NEY2MDBE
NzQ0NjMgLyogSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlBODEz
NjlEODA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTFNlbGVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE4MTM2OURDMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MT3B0aW9uRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTdCQzY5REIxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0
YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBB
YnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMkUwRkJCOUMxRDAwNTEw
MjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCBpbiBIZWFkZXJzICovLApAQCAtMjM0
MTIsNyArMjM0MTYsNiBAQAogCQkJCTMxNjkzNzlDMTQ2MDlDNkMwMEMwMTM2MiAvKiBEcmFnU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFGNjVGRjYxMzc4OEZBQTAwRkY2RjJEIC8qIERy
YWdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk4NzcwREMxMjQyQzUzNTAwMjIyNkJBIC8q
IERyYXdpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDN0ZBNjIxMEQxRjBDQkQwMERC
MjJBOSAvKiBEeW5hbWljTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENkVEMkM4MTM2
QjhFNjYwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXByZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZENTM3MzU3MTM3QjY1M0IwMDAwOERDRSAvKiBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUZENkVEMkM0MTM2QjhFNDIwMDNDRjA3MiAvKiBEeW5hbWljc0Nv
bXByZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTIzNzI2LDggKzIzNzI5LDYgQEAKIAkJ
CQlBODcxRDQ1QTBBMTI3Q0JDMDBCMTJBNjggLyogSFRNTE9iamVjdEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4RUE3OUYxMEExOTE2REYwMEE4RUY1RiAvKiBIVE1MT0xpc3RFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEzNjlERTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTE9w
dEdyb3VwRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTgxMzY5REMwOTczNzRGNjAwRDc0
NDYzIC8qIEhUTUxPcHRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlBODEzNjlEQTA5
NzM3NEY2MDBENzQ0NjMgLyogSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0QUQwMTAwOTEyN0U2NDJBMDAxNTAzNUYgLyogSFRNTE91dHB1dEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4RUE3Q0I1MEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MUGFyYWdyYXBo
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MUQ0NTgwQTEyN0NCQzAwQjEyQTY4IC8q
IEhUTUxQYXJhbUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjM3NDUsNyArMjM3NDYsNiBA
QAogCQkJCUE4NzFEQzI1MEExNTIwNTcwMEIxMkE2OCAvKiBIVE1MU2NyaXB0RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NzUxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxTY3JpcHRS
dW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0IzODc2MTIyODgzRTkwMEI4MUZGOCAvKiBI
VE1MU2NyaXB0UnVubmVySG9zdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTgxMzY5RDgwOTczNzRG
NjAwRDc0NDYzIC8qIEhUTUxTZWxlY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QUJE
RkYwQzE0REJFMzg1MDA0RDExN0QgLyogSFRNTFNoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0NDYxM0E4MENENjMzMTAwMEZBREE3NSAvKiBIVE1MU291cmNlRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJEQ0UxMkYwRTI4MzAwQzEzMzc5IC8qIEhUTUxTb3VyY2VU
cmFja2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlNGY2ODFjLi5jMjNhOWJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNzggQEAKKzIwMTItMTAtMjMgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRnVsbC1wYWdlIFBERlBsdWdpbiBzaG91
bGQgc3VwcG9ydCBpbmxpbmUgZm9ybSBlZGl0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZm9ybSBjb250cm9scyBjb3JyZXNwb25kaW5nIHRv
IFRleHQgYW5kIENob2ljZSBQREYgYW5ub3RhdGlvbnMsCisgICAgICAgIGFsbG93aW5nIGZvciBz
aW5nbGUtIGFuZCBtdWx0aS1saW5lIHRleHQgaW5wdXQsIGFuZCA8c2VsZWN0Pi1saWtlIGlucHV0
LgorCisgICAgICAgIEN1cnJlbnRseSwgZm9ybXMgYXJlIG9ubHkgaW1wbGVtZW50ZWQgZm9yIGZ1
bGwtcGFnZSBQREYgZG9jdW1lbnRzLgorCisgICAgICAgICogU2hhcmVkL21hYy9QREZLaXRJbXBv
cnRzLmg6CisgICAgICAgIChXZWJLaXQpOiBBZGQgcGRmQW5ub3RhdGlvblRleHRXaWRnZXRDbGFz
cyBhbmQgcGRmQW5ub3RhdGlvbkNob2ljZVdpZGdldENsYXNzLgorICAgICAgICAqIFNoYXJlZC9t
YWMvUERGS2l0SW1wb3J0cy5tbToKKyAgICAgICAgKFdlYktpdDo6cGRmQW5ub3RhdGlvblRleHRX
aWRnZXRDbGFzcyk6IEFkZCBwZGZBbm5vdGF0aW9uVGV4dFdpZGdldENsYXNzLgorICAgICAgICAo
V2ViS2l0OjpwZGZBbm5vdGF0aW9uQ2hvaWNlV2lkZ2V0Q2xhc3MpOiBBZGQgcGRmQW5ub3RhdGlv
bkNob2ljZVdpZGdldENsYXNzLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkIFBERkxheWVyQ29udHJvbGxlckRldGFpbHMsIFBERlBsdWdpblRleHRBbm5v
dGF0aW9uLCBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLAorICAgICAgICBhbmQgUERGUGx1Z2lu
QW5ub3RhdGlvbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVyQ29u
dHJvbGxlckRldGFpbHMuaDogQWRkZWQuIEV4dHJhY3QgUERGTGF5ZXJDb250cm9sbGVyIGRldGFp
bHMgY2F0ZWdvcnkgaW50byBhIGhlYWRlci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oOgorICAgICAgICAoUERGUGx1Z2luKTogQWRkIG1fYWN0aXZlQW5ub3Rh
dGlvbiwgdG8ga2VlcCB0cmFjayBvZiB0aGUgYWN0aXZlIFBERlBsdWdpbkFubm90YXRpb24sIGFu
ZCBtX2Fubm90YXRpb25Db250YWluZXIsCisgICAgICAgIHRoZSA8ZGl2PiB0aGF0IGZvcm0gY29u
dHJvbHMgYXJlIGluc2VydGVkIGludG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW06CisgICAgICAgICgtW1dLUERGTGF5ZXJDb250cm9sbGVyRGVsZWdhdGUg
cGRmTGF5ZXJDb250cm9sbGVyOmRpZENoYW5nZUFjdGl2ZUFubm90YXRpb246XSk6IEZvcndhcmQg
YWN0aXZlIGFubm90YXRpb24gY2hhbmdlcyB0byBQREZQbHVnaW4uCisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6UERGUGx1Z2luKTogQWRkIGEgPGRpdj4gdG8gdGhlIFBsdWdpbkRvY3VtZW50
IDxib2R5Piwgd2hpY2ggd2lsbCBjb250YWluIDxpbnB1dD4sIDxzZWxlY3Q+LCBhbmQgPHRleHRh
cmVhPiBlbGVtZW50cworICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBhY3RpdmUgYW5ub3Rh
dGlvbi4gVGhpcyBkaXYgaXMgbWFkZSB0byBmaXQgdG8gdGhlIGJvZHksIGFuZCBpcyAib3ZlcmZs
b3c6IGhpZGRlbiIgc28gdGhhdCBmb3JtIGVsZW1lbnRzIHNjcm9sbGVkCisgICAgICAgIG91dCBv
ZiB0aGUgdmlld3BvcnQgZG8gbm90IGNhdXNlIHRoZSBEb2N1bWVudCB0byBleHBhbmQgdG8gYmUg
bGFyZ2VyIHRoYW4gdGhlIFBsdWdpbi4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwZGZE
b2N1bWVudERpZExvYWQpOiBVcGRhdGUgUERGUGx1Z2luJ3Mgbm90aW9uIG9mIHRoZSBzY3JvbGwg
cG9zaXRpb24gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGRvY3VtZW50IGxvYWRzLCBpbiBjYXNlCisg
ICAgICAgIHRoZSBzY3JvbGwgcG9zaXRpb24gaXMgY29uc3RyYWluZWQgYnkgUERGS2l0LgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmRlc3Ryb3kpOiBUZWFyIGRvd24gYW55IGZvcm1zIGZv
ciB0aGUgYWN0aXZlIGFubm90YXRpb24uCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2Vv
bWV0cnlEaWRDaGFuZ2UpOiBOb3RpZnkgdGhlIGN1cnJlbnQgYW5ub3RhdGlvbiB0aGF0IGl0IHNo
b3VsZCB1cGRhdGUgaXRzIGdlb21ldHJ5IHdoZW4gdGhlIFBsdWdpbidzIGdlb21ldHJ5IGNoYW5n
ZXMuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c2V0U2Nyb2xsT2Zmc2V0KTogTm90aWZ5
IHRoZSBjdXJyZW50IGFubm90YXRpb24gdGhhdCBpdCBzaG91bGQgdXBkYXRlIGl0cyBnZW9tZXRy
eSB3aGVuIHdlIHNjcm9sbC4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzZXRBY3RpdmVB
bm5vdGF0aW9uKTogQ29tbWl0IGNoYW5nZXMgdG8gdGhlIGN1cnJlbnQgYW5ub3RhdGlvbiwgaWYg
dGhlcmUgaXMgb25lLCB0aGVuIG1ha2UgYSBuZXcgUERGUGx1Z2luQW5ub3RhdGlvbgorICAgICAg
ICBjb3JyZXNwb25kaW5nIHRvIHRoZSBuZXdseSBhY3RpdmUgYW5ub3RhdGlvbiwgYW5kIGF0dGFj
aCBpdCB0byBvdXIgZG9jdW1lbnQuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW5Bbm5vdGF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5B
bm5vdGF0aW9uOjplbGVtZW50KTogUmV0dXJuIHRoZSBFbGVtZW50IGNvcnJlc3BvbmRpbmcgdG8g
dGhpcyBvYmplY3QuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OmFubm90
YXRpb24pOiBSZXR1cm4gdGhlIFBERkFubm90YXRpb24gY29ycmVzcG9uZGluZyB0byB0aGlzIG9i
amVjdC4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQW5ub3RhdGlvbjo6cGx1Z2luKTogUmV0
dXJuIHRoZSBQbHVnaW4gdGhhdCBjcmVhdGVkIHRoaXMgb2JqZWN0LgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW5Bbm5vdGF0aW9uOjpjb21taXQpOiBDb21taXQgY2hhbmdlcyBmcm9tIHRoZSBm
b3JtIHRvIHRoZSBQREZBbm5vdGF0aW9uLiBUaGlzIGlzIGltcGxlbWVudGVkIGluIHN1YmNsYXNz
ZXMuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OmF0dGFjaCk6IEF0dGFj
aCBhIFBERlBsdWdpbkFubm90YXRpb24gdG8gaXRzIHBhcmVudCBFbGVtZW50LgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW5Bbm5vdGF0aW9uOjpwYXJlbnQpOiBSZXR1cm4gdGhlIHBhcmVudCBF
bGVtZW50IHRoYXQgd2UncmUgYXR0YWNoKCllZCB0by4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luQW5ub3RhdGlvbjo6cGRmTGF5ZXJDb250cm9sbGVyKTogUmV0dXJuIHRoZSBwZGZMYXllckNv
bnRyb2xsZXIgdGhhdCB0aGUgUERGQW5ub3RhdGlvbiBjb21lcyBmcm9tLgorICAgICAgICAoUERG
UGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIpOiBBZGQgYW4gZXZlbnQgbGlzdGVuZXIgdG8g
cmVzcG9uZCB0byAiY2hhbmdlIiBhbmQgImJsdXIiIGV2ZW50cyBmcm9tIG1fZWxlbWVudC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW06IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5Bbm5vdGF0aW9uOjpjcmVhdGUpOiBDcmVh
dGUgdGhlIGFwcHJvcHJpYXRlIFBERlBsdWdpbkFubm90YXRpb24gc3ViY2xhc3MgKFBERlBsdWdp
blRleHRBbm5vdGF0aW9uIG9yCisgICAgICAgIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24gYmFz
ZWQgb24gdGhlIGNsYXNzIG9mIHRoZSBQREZBbm5vdGF0aW9uKS4KKyAgICAgICAgKFdlYktpdDo6
UERGUGx1Z2luQW5ub3RhdGlvbjo6YXR0YWNoKTogTGF6aWx5IGNyZWF0ZSB0aGUgSFRNTCBmb3Jt
IGVsZW1lbnQgY29ycmVzcG9uZGluZyB0byB0aGlzIGFubm90YXRpb24uIEFkZCBpdCB0byBpdHMg
cGFyZW50CisgICAgICAgIGVsZW1lbnQuIEFkZCBldmVudCBsaXN0ZW5lcnMgZm9yICJjaGFuZ2Ui
IGFuZCAiYmx1ciIuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246On5QREZQ
bHVnaW5Bbm5vdGF0aW9uKTogVGVhciBkb3duIHRoZSBhbm5vdGF0aW9uLCBieSByZW1vdmluZyBl
dmVudCBsaXN0ZW5lcnMgYW5kIHJlbW92aW5nCisgICAgICAgIHRoZSBmb3JtIGVsZW1lbnQgZnJv
bSBpdHMgcGFyZW50IGVsZW1lbnQuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRp
b246OnVwZGF0ZUdlb21ldHJ5KTogVXBkYXRlIHRoZSBzaXplIGFuZCBwb3NpdGlvbiBvZiB0aGUg
Zm9ybSBlbGVtZW50LCBnaXZlbiB0aGUgY3VycmVudCBQREYgc2NhbGUgYW5kIHNjcm9sbGluZyBw
b3NpdGlvbi4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQW5ub3RhdGlvbjo6UERGUGx1Z2lu
QW5ub3RhdGlvbkV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KTogSWYgd2UgZ2V0IGEgYmx1ciBv
ciBjaGFuZ2UgZXZlbnQsIHdlIHNob3VsZCByZW1vdmUgdGhlCisgICAgICAgIGZvcm0gY29udHJv
bCB0byBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgUERGS2l0LgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y2hvaWNlQW5ub3RhdGlvbik6IFJl
dHVybiBhbm5vdGF0aW9uKCkgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY2FzdC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW06IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjp1cGRhdGVHZW9t
ZXRyeSk6IFVwZGF0ZSB0aGUgZm9udCBzaXplIG9mIHRoZSBjaG9pY2Ugd2lkZ2V0IGdpdmVuIHRo
ZSBjdXJyZW50IFBERiBzY2FsZS4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQ2hvaWNlQW5u
b3RhdGlvbjo6Y29tbWl0KTogU2F2ZSB0aGUgdmFsdWUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3Rl
ZCA8b3B0aW9uPiBpbnRvIHRoZSBQREZBbm5vdGF0aW9uQ2hvaWNlV2lkZ2V0LgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVu
dCk6IENyZWF0ZSBhIDxzZWxlY3Q+IGVsZW1lbnQsIHBvcHVsYXRlZCB3aXRoIDxvcHRpb24+IGVs
ZW1lbnRzCisgICAgICAgIGZvciB0aGUgUERGQW5ub3RhdGlvbkNob2ljZVdpZGdldCdzIGF2YWls
YWJsZSBjaG9pY2VzLiBTZWxlY3QgdGhlIGNvcnJlY3QgPG9wdGlvbj4gaW5pdGlhbGx5LgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblRleHRBbm5vdGF0aW9uOjp0ZXh0QW5u
b3RhdGlvbik6IFJldHVybiBhbm5vdGF0aW9uKCkgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY2FzdC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9u
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Y3NzQWxpZ25tZW50VmFsdWVGb3JOU1RleHRB
bGlnbm1lbnQpOiBSZXR1cm4gdGhlIENTUyBhbGlnbm1lbnQgdmFsdWUgZm9yIGEgZ2l2ZW4gTlNU
ZXh0QWxpZ25tZW50LgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6
Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQpOiBDcmVhdGUgYSA8dGV4dGFyZWE+IG9yIDxpbnB1dD4g
ZWxlbWVudCwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlCisgICAgICAgIFBERkFubm90YXRpb25U
ZXh0V2lkZ2V0IHN1cHBvcnRzIG11bHRpbGluZSBlZGl0aW5nIG9yIG5vdC4KKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luVGV4dEFubm90YXRpb246OnVwZGF0ZUdlb21ldHJ5KTogVXBkYXRlIHRo
ZSBmb250IHNpemUgb2YgdGhlIHRleHQgd2lkZ2V0IGdpdmVuIHRoZSBjdXJyZW50IFBERiBzY2Fs
ZS4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90YXRpb246OmNvbW1pdCk6IFNh
dmUgdGhlIGN1cnJlbnQgc3RyaW5nIGluIHRoZSBmb3JtIGVsZW1lbnQgaW50byB0aGUgUERGQW5u
b3RhdGlvblRleHRXaWRnZXQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0Ojpmb2N1c2VkUGx1Z2luVmlld0ZvckZyYW1lKTogUmV0dXJu
IHRoZSBQbHVnaW5WaWV3IGZvciBhIEZyYW1lIG9ubHkgaWYgdGhlIFBsdWdpbidzIGVsZW1lbnQg
aXMgZm9jdXNlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZXhlY3V0ZUVkaXRpbmdDb21t
YW5kKTogT25seSBmb3J3YXJkIGVkaXRpbmcgY29tbWFuZHMgdG8gUGx1Z2luVmlldyBpZiB0aGUg
cGx1Z2luIGl0c2VsZiBpcyBmb2N1c2VkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc0Vk
aXRpbmdDb21tYW5kRW5hYmxlZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2
YWxpZGF0ZUNvbW1hbmQpOiBEaXR0by4KKwogMjAxMi0xMC0yNCAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgc3RyYXRlZ3kgZm9yIGxvYWRlciBjdXN0
b21pemF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9QREZLaXRJ
bXBvcnRzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1BERktpdEltcG9ydHMuaAppbmRl
eCBjOWExZTBhLi5hMWExM2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L1BERktpdEltcG9ydHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1BERktpdElt
cG9ydHMuaApAQCAtMzUsNiArMzUsOCBAQCBDbGFzcyBwZGZEb2N1bWVudENsYXNzKCk7CiAKICNp
ZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKIENsYXNzIHBkZkxheWVyQ29udHJvbGxlckNsYXNzKCk7
CitDbGFzcyBwZGZBbm5vdGF0aW9uVGV4dFdpZGdldENsYXNzKCk7CitDbGFzcyBwZGZBbm5vdGF0
aW9uQ2hvaWNlV2lkZ2V0Q2xhc3MoKTsKICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1BERktpdEltcG9ydHMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1BERktpdEltcG9ydHMubW0KaW5kZXggYmNjZmJlZi4uMTY2OTdiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9QREZLaXRJbXBvcnRzLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUERGS2l0SW1wb3J0cy5tbQpAQCAtNjIsNiArNjIsMjAgQEAg
Q2xhc3MgcGRmTGF5ZXJDb250cm9sbGVyQ2xhc3MoKQogICAgIEFTU0VSVChwZGZMYXllckNvbnRy
b2xsZXJDbGFzcyk7CiAgICAgcmV0dXJuIHBkZkxheWVyQ29udHJvbGxlckNsYXNzOwogfQorCitD
bGFzcyBwZGZBbm5vdGF0aW9uVGV4dFdpZGdldENsYXNzKCkKK3sKKyAgICBzdGF0aWMgQ2xhc3Mg
cGRmQW5ub3RhdGlvblRleHRXaWRnZXRDbGFzcyA9IGNsYXNzRnJvbVBERktpdChAIlBERkFubm90
YXRpb25UZXh0V2lkZ2V0Iik7CisgICAgQVNTRVJUKHBkZkFubm90YXRpb25UZXh0V2lkZ2V0Q2xh
c3MpOworICAgIHJldHVybiBwZGZBbm5vdGF0aW9uVGV4dFdpZGdldENsYXNzOworfQorCitDbGFz
cyBwZGZBbm5vdGF0aW9uQ2hvaWNlV2lkZ2V0Q2xhc3MoKQoreworICAgIHN0YXRpYyBDbGFzcyBw
ZGZBbm5vdGF0aW9uQ2hvaWNlV2lkZ2V0Q2xhc3MgPSBjbGFzc0Zyb21QREZLaXQoQCJQREZBbm5v
dGF0aW9uQ2hvaWNlV2lkZ2V0Iik7CisgICAgQVNTRVJUKHBkZkFubm90YXRpb25DaG9pY2VXaWRn
ZXRDbGFzcyk7CisgICAgcmV0dXJuIHBkZkFubm90YXRpb25DaG9pY2VXaWRnZXRDbGFzczsKK30K
ICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOWI1YWM3Yi4uM2U2YWY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjY5LDYgKzI2OSw5IEBA
CiAJCTI5Q0Q1NUFCMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlD
RDU1QTkxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0g
Ki87IH07CiAJCTI5RDU1REYxMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyOUQ1NURFRjE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkyOUQ1NURGMjE2MUJGOUYxMDAzMUEyRTMgLyogV2Vi
UGFnZUdyb3VwUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjlENTVERjAxNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFBy
b3h5TWVzc2FnZXMuaCAqLzsgfTsKKwkJMkQyQURGMDkxNjM2MkRENTAwMTk3RTQ3IC8qIFBERlBs
dWdpblRleHRBbm5vdGF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkQyQURGMDYxNjM2MkRDNzAwMTk3RTQ3IC8qIFBERlBsdWdpblRleHRBbm5v
dGF0aW9uLm1tICovOyB9OworCQkyRDJBREYwQjE2MzYyRERCMDAxOTdFNDcgLyogUERGUGx1Z2lu
QW5ub3RhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEMkFERjAzMTYzNjI0MzUwMDE5N0U0NyAvKiBQREZQbHVnaW5Bbm5vdGF0aW9uLm1tICov
OyB9OworCQkyRDJBREYxMDE2MzY0RDgyMDAxOTdFNDcgLyogUERGUGx1Z2luQ2hvaWNlQW5ub3Rh
dGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
MkFERjBFMTYzNjREODIwMDE5N0U0NyAvKiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tICov
OyB9OwogCQkyRDg3MEQxMDE2MjM0RkZFMDAwQTNGMjAgLyogUERGUGx1Z2luLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4NzBEMEUxNjIyQjdGOTAw
MEEzRjIwIC8qIFBERlBsdWdpbi5tbSAqLzsgfTsKIAkJMzEwOTk5NzMxNDZDNzVBMjAwMjlERUI5
IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTA5OTk3MTE0NkM3NTlCMDAyOURFQjkgLyogV2ViTm90aWZp
Y2F0aW9uQ2xpZW50LmNwcCAqLzsgfTsKIAkJMzEwOTk5QzcxNDZDOUUzRDAwMjlERUI5IC8qIFdl
Yk5vdGlmaWNhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzEwOTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNs
aWVudC5oICovOyB9OwpAQCAtMTQyNSw2ICsxNDI4LDEzIEBACiAJCTI5RDU1REVFMTYxQkY4Nzgw
MDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJQYWdlR3Jv
dXBQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlENTVE
RUYxNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBhZ2VHcm91cFByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlENTVE
RjAxNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDJBREYwMjE2MzYyNDM1MDAxOTdFNDcgLyog
UERGUGx1Z2luQW5ub3RhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQ
REZQbHVnaW5Bbm5vdGF0aW9uLmg7IHBhdGggPSBQREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDJBREYwMzE2MzYyNDM1MDAxOTdFNDcgLyog
UERGUGx1Z2luQW5ub3RhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFBERlBsdWdpbkFubm90YXRpb24ubW07IHBhdGggPSBQREYvUERGUGx1Z2luQW5ub3Rh
dGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQyQURGMDUxNjM2MkRDNzAw
MTk3RTQ3IC8qIFBERlBsdWdpblRleHRBbm5vdGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFBERlBsdWdpblRleHRBbm5vdGF0aW9uLmg7IHBhdGggPSBQREYvUERGUGx1
Z2luVGV4dEFubm90YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQyQURG
MDYxNjM2MkRDNzAwMTk3RTQ3IC8qIFBERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUERGUGx1Z2luVGV4dEFubm90YXRpb24u
bW07IHBhdGggPSBQREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTJEMkFERjBDMTYzNjNERUMwMDE5N0U0NyAvKiBQREZMYXllckNvbnRy
b2xsZXJEZXRhaWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBERkxheWVyQ29udHJvbGxlckRldGFpbHMu
aDsgcGF0aCA9IFBERi9QREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTJEMkFERjBEMTYzNjREODIwMDE5N0U0NyAvKiBQREZQbHVnaW5DaG9p
Y2VBbm5vdGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBERlBsdWdp
bkNob2ljZUFubm90YXRpb24uaDsgcGF0aCA9IFBERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMkFERjBFMTYzNjREODIwMDE5N0U0
NyAvKiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbTsgcGF0aCA9IFBE
Ri9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDg3MEQwRDE2MjJCN0Y5MDAwQTNGMjAgLyogUERGUGx1Z2luLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBERlBsdWdpbi5oOyBwYXRoID0gUERGL1BERlBsdWdpbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDg3MEQwRTE2MjJCN0Y5MDAwQTNGMjAg
LyogUERGUGx1Z2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
UERGUGx1Z2luLm1tOyBwYXRoID0gUERGL1BERlBsdWdpbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzEwOTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxOTYsNiArNDIwNiwxMyBAQAogCQlFMTk5ODc1QjE0MkJG
OUNGMDBCQjJERTcgLyogUERGICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQkyRDJBREYwRDE2MzY0RDgyMDAxOTdFNDcgLyogUERGUGx1Z2luQ2hvaWNlQW5u
b3RhdGlvbi5oICovLAorCQkJCTJEMkFERjBFMTYzNjREODIwMDE5N0U0NyAvKiBQREZQbHVnaW5D
aG9pY2VBbm5vdGF0aW9uLm1tICovLAorCQkJCTJEMkFERjBDMTYzNjNERUMwMDE5N0U0NyAvKiBQ
REZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmggKi8sCisJCQkJMkQyQURGMDIxNjM2MjQzNTAwMTk3
RTQ3IC8qIFBERlBsdWdpbkFubm90YXRpb24uaCAqLywKKwkJCQkyRDJBREYwMzE2MzYyNDM1MDAx
OTdFNDcgLyogUERGUGx1Z2luQW5ub3RhdGlvbi5tbSAqLywKKwkJCQkyRDJBREYwNTE2MzYyREM3
MDAxOTdFNDcgLyogUERGUGx1Z2luVGV4dEFubm90YXRpb24uaCAqLywKKwkJCQkyRDJBREYwNjE2
MzYyREM3MDAxOTdFNDcgLyogUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0gKi8sCiAJCQkJMkQ4
NzBEMEQxNjIyQjdGOTAwMEEzRjIwIC8qIFBERlBsdWdpbi5oICovLAogCQkJCTJEODcwRDBFMTYy
MkI3RjkwMDBBM0YyMCAvKiBQREZQbHVnaW4ubW0gKi8sCiAJCQkJRTE5OTg3NUMxNDJCRkM5NzAw
QkIyREU3IC8qIFNpbXBsZVBERlBsdWdpbi5tbSAqLywKQEAgLTU2OTQsNiArNTcxMSw5IEBACiAJ
CQkJNTEzQTE2NEMxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxODNEREVDMTYzMEJERkMwMDhCRTVDNyAvKiBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUExM0JFQjMx
NjM1QTlDODAwRjE5QzAzIC8qIFN0cmluZ1JlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkyRDJBREYwOTE2MzYyREQ1MDAxOTdFNDcgLyogUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0g
aW4gU291cmNlcyAqLywKKwkJCQkyRDJBREYwQjE2MzYyRERCMDAxOTdFNDcgLyogUERGUGx1Z2lu
QW5ub3RhdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJEMkFERjEwMTYzNjREODIwMDE5N0U0
NyAvKiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVyQ29udHJv
bGxlckRldGFpbHMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
TGF5ZXJDb250cm9sbGVyRGV0YWlscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjZlN2I1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaApAQCAtMCwwICsxLDg5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCA8UERGS2l0L1BERktpdC5oPgorCitAcHJvdG9jb2wgUERG
TGF5ZXJDb250cm9sbGVyRGVsZWdhdGUgPE5TT2JqZWN0PgorCistICh2b2lkKXVwZGF0ZVNjcm9s
bFBvc2l0aW9uOihDR1BvaW50KW5ld1Bvc2l0aW9uOworLSAodm9pZCl3cml0ZUl0ZW1zVG9QYXN0
ZWJvYXJkOihOU0FycmF5ICopaXRlbXMgd2l0aFR5cGVzOihOU0FycmF5ICopdHlwZXM7CistICh2
b2lkKXNob3dEZWZpbml0aW9uRm9yQXR0cmlidXRlZFN0cmluZzooTlNBdHRyaWJ1dGVkU3RyaW5n
ICopc3RyaW5nIGF0UG9pbnQ6KENHUG9pbnQpcG9pbnQ7CistICh2b2lkKXBlcmZvcm1XZWJTZWFy
Y2g6KE5TU3RyaW5nICopc3RyaW5nOworLSAodm9pZClvcGVuV2l0aFByZXZpZXc7CistICh2b2lk
KXNhdmVUb1BERjsKKworLSAodm9pZClwZGZMYXllckNvbnRyb2xsZXI6KFBERkxheWVyQ29udHJv
bGxlciAqKXBkZkxheWVyQ29udHJvbGxlciBkaWRDaGFuZ2VBY3RpdmVBbm5vdGF0aW9uOihQREZB
bm5vdGF0aW9uICopYW5ub3RhdGlvbjsKKworQGVuZAorCitAaW50ZXJmYWNlIFBERkxheWVyQ29u
dHJvbGxlciA6IE5TT2JqZWN0CitAZW5kCisKK0BpbnRlcmZhY2UgUERGTGF5ZXJDb250cm9sbGVy
IChEZXRhaWxzKQorCitAcHJvcGVydHkocmV0YWluKSBDQUxheWVyICpwYXJlbnRMYXllcjsKK0Bw
cm9wZXJ0eShyZXRhaW4pIFBERkRvY3VtZW50ICpkb2N1bWVudDsKK0Bwcm9wZXJ0eShyZXRhaW4p
IGlkPFBERkxheWVyQ29udHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKKworLSAodm9pZClzZXRG
cmFtZVNpemU6KENHU2l6ZSlzaXplOworCistICh2b2lkKXNldERpc3BsYXlNb2RlOihpbnQpbW9k
ZTsKKy0gKHZvaWQpc2V0RGlzcGxheXNQYWdlQnJlYWtzOihCT09MKXBhZ2VCcmVha3M7CisKKy0g
KENHRmxvYXQpdGlsZVNjYWxlRmFjdG9yOworLSAodm9pZClzZXRUaWxlU2NhbGVGYWN0b3I6KENH
RmxvYXQpc2NhbGVGYWN0b3I7CisKKy0gKENHU2l6ZSljb250ZW50U2l6ZTsKKy0gKENHU2l6ZSlj
b250ZW50U2l6ZVJlc3BlY3Rpbmdab29tOworCistICh2b2lkKXNuYXBzaG90SW5Db250ZXh0OihD
R0NvbnRleHRSZWYpY29udGV4dDsKKworLSAodm9pZCltYWduaWZ5V2l0aE1hZ25pZmljYXRpb246
KENHRmxvYXQpbWFnbmlmaWNhdGlvbiBhdFBvaW50OihDR1BvaW50KXBvaW50IGltbWVkaWF0ZWx5
OihCT09MKWltbWVkaWF0ZWx5OworCistIChDR1BvaW50KXNjcm9sbFBvc2l0aW9uOworLSAodm9p
ZClzZXRTY3JvbGxQb3NpdGlvbjooQ0dQb2ludCluZXdQb3NpdGlvbjsKKy0gKHZvaWQpc2Nyb2xs
V2l0aERlbHRhOihDR1NpemUpZGVsdGE7CisKKy0gKHZvaWQpbW91c2VEb3duOihOU0V2ZW50ICop
ZXZlbnQ7CistICh2b2lkKW1vdXNlTW92ZWQ6KE5TRXZlbnQgKilldmVudDsKKy0gKHZvaWQpbW91
c2VVcDooTlNFdmVudCAqKWV2ZW50OworLSAodm9pZCltb3VzZURyYWdnZWQ6KE5TRXZlbnQgKill
dmVudDsKKy0gKHZvaWQpbW91c2VFbnRlcmVkOihOU0V2ZW50ICopZXZlbnQ7CistICh2b2lkKW1v
dXNlRXhpdGVkOihOU0V2ZW50ICopZXZlbnQ7CisKKy0gKE5TQXJyYXkgKilmaW5kU3RyaW5nOihO
U1N0cmluZyAqKXN0cmluZyBjYXNlU2Vuc2l0aXZlOihCT09MKWlzQ2FzZVNlbnNpdGl2ZSBoaWdo
bGlnaHRNYXRjaGVzOihCT09MKXNob3VsZEhpZ2hsaWdodE1hdGNoZXM7CisKKy0gKGlkKWN1cnJl
bnRTZWxlY3Rpb247CistICh2b2lkKWNvcHlTZWxlY3Rpb247CistICh2b2lkKXNlbGVjdEFsbDsK
KworLSAoYm9vbClrZXlEb3duOihOU0V2ZW50ICopZXZlbnQ7CisKKy0gKHZvaWQpc2V0SFVERW5h
YmxlZDooQk9PTCllbmFibGVkOworLSAoQk9PTClodWRFbmFibGVkOworCistIChDR1JlY3QpYm91
bmRzRm9yQW5ub3RhdGlvbjooUERGQW5ub3RhdGlvbiAqKWFubm90YXRpb247CisKK0BlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmlu
ZGV4IGNkNThkODcuLmMwMDVjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMzgsMTYgKzM4LDE5IEBAIHR5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNDb250ZXh0UmVmOwogdHlwZWRlZiBzdHJ1Y3Qg
T3BhcXVlSlNWYWx1ZSogSlNPYmplY3RSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVK
U1ZhbHVlKiBKU1ZhbHVlUmVmOwogCitPQkpDX0NMQVNTIFBERkFubm90YXRpb247CiBPQkpDX0NM
QVNTIFBERkxheWVyQ29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgV0tQREZMYXllckNvbnRyb2xsZXJE
ZWxlZ2F0ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRWxlbWVudDsKIHN0cnVjdCBQ
bHVnaW5JbmZvOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUGx1Z2luVmlldzsK
K2NsYXNzIFBERlBsdWdpbkFubm90YXRpb247CiBjbGFzcyBXZWJGcmFtZTsKIAogY2xhc3MgUERG
UGx1Z2luIDogcHVibGljIFNpbXBsZVBERlBsdWdpbiB7CkBAIC01Niw2ICs1OSw3IEBAIHB1Ymxp
YzoKICAgICB+UERGUGx1Z2luKCk7CiAKICAgICB2b2lkIHBhaW50Q29udHJvbEZvckxheWVySW5D
b250ZXh0KENBTGF5ZXIgKiwgQ0dDb250ZXh0UmVmKTsKKyAgICB2b2lkIHNldEFjdGl2ZUFubm90
YXRpb24oUERGQW5ub3RhdGlvbiAqKTsKICAgICAKICAgICB1c2luZyBTY3JvbGxhYmxlQXJlYTo6
bm90aWZ5U2Nyb2xsUG9zaXRpb25DaGFuZ2VkOwogCkBAIC04NCw2ICs4OCw4IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFdlYkNvcmU6OlNjcm9s
bGJhciosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9W
RVJSSURFOwogCisgICAgYm9vbCBzdXBwb3J0c0Zvcm1zKCk7CisKICAgICBSZXRhaW5QdHI8Q0FM
YXllcj4gbV9jb250YWluZXJMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9jb250ZW50
TGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVy
OwpAQCAtOTEsNiArOTcsOSBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Nj
cm9sbENvcm5lckxheWVyOwogICAgIFJldGFpblB0cjxQREZMYXllckNvbnRyb2xsZXI+IG1fcGRm
TGF5ZXJDb250cm9sbGVyOwogICAgIAorICAgIFJlZlB0cjxQREZQbHVnaW5Bbm5vdGF0aW9uPiBt
X2FjdGl2ZUFubm90YXRpb247CisgICAgUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IG1fYW5ub3Rh
dGlvbkNvbnRhaW5lcjsKKwogICAgIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSBtX3Jvb3RWaWV3
VG9QbHVnaW5UcmFuc2Zvcm07CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9sYXN0TW91c2VQb2lu
dDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0KaW5kZXggYzVhMzQ2OS4uOGM2YjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTI5LDYgKzI5LDcg
QEAKICNpbXBvcnQgIlBERlBsdWdpbi5oIgogCiAjaW1wb3J0ICJQREZLaXRJbXBvcnRzLmgiCisj
aW1wb3J0ICJQREZQbHVnaW5Bbm5vdGF0aW9uLmgiCiAjaW1wb3J0ICJQbHVnaW5WaWV3LmgiCiAj
aW1wb3J0ICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbXBvcnQgIldlYkV2ZW50LmgiCkBAIC0zNywx
MSArMzgsMTQgQEAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2hyb21lLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0NTU1ByaW1pdGl2ZVZhbHVlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NT
U1Byb3BlcnR5TmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1l
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1lbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSFRUUEhlYWRlck1hcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJp
bmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KQEAgLTUxLDczICs1NSwzNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9TY3JvbGxBbmltYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxi
YXJUaGVtZS5oPgogCi1AcHJvdG9jb2wgUERGTGF5ZXJDb250cm9sbGVyRGVsZWdhdGUgPE5TT2Jq
ZWN0PgotCi0tICh2b2lkKXVwZGF0ZVNjcm9sbFBvc2l0aW9uOihDR1BvaW50KW5ld1Bvc2l0aW9u
OwotLSAodm9pZCl3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkOihOU0FycmF5ICopaXRlbXMgd2l0aFR5
cGVzOihOU0FycmF5ICopdHlwZXM7Ci0tICh2b2lkKXNob3dEZWZpbml0aW9uRm9yQXR0cmlidXRl
ZFN0cmluZzooTlNBdHRyaWJ1dGVkU3RyaW5nICopc3RyaW5nIGF0UG9pbnQ6KENHUG9pbnQpcG9p
bnQ7Ci0tICh2b2lkKXBlcmZvcm1XZWJTZWFyY2g6KE5TU3RyaW5nICopc3RyaW5nOwotLSAodm9p
ZClvcGVuV2l0aFByZXZpZXc7Ci0tICh2b2lkKXNhdmVUb1BERjsKLQotQGVuZAotCi1AaW50ZXJm
YWNlIFBERkxheWVyQ29udHJvbGxlciA6IE5TT2JqZWN0Ci1AZW5kCi0KLUBpbnRlcmZhY2UgUERG
TGF5ZXJDb250cm9sbGVyIChEZXRhaWxzKQotCi1AcHJvcGVydHkgKHJldGFpbikgQ0FMYXllciAq
cGFyZW50TGF5ZXI7Ci1AcHJvcGVydHkgKHJldGFpbikgUERGRG9jdW1lbnQgKmRvY3VtZW50Owot
QHByb3BlcnR5IChyZXRhaW4pIGlkPFBERkxheWVyQ29udHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0
ZTsKLQotLSAodm9pZClzZXRGcmFtZVNpemU6KENHU2l6ZSlzaXplOwotCi0tICh2b2lkKXNldERp
c3BsYXlNb2RlOihpbnQpbW9kZTsKLS0gKHZvaWQpc2V0RGlzcGxheXNQYWdlQnJlYWtzOihCT09M
KXBhZ2VCcmVha3M7Ci0KLS0gKENHRmxvYXQpdGlsZVNjYWxlRmFjdG9yOwotLSAodm9pZClzZXRU
aWxlU2NhbGVGYWN0b3I6KENHRmxvYXQpc2NhbGVGYWN0b3I7Ci0KLS0gKENHU2l6ZSljb250ZW50
U2l6ZTsKLS0gKENHU2l6ZSljb250ZW50U2l6ZVJlc3BlY3Rpbmdab29tOwotCi0tICh2b2lkKXNu
YXBzaG90SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dDsKLQotLSAodm9pZCltYWduaWZ5
V2l0aE1hZ25pZmljYXRpb246KENHRmxvYXQpbWFnbmlmaWNhdGlvbiBhdFBvaW50OihDR1BvaW50
KXBvaW50IGltbWVkaWF0ZWx5OihCT09MKWltbWVkaWF0ZWx5OwotCi0tIChDR1BvaW50KXNjcm9s
bFBvc2l0aW9uOwotLSAodm9pZClzZXRTY3JvbGxQb3NpdGlvbjooQ0dQb2ludCluZXdQb3NpdGlv
bjsKLS0gKHZvaWQpc2Nyb2xsV2l0aERlbHRhOihDR1NpemUpZGVsdGE7Ci0KLS0gKHZvaWQpbW91
c2VEb3duOihOU0V2ZW50ICopZXZlbnQ7Ci0tICh2b2lkKW1vdXNlTW92ZWQ6KE5TRXZlbnQgKill
dmVudDsKLS0gKHZvaWQpbW91c2VVcDooTlNFdmVudCAqKWV2ZW50OwotLSAodm9pZCltb3VzZURy
YWdnZWQ6KE5TRXZlbnQgKilldmVudDsKLS0gKHZvaWQpbW91c2VFbnRlcmVkOihOU0V2ZW50ICop
ZXZlbnQ7Ci0tICh2b2lkKW1vdXNlRXhpdGVkOihOU0V2ZW50ICopZXZlbnQ7Ci0KLS0gKE5TQXJy
YXkgKilmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBjYXNlU2Vuc2l0aXZlOihCT09MKWlz
Q2FzZVNlbnNpdGl2ZSBoaWdobGlnaHRNYXRjaGVzOihCT09MKXNob3VsZEhpZ2hsaWdodE1hdGNo
ZXM7Ci0KLS0gKGlkKWN1cnJlbnRTZWxlY3Rpb247Ci0tICh2b2lkKWNvcHlTZWxlY3Rpb247Ci0t
ICh2b2lkKXNlbGVjdEFsbDsKLQotLSAoYm9vbClrZXlEb3duOihOU0V2ZW50ICopZXZlbnQ7Ci0K
LS0gKHZvaWQpc2V0SFVERW5hYmxlZDooQk9PTCllbmFibGVkOwotLSAoQk9PTClodWRFbmFibGVk
OwotCi1AZW5kCisjaW1wb3J0ICJQREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmgiCiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCisvLyBTZXQgb3ZlcmZsb3c6IGhpZGRlbiBvbiB0aGUgYW5u
b3RhdGlvbiBjb250YWluZXIgc28gPGlucHV0PiBlbGVtZW50cyBzY3JvbGxlZCBvdXQgb2Ygdmll
dyBkb24ndCBzaG93CisvLyBzY3JvbGxiYXJzIG9uIHRoZSBib2R5LiBXZSBjYW4ndCBhZGQgYW5u
b3RhdGlvbnMgZGlyZWN0bHkgdG8gdGhlIGJvZHksIGJlY2F1c2Ugb3ZlcmZsb3c6IGhpZGRlbiBv
biB0aGUgYm9keQorLy8gd2lsbCBicmVhayBydWJiZXItYmFuZGluZy4KK3N0YXRpYyBjb25zdCBj
aGFyKiBhbm5vdGF0aW9uU3R5bGUgPSAiIFwKKyNhbm5vdGF0aW9uQ29udGFpbmVyIHsgXAorICAg
IG92ZXJmbG93OiBoaWRkZW47IFwKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7IFwKKyAgICBwb2lu
dGVyLWV2ZW50czogbm9uZTsgXAorICAgIHRvcDogMDsgXAorICAgIGxlZnQ6IDA7IFwKKyAgICBy
aWdodDogMDsgXAorICAgIGJvdHRvbTogMDsgXAorfSBcCisjYW5ub3RhdGlvbkNvbnRhaW5lciA+
IC5hbm5vdGF0aW9uIHsgXAorICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgXAorICAgIHBvaW50ZXIt
ZXZlbnRzOiBhdXRvOyBcCit9IFwKKyNhbm5vdGF0aW9uQ29udGFpbmVyID4gdGV4dGFyZWEuYW5u
b3RhdGlvbiB7IFwKKyAgICByZXNpemU6IG5vbmU7IFwKK30iOworCiBAaW50ZXJmYWNlIFdLUERG
UGx1Z2luU2Nyb2xsYmFyTGF5ZXIgOiBDQUxheWVyCiB7CiAgICAgV2ViS2l0OjpQREZQbHVnaW4q
IF9wZGZQbHVnaW47CiB9CiAKLUBwcm9wZXJ0eSAoYXNzaWduKSBXZWJLaXQ6OlBERlBsdWdpbiog
cGRmUGx1Z2luOworQHByb3BlcnR5KGFzc2lnbikgV2ViS2l0OjpQREZQbHVnaW4qIHBkZlBsdWdp
bjsKIAogQGVuZAogCkBAIC0xNTIsNyArMTIwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAgICAgV2ViS2l0OjpQREZQbHVnaW4qIF9wZGZQbHVnaW47CiB9CiAKLUBwcm9wZXJ0eSAoYXNz
aWduKSBXZWJLaXQ6OlBERlBsdWdpbiogcGRmUGx1Z2luOworQHByb3BlcnR5KGFzc2lnbikgV2Vi
S2l0OjpQREZQbHVnaW4qIHBkZlBsdWdpbjsKIAogQGVuZAogCkBAIC0yMDgsMTAgKzE3NiwxNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQog
CistICh2b2lkKXBkZkxheWVyQ29udHJvbGxlcjooUERGTGF5ZXJDb250cm9sbGVyICopcGRmTGF5
ZXJDb250cm9sbGVyIGRpZENoYW5nZUFjdGl2ZUFubm90YXRpb246KFBERkFubm90YXRpb24gKilh
bm5vdGF0aW9uCit7CisgICAgX3BkZlBsdWdpbi0+c2V0QWN0aXZlQW5ub3RhdGlvbihhbm5vdGF0
aW9uKTsKK30KKwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKKwogUGFzc1JlZlB0cjxQREZQbHVnaW4+IFBERlBsdWdpbjo6Y3JlYXRlKFdl
YkZyYW1lKiBmcmFtZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBERlBsdWdpbihmcmFt
ZSkpOwpAQCAtMjI3LDcgKzIwMiwyMSBAQCBQREZQbHVnaW46OlBERlBsdWdpbihXZWJGcmFtZSog
ZnJhbWUpCiB7CiAgICAgbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkuZGVsZWdhdGUgPSBtX3Bk
ZkxheWVyQ29udHJvbGxlckRlbGVnYXRlLmdldCgpOwogICAgIG1fcGRmTGF5ZXJDb250cm9sbGVy
LmdldCgpLnBhcmVudExheWVyID0gbV9jb250ZW50TGF5ZXIuZ2V0KCk7Ci0gICAgCisKKyAgICBp
ZiAoc3VwcG9ydHNGb3JtcygpKSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworCisg
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT5kb2N1
bWVudCgpOworICAgICAgICBtX2Fubm90YXRpb25Db250YWluZXIgPSBkb2N1bWVudC0+Y3JlYXRl
RWxlbWVudChkaXZUYWcsIGZhbHNlKTsKKyAgICAgICAgbV9hbm5vdGF0aW9uQ29udGFpbmVyLT5z
ZXRBdHRyaWJ1dGUoaWRBdHRyLCAiYW5ub3RhdGlvbkNvbnRhaW5lciIpOworCisgICAgICAgIFJl
ZlB0cjxFbGVtZW50PiBtX2Fubm90YXRpb25TdHlsZSA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50
KHN0eWxlVGFnLCBmYWxzZSk7CisgICAgICAgIG1fYW5ub3RhdGlvblN0eWxlLT5zZXRUZXh0Q29u
dGVudChhbm5vdGF0aW9uU3R5bGUsIGVjKTsKKworICAgICAgICBtX2Fubm90YXRpb25Db250YWlu
ZXItPmFwcGVuZENoaWxkKG1fYW5ub3RhdGlvblN0eWxlLmdldCgpLCBlYyk7CisgICAgICAgIGRv
Y3VtZW50LT5ib2R5KCktPmFwcGVuZENoaWxkKG1fYW5ub3RhdGlvbkNvbnRhaW5lci5nZXQoKSwg
ZWMpOworICAgIH0KKwogICAgIFttX2NvbnRhaW5lckxheWVyLmdldCgpIGFkZFN1YmxheWVyOm1f
Y29udGVudExheWVyLmdldCgpXTsKICAgICBbbV9jb250YWluZXJMYXllci5nZXQoKSBhZGRTdWJs
YXllcjptX3Njcm9sbENvcm5lckxheWVyLmdldCgpXTsKIH0KQEAgLTMwMCw2ICsyODksOCBAQCB2
b2lkIFBERlBsdWdpbjo6cGRmRG9jdW1lbnREaWRMb2FkKCkKICAgICAKICAgICBwbHVnaW5WaWV3
KCktPnNldFBhZ2VTY2FsZUZhY3RvcihbbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgdGlsZVNj
YWxlRmFjdG9yXSwgSW50UG9pbnQoKSk7CiAKKyAgICBub3RpZnlTY3JvbGxQb3NpdGlvbkNoYW5n
ZWQoSW50UG9pbnQoW21fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgpIHNjcm9sbFBvc2l0aW9uXSkp
OworCiAgICAgY2FsY3VsYXRlU2l6ZXMoKTsKICAgICB1cGRhdGVTY3JvbGxiYXJzKCk7CiAKQEAg
LTMyNSw2ICszMTYsOSBAQCB2b2lkIFBERlBsdWdpbjo6ZGVzdHJveSgpCiAgICAgICAgICAgICBm
cmFtZVZpZXctPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpOwogICAgIH0KIAorICAgIG1fYWN0
aXZlQW5ub3RhdGlvbiA9IDA7CisgICAgbV9hbm5vdGF0aW9uQ29udGFpbmVyID0gMDsKKwogICAg
IGRlc3Ryb3lTY3JvbGxiYXIoSG9yaXpvbnRhbFNjcm9sbGJhcik7CiAgICAgZGVzdHJveVNjcm9s
bGJhcihWZXJ0aWNhbFNjcm9sbGJhcik7CiAgICAgCkBAIC00MDUsMTEgKzM5OSwxNSBAQCB2b2lk
IFBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwg
Y29uc3QgSW50UmVjdCYsIGNvbgogICAgIAogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIG1fbGFz
dE1vdXNlUG9pbnQsIHdlIHNob3VsZCB1c2UgdGhlIHpvb20gb3JpZ2luIGZyb20gUGx1Z2luVmll
dzo6c2V0UGFnZVNjYWxlRmFjdG9yLgogICAgIFttX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKSBt
YWduaWZ5V2l0aE1hZ25pZmljYXRpb246bWFnbmlmaWNhdGlvbiBhdFBvaW50Om1fbGFzdE1vdXNl
UG9pbnQgaW1tZWRpYXRlbHk6WUVTXTsKLSAgICBbbV9jb250ZW50TGF5ZXIuZ2V0KCkgc2V0U3Vi
bGF5ZXJUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRFRyYW5zbGF0ZSh0cmFuc2Zvcm0sIDAsIC1wbHVn
aW5TaXplLmhlaWdodCgpLCAwKV07Ci0gICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIAogICAg
IGNhbGN1bGF0ZVNpemVzKCk7CiAgICAgdXBkYXRlU2Nyb2xsYmFycygpOworCisgICAgaWYgKG1f
YWN0aXZlQW5ub3RhdGlvbikKKyAgICAgICAgbV9hY3RpdmVBbm5vdGF0aW9uLT51cGRhdGVHZW9t
ZXRyeSgpOworCisgICAgW21fY29udGVudExheWVyLmdldCgpIHNldFN1YmxheWVyVHJhbnNmb3Jt
OkNBVHJhbnNmb3JtM0RUcmFuc2xhdGUodHJhbnNmb3JtLCAwLCAtcGx1Z2luU2l6ZS5oZWlnaHQo
KSwgMCldOworICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAgICAgCiBzdGF0aWMgTlNV
SW50ZWdlciBtb2RpZmllckZsYWdzRnJvbVdlYkV2ZW50KGNvbnN0IFdlYkV2ZW50JiBldmVudCkK
QEAgLTU2MSw3ICs1NTksMTQgQEAgYm9vbCBQREZQbHVnaW46OmlzRWRpdGluZ0NvbW1hbmRFbmFi
bGVkKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUpCiB2b2lkIFBERlBsdWdpbjo6c2V0U2Nyb2xs
T2Zmc2V0KGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiB7CiAgICAgU2ltcGxlUERGUGx1Z2luOjpz
ZXRTY3JvbGxPZmZzZXQob2Zmc2V0KTsKKworICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAg
ICBbbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgc2V0U2Nyb2xsUG9zaXRpb246b2Zmc2V0XTsK
KworICAgIGlmIChtX2FjdGl2ZUFubm90YXRpb24pCisgICAgICAgIG1fYWN0aXZlQW5ub3RhdGlv
bi0+dXBkYXRlR2VvbWV0cnkoKTsKKworICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAK
IHZvaWQgUERGUGx1Z2luOjppbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTU3Nyw2ICs1ODIsMjcgQEAgdm9pZCBQREZQ
bHVnaW46OmludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiAg
ICAgW21fc2Nyb2xsQ29ybmVyTGF5ZXIuZ2V0KCkgc2V0TmVlZHNEaXNwbGF5XTsKIH0KIAordm9p
ZCBQREZQbHVnaW46OnNldEFjdGl2ZUFubm90YXRpb24oUERGQW5ub3RhdGlvbiAqYW5ub3RhdGlv
bikKK3sKKyAgICBpZiAoIXN1cHBvcnRzRm9ybXMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKG1fYWN0aXZlQW5ub3RhdGlvbikKKyAgICAgICAgbV9hY3RpdmVBbm5vdGF0aW9uLT5jb21t
aXQoKTsKKworICAgIGlmIChhbm5vdGF0aW9uKSB7CisgICAgICAgIG1fYWN0aXZlQW5ub3RhdGlv
biA9IFBERlBsdWdpbkFubm90YXRpb246OmNyZWF0ZShhbm5vdGF0aW9uLCBtX3BkZkxheWVyQ29u
dHJvbGxlci5nZXQoKSwgdGhpcyk7CisgICAgICAgIG1fYWN0aXZlQW5ub3RhdGlvbi0+YXR0YWNo
KG1fYW5ub3RhdGlvbkNvbnRhaW5lci5nZXQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fYWN0
aXZlQW5ub3RhdGlvbiA9IDA7Cit9CisKK2Jvb2wgUERGUGx1Z2luOjpzdXBwb3J0c0Zvcm1zKCkK
K3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHN1cHBvcnQgZm9ybXMgZm9yIGlubGluZSBQREZz
PyBTaW5jZSB3ZSB0b3VjaCB0aGUgZG9jdW1lbnQsIHRoaXMgbWlnaHQgYmUgZGlmZmljdWx0Lgor
ICAgIHJldHVybiB3ZWJGcmFtZSgpLT5pc01haW5GcmFtZSgpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShQREZLSVRfUExVR0lOKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90
YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmUzZWU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW5Bbm5vdGF0aW9uLmgKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFBERlBsdWdpbkFubm90YXRpb25faAorI2RlZmluZSBQREZQbHVnaW5Bbm5vdGF0aW9uX2gKKwor
I2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQorCisjaW5jbHVkZSA8V2ViQ29yZS9FdmVudExpc3Rl
bmVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRWxl
bWVudDsKK30KKworT0JKQ19DTEFTUyBQREZBbm5vdGF0aW9uOworT0JKQ19DTEFTUyBQREZMYXll
ckNvbnRyb2xsZXI7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQREZQbHVnaW47CisK
K2NsYXNzIFBERlBsdWdpbkFubm90YXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxQREZQbHVnaW5B
bm5vdGF0aW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UERGUGx1Z2luQW5u
b3RhdGlvbj4gY3JlYXRlKFBERkFubm90YXRpb24gKiwgUERGTGF5ZXJDb250cm9sbGVyICosIFBE
RlBsdWdpbiopOworICAgIHZpcnR1YWwgflBERlBsdWdpbkFubm90YXRpb24oKTsKKworICAgIFdl
YkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7
IH0KKyAgICBQREZBbm5vdGF0aW9uICphbm5vdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbm5v
dGF0aW9uLmdldCgpOyB9CisgICAgUERGUGx1Z2luKiBwbHVnaW4oKSBjb25zdCB7IHJldHVybiBt
X3BsdWdpbjsgfQorCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5KCk7CisgICAgdmly
dHVhbCB2b2lkIGNvbW1pdCgpID0gMDsKKworICAgIHZvaWQgYXR0YWNoKFdlYkNvcmU6OkVsZW1l
bnQqKTsKKworcHJvdGVjdGVkOgorICAgIFBERlBsdWdpbkFubm90YXRpb24oUERGQW5ub3RhdGlv
biAqYW5ub3RhdGlvbiwgUERGTGF5ZXJDb250cm9sbGVyICpwZGZMYXllckNvbnRyb2xsZXIsIFBE
RlBsdWdpbiogcGx1Z2luKQorICAgICAgICA6IG1fYW5ub3RhdGlvbihhbm5vdGF0aW9uKQorICAg
ICAgICAsIG1fZXZlbnRMaXN0ZW5lcihQREZQbHVnaW5Bbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcjo6
Y3JlYXRlKHRoaXMpKQorICAgICAgICAsIG1fcGRmTGF5ZXJDb250cm9sbGVyKHBkZkxheWVyQ29u
dHJvbGxlcikKKyAgICAgICAgLCBtX3BsdWdpbihwbHVnaW4pCisgICAgeworICAgIH0KKworICAg
IFdlYkNvcmU6OkVsZW1lbnQqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9Cisg
ICAgUERGTGF5ZXJDb250cm9sbGVyICpwZGZMYXllckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVy
biBtX3BkZkxheWVyQ29udHJvbGxlcjsgfQorCitwcml2YXRlOgorICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpID0gMDsKKwor
ICAgIGNsYXNzIFBERlBsdWdpbkFubm90YXRpb25FdmVudExpc3RlbmVyIDogcHVibGljIFdlYkNv
cmU6OkV2ZW50TGlzdGVuZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXI+IGNyZWF0ZShQREZQbHVnaW5Bbm5v
dGF0aW9uKiBhbm5vdGF0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFBERlBsdWdpbkFubm90YXRpb25FdmVudExpc3RlbmVyKGFubm90YXRpb24pKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyKSBPVkVSUklERSB7IHJldHVybiB0aGlzID09ICZsaXN0ZW5lcjsgfQor
CisgICAgcHJpdmF0ZToKKworICAgICAgICBQREZQbHVnaW5Bbm5vdGF0aW9uRXZlbnRMaXN0ZW5l
cihQREZQbHVnaW5Bbm5vdGF0aW9uKiBhbm5vdGF0aW9uKQorICAgICAgICAgICAgOiBXZWJDb3Jl
OjpFdmVudExpc3RlbmVyKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJU
eXBlKQorICAgICAgICAgICAgLCBtX2Fubm90YXRpb24oYW5ub3RhdGlvbikKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3JlOjpFdmVudCopIE9WRVJSSURFOworCisgICAg
ICAgIFBERlBsdWdpbkFubm90YXRpb24qIG1fYW5ub3RhdGlvbjsKKyAgICB9OworCisgICAgV2Vi
Q29yZTo6RWxlbWVudCogbV9wYXJlbnQ7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4g
bV9lbGVtZW50OworICAgIFJldGFpblB0cjxQREZBbm5vdGF0aW9uPiBtX2Fubm90YXRpb247CisK
KyAgICBSZWZQdHI8UERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXI+IG1fZXZlbnRMaXN0
ZW5lcjsKKworICAgIFBERkxheWVyQ29udHJvbGxlciAqbV9wZGZMYXllckNvbnRyb2xsZXI7Cisg
ICAgUERGUGx1Z2luKiBtX3BsdWdpbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFBERktJVF9QTFVHSU4pCisKKyNlbmRpZiAvLyBQREZQbHVnaW5Bbm5v
dGF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lYTVhZmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCkBAIC0wLDAgKzEsMTE0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQorCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIlBERlBsdWdpbkFubm90YXRpb24uaCIKKworI2ltcG9ydCAiUERG
S2l0SW1wb3J0cy5oIgorI2ltcG9ydCA8UERGS2l0L1BERktpdC5oPgorI2ltcG9ydCAiUERGTGF5
ZXJDb250cm9sbGVyRGV0YWlscy5oIgorI2ltcG9ydCAiUERGUGx1Z2luLmgiCisjaW1wb3J0ICJQ
REZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLmgiCisjaW1wb3J0ICJQREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbi5oIgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgorI2ltcG9ydCA8V2ViQ29yZS9D
U1NQcmltaXRpdmVWYWx1ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9DU1NQcm9wZXJ0eU5hbWVzLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxJ
bnB1dEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0hUTUxPcHRpb25FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxTZWxlY3RF
bGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxUZXh0QXJlYUVsZW1lbnQuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvUGFnZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK1Bhc3NSZWZQdHI8
UERGUGx1Z2luQW5ub3RhdGlvbj4gUERGUGx1Z2luQW5ub3RhdGlvbjo6Y3JlYXRlKFBERkFubm90
YXRpb24gKmFubm90YXRpb24sIFBERkxheWVyQ29udHJvbGxlciAqcGRmTGF5ZXJDb250cm9sbGVy
LCBQREZQbHVnaW4qIHBsdWdpbikKK3sKKyAgICBpZiAoW2Fubm90YXRpb24gaXNLaW5kT2ZDbGFz
czpwZGZBbm5vdGF0aW9uVGV4dFdpZGdldENsYXNzKCldKQorICAgICAgICByZXR1cm4gUERGUGx1
Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZShhbm5vdGF0aW9uLCBwZGZMYXllckNvbnRyb2xsZXIs
IHBsdWdpbik7CisgICAgaWYgKFthbm5vdGF0aW9uIGlzS2luZE9mQ2xhc3M6cGRmQW5ub3RhdGlv
bkNob2ljZVdpZGdldENsYXNzKCldKQorICAgICAgICByZXR1cm4gUERGUGx1Z2luQ2hvaWNlQW5u
b3RhdGlvbjo6Y3JlYXRlKGFubm90YXRpb24sIHBkZkxheWVyQ29udHJvbGxlciwgcGx1Z2luKTsK
KworICAgIHJldHVybiAwOworfQorCit2b2lkIFBERlBsdWdpbkFubm90YXRpb246OmF0dGFjaChF
bGVtZW50KiBwYXJlbnQpCit7CisgICAgQVNTRVJUKCFtX3BhcmVudCk7CisKKyAgICBtX3BhcmVu
dCA9IHBhcmVudDsKKyAgICBtX2VsZW1lbnQgPSBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpOwor
CisgICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCAiYW5ub3RhdGlvbiIpOwor
ICAgIG1fZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgbV9ldmVudExpc3RlbmVy
LCBmYWxzZSk7CisgICAgbV9lbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgbV9ldmVu
dExpc3RlbmVyLCBmYWxzZSk7CisKKyAgICB1cGRhdGVHZW9tZXRyeSgpOworCisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgbV9wYXJlbnQtPmFwcGVuZENoaWxkKG1fZWxlbWVudCwgZWMp
OworCisgICAgLy8gRklYTUU6IFRoZSB0ZXh0IGN1cnNvciBkb2Vzbid0IGJsaW5rIGFmdGVyIHRo
aXMuIFdoeT8KKyAgICBtX2VsZW1lbnQtPmZvY3VzKCk7Cit9CisKK1BERlBsdWdpbkFubm90YXRp
b246On5QREZQbHVnaW5Bbm5vdGF0aW9uKCkKK3sKKyAgICBtX2VsZW1lbnQtPnJlbW92ZUV2ZW50
TGlzdGVuZXIoImNoYW5nZSIsIG1fZXZlbnRMaXN0ZW5lci5nZXQoKSwgZmFsc2UpOworICAgIG1f
ZWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsIG1fZXZlbnRMaXN0ZW5lci5nZXQo
KSwgZmFsc2UpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgbV9wYXJlbnQtPnJl
bW92ZUNoaWxkKGVsZW1lbnQoKSwgZWMpOworfQorCit2b2lkIFBERlBsdWdpbkFubm90YXRpb246
OnVwZGF0ZUdlb21ldHJ5KCkKK3sKKyAgICBJbnRTaXplIGRvY3VtZW50U2l6ZShbbV9wZGZMYXll
ckNvbnRyb2xsZXIgY29udGVudFNpemVSZXNwZWN0aW5nWm9vbV0pOworICAgIEludFBvaW50IHNj
cm9sbFBvc2l0aW9uKFttX3BkZkxheWVyQ29udHJvbGxlciBzY3JvbGxQb3NpdGlvbl0pOworICAg
IE5TUmVjdCBhbm5vdGF0aW9uUmVjdCA9IFttX3BkZkxheWVyQ29udHJvbGxlciBib3VuZHNGb3JB
bm5vdGF0aW9uOm1fYW5ub3RhdGlvbi5nZXQoKV07CisKKyAgICBTdHlsZWRFbGVtZW50KiBzdHls
ZWRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQoKSk7CisgICAg
c3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBh
bm5vdGF0aW9uUmVjdC5zaXplLndpZHRoLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAg
ICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0
LCBhbm5vdGF0aW9uUmVjdC5zaXplLmhlaWdodCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7
CisgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxl
ZnQsIGFubm90YXRpb25SZWN0Lm9yaWdpbi54IC0gc2Nyb2xsUG9zaXRpb24ueCgpLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5VG9wLCBkb2N1bWVudFNpemUuaGVpZ2h0KCkgLSBhbm5vdGF0aW9u
UmVjdC5vcmlnaW4ueSAtIGFubm90YXRpb25SZWN0LnNpemUuaGVpZ2h0IC0gc2Nyb2xsUG9zaXRp
b24ueSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKK30KKwordm9pZCBQREZQbHVnaW5B
bm5vdGF0aW9uOjpQREZQbHVnaW5Bbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmx1ckV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmNoYW5nZUV2ZW50KQorICAgICAgICBtX2Fubm90YXRpb24tPnBsdWdpbigpLT5z
ZXRBY3RpdmVBbm5vdGF0aW9uKDApOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShQREZLSVRfUExVR0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTBlODMwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW5DaG9pY2VBbm5vdGF0aW9uLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbl9oCisjZGVmaW5lIFBERlBsdWdpbkNob2ljZUFu
bm90YXRpb25faAorCisjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCisKKyNpbmNsdWRlICJQREZQ
bHVnaW5Bbm5vdGF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEVsZW1lbnQ7
Cit9CisKK09CSkNfQ0xBU1MgUERGQW5ub3RhdGlvbkNob2ljZVdpZGdldDsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24gOiBwdWJsaWMgUERG
UGx1Z2luQW5ub3RhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UERGUGx1
Z2luQ2hvaWNlQW5ub3RhdGlvbj4gY3JlYXRlKFBERkFubm90YXRpb24gKiwgUERGTGF5ZXJDb250
cm9sbGVyICosIFBERlBsdWdpbiopOworCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdCgpIE9WRVJSSURFOworCitwcml2
YXRlOgorICAgIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24oUERGQW5ub3RhdGlvbiAqYW5ub3Rh
dGlvbiwgUERGTGF5ZXJDb250cm9sbGVyICpwZGZMYXllckNvbnRyb2xsZXIsIFBERlBsdWdpbiog
cGx1Z2luKQorICAgICAgICA6IFBERlBsdWdpbkFubm90YXRpb24oYW5ub3RhdGlvbiwgcGRmTGF5
ZXJDb250cm9sbGVyLCBwbHVnaW4pCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpIE9WRVJSSURF
OworCisgICAgUERGQW5ub3RhdGlvbkNob2ljZVdpZGdldCAqY2hvaWNlQW5ub3RhdGlvbigpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PFBERkFubm90YXRpb25DaG9pY2VXaWRnZXQgKj4oYW5ub3RhdGlv
bigpKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
UERGS0lUX1BMVUdJTikKKworI2VuZGlmIC8vIFBERlBsdWdpbkNob2ljZUFubm90YXRpb25faApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW5DaG9pY2VBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjIyZTQyNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KQEAgLTAs
MCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5oIgor
CisjaW1wb3J0ICJQREZLaXRJbXBvcnRzLmgiCisjaW1wb3J0IDxQREZLaXQvUERGS2l0Lmg+Cisj
aW1wb3J0ICJQREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmgiCisjaW1wb3J0IDxXZWJDb3JlL0Nv
bG9yTWFjLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NTU1ByaW1pdGl2ZVZhbHVlLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1l
bnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0hU
TUxPcHRpb25FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxTZWxlY3RFbGVtZW50Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitQYXNz
UmVmUHRyPFBERlBsdWdpbkNob2ljZUFubm90YXRpb24+IFBERlBsdWdpbkNob2ljZUFubm90YXRp
b246OmNyZWF0ZShQREZBbm5vdGF0aW9uICphbm5vdGF0aW9uLCBQREZMYXllckNvbnRyb2xsZXIg
KnBkZkxheWVyQ29udHJvbGxlciwgUERGUGx1Z2luKiBwbHVnaW4pCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uKGFubm90YXRpb24sIHBkZkxheWVy
Q29udHJvbGxlciwgcGx1Z2luKSk7Cit9CisKK3ZvaWQgUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlv
bjo6dXBkYXRlR2VvbWV0cnkoKQoreworICAgIFBERlBsdWdpbkFubm90YXRpb246OnVwZGF0ZUdl
b21ldHJ5KCk7CisKKyAgICBTdHlsZWRFbGVtZW50KiBzdHlsZWRFbGVtZW50ID0gc3RhdGljX2Nh
c3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQoKSk7CisgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBbW2Nob2ljZUFubm90YXRpb24o
KSBmb250XSBwb2ludFNpemVdICogW3BkZkxheWVyQ29udHJvbGxlcigpIHRpbGVTY2FsZUZhY3Rv
cl0sIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworfQorCit2b2lkIFBERlBsdWdpbkNob2lj
ZUFubm90YXRpb246OmNvbW1pdCgpCit7CisgICAgW2Nob2ljZUFubm90YXRpb24oKSBzZXRTdHJp
bmdWYWx1ZTpzdGF0aWNfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KGVsZW1lbnQoKSktPnZhbHVl
KCldOworfQorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpbkNob2ljZUFubm90YXRpb246
OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKK3sKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBw
YXJlbnQoKS0+b3duZXJEb2N1bWVudCgpOworICAgIFBERkFubm90YXRpb25DaG9pY2VXaWRnZXQg
KmNob2ljZUFubm90YXRpb24gPSB0aGlzLT5jaG9pY2VBbm5vdGF0aW9uKCk7CisKKyAgICBSZWZQ
dHI8RWxlbWVudD4gZWxlbWVudCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50KHNlbGVjdFRhZywg
ZmFsc2UpOworCisgICAgU3R5bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCA9IHN0YXRpY19jYXN0
PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50LmdldCgpKTsKKworICAgIHN0eWxlZEVsZW1lbnQtPnNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvciwgY29sb3JGcm9tTlNDb2xvcihb
Y2hvaWNlQW5ub3RhdGlvbiBmb250Q29sb3JdKS5zZXJpYWxpemVkKCkpOworICAgIHN0eWxlZEVs
ZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBbW2No
b2ljZUFubm90YXRpb24gZm9udF0gZmFtaWx5TmFtZV0pOworCisgICAgTlNBcnJheSAqY2hvaWNl
cyA9IFtjaG9pY2VBbm5vdGF0aW9uIGNob2ljZXNdOworICAgIFN0cmluZyBzZWxlY3RlZENob2lj
ZSA9IFtjaG9pY2VBbm5vdGF0aW9uIHN0cmluZ1ZhbHVlXTsKKyAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMCwgY291bnQgPSBjaG9pY2VzLmNvdW50
OyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBSZWZQdHI8RWxlbWVudD4gY2hvaWNlT3B0aW9u
ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQob3B0aW9uVGFnLCBmYWxzZSk7CisgICAgICAgIFN0
cmluZyBjaG9pY2UgPSBbY2hvaWNlcyBvYmplY3RBdEluZGV4OmldOworICAgICAgICBjaG9pY2VP
cHRpb24tPnNldEF0dHJpYnV0ZSh2YWx1ZUF0dHIsIGNob2ljZSk7CisgICAgICAgIGNob2ljZU9w
dGlvbi0+c2V0VGV4dENvbnRlbnQoY2hvaWNlLCBlYyk7CisKKyAgICAgICAgaWYgKGNob2ljZSA9
PSBzZWxlY3RlZENob2ljZSkKKyAgICAgICAgICAgIGNob2ljZU9wdGlvbi0+c2V0QXR0cmlidXRl
KHNlbGVjdGVkQXR0ciwgInNlbGVjdGVkIik7CisKKyAgICAgICAgc3R5bGVkRWxlbWVudC0+YXBw
ZW5kQ2hpbGQoY2hvaWNlT3B0aW9uLCBlYyk7CisgICAgfQorCisgICAgcmV0dXJuIGVsZW1lbnQ7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBERktJVF9Q
TFVHSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNjI2NjI4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaApAQCAtMCww
ICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbl9o
CisjZGVmaW5lIFBERlBsdWdpblRleHRBbm5vdGF0aW9uX2gKKworI2lmIEVOQUJMRShQREZLSVRf
UExVR0lOKQorCisjaW5jbHVkZSAiUERGUGx1Z2luQW5ub3RhdGlvbi5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBFbGVtZW50OworfQorCitPQkpDX0NMQVNTIFBERkFubm90YXRpb25U
ZXh0V2lkZ2V0OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUERGUGx1Z2luVGV4dEFu
bm90YXRpb24gOiBwdWJsaWMgUERGUGx1Z2luQW5ub3RhdGlvbiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UERGUGx1Z2luVGV4dEFubm90YXRpb24+IGNyZWF0ZShQREZBbm5vdGF0
aW9uICosIFBERkxheWVyQ29udHJvbGxlciAqLCBQREZQbHVnaW4qKTsKKworICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVHZW9tZXRyeSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb21taXQo
KSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbihQREZB
bm5vdGF0aW9uICphbm5vdGF0aW9uLCBQREZMYXllckNvbnRyb2xsZXIgKnBkZkxheWVyQ29udHJv
bGxlciwgUERGUGx1Z2luKiBwbHVnaW4pCisgICAgICAgIDogUERGUGx1Z2luQW5ub3RhdGlvbihh
bm5vdGF0aW9uLCBwZGZMYXllckNvbnRyb2xsZXIsIHBsdWdpbikKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25F
bGVtZW50KCkgT1ZFUlJJREU7CisKKyAgICBQREZBbm5vdGF0aW9uVGV4dFdpZGdldCAqIHRleHRB
bm5vdGF0aW9uKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UERGQW5ub3RhdGlvblRleHRXaWRnZXQg
Kj4oYW5ub3RhdGlvbigpKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoUERGS0lUX1BMVUdJTikKKworI2VuZGlmIC8vIFBERlBsdWdpblRleHRBbm5v
dGF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmE5NmYwMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCkBA
IC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBERlBsdWdpblRleHRBbm5vdGF0aW9uLmgi
CisKKyNpbXBvcnQgIlBERktpdEltcG9ydHMuaCIKKyNpbXBvcnQgPFBERktpdC9QREZLaXQuaD4K
KyNpbXBvcnQgIlBERkxheWVyQ29udHJvbGxlckRldGFpbHMuaCIKKyNpbXBvcnQgPFdlYkNvcmUv
Q29sb3JNYWMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ1NTUHJpbWl0aXZlVmFsdWUuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvQ1NTUHJvcGVydHlOYW1lcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MRWxl
bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0hUTUxOYW1lcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGV4dEFyZWFFbGVtZW50
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KKworQGludGVyZmFjZSBQREZBbm5vdGF0aW9u
VGV4dFdpZGdldCAoRGV0YWlscykKKy0gKEJPT0wpaXNNdWx0aWxpbmU7CitAZW5kCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKKworc3RhdGljIGNvbnN0IFN0cmluZyBjc3NBbGlnbm1lbnRWYWx1ZUZv
ck5TVGV4dEFsaWdubWVudChOU1RleHRBbGlnbm1lbnQgYWxpZ25tZW50KQoreworICAgIHN3aXRj
aCAoYWxpZ25tZW50KSB7CisgICAgY2FzZSBOU0xlZnRUZXh0QWxpZ25tZW50OgorICAgICAgICBy
ZXR1cm4gImxlZnQiOworICAgIGNhc2UgTlNSaWdodFRleHRBbGlnbm1lbnQ6CisgICAgICAgIHJl
dHVybiAicmlnaHQiOworICAgIGNhc2UgTlNDZW50ZXJUZXh0QWxpZ25tZW50OgorICAgICAgICBy
ZXR1cm4gImNlbnRlciI7CisgICAgY2FzZSBOU0p1c3RpZmllZFRleHRBbGlnbm1lbnQ6CisgICAg
ICAgIHJldHVybiAianVzdGZ5IjsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gImluaGVy
aXQiOworICAgIH0KK30KKworUGFzc1JlZlB0cjxQREZQbHVnaW5UZXh0QW5ub3RhdGlvbj4gUERG
UGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZShQREZBbm5vdGF0aW9uICphbm5vdGF0aW9uLCBQ
REZMYXllckNvbnRyb2xsZXIgKnBkZkxheWVyQ29udHJvbGxlciwgUERGUGx1Z2luKiBwbHVnaW4p
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbihhbm5v
dGF0aW9uLCBwZGZMYXllckNvbnRyb2xsZXIsIHBsdWdpbikpOworfQorCitQYXNzUmVmUHRyPEVs
ZW1lbnQ+IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgp
Cit7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7CisKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBwYXJlbnQoKS0+b3duZXJEb2N1bWVudCgpOworICAgIFBERkFubm90YXRpb25UZXh0V2lk
Z2V0ICp0ZXh0QW5ub3RhdGlvbiA9IHRoaXMtPnRleHRBbm5vdGF0aW9uKCk7CisgICAgYm9vbCBp
c011bHRpbGluZSA9IFt0ZXh0QW5ub3RhdGlvbiBpc011bHRpbGluZV07CisKKyAgICBpZiAoaXNN
dWx0aWxpbmUpCisgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudCh0ZXh0
YXJlYVRhZywgZmFsc2UpOworICAgIGVsc2UKKyAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LT5j
cmVhdGVFbGVtZW50KGlucHV0VGFnLCBmYWxzZSk7CisKKyAgICBTdHlsZWRFbGVtZW50KiBzdHls
ZWRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpOwor
ICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xv
ciwgY29sb3JGcm9tTlNDb2xvcihbdGV4dEFubm90YXRpb24gZm9udENvbG9yXSkuc2VyaWFsaXpl
ZCgpKTsKKyAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5Rm9udEZhbWlseSwgW1t0ZXh0QW5ub3RhdGlvbiBmb250XSBmYW1pbHlOYW1lXSk7CisgICAg
c3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGln
biwgY3NzQWxpZ25tZW50VmFsdWVGb3JOU1RleHRBbGlnbm1lbnQoW3RleHRBbm5vdGF0aW9uIGFs
aWdubWVudF0pKTsKKworICAgIGlmIChpc011bHRpbGluZSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8
SFRNTFRleHRBcmVhRWxlbWVudCo+KHN0eWxlZEVsZW1lbnQpLT5zZXRWYWx1ZShbdGV4dEFubm90
YXRpb24gc3RyaW5nVmFsdWVdKTsKKyAgICBlbHNlCisgICAgICAgIHN0YXRpY19jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQqPihzdHlsZWRFbGVtZW50KS0+c2V0VmFsdWUoW3RleHRBbm5vdGF0aW9uIHN0
cmluZ1ZhbHVlXSk7CisKKyAgICByZXR1cm4gZWxlbWVudDsKK30KKwordm9pZCBQREZQbHVnaW5U
ZXh0QW5ub3RhdGlvbjo6dXBkYXRlR2VvbWV0cnkoKQoreworICAgIFBERlBsdWdpbkFubm90YXRp
b246OnVwZGF0ZUdlb21ldHJ5KCk7CisKKyAgICBTdHlsZWRFbGVtZW50KiBzdHlsZWRFbGVtZW50
ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQoKSk7CisgICAgc3R5bGVkRWxl
bWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBbW3RleHRB
bm5vdGF0aW9uKCkgZm9udF0gcG9pbnRTaXplXSAqIFtwZGZMYXllckNvbnRyb2xsZXIoKSB0aWxl
U2NhbGVGYWN0b3JdLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKK30KKwordm9pZCBQREZQ
bHVnaW5UZXh0QW5ub3RhdGlvbjo6Y29tbWl0KCkKK3sKKyAgICBQREZBbm5vdGF0aW9uVGV4dFdp
ZGdldCAqdGV4dEFubm90YXRpb24gPSB0aGlzLT50ZXh0QW5ub3RhdGlvbigpOworCisgICAgaWYg
KFt0ZXh0QW5ub3RhdGlvbiBpc011bHRpbGluZV0pCisgICAgICAgIFt0ZXh0QW5ub3RhdGlvbiBz
ZXRTdHJpbmdWYWx1ZTpzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4oZWxlbWVudCgp
KS0+dmFsdWUoKV07CisgICAgZWxzZQorICAgICAgICBbdGV4dEFubm90YXRpb24gc2V0U3RyaW5n
VmFsdWU6c3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQoKSktPnZhbHVlKCld
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQREZLSVRf
UExVR0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDIwNDk1ZDIuLjJhOGNiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY2Niw2ICs2NjYsMjAgQEAgUGFzc1JlZlB0cjxJbW11
dGFibGVBcnJheT4gV2ViUGFnZTo6dHJhY2tlZFJlcGFpbnRSZWN0cygpCiAgICAgcmV0dXJuIElt
bXV0YWJsZUFycmF5OjphZG9wdCh2ZWN0b3IpOwogfQogCitzdGF0aWMgUGx1Z2luVmlldyogZm9j
dXNlZFBsdWdpblZpZXdGb3JGcmFtZShGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFmcmFtZS0+
ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IFBsdWdpbkRvY3VtZW50KiBwbHVnaW5Eb2N1bWVudCA9IHN0YXRpY19jYXN0PFBsdWdpbkRvY3Vt
ZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpOworCisgICAgaWYgKHBsdWdpbkRvY3VtZW50LT5mb2N1
c2VkTm9kZSgpICE9IHBsdWdpbkRvY3VtZW50LT5wbHVnaW5Ob2RlKCkpCisgICAgICAgIHJldHVy
biAwOworCisgICAgUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHN0YXRpY19jYXN0PFBsdWdpblZp
ZXcqPihwbHVnaW5Eb2N1bWVudC0+cGx1Z2luV2lkZ2V0KCkpOworICAgIHJldHVybiBwbHVnaW5W
aWV3OworfQorCiBzdGF0aWMgUGx1Z2luVmlldyogcGx1Z2luVmlld0ZvckZyYW1lKEZyYW1lKiBm
cmFtZSkKIHsKICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkp
CkBAIC02ODIsNyArNjk2LDcgQEAgdm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdGluZ0NvbW1hbmQo
Y29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmcKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9
IHBsdWdpblZpZXdGb3JGcmFtZShmcmFtZSkpIHsKKyAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2lu
VmlldyA9IGZvY3VzZWRQbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUpKSB7CiAgICAgICAgIHBsdWdp
blZpZXctPmhhbmRsZUVkaXRpbmdDb21tYW5kKGNvbW1hbmROYW1lLCBhcmd1bWVudCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC02OTYsNyArNzEwLDcgQEAgYm9vbCBXZWJQYWdlOjppc0Vk
aXRpbmdDb21tYW5kRW5hYmxlZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChQbHVnaW5WaWV3KiBwbHVn
aW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lKSkKKyAgICBpZiAoUGx1Z2luVmlldyog
cGx1Z2luVmlldyA9IGZvY3VzZWRQbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUpKQogICAgICAgICBy
ZXR1cm4gcGx1Z2luVmlldy0+aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29tbWFuZE5hbWUpOwog
ICAgIAogICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKGNvbW1hbmROYW1lKTsKQEAgLTE2MDksNyArMTYyMyw3IEBAIHZvaWQgV2ViUGFnZTo6dmFs
aWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiAgICAgaW50MzJfdCBzdGF0ZSA9IDA7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKGZyYW1lKSB7
Ci0gICAgICAgIGlmIChQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1l
KGZyYW1lKSkKKyAgICAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBmb2N1c2VkUGx1
Z2luVmlld0ZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgICAgIGlzRW5hYmxlZCA9IHBsdWdpblZp
ZXctPmlzRWRpdGluZ0NvbW1hbmRFbmFibGVkKGNvbW1hbmROYW1lKTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+
Y29tbWFuZChjb21tYW5kTmFtZSk7Cg==
</data>
<flag name="review"
          id="184083"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>