<?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>132200</bug_id>
          
          <creation_ts>2014-04-25 11:42:37 -0700</creation_ts>
          <short_desc>Add a selection overlay</short_desc>
          <delta_ts>2014-04-25 15:22:49 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1004153</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-04-25 11:42:37 -0700</bug_when>
    <thetext>Add a basic (non-functional) selection overlay that tracks the rects for the current selection.

&lt;rdar://problem/16727797&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004155</commentid>
    <comment_count>1</comment_count>
      <attachid>230189</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-04-25 12:01:54 -0700</bug_when>
    <thetext>Created attachment 230189
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004156</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-25 12:03:25 -0700</bug_when>
    <thetext>Attachment 230189 did not pass style-queue:


ERROR: Source/WebCore/rendering/RenderView.cpp:772:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 1 in 13 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>1004157</commentid>
    <comment_count>3</comment_count>
      <attachid>230189</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-25 12:14:45 -0700</bug_when>
    <thetext>Comment on attachment 230189
Patch v1

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

&gt; Source/WebCore/rendering/RenderView.cpp:776
&gt; +            m_view-&gt;view().frame().editor().client()-&gt;selectionRectsDidChange(m_view-&gt;m_currentSelectionRects);

What if client is null?

&gt; Source/WebCore/rendering/RenderView.cpp:779
&gt; +        RenderView* m_view;

reference

&gt; Source/WebKit2/WebProcess/WebPage/SelectionOverlayController.cpp:81
&gt; +    m_selectionOverlay = 0;

nullptr. And, remind me why you don&apos;t hold a reference to your overlay?

&gt; Source/WebKit2/WebProcess/WebPage/SelectionOverlayController.h:34
&gt; +#if PLATFORM(MAC)

don&apos;t think there&apos;s any reason for this (or any of the other PLATFORM(MAC)s. Isn&apos;t ENABLE(SERVICE_CONTROLS) already pretty PLATFORM(MAC) specific?

&gt; Source/WebKit2/WebProcess/WebPage/mac/SelectionOverlayControllerMac.mm:76
&gt; +        // FIXME: We need to do the following, but SOFT_LINK isn&apos;t working for this method.
&gt; +//        if (m_mouseIsOverHighlight &amp;&amp; onButton &amp;&amp; m_mouseDownPosition != IntPoint())
&gt; +//            DDHighlightSetButtonPressed(m_currentHighlight.get(), true);

get rid of this for now? at least put the // in the right place

&gt; Source/WebKit2/WebProcess/WebPage/mac/SelectionOverlayControllerMac.mm:151
&gt; +            // DDHighlightSetButtonPressed(m_currentHighlight.get(), true);

:|

&gt; Source/WebKit2/WebProcess/WebPage/mac/SelectionOverlayControllerMac.mm:170
&gt; +    m_mouseDownPosition = IntPoint();

that is a valid mouse position. what makes 0,0 special? is there any reason to do this? should you be setting a bool regarding its validity instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004169</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-04-25 12:51:18 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 230189 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=230189&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderView.cpp:776
&gt; &gt; +            m_view-&gt;view().frame().editor().client()-&gt;selectionRectsDidChange(m_view-&gt;m_currentSelectionRects);
&gt; 
&gt; What if client is null?

There&apos;s some spots in the project where EditorClient is null checked, and some where it&apos;s not.  Appears to be about 50/50.

What a mess.

I&apos;ll null check just for giggles.
 
&gt; &gt; Source/WebCore/rendering/RenderView.cpp:779
&gt; &gt; +        RenderView* m_view;
&gt; 
&gt; reference

Sure.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/SelectionOverlayController.cpp:81
&gt; &gt; +    m_selectionOverlay = 0;
&gt; 
&gt; nullptr. And, remind me why you don&apos;t hold a reference to your overlay?

Find, WebInspector, and Telephone number overlays are also raw pointers.

Not sure why the first of those didn&apos;t hold a ref, but none of the clients truly own their overlays.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/SelectionOverlayController.h:34
&gt; &gt; +#if PLATFORM(MAC)
&gt; 
&gt; don&apos;t think there&apos;s any reason for this (or any of the other PLATFORM(MAC)s. Isn&apos;t ENABLE(SERVICE_CONTROLS) already pretty PLATFORM(MAC) specific?

I removed some of them, but not all of them.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/mac/SelectionOverlayControllerMac.mm:76
&gt; &gt; +        // FIXME: We need to do the following, but SOFT_LINK isn&apos;t working for this method.
&gt; &gt; +//        if (m_mouseIsOverHighlight &amp;&amp; onButton &amp;&amp; m_mouseDownPosition != IntPoint())
&gt; &gt; +//            DDHighlightSetButtonPressed(m_currentHighlight.get(), true);
&gt; 
&gt; get rid of this for now? at least put the // in the right place

I&apos;ll put the // in the right place.

If the comment and code is completely removed, it&apos;s *much* more likely to be forgotten even in the short term.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/mac/SelectionOverlayControllerMac.mm:170
&gt; &gt; +    m_mouseDownPosition = IntPoint();
&gt; 
&gt; that is a valid mouse position. what makes 0,0 special? is there any reason to do this? should you be setting a bool regarding its validity instead?

You didn&apos;t catch this in the telephone number version!  :)

There&apos;s definitely a reason to track the mouse down position.  I&apos;ll add a bool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004170</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-04-25 12:54:38 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; &gt; Source/WebKit2/WebProcess/WebPage/mac/SelectionOverlayControllerMac.mm:170
&gt; &gt; &gt; +    m_mouseDownPosition = IntPoint();
&gt; &gt; 
&gt; &gt; that is a valid mouse position. what makes 0,0 special? is there any reason to do this? should you be setting a bool regarding its validity instead?
&gt; 
&gt; You didn&apos;t catch this in the telephone number version!  :)
&gt; 
&gt; There&apos;s definitely a reason to track the mouse down position.  I&apos;ll add a bool.

Actually, just the bool is good enough.  sweet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004175</commentid>
    <comment_count>6</comment_count>
      <attachid>230194</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-04-25 13:08:01 -0700</bug_when>
    <thetext>Created attachment 230194
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004176</commentid>
    <comment_count>7</comment_count>
      <attachid>230194</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-04-25 13:12:06 -0700</bug_when>
    <thetext>Comment on attachment 230194
Patch v2

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

r-

&gt; Source/WebCore/rendering/RenderView.cpp:784
&gt; +#if ENABLE(SERVICE_CONTROLS)
&gt; +    m_currentSelectionRects.clear();
&gt; +
&gt; +    // Always notify the EditorClient of the new selection rects, no matter what they are.
&gt; +    struct SelectionRectNotifier {
&gt; +        SelectionRectNotifier(RenderView&amp; view)
&gt; +            : m_view(view)
&gt; +        { }
&gt; +
&gt; +        ~SelectionRectNotifier()
&gt; +        {
&gt; +            if (EditorClient* client =  m_view.view().frame().editor().client())
&gt; +                client-&gt;selectionRectsDidChange(m_view.m_currentSelectionRects);
&gt; +        }
&gt; +
&gt; +        RenderView&amp; m_view;
&gt; +    };
&gt; +
&gt; +    SelectionRectNotifier notifier(*this);
&gt; +#endif // ENABLE(SERVICE_CONTROLS)

It&apos;s gross to have this big block of code right in RenderView::setSelection. I would put this in a helper. I&apos;d even define SelectionRectNotifier in a header and get it out of here too.

&gt; Source/WebCore/rendering/RenderView.cpp:967
&gt; +#if ENABLE(SERVICE_CONTROLS)
&gt; +            LayoutRect rect = selectionInfo-&gt;rect();
&gt; +            if (!rect.isEmpty())
&gt; +                m_currentSelectionRects.append(rect);
&gt; +#endif
&gt; +
&gt; +            newSelectedObjects.set(o, std::move(selectionInfo));

Beef up SelectionRectNotifier into some kind of controller class and move the currentSelectionRects there. Then this becomes one call on the new class.

&gt; Source/WebCore/rendering/RenderView.cpp:985
&gt; +#if ENABLE(SERVICE_CONTROLS)
&gt; +                GapRects rects = blockInfo-&gt;rects();
&gt; +                if (!rects.left().isEmpty())
&gt; +                    m_currentSelectionRects.append(rects.left());
&gt; +                if (!rects.right().isEmpty())
&gt; +                    m_currentSelectionRects.append(rects.right());
&gt; +                if (!rects.center().isEmpty())
&gt; +                    m_currentSelectionRects.append(rects.center());
&gt; +#endif

Same here. You could make this a single function call on a separate object.

&gt; Source/WebCore/rendering/RenderView.h:360
&gt; +#if ENABLE(SERVICE_CONTROLS)
&gt; +    Vector&lt;LayoutRect&gt; m_currentSelectionRects;
&gt; +#endif

Have a separate class here instead (similar to how we keep flow thread controller logic in a separate class).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004200</commentid>
    <comment_count>8</comment_count>
      <attachid>230198</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-04-25 14:17:48 -0700</bug_when>
    <thetext>Created attachment 230198
Patch v3 with Hyatt&apos;s suggestion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004203</commentid>
    <comment_count>9</comment_count>
      <attachid>230198</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-04-25 14:18:21 -0700</bug_when>
    <thetext>Comment on attachment 230198
Patch v3 with Hyatt&apos;s suggestion

Nevermind</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004205</commentid>
    <comment_count>10</comment_count>
      <attachid>230200</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-04-25 14:23:09 -0700</bug_when>
    <thetext>Created attachment 230200
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004208</commentid>
    <comment_count>11</comment_count>
      <attachid>230200</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-04-25 14:25:27 -0700</bug_when>
    <thetext>Comment on attachment 230200
Patch v4

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004240</commentid>
    <comment_count>12</comment_count>
      <attachid>230200</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-25 15:22:46 -0700</bug_when>
    <thetext>Comment on attachment 230200
Patch v4

Clearing flags on attachment: 230200

Committed r167830: &lt;http://trac.webkit.org/changeset/167830&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004241</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-25 15:22:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230189</attachid>
            <date>2014-04-25 12:01:54 -0700</date>
            <delta_ts>2014-04-25 13:08:01 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>32762</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZTk1OGRkLi45OGE2NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTQtMDQtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBhIHNlbGVjdGlvbiBvdmVybGF5LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY3
Mjc3OTc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMjAw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIChXSzIgZmVhdHVyZSBpbiBkZXZlbG9wbWVudCkuCisKKyAgICAgICAgKiBwYWdlL0Vk
aXRvckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpzZWxlY3Rpb25S
ZWN0c0RpZENoYW5nZSk6CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24pOiBIYW5kIHRoZSBnYXRo
ZXJlZCByZWN0cyBvZmYgdG8gdGhlIEVkaXRvckNsaWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZXc6OnNldFN1YnRyZWVTZWxlY3Rpb24pOiBHYXRoZXIgYWxsIHRoZSBzZWxlY3Rpb24g
cmVjdHMgdG8gYmUgcGFpbnRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgor
CiAyMDE0LTA0LTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIGlzIHVuYXdhcmUgb2YgdG9wQ29udGVudEluc2V0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCAxZGM4NTk1Li5mZjk1NTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3MgRWxlbWVudDsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBLZXlib2FyZEV2ZW50Owor
Y2xhc3MgTGF5b3V0UmVjdDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKQEAgLTE4Miw2ICsxODMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZWxlY3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxS
YW5nZT4+JikgeyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorICAg
IHZpcnR1YWwgdm9pZCBzZWxlY3Rpb25SZWN0c0RpZENoYW5nZShjb25zdCBWZWN0b3I8TGF5b3V0
UmVjdD4mKSB7IH0KKyNlbmRpZgorCiAgICAgLy8gU3VwcG9ydCBmb3IgZ2xvYmFsIHNlbGVjdGlv
bnMsIHVzZWQgb24gcGxhdGZvcm1zIGxpa2UgdGhlIFggV2luZG93IFN5c3RlbSB0aGF0IHRyZWF0
CiAgICAgLy8gc2VsZWN0aW9uIGFzIGEgdHlwZSBvZiBjbGlwYm9hcmQuCiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA5YzZkNGFjLi4xMWNiMDM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0yMyw2ICsyMyw4IEBACiAK
ICNpbmNsdWRlICJDb2x1bW5JbmZvLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJFZGl0b3IuaCIKKyNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKICNpbmNsdWRlICJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiRmxvYXRpbmdPYmplY3RzLmgi
CkBAIC03NjAsNiArNzYyLDI2IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0TWF4aW1hbE91dGxpbmVT
aXplKGludCBvKQogCiB2b2lkIFJlbmRlclZpZXc6OnNldFNlbGVjdGlvbihSZW5kZXJPYmplY3Qq
IHN0YXJ0LCBpbnQgc3RhcnRQb3MsIFJlbmRlck9iamVjdCogZW5kLCBpbnQgZW5kUG9zLCBTZWxl
Y3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2RlKQogeworI2lmIEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKQorICAgIG1fY3VycmVudFNlbGVjdGlvblJlY3RzLmNsZWFyKCk7CisKKyAgICAv
LyBBbHdheXMgbm90aWZ5IHRoZSBFZGl0b3JDbGllbnQgb2YgdGhlIG5ldyBzZWxlY3Rpb24gcmVj
dHMsIG5vIG1hdHRlciB3aGF0IHRoZXkgYXJlLgorICAgIHN0cnVjdCBTZWxlY3Rpb25SZWN0Tm90
aWZpZXIgeworICAgICAgICBTZWxlY3Rpb25SZWN0Tm90aWZpZXIoUmVuZGVyVmlldyogdmlldykK
KyAgICAgICAgICAgIDogbV92aWV3KHZpZXcpCisgICAgICAgIHt9CisKKyAgICAgICAgflNlbGVj
dGlvblJlY3ROb3RpZmllcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fdmlldy0+dmlldygp
LmZyYW1lKCkuZWRpdG9yKCkuY2xpZW50KCktPnNlbGVjdGlvblJlY3RzRGlkQ2hhbmdlKG1fdmll
dy0+bV9jdXJyZW50U2VsZWN0aW9uUmVjdHMpOworICAgICAgICB9CisKKyAgICAgICAgUmVuZGVy
VmlldyogbV92aWV3OworICAgIH07CisKKyAgICBTZWxlY3Rpb25SZWN0Tm90aWZpZXIgbm90aWZp
ZXIodGhpcyk7CisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisKICAgICAvLyBN
YWtlIHN1cmUgYm90aCBvdXIgc3RhcnQgYW5kIGVuZCBvYmplY3RzIGFyZSBkZWZpbmVkLgogICAg
IC8vIENoZWNrIHd3dy5tc25iYy5jb20gYW5kIHRyeSBjbGlja2luZyBhcm91bmQgdG8gZmluZCB0
aGUgY2FzZSB3aGVyZSB0aGlzIGhhcHBlbmVkLgogICAgIGlmICgoc3RhcnQgJiYgIWVuZCkgfHwg
KGVuZCAmJiAhc3RhcnQpKQpAQCAtOTMzLDcgKzk1NSwxNiBAQCB2b2lkIFJlbmRlclZpZXc6OnNl
dFN1YnRyZWVTZWxlY3Rpb24oU2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3QsIFJlbmRlck9iamVj
dCogcwogICAgIG8gPSBzdGFydDsKICAgICB3aGlsZSAobyAmJiBvICE9IHN0b3ApIHsKICAgICAg
ICAgaWYgKChvLT5jYW5CZVNlbGVjdGlvbkxlYWYoKSB8fCBvID09IHN0YXJ0IHx8IG8gPT0gZW5k
KSAmJiBvLT5zZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUpIHsKLSAgICAgICAgICAg
IG5ld1NlbGVjdGVkT2JqZWN0cy5zZXQobywgc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rp
b25JbmZvPihvLCB0cnVlKSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU2Vs
ZWN0aW9uSW5mbz4gc2VsZWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0
aW9uSW5mbz4obywgdHJ1ZSk7CisKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKyAgICAg
ICAgICAgIExheW91dFJlY3QgcmVjdCA9IHNlbGVjdGlvbkluZm8tPnJlY3QoKTsKKyAgICAgICAg
ICAgIGlmICghcmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgbV9jdXJyZW50U2VsZWN0
aW9uUmVjdHMuYXBwZW5kKHJlY3QpOworI2VuZGlmCisKKyAgICAgICAgICAgIG5ld1NlbGVjdGVk
T2JqZWN0cy5zZXQobywgc3RkOjptb3ZlKHNlbGVjdGlvbkluZm8pKTsKKwogICAgICAgICAgICAg
UmVuZGVyQmxvY2sqIGNiID0gby0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICAgICB3aGls
ZSAoY2IgJiYgIWNiLT5pc1JlbmRlclZpZXcoKSkgewogICAgICAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+JiBibG9ja0luZm8gPSBuZXdTZWxlY3Rl
ZEJsb2Nrcy5hZGQoY2IsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKQEAgLTk0MSw2ICs5NzIs
MTYgQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRTdWJ0cmVlU2VsZWN0aW9uKFNlbGVjdGlvblN1YnRy
ZWVSb290JiByb290LCBSZW5kZXJPYmplY3QqIHMKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9j
a1NlbGVjdGlvbkluZm8+KGNiKTsKICAgICAgICAgICAgICAgICBjYiA9IGNiLT5jb250YWluaW5n
QmxvY2soKTsKKworI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorICAgICAgICAgICAgICAg
IEdhcFJlY3RzIHJlY3RzID0gYmxvY2tJbmZvLT5yZWN0cygpOworICAgICAgICAgICAgICAgIGlm
ICghcmVjdHMubGVmdCgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50
U2VsZWN0aW9uUmVjdHMuYXBwZW5kKHJlY3RzLmxlZnQoKSk7CisgICAgICAgICAgICAgICAgaWYg
KCFyZWN0cy5yaWdodCgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50
U2VsZWN0aW9uUmVjdHMuYXBwZW5kKHJlY3RzLnJpZ2h0KCkpOworICAgICAgICAgICAgICAgIGlm
ICghcmVjdHMuY2VudGVyKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBtX2N1cnJl
bnRTZWxlY3Rpb25SZWN0cy5hcHBlbmQocmVjdHMuY2VudGVyKCkpOworI2VuZGlmCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5k
ZXggNmJiMzgwOS4uOGVmZmMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5o
CkBAIC0zNTQsNiArMzU0LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8UmVu
ZGVyRWxlbWVudCo+IG1fcmVuZGVyZXJzV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9uOworCisjaWYg
RU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisgICAgVmVjdG9yPExheW91dFJlY3Q+IG1fY3VycmVu
dFNlbGVjdGlvblJlY3RzOworI2VuZGlmCiB9OwogCiBSRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMo
UmVuZGVyVmlldywgaXNSZW5kZXJWaWV3KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTE5NzUxNS4uYzk0MTAw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE0LTA0LTI1ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBzZWxlY3Rpb24gb3ZlcmxheS4K
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2NzI3Nzk3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnNlbGVjdGlvblJlY3RzRGlk
Q2hhbmdlKTogUGFzcyB0aGUgbmV3IHNlbGVjdGlvbiByZWN0cyBvbgorICAgICAgICAgIHRvIHRo
ZSBzZWxlY3Rpb24gb3ZlcmxheSBjb250cm9sbGVyLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OlNlbGVjdGlvbk92ZXJsYXlDb250cm9s
bGVyKToKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OmNyZWF0
ZU92ZXJsYXlJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlNlbGVjdGlvbk92ZXJsYXlDb250
cm9sbGVyOjpkZXN0cm95T3ZlcmxheSk6CisgICAgICAgIChXZWJLaXQ6OlNlbGVjdGlvbk92ZXJs
YXlDb250cm9sbGVyOjpwYWdlT3ZlcmxheURlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OlNl
bGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFnZSk6CisgICAgICAgIChX
ZWJLaXQ6OlNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpkaWRNb3ZlVG9XZWJQYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OnNlbGVjdGlvblJlY3Rz
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6
OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6
Om1vdXNlRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9TZWxlY3Rpb25PdmVy
bGF5Q29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U2VsZWN0aW9uT3Zlcmxh
eUNvbnRyb2xsZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9T
ZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlck1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpkcmF3UmVjdCk6CisgICAgICAgIChXZWJLaXQ6
OlNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjptb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OmhhbmRsZUNsaWNrKToKKyAgICAgICAgKFdl
YktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OmNsZWFyTW91c2VEb3duSW5mb3JtYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6Y2xlYXJI
aWdobGlnaHQpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAxNC0wNC0yNSAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10g
UGx1Z2luIHByb2Nlc3MgY3Jhc2hlcyB3aXRoIEdUSzIgd2luZG93ZWQgcGx1Z2lucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUx
YWMyYjEuLmI0MDI5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTkwNyw2ICs5MDcsOSBAQAogCQk1MUUzNTIwNTE4MEY1RDRG
MDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzTWFpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM1MjAzMTgwRjVENEIwMEU1M0JFOSAvKiBEYXRh
YmFzZVByb2Nlc3NNYWluLm1tICovOyB9OwogCQk1MUUzNTIwOTE4MEY1RDZCMDBFNTNCRTkgLyog
RGF0YWJhc2VTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM1MjA4MTgwRjVENkIwMEU1M0JFOSAvKiBEYXRhYmFzZVNl
cnZpY2VFbnRyeVBvaW50Lm1tICovOyB9OwogCQk1MUUzQjY3RjE2RjI2NkIzMDA5OTY4REMgLyog
TmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFFM0I2N0UxNkYyNjZCMzAwOTk2OERDIC8qIE5ldHdvcmtSZXNv
dXJjZUxvYWRlck1hYy5tbSAqLzsgfTsKKwkJNTFFRjEyNEUxOTA5ODUyMjAwOEE2NTMyIC8qIFNl
bGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUYxMjRDMTkwOTg1MjIwMDhBNjUzMiAvKiBTZWxlY3Rpb25P
dmVybGF5Q29udHJvbGxlci5jcHAgKi87IH07CisJCTUxRUYxMjRGMTkwOTg1MjMwMDhBNjUzMiAv
KiBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRjEyNEQxOTA5ODUyMjAwOEE2NTMyIC8qIFNlbGVjdGlv
bk92ZXJsYXlDb250cm9sbGVyLmggKi87IH07CisJCTUxRUYxMjUxMTkwOTg1MzEwMDhBNjUzMiAv
KiBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUYxMjUwMTkwOTg1MzEwMDhBNjUzMiAvKiBTZWxl
Y3Rpb25PdmVybGF5Q29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJNTFFRkMxQ0YxNTI0RTYyNTAw
QzlBOTM4IC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZBMkQ1NDE1MjExMTg2MDBDMUJBMEIgLyog
V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUYwNjBFMDE2NTQzMTdGMDBGMzI4MUIgLyogV2ViUmVz
b3VyY2VMb2FkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFGMDYwREUxNjU0MzE3NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVy
TWVzc2FnZXMuaCAqLzsgfTsKIAkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIFdlYlJlc291
cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjA2MEREMTY1NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJj
ZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC0yNzYxLDYgKzI3NjQsOSBAQAog
CQk1MUUzNTIwNzE4MEY1RDYxMDBFNTNCRTkgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0g
SW5mby5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFMzUyMDgxODBGNUQ2
QjAwRTUzQkU5IC8qIERhdGFiYXNlU2VydmljZUVudHJ5UG9pbnQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRhYmFzZVNlcnZpY2VFbnRyeVBvaW50Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUzQjY3RTE2RjI2NkIzMDA5OTY4REMgLyog
TmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MUVGMTI0QzE5MDk4NTIyMDA4QTY1MzIgLyogU2VsZWN0aW9uT3Zlcmxh
eUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vs
ZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MUVGMTI0RDE5MDk4NTIyMDA4QTY1MzIgLyogU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0aW9uT3ZlcmxheUNvbnRy
b2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFFRjEyNTAxOTA5ODUzMTAw
OEE2NTMyIC8qIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXJNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjA2MEREMTY1NDMxNzUwMEYzMjgx
QiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRjA2MERFMTY1NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxv
YWRlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGN0RDNEExODBDQzkzNjAwMjEyQ0Ez
IC8qIGNvbS5hcHBsZS5XZWJLaXQuRGF0YWJhc2VzLnhwYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5jZmJ1bmRsZTsgaW5jbHVkZUluSW5k
ZXggPSAwOyBwYXRoID0gY29tLmFwcGxlLldlYktpdC5EYXRhYmFzZXMueHBjOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNTMyMiw2ICs1MzI4LDggQEAKIAkJCQkxQTkw
QzIzNTEyNjUwNzE3MDAzRTQ0RDQgLyogUGFnZU92ZXJsYXkuaCAqLywKIAkJCQkyRDE0MEVBRDE4
RjM3QkUwMDA1RTc1QTAgLyogUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcCAqLywKIAkJCQkyRDE0
MEVBRTE4RjM3QkUwMDA1RTc1QTAgLyogUGFnZU92ZXJsYXlDb250cm9sbGVyLmggKi8sCisJCQkJ
NTFFRjEyNEMxOTA5ODUyMjAwOEE2NTMyIC8qIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmNw
cCAqLywKKwkJCQk1MUVGMTI0RDE5MDk4NTIyMDA4QTY1MzIgLyogU2VsZWN0aW9uT3ZlcmxheUNv
bnRyb2xsZXIuaCAqLywKIAkJCQk1MTlFRjU4RjE4RUY3NzIxMDAwM0I3RjQgLyogVGVsZXBob25l
TnVtYmVyT3ZlcmxheUNvbnRyb2xsZXIuY3BwICovLAogCQkJCTUxOUVGNTkwMThFRjc3MjEwMDAz
QjdGNCAvKiBUZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlci5oICovLAogCQkJCTJEODE5
Qjk5MTg2Mjc1QjMwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCAq
LywKQEAgLTYwNzcsNiArNjA4NSw3IEBACiAJCQkJMUFCMTZBRTcxNjRCM0E4ODAwMjkwRDYyIC8q
IFJlbW90ZUxheWVyVHJlZUNvbnRleHQubW0gKi8sCiAJCQkJMUFCMTZBREMxNjQ4NTk4NDAwMjkw
RDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmggKi8sCiAJCQkJMUFCMTZBREIxNjQ4
NTk4NDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tICovLAorCQkJCTUx
RUYxMjUwMTkwOTg1MzEwMDhBNjUzMiAvKiBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlck1hYy5t
bSAqLywKIAkJCQk1MTlFRjU4RDE4RUY3NzBEMDAwM0I3RjQgLyogVGVsZXBob25lTnVtYmVyT3Zl
cmxheUNvbnRyb2xsZXJNYWMubW0gKi8sCiAJCQkJMUFBRjI2MzcxNDY4N0MzOTAwNEExRThBIC8q
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggKi8sCiAJCQkJMUFBRjI2MzYxNDY4N0Mz
OTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tICovLApAQCAtNzM1
Myw2ICs3MzYyLDcgQEAKIAkJCQkyOTUwMTcyNDE2MkE0NTA0MDA0QTlENzEgLyogV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUY3NTA2QjYxODU5MTY1NzAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUY3NTA2QjUxODU5MTY1NDAwRUMw
RkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxRUYxMjRGMTkwOTg1MjMwMDhBNjUzMiAvKiBTZWxlY3Rpb25PdmVybGF5Q29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzczQ0VBRDYxODU0MTdBRTAwOEMzNjNEIC8q
IFdLTlNEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI4QTFGMDE4NDAwQjAwMDBFOUFFNjkg
LyogV0tQYWdlRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5ODlEODUxNjFBOTg5
MDAwMEQ0NkQzIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkludGVybmFsLmggaW4gSGVhZGVycyAqLywK
QEAgLTg0NTQsNiArODQ2NCw3IEBACiAJCQkJQkNBQzExMjAxMkM5MkMxRjAwQjA4RUVFIC8qIFdl
YkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY2MkE3
NkI4MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdERDVDNTE4MERDM0UxMDA4MTY2MEIgLyog
RGF0YWJhc2VQcm9jZXNzUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MUVGMTI1MTE5
MDk4NTMxMDA4QTY1MzIgLyogU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQlCQzExMUE1RDExMkY0RkJCMDAzMzdCQUIgLyogV2ViRHJhZ0NsaWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTc0QTM3NzEyRTYwOTlEMDAyREZFOTggLyogV2ViRHJh
Z0NsaWVudE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQTBFRkEwMTIzMzI2NDIwMDdEM0NG
QiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtODU5Nyw2ICs4
NjA4LDcgQEAKIAkJCQkzMzM2NzYyRjEzMEM5OTk4MDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNo
ZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzNGOUQ1QjkxMzEyRjFFRTAwMEQ2ODNG
IC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzMzNjc2NTUxMzBDOUVDQTAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxRUYxMjRFMTkwOTg1MjIwMDhBNjUz
MiAvKiBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
MzM2NzYzNTEzMEM5OUIyMDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzM2NzY1NzEzMEM5RUNBMDA2QzlERTIgLyogV2ViUmVz
b3VyY2VDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQThFN0QzQzE4QzE1MTQ5MDA1QTcwMkEgLyogVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xs
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAKaW5kZXggM2I4ODQzMy4uN2RhZDdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYkVkaXRvckNsaWVudC5oIgogCiAjaW5jbHVkZSAi
RWRpdG9yU3RhdGUuaCIKKyNpbmNsdWRlICJTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKQEAgLTUzMSw0
ICs1MzIsMTEgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNlbGVjdGVkVGVsZXBob25lTnVtYmVy
UmFuZ2VzQ2hhbmdlZChjb25zdCBWZWN0b3I8UmVmUHRyPFIKIH0KICNlbmRpZgogCisjaWYgRU5B
QkxFKFNFUlZJQ0VfQ09OVFJPTFMpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6c2VsZWN0aW9uUmVj
dHNEaWRDaGFuZ2UoY29uc3QgVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cykKK3sKKyAgICBtX3Bh
Z2UtPnNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyKCkuc2VsZWN0aW9uUmVjdHNEaWRDaGFuZ2Uo
cmVjdHMpOworfQorI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDI2YjU1NWUuLmE4OGI2MGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMTcwLDYgKzE3MCw5IEBAIHByaXZhdGU6CiAjaWYg
RU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQogICAgIHZpcnR1YWwgdm9pZCBzZWxl
Y3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpSYW5nZT4+Jikgb3ZlcnJpZGU7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05U
Uk9MUykKKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uUmVjdHNEaWRDaGFuZ2UoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkxheW91dFJlY3Q+Jikgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIFdlYlBh
Z2UqIG1fcGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1NlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWIyNjdhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1NlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVy
LmNwcApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5oIgorCisjaWYgRU5BQkxFKFNF
UlZJQ0VfQ09OVFJPTFMpCisKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisgICAgCitTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6U2VsZWN0aW9u
T3ZlcmxheUNvbnRyb2xsZXIoV2ViUGFnZSogd2ViUGFnZSkKKyAgICA6IG1fd2ViUGFnZSh3ZWJQ
YWdlKQorICAgICwgbV9zZWxlY3Rpb25PdmVybGF5KG51bGxwdHIpCisjaWYgUExBVEZPUk0oTUFD
KQorICAgICwgbV9tb3VzZUlzT3ZlckhpZ2hsaWdodChmYWxzZSkKKyNlbmRpZgoreworfQorCit2
b2lkIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpjcmVhdGVPdmVybGF5SWZOZWVkZWQoKQor
eworICAgIGlmIChtX3NlbGVjdGlvbk92ZXJsYXkpIHsKKyAgICAgICAgbV9zZWxlY3Rpb25PdmVy
bGF5LT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBSZWZQdHI8UGFnZU92ZXJsYXk+IG92ZXJsYXkgPSBQYWdlT3ZlcmxheTo6Y3JlYXRlKHRoaXMs
IFBhZ2VPdmVybGF5OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQpOworICAgIG1fc2VsZWN0aW9uT3Zl
cmxheSA9IG92ZXJsYXkuZ2V0KCk7CisgICAgbV93ZWJQYWdlLT5pbnN0YWxsUGFnZU92ZXJsYXko
b3ZlcmxheS5yZWxlYXNlKCksIFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6RmFkZSk7CisgICAgbV9z
ZWxlY3Rpb25PdmVybGF5LT5zZXROZWVkc0Rpc3BsYXkoKTsKK30KKwordm9pZCBTZWxlY3Rpb25P
dmVybGF5Q29udHJvbGxlcjo6ZGVzdHJveU92ZXJsYXkoKQoreworICAgIGlmICghbV9zZWxlY3Rp
b25PdmVybGF5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dlYlBhZ2UtPnVuaW5zdGFsbFBh
Z2VPdmVybGF5KG1fc2VsZWN0aW9uT3ZlcmxheSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpEb05v
dEZhZGUpOworfQorCit2b2lkIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpwYWdlT3Zlcmxh
eURlc3Ryb3llZChQYWdlT3ZlcmxheSopCit7CisgICAgLy8gQmVmb3JlIHRoZSBvdmVybGF5IGlz
IGRlc3Ryb3llZCwgaXQgc2hvdWxkIGhhdmUgbW92ZWQgb3V0IG9mIHRoZSBXZWJQYWdlLAorICAg
IC8vIGF0IHdoaWNoIHBvaW50IHdlIGFscmVhZHkgY2xlYXJlZCBvdXIgYmFjayBwb2ludGVyLgor
ICAgIEFTU0VSVCghbV9zZWxlY3Rpb25PdmVybGF5KTsKK30KKwordm9pZCBTZWxlY3Rpb25PdmVy
bGF5Q29udHJvbGxlcjo6d2lsbE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKiB3
ZWJQYWdlKQoreworICAgIGlmICh3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NF
UlQobV9zZWxlY3Rpb25PdmVybGF5KTsKKyAgICBtX3NlbGVjdGlvbk92ZXJsYXkgPSAwOworfQor
Cit2b2lkIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpkaWRNb3ZlVG9XZWJQYWdlKFBhZ2VP
dmVybGF5KiwgV2ViUGFnZSopCit7Cit9CisKK3ZvaWQgU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xs
ZXI6OnNlbGVjdGlvblJlY3RzRGlkQ2hhbmdlKGNvbnN0IFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVj
dHMpCit7CisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID4gMTA5MAorICAgIGNsZWFySGlnaGxpZ2h0KCk7CisKKyAgICBtX2N1cnJlbnRTZWxlY3Rp
b25SZWN0cyA9IHJlY3RzOworCisgICAgaWYgKG1fY3VycmVudFNlbGVjdGlvblJlY3RzLmlzRW1w
dHkoKSkKKyAgICAgICAgZGVzdHJveU92ZXJsYXkoKTsKKyAgICBlbHNlCisgICAgICAgIGNyZWF0
ZU92ZXJsYXlJZk5lZWRlZCgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVjdHMpOworI2Vu
ZGlmCit9CisKKyNpZiAhUExBVEZPUk0oTUFDKQordm9pZCBTZWxlY3Rpb25PdmVybGF5Q29udHJv
bGxlcjo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiti
b29sIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjptb3VzZUV2ZW50KFBhZ2VPdmVybGF5Kiwg
Y29uc3QgV2ViTW91c2VFdmVudCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9TZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1NlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYzOTg2NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9TZWxlY3Rpb25PdmVybGF5Q29u
dHJvbGxlci5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNlbGVjdGlv
bk92ZXJsYXlDb250cm9sbGVyX2gKKworI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorCisj
aW5jbHVkZSAiUGFnZU92ZXJsYXkuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKworI2lmIFBMQVRGT1JNKE1BQykKK3R5cGVkZWYgdm9pZCogRERI
aWdobGlnaHRSZWY7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTGF5b3V0
UmVjdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisgICAgCitjbGFzcyBXZWJQYWdlOworCitj
bGFzcyBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPFNlbGVj
dGlvbk92ZXJsYXlDb250cm9sbGVyPiwgcHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKK3B1
YmxpYzoKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVy
PiBjcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIod2ViUGFnZSkpOworICAgIH0KKworICAg
IHZvaWQgc2VsZWN0aW9uUmVjdHNEaWRDaGFuZ2UoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkxheW91
dFJlY3Q+Jik7CisgICAgdm9pZCBoYW5kbGVDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
OworICAgIAorcHJpdmF0ZToKKyAgICBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcihXZWJQYWdl
Kik7CisKKyAgICB2b2lkIGNyZWF0ZU92ZXJsYXlJZk5lZWRlZCgpOworICAgIHZvaWQgZGVzdHJv
eU92ZXJsYXkoKTsKKyAgICAKKyAgICB2b2lkIGNsZWFyTW91c2VEb3duSW5mb3JtYXRpb24oKTsK
KworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIGhhbmRsZVNlbGVjdGlvbk92ZXJsYXlDbGlj
ayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworI2VuZGlmCisgICAgCisgICAgdmlydHVhbCB2
b2lkIHBhZ2VPdmVybGF5RGVzdHJveWVkKFBhZ2VPdmVybGF5Kikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHdpbGxNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSopIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2Vi
UGFnZSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSos
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5
UmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIG1vdXNlRXZlbnQoUGFnZU92ZXJsYXkq
LCBjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGNsZWFySGlnaGxp
Z2h0KCk7CisKKyAgICBSZWZQdHI8V2ViUGFnZT4gbV93ZWJQYWdlOworICAgIFBhZ2VPdmVybGF5
KiBtX3NlbGVjdGlvbk92ZXJsYXk7CisgICAgVmVjdG9yPFdlYkNvcmU6OkxheW91dFJlY3Q+IG1f
Y3VycmVudFNlbGVjdGlvblJlY3RzOworCisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9tb3VzZVBv
c2l0aW9uOworICAgIFdlYkNvcmU6OkludFBvaW50IG1fbW91c2VEb3duUG9zaXRpb247CisKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVmPiBtX2N1cnJlbnRI
aWdobGlnaHQ7CisgICAgYm9vbCBtX21vdXNlSXNPdmVySGlnaGxpZ2h0OworI2VuZGlmCit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX0NPTlRS
T0xTKQorI2VuZGlmIC8vIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkYTRmMDQ0Li4wOTE1
MWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiUGx1Z2luUHJveHkuaCIKICNpbmNsdWRlICJQ
bHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiUHJpbnRJbmZvLmgiCisjaW5jbHVkZSAiU2VsZWN0aW9u
T3ZlcmxheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKICNpbmNsdWRl
ICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgpAQCAtNDU2
MSw2ICs0NTYyLDE2IEBAIFRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyJiBXZWJQYWdl
Ojp0ZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlcigpCiB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShTRVJWSUNFX0NPTlRST0xTKQorU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXImIFdlYlBh
Z2U6OnNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyKCkKK3sKKyAgICBpZiAoIW1fc2VsZWN0aW9u
T3ZlcmxheUNvbnRyb2xsZXIpCisgICAgICAgIG1fc2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIg
PSBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6Y3JlYXRlKHRoaXMpOworCisgICAgcmV0dXJu
ICptX3NlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOworfQorI2VuZGlmCisKIHZvaWQgV2ViUGFn
ZTo6ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogewogICAgIG1f
cGFnZU92ZXJsYXlDb250cm9sbGVyLmRpZFNjcm9sbEZyYW1lKGZyYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGZmMmYzNzAuLjk3OTM1MjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTQw
LDYgKzE0MCw3IEBAIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsK
IGNsYXNzIFBhZ2VCYW5uZXI7CiBjbGFzcyBQYWdlT3ZlcmxheTsKIGNsYXNzIFBsdWdpblZpZXc7
CitjbGFzcyBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjsKIGNsYXNzIFNlc3Npb25TdGF0ZTsK
IGNsYXNzIFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm87CiBjbGFzcyBXZWJDb2xvckNob29z
ZXI7CkBAIC03ODQsNiArNzg1LDkgQEAgcHVibGljOgogICAgIFRlbGVwaG9uZU51bWJlck92ZXJs
YXlDb250cm9sbGVyJiB0ZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlcigpOwogICAgIHZv
aWQgaGFuZGxlVGVsZXBob25lTnVtYmVyQ2xpY2soY29uc3QgU3RyaW5nJiBudW1iZXIsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50Jik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9M
UykKKyAgICBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlciYgc2VsZWN0aW9uT3ZlcmxheUNvbnRy
b2xsZXIoKTsKKyNlbmRpZgogCiAgICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxPZmZzZXRGb3JGcmFt
ZShXZWJDb3JlOjpGcmFtZSopOwogCkBAIC0xMjAxLDYgKzEyMDUsOSBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKICAgICBSZWZQdHI8VGVsZXBob25l
TnVtYmVyT3ZlcmxheUNvbnRyb2xsZXI+IG1fdGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xs
ZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKyAgICBSZWZQdHI8U2Vs
ZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI+IG1fc2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI7Cisj
ZW5kaWYKIAogICAgIFBhZ2VPdmVybGF5Q29udHJvbGxlciBtX3BhZ2VPdmVybGF5Q29udHJvbGxl
cjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1NlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9TZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlck1hYy5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDk4ZjYyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9TZWxlY3Rpb25PdmVybGF5Q29u
dHJvbGxlck1hYy5tbQpAQCAtMCwwICsxLDE4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuaCIKKworI2lmIFBM
QVRGT1JNKE1BQykKKworI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL01haW5GcmFtZS5oPgor
I2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorCisjaWYgX19oYXNfaW5jbHVkZSg8RGF0
YURldGVjdG9ycy9EREhpZ2hsaWdodERyYXdpbmcuaD4pCisjaW1wb3J0IDxEYXRhRGV0ZWN0b3Jz
L0RESGlnaGxpZ2h0RHJhd2luZy5oPgorI2Vsc2UKK3R5cGVkZWYgdm9pZCogRERIaWdobGlnaHRS
ZWY7CisjZW5kaWYKKworI2lmIF9faGFzX2luY2x1ZGUoPERhdGFEZXRlY3RvcnMvRERIaWdobGln
aHREcmF3aW5nX1ByaXZhdGUuaD4pCisjaW1wb3J0IDxEYXRhRGV0ZWN0b3JzL0RESGlnaGxpZ2h0
RHJhd2luZ19Qcml2YXRlLmg+CisjZW5kaWYKKworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JL
X09QVElPTkFMKERhdGFEZXRlY3RvcnMpCitTT0ZUX0xJTksoRGF0YURldGVjdG9ycywgRERIaWdo
bGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2libGVSZWN0LCBEREhpZ2hsaWdodFJlZiwgKENGQWxs
b2NhdG9yUmVmIGFsbG9jYXRvciwgQ0dSZWN0ICogcmVjdHMsIENGSW5kZXggY291bnQsIENHUmVj
dCBnbG9iYWxWaXNpYmxlUmVjdCwgQm9vbGVhbiB3aXRoQXJyb3cpLCAoYWxsb2NhdG9yLCByZWN0
cywgY291bnQsIGdsb2JhbFZpc2libGVSZWN0LCB3aXRoQXJyb3cpKQorU09GVF9MSU5LKERhdGFE
ZXRlY3RvcnMsIERESGlnaGxpZ2h0R2V0TGF5ZXJXaXRoQ29udGV4dCwgQ0dMYXllclJlZiwgKERE
SGlnaGxpZ2h0UmVmIGhpZ2hsaWdodCwgQ0dDb250ZXh0UmVmIGNvbnRleHQpLCAoaGlnaGxpZ2h0
LCBjb250ZXh0KSkKK1NPRlRfTElOSyhEYXRhRGV0ZWN0b3JzLCBEREhpZ2hsaWdodEdldEJvdW5k
aW5nUmVjdCwgQ0dSZWN0LCAoRERIaWdobGlnaHRSZWYgaGlnaGxpZ2h0KSwgKGhpZ2hsaWdodCkp
CitTT0ZUX0xJTksoRGF0YURldGVjdG9ycywgRERIaWdobGlnaHRQb2ludElzT25IaWdobGlnaHQs
IEJvb2xlYW4sIChEREhpZ2hsaWdodFJlZiBoaWdobGlnaHQsIENHUG9pbnQgcG9pbnQsIEJvb2xl
YW4qIG9uQnV0dG9uKSwgKGhpZ2hsaWdodCwgcG9pbnQsIG9uQnV0dG9uKSkKK1NPRlRfTElOSyhE
YXRhRGV0ZWN0b3JzLCBEREhpZ2hsaWdodFNldEJ1dHRvblByZXNzZWQsIHZvaWQsIChEREhpZ2hs
aWdodFJlZiBoaWdobGlnaHQsIEJvb2xlYW4gYnV0dG9uUHJlc3NlZCksIChoaWdobGlnaHQsIGJ1
dHRvblByZXNzZWQpKQorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3ZvaWQgU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OmRyYXdSZWN0KFBhZ2VP
dmVybGF5KiBvdmVybGF5LCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KQoreworICAgIGlmIChtX2N1cnJl
bnRTZWxlY3Rpb25SZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
bV9jdXJyZW50SGlnaGxpZ2h0KSB7CisgICAgICAgIFZlY3RvcjxDR1JlY3Q+IGNnUmVjdHM7Cisg
ICAgICAgIGNnUmVjdHMucmVzZXJ2ZUNhcGFjaXR5KG1fY3VycmVudFNlbGVjdGlvblJlY3RzLnNp
emUoKSk7CisKKyAgICAgICAgZm9yIChhdXRvJiByZWN0IDogbV9jdXJyZW50U2VsZWN0aW9uUmVj
dHMpCisgICAgICAgICAgICBjZ1JlY3RzLmFwcGVuZCgoQ0dSZWN0KXBpeGVsU25hcHBlZEludFJl
Y3QocmVjdCkpOworCisgICAgICAgIG1fY3VycmVudEhpZ2hsaWdodCA9IGFkb3B0Q0YoRERIaWdo
bGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2libGVSZWN0KG51bGxwdHIsIGNnUmVjdHMuYmVnaW4o
KSwgY2dSZWN0cy5zaXplKCksIChDR1JlY3QpZGlydHlSZWN0LCB0cnVlKSk7CisKKyAgICAgICAg
Qm9vbGVhbiBvbkJ1dHRvbjsKKyAgICAgICAgbV9tb3VzZUlzT3ZlckhpZ2hsaWdodCA9IERESGln
aGxpZ2h0UG9pbnRJc09uSGlnaGxpZ2h0KG1fY3VycmVudEhpZ2hsaWdodC5nZXQoKSwgKENHUG9p
bnQpbV9tb3VzZVBvc2l0aW9uLCAmb25CdXR0b24pOworCisgICAgICAgIC8vIEZJWE1FOiBXZSBu
ZWVkIHRvIGRvIHRoZSBmb2xsb3dpbmcsIGJ1dCBTT0ZUX0xJTksgaXNuJ3Qgd29ya2luZyBmb3Ig
dGhpcyBtZXRob2QuCisvLyAgICAgICAgaWYgKG1fbW91c2VJc092ZXJIaWdobGlnaHQgJiYgb25C
dXR0b24gJiYgbV9tb3VzZURvd25Qb3NpdGlvbiAhPSBJbnRQb2ludCgpKQorLy8gICAgICAgICAg
ICBEREhpZ2hsaWdodFNldEJ1dHRvblByZXNzZWQobV9jdXJyZW50SGlnaGxpZ2h0LmdldCgpLCB0
cnVlKTsKKyAgICB9CisKKyAgICAvLyBJZiB0aGUgbW91c2UgaXMgbm90IG92ZXIgdGhlIERESGln
aGxpZ2h0IHdlIGhhdmUgbm8gZHJhd2luZyB0byBkby4KKyAgICBpZiAoIW1fbW91c2VJc092ZXJI
aWdobGlnaHQpCisgICAgICAgIHJldHVybjsKKworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQg
PSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CisKKyAgICBDR0xheWVyUmVmIGhp
Z2hsaWdodExheWVyID0gRERIaWdobGlnaHRHZXRMYXllcldpdGhDb250ZXh0KG1fY3VycmVudEhp
Z2hsaWdodC5nZXQoKSwgY2dDb250ZXh0KTsKKyAgICBDR1JlY3QgaGlnaGxpZ2h0Qm91bmRpbmdS
ZWN0ID0gRERIaWdobGlnaHRHZXRCb3VuZGluZ1JlY3QobV9jdXJyZW50SGlnaGxpZ2h0LmdldCgp
KTsKKyAgICAKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhp
Y3NDb250ZXh0KTsKKworICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUodG9GbG9hdFNpemUo
aGlnaGxpZ2h0Qm91bmRpbmdSZWN0Lm9yaWdpbikpOworICAgIGdyYXBoaWNzQ29udGV4dC5zY2Fs
ZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKEZsb2F0
U2l6ZSgwLCAtaGlnaGxpZ2h0Qm91bmRpbmdSZWN0LnNpemUuaGVpZ2h0KSk7CisgICAgCisgICAg
Q0dSZWN0IGhpZ2hsaWdodERyYXdSZWN0ID0gaGlnaGxpZ2h0Qm91bmRpbmdSZWN0OworICAgIGhp
Z2hsaWdodERyYXdSZWN0Lm9yaWdpbi54ID0gMDsKKyAgICBoaWdobGlnaHREcmF3UmVjdC5vcmln
aW4ueSA9IDA7CisgICAgCisgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNnQ29udGV4dCwg
aGlnaGxpZ2h0RHJhd1JlY3QsIGhpZ2hsaWdodExheWVyKTsKK30KKyAgICAKK2Jvb2wgU2VsZWN0
aW9uT3ZlcmxheUNvbnRyb2xsZXI6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkqLCBjb25zdCBXZWJN
b3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBtX21vdXNlUG9zaXRpb24gPSBtX3dlYlBhZ2UtPmNv
cmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKGV2ZW50LnBv
c2l0aW9uKCkpOworCisgICAgYm9vbCBtb3VzZVdhc092ZXJIaWdobGlnaHQgPSBtX21vdXNlSXNP
dmVySGlnaGxpZ2h0OworICAgIEJvb2xlYW4gb25CdXR0b24gPSBmYWxzZTsKKyAgICBtX21vdXNl
SXNPdmVySGlnaGxpZ2h0ID0gbV9jdXJyZW50SGlnaGxpZ2h0ID8gRERIaWdobGlnaHRQb2ludElz
T25IaWdobGlnaHQobV9jdXJyZW50SGlnaGxpZ2h0LmdldCgpLCAoQ0dQb2ludCltX21vdXNlUG9z
aXRpb24sICZvbkJ1dHRvbikgOiBmYWxzZTsKKworICAgIGlmIChtb3VzZVdhc092ZXJIaWdobGln
aHQgIT0gbV9tb3VzZUlzT3ZlckhpZ2hsaWdodCkKKyAgICAgICAgbV9zZWxlY3Rpb25PdmVybGF5
LT5zZXROZWVkc0Rpc3BsYXkoKTsKKworICAgIC8vIElmIHRoaXMgZXZlbnQgaGFzIG5vdGhpbmcg
dG8gZG8gd2l0aCB0aGUgbGVmdCBidXR0b24sIGl0IGNsZWFycyB0aGUgY3VycmVudCBtb3VzZSBk
b3duIHRyYWNraW5nIGFuZCB3ZSdyZSBkb25lIHByb2Nlc3NpbmcgaXQuCisgICAgaWYgKGV2ZW50
LmJ1dHRvbigpICE9IFdlYk1vdXNlRXZlbnQ6OkxlZnRCdXR0b24pIHsKKyAgICAgICAgY2xlYXJN
b3VzZURvd25JbmZvcm1hdGlvbigpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgaWYgKCFtX2N1cnJlbnRIaWdobGlnaHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIENoZWNrIGFuZCBzZWUgaWYgdGhlIG1vdXNlIHdlbnQgdXAgYW5kIHdlIGhhdmUgYSBjdXJy
ZW50IG1vdXNlIGRvd24gaGlnaGxpZ2h0IGJ1dHRvbi4KKyAgICBpZiAoZXZlbnQudHlwZSgpID09
IFdlYkV2ZW50OjpNb3VzZVVwKSB7CisgICAgICAgIGNsZWFyTW91c2VEb3duSW5mb3JtYXRpb24o
KTsKKworICAgICAgICAvLyBJZiB0aGUgbW91c2UgbGlmdGVkIHdoaWxlIHN0aWxsIG92ZXIgdGhl
IGhpZ2hsaWdodCBidXR0b24gdGhhdCBpdCB3ZW50IGRvd24gb24sIHRoZW4gdGhhdCBpcyBhIGNs
aWNrLgorICAgICAgICBpZiAobV9tb3VzZUlzT3ZlckhpZ2hsaWdodCAmJiBvbkJ1dHRvbikgewor
ICAgICAgICAgICAgaGFuZGxlQ2xpY2sobV9tb3VzZVBvc2l0aW9uKTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIAorICAgIC8vIENoZWNrIGFuZCBzZWUgaWYgdGhlIG1vdXNlIG1vdmVkIHdpdGhp
biB0aGUgY29uZmluZXMgb2YgdGhlIEREIGhpZ2hsaWdodCBidXR0b24uCisgICAgaWYgKGV2ZW50
LnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlKSB7CisgICAgICAgIC8vIE1vdmluZyB3aXRo
IHRoZSBtb3VzZSBidXR0b24gZG93biBpcyBva2F5IGFzIGxvbmcgYXMgdGhlIG1vdXNlIG5ldmVy
IGxlYXZlcyB0aGUgaGlnaGxpZ2h0IGJ1dHRvbi4KKyAgICAgICAgaWYgKG1fbW91c2VJc092ZXJI
aWdobGlnaHQgJiYgb25CdXR0b24pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAg
ICBjbGVhck1vdXNlRG93bkluZm9ybWF0aW9uKCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIAorICAgIC8vIENoZWNrIGFuZCBzZWUgaWYgdGhlIG1vdXNlIHdl
bnQgZG93biBvdmVyIGEgREQgaGlnaGxpZ2h0IGJ1dHRvbi4KKyAgICBpZiAoZXZlbnQudHlwZSgp
ID09IFdlYkV2ZW50OjpNb3VzZURvd24pIHsKKyAgICAgICAgaWYgKG1fbW91c2VJc092ZXJIaWdo
bGlnaHQgJiYgb25CdXR0b24pIHsKKyAgICAgICAgICAgIG1fbW91c2VEb3duUG9zaXRpb24gPSBt
X21vdXNlUG9zaXRpb247CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGRvIHRo
ZSBmb2xsb3dpbmcsIGJ1dCBTT0ZUX0xJTksgaXNuJ3Qgd29ya2luZyBmb3IgdGhpcyBtZXRob2Qu
CisgICAgICAgICAgICAvLyBEREhpZ2hsaWdodFNldEJ1dHRvblByZXNzZWQobV9jdXJyZW50SGln
aGxpZ2h0LmdldCgpLCB0cnVlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9zZWxlY3Rp
b25PdmVybGF5LT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAgICAgCisgICAg
cmV0dXJuIGZhbHNlOworfQorCit2b2lkIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpoYW5k
bGVDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCit7CisgICAgLy8gRklYTUU6
IEhhbmRsZSB0aGUgY2xpY2sgaGVyZS4KK30KKyAgICAKK3ZvaWQgU2VsZWN0aW9uT3ZlcmxheUNv
bnRyb2xsZXI6OmNsZWFyTW91c2VEb3duSW5mb3JtYXRpb24oKQoreworICAgIG1fbW91c2VEb3du
UG9zaXRpb24gPSBJbnRQb2ludCgpOworfQorICAgIAordm9pZCBTZWxlY3Rpb25PdmVybGF5Q29u
dHJvbGxlcjo6Y2xlYXJIaWdobGlnaHQoKQoreworICAgIG1fY3VycmVudEhpZ2hsaWdodC5jbGVh
cigpOworICAgIG1fbW91c2VJc092ZXJIaWdobGlnaHQgPSBmYWxzZTsKK30KKyAgICAKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230194</attachid>
            <date>2014-04-25 13:08:01 -0700</date>
            <delta_ts>2014-04-25 14:17:48 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>32389</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZTk1OGRkLi45OGE2NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTQtMDQtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBhIHNlbGVjdGlvbiBvdmVybGF5LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY3
Mjc3OTc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMjAw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIChXSzIgZmVhdHVyZSBpbiBkZXZlbG9wbWVudCkuCisKKyAgICAgICAgKiBwYWdlL0Vk
aXRvckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpzZWxlY3Rpb25S
ZWN0c0RpZENoYW5nZSk6CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24pOiBIYW5kIHRoZSBnYXRo
ZXJlZCByZWN0cyBvZmYgdG8gdGhlIEVkaXRvckNsaWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZXc6OnNldFN1YnRyZWVTZWxlY3Rpb24pOiBHYXRoZXIgYWxsIHRoZSBzZWxlY3Rpb24g
cmVjdHMgdG8gYmUgcGFpbnRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgor
CiAyMDE0LTA0LTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIGlzIHVuYXdhcmUgb2YgdG9wQ29udGVudEluc2V0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCAxZGM4NTk1Li5mZjk1NTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3MgRWxlbWVudDsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBLZXlib2FyZEV2ZW50Owor
Y2xhc3MgTGF5b3V0UmVjdDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKQEAgLTE4Miw2ICsxODMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZWxlY3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxS
YW5nZT4+JikgeyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorICAg
IHZpcnR1YWwgdm9pZCBzZWxlY3Rpb25SZWN0c0RpZENoYW5nZShjb25zdCBWZWN0b3I8TGF5b3V0
UmVjdD4mKSB7IH0KKyNlbmRpZgorCiAgICAgLy8gU3VwcG9ydCBmb3IgZ2xvYmFsIHNlbGVjdGlv
bnMsIHVzZWQgb24gcGxhdGZvcm1zIGxpa2UgdGhlIFggV2luZG93IFN5c3RlbSB0aGF0IHRyZWF0
CiAgICAgLy8gc2VsZWN0aW9uIGFzIGEgdHlwZSBvZiBjbGlwYm9hcmQuCiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA5YzZkNGFjLi4wYjU3NDAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0yMyw2ICsyMyw4IEBACiAK
ICNpbmNsdWRlICJDb2x1bW5JbmZvLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJFZGl0b3IuaCIKKyNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKICNpbmNsdWRlICJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiRmxvYXRpbmdPYmplY3RzLmgi
CkBAIC03NjAsNiArNzYyLDI3IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0TWF4aW1hbE91dGxpbmVT
aXplKGludCBvKQogCiB2b2lkIFJlbmRlclZpZXc6OnNldFNlbGVjdGlvbihSZW5kZXJPYmplY3Qq
IHN0YXJ0LCBpbnQgc3RhcnRQb3MsIFJlbmRlck9iamVjdCogZW5kLCBpbnQgZW5kUG9zLCBTZWxl
Y3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2RlKQogeworI2lmIEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKQorICAgIG1fY3VycmVudFNlbGVjdGlvblJlY3RzLmNsZWFyKCk7CisKKyAgICAv
LyBBbHdheXMgbm90aWZ5IHRoZSBFZGl0b3JDbGllbnQgb2YgdGhlIG5ldyBzZWxlY3Rpb24gcmVj
dHMsIG5vIG1hdHRlciB3aGF0IHRoZXkgYXJlLgorICAgIHN0cnVjdCBTZWxlY3Rpb25SZWN0Tm90
aWZpZXIgeworICAgICAgICBTZWxlY3Rpb25SZWN0Tm90aWZpZXIoUmVuZGVyVmlldyYgdmlldykK
KyAgICAgICAgICAgIDogbV92aWV3KHZpZXcpCisgICAgICAgIHsgfQorCisgICAgICAgIH5TZWxl
Y3Rpb25SZWN0Tm90aWZpZXIoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoRWRpdG9yQ2xp
ZW50KiBjbGllbnQgPSAgbV92aWV3LnZpZXcoKS5mcmFtZSgpLmVkaXRvcigpLmNsaWVudCgpKQor
ICAgICAgICAgICAgICAgIGNsaWVudC0+c2VsZWN0aW9uUmVjdHNEaWRDaGFuZ2UobV92aWV3Lm1f
Y3VycmVudFNlbGVjdGlvblJlY3RzKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlbmRlclZpZXcm
IG1fdmlldzsKKyAgICB9OworCisgICAgU2VsZWN0aW9uUmVjdE5vdGlmaWVyIG5vdGlmaWVyKCp0
aGlzKTsKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKwogICAgIC8vIE1ha2Ug
c3VyZSBib3RoIG91ciBzdGFydCBhbmQgZW5kIG9iamVjdHMgYXJlIGRlZmluZWQuCiAgICAgLy8g
Q2hlY2sgd3d3Lm1zbmJjLmNvbSBhbmQgdHJ5IGNsaWNraW5nIGFyb3VuZCB0byBmaW5kIHRoZSBj
YXNlIHdoZXJlIHRoaXMgaGFwcGVuZWQuCiAgICAgaWYgKChzdGFydCAmJiAhZW5kKSB8fCAoZW5k
ICYmICFzdGFydCkpCkBAIC05MzMsNyArOTU2LDE2IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U3Vi
dHJlZVNlbGVjdGlvbihTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgUmVuZGVyT2JqZWN0KiBz
CiAgICAgbyA9IHN0YXJ0OwogICAgIHdoaWxlIChvICYmIG8gIT0gc3RvcCkgewogICAgICAgICBp
ZiAoKG8tPmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8IG8gPT0gc3RhcnQgfHwgbyA9PSBlbmQpICYm
IG8tPnNlbGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewotICAgICAgICAgICAgbmV3
U2VsZWN0ZWRPYmplY3RzLnNldChvLCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbklu
Zm8+KG8sIHRydWUpKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rp
b25JbmZvPiBzZWxlY3Rpb25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25J
bmZvPihvLCB0cnVlKTsKKworI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorICAgICAgICAg
ICAgTGF5b3V0UmVjdCByZWN0ID0gc2VsZWN0aW9uSW5mby0+cmVjdCgpOworICAgICAgICAgICAg
aWYgKCFyZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRTZWxlY3Rpb25S
ZWN0cy5hcHBlbmQocmVjdCk7CisjZW5kaWYKKworICAgICAgICAgICAgbmV3U2VsZWN0ZWRPYmpl
Y3RzLnNldChvLCBzdGQ6Om1vdmUoc2VsZWN0aW9uSW5mbykpOworCiAgICAgICAgICAgICBSZW5k
ZXJCbG9jayogY2IgPSBvLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgIHdoaWxlIChj
YiAmJiAhY2ItPmlzUmVuZGVyVmlldygpKSB7CiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG5ld1NlbGVjdGVkQmxv
Y2tzLmFkZChjYiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwpAQCAtOTQxLDYgKzk3MywxNiBA
QCB2b2lkIFJlbmRlclZpZXc6OnNldFN1YnRyZWVTZWxlY3Rpb24oU2VsZWN0aW9uU3VidHJlZVJv
b3QmIHJvb3QsIFJlbmRlck9iamVjdCogcwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrU2Vs
ZWN0aW9uSW5mbz4oY2IpOwogICAgICAgICAgICAgICAgIGNiID0gY2ItPmNvbnRhaW5pbmdCbG9j
aygpOworCisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisgICAgICAgICAgICAgICAgR2Fw
UmVjdHMgcmVjdHMgPSBibG9ja0luZm8tPnJlY3RzKCk7CisgICAgICAgICAgICAgICAgaWYgKCFy
ZWN0cy5sZWZ0KCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRTZWxl
Y3Rpb25SZWN0cy5hcHBlbmQocmVjdHMubGVmdCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJl
Y3RzLnJpZ2h0KCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRTZWxl
Y3Rpb25SZWN0cy5hcHBlbmQocmVjdHMucmlnaHQoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFy
ZWN0cy5jZW50ZXIoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudFNl
bGVjdGlvblJlY3RzLmFwcGVuZChyZWN0cy5jZW50ZXIoKSk7CisjZW5kaWYKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCA2
YmIzODA5Li44ZWZmYzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAg
LTM1NCw2ICszNTQsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgSGFzaFNldDxSZW5kZXJF
bGVtZW50Kj4gbV9yZW5kZXJlcnNXaXRoUGF1c2VkSW1hZ2VBbmltYXRpb247CisKKyNpZiBFTkFC
TEUoU0VSVklDRV9DT05UUk9MUykKKyAgICBWZWN0b3I8TGF5b3V0UmVjdD4gbV9jdXJyZW50U2Vs
ZWN0aW9uUmVjdHM7CisjZW5kaWYKIH07CiAKIFJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5k
ZXJWaWV3LCBpc1JlbmRlclZpZXcoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5MTk3NTE1Li5lYjdmMGRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTQtMDQtMjUgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHNlbGVjdGlvbiBvdmVybGF5LgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTY3Mjc3OTc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6c2VsZWN0aW9uUmVjdHNEaWRDaGFu
Z2UpOiBQYXNzIHRoZSBuZXcgc2VsZWN0aW9uIHJlY3RzIG9uCisgICAgICAgICAgdG8gdGhlIHNl
bGVjdGlvbiBvdmVybGF5IGNvbnRyb2xsZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9TZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViS2l0OjpTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6Y3JlYXRlT3Zl
cmxheUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xs
ZXI6OmRlc3Ryb3lPdmVybGF5KToKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNv
bnRyb2xsZXI6OnBhZ2VPdmVybGF5RGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0
aW9uT3ZlcmxheUNvbnRyb2xsZXI6OndpbGxNb3ZlVG9XZWJQYWdlKToKKyAgICAgICAgKFdlYktp
dDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6c2VsZWN0aW9uUmVjdHNEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6ZHJh
d1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6bW91
c2VFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1NlbGVjdGlvbk92ZXJsYXlD
b250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTZWxlY3Rpb25PdmVybGF5Q29u
dHJvbGxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1NlbGVj
dGlvbk92ZXJsYXlDb250cm9sbGVyTWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U2Vs
ZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYktpdDo6U2Vs
ZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6Om1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpT
ZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6aGFuZGxlQ2xpY2spOgorICAgICAgICAoV2ViS2l0
OjpTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6Y2xlYXJIaWdobGlnaHQpOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAxNC0wNC0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUGx1Z2luIHByb2Nlc3MgY3Jhc2hl
cyB3aXRoIEdUSzIgd2luZG93ZWQgcGx1Z2lucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUxYWMyYjEuLmI0MDI5MzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTkwNyw2ICs5MDcsOSBAQAogCQk1MUUzNTIwNTE4MEY1RDRGMDBFNTNCRTkgLyogRGF0YWJhc2VQ
cm9jZXNzTWFpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRTM1MjAzMTgwRjVENEIwMEU1M0JFOSAvKiBEYXRhYmFzZVByb2Nlc3NNYWluLm1tICov
OyB9OwogCQk1MUUzNTIwOTE4MEY1RDZCMDBFNTNCRTkgLyogRGF0YWJhc2VTZXJ2aWNlRW50cnlQ
b2ludC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RTM1MjA4MTgwRjVENkIwMEU1M0JFOSAvKiBEYXRhYmFzZVNlcnZpY2VFbnRyeVBvaW50Lm1tICov
OyB9OwogCQk1MUUzQjY3RjE2RjI2NkIzMDA5OTY4REMgLyogTmV0d29ya1Jlc291cmNlTG9hZGVy
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFF
M0I2N0UxNkYyNjZCMzAwOTk2OERDIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbSAqLzsg
fTsKKwkJNTFFRjEyNEUxOTA5ODUyMjAwOEE2NTMyIC8qIFNlbGVjdGlvbk92ZXJsYXlDb250cm9s
bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RUYxMjRDMTkwOTg1MjIwMDhBNjUzMiAvKiBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5jcHAg
Ki87IH07CisJCTUxRUYxMjRGMTkwOTg1MjMwMDhBNjUzMiAvKiBTZWxlY3Rpb25PdmVybGF5Q29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFFRjEyNEQxOTA5ODUyMjAwOEE2NTMyIC8qIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmgg
Ki87IH07CisJCTUxRUYxMjUxMTkwOTg1MzEwMDhBNjUzMiAvKiBTZWxlY3Rpb25PdmVybGF5Q29u
dHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRUYxMjUwMTkwOTg1MzEwMDhBNjUzMiAvKiBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxl
ck1hYy5tbSAqLzsgfTsKIAkJNTFFRkMxQ0YxNTI0RTYyNTAwQzlBOTM4IC8qIFdLQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUZBMkQ1NDE1MjExMTg2MDBDMUJBMEIgLyogV0tCdW5kbGVET01XaW5kb3dFeHRl
bnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MUYwNjBFMDE2NTQzMTdGMDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMDYwREUx
NjU0MzE3NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJ
NTFGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RjA2MEREMTY1NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CkBAIC0yNzYxLDYgKzI3NjQsOSBAQAogCQk1MUUzNTIwNzE4MEY1RDYxMDBF
NTNCRTkgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFMzUyMDgxODBGNUQ2QjAwRTUzQkU5IC8qIERhdGFiYXNl
U2VydmljZUVudHJ5UG9pbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBEYXRhYmFzZVNlcnZpY2VFbnRyeVBvaW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUUzQjY3RTE2RjI2NkIzMDA5OTY4REMgLyogTmV0d29ya1Jlc291cmNlTG9hZGVy
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1Jl
c291cmNlTG9hZGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUVGMTI0
QzE5MDk4NTIyMDA4QTY1MzIgLyogU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUVGMTI0RDE5MDk4NTIyMDA4
QTY1MzIgLyogU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTFFRjEyNTAxOTA5ODUzMTAwOEE2NTMyIC8qIFNlbGVjdGlvbk92
ZXJsYXlDb250cm9sbGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxRjA2MEREMTY1NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRl
ck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjA2
MERFMTY1NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFGN0RDNEExODBDQzkzNjAwMjEyQ0EzIC8qIGNvbS5hcHBsZS5XZWJLaXQu
RGF0YWJhc2VzLnhwYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gd3JhcHBlci5jZmJ1bmRsZTsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gY29tLmFw
cGxlLldlYktpdC5EYXRhYmFzZXMueHBjOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwpAQCAtNTMyMiw2ICs1MzI4LDggQEAKIAkJCQkxQTkwQzIzNTEyNjUwNzE3MDAzRTQ0RDQg
LyogUGFnZU92ZXJsYXkuaCAqLywKIAkJCQkyRDE0MEVBRDE4RjM3QkUwMDA1RTc1QTAgLyogUGFn
ZU92ZXJsYXlDb250cm9sbGVyLmNwcCAqLywKIAkJCQkyRDE0MEVBRTE4RjM3QkUwMDA1RTc1QTAg
LyogUGFnZU92ZXJsYXlDb250cm9sbGVyLmggKi8sCisJCQkJNTFFRjEyNEMxOTA5ODUyMjAwOEE2
NTMyIC8qIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmNwcCAqLywKKwkJCQk1MUVGMTI0RDE5
MDk4NTIyMDA4QTY1MzIgLyogU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuaCAqLywKIAkJCQk1
MTlFRjU4RjE4RUY3NzIxMDAwM0I3RjQgLyogVGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xs
ZXIuY3BwICovLAogCQkJCTUxOUVGNTkwMThFRjc3MjEwMDAzQjdGNCAvKiBUZWxlcGhvbmVOdW1i
ZXJPdmVybGF5Q29udHJvbGxlci5oICovLAogCQkJCTJEODE5Qjk5MTg2Mjc1QjMwMDFGMDNEMSAv
KiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCAqLywKQEAgLTYwNzcsNiArNjA4NSw3
IEBACiAJCQkJMUFCMTZBRTcxNjRCM0E4ODAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQubW0gKi8sCiAJCQkJMUFCMTZBREMxNjQ4NTk4NDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLmggKi8sCiAJCQkJMUFCMTZBREIxNjQ4NTk4NDAwMjkwRDYyIC8qIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tICovLAorCQkJCTUxRUYxMjUwMTkwOTg1MzEwMDhBNjUz
MiAvKiBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlck1hYy5tbSAqLywKIAkJCQk1MTlFRjU4RDE4
RUY3NzBEMDAwM0I3RjQgLyogVGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0g
Ki8sCiAJCQkJMUFBRjI2MzcxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLmggKi8sCiAJCQkJMUFBRjI2MzYxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tICovLApAQCAtNzM1Myw2ICs3MzYyLDcgQEAKIAkJCQky
OTUwMTcyNDE2MkE0NTA0MDA0QTlENzEgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUY3NTA2QjYxODU5MTY1
NzAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGVJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUY3NTA2QjUxODU5MTY1NDAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1Bs
dWdJblNjcmlwdFdvcmxkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRUYxMjRGMTkw
OTg1MjMwMDhBNjUzMiAvKiBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzczQ0VBRDYxODU0MTdBRTAwOEMzNjNEIC8qIFdLTlNEYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUI4QTFGMDE4NDAwQjAwMDBFOUFFNjkgLyogV0tQYWdlRm9ybUNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5ODlEODUxNjFBOTg5MDAwMEQ0NkQzIC8qIFdLV2ViUHJv
Y2Vzc1BsdWdJbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTg0NTQsNiArODQ2NCw3IEBA
CiAJCQkJQkNBQzExMjAxMkM5MkMxRjAwQjA4RUVFIC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5
Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY2MkE3NkI4MTJCMUIyNUYwMDA1RjFCNiAv
KiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTdERDVDNTE4MERDM0UxMDA4MTY2MEIgLyogRGF0YWJhc2VQcm9jZXNzUHJveHlN
YWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MUVGMTI1MTE5MDk4NTMxMDA4QTY1MzIgLyogU2Vs
ZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzExMUE1
RDExMkY0RkJCMDAzMzdCQUIgLyogV2ViRHJhZ0NsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDNTc0QTM3NzEyRTYwOTlEMDAyREZFOTggLyogV2ViRHJhZ0NsaWVudE1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDQTBFRkEwMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFBy
b3h5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtODU5Nyw2ICs4NjA4LDcgQEAKIAkJCQkzMzM2NzYy
RjEzMEM5OTk4MDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzNGOUQ1QjkxMzEyRjFFRTAwMEQ2ODNGIC8qIFdlYlJlc291cmNlQ2FjaGVN
YW5hZ2VyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzMzNjc2NTUxMzBDOUVDQTAwNkM5
REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTUxRUYxMjRFMTkwOTg1MjIwMDhBNjUzMiAvKiBTZWxlY3Rpb25PdmVybGF5
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzM2NzYzNTEzMEM5OUIyMDA2QzlE
RTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzMzM2NzY1NzEzMEM5RUNBMDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQThFN0QzQzE4QzE1MTQ5
MDA1QTcwMkEgLyogVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggM2I4ODQzMy4uN2Rh
ZDdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIldlYkVkaXRvckNsaWVudC5oIgogCiAjaW5jbHVkZSAiRWRpdG9yU3RhdGUuaCIKKyNpbmNs
dWRlICJTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlRlbGVwaG9uZU51
bWJlck92ZXJsYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKQEAgLTUzMSw0ICs1MzIsMTEgQEAgdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OnNlbGVjdGVkVGVsZXBob25lTnVtYmVyUmFuZ2VzQ2hhbmdlZChjb25zdCBW
ZWN0b3I8UmVmUHRyPFIKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMp
Cit2b2lkIFdlYkVkaXRvckNsaWVudDo6c2VsZWN0aW9uUmVjdHNEaWRDaGFuZ2UoY29uc3QgVmVj
dG9yPExheW91dFJlY3Q+JiByZWN0cykKK3sKKyAgICBtX3BhZ2UtPnNlbGVjdGlvbk92ZXJsYXlD
b250cm9sbGVyKCkuc2VsZWN0aW9uUmVjdHNEaWRDaGFuZ2UocmVjdHMpOworfQorI2VuZGlmIC8v
IEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IDI2YjU1NWUuLmE4OGI2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aApAQCAtMTcwLDYgKzE3MCw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1C
RVJfREVURUNUSU9OKQogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RlZFRlbGVwaG9uZU51bWJlclJh
bmdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4+Jikgb3ZlcnJp
ZGU7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKyAgICB2aXJ0dWFsIHZv
aWQgc2VsZWN0aW9uUmVjdHNEaWRDaGFuZ2UoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkxheW91dFJl
Y3Q+Jikgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIFdlYlBhZ2UqIG1fcGFnZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvU2VsZWN0aW9uT3Zlcmxh
eUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1NlbGVj
dGlvbk92ZXJsYXlDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kM2IyMWU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1NlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDExOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZWxlY3Rpb25P
dmVybGF5Q29udHJvbGxlci5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisKKyNp
bmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisgICAgCitT
ZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIoV2Vi
UGFnZSogd2ViUGFnZSkKKyAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQorICAgICwgbV9zZWxlY3Rp
b25PdmVybGF5KG51bGxwdHIpCisgICAgLCBtX21vdXNlSXNEb3duT25CdXR0b24oZmFsc2UpCisg
ICAgLCBtX21vdXNlSXNPdmVySGlnaGxpZ2h0KGZhbHNlKQoreworfQorCit2b2lkIFNlbGVjdGlv
bk92ZXJsYXlDb250cm9sbGVyOjpjcmVhdGVPdmVybGF5SWZOZWVkZWQoKQoreworICAgIGlmICht
X3NlbGVjdGlvbk92ZXJsYXkpIHsKKyAgICAgICAgbV9zZWxlY3Rpb25PdmVybGF5LT5zZXROZWVk
c0Rpc3BsYXkoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8UGFn
ZU92ZXJsYXk+IG92ZXJsYXkgPSBQYWdlT3ZlcmxheTo6Y3JlYXRlKHRoaXMsIFBhZ2VPdmVybGF5
OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQpOworICAgIG1fc2VsZWN0aW9uT3ZlcmxheSA9IG92ZXJs
YXkuZ2V0KCk7CisgICAgbV93ZWJQYWdlLT5pbnN0YWxsUGFnZU92ZXJsYXkob3ZlcmxheS5yZWxl
YXNlKCksIFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6RmFkZSk7CisgICAgbV9zZWxlY3Rpb25PdmVy
bGF5LT5zZXROZWVkc0Rpc3BsYXkoKTsKK30KKwordm9pZCBTZWxlY3Rpb25PdmVybGF5Q29udHJv
bGxlcjo6ZGVzdHJveU92ZXJsYXkoKQoreworICAgIGlmICghbV9zZWxlY3Rpb25PdmVybGF5KQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3dlYlBhZ2UtPnVuaW5zdGFsbFBhZ2VPdmVybGF5KG1f
c2VsZWN0aW9uT3ZlcmxheSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpEb05vdEZhZGUpOworfQor
Cit2b2lkIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpwYWdlT3ZlcmxheURlc3Ryb3llZChQ
YWdlT3ZlcmxheSopCit7CisgICAgLy8gQmVmb3JlIHRoZSBvdmVybGF5IGlzIGRlc3Ryb3llZCwg
aXQgc2hvdWxkIGhhdmUgbW92ZWQgb3V0IG9mIHRoZSBXZWJQYWdlLAorICAgIC8vIGF0IHdoaWNo
IHBvaW50IHdlIGFscmVhZHkgY2xlYXJlZCBvdXIgYmFjayBwb2ludGVyLgorICAgIEFTU0VSVCgh
bV9zZWxlY3Rpb25PdmVybGF5KTsKK30KKwordm9pZCBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxl
cjo6d2lsbE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKiB3ZWJQYWdlKQorewor
ICAgIGlmICh3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9zZWxlY3Rp
b25PdmVybGF5KTsKKyAgICBtX3NlbGVjdGlvbk92ZXJsYXkgPSBudWxscHRyOworfQorCit2b2lk
IFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpkaWRNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5
KiwgV2ViUGFnZSopCit7Cit9CisKK3ZvaWQgU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OnNl
bGVjdGlvblJlY3RzRGlkQ2hhbmdlKGNvbnN0IFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMpCit7
CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEwOTAKKyAgICBjbGVhckhp
Z2hsaWdodCgpOworCisgICAgbV9jdXJyZW50U2VsZWN0aW9uUmVjdHMgPSByZWN0czsKKworICAg
IGlmIChtX2N1cnJlbnRTZWxlY3Rpb25SZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIGRlc3Ryb3lP
dmVybGF5KCk7CisgICAgZWxzZQorICAgICAgICBjcmVhdGVPdmVybGF5SWZOZWVkZWQoKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHJlY3RzKTsKKyNlbmRpZgorfQorCisjaWYgIVBMQVRGT1JN
KE1BQykKK3ZvaWQgU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OmRyYXdSZWN0KFBhZ2VPdmVy
bGF5KiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBTZWxlY3Rpb25PdmVybGF5Q29u
dHJvbGxlcjo6bW91c2VFdmVudChQYWdlT3ZlcmxheSosIGNvbnN0IFdlYk1vdXNlRXZlbnQmKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfQ09OVFJP
TFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvU2VsZWN0
aW9uT3ZlcmxheUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9TZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjYxMWM1MmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDg5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcl9oCisK
KyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKworI2luY2x1ZGUgIlBhZ2VPdmVybGF5Lmgi
CisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKKyNp
ZiBQTEFURk9STShNQUMpCit0eXBlZGVmIHZvaWQqIERESGlnaGxpZ2h0UmVmOworI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIExheW91dFJlY3Q7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworICAgIAorY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgU2VsZWN0aW9uT3ZlcmxheUNv
bnRyb2xsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcj4s
IHByaXZhdGUgUGFnZU92ZXJsYXk6OkNsaWVudCB7CitwdWJsaWM6CisKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcj4gY3JlYXRlKFdlYlBhZ2UqIHdlYlBh
Z2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlbGVjdGlvbk92ZXJsYXlD
b250cm9sbGVyKHdlYlBhZ2UpKTsKKyAgICB9CisKKyAgICB2b2lkIHNlbGVjdGlvblJlY3RzRGlk
Q2hhbmdlKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpMYXlvdXRSZWN0PiYpOworICAgIHZvaWQgaGFu
ZGxlQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICAKK3ByaXZhdGU6CisgICAg
U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIoV2ViUGFnZSopOworCisgICAgdm9pZCBjcmVhdGVP
dmVybGF5SWZOZWVkZWQoKTsKKyAgICB2b2lkIGRlc3Ryb3lPdmVybGF5KCk7CisgICAgCisgICAg
dm9pZCBoYW5kbGVTZWxlY3Rpb25PdmVybGF5Q2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWdlT3ZlcmxheURlc3Ryb3llZChQYWdlT3ZlcmxheSop
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvV2ViUGFnZShQYWdlT3Zlcmxh
eSosIFdlYlBhZ2UqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvV2ViUGFn
ZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
d1JlY3QoUGFnZU92ZXJsYXkqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBtb3Vz
ZUV2ZW50KFBhZ2VPdmVybGF5KiwgY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOworCisg
ICAgdm9pZCBjbGVhckhpZ2hsaWdodCgpOworCisgICAgUmVmUHRyPFdlYlBhZ2U+IG1fd2ViUGFn
ZTsKKyAgICBQYWdlT3ZlcmxheSogbV9zZWxlY3Rpb25PdmVybGF5OworICAgIFZlY3RvcjxXZWJD
b3JlOjpMYXlvdXRSZWN0PiBtX2N1cnJlbnRTZWxlY3Rpb25SZWN0czsKKworICAgIFdlYkNvcmU6
OkludFBvaW50IG1fbW91c2VQb3NpdGlvbjsKKyAgICBib29sIG1fbW91c2VJc0Rvd25PbkJ1dHRv
bjsKKyAgICBib29sIG1fbW91c2VJc092ZXJIaWdobGlnaHQ7CisKKyNpZiBQTEFURk9STShNQUMp
CisgICAgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVmPiBtX2N1cnJlbnRIaWdobGlnaHQ7CisjZW5k
aWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfQ09OVFJPTFMpCisjZW5kaWYgLy8gU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXJfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGRhNGYw
NDQuLjA5MTUxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJQbHVnaW5Qcm94eS5oIgogI2lu
Y2x1ZGUgIlBsdWdpblZpZXcuaCIKICNpbmNsdWRlICJQcmludEluZm8uaCIKKyNpbmNsdWRlICJT
ZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgog
I2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgi
CkBAIC00NTYxLDYgKzQ1NjIsMTYgQEAgVGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXIm
IFdlYlBhZ2U6OnRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyKCkKIH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCitTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxl
ciYgV2ViUGFnZTo6c2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIoKQoreworICAgIGlmICghbV9z
ZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcikKKyAgICAgICAgbV9zZWxlY3Rpb25PdmVybGF5Q29u
dHJvbGxlciA9IFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpjcmVhdGUodGhpcyk7CisKKyAg
ICByZXR1cm4gKm1fc2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI7Cit9CisjZW5kaWYKKwogdm9p
ZCBXZWJQYWdlOjpkaWRDaGFuZ2VTY3JvbGxPZmZzZXRGb3JGcmFtZShGcmFtZSogZnJhbWUpCiB7
CiAgICAgbV9wYWdlT3ZlcmxheUNvbnRyb2xsZXIuZGlkU2Nyb2xsRnJhbWUoZnJhbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZmYyZjM3MC4u
OTc5MzUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC0xNDAsNiArMTQwLDcgQEAgY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOwogY2xhc3MgUGFnZUJhbm5lcjsKIGNsYXNzIFBhZ2VPdmVybGF5OwogY2xhc3MgUGx1
Z2luVmlldzsKK2NsYXNzIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOwogY2xhc3MgU2Vzc2lv
blN0YXRlOwogY2xhc3MgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbzsKIGNsYXNzIFdlYkNv
bG9yQ2hvb3NlcjsKQEAgLTc4NCw2ICs3ODUsOSBAQCBwdWJsaWM6CiAgICAgVGVsZXBob25lTnVt
YmVyT3ZlcmxheUNvbnRyb2xsZXImIHRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyKCk7
CiAgICAgdm9pZCBoYW5kbGVUZWxlcGhvbmVOdW1iZXJDbGljayhjb25zdCBTdHJpbmcmIG51bWJl
ciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICNlbmRpZgorI2lmIEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKQorICAgIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyJiBzZWxlY3Rpb25PdmVy
bGF5Q29udHJvbGxlcigpOworI2VuZGlmCiAKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNl
dEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKik7CiAKQEAgLTEyMDEsNiArMTIwNSw5IEBAIHByaXZh
dGU6CiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQogICAgIFJlZlB0cjxU
ZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlcj4gbV90ZWxlcGhvbmVOdW1iZXJPdmVybGF5
Q29udHJvbGxlcjsKICNlbmRpZgorI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorICAgIFJl
ZlB0cjxTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcj4gbV9zZWxlY3Rpb25PdmVybGF5Q29udHJv
bGxlcjsKKyNlbmRpZgogCiAgICAgUGFnZU92ZXJsYXlDb250cm9sbGVyIG1fcGFnZU92ZXJsYXlD
b250cm9sbGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1NlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyTWFjLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5OTc1MzIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1NlbGVjdGlvbk92
ZXJsYXlDb250cm9sbGVyTWFjLm1tCkBAIC0wLDAgKzEsMTc0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5oIgor
CisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisKKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVW
aWV3Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9NYWluRnJhbWUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KKworI2lm
IF9faGFzX2luY2x1ZGUoPERhdGFEZXRlY3RvcnMvRERIaWdobGlnaHREcmF3aW5nLmg+KQorI2lt
cG9ydCA8RGF0YURldGVjdG9ycy9EREhpZ2hsaWdodERyYXdpbmcuaD4KKyNlbHNlCit0eXBlZGVm
IHZvaWQqIERESGlnaGxpZ2h0UmVmOworI2VuZGlmCisKKyNpZiBfX2hhc19pbmNsdWRlKDxEYXRh
RGV0ZWN0b3JzL0RESGlnaGxpZ2h0RHJhd2luZ19Qcml2YXRlLmg+KQorI2ltcG9ydCA8RGF0YURl
dGVjdG9ycy9EREhpZ2hsaWdodERyYXdpbmdfUHJpdmF0ZS5oPgorI2VuZGlmCisKK1NPRlRfTElO
S19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChEYXRhRGV0ZWN0b3JzKQorU09GVF9MSU5LKERh
dGFEZXRlY3RvcnMsIERESGlnaGxpZ2h0Q3JlYXRlV2l0aFJlY3RzSW5WaXNpYmxlUmVjdCwgRERI
aWdobGlnaHRSZWYsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENHUmVjdCAqIHJlY3RzLCBD
RkluZGV4IGNvdW50LCBDR1JlY3QgZ2xvYmFsVmlzaWJsZVJlY3QsIEJvb2xlYW4gd2l0aEFycm93
KSwgKGFsbG9jYXRvciwgcmVjdHMsIGNvdW50LCBnbG9iYWxWaXNpYmxlUmVjdCwgd2l0aEFycm93
KSkKK1NPRlRfTElOSyhEYXRhRGV0ZWN0b3JzLCBEREhpZ2hsaWdodEdldExheWVyV2l0aENvbnRl
eHQsIENHTGF5ZXJSZWYsIChEREhpZ2hsaWdodFJlZiBoaWdobGlnaHQsIENHQ29udGV4dFJlZiBj
b250ZXh0KSwgKGhpZ2hsaWdodCwgY29udGV4dCkpCitTT0ZUX0xJTksoRGF0YURldGVjdG9ycywg
RERIaWdobGlnaHRHZXRCb3VuZGluZ1JlY3QsIENHUmVjdCwgKERESGlnaGxpZ2h0UmVmIGhpZ2hs
aWdodCksIChoaWdobGlnaHQpKQorU09GVF9MSU5LKERhdGFEZXRlY3RvcnMsIERESGlnaGxpZ2h0
UG9pbnRJc09uSGlnaGxpZ2h0LCBCb29sZWFuLCAoRERIaWdobGlnaHRSZWYgaGlnaGxpZ2h0LCBD
R1BvaW50IHBvaW50LCBCb29sZWFuKiBvbkJ1dHRvbiksIChoaWdobGlnaHQsIHBvaW50LCBvbkJ1
dHRvbikpCitTT0ZUX0xJTksoRGF0YURldGVjdG9ycywgRERIaWdobGlnaHRTZXRCdXR0b25QcmVz
c2VkLCB2b2lkLCAoRERIaWdobGlnaHRSZWYgaGlnaGxpZ2h0LCBCb29sZWFuIGJ1dHRvblByZXNz
ZWQpLCAoaGlnaGxpZ2h0LCBidXR0b25QcmVzc2VkKSkKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFNlbGVjdGlvbk92ZXJsYXlDb250cm9s
bGVyOjpkcmF3UmVjdChQYWdlT3ZlcmxheSogb3ZlcmxheSwgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkK
K3sKKyAgICBpZiAobV9jdXJyZW50U2VsZWN0aW9uUmVjdHMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIW1fY3VycmVudEhpZ2hsaWdodCkgeworICAgICAgICBWZWN0b3I8
Q0dSZWN0PiBjZ1JlY3RzOworICAgICAgICBjZ1JlY3RzLnJlc2VydmVDYXBhY2l0eShtX2N1cnJl
bnRTZWxlY3Rpb25SZWN0cy5zaXplKCkpOworCisgICAgICAgIGZvciAoYXV0byYgcmVjdCA6IG1f
Y3VycmVudFNlbGVjdGlvblJlY3RzKQorICAgICAgICAgICAgY2dSZWN0cy5hcHBlbmQoKENHUmVj
dClwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKKworICAgICAgICBtX2N1cnJlbnRIaWdobGln
aHQgPSBhZG9wdENGKERESGlnaGxpZ2h0Q3JlYXRlV2l0aFJlY3RzSW5WaXNpYmxlUmVjdChudWxs
cHRyLCBjZ1JlY3RzLmJlZ2luKCksIGNnUmVjdHMuc2l6ZSgpLCAoQ0dSZWN0KWRpcnR5UmVjdCwg
dHJ1ZSkpOworCisgICAgICAgIEJvb2xlYW4gb25CdXR0b247CisgICAgICAgIG1fbW91c2VJc092
ZXJIaWdobGlnaHQgPSBEREhpZ2hsaWdodFBvaW50SXNPbkhpZ2hsaWdodChtX2N1cnJlbnRIaWdo
bGlnaHQuZ2V0KCksIChDR1BvaW50KW1fbW91c2VQb3NpdGlvbiwgJm9uQnV0dG9uKTsKKyAgICB9
CisKKyAgICAvLyBJZiB0aGUgbW91c2UgaXMgbm90IG92ZXIgdGhlIERESGlnaGxpZ2h0IHdlIGhh
dmUgbm8gZHJhd2luZyB0byBkby4KKyAgICBpZiAoIW1fbW91c2VJc092ZXJIaWdobGlnaHQpCisg
ICAgICAgIHJldHVybjsKKworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBncmFwaGljc0Nv
bnRleHQucGxhdGZvcm1Db250ZXh0KCk7CisKKyAgICBDR0xheWVyUmVmIGhpZ2hsaWdodExheWVy
ID0gRERIaWdobGlnaHRHZXRMYXllcldpdGhDb250ZXh0KG1fY3VycmVudEhpZ2hsaWdodC5nZXQo
KSwgY2dDb250ZXh0KTsKKyAgICBDR1JlY3QgaGlnaGxpZ2h0Qm91bmRpbmdSZWN0ID0gRERIaWdo
bGlnaHRHZXRCb3VuZGluZ1JlY3QobV9jdXJyZW50SGlnaGxpZ2h0LmdldCgpKTsKKyAgICAKKyAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsK
KworICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUodG9GbG9hdFNpemUoaGlnaGxpZ2h0Qm91
bmRpbmdSZWN0Lm9yaWdpbikpOworICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZShGbG9hdFNpemUo
MSwgLTEpKTsKKyAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKEZsb2F0U2l6ZSgwLCAtaGln
aGxpZ2h0Qm91bmRpbmdSZWN0LnNpemUuaGVpZ2h0KSk7CisgICAgCisgICAgQ0dSZWN0IGhpZ2hs
aWdodERyYXdSZWN0ID0gaGlnaGxpZ2h0Qm91bmRpbmdSZWN0OworICAgIGhpZ2hsaWdodERyYXdS
ZWN0Lm9yaWdpbi54ID0gMDsKKyAgICBoaWdobGlnaHREcmF3UmVjdC5vcmlnaW4ueSA9IDA7Cisg
ICAgCisgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNnQ29udGV4dCwgaGlnaGxpZ2h0RHJh
d1JlY3QsIGhpZ2hsaWdodExheWVyKTsKK30KKyAgICAKK2Jvb2wgU2VsZWN0aW9uT3ZlcmxheUNv
bnRyb2xsZXI6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkqLCBjb25zdCBXZWJNb3VzZUV2ZW50JiBl
dmVudCkKK3sKKyAgICBtX21vdXNlUG9zaXRpb24gPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPm1h
aW5GcmFtZSgpLnZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpOwor
CisgICAgYm9vbCBtb3VzZVdhc092ZXJIaWdobGlnaHQgPSBtX21vdXNlSXNPdmVySGlnaGxpZ2h0
OworICAgIEJvb2xlYW4gb25CdXR0b24gPSBmYWxzZTsKKyAgICBtX21vdXNlSXNPdmVySGlnaGxp
Z2h0ID0gbV9jdXJyZW50SGlnaGxpZ2h0ID8gRERIaWdobGlnaHRQb2ludElzT25IaWdobGlnaHQo
bV9jdXJyZW50SGlnaGxpZ2h0LmdldCgpLCAoQ0dQb2ludCltX21vdXNlUG9zaXRpb24sICZvbkJ1
dHRvbikgOiBmYWxzZTsKKworICAgIGlmIChtb3VzZVdhc092ZXJIaWdobGlnaHQgIT0gbV9tb3Vz
ZUlzT3ZlckhpZ2hsaWdodCkKKyAgICAgICAgbV9zZWxlY3Rpb25PdmVybGF5LT5zZXROZWVkc0Rp
c3BsYXkoKTsKKworICAgIC8vIElmIHRoaXMgZXZlbnQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0
aGUgbGVmdCBidXR0b24sIGl0IGNsZWFycyB0aGUgY3VycmVudCBtb3VzZSBkb3duIHRyYWNraW5n
IGFuZCB3ZSdyZSBkb25lIHByb2Nlc3NpbmcgaXQuCisgICAgaWYgKGV2ZW50LmJ1dHRvbigpICE9
IFdlYk1vdXNlRXZlbnQ6OkxlZnRCdXR0b24pIHsKKyAgICAgICAgbV9tb3VzZUlzRG93bk9uQnV0
dG9uID0gZmFsc2U7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1f
Y3VycmVudEhpZ2hsaWdodCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQ2hlY2sg
YW5kIHNlZSBpZiB0aGUgbW91c2Ugd2VudCB1cCBhbmQgd2UgaGF2ZSBhIGN1cnJlbnQgbW91c2Ug
ZG93biBoaWdobGlnaHQgYnV0dG9uLgorICAgIGlmIChldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6
Ok1vdXNlVXApIHsKKyAgICAgICAgYm9vbCBtb3VzZVdhc0Rvd25PbkJ1dHRvbiA9IG1fbW91c2VJ
c0Rvd25PbkJ1dHRvbjsKKyAgICAgICAgbV9tb3VzZUlzRG93bk9uQnV0dG9uID0gZmFsc2U7CisK
KyAgICAgICAgLy8gSWYgdGhlIG1vdXNlIGxpZnRlZCB3aGlsZSBzdGlsbCBvdmVyIHRoZSBoaWdo
bGlnaHQgYnV0dG9uIHRoYXQgaXQgd2VudCBkb3duIG9uLCB0aGVuIHRoYXQgaXMgYSBjbGljay4K
KyAgICAgICAgaWYgKG1fbW91c2VJc092ZXJIaWdobGlnaHQgJiYgb25CdXR0b24gJiYgbW91c2VX
YXNEb3duT25CdXR0b24pIHsKKyAgICAgICAgICAgIGhhbmRsZUNsaWNrKG1fbW91c2VQb3NpdGlv
bik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICAvLyBDaGVjayBhbmQgc2VlIGlmIHRo
ZSBtb3VzZSBtb3ZlZCB3aXRoaW4gdGhlIGNvbmZpbmVzIG9mIHRoZSBERCBoaWdobGlnaHQgYnV0
dG9uLgorICAgIGlmIChldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlTW92ZSkgeworICAg
ICAgICAvLyBNb3Zpbmcgd2l0aCB0aGUgbW91c2UgYnV0dG9uIGRvd24gaXMgb2theSBhcyBsb25n
IGFzIHRoZSBtb3VzZSBuZXZlciBsZWF2ZXMgdGhlIGhpZ2hsaWdodCBidXR0b24uCisgICAgICAg
IGlmIChtX21vdXNlSXNPdmVySGlnaGxpZ2h0ICYmIG9uQnV0dG9uKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICAgICAgbV9tb3VzZUlzRG93bk9uQnV0dG9uID0gZmFsc2U7CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIC8vIENoZWNrIGFu
ZCBzZWUgaWYgdGhlIG1vdXNlIHdlbnQgZG93biBvdmVyIGEgREQgaGlnaGxpZ2h0IGJ1dHRvbi4K
KyAgICBpZiAoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24pIHsKKyAgICAgICAg
aWYgKG1fbW91c2VJc092ZXJIaWdobGlnaHQgJiYgb25CdXR0b24pIHsKKyAgICAgICAgICAgIG1f
bW91c2VJc0Rvd25PbkJ1dHRvbiA9IHRydWU7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBu
ZWVkIHRvIGRvIHRoZSBmb2xsb3dpbmcsIGJ1dCBTT0ZUX0xJTksgaXNuJ3Qgd29ya2luZyBmb3Ig
dGhpcyBtZXRob2QuCisgICAgICAgICAgICAvLyBEREhpZ2hsaWdodFNldEJ1dHRvblByZXNzZWQo
bV9jdXJyZW50SGlnaGxpZ2h0LmdldCgpLCB0cnVlKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgbV9zZWxlY3Rpb25PdmVybGF5LT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICAgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFNlbGVjdGlvbk92ZXJsYXlDb250
cm9sbGVyOjpoYW5kbGVDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCit7Cisg
ICAgLy8gRklYTUU6IEhhbmRsZSB0aGUgY2xpY2sgaGVyZS4KK30KKyAgICAKK3ZvaWQgU2VsZWN0
aW9uT3ZlcmxheUNvbnRyb2xsZXI6OmNsZWFySGlnaGxpZ2h0KCkKK3sKKyAgICBtX2N1cnJlbnRI
aWdobGlnaHQuY2xlYXIoKTsKKyAgICBtX21vdXNlSXNPdmVySGlnaGxpZ2h0ID0gZmFsc2U7Cit9
CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKQorCg==
</data>
<flag name="review"
          id="254586"
          type_id="1"
          status="-"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="254587"
          type_id="3"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230198</attachid>
            <date>2014-04-25 14:17:48 -0700</date>
            <delta_ts>2014-04-25 14:23:09 -0700</delta_ts>
            <desc>Patch v3 with Hyatt&apos;s suggestion</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>43511</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZTk1OGRkLi5mYjcwYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTQtMDQtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBhIHNlbGVjdGlvbiBvdmVybGF5LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY3
Mjc3OTc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMjAw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIChXSzIgZmVhdHVyZSBpbiBkZXZlbG9wbWVudCkuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgQWRkIGEgU2VsZWN0aW9uUmVj
dEdhdGh0ZXJlciBjbGFzcy4KKyAgICAgICAgSXQgY3JlYXRlcyBhIE5vdGlmaWVyIChnaXZlbiBh
IFJlbmRlclZpZXcpIHRoZW4gYWNjZXB0cyBSZWN0cyBmcm9tIHRoZSBSZW5kZXJWaWV3LgorICAg
ICAgICBXaGVuIHRoZSBOb3RpZmllciBpcyBkZXN0cm95ZWQsIHRoZSBhcHByb3ByaWF0ZSBFZGl0
b3JDbGllbnQgaXMgbm90aWZpZWQgb2YgdGhlIGdhdGhlcmVkIHJlY3RzLgorICAgICAgICAqIGVk
aXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OlNlbGVjdGlvblJlY3RHYXRoZXJlcik6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmFkZFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0aW9uUmVjdEdhdGhlcmVyOjphZGRSZWN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6Ok5vdGlmaWVyOjpOb3RpZmllcik6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6Ok5vdGlmaWVyOjp+Tm90aWZpZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpjbGVhckFuZENyZWF0ZU5vdGlm
aWVyKToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5oOiBBZGRlZC4K
KworICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnQ6OnNlbGVjdGlvblJlY3RzRGlkQ2hhbmdlKToKKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OlJlbmRlclZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKTogQ2xlYXIg
dGhlIGdhdGhlcmVy4oCZcyByZWN0cyB0aGVuIGNyZWF0ZSBhIE5vdGlmaWVyLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVmlldzo6c2V0U3VidHJlZVNlbGVjdGlvbik6IEdpdmUgYWxsIHRoZSBz
ZWxlY3Rpb24gcmVjdHMgdG8gYmUgcGFpbnRlZCB0bworICAgICAgICAgIHRoZSBTZWxlY3Rpb25S
ZWN0R2F0aGVyZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKwogMjAxNC0w
NC0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTY3Jv
bGxpbmdDb29yZGluYXRvciBpcyB1bmF3YXJlIG9mIHRvcENvbnRlbnRJbnNldApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJiNzY1
NmYuLmQ5YTA4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE4MTcsNiArMTgxNyw4IEBACiAJCTUxMzI3RDYxMTFBMzNBMkIw
MDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEzMjdENUYxMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVu
dC5jcHAgKi87IH07CiAJCTUxM0YxNDUzMEFCNjM0QzQwMDA5NERERiAvKiBJY29uTG9hZGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0YxNDUx
MEFCNjM0QzQwMDA5NERERiAvKiBJY29uTG9hZGVyLmNwcCAqLzsgfTsKIAkJNTEzRjE0NTQwQUI2
MzRDNDAwMDk0RERGIC8qIEljb25Mb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0YxNDUyMEFCNjM0QzQwMDA5NERERiAvKiBJY29uTG9hZGVy
LmggKi87IH07CisJCTUxNDA1Qzg4MTkwQjAxNDQwMDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0
aGVyZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE0MDVDODYxOTBCMDE0NDAwNzU0Rjk0IC8qIFNlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAgKi87
IH07CisJCTUxNDA1Qzg5MTkwQjAxNDQwMDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0aGVyZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDA1Qzg3
MTkwQjAxNDQwMDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0aGVyZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRCM0Y3MzBDNzIyMDQ3MDAw
NTMwREYgLyogRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE0QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRCM0Y3NjBD
NzIyMDU1MDAwNTMwREYgLyogRmlsZVN5c3RlbU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEIzRjc1MEM3MjIwNTUwMDA1MzBERiAvKiBGaWxl
U3lzdGVtTWFjLm1tICovOyB9OwogCQk1MTRCQzgzRjE2MUNGMDRBMDA0RDUyRjQgLyogUmVzb3Vy
Y2VCdWZmZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTRCQzgzRDE2MUNGMDQzMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIubW0gKi87IH07CkBA
IC04ODA4LDYgKzg4MTAsOCBAQAogCQk1MTMyN0Q1RjExQTMzQTJCMDA0RjlENjUgLyogU2lua0Rv
Y3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbmtEb2N1
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxM0YxNDUxMEFCNjM0QzQw
MDA5NERERiAvKiBJY29uTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJY29uTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEz
RjE0NTIwQUI2MzRDNDAwMDk0RERGIC8qIEljb25Mb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEljb25Mb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTE0MDVDODYxOTBCMDE0NDAwNzU0Rjk0IC8qIFNlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3Rpb25SZWN0R2F0aGVy
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTQwNUM4NzE5MEIwMTQ0MDA3
NTRGOTQgLyogU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNlbGVjdGlvblJlY3RHYXRoZXJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTRCM0Y3MjBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNEIzRjc1MEM3MjIwNTUwMDA1MzBERiAvKiBGaWxlU3lzdGVtTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbU1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0QkM4M0QxNjFDRjA0MzAwNEQ1MkY0
IC8qIFJlc291cmNlQnVmZmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUmVzb3VyY2VCdWZmZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NzE5MCw2ICsxNzE5NCw4IEBACiAJCQkJQTg5Q0NDNTEwRjQ0RTk4MTAwQjVEQTEwIC8qIFJlcGxh
Y2VOb2RlV2l0aFNwYW5Db21tYW5kLmggKi8sCiAJCQkJOTMzMDlEQkEwOTlFNjQ5MTAwNTZFNTgx
IC8qIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCAqLywKIAkJCQk5MzMwOURCQjA5OUU2NDkx
MDA1NkU1ODEgLyogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCAqLywKKwkJCQk1MTQwNUM4NjE5
MEIwMTQ0MDA3NTRGOTQgLyogU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcCAqLywKKwkJCQk1MTQw
NUM4NzE5MEIwMTQ0MDA3NTRGOTQgLyogU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggKi8sCiAJCQkJ
OTMzMDlEQzAwOTlFNjQ5MTAwNTZFNTgxIC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcCAq
LywKIAkJCQk5MzMwOURDMTA5OUU2NDkxMDA1NkU1ODEgLyogU2V0Tm9kZUF0dHJpYnV0ZUNvbW1h
bmQuaCAqLywKIAkJCQlCOERCREI0NzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29t
bWFuZC5jcHAgKi8sCkBAIC0yMzY0Miw2ICsyMzY0OCw3IEBACiAJCQkJODVFNzExQzYwQUM1RDUz
NTAwNTMyNzBGIC8qIERPTUhUTUxTZWxlY3RFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1OUE5QzRGMEFBNUUzQkQwMEI2OTRCMiAvKiBET01IVE1MU3R5bGVFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFDNzBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTFN0
eWxlRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTQwNUM4OTE5MEIwMTQ0
MDA3NTRGOTQgLyogU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NURGODIxRDBBQTc4NDlFMDA0ODZBRDcgLyogRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1RTcxMUM4MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MVGFi
bGVDYXB0aW9uRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NURGODIxRjBB
QTc4NDlFMDA0ODZBRDcgLyogRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LApAQCAtMjg1MjAsNiArMjg1MjcsNyBAQAogCQkJCUZEQjE3MDA1MTRBMkJBQjIwMEEyQjVEOSAv
KiBNdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCNDkw
QTQ0RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzZGMDkwMEUxNDMyN0I2MTAwNjg1ODQ5IC8qIE11dGF0aW9uT2JzZXJ2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTE0MDVDODgxOTBCMDE0NDAwNzU0Rjk0IC8qIFNlbGVjdGlvblJlY3RHYXRo
ZXJlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlENkU1MjhBMzE0OUE5MjZEMDBFRkUxRjMgLyog
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDZF
Mjc2QUYxNDYzNzQ1NTAwMUQyODBBIC8qIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzZGMDhGQkMxNDMwRkU4RjAwNjg1ODQ5IC8qIE11dGF0aW9u
UmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
ZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmM0ODg2ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nl
bGVjdGlvblJlY3RHYXRoZXJlci5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZWxlY3Rpb25SZWN0R2F0aGVyZXIuaCIKKwor
I2luY2x1ZGUgIkVkaXRvci5oIgorI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0Vf
Q09OVFJPTFMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2VsZWN0aW9uUmVjdEdhdGhlcmVy
OjpTZWxlY3Rpb25SZWN0R2F0aGVyZXIoUmVuZGVyVmlldyYgcmVuZGVyVmlldykKKyAgICA6IG1f
cmVuZGVyVmlldyhyZW5kZXJWaWV3KQoreworfQorCit2b2lkIFNlbGVjdGlvblJlY3RHYXRoZXJl
cjo6YWRkUmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KQoreworICAgIGlmICghcmVjdC5pc0Vt
cHR5KCkpCisgICAgICAgIG1fcmVjdHMuYXBwZW5kKHJlY3QpOworfQorCit2b2lkIFNlbGVjdGlv
blJlY3RHYXRoZXJlcjo6YWRkUmVjdHMoY29uc3QgR2FwUmVjdHMmIHJlY3RzKQoreworICAgIGlm
ICghcmVjdHMubGVmdCgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZWN0cy5hcHBlbmQocmVjdHMu
bGVmdCgpKTsKKyAgICBpZiAoIXJlY3RzLnJpZ2h0KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jl
Y3RzLmFwcGVuZChyZWN0cy5yaWdodCgpKTsKKyAgICBpZiAoIXJlY3RzLmNlbnRlcigpLmlzRW1w
dHkoKSkKKyAgICAgICAgbV9yZWN0cy5hcHBlbmQocmVjdHMuY2VudGVyKCkpOworfQorCitTZWxl
Y3Rpb25SZWN0R2F0aGVyZXI6Ok5vdGlmaWVyOjpOb3RpZmllcihTZWxlY3Rpb25SZWN0R2F0aGVy
ZXImIGdhdGhlcmVyKQorICAgIDogbV9nYXRoZXJlcihnYXRoZXJlcikKK3sKK30KKworU2VsZWN0
aW9uUmVjdEdhdGhlcmVyOjpOb3RpZmllcjo6fk5vdGlmaWVyKCkKK3sKKyAgICBpZiAoRWRpdG9y
Q2xpZW50KiBjbGllbnQgPSBtX2dhdGhlcmVyLm1fcmVuZGVyVmlldy52aWV3KCkuZnJhbWUoKS5l
ZGl0b3IoKS5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5zZWxlY3Rpb25SZWN0c0RpZENoYW5n
ZShtX2dhdGhlcmVyLm1fcmVjdHMpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U2VsZWN0aW9uUmVj
dEdhdGhlcmVyOjpOb3RpZmllcj4gU2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpjbGVhckFuZENyZWF0
ZU5vdGlmaWVyKCkKK3sKKyAgICBtX3JlY3RzLmNsZWFyKCk7CisKKyAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxOb3RpZmllcj4oKnRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjkwODU3ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFNlbGVjdGlvblJlY3RHYXRoZXJlcl9oCisjZGVmaW5lIFNlbGVjdGlvblJl
Y3RHYXRoZXJlcl9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBMYXlvdXRSZWN0OworY2xhc3MgUmVuZGVyVmlldzsKKworc3Ry
dWN0IEdhcFJlY3RzOworCitjbGFzcyBTZWxlY3Rpb25SZWN0R2F0aGVyZXIgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFNlbGVjdGlvblJlY3RHYXRoZXJlcik7CisKK3B1YmxpYzoKKyAgICBT
ZWxlY3Rpb25SZWN0R2F0aGVyZXIoUmVuZGVyVmlldyYpOworCisgICAgdm9pZCBhZGRSZWN0KGNv
bnN0IExheW91dFJlY3QmKTsKKyAgICB2b2lkIGFkZFJlY3RzKGNvbnN0IEdhcFJlY3RzJik7CisK
KyAgICBjbGFzcyBOb3RpZmllciB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5vdGlm
aWVyKTsKKyAgICBwdWJsaWM6CisgICAgICAgIE5vdGlmaWVyKFNlbGVjdGlvblJlY3RHYXRoZXJl
ciYpOworICAgICAgICB+Tm90aWZpZXIoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFNlbGVj
dGlvblJlY3RHYXRoZXJlciYgbV9nYXRoZXJlcjsKKyAgICB9OworCisgICAgc3RkOjp1bmlxdWVf
cHRyPE5vdGlmaWVyPiBjbGVhckFuZENyZWF0ZU5vdGlmaWVyKCk7CisgICAgCitwcml2YXRlOgor
ICAgIFJlbmRlclZpZXcmIG1fcmVuZGVyVmlldzsKKyAgICBWZWN0b3I8TGF5b3V0UmVjdD4gbV9y
ZWN0czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX0NPTlRST0xTKQorI2VuZGlmIC8vIFNlbGVjdGlvblJlY3RHYXRoZXJlcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCAxZGM4NTk1Li5mZjk1NTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3MgRWxlbWVudDsKIGNs
YXNzIEZyYW1lOwogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBLZXlib2FyZEV2ZW50OworY2xh
c3MgTGF5b3V0UmVjdDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKQEAgLTE4Miw2ICsxODMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZWxl
Y3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxSYW5n
ZT4+JikgeyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorICAgIHZp
cnR1YWwgdm9pZCBzZWxlY3Rpb25SZWN0c0RpZENoYW5nZShjb25zdCBWZWN0b3I8TGF5b3V0UmVj
dD4mKSB7IH0KKyNlbmRpZgorCiAgICAgLy8gU3VwcG9ydCBmb3IgZ2xvYmFsIHNlbGVjdGlvbnMs
IHVzZWQgb24gcGxhdGZvcm1zIGxpa2UgdGhlIFggV2luZG93IFN5c3RlbSB0aGF0IHRyZWF0CiAg
ICAgLy8gc2VsZWN0aW9uIGFzIGEgdHlwZSBvZiBjbGlwYm9hcmQuCiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA5YzZkNGFjLi5jZWRkNDUzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtMjMsNiArMjMsOCBAQAogCiAj
aW5jbHVkZSAiQ29sdW1uSW5mby5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RWRpdG9yLmgiCisjaW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5o
IgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkZsb2F0aW5nT2JqZWN0cy5oIgpA
QCAtNzIsNiArNzQsOSBAQCBSZW5kZXJWaWV3OjpSZW5kZXJWaWV3KERvY3VtZW50JiBkb2N1bWVu
dCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQog
ICAgICwgbV9oYXNTb2Z0d2FyZUZpbHRlcnMoZmFsc2UpCiAjZW5kaWYKKyNpZiBFTkFCTEUoU0VS
VklDRV9DT05UUk9MUykKKyAgICAsIG1fc2VsZWN0aW9uUmVjdEdhdGhlcmVyKCp0aGlzKQorI2Vu
ZGlmCiB7CiAgICAgc2V0SXNSZW5kZXJWaWV3KCk7CiAKQEAgLTc2MCw2ICs3NjUsMTIgQEAgdm9p
ZCBSZW5kZXJWaWV3OjpzZXRNYXhpbWFsT3V0bGluZVNpemUoaW50IG8pCiAKIHZvaWQgUmVuZGVy
Vmlldzo6c2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIGludCBzdGFydFBvcywgUmVu
ZGVyT2JqZWN0KiBlbmQsIGludCBlbmRQb3MsIFNlbGVjdGlvblJlcGFpbnRNb2RlIGJsb2NrUmVw
YWludE1vZGUpCiB7CisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisgICAgLy8gQ2xlYXIg
dGhlIGN1cnJlbnQgcmVjdHMgYW5kIGNyZWF0ZSBhIG5vdGlmaWVyIGZvciB0aGUgbmV3IHJlY3Rz
IHdlIGFyZSBhYm91dCB0byBnYXRoZXIuCisgICAgLy8gVGhlIE5vdGlmaWVyIHVwZGF0ZXMgdGhl
IEVkaXRvciB3aGVuIGl0IGdvZXMgb3V0IG9mIHNjb3BlIGFuZCBpcyBkZXN0cm95ZWQuCisgICAg
c3RkOjp1bmlxdWVfcHRyPFNlbGVjdGlvblJlY3RHYXRoZXJlcjo6Tm90aWZpZXI+IHJlY3ROb3Rp
ZmllciA9IG1fc2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNsZWFyQW5kQ3JlYXRlTm90aWZpZXIoKTsK
KyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKwogICAgIC8vIE1ha2Ugc3VyZSBi
b3RoIG91ciBzdGFydCBhbmQgZW5kIG9iamVjdHMgYXJlIGRlZmluZWQuCiAgICAgLy8gQ2hlY2sg
d3d3Lm1zbmJjLmNvbSBhbmQgdHJ5IGNsaWNraW5nIGFyb3VuZCB0byBmaW5kIHRoZSBjYXNlIHdo
ZXJlIHRoaXMgaGFwcGVuZWQuCiAgICAgaWYgKChzdGFydCAmJiAhZW5kKSB8fCAoZW5kICYmICFz
dGFydCkpCkBAIC05MzMsNyArOTQ0LDE0IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U3VidHJlZVNl
bGVjdGlvbihTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgUmVuZGVyT2JqZWN0KiBzCiAgICAg
byA9IHN0YXJ0OwogICAgIHdoaWxlIChvICYmIG8gIT0gc3RvcCkgewogICAgICAgICBpZiAoKG8t
PmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8IG8gPT0gc3RhcnQgfHwgbyA9PSBlbmQpICYmIG8tPnNl
bGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewotICAgICAgICAgICAgbmV3U2VsZWN0
ZWRPYmplY3RzLnNldChvLCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KG8s
IHRydWUpKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZv
PiBzZWxlY3Rpb25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPihv
LCB0cnVlKTsKKworI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorICAgICAgICAgICAgbV9z
ZWxlY3Rpb25SZWN0R2F0aGVyZXIuYWRkUmVjdChzZWxlY3Rpb25JbmZvLT5yZWN0KCkpOworI2Vu
ZGlmCisKKyAgICAgICAgICAgIG5ld1NlbGVjdGVkT2JqZWN0cy5zZXQobywgc3RkOjptb3ZlKHNl
bGVjdGlvbkluZm8pKTsKKwogICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGNiID0gby0+Y29udGFp
bmluZ0Jsb2NrKCk7CiAgICAgICAgICAgICB3aGlsZSAoY2IgJiYgIWNiLT5pc1JlbmRlclZpZXco
KSkgewogICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJCbG9ja1NlbGVjdGlv
bkluZm8+JiBibG9ja0luZm8gPSBuZXdTZWxlY3RlZEJsb2Nrcy5hZGQoY2IsIG51bGxwdHIpLml0
ZXJhdG9yLT52YWx1ZTsKQEAgLTk0MSw2ICs5NTksMTAgQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRT
dWJ0cmVlU2VsZWN0aW9uKFNlbGVjdGlvblN1YnRyZWVSb290JiByb290LCBSZW5kZXJPYmplY3Qq
IHMKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgYmxvY2tJbmZv
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KGNiKTsKICAgICAg
ICAgICAgICAgICBjYiA9IGNiLT5jb250YWluaW5nQmxvY2soKTsKKworI2lmIEVOQUJMRShTRVJW
SUNFX0NPTlRST0xTKQorICAgICAgICAgICAgICAgIG1fc2VsZWN0aW9uUmVjdEdhdGhlcmVyLmFk
ZFJlY3RzKGJsb2NrSW5mby0+cmVjdHMoKSk7CisjZW5kaWYKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCA2YmIzODA5Li42
YzZhZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJQT0RGcmVlTGlzdEFyZW5hLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCisjaW5jbHVkZSAiU2VsZWN0aW9uUmVjdEdh
dGhlcmVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uU3VidHJlZVJvb3QuaCIKICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTM5LDYgKzQwLDEwIEBAIGNsYXNz
IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI7CiBjbGFzcyBSZW5kZXJMYXllckNvbXBvc2l0b3I7CiBj
bGFzcyBSZW5kZXJRdW90ZTsKIAorI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorY2xhc3Mg
U2VsZWN0aW9uUmVjdE5vdGlmaWVyOworI2VuZGlmCisKIGNsYXNzIFJlbmRlclZpZXcgZmluYWwg
OiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93LCBwdWJsaWMgU2VsZWN0aW9uU3VidHJlZVJvb3Qgewog
cHVibGljOgogICAgIFJlbmRlclZpZXcoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
CkBAIC0zNTQsNiArMzU5LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8UmVu
ZGVyRWxlbWVudCo+IG1fcmVuZGVyZXJzV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9uOworCisjaWYg
RU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisgICAgU2VsZWN0aW9uUmVjdEdhdGhlcmVyIG1fc2Vs
ZWN0aW9uUmVjdEdhdGhlcmVyOworI2VuZGlmCiB9OwogCiBSRU5ERVJfT0JKRUNUX1RZUEVfQ0FT
VFMoUmVuZGVyVmlldywgaXNSZW5kZXJWaWV3KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTE5NzUxNS4uZWI3
ZjBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE0LTA0LTI1ICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBzZWxlY3Rpb24gb3Zlcmxh
eS4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2NzI3Nzk3PiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnNlbGVjdGlvblJlY3Rz
RGlkQ2hhbmdlKTogUGFzcyB0aGUgbmV3IHNlbGVjdGlvbiByZWN0cyBvbgorICAgICAgICAgIHRv
IHRoZSBzZWxlY3Rpb24gb3ZlcmxheSBjb250cm9sbGVyLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OlNlbGVjdGlvbk92ZXJsYXlDb250
cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OmNy
ZWF0ZU92ZXJsYXlJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlNlbGVjdGlvbk92ZXJsYXlD
b250cm9sbGVyOjpkZXN0cm95T3ZlcmxheSk6CisgICAgICAgIChXZWJLaXQ6OlNlbGVjdGlvbk92
ZXJsYXlDb250cm9sbGVyOjpwYWdlT3ZlcmxheURlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6
OlNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OlNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpkaWRNb3ZlVG9XZWJQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OnNlbGVjdGlvblJl
Y3RzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xs
ZXI6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xs
ZXI6Om1vdXNlRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9TZWxlY3Rpb25P
dmVybGF5Q29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U2VsZWN0aW9uT3Zl
cmxheUNvbnRyb2xsZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9TZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlck1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpkcmF3UmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjptb3VzZUV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OmhhbmRsZUNsaWNrKToKKyAgICAgICAg
KFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OmNsZWFySGlnaGxpZ2h0KToKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6c2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMTQtMDQtMjUgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFBsdWdpbiBwcm9jZXNz
IGNyYXNoZXMgd2l0aCBHVEsyIHdpbmRvd2VkIHBsdWdpbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMWFjMmIxLi5iNDAyOTMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC05MDcsNiArOTA3LDkgQEAKIAkJNTFFMzUyMDUxODBGNUQ0RjAwRTUzQkU5IC8qIERh
dGFiYXNlUHJvY2Vzc01haW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUUzNTIwMzE4MEY1RDRCMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzTWFp
bi5tbSAqLzsgfTsKIAkJNTFFMzUyMDkxODBGNUQ2QjAwRTUzQkU5IC8qIERhdGFiYXNlU2Vydmlj
ZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUUzNTIwODE4MEY1RDZCMDBFNTNCRTkgLyogRGF0YWJhc2VTZXJ2aWNlRW50cnlQb2lu
dC5tbSAqLzsgfTsKIAkJNTFFM0I2N0YxNkYyNjZCMzAwOTk2OERDIC8qIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRTNCNjdFMTZGMjY2QjMwMDk5NjhEQyAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMu
bW0gKi87IH07CisJCTUxRUYxMjRFMTkwOTg1MjIwMDhBNjUzMiAvKiBTZWxlY3Rpb25PdmVybGF5
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUVGMTI0QzE5MDk4NTIyMDA4QTY1MzIgLyogU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xs
ZXIuY3BwICovOyB9OworCQk1MUVGMTI0RjE5MDk4NTIzMDA4QTY1MzIgLyogU2VsZWN0aW9uT3Zl
cmxheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRUYxMjREMTkwOTg1MjIwMDhBNjUzMiAvKiBTZWxlY3Rpb25PdmVybGF5Q29udHJv
bGxlci5oICovOyB9OworCQk1MUVGMTI1MTE5MDk4NTMxMDA4QTY1MzIgLyogU2VsZWN0aW9uT3Zl
cmxheUNvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUVGMTI1MDE5MDk4NTMxMDA4QTY1MzIgLyogU2VsZWN0aW9uT3ZlcmxheUNv
bnRyb2xsZXJNYWMubW0gKi87IH07CiAJCTUxRUZDMUNGMTUyNEU2MjUwMEM5QTkzOCAvKiBXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFGQTJENTQxNTIxMTE4NjAwQzFCQTBCIC8qIFdLQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTFGMDYwRTAxNjU0MzE3RjAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RjA2MERFMTY1NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggKi87
IH07CiAJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwpAQCAtMjc2MSw2ICsyNzY0LDkgQEAKIAkJNTFFMzUyMDcxODBG
NUQ2MTAwRTUzQkU5IC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTM1MjA4MTgwRjVENkIwMEU1M0JFOSAvKiBE
YXRhYmFzZVNlcnZpY2VFbnRyeVBvaW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRGF0YWJhc2VTZXJ2aWNlRW50cnlQb2ludC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFFM0I2N0UxNkYyNjZCMzAwOTk2OERDIC8qIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5l
dHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTFFRjEyNEMxOTA5ODUyMjAwOEE2NTMyIC8qIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlbGVjdGlvbk92ZXJsYXlD
b250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFFRjEyNEQxOTA5
ODUyMjAwOEE2NTMyIC8qIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRUYxMjUwMTkwOTg1MzEwMDhBNjUzMiAvKiBTZWxl
Y3Rpb25PdmVybGF5Q29udHJvbGxlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3Vy
Y2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3Vy
Y2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUYwNjBERTE2NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxRjdEQzRBMTgwQ0M5MzYwMDIxMkNBMyAvKiBjb20uYXBwbGUu
V2ViS2l0LkRhdGFiYXNlcy54cGMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9IHdyYXBwZXIuY2ZidW5kbGU7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9
IGNvbS5hcHBsZS5XZWJLaXQuRGF0YWJhc2VzLnhwYzsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKQEAgLTUzMjIsNiArNTMyOCw4IEBACiAJCQkJMUE5MEMyMzUxMjY1MDcxNzAw
M0U0NEQ0IC8qIFBhZ2VPdmVybGF5LmggKi8sCiAJCQkJMkQxNDBFQUQxOEYzN0JFMDAwNUU3NUEw
IC8qIFBhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMkQxNDBFQUUxOEYzN0JFMDAw
NUU3NUEwIC8qIFBhZ2VPdmVybGF5Q29udHJvbGxlci5oICovLAorCQkJCTUxRUYxMjRDMTkwOTg1
MjIwMDhBNjUzMiAvKiBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5jcHAgKi8sCisJCQkJNTFF
RjEyNEQxOTA5ODUyMjAwOEE2NTMyIC8qIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmggKi8s
CiAJCQkJNTE5RUY1OEYxOEVGNzcyMTAwMDNCN0Y0IC8qIFRlbGVwaG9uZU51bWJlck92ZXJsYXlD
b250cm9sbGVyLmNwcCAqLywKIAkJCQk1MTlFRjU5MDE4RUY3NzIxMDAwM0I3RjQgLyogVGVsZXBo
b25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXIuaCAqLywKIAkJCQkyRDgxOUI5OTE4NjI3NUIzMDAx
RjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgKi8sCkBAIC02MDc3LDYg
KzYwODUsNyBAQAogCQkJCTFBQjE2QUU3MTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRy
ZWVDb250ZXh0Lm1tICovLAogCQkJCTFBQjE2QURDMTY0ODU5ODQwMDI5MEQ2MiAvKiBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5oICovLAogCQkJCTFBQjE2QURCMTY0ODU5ODQwMDI5MEQ2MiAv
KiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSAqLywKKwkJCQk1MUVGMTI1MDE5MDk4NTMx
MDA4QTY1MzIgLyogU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0gKi8sCiAJCQkJNTE5
RUY1OEQxOEVGNzcwRDAwMDNCN0Y0IC8qIFRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVy
TWFjLm1tICovLAogCQkJCTFBQUYyNjM3MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5oICovLAogCQkJCTFBQUYyNjM2MTQ2ODdDMzkwMDRBMUU4QSAvKiBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSAqLywKQEAgLTczNTMsNiArNzM2Miw3IEBA
CiAJCQkJMjk1MDE3MjQxNjJBNDUwNDAwNEE5RDcxIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGNzUwNkI2
MTg1OTE2NTcwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFGNzUwNkI1MTg1OTE2NTQwMEVDMEZGNyAvKiBXS1dlYlBy
b2Nlc3NQbHVnSW5TY3JpcHRXb3JsZEludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUVG
MTI0RjE5MDk4NTIzMDA4QTY1MzIgLyogU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTM3M0NFQUQ2MTg1NDE3QUUwMDhDMzYzRCAvKiBXS05TRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFCOEExRjAxODQwMEIwMDAwRTlBRTY5IC8qIFdLUGFnZUZvcm1D
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTg5RDg1MTYxQTk4OTAwMDBENDZEMyAvKiBX
S1dlYlByb2Nlc3NQbHVnSW5JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDU0LDYgKzg0
NjQsNyBAQAogCQkJCUJDQUMxMTIwMTJDOTJDMUYwMEIwOEVFRSAvKiBXZWJEYXRhYmFzZU1hbmFn
ZXJQcm94eUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNjJBNzZCODEyQjFCMjVGMDAw
NUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTE3REQ1QzUxODBEQzNFMTAwODE2NjBCIC8qIERhdGFiYXNlUHJvY2Vz
c1Byb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFFRjEyNTExOTA5ODUzMTAwOEE2NTMy
IC8qIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkMxMTFBNUQxMTJGNEZCQjAwMzM3QkFCIC8qIFdlYkRyYWdDbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzU3NEEzNzcxMkU2MDk5RDAwMkRGRTk4IC8qIFdlYkRyYWdDbGllbnRNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQlCQ0EwRUZBMDEyMzMyNjQyMDA3RDNDRkIgLyogV2ViRWRpdENv
bW1hbmRQcm94eS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg1OTcsNiArODYwOCw3IEBACiAJCQkJ
MzMzNjc2MkYxMzBDOTk5ODAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMzRjlENUI5MTMxMkYxRUUwMDBENjgzRiAvKiBXZWJSZXNvdXJj
ZUNhY2hlTWFuYWdlckNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzMzY3NjU1MTMwQzlF
Q0EwMDZDOURFMiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MUVGMTI0RTE5MDk4NTIyMDA4QTY1MzIgLyogU2VsZWN0aW9u
T3ZlcmxheUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzMzNjc2MzUxMzBDOTlC
MjAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzMzNjc2NTcxMzBDOUVDQTAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5h
Z2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RTdEM0Mx
OEMxNTE0OTAwNUE3MDJBIC8qIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDNiODg0
MzMuLjdkYWQ3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJXZWJFZGl0b3JDbGllbnQuaCIKIAogI2luY2x1ZGUgIkVkaXRvclN0YXRlLmgi
CisjaW5jbHVkZSAiU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJUZWxl
cGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC01MzEsNCArNTMyLDExIEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpzZWxlY3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0NoYW5nZWQo
Y29uc3QgVmVjdG9yPFJlZlB0cjxSCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX0NP
TlRST0xTKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNlbGVjdGlvblJlY3RzRGlkQ2hhbmdlKGNv
bnN0IFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMpCit7CisgICAgbV9wYWdlLT5zZWxlY3Rpb25P
dmVybGF5Q29udHJvbGxlcigpLnNlbGVjdGlvblJlY3RzRGlkQ2hhbmdlKHJlY3RzKTsKK30KKyNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAyNmI1NTVlLi5hODhiNjBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKQEAgLTE3MCw2ICsxNzAsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShURUxFUEhP
TkVfTlVNQkVSX0RFVEVDVElPTikKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0ZWRUZWxlcGhvbmVO
dW1iZXJSYW5nZXNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+PiYp
IG92ZXJyaWRlOwogI2VuZGlmCisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisgICAgdmly
dHVhbCB2b2lkIHNlbGVjdGlvblJlY3RzRGlkQ2hhbmdlKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpM
YXlvdXRSZWN0PiYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1NlbGVjdGlv
bk92ZXJsYXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9TZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZDNiMjFlOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9TZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5jcHAKQEAgLTAsMCAr
MSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Vs
ZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xT
KQorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
ICAgIAorU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OlNlbGVjdGlvbk92ZXJsYXlDb250cm9s
bGVyKFdlYlBhZ2UqIHdlYlBhZ2UpCisgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKKyAgICAsIG1f
c2VsZWN0aW9uT3ZlcmxheShudWxscHRyKQorICAgICwgbV9tb3VzZUlzRG93bk9uQnV0dG9uKGZh
bHNlKQorICAgICwgbV9tb3VzZUlzT3ZlckhpZ2hsaWdodChmYWxzZSkKK3sKK30KKwordm9pZCBT
ZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6Y3JlYXRlT3ZlcmxheUlmTmVlZGVkKCkKK3sKKyAg
ICBpZiAobV9zZWxlY3Rpb25PdmVybGF5KSB7CisgICAgICAgIG1fc2VsZWN0aW9uT3ZlcmxheS0+
c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgUmVm
UHRyPFBhZ2VPdmVybGF5PiBvdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSh0aGlzLCBQYWdl
T3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KTsKKyAgICBtX3NlbGVjdGlvbk92ZXJsYXkg
PSBvdmVybGF5LmdldCgpOworICAgIG1fd2ViUGFnZS0+aW5zdGFsbFBhZ2VPdmVybGF5KG92ZXJs
YXkucmVsZWFzZSgpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkZhZGUpOworICAgIG1fc2VsZWN0
aW9uT3ZlcmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKK3ZvaWQgU2VsZWN0aW9uT3Zlcmxh
eUNvbnRyb2xsZXI6OmRlc3Ryb3lPdmVybGF5KCkKK3sKKyAgICBpZiAoIW1fc2VsZWN0aW9uT3Zl
cmxheSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93ZWJQYWdlLT51bmluc3RhbGxQYWdlT3Zl
cmxheShtX3NlbGVjdGlvbk92ZXJsYXksIFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6RG9Ob3RGYWRl
KTsKK30KKwordm9pZCBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0
cm95ZWQoUGFnZU92ZXJsYXkqKQoreworICAgIC8vIEJlZm9yZSB0aGUgb3ZlcmxheSBpcyBkZXN0
cm95ZWQsIGl0IHNob3VsZCBoYXZlIG1vdmVkIG91dCBvZiB0aGUgV2ViUGFnZSwKKyAgICAvLyBh
dCB3aGljaCBwb2ludCB3ZSBhbHJlYWR5IGNsZWFyZWQgb3VyIGJhY2sgcG9pbnRlci4KKyAgICBB
U1NFUlQoIW1fc2VsZWN0aW9uT3ZlcmxheSk7Cit9CisKK3ZvaWQgU2VsZWN0aW9uT3ZlcmxheUNv
bnRyb2xsZXI6OndpbGxNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSogd2ViUGFn
ZSkKK3sKKyAgICBpZiAod2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1f
c2VsZWN0aW9uT3ZlcmxheSk7CisgICAgbV9zZWxlY3Rpb25PdmVybGF5ID0gbnVsbHB0cjsKK30K
Kwordm9pZCBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6ZGlkTW92ZVRvV2ViUGFnZShQYWdl
T3ZlcmxheSosIFdlYlBhZ2UqKQoreworfQorCit2b2lkIFNlbGVjdGlvbk92ZXJsYXlDb250cm9s
bGVyOjpzZWxlY3Rpb25SZWN0c0RpZENoYW5nZShjb25zdCBWZWN0b3I8TGF5b3V0UmVjdD4mIHJl
Y3RzKQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPiAxMDkwCisgICAg
Y2xlYXJIaWdobGlnaHQoKTsKKworICAgIG1fY3VycmVudFNlbGVjdGlvblJlY3RzID0gcmVjdHM7
CisKKyAgICBpZiAobV9jdXJyZW50U2VsZWN0aW9uUmVjdHMuaXNFbXB0eSgpKQorICAgICAgICBk
ZXN0cm95T3ZlcmxheSgpOworICAgIGVsc2UKKyAgICAgICAgY3JlYXRlT3ZlcmxheUlmTmVlZGVk
KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWN0cyk7CisjZW5kaWYKK30KKworI2lmICFQ
TEFURk9STShNQUMpCit2b2lkIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpkcmF3UmVjdChQ
YWdlT3ZlcmxheSosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgU2VsZWN0aW9uT3Zl
cmxheUNvbnRyb2xsZXI6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkqLCBjb25zdCBXZWJNb3VzZUV2
ZW50JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKyNl
bmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1NlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi42MTFjNTJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1NlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmgKQEAgLTAs
MCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xs
ZXJfaAorCisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisKKyNpbmNsdWRlICJQYWdlT3Zl
cmxheS5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorCisjaWYgUExBVEZPUk0oTUFDKQordHlwZWRlZiB2b2lkKiBEREhpZ2hsaWdodFJlZjsKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBMYXlvdXRSZWN0OworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKyAgICAKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFNlbGVjdGlvbk92
ZXJsYXlDb250cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U2VsZWN0aW9uT3ZlcmxheUNvbnRy
b2xsZXI+LCBwcml2YXRlIFBhZ2VPdmVybGF5OjpDbGllbnQgeworcHVibGljOgorCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI+IGNyZWF0ZShXZWJQYWdl
KiB3ZWJQYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWxlY3Rpb25P
dmVybGF5Q29udHJvbGxlcih3ZWJQYWdlKSk7CisgICAgfQorCisgICAgdm9pZCBzZWxlY3Rpb25S
ZWN0c0RpZENoYW5nZShjb25zdCBWZWN0b3I8V2ViQ29yZTo6TGF5b3V0UmVjdD4mKTsKKyAgICB2
b2lkIGhhbmRsZUNsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgCitwcml2YXRl
OgorICAgIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyKFdlYlBhZ2UqKTsKKworICAgIHZvaWQg
Y3JlYXRlT3ZlcmxheUlmTmVlZGVkKCk7CisgICAgdm9pZCBkZXN0cm95T3ZlcmxheSgpOworICAg
IAorICAgIHZvaWQgaGFuZGxlU2VsZWN0aW9uT3ZlcmxheUNsaWNrKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZU92ZXJsYXlEZXN0cm95ZWQoUGFnZU92
ZXJsYXkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb1dlYlBhZ2UoUGFn
ZU92ZXJsYXkqLCBXZWJQYWdlKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVU
b1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGRyYXdSZWN0KFBhZ2VPdmVybGF5KiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJv
b2wgbW91c2VFdmVudChQYWdlT3ZlcmxheSosIGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBvdmVycmlk
ZTsKKworICAgIHZvaWQgY2xlYXJIaWdobGlnaHQoKTsKKworICAgIFJlZlB0cjxXZWJQYWdlPiBt
X3dlYlBhZ2U7CisgICAgUGFnZU92ZXJsYXkqIG1fc2VsZWN0aW9uT3ZlcmxheTsKKyAgICBWZWN0
b3I8V2ViQ29yZTo6TGF5b3V0UmVjdD4gbV9jdXJyZW50U2VsZWN0aW9uUmVjdHM7CisKKyAgICBX
ZWJDb3JlOjpJbnRQb2ludCBtX21vdXNlUG9zaXRpb247CisgICAgYm9vbCBtX21vdXNlSXNEb3du
T25CdXR0b247CisgICAgYm9vbCBtX21vdXNlSXNPdmVySGlnaGxpZ2h0OworCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIFJldGFpblB0cjxEREhpZ2hsaWdodFJlZj4gbV9jdXJyZW50SGlnaGxpZ2h0
OworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX0NPTlRST0xTKQorI2VuZGlmIC8vIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCBkYTRmMDQ0Li4wOTE1MWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiUGx1Z2luUHJveHku
aCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiUHJpbnRJbmZvLmgiCisjaW5j
bHVkZSAiU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXNzaW9uU3Rh
dGUuaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJp
dG1hcC5oIgpAQCAtNDU2MSw2ICs0NTYyLDE2IEBAIFRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250
cm9sbGVyJiBXZWJQYWdlOjp0ZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlcigpCiB9CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorU2VsZWN0aW9uT3ZlcmxheUNv
bnRyb2xsZXImIFdlYlBhZ2U6OnNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyKCkKK3sKKyAgICBp
ZiAoIW1fc2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIpCisgICAgICAgIG1fc2VsZWN0aW9uT3Zl
cmxheUNvbnRyb2xsZXIgPSBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6Y3JlYXRlKHRoaXMp
OworCisgICAgcmV0dXJuICptX3NlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOworfQorI2VuZGlm
CisKIHZvaWQgV2ViUGFnZTo6ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0Rm9yRnJhbWUoRnJhbWUqIGZy
YW1lKQogewogICAgIG1fcGFnZU92ZXJsYXlDb250cm9sbGVyLmRpZFNjcm9sbEZyYW1lKGZyYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGZm
MmYzNzAuLjk3OTM1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaApAQCAtMTQwLDYgKzE0MCw3IEBAIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjsKIGNsYXNzIFBhZ2VCYW5uZXI7CiBjbGFzcyBQYWdlT3ZlcmxheTsKIGNs
YXNzIFBsdWdpblZpZXc7CitjbGFzcyBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjsKIGNsYXNz
IFNlc3Npb25TdGF0ZTsKIGNsYXNzIFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm87CiBjbGFz
cyBXZWJDb2xvckNob29zZXI7CkBAIC03ODQsNiArNzg1LDkgQEAgcHVibGljOgogICAgIFRlbGVw
aG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyJiB0ZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJv
bGxlcigpOwogICAgIHZvaWQgaGFuZGxlVGVsZXBob25lTnVtYmVyQ2xpY2soY29uc3QgU3RyaW5n
JiBudW1iZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
U0VSVklDRV9DT05UUk9MUykKKyAgICBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlciYgc2VsZWN0
aW9uT3ZlcmxheUNvbnRyb2xsZXIoKTsKKyNlbmRpZgogCiAgICAgdm9pZCBkaWRDaGFuZ2VTY3Jv
bGxPZmZzZXRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSopOwogCkBAIC0xMjAxLDYgKzEyMDUsOSBA
QCBwcml2YXRlOgogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKICAgICBS
ZWZQdHI8VGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXI+IG1fdGVsZXBob25lTnVtYmVy
T3ZlcmxheUNvbnRyb2xsZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykK
KyAgICBSZWZQdHI8U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI+IG1fc2VsZWN0aW9uT3Zlcmxh
eUNvbnRyb2xsZXI7CisjZW5kaWYKIAogICAgIFBhZ2VPdmVybGF5Q29udHJvbGxlciBtX3BhZ2VP
dmVybGF5Q29udHJvbGxlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1NlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9TZWxlY3Rpb25PdmVybGF5Q29udHJvbGxl
ck1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTk3NTMyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9TZWxl
Y3Rpb25PdmVybGF5Q29udHJvbGxlck1hYy5tbQpAQCAtMCwwICsxLDE3NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xs
ZXIuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorCisjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lVmlldy5oPgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+
CisKKyNpZiBfX2hhc19pbmNsdWRlKDxEYXRhRGV0ZWN0b3JzL0RESGlnaGxpZ2h0RHJhd2luZy5o
PikKKyNpbXBvcnQgPERhdGFEZXRlY3RvcnMvRERIaWdobGlnaHREcmF3aW5nLmg+CisjZWxzZQor
dHlwZWRlZiB2b2lkKiBEREhpZ2hsaWdodFJlZjsKKyNlbmRpZgorCisjaWYgX19oYXNfaW5jbHVk
ZSg8RGF0YURldGVjdG9ycy9EREhpZ2hsaWdodERyYXdpbmdfUHJpdmF0ZS5oPikKKyNpbXBvcnQg
PERhdGFEZXRlY3RvcnMvRERIaWdobGlnaHREcmF3aW5nX1ByaXZhdGUuaD4KKyNlbmRpZgorCitT
T0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwoRGF0YURldGVjdG9ycykKK1NPRlRf
TElOSyhEYXRhRGV0ZWN0b3JzLCBEREhpZ2hsaWdodENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJl
Y3QsIERESGlnaGxpZ2h0UmVmLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDR1JlY3QgKiBy
ZWN0cywgQ0ZJbmRleCBjb3VudCwgQ0dSZWN0IGdsb2JhbFZpc2libGVSZWN0LCBCb29sZWFuIHdp
dGhBcnJvdyksIChhbGxvY2F0b3IsIHJlY3RzLCBjb3VudCwgZ2xvYmFsVmlzaWJsZVJlY3QsIHdp
dGhBcnJvdykpCitTT0ZUX0xJTksoRGF0YURldGVjdG9ycywgRERIaWdobGlnaHRHZXRMYXllcldp
dGhDb250ZXh0LCBDR0xheWVyUmVmLCAoRERIaWdobGlnaHRSZWYgaGlnaGxpZ2h0LCBDR0NvbnRl
eHRSZWYgY29udGV4dCksIChoaWdobGlnaHQsIGNvbnRleHQpKQorU09GVF9MSU5LKERhdGFEZXRl
Y3RvcnMsIERESGlnaGxpZ2h0R2V0Qm91bmRpbmdSZWN0LCBDR1JlY3QsIChEREhpZ2hsaWdodFJl
ZiBoaWdobGlnaHQpLCAoaGlnaGxpZ2h0KSkKK1NPRlRfTElOSyhEYXRhRGV0ZWN0b3JzLCBEREhp
Z2hsaWdodFBvaW50SXNPbkhpZ2hsaWdodCwgQm9vbGVhbiwgKERESGlnaGxpZ2h0UmVmIGhpZ2hs
aWdodCwgQ0dQb2ludCBwb2ludCwgQm9vbGVhbiogb25CdXR0b24pLCAoaGlnaGxpZ2h0LCBwb2lu
dCwgb25CdXR0b24pKQorU09GVF9MSU5LKERhdGFEZXRlY3RvcnMsIERESGlnaGxpZ2h0U2V0QnV0
dG9uUHJlc3NlZCwgdm9pZCwgKERESGlnaGxpZ2h0UmVmIGhpZ2hsaWdodCwgQm9vbGVhbiBidXR0
b25QcmVzc2VkKSwgKGhpZ2hsaWdodCwgYnV0dG9uUHJlc3NlZCkpCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBTZWxlY3Rpb25PdmVybGF5
Q29udHJvbGxlcjo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkqIG92ZXJsYXksIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0
eVJlY3QpCit7CisgICAgaWYgKG1fY3VycmVudFNlbGVjdGlvblJlY3RzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2N1cnJlbnRIaWdobGlnaHQpIHsKKyAgICAgICAg
VmVjdG9yPENHUmVjdD4gY2dSZWN0czsKKyAgICAgICAgY2dSZWN0cy5yZXNlcnZlQ2FwYWNpdHko
bV9jdXJyZW50U2VsZWN0aW9uUmVjdHMuc2l6ZSgpKTsKKworICAgICAgICBmb3IgKGF1dG8mIHJl
Y3QgOiBtX2N1cnJlbnRTZWxlY3Rpb25SZWN0cykKKyAgICAgICAgICAgIGNnUmVjdHMuYXBwZW5k
KChDR1JlY3QpcGl4ZWxTbmFwcGVkSW50UmVjdChyZWN0KSk7CisKKyAgICAgICAgbV9jdXJyZW50
SGlnaGxpZ2h0ID0gYWRvcHRDRihEREhpZ2hsaWdodENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJl
Y3QobnVsbHB0ciwgY2dSZWN0cy5iZWdpbigpLCBjZ1JlY3RzLnNpemUoKSwgKENHUmVjdClkaXJ0
eVJlY3QsIHRydWUpKTsKKworICAgICAgICBCb29sZWFuIG9uQnV0dG9uOworICAgICAgICBtX21v
dXNlSXNPdmVySGlnaGxpZ2h0ID0gRERIaWdobGlnaHRQb2ludElzT25IaWdobGlnaHQobV9jdXJy
ZW50SGlnaGxpZ2h0LmdldCgpLCAoQ0dQb2ludCltX21vdXNlUG9zaXRpb24sICZvbkJ1dHRvbik7
CisgICAgfQorCisgICAgLy8gSWYgdGhlIG1vdXNlIGlzIG5vdCBvdmVyIHRoZSBEREhpZ2hsaWdo
dCB3ZSBoYXZlIG5vIGRyYXdpbmcgdG8gZG8uCisgICAgaWYgKCFtX21vdXNlSXNPdmVySGlnaGxp
Z2h0KQorICAgICAgICByZXR1cm47CisKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gZ3Jh
cGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOworCisgICAgQ0dMYXllclJlZiBoaWdobGln
aHRMYXllciA9IERESGlnaGxpZ2h0R2V0TGF5ZXJXaXRoQ29udGV4dChtX2N1cnJlbnRIaWdobGln
aHQuZ2V0KCksIGNnQ29udGV4dCk7CisgICAgQ0dSZWN0IGhpZ2hsaWdodEJvdW5kaW5nUmVjdCA9
IERESGlnaGxpZ2h0R2V0Qm91bmRpbmdSZWN0KG1fY3VycmVudEhpZ2hsaWdodC5nZXQoKSk7Cisg
ICAgCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29u
dGV4dCk7CisKKyAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKHRvRmxvYXRTaXplKGhpZ2hs
aWdodEJvdW5kaW5nUmVjdC5vcmlnaW4pKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoRmxv
YXRTaXplKDEsIC0xKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZShGbG9hdFNpemUo
MCwgLWhpZ2hsaWdodEJvdW5kaW5nUmVjdC5zaXplLmhlaWdodCkpOworICAgIAorICAgIENHUmVj
dCBoaWdobGlnaHREcmF3UmVjdCA9IGhpZ2hsaWdodEJvdW5kaW5nUmVjdDsKKyAgICBoaWdobGln
aHREcmF3UmVjdC5vcmlnaW4ueCA9IDA7CisgICAgaGlnaGxpZ2h0RHJhd1JlY3Qub3JpZ2luLnkg
PSAwOworICAgIAorICAgIENHQ29udGV4dERyYXdMYXllckluUmVjdChjZ0NvbnRleHQsIGhpZ2hs
aWdodERyYXdSZWN0LCBoaWdobGlnaHRMYXllcik7Cit9CisgICAgCitib29sIFNlbGVjdGlvbk92
ZXJsYXlDb250cm9sbGVyOjptb3VzZUV2ZW50KFBhZ2VPdmVybGF5KiwgY29uc3QgV2ViTW91c2VF
dmVudCYgZXZlbnQpCit7CisgICAgbV9tb3VzZVBvc2l0aW9uID0gbV93ZWJQYWdlLT5jb3JlUGFn
ZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnJvb3RWaWV3VG9Db250ZW50cyhldmVudC5wb3NpdGlv
bigpKTsKKworICAgIGJvb2wgbW91c2VXYXNPdmVySGlnaGxpZ2h0ID0gbV9tb3VzZUlzT3Zlckhp
Z2hsaWdodDsKKyAgICBCb29sZWFuIG9uQnV0dG9uID0gZmFsc2U7CisgICAgbV9tb3VzZUlzT3Zl
ckhpZ2hsaWdodCA9IG1fY3VycmVudEhpZ2hsaWdodCA/IERESGlnaGxpZ2h0UG9pbnRJc09uSGln
aGxpZ2h0KG1fY3VycmVudEhpZ2hsaWdodC5nZXQoKSwgKENHUG9pbnQpbV9tb3VzZVBvc2l0aW9u
LCAmb25CdXR0b24pIDogZmFsc2U7CisKKyAgICBpZiAobW91c2VXYXNPdmVySGlnaGxpZ2h0ICE9
IG1fbW91c2VJc092ZXJIaWdobGlnaHQpCisgICAgICAgIG1fc2VsZWN0aW9uT3ZlcmxheS0+c2V0
TmVlZHNEaXNwbGF5KCk7CisKKyAgICAvLyBJZiB0aGlzIGV2ZW50IGhhcyBub3RoaW5nIHRvIGRv
IHdpdGggdGhlIGxlZnQgYnV0dG9uLCBpdCBjbGVhcnMgdGhlIGN1cnJlbnQgbW91c2UgZG93biB0
cmFja2luZyBhbmQgd2UncmUgZG9uZSBwcm9jZXNzaW5nIGl0LgorICAgIGlmIChldmVudC5idXR0
b24oKSAhPSBXZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uKSB7CisgICAgICAgIG1fbW91c2VJc0Rv
d25PbkJ1dHRvbiA9IGZhbHNlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKCFtX2N1cnJlbnRIaWdobGlnaHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IENoZWNrIGFuZCBzZWUgaWYgdGhlIG1vdXNlIHdlbnQgdXAgYW5kIHdlIGhhdmUgYSBjdXJyZW50
IG1vdXNlIGRvd24gaGlnaGxpZ2h0IGJ1dHRvbi4KKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFdl
YkV2ZW50OjpNb3VzZVVwKSB7CisgICAgICAgIGJvb2wgbW91c2VXYXNEb3duT25CdXR0b24gPSBt
X21vdXNlSXNEb3duT25CdXR0b247CisgICAgICAgIG1fbW91c2VJc0Rvd25PbkJ1dHRvbiA9IGZh
bHNlOworCisgICAgICAgIC8vIElmIHRoZSBtb3VzZSBsaWZ0ZWQgd2hpbGUgc3RpbGwgb3ZlciB0
aGUgaGlnaGxpZ2h0IGJ1dHRvbiB0aGF0IGl0IHdlbnQgZG93biBvbiwgdGhlbiB0aGF0IGlzIGEg
Y2xpY2suCisgICAgICAgIGlmIChtX21vdXNlSXNPdmVySGlnaGxpZ2h0ICYmIG9uQnV0dG9uICYm
IG1vdXNlV2FzRG93bk9uQnV0dG9uKSB7CisgICAgICAgICAgICBoYW5kbGVDbGljayhtX21vdXNl
UG9zaXRpb24pOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgLy8gQ2hlY2sgYW5kIHNl
ZSBpZiB0aGUgbW91c2UgbW92ZWQgd2l0aGluIHRoZSBjb25maW5lcyBvZiB0aGUgREQgaGlnaGxp
Z2h0IGJ1dHRvbi4KKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZU1vdmUp
IHsKKyAgICAgICAgLy8gTW92aW5nIHdpdGggdGhlIG1vdXNlIGJ1dHRvbiBkb3duIGlzIG9rYXkg
YXMgbG9uZyBhcyB0aGUgbW91c2UgbmV2ZXIgbGVhdmVzIHRoZSBoaWdobGlnaHQgYnV0dG9uLgor
ICAgICAgICBpZiAobV9tb3VzZUlzT3ZlckhpZ2hsaWdodCAmJiBvbkJ1dHRvbikKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgIG1fbW91c2VJc0Rvd25PbkJ1dHRvbiA9IGZhbHNl
OworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICAvLyBD
aGVjayBhbmQgc2VlIGlmIHRoZSBtb3VzZSB3ZW50IGRvd24gb3ZlciBhIEREIGhpZ2hsaWdodCBi
dXR0b24uCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKSB7Cisg
ICAgICAgIGlmIChtX21vdXNlSXNPdmVySGlnaGxpZ2h0ICYmIG9uQnV0dG9uKSB7CisgICAgICAg
ICAgICBtX21vdXNlSXNEb3duT25CdXR0b24gPSB0cnVlOworCisgICAgICAgICAgICAvLyBGSVhN
RTogV2UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nLCBidXQgU09GVF9MSU5LIGlzbid0IHdvcmtp
bmcgZm9yIHRoaXMgbWV0aG9kLgorICAgICAgICAgICAgLy8gRERIaWdobGlnaHRTZXRCdXR0b25Q
cmVzc2VkKG1fY3VycmVudEhpZ2hsaWdodC5nZXQoKSwgdHJ1ZSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIG1fc2VsZWN0aW9uT3ZlcmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBTZWxlY3Rpb25PdmVy
bGF5Q29udHJvbGxlcjo6aGFuZGxlQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50
KQoreworICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhlIGNsaWNrIGhlcmUuCit9CisgICAgCit2b2lk
IFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpjbGVhckhpZ2hsaWdodCgpCit7CisgICAgbV9j
dXJyZW50SGlnaGxpZ2h0LmNsZWFyKCk7CisgICAgbV9tb3VzZUlzT3ZlckhpZ2hsaWdodCA9IGZh
bHNlOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
U0VSVklDRV9DT05UUk9MUykKKwo=
</data>
<flag name="review"
          id="254592"
          type_id="1"
          status="-"
          setter="beidson"
    />
    <flag name="commit-queue"
          id="254593"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230200</attachid>
            <date>2014-04-25 14:23:09 -0700</date>
            <delta_ts>2014-04-25 15:22:46 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>42992</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZTk1OGRkLi5mYjcwYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTQtMDQtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBhIHNlbGVjdGlvbiBvdmVybGF5LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY3
Mjc3OTc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMjAw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIChXSzIgZmVhdHVyZSBpbiBkZXZlbG9wbWVudCkuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgQWRkIGEgU2VsZWN0aW9uUmVj
dEdhdGh0ZXJlciBjbGFzcy4KKyAgICAgICAgSXQgY3JlYXRlcyBhIE5vdGlmaWVyIChnaXZlbiBh
IFJlbmRlclZpZXcpIHRoZW4gYWNjZXB0cyBSZWN0cyBmcm9tIHRoZSBSZW5kZXJWaWV3LgorICAg
ICAgICBXaGVuIHRoZSBOb3RpZmllciBpcyBkZXN0cm95ZWQsIHRoZSBhcHByb3ByaWF0ZSBFZGl0
b3JDbGllbnQgaXMgbm90aWZpZWQgb2YgdGhlIGdhdGhlcmVkIHJlY3RzLgorICAgICAgICAqIGVk
aXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OlNlbGVjdGlvblJlY3RHYXRoZXJlcik6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmFkZFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0aW9uUmVjdEdhdGhlcmVyOjphZGRSZWN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6Ok5vdGlmaWVyOjpOb3RpZmllcik6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6Ok5vdGlmaWVyOjp+Tm90aWZpZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpjbGVhckFuZENyZWF0ZU5vdGlm
aWVyKToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5oOiBBZGRlZC4K
KworICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnQ6OnNlbGVjdGlvblJlY3RzRGlkQ2hhbmdlKToKKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OlJlbmRlclZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKTogQ2xlYXIg
dGhlIGdhdGhlcmVy4oCZcyByZWN0cyB0aGVuIGNyZWF0ZSBhIE5vdGlmaWVyLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVmlldzo6c2V0U3VidHJlZVNlbGVjdGlvbik6IEdpdmUgYWxsIHRoZSBz
ZWxlY3Rpb24gcmVjdHMgdG8gYmUgcGFpbnRlZCB0bworICAgICAgICAgIHRoZSBTZWxlY3Rpb25S
ZWN0R2F0aGVyZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKwogMjAxNC0w
NC0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTY3Jv
bGxpbmdDb29yZGluYXRvciBpcyB1bmF3YXJlIG9mIHRvcENvbnRlbnRJbnNldApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJiNzY1
NmYuLmQ5YTA4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE4MTcsNiArMTgxNyw4IEBACiAJCTUxMzI3RDYxMTFBMzNBMkIw
MDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEzMjdENUYxMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVu
dC5jcHAgKi87IH07CiAJCTUxM0YxNDUzMEFCNjM0QzQwMDA5NERERiAvKiBJY29uTG9hZGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0YxNDUx
MEFCNjM0QzQwMDA5NERERiAvKiBJY29uTG9hZGVyLmNwcCAqLzsgfTsKIAkJNTEzRjE0NTQwQUI2
MzRDNDAwMDk0RERGIC8qIEljb25Mb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0YxNDUyMEFCNjM0QzQwMDA5NERERiAvKiBJY29uTG9hZGVy
LmggKi87IH07CisJCTUxNDA1Qzg4MTkwQjAxNDQwMDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0
aGVyZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE0MDVDODYxOTBCMDE0NDAwNzU0Rjk0IC8qIFNlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAgKi87
IH07CisJCTUxNDA1Qzg5MTkwQjAxNDQwMDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0aGVyZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDA1Qzg3
MTkwQjAxNDQwMDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0aGVyZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRCM0Y3MzBDNzIyMDQ3MDAw
NTMwREYgLyogRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE0QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRCM0Y3NjBD
NzIyMDU1MDAwNTMwREYgLyogRmlsZVN5c3RlbU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEIzRjc1MEM3MjIwNTUwMDA1MzBERiAvKiBGaWxl
U3lzdGVtTWFjLm1tICovOyB9OwogCQk1MTRCQzgzRjE2MUNGMDRBMDA0RDUyRjQgLyogUmVzb3Vy
Y2VCdWZmZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTRCQzgzRDE2MUNGMDQzMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIubW0gKi87IH07CkBA
IC04ODA4LDYgKzg4MTAsOCBAQAogCQk1MTMyN0Q1RjExQTMzQTJCMDA0RjlENjUgLyogU2lua0Rv
Y3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbmtEb2N1
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxM0YxNDUxMEFCNjM0QzQw
MDA5NERERiAvKiBJY29uTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJY29uTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEz
RjE0NTIwQUI2MzRDNDAwMDk0RERGIC8qIEljb25Mb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEljb25Mb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTE0MDVDODYxOTBCMDE0NDAwNzU0Rjk0IC8qIFNlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3Rpb25SZWN0R2F0aGVy
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTQwNUM4NzE5MEIwMTQ0MDA3
NTRGOTQgLyogU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNlbGVjdGlvblJlY3RHYXRoZXJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTRCM0Y3MjBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNEIzRjc1MEM3MjIwNTUwMDA1MzBERiAvKiBGaWxlU3lzdGVtTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbU1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0QkM4M0QxNjFDRjA0MzAwNEQ1MkY0
IC8qIFJlc291cmNlQnVmZmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUmVzb3VyY2VCdWZmZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NzE5MCw2ICsxNzE5NCw4IEBACiAJCQkJQTg5Q0NDNTEwRjQ0RTk4MTAwQjVEQTEwIC8qIFJlcGxh
Y2VOb2RlV2l0aFNwYW5Db21tYW5kLmggKi8sCiAJCQkJOTMzMDlEQkEwOTlFNjQ5MTAwNTZFNTgx
IC8qIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCAqLywKIAkJCQk5MzMwOURCQjA5OUU2NDkx
MDA1NkU1ODEgLyogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCAqLywKKwkJCQk1MTQwNUM4NjE5
MEIwMTQ0MDA3NTRGOTQgLyogU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcCAqLywKKwkJCQk1MTQw
NUM4NzE5MEIwMTQ0MDA3NTRGOTQgLyogU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggKi8sCiAJCQkJ
OTMzMDlEQzAwOTlFNjQ5MTAwNTZFNTgxIC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcCAq
LywKIAkJCQk5MzMwOURDMTA5OUU2NDkxMDA1NkU1ODEgLyogU2V0Tm9kZUF0dHJpYnV0ZUNvbW1h
bmQuaCAqLywKIAkJCQlCOERCREI0NzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29t
bWFuZC5jcHAgKi8sCkBAIC0yMzY0Miw2ICsyMzY0OCw3IEBACiAJCQkJODVFNzExQzYwQUM1RDUz
NTAwNTMyNzBGIC8qIERPTUhUTUxTZWxlY3RFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1OUE5QzRGMEFBNUUzQkQwMEI2OTRCMiAvKiBET01IVE1MU3R5bGVFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFDNzBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTFN0
eWxlRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTQwNUM4OTE5MEIwMTQ0
MDA3NTRGOTQgLyogU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NURGODIxRDBBQTc4NDlFMDA0ODZBRDcgLyogRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1RTcxMUM4MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MVGFi
bGVDYXB0aW9uRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NURGODIxRjBB
QTc4NDlFMDA0ODZBRDcgLyogRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LApAQCAtMjg1MjAsNiArMjg1MjcsNyBAQAogCQkJCUZEQjE3MDA1MTRBMkJBQjIwMEEyQjVEOSAv
KiBNdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCNDkw
QTQ0RUZDNzAwRjk5MkUwIC8qIE11dGF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzZGMDkwMEUxNDMyN0I2MTAwNjg1ODQ5IC8qIE11dGF0aW9uT2JzZXJ2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTE0MDVDODgxOTBCMDE0NDAwNzU0Rjk0IC8qIFNlbGVjdGlvblJlY3RHYXRo
ZXJlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlENkU1MjhBMzE0OUE5MjZEMDBFRkUxRjMgLyog
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDZF
Mjc2QUYxNDYzNzQ1NTAwMUQyODBBIC8qIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzZGMDhGQkMxNDMwRkU4RjAwNjg1ODQ5IC8qIE11dGF0aW9u
UmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
ZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmM0ODg2ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nl
bGVjdGlvblJlY3RHYXRoZXJlci5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZWxlY3Rpb25SZWN0R2F0aGVyZXIuaCIKKwor
I2luY2x1ZGUgIkVkaXRvci5oIgorI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0Vf
Q09OVFJPTFMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2VsZWN0aW9uUmVjdEdhdGhlcmVy
OjpTZWxlY3Rpb25SZWN0R2F0aGVyZXIoUmVuZGVyVmlldyYgcmVuZGVyVmlldykKKyAgICA6IG1f
cmVuZGVyVmlldyhyZW5kZXJWaWV3KQoreworfQorCit2b2lkIFNlbGVjdGlvblJlY3RHYXRoZXJl
cjo6YWRkUmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KQoreworICAgIGlmICghcmVjdC5pc0Vt
cHR5KCkpCisgICAgICAgIG1fcmVjdHMuYXBwZW5kKHJlY3QpOworfQorCit2b2lkIFNlbGVjdGlv
blJlY3RHYXRoZXJlcjo6YWRkUmVjdHMoY29uc3QgR2FwUmVjdHMmIHJlY3RzKQoreworICAgIGlm
ICghcmVjdHMubGVmdCgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZWN0cy5hcHBlbmQocmVjdHMu
bGVmdCgpKTsKKyAgICBpZiAoIXJlY3RzLnJpZ2h0KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jl
Y3RzLmFwcGVuZChyZWN0cy5yaWdodCgpKTsKKyAgICBpZiAoIXJlY3RzLmNlbnRlcigpLmlzRW1w
dHkoKSkKKyAgICAgICAgbV9yZWN0cy5hcHBlbmQocmVjdHMuY2VudGVyKCkpOworfQorCitTZWxl
Y3Rpb25SZWN0R2F0aGVyZXI6Ok5vdGlmaWVyOjpOb3RpZmllcihTZWxlY3Rpb25SZWN0R2F0aGVy
ZXImIGdhdGhlcmVyKQorICAgIDogbV9nYXRoZXJlcihnYXRoZXJlcikKK3sKK30KKworU2VsZWN0
aW9uUmVjdEdhdGhlcmVyOjpOb3RpZmllcjo6fk5vdGlmaWVyKCkKK3sKKyAgICBpZiAoRWRpdG9y
Q2xpZW50KiBjbGllbnQgPSBtX2dhdGhlcmVyLm1fcmVuZGVyVmlldy52aWV3KCkuZnJhbWUoKS5l
ZGl0b3IoKS5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5zZWxlY3Rpb25SZWN0c0RpZENoYW5n
ZShtX2dhdGhlcmVyLm1fcmVjdHMpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U2VsZWN0aW9uUmVj
dEdhdGhlcmVyOjpOb3RpZmllcj4gU2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpjbGVhckFuZENyZWF0
ZU5vdGlmaWVyKCkKK3sKKyAgICBtX3JlY3RzLmNsZWFyKCk7CisKKyAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxOb3RpZmllcj4oKnRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjkwODU3ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFNlbGVjdGlvblJlY3RHYXRoZXJlcl9oCisjZGVmaW5lIFNlbGVjdGlvblJl
Y3RHYXRoZXJlcl9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBMYXlvdXRSZWN0OworY2xhc3MgUmVuZGVyVmlldzsKKworc3Ry
dWN0IEdhcFJlY3RzOworCitjbGFzcyBTZWxlY3Rpb25SZWN0R2F0aGVyZXIgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFNlbGVjdGlvblJlY3RHYXRoZXJlcik7CisKK3B1YmxpYzoKKyAgICBT
ZWxlY3Rpb25SZWN0R2F0aGVyZXIoUmVuZGVyVmlldyYpOworCisgICAgdm9pZCBhZGRSZWN0KGNv
bnN0IExheW91dFJlY3QmKTsKKyAgICB2b2lkIGFkZFJlY3RzKGNvbnN0IEdhcFJlY3RzJik7CisK
KyAgICBjbGFzcyBOb3RpZmllciB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5vdGlm
aWVyKTsKKyAgICBwdWJsaWM6CisgICAgICAgIE5vdGlmaWVyKFNlbGVjdGlvblJlY3RHYXRoZXJl
ciYpOworICAgICAgICB+Tm90aWZpZXIoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFNlbGVj
dGlvblJlY3RHYXRoZXJlciYgbV9nYXRoZXJlcjsKKyAgICB9OworCisgICAgc3RkOjp1bmlxdWVf
cHRyPE5vdGlmaWVyPiBjbGVhckFuZENyZWF0ZU5vdGlmaWVyKCk7CisgICAgCitwcml2YXRlOgor
ICAgIFJlbmRlclZpZXcmIG1fcmVuZGVyVmlldzsKKyAgICBWZWN0b3I8TGF5b3V0UmVjdD4gbV9y
ZWN0czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX0NPTlRST0xTKQorI2VuZGlmIC8vIFNlbGVjdGlvblJlY3RHYXRoZXJlcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCAxZGM4NTk1Li5mZjk1NTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3MgRWxlbWVudDsKIGNs
YXNzIEZyYW1lOwogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBLZXlib2FyZEV2ZW50OworY2xh
c3MgTGF5b3V0UmVjdDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKQEAgLTE4Miw2ICsxODMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZWxl
Y3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxSYW5n
ZT4+JikgeyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorICAgIHZp
cnR1YWwgdm9pZCBzZWxlY3Rpb25SZWN0c0RpZENoYW5nZShjb25zdCBWZWN0b3I8TGF5b3V0UmVj
dD4mKSB7IH0KKyNlbmRpZgorCiAgICAgLy8gU3VwcG9ydCBmb3IgZ2xvYmFsIHNlbGVjdGlvbnMs
IHVzZWQgb24gcGxhdGZvcm1zIGxpa2UgdGhlIFggV2luZG93IFN5c3RlbSB0aGF0IHRyZWF0CiAg
ICAgLy8gc2VsZWN0aW9uIGFzIGEgdHlwZSBvZiBjbGlwYm9hcmQuCiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA5YzZkNGFjLi5hYzIwMTBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC03Miw2ICs3Miw5IEBAIFJlbmRl
clZpZXc6OlJlbmRlclZpZXcoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgLCBtX2hhc1NvZnR3YXJlRmls
dGVycyhmYWxzZSkKICNlbmRpZgorI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorICAgICwg
bV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIoKnRoaXMpCisjZW5kaWYKIHsKICAgICBzZXRJc1JlbmRl
clZpZXcoKTsKIApAQCAtNzYwLDYgKzc2MywxMiBAQCB2b2lkIFJlbmRlclZpZXc6OnNldE1heGlt
YWxPdXRsaW5lU2l6ZShpbnQgbykKIAogdm9pZCBSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVu
ZGVyT2JqZWN0KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGVuZCwgaW50IGVu
ZFBvcywgU2VsZWN0aW9uUmVwYWludE1vZGUgYmxvY2tSZXBhaW50TW9kZSkKIHsKKyNpZiBFTkFC
TEUoU0VSVklDRV9DT05UUk9MUykKKyAgICAvLyBDbGVhciB0aGUgY3VycmVudCByZWN0cyBhbmQg
Y3JlYXRlIGEgbm90aWZpZXIgZm9yIHRoZSBuZXcgcmVjdHMgd2UgYXJlIGFib3V0IHRvIGdhdGhl
ci4KKyAgICAvLyBUaGUgTm90aWZpZXIgdXBkYXRlcyB0aGUgRWRpdG9yIHdoZW4gaXQgZ29lcyBv
dXQgb2Ygc2NvcGUgYW5kIGlzIGRlc3Ryb3llZC4KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VsZWN0
aW9uUmVjdEdhdGhlcmVyOjpOb3RpZmllcj4gcmVjdE5vdGlmaWVyID0gbV9zZWxlY3Rpb25SZWN0
R2F0aGVyZXIuY2xlYXJBbmRDcmVhdGVOb3RpZmllcigpOworI2VuZGlmIC8vIEVOQUJMRShTRVJW
SUNFX0NPTlRST0xTKQorCiAgICAgLy8gTWFrZSBzdXJlIGJvdGggb3VyIHN0YXJ0IGFuZCBlbmQg
b2JqZWN0cyBhcmUgZGVmaW5lZC4KICAgICAvLyBDaGVjayB3d3cubXNuYmMuY29tIGFuZCB0cnkg
Y2xpY2tpbmcgYXJvdW5kIHRvIGZpbmQgdGhlIGNhc2Ugd2hlcmUgdGhpcyBoYXBwZW5lZC4KICAg
ICBpZiAoKHN0YXJ0ICYmICFlbmQpIHx8IChlbmQgJiYgIXN0YXJ0KSkKQEAgLTkzMyw3ICs5NDIs
MTQgQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRTdWJ0cmVlU2VsZWN0aW9uKFNlbGVjdGlvblN1YnRy
ZWVSb290JiByb290LCBSZW5kZXJPYmplY3QqIHMKICAgICBvID0gc3RhcnQ7CiAgICAgd2hpbGUg
KG8gJiYgbyAhPSBzdG9wKSB7CiAgICAgICAgIGlmICgoby0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkg
fHwgbyA9PSBzdGFydCB8fCBvID09IGVuZCkgJiYgby0+c2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxl
Y3Rpb25Ob25lKSB7Ci0gICAgICAgICAgICBuZXdTZWxlY3RlZE9iamVjdHMuc2V0KG8sIHN0ZDo6
bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4obywgdHJ1ZSkpOworICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+IHNlbGVjdGlvbkluZm8gPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KG8sIHRydWUpOworCisjaWYgRU5BQkxF
KFNFUlZJQ0VfQ09OVFJPTFMpCisgICAgICAgICAgICBtX3NlbGVjdGlvblJlY3RHYXRoZXJlci5h
ZGRSZWN0KHNlbGVjdGlvbkluZm8tPnJlY3QoKSk7CisjZW5kaWYKKworICAgICAgICAgICAgbmV3
U2VsZWN0ZWRPYmplY3RzLnNldChvLCBzdGQ6Om1vdmUoc2VsZWN0aW9uSW5mbykpOworCiAgICAg
ICAgICAgICBSZW5kZXJCbG9jayogY2IgPSBvLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAg
ICAgIHdoaWxlIChjYiAmJiAhY2ItPmlzUmVuZGVyVmlldygpKSB7CiAgICAgICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG5l
d1NlbGVjdGVkQmxvY2tzLmFkZChjYiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwpAQCAtOTQx
LDYgKzk1NywxMCBAQCB2b2lkIFJlbmRlclZpZXc6OnNldFN1YnRyZWVTZWxlY3Rpb24oU2VsZWN0
aW9uU3VidHJlZVJvb3QmIHJvb3QsIFJlbmRlck9iamVjdCogcwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oY2IpOwogICAgICAgICAgICAgICAgIGNiID0gY2ItPmNv
bnRhaW5pbmdCbG9jaygpOworCisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisgICAgICAg
ICAgICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIuYWRkUmVjdHMoYmxvY2tJbmZvLT5yZWN0
cygpKTsKKyNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDZiYjM4MDkuLmFlMzE4MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAorI2lmIEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKQorI2luY2x1ZGUgIlNlbGVjdGlvblJlY3RHYXRoZXJlci5oIgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvd1RocmVhZENvbnRyb2xsZXI7CkBAIC0z
NTQsNiArMzU4LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8UmVuZGVyRWxl
bWVudCo+IG1fcmVuZGVyZXJzV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9uOworCisjaWYgRU5BQkxF
KFNFUlZJQ0VfQ09OVFJPTFMpCisgICAgU2VsZWN0aW9uUmVjdEdhdGhlcmVyIG1fc2VsZWN0aW9u
UmVjdEdhdGhlcmVyOworI2VuZGlmCiB9OwogCiBSRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVu
ZGVyVmlldywgaXNSZW5kZXJWaWV3KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTE5NzUxNS4uZWI3ZjBkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE0LTA0LTI1ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBzZWxlY3Rpb24gb3ZlcmxheS4KKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2NzI3Nzk3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnNlbGVjdGlvblJlY3RzRGlkQ2hh
bmdlKTogUGFzcyB0aGUgbmV3IHNlbGVjdGlvbiByZWN0cyBvbgorICAgICAgICAgIHRvIHRoZSBz
ZWxlY3Rpb24gb3ZlcmxheSBjb250cm9sbGVyLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OlNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OmNyZWF0ZU92
ZXJsYXlJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlNlbGVjdGlvbk92ZXJsYXlDb250cm9s
bGVyOjpkZXN0cm95T3ZlcmxheSk6CisgICAgICAgIChXZWJLaXQ6OlNlbGVjdGlvbk92ZXJsYXlD
b250cm9sbGVyOjpwYWdlT3ZlcmxheURlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OlNlbGVj
dGlvbk92ZXJsYXlDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OlNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpkaWRNb3ZlVG9XZWJQYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OnNlbGVjdGlvblJlY3RzRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OmRy
YXdSZWN0KToKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6Om1v
dXNlRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9TZWxlY3Rpb25PdmVybGF5
Q29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U2VsZWN0aW9uT3ZlcmxheUNv
bnRyb2xsZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9TZWxl
Y3Rpb25PdmVybGF5Q29udHJvbGxlck1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlNl
bGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpkcmF3UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlNl
bGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjptb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6
U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OmhhbmRsZUNsaWNrKToKKyAgICAgICAgKFdlYktp
dDo6U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OmNsZWFySGlnaGxpZ2h0KToKKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6c2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMTQtMDQtMjUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFBsdWdpbiBwcm9jZXNzIGNyYXNo
ZXMgd2l0aCBHVEsyIHdpbmRvd2VkIHBsdWdpbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMWFjMmIxLi5iNDAyOTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC05MDcsNiArOTA3LDkgQEAKIAkJNTFFMzUyMDUxODBGNUQ0RjAwRTUzQkU5IC8qIERhdGFiYXNl
UHJvY2Vzc01haW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUUzNTIwMzE4MEY1RDRCMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzTWFpbi5tbSAq
LzsgfTsKIAkJNTFFMzUyMDkxODBGNUQ2QjAwRTUzQkU5IC8qIERhdGFiYXNlU2VydmljZUVudHJ5
UG9pbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUUzNTIwODE4MEY1RDZCMDBFNTNCRTkgLyogRGF0YWJhc2VTZXJ2aWNlRW50cnlQb2ludC5tbSAq
LzsgfTsKIAkJNTFFM0I2N0YxNkYyNjZCMzAwOTk2OERDIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRl
ck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RTNCNjdFMTZGMjY2QjMwMDk5NjhEQyAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0gKi87
IH07CisJCTUxRUYxMjRFMTkwOTg1MjIwMDhBNjUzMiAvKiBTZWxlY3Rpb25PdmVybGF5Q29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUVGMTI0QzE5MDk4NTIyMDA4QTY1MzIgLyogU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuY3Bw
ICovOyB9OworCQk1MUVGMTI0RjE5MDk4NTIzMDA4QTY1MzIgLyogU2VsZWN0aW9uT3ZlcmxheUNv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRUYxMjREMTkwOTg1MjIwMDhBNjUzMiAvKiBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5o
ICovOyB9OworCQk1MUVGMTI1MTE5MDk4NTMxMDA4QTY1MzIgLyogU2VsZWN0aW9uT3ZlcmxheUNv
bnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUVGMTI1MDE5MDk4NTMxMDA4QTY1MzIgLyogU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xs
ZXJNYWMubW0gKi87IH07CiAJCTUxRUZDMUNGMTUyNEU2MjUwMEM5QTkzOCAvKiBXS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFGQTJENTQxNTIxMTE4NjAwQzFCQTBCIC8qIFdLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTFGMDYwRTAxNjU0MzE3RjAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjA2MERF
MTY1NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggKi87IH07CiAJ
CTUxRjA2MEUxMTY1NDMxODUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwpAQCAtMjc2MSw2ICsyNzY0LDkgQEAKIAkJNTFFMzUyMDcxODBGNUQ2MTAw
RTUzQkU5IC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTM1MjA4MTgwRjVENkIwMEU1M0JFOSAvKiBEYXRhYmFz
ZVNlcnZpY2VFbnRyeVBvaW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRGF0YWJhc2VTZXJ2aWNlRW50cnlQb2ludC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFFM0I2N0UxNkYyNjZCMzAwOTk2OERDIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRl
ck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtS
ZXNvdXJjZUxvYWRlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFFRjEy
NEMxOTA5ODUyMjAwOEE2NTMyIC8qIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlbGVjdGlvbk92ZXJsYXlDb250cm9s
bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFFRjEyNEQxOTA5ODUyMjAw
OEE2NTMyIC8qIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxRUYxMjUwMTkwOTg1MzEwMDhBNjUzMiAvKiBTZWxlY3Rpb25P
dmVybGF5Q29udHJvbGxlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2Fk
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VMb2Fk
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUYw
NjBERTE2NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxRjdEQzRBMTgwQ0M5MzYwMDIxMkNBMyAvKiBjb20uYXBwbGUuV2ViS2l0
LkRhdGFiYXNlcy54cGMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9IHdyYXBwZXIuY2ZidW5kbGU7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGNvbS5h
cHBsZS5XZWJLaXQuRGF0YWJhc2VzLnhwYzsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKQEAgLTUzMjIsNiArNTMyOCw4IEBACiAJCQkJMUE5MEMyMzUxMjY1MDcxNzAwM0U0NEQ0
IC8qIFBhZ2VPdmVybGF5LmggKi8sCiAJCQkJMkQxNDBFQUQxOEYzN0JFMDAwNUU3NUEwIC8qIFBh
Z2VPdmVybGF5Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMkQxNDBFQUUxOEYzN0JFMDAwNUU3NUEw
IC8qIFBhZ2VPdmVybGF5Q29udHJvbGxlci5oICovLAorCQkJCTUxRUYxMjRDMTkwOTg1MjIwMDhB
NjUzMiAvKiBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5jcHAgKi8sCisJCQkJNTFFRjEyNEQx
OTA5ODUyMjAwOEE2NTMyIC8qIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmggKi8sCiAJCQkJ
NTE5RUY1OEYxOEVGNzcyMTAwMDNCN0Y0IC8qIFRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9s
bGVyLmNwcCAqLywKIAkJCQk1MTlFRjU5MDE4RUY3NzIxMDAwM0I3RjQgLyogVGVsZXBob25lTnVt
YmVyT3ZlcmxheUNvbnRyb2xsZXIuaCAqLywKIAkJCQkyRDgxOUI5OTE4NjI3NUIzMDAxRjAzRDEg
LyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgKi8sCkBAIC02MDc3LDYgKzYwODUs
NyBAQAogCQkJCTFBQjE2QUU3MTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250
ZXh0Lm1tICovLAogCQkJCTFBQjE2QURDMTY0ODU5ODQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5oICovLAogCQkJCTFBQjE2QURCMTY0ODU5ODQwMDI5MEQ2MiAvKiBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSAqLywKKwkJCQk1MUVGMTI1MDE5MDk4NTMxMDA4QTY1
MzIgLyogU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0gKi8sCiAJCQkJNTE5RUY1OEQx
OEVGNzcwRDAwMDNCN0Y0IC8qIFRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyTWFjLm1t
ICovLAogCQkJCTFBQUYyNjM3MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5oICovLAogCQkJCTFBQUYyNjM2MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSAqLywKQEAgLTczNTMsNiArNzM2Miw3IEBACiAJCQkJ
Mjk1MDE3MjQxNjJBNDUwNDAwNEE5RDcxIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGNzUwNkI2MTg1OTE2
NTcwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFGNzUwNkI1MTg1OTE2NTQwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQ
bHVnSW5TY3JpcHRXb3JsZEludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUVGMTI0RjE5
MDk4NTIzMDA4QTY1MzIgLyogU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTM3M0NFQUQ2MTg1NDE3QUUwMDhDMzYzRCAvKiBXS05TRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFCOEExRjAxODQwMEIwMDAwRTlBRTY5IC8qIFdLUGFnZUZvcm1DbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTg5RDg1MTYxQTk4OTAwMDBENDZEMyAvKiBXS1dlYlBy
b2Nlc3NQbHVnSW5JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDU0LDYgKzg0NjQsNyBA
QAogCQkJCUJDQUMxMTIwMTJDOTJDMUYwMEIwOEVFRSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94
eUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNjJBNzZCODEyQjFCMjVGMDAwNUYxQjYg
LyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTE3REQ1QzUxODBEQzNFMTAwODE2NjBCIC8qIERhdGFiYXNlUHJvY2Vzc1Byb3h5
TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFFRjEyNTExOTA5ODUzMTAwOEE2NTMyIC8qIFNl
bGVjdGlvbk92ZXJsYXlDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFB
NUQxMTJGNEZCQjAwMzM3QkFCIC8qIFdlYkRyYWdDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQzU3NEEzNzcxMkU2MDk5RDAwMkRGRTk4IC8qIFdlYkRyYWdDbGllbnRNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQlCQ0EwRUZBMDEyMzMyNjQyMDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQ
cm94eS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg1OTcsNiArODYwOCw3IEBACiAJCQkJMzMzNjc2
MkYxMzBDOTk5ODAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMzRjlENUI5MTMxMkYxRUUwMDBENjgzRiAvKiBXZWJSZXNvdXJjZUNhY2hl
TWFuYWdlckNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzMzY3NjU1MTMwQzlFQ0EwMDZD
OURFMiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1MUVGMTI0RTE5MDk4NTIyMDA4QTY1MzIgLyogU2VsZWN0aW9uT3Zlcmxh
eUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzMzNjc2MzUxMzBDOTlCMjAwNkM5
REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzMzNjc2NTcxMzBDOUVDQTAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RTdEM0MxOEMxNTE0
OTAwNUE3MDJBIC8qIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDNiODg0MzMuLjdk
YWQ3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJXZWJFZGl0b3JDbGllbnQuaCIKIAogI2luY2x1ZGUgIkVkaXRvclN0YXRlLmgiCisjaW5j
bHVkZSAiU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJUZWxlcGhvbmVO
dW1iZXJPdmVybGF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC01MzEsNCArNTMyLDExIEBAIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpzZWxlY3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0NoYW5nZWQoY29uc3Qg
VmVjdG9yPFJlZlB0cjxSCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xT
KQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNlbGVjdGlvblJlY3RzRGlkQ2hhbmdlKGNvbnN0IFZl
Y3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMpCit7CisgICAgbV9wYWdlLT5zZWxlY3Rpb25PdmVybGF5
Q29udHJvbGxlcigpLnNlbGVjdGlvblJlY3RzRGlkQ2hhbmdlKHJlY3RzKTsKK30KKyNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAppbmRleCAyNmI1NTVlLi5hODhiNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKQEAgLTE3MCw2ICsxNzAsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTikKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJS
YW5nZXNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+PiYpIG92ZXJy
aWRlOwogI2VuZGlmCisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisgICAgdmlydHVhbCB2
b2lkIHNlbGVjdGlvblJlY3RzRGlkQ2hhbmdlKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpMYXlvdXRS
ZWN0PiYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1NlbGVjdGlvbk92ZXJs
YXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9TZWxl
Y3Rpb25PdmVybGF5Q29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZDNiMjFlOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9TZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxMTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2VsZWN0aW9u
T3ZlcmxheUNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorCisj
aW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworICAgIAor
U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI6OlNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyKFdl
YlBhZ2UqIHdlYlBhZ2UpCisgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKKyAgICAsIG1fc2VsZWN0
aW9uT3ZlcmxheShudWxscHRyKQorICAgICwgbV9tb3VzZUlzRG93bk9uQnV0dG9uKGZhbHNlKQor
ICAgICwgbV9tb3VzZUlzT3ZlckhpZ2hsaWdodChmYWxzZSkKK3sKK30KKwordm9pZCBTZWxlY3Rp
b25PdmVybGF5Q29udHJvbGxlcjo6Y3JlYXRlT3ZlcmxheUlmTmVlZGVkKCkKK3sKKyAgICBpZiAo
bV9zZWxlY3Rpb25PdmVybGF5KSB7CisgICAgICAgIG1fc2VsZWN0aW9uT3ZlcmxheS0+c2V0TmVl
ZHNEaXNwbGF5KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPFBh
Z2VPdmVybGF5PiBvdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSh0aGlzLCBQYWdlT3Zlcmxh
eTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KTsKKyAgICBtX3NlbGVjdGlvbk92ZXJsYXkgPSBvdmVy
bGF5LmdldCgpOworICAgIG1fd2ViUGFnZS0+aW5zdGFsbFBhZ2VPdmVybGF5KG92ZXJsYXkucmVs
ZWFzZSgpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkZhZGUpOworICAgIG1fc2VsZWN0aW9uT3Zl
cmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKK3ZvaWQgU2VsZWN0aW9uT3ZlcmxheUNvbnRy
b2xsZXI6OmRlc3Ryb3lPdmVybGF5KCkKK3sKKyAgICBpZiAoIW1fc2VsZWN0aW9uT3ZlcmxheSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV93ZWJQYWdlLT51bmluc3RhbGxQYWdlT3ZlcmxheSht
X3NlbGVjdGlvbk92ZXJsYXksIFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6RG9Ob3RGYWRlKTsKK30K
Kwordm9pZCBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6cGFnZU92ZXJsYXlEZXN0cm95ZWQo
UGFnZU92ZXJsYXkqKQoreworICAgIC8vIEJlZm9yZSB0aGUgb3ZlcmxheSBpcyBkZXN0cm95ZWQs
IGl0IHNob3VsZCBoYXZlIG1vdmVkIG91dCBvZiB0aGUgV2ViUGFnZSwKKyAgICAvLyBhdCB3aGlj
aCBwb2ludCB3ZSBhbHJlYWR5IGNsZWFyZWQgb3VyIGJhY2sgcG9pbnRlci4KKyAgICBBU1NFUlQo
IW1fc2VsZWN0aW9uT3ZlcmxheSk7Cit9CisKK3ZvaWQgU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xs
ZXI6OndpbGxNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSogd2ViUGFnZSkKK3sK
KyAgICBpZiAod2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fc2VsZWN0
aW9uT3ZlcmxheSk7CisgICAgbV9zZWxlY3Rpb25PdmVybGF5ID0gbnVsbHB0cjsKK30KKwordm9p
ZCBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6ZGlkTW92ZVRvV2ViUGFnZShQYWdlT3Zlcmxh
eSosIFdlYlBhZ2UqKQoreworfQorCit2b2lkIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpz
ZWxlY3Rpb25SZWN0c0RpZENoYW5nZShjb25zdCBWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzKQor
eworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPiAxMDkwCisgICAgY2xlYXJI
aWdobGlnaHQoKTsKKworICAgIG1fY3VycmVudFNlbGVjdGlvblJlY3RzID0gcmVjdHM7CisKKyAg
ICBpZiAobV9jdXJyZW50U2VsZWN0aW9uUmVjdHMuaXNFbXB0eSgpKQorICAgICAgICBkZXN0cm95
T3ZlcmxheSgpOworICAgIGVsc2UKKyAgICAgICAgY3JlYXRlT3ZlcmxheUlmTmVlZGVkKCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWN0cyk7CisjZW5kaWYKK30KKworI2lmICFQTEFURk9S
TShNQUMpCit2b2lkIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOjpkcmF3UmVjdChQYWdlT3Zl
cmxheSosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgU2VsZWN0aW9uT3ZlcmxheUNv
bnRyb2xsZXI6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkqLCBjb25zdCBXZWJNb3VzZUV2ZW50JikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX0NPTlRS
T0xTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1NlbGVj
dGlvbk92ZXJsYXlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42MTFjNTJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1NlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyLmgKQEAgLTAsMCArMSw4
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXJfaAor
CisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisKKyNpbmNsdWRlICJQYWdlT3ZlcmxheS5o
IgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisj
aWYgUExBVEZPUk0oTUFDKQordHlwZWRlZiB2b2lkKiBEREhpZ2hsaWdodFJlZjsKKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBMYXlvdXRSZWN0OworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKyAgICAKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFNlbGVjdGlvbk92ZXJsYXlD
b250cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI+
LCBwcml2YXRlIFBhZ2VPdmVybGF5OjpDbGllbnQgeworcHVibGljOgorCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI+IGNyZWF0ZShXZWJQYWdlKiB3ZWJQ
YWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWxlY3Rpb25PdmVybGF5
Q29udHJvbGxlcih3ZWJQYWdlKSk7CisgICAgfQorCisgICAgdm9pZCBzZWxlY3Rpb25SZWN0c0Rp
ZENoYW5nZShjb25zdCBWZWN0b3I8V2ViQ29yZTo6TGF5b3V0UmVjdD4mKTsKKyAgICB2b2lkIGhh
bmRsZUNsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgCitwcml2YXRlOgorICAg
IFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyKFdlYlBhZ2UqKTsKKworICAgIHZvaWQgY3JlYXRl
T3ZlcmxheUlmTmVlZGVkKCk7CisgICAgdm9pZCBkZXN0cm95T3ZlcmxheSgpOworICAgIAorICAg
IHZvaWQgaGFuZGxlU2VsZWN0aW9uT3ZlcmxheUNsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZU92ZXJsYXlEZXN0cm95ZWQoUGFnZU92ZXJsYXkq
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJs
YXkqLCBXZWJQYWdlKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb1dlYlBh
Z2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRy
YXdSZWN0KFBhZ2VPdmVybGF5KiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgbW91
c2VFdmVudChQYWdlT3ZlcmxheSosIGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBvdmVycmlkZTsKKwor
ICAgIHZvaWQgY2xlYXJIaWdobGlnaHQoKTsKKworICAgIFJlZlB0cjxXZWJQYWdlPiBtX3dlYlBh
Z2U7CisgICAgUGFnZU92ZXJsYXkqIG1fc2VsZWN0aW9uT3ZlcmxheTsKKyAgICBWZWN0b3I8V2Vi
Q29yZTo6TGF5b3V0UmVjdD4gbV9jdXJyZW50U2VsZWN0aW9uUmVjdHM7CisKKyAgICBXZWJDb3Jl
OjpJbnRQb2ludCBtX21vdXNlUG9zaXRpb247CisgICAgYm9vbCBtX21vdXNlSXNEb3duT25CdXR0
b247CisgICAgYm9vbCBtX21vdXNlSXNPdmVySGlnaGxpZ2h0OworCisjaWYgUExBVEZPUk0oTUFD
KQorICAgIFJldGFpblB0cjxEREhpZ2hsaWdodFJlZj4gbV9jdXJyZW50SGlnaGxpZ2h0OworI2Vu
ZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJW
SUNFX0NPTlRST0xTKQorI2VuZGlmIC8vIFNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkYTRm
MDQ0Li4wOTE1MWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiUGx1Z2luUHJveHkuaCIKICNp
bmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiUHJpbnRJbmZvLmgiCisjaW5jbHVkZSAi
U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIK
ICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5o
IgpAQCAtNDU2MSw2ICs0NTYyLDE2IEBAIFRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVy
JiBXZWJQYWdlOjp0ZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlcigpCiB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xs
ZXImIFdlYlBhZ2U6OnNlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyKCkKK3sKKyAgICBpZiAoIW1f
c2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIpCisgICAgICAgIG1fc2VsZWN0aW9uT3ZlcmxheUNv
bnRyb2xsZXIgPSBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjo6Y3JlYXRlKHRoaXMpOworCisg
ICAgcmV0dXJuICptX3NlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyOworfQorI2VuZGlmCisKIHZv
aWQgV2ViUGFnZTo6ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQog
ewogICAgIG1fcGFnZU92ZXJsYXlDb250cm9sbGVyLmRpZFNjcm9sbEZyYW1lKGZyYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGZmMmYzNzAu
Ljk3OTM1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtMTQwLDYgKzE0MCw3IEBAIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcjsKIGNsYXNzIFBhZ2VCYW5uZXI7CiBjbGFzcyBQYWdlT3ZlcmxheTsKIGNsYXNzIFBs
dWdpblZpZXc7CitjbGFzcyBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlcjsKIGNsYXNzIFNlc3Np
b25TdGF0ZTsKIGNsYXNzIFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm87CiBjbGFzcyBXZWJD
b2xvckNob29zZXI7CkBAIC03ODQsNiArNzg1LDkgQEAgcHVibGljOgogICAgIFRlbGVwaG9uZU51
bWJlck92ZXJsYXlDb250cm9sbGVyJiB0ZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlcigp
OwogICAgIHZvaWQgaGFuZGxlVGVsZXBob25lTnVtYmVyQ2xpY2soY29uc3QgU3RyaW5nJiBudW1i
ZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0VSVklD
RV9DT05UUk9MUykKKyAgICBTZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlciYgc2VsZWN0aW9uT3Zl
cmxheUNvbnRyb2xsZXIoKTsKKyNlbmRpZgogCiAgICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxPZmZz
ZXRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSopOwogCkBAIC0xMjAxLDYgKzEyMDUsOSBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKICAgICBSZWZQdHI8
VGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXI+IG1fdGVsZXBob25lTnVtYmVyT3Zlcmxh
eUNvbnRyb2xsZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKyAgICBS
ZWZQdHI8U2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXI+IG1fc2VsZWN0aW9uT3ZlcmxheUNvbnRy
b2xsZXI7CisjZW5kaWYKIAogICAgIFBhZ2VPdmVybGF5Q29udHJvbGxlciBtX3BhZ2VPdmVybGF5
Q29udHJvbGxlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1NlbGVjdGlvbk92ZXJsYXlDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9TZWxlY3Rpb25PdmVybGF5Q29udHJvbGxlck1hYy5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTk3NTMyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9TZWxlY3Rpb25P
dmVybGF5Q29udHJvbGxlck1hYy5tbQpAQCAtMCwwICsxLDE3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2VsZWN0aW9uT3ZlcmxheUNvbnRyb2xsZXIuaCIK
KworI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorCisjaW1wb3J0IDxXZWJDb3JlL0ZyYW1l
Vmlldy5oPgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvTWFpbkZyYW1lLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CisKKyNp
ZiBfX2hhc19pbmNsdWRlKDxEYXRhRGV0ZWN0b3JzL0RESGlnaGxpZ2h0RHJhd2luZy5oPikKKyNp
bXBvcnQgPERhdGFEZXRlY3RvcnMvRERIaWdobGlnaHREcmF3aW5nLmg+CisjZWxzZQordHlwZWRl
ZiB2b2lkKiBEREhpZ2hsaWdodFJlZjsKKyNlbmRpZgorCisjaWYgX19oYXNfaW5jbHVkZSg8RGF0
YURldGVjdG9ycy9EREhpZ2hsaWdodERyYXdpbmdfUHJpdmF0ZS5oPikKKyNpbXBvcnQgPERhdGFE
ZXRlY3RvcnMvRERIaWdobGlnaHREcmF3aW5nX1ByaXZhdGUuaD4KKyNlbmRpZgorCitTT0ZUX0xJ
TktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwoRGF0YURldGVjdG9ycykKK1NPRlRfTElOSyhE
YXRhRGV0ZWN0b3JzLCBEREhpZ2hsaWdodENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJlY3QsIERE
SGlnaGxpZ2h0UmVmLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDR1JlY3QgKiByZWN0cywg
Q0ZJbmRleCBjb3VudCwgQ0dSZWN0IGdsb2JhbFZpc2libGVSZWN0LCBCb29sZWFuIHdpdGhBcnJv
dyksIChhbGxvY2F0b3IsIHJlY3RzLCBjb3VudCwgZ2xvYmFsVmlzaWJsZVJlY3QsIHdpdGhBcnJv
dykpCitTT0ZUX0xJTksoRGF0YURldGVjdG9ycywgRERIaWdobGlnaHRHZXRMYXllcldpdGhDb250
ZXh0LCBDR0xheWVyUmVmLCAoRERIaWdobGlnaHRSZWYgaGlnaGxpZ2h0LCBDR0NvbnRleHRSZWYg
Y29udGV4dCksIChoaWdobGlnaHQsIGNvbnRleHQpKQorU09GVF9MSU5LKERhdGFEZXRlY3RvcnMs
IERESGlnaGxpZ2h0R2V0Qm91bmRpbmdSZWN0LCBDR1JlY3QsIChEREhpZ2hsaWdodFJlZiBoaWdo
bGlnaHQpLCAoaGlnaGxpZ2h0KSkKK1NPRlRfTElOSyhEYXRhRGV0ZWN0b3JzLCBEREhpZ2hsaWdo
dFBvaW50SXNPbkhpZ2hsaWdodCwgQm9vbGVhbiwgKERESGlnaGxpZ2h0UmVmIGhpZ2hsaWdodCwg
Q0dQb2ludCBwb2ludCwgQm9vbGVhbiogb25CdXR0b24pLCAoaGlnaGxpZ2h0LCBwb2ludCwgb25C
dXR0b24pKQorU09GVF9MSU5LKERhdGFEZXRlY3RvcnMsIERESGlnaGxpZ2h0U2V0QnV0dG9uUHJl
c3NlZCwgdm9pZCwgKERESGlnaGxpZ2h0UmVmIGhpZ2hsaWdodCwgQm9vbGVhbiBidXR0b25QcmVz
c2VkKSwgKGhpZ2hsaWdodCwgYnV0dG9uUHJlc3NlZCkpCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBTZWxlY3Rpb25PdmVybGF5Q29udHJv
bGxlcjo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkqIG92ZXJsYXksIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3Qp
Cit7CisgICAgaWYgKG1fY3VycmVudFNlbGVjdGlvblJlY3RzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCFtX2N1cnJlbnRIaWdobGlnaHQpIHsKKyAgICAgICAgVmVjdG9y
PENHUmVjdD4gY2dSZWN0czsKKyAgICAgICAgY2dSZWN0cy5yZXNlcnZlQ2FwYWNpdHkobV9jdXJy
ZW50U2VsZWN0aW9uUmVjdHMuc2l6ZSgpKTsKKworICAgICAgICBmb3IgKGF1dG8mIHJlY3QgOiBt
X2N1cnJlbnRTZWxlY3Rpb25SZWN0cykKKyAgICAgICAgICAgIGNnUmVjdHMuYXBwZW5kKChDR1Jl
Y3QpcGl4ZWxTbmFwcGVkSW50UmVjdChyZWN0KSk7CisKKyAgICAgICAgbV9jdXJyZW50SGlnaGxp
Z2h0ID0gYWRvcHRDRihEREhpZ2hsaWdodENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJlY3QobnVs
bHB0ciwgY2dSZWN0cy5iZWdpbigpLCBjZ1JlY3RzLnNpemUoKSwgKENHUmVjdClkaXJ0eVJlY3Qs
IHRydWUpKTsKKworICAgICAgICBCb29sZWFuIG9uQnV0dG9uOworICAgICAgICBtX21vdXNlSXNP
dmVySGlnaGxpZ2h0ID0gRERIaWdobGlnaHRQb2ludElzT25IaWdobGlnaHQobV9jdXJyZW50SGln
aGxpZ2h0LmdldCgpLCAoQ0dQb2ludCltX21vdXNlUG9zaXRpb24sICZvbkJ1dHRvbik7CisgICAg
fQorCisgICAgLy8gSWYgdGhlIG1vdXNlIGlzIG5vdCBvdmVyIHRoZSBEREhpZ2hsaWdodCB3ZSBo
YXZlIG5vIGRyYXdpbmcgdG8gZG8uCisgICAgaWYgKCFtX21vdXNlSXNPdmVySGlnaGxpZ2h0KQor
ICAgICAgICByZXR1cm47CisKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gZ3JhcGhpY3ND
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOworCisgICAgQ0dMYXllclJlZiBoaWdobGlnaHRMYXll
ciA9IERESGlnaGxpZ2h0R2V0TGF5ZXJXaXRoQ29udGV4dChtX2N1cnJlbnRIaWdobGlnaHQuZ2V0
KCksIGNnQ29udGV4dCk7CisgICAgQ0dSZWN0IGhpZ2hsaWdodEJvdW5kaW5nUmVjdCA9IERESGln
aGxpZ2h0R2V0Qm91bmRpbmdSZWN0KG1fY3VycmVudEhpZ2hsaWdodC5nZXQoKSk7CisgICAgCisg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7
CisKKyAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKHRvRmxvYXRTaXplKGhpZ2hsaWdodEJv
dW5kaW5nUmVjdC5vcmlnaW4pKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoRmxvYXRTaXpl
KDEsIC0xKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZShGbG9hdFNpemUoMCwgLWhp
Z2hsaWdodEJvdW5kaW5nUmVjdC5zaXplLmhlaWdodCkpOworICAgIAorICAgIENHUmVjdCBoaWdo
bGlnaHREcmF3UmVjdCA9IGhpZ2hsaWdodEJvdW5kaW5nUmVjdDsKKyAgICBoaWdobGlnaHREcmF3
UmVjdC5vcmlnaW4ueCA9IDA7CisgICAgaGlnaGxpZ2h0RHJhd1JlY3Qub3JpZ2luLnkgPSAwOwor
ICAgIAorICAgIENHQ29udGV4dERyYXdMYXllckluUmVjdChjZ0NvbnRleHQsIGhpZ2hsaWdodERy
YXdSZWN0LCBoaWdobGlnaHRMYXllcik7Cit9CisgICAgCitib29sIFNlbGVjdGlvbk92ZXJsYXlD
b250cm9sbGVyOjptb3VzZUV2ZW50KFBhZ2VPdmVybGF5KiwgY29uc3QgV2ViTW91c2VFdmVudCYg
ZXZlbnQpCit7CisgICAgbV9tb3VzZVBvc2l0aW9uID0gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5t
YWluRnJhbWUoKS52aWV3KCktPnJvb3RWaWV3VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKTsK
KworICAgIGJvb2wgbW91c2VXYXNPdmVySGlnaGxpZ2h0ID0gbV9tb3VzZUlzT3ZlckhpZ2hsaWdo
dDsKKyAgICBCb29sZWFuIG9uQnV0dG9uID0gZmFsc2U7CisgICAgbV9tb3VzZUlzT3ZlckhpZ2hs
aWdodCA9IG1fY3VycmVudEhpZ2hsaWdodCA/IERESGlnaGxpZ2h0UG9pbnRJc09uSGlnaGxpZ2h0
KG1fY3VycmVudEhpZ2hsaWdodC5nZXQoKSwgKENHUG9pbnQpbV9tb3VzZVBvc2l0aW9uLCAmb25C
dXR0b24pIDogZmFsc2U7CisKKyAgICBpZiAobW91c2VXYXNPdmVySGlnaGxpZ2h0ICE9IG1fbW91
c2VJc092ZXJIaWdobGlnaHQpCisgICAgICAgIG1fc2VsZWN0aW9uT3ZlcmxheS0+c2V0TmVlZHNE
aXNwbGF5KCk7CisKKyAgICAvLyBJZiB0aGlzIGV2ZW50IGhhcyBub3RoaW5nIHRvIGRvIHdpdGgg
dGhlIGxlZnQgYnV0dG9uLCBpdCBjbGVhcnMgdGhlIGN1cnJlbnQgbW91c2UgZG93biB0cmFja2lu
ZyBhbmQgd2UncmUgZG9uZSBwcm9jZXNzaW5nIGl0LgorICAgIGlmIChldmVudC5idXR0b24oKSAh
PSBXZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uKSB7CisgICAgICAgIG1fbW91c2VJc0Rvd25PbkJ1
dHRvbiA9IGZhbHNlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFt
X2N1cnJlbnRIaWdobGlnaHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENoZWNr
IGFuZCBzZWUgaWYgdGhlIG1vdXNlIHdlbnQgdXAgYW5kIHdlIGhhdmUgYSBjdXJyZW50IG1vdXNl
IGRvd24gaGlnaGxpZ2h0IGJ1dHRvbi4KKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50
OjpNb3VzZVVwKSB7CisgICAgICAgIGJvb2wgbW91c2VXYXNEb3duT25CdXR0b24gPSBtX21vdXNl
SXNEb3duT25CdXR0b247CisgICAgICAgIG1fbW91c2VJc0Rvd25PbkJ1dHRvbiA9IGZhbHNlOwor
CisgICAgICAgIC8vIElmIHRoZSBtb3VzZSBsaWZ0ZWQgd2hpbGUgc3RpbGwgb3ZlciB0aGUgaGln
aGxpZ2h0IGJ1dHRvbiB0aGF0IGl0IHdlbnQgZG93biBvbiwgdGhlbiB0aGF0IGlzIGEgY2xpY2su
CisgICAgICAgIGlmIChtX21vdXNlSXNPdmVySGlnaGxpZ2h0ICYmIG9uQnV0dG9uICYmIG1vdXNl
V2FzRG93bk9uQnV0dG9uKSB7CisgICAgICAgICAgICBoYW5kbGVDbGljayhtX21vdXNlUG9zaXRp
b24pOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgLy8gQ2hlY2sgYW5kIHNlZSBpZiB0
aGUgbW91c2UgbW92ZWQgd2l0aGluIHRoZSBjb25maW5lcyBvZiB0aGUgREQgaGlnaGxpZ2h0IGJ1
dHRvbi4KKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZU1vdmUpIHsKKyAg
ICAgICAgLy8gTW92aW5nIHdpdGggdGhlIG1vdXNlIGJ1dHRvbiBkb3duIGlzIG9rYXkgYXMgbG9u
ZyBhcyB0aGUgbW91c2UgbmV2ZXIgbGVhdmVzIHRoZSBoaWdobGlnaHQgYnV0dG9uLgorICAgICAg
ICBpZiAobV9tb3VzZUlzT3ZlckhpZ2hsaWdodCAmJiBvbkJ1dHRvbikKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgICAgIG1fbW91c2VJc0Rvd25PbkJ1dHRvbiA9IGZhbHNlOworICAg
ICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICAvLyBDaGVjayBh
bmQgc2VlIGlmIHRoZSBtb3VzZSB3ZW50IGRvd24gb3ZlciBhIEREIGhpZ2hsaWdodCBidXR0b24u
CisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKSB7CisgICAgICAg
IGlmIChtX21vdXNlSXNPdmVySGlnaGxpZ2h0ICYmIG9uQnV0dG9uKSB7CisgICAgICAgICAgICBt
X21vdXNlSXNEb3duT25CdXR0b24gPSB0cnVlOworCisgICAgICAgICAgICAvLyBGSVhNRTogV2Ug
bmVlZCB0byBkbyB0aGUgZm9sbG93aW5nLCBidXQgU09GVF9MSU5LIGlzbid0IHdvcmtpbmcgZm9y
IHRoaXMgbWV0aG9kLgorICAgICAgICAgICAgLy8gRERIaWdobGlnaHRTZXRCdXR0b25QcmVzc2Vk
KG1fY3VycmVudEhpZ2hsaWdodC5nZXQoKSwgdHJ1ZSk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIG1fc2VsZWN0aW9uT3ZlcmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBTZWxlY3Rpb25PdmVybGF5Q29u
dHJvbGxlcjo6aGFuZGxlQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQorewor
ICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhlIGNsaWNrIGhlcmUuCit9CisgICAgCit2b2lkIFNlbGVj
dGlvbk92ZXJsYXlDb250cm9sbGVyOjpjbGVhckhpZ2hsaWdodCgpCit7CisgICAgbV9jdXJyZW50
SGlnaGxpZ2h0LmNsZWFyKCk7CisgICAgbV9tb3VzZUlzT3ZlckhpZ2hsaWdodCA9IGZhbHNlOwor
fQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklD
RV9DT05UUk9MUykKKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>