<?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>130062</bug_id>
          
          <creation_ts>2014-03-10 19:14:29 -0700</creation_ts>
          <short_desc>Hook up image controls for WebKit1</short_desc>
          <delta_ts>2014-03-12 16:35:48 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>989169</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-10 19:14:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/15964809&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989184</commentid>
    <comment_count>1</comment_count>
      <attachid>226373</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-10 19:38:02 -0700</bug_when>
    <thetext>Created attachment 226373
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989185</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-10 19:40:37 -0700</bug_when>
    <thetext>Attachment 226373 did not pass style-queue:


ERROR: Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.h:59:  The parameter name &quot;event&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.h:59:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.h:45:  The parameter name &quot;style&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/html/shadow/mac/ImageControlsRootElementMac.h:43:  The parameter name &quot;style&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/rendering/RenderThemeMac.h:229:  The parameter name &quot;paintInfo&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/html/shadow/mac/ImageControlsRootElementMac.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 6 in 30 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>989426</commentid>
    <comment_count>3</comment_count>
      <attachid>226436</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-11 15:35:37 -0700</bug_when>
    <thetext>Created attachment 226436
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989453</commentid>
    <comment_count>4</comment_count>
      <attachid>226436</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-11 16:27:19 -0700</bug_when>
    <thetext>Comment on attachment 226436
patch

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

&gt; Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.cpp:91
&gt; +    if (!document.page())
&gt; +        return nullptr;

Seems a little strange here.

&gt; Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.cpp:105
&gt; +        if (Page* page = document().page())
&gt; +            page-&gt;contextMenuController().showImageControlsMenu(event);
&gt; +
&gt; +        return;

Shouldn’t we be calling event-&gt;setDefaultHandled() here (not sure I got the function name right).

Also, I suggest deleting that blank line.

&gt; Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.h:37
&gt; +    ~ImageControlsButtonElementMac();

Should say virtual here.

&gt; Source/WebCore/html/shadow/mac/ImageControlsRootElementMac.cpp:92
&gt; +    RefPtr&lt;ImageControlsButtonElementMac&gt; button = ImageControlsButtonElementMac::maybeCreate(document);
&gt; +    controls-&gt;appendChild(button.release());

Not sure we need this local variable.

&gt; Source/WebCore/page/ContextMenuController.cpp:140
&gt; +    CachedImage* image = toRenderImage(renderer)-&gt;cachedImage();

Compiler probably ends up optimizing this anyway, but I would write:

    toRenderImage(*renderer)-&gt;cachedImage()

to be explicit that toRenderImage doesn’t have to bother handling null.

&gt; Source/WebCore/page/ContextMenuController.cpp:1470
&gt; +    CachedResourceHandle&lt;CachedImage&gt; replacedImage = new CachedImage(newImage.get(), frame-&gt;page()-&gt;sessionID());

Is this right? we don’t need to call any adopt or anything to do this correctly?

&gt; Source/WebCore/rendering/RenderThemeMac.mm:1981
&gt; +bool RenderThemeMac::paintImageControlsButton(RenderObject* o, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)

Do we really need to name the renderer &quot;o&quot;?

&gt; Source/WebCore/rendering/RenderThemeMac.mm:2004
&gt; +    NSServicesRolloverButtonCell *cell = servicesRolloverButtonCell();
&gt; +    return IntSize([cell cellSize]);

Not sure we need the local variable here.

&gt; Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.h:33
&gt; +#if ENABLE(IMAGE_CONTROLS)
&gt; +@class WebSharingServicePickerController;
&gt; +#endif

Not sure we really need to put an #if around a forward declaration.

&gt; Source/WebKit2/Shared/ContextMenuContextData.cpp:49
&gt; +    , m_isImageControl(!!context.controlledImage())

Why the !!? Is that really needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989457</commentid>
    <comment_count>5</comment_count>
      <attachid>226436</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-03-11 16:35:53 -0700</bug_when>
    <thetext>Comment on attachment 226436
patch

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

&gt; Source/WebCore/page/ContextMenuController.cpp:1471
&gt; +    CachedResourceHandle&lt;CachedImage&gt; replacedImage = new CachedImage(newImage.get(), frame-&gt;page()-&gt;sessionID());
&gt; +    toRenderImage(renderer)-&gt;imageResource().setCachedImage(replacedImage.get());

I think it&apos;s important that the replaced image have a URL.

We may discover later that it is or isn&apos;t important what that URL is, but we need something.

I think we should use webkit-fake URL like the pasteboard code uses.

EditorMac.mm and EditorIOS.mm both generate webkit-fake URLs.  I&apos;d like to see this patch factor that out into a utility method and use it here.

&gt; Source/WebKit/mac/Misc/WebSharingServicePickerController.mm:50
&gt; +@implementation WebSharingServicePickerController {
&gt; +    WebContextMenuClient* _menuClient;
&gt; +    RetainPtr&lt;NSSharingServicePicker&gt; _picker;
&gt; +}

...and...

&gt; Source/WebKit/mac/Misc/WebSharingServicePickerController.mm:61
&gt; +    _menuClient = menuClient;

...I&apos;m concerned about some path to a use-after-free with the menu client.  Should we explicitly clear out the back pointer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989461</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-11 16:46:32 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 226436 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=226436&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.cpp:91
&gt; &gt; +    if (!document.page())
&gt; &gt; +        return nullptr;
&gt; 
&gt; Seems a little strange here.

Agreed, I&apos;ll try to figure out what is going on there.

&gt; &gt; Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.cpp:105
&gt; &gt; +        if (Page* page = document().page())
&gt; &gt; +            page-&gt;contextMenuController().showImageControlsMenu(event);
&gt; &gt; +
&gt; &gt; +        return;
&gt; 
&gt; Shouldn’t we be calling event-&gt;setDefaultHandled() here (not sure I got the function name right).
&gt; Also, I suggest deleting that blank line.

I think so.

&gt; &gt; Source/WebCore/page/ContextMenuController.cpp:1470
&gt; &gt; +    CachedResourceHandle&lt;CachedImage&gt; replacedImage = new CachedImage(newImage.get(), frame-&gt;page()-&gt;sessionID());
&gt; 
&gt; Is this right? we don’t need to call any adopt or anything to do this correctly?

Sadly, yes (and I double-checked with Brady).

&gt; &gt; Source/WebCore/rendering/RenderThemeMac.mm:1981
&gt; &gt; +bool RenderThemeMac::paintImageControlsButton(RenderObject* o, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
&gt; 
&gt; Do we really need to name the renderer &quot;o&quot;?

Not even sort of.

(In reply to comment #5)
&gt; (From update of attachment 226436 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=226436&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/ContextMenuController.cpp:1471
&gt; &gt; +    CachedResourceHandle&lt;CachedImage&gt; replacedImage = new CachedImage(newImage.get(), frame-&gt;page()-&gt;sessionID());
&gt; &gt; +    toRenderImage(renderer)-&gt;imageResource().setCachedImage(replacedImage.get());
&gt; 
&gt; I think it&apos;s important that the replaced image have a URL.
&gt; 
&gt; We may discover later that it is or isn&apos;t important what that URL is, but we need something.
&gt; 
&gt; I think we should use webkit-fake URL like the pasteboard code uses.
&gt; 
&gt; EditorMac.mm and EditorIOS.mm both generate webkit-fake URLs.  I&apos;d like to see this patch factor that out into a utility method and use it here.

Okay, that sounds like a good plan!

&gt; &gt; Source/WebKit/mac/Misc/WebSharingServicePickerController.mm:50
&gt; &gt; +@implementation WebSharingServicePickerController {
&gt; &gt; +    WebContextMenuClient* _menuClient;
&gt; &gt; +    RetainPtr&lt;NSSharingServicePicker&gt; _picker;
&gt; &gt; +}
&gt; 
&gt; ...and...
&gt; 
&gt; &gt; Source/WebKit/mac/Misc/WebSharingServicePickerController.mm:61
&gt; &gt; +    _menuClient = menuClient;
&gt; 
&gt; ...I&apos;m concerned about some path to a use-after-free with the menu client.  Should we explicitly clear out the back pointer?

A valid point. Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989495</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-11 18:52:16 -0700</bug_when>
    <thetext>Hmm, I just noticed that Editor::writeImageToPasteboard assumes that CachedImages have a valid ResourceBuffer, which a CachedImage created from an image like I&apos;m doing here does not, so we crash trying to copy a modified image. It&apos;s not clear to me if this should change the approach here, or if we should adjust writeImageToPasteboard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989504</commentid>
    <comment_count>8</comment_count>
      <attachid>226465</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-11 19:18:40 -0700</bug_when>
    <thetext>Created attachment 226465
patch

Addressing most of the review comments. The bit about copying above still stands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989518</commentid>
    <comment_count>9</comment_count>
      <attachid>226465</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-03-11 20:09:57 -0700</bug_when>
    <thetext>Comment on attachment 226465
patch

I&apos;m fine with this assuming EWS, etc etc!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989554</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-12 00:52:02 -0700</bug_when>
    <thetext>So! I think I&apos;m going to land this, with an added null check to prevent us from crashing when copying. This does mean that copying a replaced image won&apos;t work, but we can fix that next (there&apos;s so much more to this patch that it will be much easier to work on things like that if it&apos;s landed). Sam thinks we should use the standard paste mechanism to replace the image, but I&apos;m somewhat afraid to do that for two reasons:

1. We currently just get back a data blob and have to assume it&apos;s an image, so it doesn&apos;t buy us much. This will get resolved with API changes, but not yet.
2. Pasting &quot;over&quot; the image will lose things that the page has done to the image (event listeners, inline style, etc.) that aren&apos;t persisted in the image itself.

So we can consider that, but it will require some thought.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989717</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-12 10:57:53 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/165479</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989807</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-03-12 13:21:09 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt;Sam thinks we should use the standard paste mechanism to replace the image, but I&apos;m somewhat afraid to do that for two reasons:
...
&gt; 2. Pasting &quot;over&quot; the image will lose things that the page has done to the image (event listeners, inline style, etc.) that aren&apos;t persisted in the image itself.

Will also cause DOM mutation, which would generate unexpected events and potentially break javascript that has already cached existing elements, for example.

I think this idea is unworkable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989853</commentid>
    <comment_count>13</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-12 16:35:48 -0700</bug_when>
    <thetext>Follow up build fix in http://trac.webkit.org/changeset/165504</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226373</attachid>
            <date>2014-03-10 19:38:02 -0700</date>
            <delta_ts>2014-03-11 15:35:37 -0700</delta_ts>
            <desc>patch</desc>
            <filename>picker.diff</filename>
            <type>text/plain</type>
            <size>60949</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxODc2MmJiLi4yY2JlNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAy
IEBACisyMDE0LTAzLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIEhvb2sgdXAgaW1hZ2UgY29udHJvbHMgZm9yIFdlYktpdDEKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA2MgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTU5NjQ4MDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFw
cGluZ3MuaDoKKyAgICAgICAgRml4IHNvbWUgaGVhZGVyIG9yZGVyaW5nLgorCisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICBI
YW5kbGUgbWFwcGluZyBJbWFnZUNvbnRyb2xzQnV0dG9uUGFydCB0byB0aGUgLXdlYmtpdC1hcHBl
YXJhbmNlIHZhbHVlIENTU1ZhbHVlSW1hZ2VDb250cm9sc0J1dHRvbi4KKworICAgICAgICAqIGNz
cy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIHBsYXRmb3JtL1RoZW1lVHlwZXMuaDoK
KyAgICAgICAgQWRkIGEgLXdlYmtpdC1hcHBlYXJhbmNlIHZhbHVlIGltYWdlLWNvbnRyb2xzLWJ1
dHRvbiwgYW5kIGFuIGFzc29jaWF0ZWQgY29udHJvbCBwYXJ0LgorCisgICAgICAgICogZG9tL05v
ZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1l
bnQpOiBBZGRlZC4KKworICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VD
b250cm9sc0J1dHRvbjo6UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjp+UmVuZGVySW1hZ2VDb250cm9sc0J1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjp1cGRhdGVM
b2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VDb250cm9sc0J1dHRv
bjo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9s
c0J1dHRvbkVsZW1lbnRNYWM6OkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjp+SW1hZ2VDb250cm9s
c0J1dHRvbkVsZW1lbnRNYWMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc0J1dHRv
bkVsZW1lbnRNYWM6Om1heWJlQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQ29udHJv
bHNCdXR0b25FbGVtZW50TWFjOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIp
OgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1h
Yy5oOiBBZGRlZC4KKyAgICAgICAgQWRkIGEgbmV3IGVsZW1lbnQvcmVuZGVyZXIgcGFpciBmb3Ig
dGhlIHNpbmdsZSBidXR0b24gdGhhdCBjb21wcmlzZXMgaW1hZ2UgY29udHJvbHMgb24gTWFjLgor
ICAgICAgICBSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uIGdldHMgaXRzIHNpemUgZnJvbSB0aGUg
dGhlbWUncyBpbWFnZUNvbnRyb2xzQnV0dG9uU2l6ZS4KKworICAgICAgICAqIGh0bWwvc2hhZG93
L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2VDb250cm9sczo6UmVuZGVySW1hZ2VDb250cm9scyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZUNvbnRyb2xzOjp+UmVuZGVySW1hZ2VDb250cm9scyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZUNvbnRyb2xzOjp1cGRhdGVMb2dpY2FsV2lkdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VDb250cm9sczo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50OjptYXliZUNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6OkltYWdl
Q29udHJvbHNSb290RWxlbWVudE1hYyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUNvbnRyb2xz
Um9vdEVsZW1lbnRNYWM6On5JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRN
YWMuaDoKKyAgICAgICAgQWRkIGEgY3VzdG9tIHJlbmRlcmVyIGZvciB0aGUgcm9vdCBpbWFnZSBj
b250cm9scyBlbGVtZW50IG9uIE1hYywgd2hpY2ggaW5oZXJpdHMKKyAgICAgICAgaXRzIHNpemUg
ZnJvbSB0aGUgPGltZz4gdGhhdCBpdCBpcyBzaGFkb3dpbmcuCisgICAgICAgIEFkZCBhIEltYWdl
Q29udHJvbHNCdXR0b25FbGVtZW50TWFjIGFzIHRoZSBzb2xlIGNoaWxkIG9mIHRoZSByb290IGVs
ZW1lbnQuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9tYWMvaW1hZ2VDb250cm9sc01hYy5jc3M6
CisgICAgICAgICgueC13ZWJraXQtaW1hZ2UtY29udHJvbHMpOgorICAgICAgICAoLngtd2Via2l0
LWltYWdlLWNvbnRyb2xzLWJ1dHRvbik6CisgICAgICAgICgueC13ZWJraXQtaW1hZ2UtY29udHJv
bHM6aG92ZXIgLngtd2Via2l0LWltYWdlLWNvbnRyb2xzLWJ1dHRvbik6CisgICAgICAgIFRoZSBi
dXR0b24gc2hvdWxkIGJlY29tZSBvcGFxdWUgd2hlbmV2ZXIgKmFueSogcGFydCBvZiB0aGUgaW1h
Z2UgaXMgaG92ZXJlZCwKKyAgICAgICAgbm90IGp1c3QgdGhlIGJ1dHRvbiBpdHNlbGYuIEFsc28s
IHVzZSB0aGUgbmV3IGltYWdlLWNvbnRyb2xzLWJ1dHRvbiAtd2Via2l0LWFwcGVhcmFuY2UKKyAg
ICAgICAgdmFsdWUgdG8gZ2V0IHRoZSBhcHByb3ByaWF0ZSBhcHBlYXJhbmNlIGZyb20gdGhlIHRo
ZW1lLgorCisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGV4dE1lbnVDb250ZXh0OjpDb250ZXh0TWVudUNvbnRleHQpOgorICAgICAg
ICAqIHBhZ2UvQ29udGV4dE1lbnVDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0
TWVudUNvbnRleHQ6OnNldENvbnRyb2xsZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudUNvbnRleHQ6OmNvbnRyb2xsZWRJbWFnZSk6CisgICAgICAgIFN0b3JlIGFuIGltYWdl
IG9uIHRoZSBDb250ZXh0TWVudUNvbnRleHQgaW5zdGVhZCBvZiBqdXN0IHdoZXRoZXIgd2UgaGl0
IGFuIGltYWdlLgorCisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpoYW5kbGVDb250ZXh0TWVu
dUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0Nv
bnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlRnJvbUltYWdlRWxlbWVudE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNv
bnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9w
dWxhdGUpOgorICAgICAgICBLZWVwIHRyYWNrIG9mIHRoZSBoaXQgaW1hZ2UgaW4gdGhlIENvbnRl
eHRNZW51Q29udGV4dC4KKworICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVy
OjpyZXBsYWNlQ29udHJvbGxlZEltYWdlKToKKyAgICAgICAgUmVwbGFjZSB0aGUgaGl0IGltYWdl
IHdpdGggYSBuZXcgb25lLgorCisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
aDoKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oOgorICAgICAgICBGaXgg
YSBkb3VibGUtc3BhY2UgdHlwby4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lOjpwYWludEJvcmRlck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6
OnBhaW50RGVjb3JhdGlvbnMpOgorICAgICAgICBIYW5kbGUgSW1hZ2VDb250cm9sc0J1dHRvblBh
cnQgaW4gUmVuZGVyVGhlbWUncyBzd2l0Y2hlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmltYWdlQ29udHJvbHNC
dXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludEltYWdlQ29u
dHJvbHNCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lTWFjOjpzZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2VsbCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRJbWFnZUNvbnRyb2xzQnV0dG9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjppbWFnZUNvbnRyb2xzQnV0dG9uU2l6ZSk6CisgICAg
ICAgIFBhaW50IHRoZSBpbWFnZSBjb250cm9scyBidXR0b24uCisKIDIwMTQtMDMtMDkgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgaU9TIGJ1aWxkIGZpeC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNDIxMmNmZi4uYjk2ZGNlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTEyNCw2ICsxMjQsNyBAQCBfX1pON1dlYkNvcmUxMUJpdG1hcEltYWdlQzFFUDdD
R0ltYWdlUE5TXzEzSW1hZ2VPYnNlcnZlckUKIF9fWk43V2ViQ29yZTExQml0bWFwSW1hZ2VDMUVQ
TlNfMTNJbWFnZU9ic2VydmVyRQogX19aTjdXZWJDb3JlMTFDYWNoZWRGcmFtZTIzY2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGFFdgogX19aTjdXZWJDb3JlMTFDYWNoZWRGcmFtZTI2c2V0Q2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGFFTlN0M19fMTEwdW5pcXVlX3B0cklOU18yM0NhY2hlZEZyYW1lUGxhdGZv
cm1EYXRhRU5TMV8xNGRlZmF1bHRfZGVsZXRlSVMzX0VFRUUKK19fWk43V2ViQ29yZTExQ2FjaGVk
SW1hZ2UxNmltYWdlRm9yUmVuZGVyZXJFUEtOU18xMlJlbmRlck9iamVjdEUKIF9fWk43V2ViQ29y
ZTExRmlsZUNob29zZXIxMGNob29zZUZpbGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUx
MUZpbGVDaG9vc2VyMTFjaG9vc2VGaWxlc0VSS04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBF
TlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxMUZpbGVDaG9vc2VyRDFFdgpA
QCAtMTU1MSw2ICsxNTUyLDcgQEAgX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE3aXNDb250
ZW50RWRpdGFibGVFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE4dGl0bGVEaXNwbGF5
U3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxOW1lZGlhSXNJbkZ1bGxzY3Jl
ZW5FdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE5cmVjdEJhc2VkVGVzdFJlc3VsdEV2
CitfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0MjFpbm5lck5vblNoYXJlZEVsZW1lbnRFdgog
X19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDVpbWFnZUV2CiBfX1pOSzdXZWJDb3JlMTNIaXRU
ZXN0UmVzdWx0NXRpdGxlRVJOU18xM1RleHREaXJlY3Rpb25FCiBfX1pOSzdXZWJDb3JlMTNIaXRU
ZXN0UmVzdWx0OWltYWdlUmVjdEV2CkBAIC0yOTI3LDYgKzI5MjksMTAgQEAgX19aTks3V2ViQ29y
ZTEySWNvbkRhdGFiYXNlMjRzaG91bGRTdG9wVGhyZWFkQWN0aXZpdHlFdgogX19aTks3V2ViQ29y
ZTEySWNvbkRhdGFiYXNlOWlzRW5hYmxlZEV2CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTUFHRV9D
T05UUk9MUykKK19fWk43V2ViQ29yZTIxQ29udGV4dE1lbnVDb250cm9sbGVyMjJyZXBsYWNlQ29u
dHJvbGxlZEltYWdlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzVJbWFnZUVFRQorI2VuZGlmCisKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIF9fWk43V2ViQ29yZTEwSURCS2V5RGF0YTE0c2V0
TnVtYmVyVmFsdWVFZAogX19aTjdXZWJDb3JlMTBJREJLZXlEYXRhNmRlY29kZUVSTlNfMTJLZXll
ZERlY29kZXJFUlMwXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGQ0OTBmMWUuLjdiNTU4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMzUsNiArMTAzNSw4
IEBACiAJCTJCMzY1Qzg0MTUyNTExOUUwMDkxRDI3QiAvKiBSZW5kZXJTVkdFbGxpcHNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQjQyMzVBMDE1MjUw
RjYwMDBEQkJDRDggLyogUmVuZGVyU1ZHRWxsaXBzZS5oICovOyB9OwogCQkyQkU4RTJDNzEyQTU4
OUVDMDBGQUQ1NTAgLyogSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQkU4RTJDNjEyQTU4OUVDMDBGQUQ1NTAgLyog
SFRNTE1ldGFDaGFyc2V0UGFyc2VyLmggKi87IH07CiAJCTJCRThFMkM5MTJBNThBMDEwMEZBRDU1
MCAvKiBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkJFOEUyQzgxMkE1OEEwMTAwRkFENTUwIC8qIEhUTUxNZXRh
Q2hhcnNldFBhcnNlci5jcHAgKi87IH07CisJCTJEMjUzOTYyMThDRTdGNjIwMDI3MDIyMiAvKiBJ
bWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI1Mzk2MDE4Q0U3RjYyMDAyNzAyMjIgLyogSW1hZ2VD
b250cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwICovOyB9OworCQkyRDI1Mzk2MzE4Q0U3RjYyMDAy
NzAyMjIgLyogSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjUzOTYxMThDRTdGNjIwMDI3MDIyMiAv
KiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oICovOyB9OwogCQkyRDNBMEUzNjEzQTdE
NzYxMDBFODVBRjAgLyogU1ZHUGFyc2luZ0Vycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDNBMEUzNTEzQTdENzYxMDBFODVBRjAgLyogU1ZHUGFy
c2luZ0Vycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMkQ0NkYwNEUxN0I5NkZCRDAwNTY0N0YwIC8qIEludFBvaW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENDZGMDREMTdCOTZGQkQwMDU2
NDdGMCAvKiBJbnRQb2ludC5jcHAgKi87IH07CiAJCTJENDZGMDUwMTdCOTZGRDIwMDU2NDdGMCAv
KiBJbnRTaXplLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJENDZGMDRGMTdCOTZGRDIwMDU2NDdGMCAvKiBJbnRTaXplLmNwcCAqLzsgfTsKQEAgLTc4
NjksNiArNzg3MSw4IEBACiAJCTJCNDIzNUEwMTUyNTBGNjAwMERCQkNEOCAvKiBSZW5kZXJTVkdF
bGxpcHNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0VsbGlw
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkJFOEUyQzYxMkE1ODlFQzAwRkFE
NTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9IVE1MTWV0YUNo
YXJzZXRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkJFOEUyQzgxMkE1
OEEwMTAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwOyBwYXRoID0g
cGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTJEMjUzOTYwMThDRTdGNjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxl
bWVudE1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUNv
bnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTJEMjUzOTYxMThDRTdGNjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1h
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUNvbnRyb2xzQnV0dG9u
RWxlbWVudE1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDJGQzA1NDE0NjBD
RDZGMDAyNjM2MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDJGQzA1NTE0NjBDRDZGMDAyNjM2MzMgLyogQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkQyRkMwNTYxNDYwQ0Q2RjAwMjYzNjMzIC8qIEdyYWRpZW50SW1hZ2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhZGllbnRJbWFnZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNTcxNSw2ICsxNTcxOSw4IEBACiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTUxMDE5MkQ4MThCN0Q3QUIwMDdGQzdBMSAvKiBpbWFn
ZUNvbnRyb2xzTWFjLmNzcyAqLywKKwkJCQkyRDI1Mzk2MDE4Q0U3RjYyMDAyNzAyMjIgLyogSW1h
Z2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwICovLAorCQkJCTJEMjUzOTYxMThDRTdGNjIw
MDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oICovLAogCQkJCTUxMDE5
MkNGMThCNkI5QUIwMDdGQzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwICov
LAogCQkJCTUxMDE5MkQwMThCNkI5QUIwMDdGQzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1l
bnRNYWMuaCAqLywKIAkJCSk7CkBAIC0yMzk5OCw2ICsyNDAwNCw3IEBACiAJCQkJN0FCMEIxQzEx
MjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUYzRjVDRjEzMTJFRDgxQjMwMDg0QzU2OSAvKiBJbnNwZWN0b3JEYXRhYmFzZUluc3Ry
dW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMDYyMTQwRjVGMTkyNjAwQTA3RUFD
IC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEMjUz
OTYzMThDRTdGNjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0EyNDU4N0MxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRP
TUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGM0Q0QzQ3OTEyRTA3NjYzMDAzREExNTAgLyog
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E3NEVDQkIx
MDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yOTE0MCw2ICsyOTE0Nyw3IEBACiAJCQkJMDFEM0NGODYxNEJEMEEzMDAwRkU5OTcw
IC8qIFdlYkdMU2hhcmVkT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOUU1MTA0
MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTFRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEMz
RjFGNUExMEM4ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTJEMjUzOTYyMThDRTdGNjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3N0ExN0E3NzEyRjI4NjQyMDA0
RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNTg0MEUyNDE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE1ODRGRTJGMTg2NENCODQwMDg0M0IxMCAvKiBXZWJJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAppbmRleCAzZDM1NWY4Li4xNGI4MjQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKQEAgLTM4
LDkgKzM4LDYgQEAKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJGb250
U21vb3RoaW5nTW9kZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKLSNpZiBFTkFCTEUo
Q1NTX0lNQUdFX09SSUVOVEFUSU9OKQotI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKLSNl
bmRpZgogI2luY2x1ZGUgIkxlbmd0aC5oIgogI2luY2x1ZGUgIkxpbmVDbGFtcFZhbHVlLmgiCiAj
aW5jbHVkZSAiUGF0aC5oIgpAQCAtNTAsMTAgKzQ3LDEzIEBACiAjaW5jbHVkZSAiVGV4dFJlbmRl
cmluZ01vZGUuaCIKICNpbmNsdWRlICJUaGVtZVR5cGVzLmgiCiAjaW5jbHVkZSAiVW5pY29kZUJp
ZGkuaCIKLSNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgotCisjaW5jbHVkZSAiV3JpdGluZ01vZGUu
aCIgCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAorI2lmIEVOQUJMRShDU1NfSU1BR0Vf
T1JJRU5UQVRJT04pCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU1ByaW1pdGl2ZVZhbHVlKHNob3J0IGkpCkBAIC02MDQsNiArNjA0LDExIEBAIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb250cm9sUGFy
dCBlKQogICAgIGNhc2UgQ2Fwc0xvY2tJbmRpY2F0b3JQYXJ0OgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZUNhcHNMb2NrSW5kaWNhdG9yOwogICAgICAgICBicmVhazsKKyNpZiBF
TkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgY2FzZSBJbWFnZUNvbnRyb2xzQnV0dG9uUGFydDoK
KyAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVJbWFnZUNvbnRyb2xzQnV0dG9uOwor
ICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNhc2UgSW5wdXRTcGVlY2hCdXR0b25QYXJ0Ogog
I2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlV2Via2l0SW5wdXRTcGVlY2hCdXR0b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdv
cmRzLmluCmluZGV4IGUxNDAwYTcuLmQzNzQxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZUtleXdvcmRzLmluCkBAIC03MTgsNiArNzE4LDkgQEAgcmVsZXZhbmN5LWxldmVsLWluZGljYXRv
cgogY29udGludW91cy1jYXBhY2l0eS1sZXZlbC1pbmRpY2F0b3IKIGRpc2NyZXRlLWNhcGFjaXR5
LWxldmVsLWluZGljYXRvcgogcmF0aW5nLWxldmVsLWluZGljYXRvcgorI2lmIGRlZmluZWQoRU5B
QkxFX0lNQUdFX0NPTlRST0xTKSAmJiBFTkFCTEVfSU1BR0VfQ09OVFJPTFMKK2ltYWdlLWNvbnRy
b2xzLWJ1dHRvbgorI2VuZGlmCiB0ZXh0YXJlYQogLy8gQW4gYXBwZWFyYW5jZSB2YWx1ZSB0aGF0
IHNob3VsZCBub3QgYmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlcjoKIGNhcHMtbG9jay1pbmRpY2F0
b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCmluZGV4IDk1ODQ2ZjUuLjZiYTk5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjQw
LDYgKzI0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNJbnNlcnRpb25Qb2ludE5v
ZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykK
ICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlQ29udHJvbHNCdXR0b25FbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAgICAgYm9vbCBpc0RvY3Vt
ZW50Tm9kZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
bWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ0OWY1NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1h
Yy5jcHAKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuaCIKKworI2lmIEVOQUJM
RShJTUFHRV9DT05UUk9MUykKKworI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgor
I2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJQYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCisjaW5jbHVkZSAiUmVuZGVy
U3R5bGUuaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFJlbmRlckltYWdlQ29udHJvbHNCdXR0b24gZmluYWwgOiBwdWJsaWMgUmVuZGVy
QmxvY2tGbG93IHsKK3B1YmxpYzoKKyAgICBSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKEhUTUxF
bGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIHZpcnR1YWwgflJlbmRlckltYWdl
Q29udHJvbHNCdXR0b24oKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9n
aWNhbFdpZHRoKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVp
Z2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dp
Y2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJJ
bWFnZUNvbnRyb2xzQnV0dG9uIjsgfQorICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0ZvcmNlZFN0
eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Cit9
OworCitSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9u
KEhUTUxFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKKyAgICA6
IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBzdGQ6Om1vdmUoc3R5bGUpKQoreworfQorCitSZW5k
ZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjp+UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbigpCit7Cit9
CisKK3ZvaWQgUmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbjo6dXBkYXRlTG9naWNhbFdpZHRoKCkK
K3sKKyAgICBSZW5kZXJCb3g6OnVwZGF0ZUxvZ2ljYWxXaWR0aCgpOworCisgICAgSW50U2l6ZSBm
cmFtZVNpemUgPSB0aGVtZSgpLmltYWdlQ29udHJvbHNCdXR0b25TaXplKHRoaXMpOworICAgIHNl
dExvZ2ljYWxXaWR0aChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gZnJhbWVTaXplLndpZHRo
KCkgOiBmcmFtZVNpemUuaGVpZ2h0KCkpOworfQorCit2b2lkIFJlbmRlckltYWdlQ29udHJvbHNC
dXR0b246OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5
b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGVk
VmFsdWVzKSBjb25zdAoreworICAgIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQobG9n
aWNhbEhlaWdodCwgbG9naWNhbFRvcCwgY29tcHV0ZWRWYWx1ZXMpOworCisgICAgSW50U2l6ZSBm
cmFtZVNpemUgPSB0aGVtZSgpLmltYWdlQ29udHJvbHNCdXR0b25TaXplKHRoaXMpOworICAgIGNv
bXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZyYW1l
U2l6ZS5oZWlnaHQoKSA6IGZyYW1lU2l6ZS53aWR0aCgpOworfQorCitJbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYzo6SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMoRG9jdW1lbnQmIGRv
Y3VtZW50KQorICAgIDogSFRNTERpdkVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50
KQoreworfQorCitJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6fkltYWdlQ29udHJvbHNC
dXR0b25FbGVtZW50TWFjKCkKK3sKK30KKworUGFzc1JlZlB0cjxJbWFnZUNvbnRyb2xzQnV0dG9u
RWxlbWVudE1hYz4gSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6Om1heWJlQ3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBpZiAoIWRvY3VtZW50LnBhZ2UoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBSZWZQdHI8SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRN
YWM+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYyhk
b2N1bWVudCkpOworICAgIGJ1dHRvbi0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRy
LCAieC13ZWJraXQtaW1hZ2UtY29udHJvbHMtYnV0dG9uIik7CisKKyAgICByZXR1cm4gYnV0dG9u
LnJlbGVhc2UoKTsKK30KKwordm9pZCBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBk
b2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgICAgIHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxl
cigpLnNob3dJbWFnZUNvbnRyb2xzTWVudShldmVudCk7CisKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKK30K
KworUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFj
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCit7Cisg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckltYWdlQ29udHJvbHNCdXR0b24+KCp0aGlz
LCBzdGQ6Om1vdmUoc3R5bGUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKElNQUdFX0NPTlRST0xTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODQwZTFiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25F
bGVtZW50TWFjLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW1hZ2VD
b250cm9sc0J1dHRvbkVsZW1lbnRNYWNfaAorI2RlZmluZSBJbWFnZUNvbnRyb2xzQnV0dG9uRWxl
bWVudE1hY19oCisKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorCisjaWYgRU5BQkxFKElN
QUdFX0NPTlRST0xTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEltYWdlQ29udHJv
bHNCdXR0b25FbGVtZW50TWFjIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAg
ICB+SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMoKTsKKworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjPiBtYXliZUNyZWF0ZShEb2N1bWVudCYp
OworCitwcml2YXRlOgorICAgIEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjKERvY3VtZW50
Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkgb3ZlcnJpZGU7CisKKyAgICB2aXJ0
dWFsIGJvb2wgaXNJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShJTUFHRV9DT05UUk9MUykKKworI2VuZGlmIC8vIEltYWdlQ29udHJvbHNCdXR0b25F
bGVtZW50TWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9J
bWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAKaW5kZXggOGFlYWJkZC4uMDQy
ZmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29u
dHJvbHNSb290RWxlbWVudE1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
bWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAKQEAgLTI4LDUyICsyOCw4NCBAQAog
CiAjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQogCi0jaW5jbHVkZSAiQ29udGV4dE1lbnVDb250
cm9sbGVyLmgiCi0jaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVk
ZSAiVGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmgiCisj
aW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKKyNp
bmNsdWRlICJSZW5kZXJJbWFnZS5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjpJbWFnZUNvbnRy
b2xzUm9vdEVsZW1lbnRNYWMoRG9jdW1lbnQmIGRvY3VtZW50KQotICAgIDogSW1hZ2VDb250cm9s
c1Jvb3RFbGVtZW50KGRvY3VtZW50KQorY2xhc3MgUmVuZGVySW1hZ2VDb250cm9scyBmaW5hbCA6
IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgeworcHVibGljOgorICAgIFJlbmRlckltYWdlQ29udHJv
bHMoSFRNTEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgdmlydHVhbCB+UmVu
ZGVySW1hZ2VDb250cm9scygpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVM
b2dpY2FsV2lkdGgoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxvZ2ljYWxI
ZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExv
Z2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRl
ckltYWdlQ29udHJvbHMiOyB9CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzRm9yY2VkU3R5bGVS
ZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KK307CisK
K1JlbmRlckltYWdlQ29udHJvbHM6OlJlbmRlckltYWdlQ29udHJvbHMoSFRNTEVsZW1lbnQmIGVs
ZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorICAgIDogUmVuZGVyQmxvY2tGbG93
KGVsZW1lbnQsIHN0ZDo6bW92ZShzdHlsZSkpCiB7CiB9CiAKLUltYWdlQ29udHJvbHNSb290RWxl
bWVudE1hYzo6fkltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYygpCitSZW5kZXJJbWFnZUNvbnRy
b2xzOjp+UmVuZGVySW1hZ2VDb250cm9scygpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2VDb250
cm9sc1Jvb3RFbGVtZW50PiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnQ6Om1heWJlQ3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCkKK3ZvaWQgUmVuZGVySW1hZ2VDb250cm9sczo6dXBkYXRlTG9naWNh
bFdpZHRoKCkKIHsKLSAgICByZXR1cm4gSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjptYXli
ZUNyZWF0ZShkb2N1bWVudCk7CisgICAgUmVuZGVyQm94Ojp1cGRhdGVMb2dpY2FsV2lkdGgoKTsK
KworICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gZWxlbWVudCgpLT5zaGFkb3dIb3N0KCkt
PnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlci0+aXNSZW5kZXJJbWFnZSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzZXRMb2dpY2FsV2lkdGgodG9SZW5kZXJJbWFnZShyZW5kZXJlcikt
PmxvZ2ljYWxXaWR0aCgpKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZUNvbnRyb2xzUm9vdEVsZW1l
bnRNYWM+IEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6bWF5YmVDcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50KQordm9pZCBSZW5kZXJJbWFnZUNvbnRyb2xzOjpjb21wdXRlTG9naWNhbEhlaWdo
dChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNh
bEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVlcykgY29uc3QKK3sKKyAgICBSZW5k
ZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxUb3AsIGNv
bXB1dGVkVmFsdWVzKTsKKworICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gZWxlbWVudCgp
LT5zaGFkb3dIb3N0KCktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlci0+aXNSZW5kZXJJ
bWFnZSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRl
bnQgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+bG9naWNhbEhlaWdodCgpOworfQorCitQYXNz
UmVmUHRyPEltYWdlQ29udHJvbHNSb290RWxlbWVudD4gSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50
OjptYXliZUNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgaWYgKCFkb2N1bWVudC5w
YWdlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPEltYWdlQ29udHJv
bHNSb290RWxlbWVudE1hYz4gY29udHJvbHMgPSBhZG9wdFJlZihuZXcgSW1hZ2VDb250cm9sc1Jv
b3RFbGVtZW50TWFjKGRvY3VtZW50KSk7Ci0gICAgY29udHJvbHMtPnNldEF0dHJpYnV0ZShIVE1M
TmFtZXM6OmNsYXNzQXR0ciwgIngtd2Via2l0LWltYWdlbWVudSIpOwotICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7Ci0gICAgY29udHJvbHMtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwg
IiIpLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjb250
cm9scy0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAieC13ZWJraXQtaW1hZ2Ut
Y29udHJvbHMiKTsKIAorICAgIFJlZlB0cjxJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYz4g
YnV0dG9uID0gSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6Om1heWJlQ3JlYXRlKGRvY3Vt
ZW50KTsKKyAgICBjb250cm9scy0+YXBwZW5kQ2hpbGQoYnV0dG9uLnJlbGVhc2UoKSk7CisgICAg
CiAgICAgcmV0dXJuIGNvbnRyb2xzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbWFnZUNvbnRyb2xz
Um9vdEVsZW1lbnRNYWM6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQorSW1hZ2VD
b250cm9sc1Jvb3RFbGVtZW50TWFjOjpJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMoRG9jdW1l
bnQmIGRvY3VtZW50KQorICAgIDogSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50KGRvY3VtZW50KQor
eworfQorCitJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6On5JbWFnZUNvbnRyb2xzUm9vdEVs
ZW1lbnRNYWMoKQogewotICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlj
a0V2ZW50KSB7Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCi0g
ICAgICAgICAgICBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS5zaG93SW1hZ2VDb250cm9s
c01lbnUoZXZlbnQpOworfQogCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgSFRN
TERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQoreworICAgIHJldHVybiBjcmVhdGVSZW5k
ZXJlcjxSZW5kZXJJbWFnZUNvbnRyb2xzPigqdGhpcywgc3RkOjptb3ZlKHN0eWxlKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaAppbmRleCAyODNk
MGI3Li43MzQ4MjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMv
SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oCkBAIC0zMywxNSArMzMsMTQg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50
TWFjIDogcHVibGljIEltYWdlQ29udHJvbHNSb290RWxlbWVudCB7CisgICAgZnJpZW5kIGNsYXNz
IEltYWdlQ29udHJvbHNSb290RWxlbWVudDsKIHB1YmxpYzoKICAgICB+SW1hZ2VDb250cm9sc1Jv
b3RFbGVtZW50TWFjKCk7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUNvbnRyb2xzUm9v
dEVsZW1lbnRNYWM+IG1heWJlQ3JlYXRlKERvY3VtZW50Jik7Ci0KIHByaXZhdGU6CiAgICAgSW1h
Z2VDb250cm9sc1Jvb3RFbGVtZW50TWFjKERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvaW1hZ2VDb250cm9sc01hYy5j
c3MgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvaW1hZ2VDb250cm9sc01hYy5jc3MK
aW5kZXggYTVkNzA4OS4uMzRkODgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvbWFjL2ltYWdlQ29udHJvbHNNYWMuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L21hYy9pbWFnZUNvbnRyb2xzTWFjLmNzcwpAQCAtMjMsMTYgKzIzLDIwIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLngtd2Via2l0LWltYWdlbWVu
dSB7Ci0gICAgb3BhY2l0eTogMDsKKy54LXdlYmtpdC1pbWFnZS1jb250cm9scyB7CiAgICAgcG9z
aXRpb246IHJlbGF0aXZlOwotICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKLSAgICB3aWR0aDog
MjBweDsKLSAgICBoZWlnaHQ6IDIwcHg7Ci0gICAgYm9yZGVyLXJhZGl1czogNXB4OwotICAgIHRy
YW5zaXRpb246IG9wYWNpdHkgMC41czsKIH0KIAotLngtd2Via2l0LWltYWdlbWVudTpob3ZlciB7
CisueC13ZWJraXQtaW1hZ2UtY29udHJvbHMtYnV0dG9uIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgcmlnaHQ6IDE4cHg7IC8qIEZJWE1FOiBXaHkgaXMgcmlnaHQ6IDBweCBvZmYgdGhl
IHJpZ2h0IGVkZ2Ugb2YgdGhlIHBhcmVudD8gKi8KKworICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
aW1hZ2UtY29udHJvbHMtYnV0dG9uOworCisgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1czsK
KyAgICBvcGFjaXR5OiAwOworfQorCisueC13ZWJraXQtaW1hZ2UtY29udHJvbHM6aG92ZXIgLngt
d2Via2l0LWltYWdlLWNvbnRyb2xzLWJ1dHRvbiB7CiAgICAgb3BhY2l0eTogMS4wOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRleHQuY3BwCmluZGV4IDg4ZmZiMGMuLmEz
ZDJkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udGV4dC5jcHAKQEAg
LTMyLDIyICszMiwxNSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb250ZXh0TWVudUNvbnRl
eHQ6OkNvbnRleHRNZW51Q29udGV4dCgpCi0jaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQotICAg
IDogbV9pc0ltYWdlQ29udHJvbChmYWxzZSkKLSNlbmRpZgogewogfQogCi1Db250ZXh0TWVudUNv
bnRleHQ6OkNvbnRleHRNZW51Q29udGV4dChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVz
dWx0LCBib29sIGlzSW1hZ2VDb250cm9sKQorQ29udGV4dE1lbnVDb250ZXh0OjpDb250ZXh0TWVu
dUNvbnRleHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCkKICAgICA6IG1faGl0
VGVzdFJlc3VsdChoaXRUZXN0UmVzdWx0KQogI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKLSAg
ICAsIG1faXNJbWFnZUNvbnRyb2woaXNJbWFnZUNvbnRyb2wpCisgICAgLCBtX2NvbnRyb2xsZWRJ
bWFnZShudWxscHRyKQogI2VuZGlmCiB7Ci0jaWYgIUVOQUJMRShJTUFHRV9DT05UUk9MUykKLSAg
ICBVTlVTRURfUEFSQU0oaXNJbWFnZUNvbnRyb2wpOwotI2VuZGlmCi0gICAgQVNTRVJUX1VOVVNF
RChpc0ltYWdlQ29udHJvbCwgdHJ1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udGV4dC5oCmluZGV4IDliNjkxY2QuLjk2MTlj
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRleHQuaApAQCAtMzAsMTgg
KzMwLDIwIEBACiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKICNpbmNsdWRlICJIaXRUZXN0
UmVzdWx0LmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb250ZXh0TWVudUNvbnRleHQgewogcHVibGljOgogICAgIENvbnRleHRNZW51Q29udGV4
dCgpOwotICAgIENvbnRleHRNZW51Q29udGV4dChjb25zdCBIaXRUZXN0UmVzdWx0JiwgYm9vbCBp
c0ltYWdlQ29udHJvbCA9IGZhbHNlKTsKKyAgICBDb250ZXh0TWVudUNvbnRleHQoY29uc3QgSGl0
VGVzdFJlc3VsdCYpOwogCiAgICAgY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCgp
IGNvbnN0IHsgcmV0dXJuIG1faGl0VGVzdFJlc3VsdDsgfQogCiAjaWYgRU5BQkxFKElNQUdFX0NP
TlRST0xTKQotICAgIGJvb2wgaXNJbWFnZUNvbnRyb2woKSBjb25zdCB7IHJldHVybiBtX2lzSW1h
Z2VDb250cm9sOyB9CisgICAgdm9pZCBzZXRDb250cm9sbGVkSW1hZ2UoSW1hZ2UqIGNvbnRyb2xs
ZWRJbWFnZSkgeyBtX2NvbnRyb2xsZWRJbWFnZSA9IGNvbnRyb2xsZWRJbWFnZTsgfQorICAgIElt
YWdlKiBjb250cm9sbGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xsZWRJbWFnZS5n
ZXQoKTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC00OSw3ICs1MSw3IEBAIHByaXZhdGU6CiAg
ICAgSGl0VGVzdFJlc3VsdCBtX2hpdFRlc3RSZXN1bHQ7CiAKICNpZiBFTkFCTEUoSU1BR0VfQ09O
VFJPTFMpCi0gICAgYm9vbCBtX2lzSW1hZ2VDb250cm9sOworICAgIFJlZlB0cjxJbWFnZT4gbV9j
b250cm9sbGVkSW1hZ2U7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCA3MDM3M2FhLi5hMzAzMDNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC02MCw2ICs2MCw3
IEBACiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybUV2ZW50LmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCkBAIC05Niw3ICs5Nyw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9s
bGVyOjpjbGVhckNvbnRleHRNZW51KCkKIAogdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6Omhh
bmRsZUNvbnRleHRNZW51RXZlbnQoRXZlbnQqIGV2ZW50KQogewotICAgIG1fY29udGV4dE1lbnUg
PSBjcmVhdGVDb250ZXh0TWVudShldmVudCk7CisgICAgbV9jb250ZXh0TWVudSA9IG1heWJlQ3Jl
YXRlQ29udGV4dE1lbnUoZXZlbnQpOwogICAgIGlmICghbV9jb250ZXh0TWVudSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0xMTQsNyArMTE1LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6
OnNob3dDb250ZXh0TWVudShFdmVudCogZXZlbnQsIFBhc3NSZWZQdHI8Q29udGV4dE1lbnUKIHsK
ICAgICBtX21lbnVQcm92aWRlciA9IG1lbnVQcm92aWRlcjsKIAotICAgIG1fY29udGV4dE1lbnUg
PSBjcmVhdGVDb250ZXh0TWVudShldmVudCk7CisgICAgbV9jb250ZXh0TWVudSA9IG1heWJlQ3Jl
YXRlQ29udGV4dE1lbnUoZXZlbnQpOwogICAgIGlmICghbV9jb250ZXh0TWVudSkgewogICAgICAg
ICBjbGVhckNvbnRleHRNZW51KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyOCw3ICsxMjksMjMg
QEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnNob3dDb250ZXh0TWVudShFdmVudCogZXZl
bnQsIFBhc3NSZWZQdHI8Q29udGV4dE1lbnUKICAgICBzaG93Q29udGV4dE1lbnUoZXZlbnQpOwog
fQogCi1QYXNzT3duUHRyPENvbnRleHRNZW51PiBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNyZWF0
ZUNvbnRleHRNZW51KEV2ZW50KiBldmVudCkKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCitz
dGF0aWMgSW1hZ2UqIGltYWdlRnJvbUltYWdlRWxlbWVudE5vZGUoTm9kZSYgbm9kZSkKK3sKKyAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS5yZW5kZXJlcigpOworICAgIGlmICghcmVu
ZGVyZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghcmVuZGVyZXItPmlzUmVu
ZGVySW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ2FjaGVkSW1hZ2UqIGlt
YWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlciktPmNhY2hlZEltYWdlKCk7CisgICAgaWYgKCFp
bWFnZSB8fCBpbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7Cit9CisjZW5k
aWYKKworUGFzc093blB0cjxDb250ZXh0TWVudT4gQ29udGV4dE1lbnVDb250cm9sbGVyOjptYXli
ZUNyZWF0ZUNvbnRleHRNZW51KEV2ZW50KiBldmVudCkKIHsKICAgICBBU1NFUlQoZXZlbnQpOwog
ICAgIApAQCAtMTQ1LDEwICsxNjIsMTYgQEAgUGFzc093blB0cjxDb250ZXh0TWVudT4gQ29udGV4
dE1lbnVDb250cm9sbGVyOjpjcmVhdGVDb250ZXh0TWVudShFdmVudCogZXZlbnQpCiAgICAgaWYg
KCFyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0jaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQotICAgIG1fY29udGV4dCA9IENvbnRleHRNZW51
Q29udGV4dChyZXN1bHQsIG5vZGUtPmlzSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50KCkpOwotI2Vs
c2UKICAgICBtX2NvbnRleHQgPSBDb250ZXh0TWVudUNvbnRleHQocmVzdWx0KTsKKworI2lmIEVO
QUJMRShJTUFHRV9DT05UUk9MUykKKyAgICBpZiAobm9kZS0+aXNJbWFnZUNvbnRyb2xzQnV0dG9u
RWxlbWVudCgpKSB7CisgICAgICAgIGlmIChJbWFnZSogaW1hZ2UgPSBpbWFnZUZyb21JbWFnZUVs
ZW1lbnROb2RlKCpyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpKQorICAgICAgICAgICAgbV9j
b250ZXh0LnNldENvbnRyb2xsZWRJbWFnZShpbWFnZSk7CisKKyAgICAgICAgLy8gRklYTUU6IElm
IHdlIGNvdWxkbid0IGdldCB0aGUgaW1hZ2UgdGhlbiB3ZSBzaG91bGRuJ3QgdHJ5IHRvIHNob3cg
dGhlIGltYWdlIGNvbnRyb2xzIG1lbnUgZm9yIGl0LgorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CiAjZW5kaWYKIAogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ29udGV4dE1lbnUpOwpA
QCAtODIyLDcgKzg0NSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgp
CiAKICNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCiAgICAgLy8gVGhlIGRlZmF1bHQgaW1hZ2Ug
Y29udHJvbCBtZW51IGdldHMgcG9wdWxhdGVkIHNvbGVseSBieSB0aGUgcGxhdGZvcm0uCi0gICAg
aWYgKG1fY29udGV4dC5pc0ltYWdlQ29udHJvbCgpKQorICAgIGlmIChtX2NvbnRleHQuY29udHJv
bGxlZEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCkBAIC0xNDI5LDYgKzE0NTIs
MjQgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnNob3dJbWFnZUNvbnRyb2xzTWVudShF
dmVudCogZXZlbnQpCiAgICAgaGFuZGxlQ29udGV4dE1lbnVFdmVudChldmVudCk7CiAgICAgbV9j
bGllbnQuc2hvd0NvbnRleHRNZW51KCk7CiB9CisKK3ZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
OjpyZXBsYWNlQ29udHJvbGxlZEltYWdlKFBhc3NSZWZQdHI8SW1hZ2U+IG5ld0ltYWdlKQorewor
ICAgIE5vZGUqIG5vZGUgPSBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlubmVyTm9uU2hhcmVk
Tm9kZSgpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnJhbWUqIGZy
YW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAg
IHJldHVybjsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigp
OworICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc1JlbmRlckltYWdlKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiByZXBs
YWNlZEltYWdlID0gbmV3IENhY2hlZEltYWdlKG5ld0ltYWdlLmdldCgpLCBmcmFtZS0+cGFnZSgp
LT5zZXNzaW9uSUQoKSk7CisgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlciktPmltYWdlUmVzb3Vy
Y2UoKS5zZXRDYWNoZWRJbWFnZShyZXBsYWNlZEltYWdlLmdldCgpKTsKK30KICNlbmRpZgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNv
bnRyb2xsZXIuaAppbmRleCBlODc4YjEwLi4xZWY3ZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmgKQEAgLTcxLDEwICs3MSwxMSBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCiAgICAgdm9pZCBzaG93SW1hZ2VDb250cm9sc01l
bnUoRXZlbnQqKTsKKyAgICB2b2lkIHJlcGxhY2VDb250cm9sbGVkSW1hZ2UoUGFzc1JlZlB0cjxJ
bWFnZT4pOwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgUGFzc093blB0cjxDb250ZXh0TWVudT4g
Y3JlYXRlQ29udGV4dE1lbnUoRXZlbnQqKTsKKyAgICBQYXNzT3duUHRyPENvbnRleHRNZW51PiBt
YXliZUNyZWF0ZUNvbnRleHRNZW51KEV2ZW50Kik7CiAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUo
RXZlbnQqKTsKICAgICAKICAgICB2b2lkIGFwcGVuZEl0ZW0oQ29udGV4dE1lbnVJdGVtJiwgQ29u
dGV4dE1lbnUqIHBhcmVudE1lbnUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGhlbWVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oCmlu
ZGV4IDQ0MjFjNTEuLmQ4YWIxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RoZW1lVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgK
QEAgLTU4LDYgKzU4LDkgQEAgZW51bSBDb250cm9sUGFydCB7CiAgICAgU2VhcmNoRmllbGRSZXN1
bHRzRGVjb3JhdGlvblBhcnQsIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblBhcnQsCiAgICAgU2Vh
cmNoRmllbGRDYW5jZWxCdXR0b25QYXJ0LCBTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXlQYXJ0LCBU
ZXh0RmllbGRQYXJ0LAogICAgIFJlbGV2YW5jeUxldmVsSW5kaWNhdG9yUGFydCwgQ29udGludW91
c0NhcGFjaXR5TGV2ZWxJbmRpY2F0b3JQYXJ0LCBEaXNjcmV0ZUNhcGFjaXR5TGV2ZWxJbmRpY2F0
b3JQYXJ0LCBSYXRpbmdMZXZlbEluZGljYXRvclBhcnQsCisjaWYgRU5BQkxFKElNQUdFX0NPTlRS
T0xTKQorICAgIEltYWdlQ29udHJvbHNCdXR0b25QYXJ0LAorI2VuZGlmCiAgICAgVGV4dEFyZWFQ
YXJ0LCBDYXBzTG9ja0luZGljYXRvclBhcnQKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmgKaW5kZXggMDIzYmEzZS4uMTBlMGMyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTMwLDcgKzMwLDcgQEAgY2xhc3MgUmVu
ZGVyUmVwbGFjZWQgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5S
ZW5kZXJSZXBsYWNlZCgpOwogCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkICA9IENvbXB1dGVBY3R1YWwpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCA9IENvbXB1dGVBY3R1YWwpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVp
Z2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBMYXlvdXRSZWN0IHJlcGxhY2VkQ29udGVudFJl
Y3QoY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCAyOTE5Y2I4Li45YzkyMWM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTI1Myw2ICsyNTMsMTAgQEAg
dm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgIGNhc2UgSW5wdXRTcGVlY2hCdXR0b25QYXJ0Ogog
ICAgICAgICByZXR1cm4gYWRqdXN0SW5wdXRGaWVsZFNwZWVjaEJ1dHRvblN0eWxlKCZzdHlsZVJl
c29sdmVyLCAmc3R5bGUsIGUpOwogI2VuZGlmCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQor
ICAgIGNhc2UgSW1hZ2VDb250cm9sc0J1dHRvblBhcnQ6CisgICAgICAgIGJyZWFrOworI2VuZGlm
CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzg2LDYgKzM5MCwxMCBA
QCBib29sIFJlbmRlclRoZW1lOjpwYWludChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZQogICAgIGNhc2UgSW5wdXRTcGVlY2hCdXR0b25QYXJ0
OgogICAgICAgICByZXR1cm4gcGFpbnRJbnB1dEZpZWxkU3BlZWNoQnV0dG9uKG8sIHBhaW50SW5m
bywgcik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgY2FzZSBJbWFn
ZUNvbnRyb2xzQnV0dG9uUGFydDoKKyAgICAgICAgcmV0dXJuIHBhaW50SW1hZ2VDb250cm9sc0J1
dHRvbihvLCBwYWludEluZm8sIHIpOworI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQpAQCAtNDQwLDYgKzQ0OCw5IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50Qm9y
ZGVyT25seShSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjCiAj
aWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICBjYXNlIElucHV0U3BlZWNoQnV0dG9uUGFydDoK
ICNlbmRpZgorI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICBjYXNlIEltYWdlQ29udHJv
bHNCdXR0b25QYXJ0OgorI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtNDk5LDYgKzUxMCw5IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50RGVjb3JhdGlvbnMo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUGFpbnRJbmZvJiBwYWluCiAjaWYgRU5BQkxF
KElOUFVUX1NQRUVDSCkKICAgICBjYXNlIElucHV0U3BlZWNoQnV0dG9uUGFydDoKICNlbmRpZgor
I2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICBjYXNlIEltYWdlQ29udHJvbHNCdXR0b25Q
YXJ0OgorI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRleCBkM2M5YTk2Li4wYWQ4NmJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAtMjQ0LDYgKzI0NCwxMCBAQCBw
dWJsaWM6CiAgICAgZW51bSBGaWxlVXBsb2FkRGVjb3JhdGlvbnMgeyBTaW5nbGVGaWxlLCBNdWx0
aXBsZUZpbGVzIH07CiAgICAgdmlydHVhbCBib29sIHBhaW50RmlsZVVwbG9hZEljb25EZWNvcmF0
aW9ucyhSZW5kZXJPYmplY3QqIC8qaW5wdXRSZW5kZXJlciovLCBSZW5kZXJPYmplY3QqIC8qYnV0
dG9uUmVuZGVyZXIqLywgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYsIEljb24qLCBG
aWxlVXBsb2FkRGVjb3JhdGlvbnMpIHsgcmV0dXJuIHRydWU7IH0KIAorI2lmIEVOQUJMRShJTUFH
RV9DT05UUk9MUykKKyAgICB2aXJ0dWFsIEludFNpemUgaW1hZ2VDb250cm9sc0J1dHRvblNpemUo
Y29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CisjZW5kaWYK
KwogcHJvdGVjdGVkOgogICAgIC8vIFRoZSBwbGF0Zm9ybSBzZWxlY3Rpb24gY29sb3IuCiAgICAg
dmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNv
bnN0OwpAQCAtMzYwLDYgKzM2NCwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KIAorI2lmIEVOQUJMRShJTUFH
RV9DT05UUk9MUykKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRJbWFnZUNvbnRyb2xzQnV0dG9uKFJl
bmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0
cnVlOyB9CisjZW5kaWYKKwogcHVibGljOgogICAgIC8vIE1ldGhvZHMgZm9yIHN0YXRlIHF1ZXJ5
aW5nCiAgICAgQ29udHJvbFN0YXRlcyBjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVu
ZGVyT2JqZWN0KiBvKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLmgKaW5kZXggM2IxOTk1YS4uYjQzYWViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLmgKQEAgLTI4LDYgKzI4LDEwIEBACiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRS
T0xTKQorT0JKQ19DTEFTUyBOU1NlcnZpY2VzUm9sbG92ZXJCdXR0b25DZWxsOworI2VuZGlmCisK
IE9CSkNfQ0xBU1MgV2ViQ29yZVJlbmRlclRoZW1lTm90aWZpY2F0aW9uT2JzZXJ2ZXI7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTIwMywxNiArMjA3LDE2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRTZWFyY2hDZWxsU3RhdGUoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50UmVjdCYpOwogICAg
IHZvaWQgc2V0U2VhcmNoRmllbGRTaXplKFJlbmRlclN0eWxlKikgY29uc3Q7CiAKLSAgICBOU1Bv
cFVwQnV0dG9uQ2VsbCogcG9wdXBCdXR0b24oKSBjb25zdDsKLSAgICBOU1NlYXJjaEZpZWxkQ2Vs
bCogc2VhcmNoKCkgY29uc3Q7Ci0gICAgTlNNZW51KiBzZWFyY2hNZW51VGVtcGxhdGUoKSBjb25z
dDsKLSAgICBOU1NsaWRlckNlbGwqIHNsaWRlclRodW1iSG9yaXpvbnRhbCgpIGNvbnN0OwotICAg
IE5TU2xpZGVyQ2VsbCogc2xpZGVyVGh1bWJWZXJ0aWNhbCgpIGNvbnN0OwotICAgIE5TVGV4dEZp
ZWxkQ2VsbCogdGV4dEZpZWxkKCkgY29uc3Q7CisgICAgTlNQb3BVcEJ1dHRvbkNlbGwgKnBvcHVw
QnV0dG9uKCkgY29uc3Q7CisgICAgTlNTZWFyY2hGaWVsZENlbGwgKnNlYXJjaCgpIGNvbnN0Owor
ICAgIE5TTWVudSAqc2VhcmNoTWVudVRlbXBsYXRlKCkgY29uc3Q7CisgICAgTlNTbGlkZXJDZWxs
ICpzbGlkZXJUaHVtYkhvcml6b250YWwoKSBjb25zdDsKKyAgICBOU1NsaWRlckNlbGwgKnNsaWRl
clRodW1iVmVydGljYWwoKSBjb25zdDsKKyAgICBOU1RleHRGaWVsZENlbGwgKnRleHRGaWVsZCgp
IGNvbnN0OwogCiAjaWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCiAgICAgTlNMZXZlbEluZGljYXRv
clN0eWxlIGxldmVsSW5kaWNhdG9yU3R5bGVGb3IoQ29udHJvbFBhcnQpIGNvbnN0OwotICAgIE5T
TGV2ZWxJbmRpY2F0b3JDZWxsKiBsZXZlbEluZGljYXRvckZvcihjb25zdCBSZW5kZXJNZXRlciop
IGNvbnN0OworICAgIE5TTGV2ZWxJbmRpY2F0b3JDZWxsICpsZXZlbEluZGljYXRvckZvcihjb25z
dCBSZW5kZXJNZXRlciopIGNvbnN0OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfRUxF
TUVOVCkKQEAgLTIyMSw3ICsyMjUsMTIgQEAgcHJpdmF0ZToKICAgICBjb25zdCBpbnQqIHByb2dy
ZXNzQmFyTWFyZ2lucyhOU0NvbnRyb2xTaXplKSBjb25zdDsKICNlbmRpZgogCi1wcml2YXRlOgor
I2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRJbWFnZUNv
bnRyb2xzQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJbnRTaXplIGltYWdlQ29udHJv
bHNCdXR0b25TaXplKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IG92ZXJyaWRlOworICAgIE5T
U2VydmljZXNSb2xsb3ZlckJ1dHRvbkNlbGwgKnNlcnZpY2VzUm9sbG92ZXJCdXR0b25DZWxsKCkg
Y29uc3Q7CisjZW5kaWYKKwogICAgIG11dGFibGUgUmV0YWluUHRyPE5TUG9wVXBCdXR0b25DZWxs
PiBtX3BvcHVwQnV0dG9uOwogICAgIG11dGFibGUgUmV0YWluUHRyPE5TU2VhcmNoRmllbGRDZWxs
PiBtX3NlYXJjaDsKICAgICBtdXRhYmxlIFJldGFpblB0cjxOU01lbnU+IG1fc2VhcmNoTWVudVRl
bXBsYXRlOwpAQCAtMjI5LDYgKzIzOCw5IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZXRhaW5Q
dHI8TlNTbGlkZXJDZWxsPiBtX3NsaWRlclRodW1iVmVydGljYWw7CiAgICAgbXV0YWJsZSBSZXRh
aW5QdHI8TlNMZXZlbEluZGljYXRvckNlbGw+IG1fbGV2ZWxJbmRpY2F0b3I7CiAgICAgbXV0YWJs
ZSBSZXRhaW5QdHI8TlNUZXh0RmllbGRDZWxsPiBtX3RleHRGaWVsZDsKKyNpZiBFTkFCTEUoSU1B
R0VfQ09OVFJPTFMpCisgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNTZXJ2aWNlc1JvbGxvdmVyQnV0
dG9uQ2VsbD4gbV9zZXJ2aWNlc1JvbGxvdmVyQnV0dG9uOworI2VuZGlmCiAKICAgICBib29sIG1f
aXNTbGlkZXJUaHVtYkhvcml6b250YWxQcmVzc2VkOwogICAgIGJvb2wgbV9pc1NsaWRlclRodW1i
VmVydGljYWxQcmVzc2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCmluZGV4IGRhZDEyYjkuLjRmZTJjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KQEAgLTcwLDEwICs3MCwzNiBAQAogI2ltcG9ydCA8bWF0aC5oPgog
CiAjaWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCi0jaW5jbHVkZSAiUmVuZGVyTWV0ZXIuaCIKLSNp
bmNsdWRlICJIVE1MTWV0ZXJFbGVtZW50LmgiCisjaW1wb3J0ICJSZW5kZXJNZXRlci5oIgorI2lt
cG9ydCAiSFRNTE1ldGVyRWxlbWVudC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU1BR0VfQ09O
VFJPTFMpCisKKyNpZiBfX2hhc19pbmNsdWRlKDxBcHBLaXQvQXBwS2l0RGVmaW5lc19Qcml2YXRl
Lmg+KQorI2ltcG9ydCA8QXBwS2l0L0FwcEtpdERlZmluZXNfUHJpdmF0ZS5oPgorI2Vsc2UKKyNk
ZWZpbmUgQVBQS0lUX1BSSVZBVEVfQ0xBU1MKKyNlbmRpZgorCisjaWYgX19oYXNfaW5jbHVkZSg8
QXBwS2l0L05TU2VydmljZXNSb2xsb3ZlckJ1dHRvbkNlbGwuaD4pCisjaW1wb3J0IDxBcHBLaXQv
TlNTZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2VsbC5oPgorI2VuZGlmCisKK0BpbnRlcmZhY2UgTlNT
ZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2VsbCAoRGV0YWlscykKKysgKE5TU2VydmljZXNSb2xsb3Zl
ckJ1dHRvbkNlbGwgKilzZXJ2aWNlUm9sbG92ZXJCdXR0b25DZWxsRm9yU3R5bGU6KE5TU2hhcmlu
Z1NlcnZpY2VQaWNrZXJTdHlsZSlzdHlsZTsKK0BlbmQKKworI2lmIF9faGFzX2luY2x1ZGUoPEFw
cEtpdC9OU1NoYXJpbmdTZXJ2aWNlX1ByaXZhdGUuaD4pCisjaW1wb3J0IDxBcHBLaXQvTlNTaGFy
aW5nU2VydmljZV9Qcml2YXRlLmg+CisjZWxzZQordHlwZWRlZiBlbnVtIHsKKyAgICBOU1NoYXJp
bmdTZXJ2aWNlUGlja2VyU3R5bGVSb2xsb3ZlciA9IDEKK30gTlNTaGFyaW5nU2VydmljZVBpY2tl
clN0eWxlOworI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisKIC8v
IFRoZSBtZXRob2RzIGluIHRoaXMgZmlsZSBhcmUgc3BlY2lmaWMgdG8gdGhlIE1hYyBPUyBYIHBs
YXRmb3JtLgogCiAvLyBGSVhNRTogVGhlIHBsYXRmb3JtLWluZGVwZW5kZW50IGNvZGUgaW4gdGhp
cyBjbGFzcyBzaG91bGQgYmUgZmFjdG9yZWQgb3V0IGFuZCBtZXJnZWQgd2l0aCBSZW5kZXJUaGVt
ZVNhZmFyaS4KQEAgLTE5NDEsNiArMTk2Nyw0MyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVNYWM6OmZp
bGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IEZpbGVMaXN0KiBmaWxlTGlzdCwgY29uc3QgRm9udAog
ICAgIHJldHVybiBTdHJpbmdUcnVuY2F0b3I6OmNlbnRlclRydW5jYXRlKHN0clRvVHJ1bmNhdGUs
IHdpZHRoLCBmb250LCBTdHJpbmdUcnVuY2F0b3I6OkVuYWJsZVJvdW5kaW5nSGFja3MpOwogfQog
CisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorTlNTZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2Vs
bCogUmVuZGVyVGhlbWVNYWM6OnNlcnZpY2VzUm9sbG92ZXJCdXR0b25DZWxsKCkgY29uc3QKK3sK
KyAgICBpZiAoIW1fc2VydmljZXNSb2xsb3ZlckJ1dHRvbikgeworICAgICAgICBtX3NlcnZpY2Vz
Um9sbG92ZXJCdXR0b24gPSBbTlNTZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2VsbCBzZXJ2aWNlUm9s
bG92ZXJCdXR0b25DZWxsRm9yU3R5bGU6TlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlUm9sbG92
ZXJdOworICAgICAgICBbbV9zZXJ2aWNlc1JvbGxvdmVyQnV0dG9uIHNldEJvcmRlcmVkOk5PXTsK
KyAgICB9CisKKyAgICByZXR1cm4gbV9zZXJ2aWNlc1JvbGxvdmVyQnV0dG9uLmdldCgpOworfQor
Citib29sIFJlbmRlclRoZW1lTWFjOjpwYWludEltYWdlQ29udHJvbHNCdXR0b24oUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkK
K3sKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgTlNTZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2Vs
bCAqY2VsbCA9IHNlcnZpY2VzUm9sbG92ZXJCdXR0b25DZWxsKCk7CisKKyAgICBMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsK
KworICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICBw
YWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCAtcmVjdC5oZWlnaHQoKSAtIHJl
Y3QueSgpKTsKKworICAgIEludFJlY3QgaW5uZXJGcmFtZShJbnRQb2ludCgpLCByZWN0LnNpemUo
KSk7CisgICAgW2NlbGwgZHJhd1dpdGhGcmFtZTppbm5lckZyYW1lIGluVmlldzpkb2N1bWVudFZp
ZXdGb3IobyldOworICAgIFtjZWxsIHNldENvbnRyb2xWaWV3Om5pbF07CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworSW50U2l6ZSBSZW5kZXJUaGVtZU1hYzo6aW1hZ2VDb250cm9sc0J1dHRvblNp
emUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QKK3sKKyAgICBOU1NlcnZpY2VzUm9sbG92ZXJC
dXR0b25DZWxsICpjZWxsID0gc2VydmljZXNSb2xsb3ZlckJ1dHRvbkNlbGwoKTsKKyAgICByZXR1
cm4gSW50U2l6ZShbY2VsbCBjZWxsU2l6ZV0pOworfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MWFhNjkxLi4yZWU0MDc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDE0LTAzLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgorCisgICAgICAgIEhvb2sgdXAgaW1hZ2UgY29udHJvbHMgZm9yIFdlYktpdDEKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA2MgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTU5NjQ4MDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgQWRkIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci4KKwogMjAxNC0w
My0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtXaW5dIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIxNjUzMTAuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZDE4ZGQyLi5l
YTgxNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTgwLDYgKzgwLDggQEAKIAkJMjI0MTAwRjkwOTE4MTkwMTAwRDJEMjY2IC8qIFdl
YlBsdWdpbnNQcml2YXRlLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyMjQxMDBGODA5MTgxOTAxMDBEMkQyNjYgLyogV2ViUGx1Z2luc1ByaXZhdGUubSAq
LzsgfTsKIAkJMjJGMjE5Q0MwOEQyMzY3MzAwMzBFMDc4IC8qIFdlYkJhY2tGb3J3YXJkTGlzdFBy
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIy
RjIxOUNCMDhEMjM2NzMwMDMwRTA3OCAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcml2YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjlBRUY5NjAx
MzRDNzZGQjAwRkU1MDk2IC8qIE91dGxvb2tRdWlya3NVc2VyU2NyaXB0LmpzIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUFFRjk1RDEzNEM3NTU0MDBG
RTUwOTYgLyogT3V0bG9va1F1aXJrc1VzZXJTY3JpcHQuanMgKi87IH07CisJCTJEMjUzOTY2MThD
RTg1QzIwMDI3MDIyMiAvKiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjUzOTY0MThDRTg1
QzIwMDI3MDIyMiAvKiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaCAqLzsgfTsK
KwkJMkQyNTM5NjcxOENFODVDMjAwMjcwMjIyIC8qIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29u
dHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEMjUzOTY1MThDRTg1QzIwMDI3MDIyMiAvKiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIubW0gKi87IH07CiAJCTMxMkUyRkU1MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmlj
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
MkUyRkUzMTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTJFMkZFNjE0RTQ4MTgyMDA3
Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzEyRTJGRTQxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNh
dGlvbi5tbSAqLzsgfTsKIAkJMzEyRTJGRTkxNEU0ODIxNTAwN0NDQTE4IC8qIFdlYk5vdGlmaWNh
dGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTJFMkZFODE0RTQ4MjE1MDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwu
aCAqLzsgfTsKQEAgLTUyNyw2ICs1MjksOCBAQAogCQkyMkYyMTlDQjA4RDIzNjczMDAzMEUwNzgg
LyogV2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTI1
NjhDNzJDMDE3NDkxMkQwRUNBMTQ5RSAvKiBXZWJLaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTI5QUVGOTVEMTM0Qzc1NTQw
MEZFNTA5NiAvKiBPdXRsb29rUXVpcmtzVXNlclNjcmlwdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuamF2YXNjcmlwdDsgcGF0aCA9IE91dGxvb2tRdWlya3NVc2VyU2NyaXB0LmpzOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyRDI1Mzk2NDE4Q0U4NUMyMDAyNzAyMjIgLyogV2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyRDI1Mzk2NTE4Q0U4NUMyMDAyNzAyMjIgLyogV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRDM2RkQ1RTAzRjc4RjlFMDBBODAxNjYgLyogV2ViRm9ybURl
bGVnYXRlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkZvcm1EZWxlZ2F0ZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTJEODFEQUIyMDNFQjBCMkQwMEE4
MDE2NiAvKiBXZWJGb3JtRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRm9ybURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQkyRDgxREFCMzAzRUIwQjJE
MDBBODAxNjYgLyogV2ViRm9ybURlbGVnYXRlLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdlYkZvcm1EZWxlZ2F0ZS5tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTExMzQsNiAr
MTEzOCw4IEBACiAJCQkJOTM0NUREQUUwMzY1RkIyNzAwODYzNUNFIC8qIFdlYk5TV2luZG93RXh0
cmFzLmggKi8sCiAJCQkJOTM0NUREQUYwMzY1RkIyNzAwODYzNUNFIC8qIFdlYk5TV2luZG93RXh0
cmFzLm0gKi8sCiAJCQkJQTU3RTJGMjIxMjA3NDlFNjAwMDQ4REYzIC8qIFdlYlF1b3RhTWFuYWdl
ci5oICovLAorCQkJCTJEMjUzOTY0MThDRTg1QzIwMDI3MDIyMiAvKiBXZWJTaGFyaW5nU2Vydmlj
ZVBpY2tlckNvbnRyb2xsZXIuaCAqLywKKwkJCQkyRDI1Mzk2NTE4Q0U4NUMyMDAyNzAyMjIgLyog
V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tICovLAogCQkJCUY1OTY2OEM4MDJB
RDI5MjMwMTg2MzVDQSAvKiBXZWJTdHJpbmdUcnVuY2F0b3IuaCAqLywKIAkJCQlGNTk2NjhDOTAy
QUQyOTIzMDE4NjM1Q0EgLyogV2ViU3RyaW5nVHJ1bmNhdG9yLm1tICovLAogCQkJCUREN0NERUU2
MEEyM0JBOUUwMDA2OTkyOCAvKiBXZWJUeXBlc0ludGVybmFsLmggKi8sCkBAIC0xODU0LDYgKzE4
NjAsNyBAQAogCQkJCTkzOTgxMDI0MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOU1ZpZXdFeHRyYXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDI1MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOU1dp
bmRvd0V4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4QTU3OTkxNDNFNzI3MDAwMTI1RjUw
IC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDI1
Mzk2NjE4Q0U4NUMyMDAyNzAyMjIgLyogV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTAyQTA4MjRCRjAxMDA4REYwMzggLyogV2ViUGFu
ZWxBdXRoZW50aWNhdGlvbkhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QjZGQjRFMTA2
MzUzMEMwMDBGREIzQiAvKiBXZWJQREZEb2N1bWVudEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTM5ODEwQTUwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBERlJlcHJlc2VudGF0aW9uLmggaW4g
SGVhZGVycyAqLywKQEAgLTIxNjEsNiArMjE2OCw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVp
bGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
KwkJCQkyRDI1Mzk2NzE4Q0U4NUMyMDAyNzAyMjIgLyogV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
b250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2MDUxOTExNzUwMkE1RDAwQkM2MkY1
IC8qIEJpbmFyeVByb3BlcnR5TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTEwMTA4
MjRCRjAxMDA4REYwMzggLyogQ2FyYm9uVXRpbHMubSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgx
MEZEMDgyNEJGMDEwMDhERjAzOCAvKiBDYXJib25XaW5kb3dBZGFwdGVyLm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZWNiZDIwYi4uMGJkYTdiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMzIEBACisyMDE0LTAzLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgorCisgICAgICAgIEhvb2sgdXAgaW1hZ2UgY29udHJvbHMgZm9yIFdlYktp
dDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA2
MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTU5NjQ4MDk+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlj
a2VyQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBNaXNjL1dlYlNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlciBpbml0V2l0aEltYWdlOm1lbnVDbGllbnQ6XSk6CisgICAgICAgICgt
W1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciBtZW51XSk6CisgICAgICAgICgtW1dl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciBzaGFyaW5nU2VydmljZVBpY2tlcjpkZWxl
Z2F0ZUZvclNoYXJpbmdTZXJ2aWNlOl0pOgorICAgICAgICAoLVtXZWJTaGFyaW5nU2VydmljZVBp
Y2tlckNvbnRyb2xsZXIgc2hhcmluZ1NlcnZpY2VQaWNrZXI6ZGlkQ2hvb3NlU2hhcmluZ1NlcnZp
Y2U6XSk6CisgICAgICAgICgtW1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciBzaGFy
aW5nU2VydmljZTpkaWRTaGFyZUl0ZW1zOl0pOgorICAgICAgICAoLVtXZWJTaGFyaW5nU2Vydmlj
ZVBpY2tlckNvbnRyb2xsZXIgc2hhcmluZ1NlcnZpY2U6ZGlkRmFpbFRvU2hhcmVJdGVtczplcnJv
cjpdKToKKyAgICAgICAgKC1bV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIHNoYXJp
bmdTZXJ2aWNlOnNvdXJjZVdpbmRvd0ZvclNoYXJlSXRlbXM6c2hhcmluZ0NvbnRlbnRTY29wZTpd
KToKKyAgICAgICAgQWRkIGEgTlNTaGFyaW5nU2VydmljZURlbGVnYXRlIGFuZCBOU1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGUsIHdoaWNoIHdpbGwgYWxzbworICAgICAgICBwcm92aWRlIGEg
TlNNZW51IGluc3RhbmNlIGZvciBXZWJDb250ZXh0TWVudUNsaWVudCB0byBwb3AgdXAgd2hlbiBp
bWFnZSBjb250cm9scyBhcmUgbmVlZGVkLgorICAgICAgICBXaGVuIGRhdGEgaXMgcmV0dXJuZWQg
ZnJvbSB0aGUgc2VydmljZSwgaXQgaXMgcmUtaW5zZXJ0ZWQgaW50byB0aGUgaW1hZ2UgdmlhIHJl
cGxhY2VDb250cm9sbGVkSW1hZ2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51Rm9y
RXZlbnQpOgorICAgICAgICBGYWN0b3Igb3V0IGNvZGUgdG8gZGVjaWRlIHdoaWNoIE5TTWVudSB0
byB1c2UsIHNvIHRoYXQgd2UgY2FuIHVzZSBlYXJseS1yZXR1cm5zIHRvIHNpbXBsaWZ5IGl0Lgor
ICAgICAgICBJZiB3ZSBoaXQgYW4gaW1hZ2Ugd2l0aCBpbWFnZSBjb250cm9scywgdXNlIHRoZSBX
ZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIncyBtZW51LgorCisgICAgICAgIChXZWJD
b250ZXh0TWVudUNsaWVudDo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvbnRleHRN
ZW51Q2xpZW50OjpjbGVhclNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcik6CisKIDIwMTQt
MDMtMDYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgW01h
Y10gRG9uJ3QgcGVyZm9ybSBhIHJvdW5kLXRyaXAgdGhyb3VnaCBXZWJQcm9jZXNzIGJlZm9yZSBp
bnRlcnByZXRpbmcga2V5IGV2ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlz
Yy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFj
L01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYWViMGU5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLmgKQEAgLTAs
MCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisKK0Bj
bGFzcyBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyOworQHByb3RvY29sIE5TU2hhcmluZ1NlcnZpY2VE
ZWxlZ2F0ZTsKK0Bwcm90b2NvbCBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGU7CisKK2Ns
YXNzIFdlYkNvbnRleHRNZW51Q2xpZW50OworCitAaW50ZXJmYWNlIFdlYlNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlciA6IE5TT2JqZWN0IDxOU1NoYXJpbmdTZXJ2aWNlRGVsZWdhdGUsIE5T
U2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZT4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
SW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBtZW51Q2xpZW50OihXZWJDb250ZXh0TWVudUNsaWVudCop
bWVudUNsaWVudDsKKy0gKE5TTWVudSAqKW1lbnU7CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
b250cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMzQ3ZTgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlci5tbQpAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgIldlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oIgorCisjaWYgRU5BQkxF
KElNQUdFX0NPTlRST0xTKQorCisjaW1wb3J0ICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgorI2lt
cG9ydCAiV2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0IDxBcHBLaXQvTlNTaGFyaW5nU2Vydmlj
ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgorCisjaWYg
X19oYXNfaW5jbHVkZSg8QXBwS2l0L05TU2hhcmluZ1NlcnZpY2VfUHJpdmF0ZS5oPikKKyNpbXBv
cnQgPEFwcEtpdC9OU1NoYXJpbmdTZXJ2aWNlX1ByaXZhdGUuaD4KKyNlbHNlCit0eXBlZGVmIGVu
dW0geworICAgIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZVJvbGxvdmVyID0gMQorfSBOU1No
YXJpbmdTZXJ2aWNlUGlja2VyU3R5bGU7CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIg
eworICAgIFdlYkNvbnRleHRNZW51Q2xpZW50KiBfbWVudUNsaWVudDsKKyAgICBSZXRhaW5QdHI8
TlNTaGFyaW5nU2VydmljZVBpY2tlcj4gX3BpY2tlcjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBtZW51Q2xpZW50OihXZWJDb250ZXh0TWVudUNs
aWVudCopbWVudUNsaWVudAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgX3BpY2tlciA9IGFkb3B0TlMoW1tOU1NoYXJpbmdTZXJ2
aWNlUGlja2VyIGFsbG9jXSBpbml0V2l0aEl0ZW1zOkBbIGltYWdlIF1dKTsKKyAgICBbX3BpY2tl
ciBzZXRTdHlsZTpOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGVSb2xsb3Zlcl07CisgICAgW19w
aWNrZXIgc2V0RGVsZWdhdGU6c2VsZl07CisKKyAgICBfbWVudUNsaWVudCA9IG1lbnVDbGllbnQ7
CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoTlNNZW51ICopbWVudQoreworICAgIHJldHVy
biBbX3BpY2tlciBtZW51XTsKK30KKworI3ByYWdtYSBtYXJrIE5TU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZSBtZXRob2RzCisKKy0gKGlkIDxOU1NoYXJpbmdTZXJ2aWNlRGVsZWdhdGU+KXNo
YXJpbmdTZXJ2aWNlUGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICopc2hhcmluZ1NlcnZp
Y2VQaWNrZXIgZGVsZWdhdGVGb3JTaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNo
YXJpbmdTZXJ2aWNlCit7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2hhcmluZ1Nl
cnZpY2VQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgKilzaGFyaW5nU2VydmljZVBpY2tl
ciBkaWRDaG9vc2VTaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNlcnZpY2UKK3sK
KyAgICBpZiAoIXNlcnZpY2UpCisgICAgICAgIF9tZW51Q2xpZW50LT5jbGVhclNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlcigpOworfQorCisjcHJhZ21hIG1hcmsgTlNTaGFyaW5nU2Vydmlj
ZURlbGVnYXRlIG1ldGhvZHMKKworLSAodm9pZClzaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2Vy
dmljZSAqKXNoYXJpbmdTZXJ2aWNlIGRpZFNoYXJlSXRlbXM6KE5TQXJyYXkgKilpdGVtcworewor
ICAgIC8vIFdlIG9ubHkgc2VuZCBvbmUgaXRlbSwgc28gd2Ugc2hvdWxkIG9ubHkgZ2V0IG9uZSBp
dGVtIGJhY2suCisgICAgaWYgKFtpdGVtcyBjb3VudF0gIT0gMSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IHNvdXJjZSA9IGFkb3B0Q0YoQ0dJbWFn
ZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChDRkRhdGFSZWYpW2l0ZW1zIG9iamVjdEF0SW5kZXg6MF0s
IE5VTEwpKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGFkb3B0Q0YoQ0dJ
bWFnZVNvdXJjZUNyZWF0ZUltYWdlQXRJbmRleChzb3VyY2UuZ2V0KCksIDAsIE5VTEwpKTsKKyAg
ICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShjZ0ltYWdlLmdldCgp
KTsKKworICAgIFBhZ2UqIHBhZ2UgPSBbX21lbnVDbGllbnQtPndlYlZpZXcoKSBwYWdlXTsKKyAg
ICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPmNvbnRleHRNZW51Q29u
dHJvbGxlcigpLnJlcGxhY2VDb250cm9sbGVkSW1hZ2UoaW1hZ2UuZ2V0KCkpOworCisgICAgX21l
bnVDbGllbnQtPmNsZWFyU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyKCk7Cit9CisKKy0g
KHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBk
aWRGYWlsVG9TaGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMgZXJyb3I6KE5TRXJyb3IgKillcnJv
cgoreworICAgIF9tZW51Q2xpZW50LT5jbGVhclNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
cigpOworfQorCistIChOU1dpbmRvdyAqKXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNl
ICopc2hhcmluZ1NlcnZpY2Ugc291cmNlV2luZG93Rm9yU2hhcmVJdGVtczooTlNBcnJheSAqKWl0
ZW1zIHNoYXJpbmdDb250ZW50U2NvcGU6KE5TU2hhcmluZ0NvbnRlbnRTY29wZSAqKXNoYXJpbmdD
b250ZW50U2NvcGUKK3sKKyAgICByZXR1cm4gW19tZW51Q2xpZW50LT53ZWJWaWV3KCkgd2luZG93
XTsKK30KKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IGEzOGRhZDQuLmQ2ZDYz
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0IDxXZWJDb3Jl
L0NvbnRleHRNZW51Q2xpZW50Lmg+CiAKK0BjbGFzcyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNv
bnRyb2xsZXI7CiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQg
OiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQgewpAQCAtNDgsOCArNDksMTcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoU3BvdGxpZ2h0KCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpIG92ZXJyaWRlOwogCisjaWYgRU5B
QkxFKElNQUdFX0NPTlRST0xTKQorICAgIHZvaWQgY2xlYXJTaGFyaW5nU2VydmljZVBpY2tlckNv
bnRyb2xsZXIoKTsKKyNlbmRpZgorCiAgICAgV2ViVmlldyAqd2ViVmlldygpIHsgcmV0dXJuIG1f
d2ViVmlldzsgfQogICAgICAgICAKIHByaXZhdGU6CisgICAgTlNNZW51ICpjb250ZXh0TWVudUZv
ckV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKnZpZXcpOworCiAgICAgV2ViVmlldyAqbV93
ZWJWaWV3OworI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICBSZXRhaW5QdHI8V2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyPiBtX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJv
bGxlcjsKKyNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggODViYTllYS4uNWNhN2UxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiV2ViQ29udGV4
dE1lbnVDbGllbnQuaCIKIAorI2ltcG9ydCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2ltcG9y
dCAiV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaCIKICNpbXBvcnQgIldlYkVsZW1l
bnREaWN0aW9uYXJ5LmgiCiAjaW1wb3J0ICJXZWJGcmFtZS5oIgpAQCAtMzgsNiArMzksNyBAQAog
I2ltcG9ydCAiV2ViSFRNTFZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViS2l0VmVyc2lvbkNo
ZWNrcy5oIgogI2ltcG9ydCAiV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLmgiCisjaW1wb3J0ICJXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGUu
aCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3Lmgi
CkBAIC0zNTIsNiArMzU0LDIyIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnN0b3BTcGVh
a2luZygpCiAgICAgW05TQXBwIHN0b3BTcGVha2luZzpuaWxdOwogfQogCitOU01lbnUgKldlYkNv
bnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUZvckV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1Zp
ZXcgKnZpZXcpCit7CisgICAgUGFnZSogcGFnZSA9IFttX3dlYlZpZXcgcGFnZV07CisgICAgaWYg
KCFwYWdlKQorICAgICAgICByZXR1cm4gbmlsOworCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xT
KQorICAgIGlmIChJbWFnZSogaW1hZ2UgPSBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS5j
b250ZXh0KCkuY29udHJvbGxlZEltYWdlKCkpIHsKKyAgICAgICAgbV9zaGFyaW5nU2VydmljZVBp
Y2tlckNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9s
bGVyIGFsbG9jXSBpbml0V2l0aEltYWdlOmltYWdlLT5nZXROU0ltYWdlKCkgbWVudUNsaWVudDp0
aGlzXSk7CisgICAgICAgIHJldHVybiBbbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIg
bWVudV07CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gW3ZpZXcgbWVudUZvckV2ZW50OmV2
ZW50XTsKK30KKwogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hvd0NvbnRleHRNZW51KCkK
IHsKICAgICBQYWdlKiBwYWdlID0gW21fd2ViVmlldyBwYWdlXTsKQEAgLTM2NCwxNCArMzgyLDE5
IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNob3dDb250ZXh0TWVudSgpCiAgICAgaWYg
KCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIEludFBvaW50IHBvaW50ID0gZnJh
bWVWaWV3LT5jb250ZW50c1RvV2luZG93KHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLmhp
dFRlc3RSZXN1bHQoKS5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCkpOwogICAgIE5TVmll
dyogdmlldyA9IGZyYW1lVmlldy0+ZG9jdW1lbnRWaWV3KCk7CisgICAgSW50UG9pbnQgcG9pbnQg
PSBmcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xs
ZXIoKS5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgpKTsKICAg
ICBOU1BvaW50IG5zU2NyZWVuUG9pbnQgPSBbdmlldyBjb252ZXJ0UG9pbnQ6cG9pbnQgdG9WaWV3
Om5pbF07Ci0gICAgLy8gU2hvdyB0aGUgY29udGV4dHVhbCBtZW51IGZvciB0aGlzIGV2ZW50Lgog
ICAgIE5TRXZlbnQqIGV2ZW50ID0gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOk5TUmlnaHRN
b3VzZURvd24gbG9jYXRpb246bnNTY3JlZW5Qb2ludCBtb2RpZmllckZsYWdzOjAgdGltZXN0YW1w
OjAgd2luZG93TnVtYmVyOltbdmlldyB3aW5kb3ddIHdpbmRvd051bWJlcl0gY29udGV4dDowIGV2
ZW50TnVtYmVyOjAgY2xpY2tDb3VudDoxIHByZXNzdXJlOjFdOwotICAgIE5TTWVudSogbnNNZW51
ID0gW3ZpZXcgbWVudUZvckV2ZW50OmV2ZW50XTsKLSAgICBpZiAobnNNZW51KQotICAgICAgICBb
TlNNZW51IHBvcFVwQ29udGV4dE1lbnU6bnNNZW51IHdpdGhFdmVudDpldmVudCBmb3JWaWV3OnZp
ZXddOworCisgICAgLy8gU2hvdyB0aGUgY29udGV4dHVhbCBtZW51IGZvciB0aGlzIGV2ZW50Lgor
ICAgIGlmIChOU01lbnUgKm1lbnUgPSBjb250ZXh0TWVudUZvckV2ZW50KGV2ZW50LCB2aWV3KSkK
KyAgICAgICAgW05TTWVudSBwb3BVcENvbnRleHRNZW51Om1lbnUgd2l0aEV2ZW50OmV2ZW50IGZv
clZpZXc6dmlld107Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNsZWFyU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyKCkKK3sKKyAgICBtX3NoYXJpbmdTZXJ2aWNlUGlja2Vy
Q29udHJvbGxlciA9IG5pbDsKIH0KIAogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggZGI4NmEyYS4uOTRjNTIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE0
LTAzLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAg
IEhvb2sgdXAgaW1hZ2UgY29udHJvbHMgZm9yIFdlYktpdDEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA2MgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTU5NjQ4MDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNvbnRleHRNZW51Q29udGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEpOgorCiAy
MDE0LTAzLTA5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAg
IGlPUyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVD
b250ZXh0RGF0YS5jcHAKaW5kZXggNGI1ZGUxMi4uMmM0OTZjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcApAQCAtNDYsNyArNDYsNyBA
QCBDb250ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKCkKIENvbnRl
eHRNZW51Q29udGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEoY29uc3QgQ29udGV4dE1l
bnVDb250ZXh0JiBjb250ZXh0KQogICAgIDogbV93ZWJIaXRUZXN0UmVzdWx0RGF0YShXZWJIaXRU
ZXN0UmVzdWx0OjpEYXRhKGNvbnRleHQuaGl0VGVzdFJlc3VsdCgpKSkKICNpZiBFTkFCTEUoSU1B
R0VfQ09OVFJPTFMpCi0gICAgLCBtX2lzSW1hZ2VDb250cm9sKGNvbnRleHQuaXNJbWFnZUNvbnRy
b2woKSkKKyAgICAsIG1faXNJbWFnZUNvbnRyb2woISFjb250ZXh0LmNvbnRyb2xsZWRJbWFnZSgp
KQogI2VuZGlmCiB7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226436</attachid>
            <date>2014-03-11 15:35:37 -0700</date>
            <delta_ts>2014-03-11 19:18:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>picker.diff</filename>
            <type>text/plain</type>
            <size>61034</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhOGMyZmVmLi5jMTQyZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAy
IEBACisyMDE0LTAzLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIEhvb2sgdXAgaW1hZ2UgY29udHJvbHMgZm9yIFdlYktpdDEKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA2MgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTU5NjQ4MDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFw
cGluZ3MuaDoKKyAgICAgICAgRml4IHNvbWUgaGVhZGVyIG9yZGVyaW5nLgorCisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICBI
YW5kbGUgbWFwcGluZyBJbWFnZUNvbnRyb2xzQnV0dG9uUGFydCB0byB0aGUgLXdlYmtpdC1hcHBl
YXJhbmNlIHZhbHVlIENTU1ZhbHVlSW1hZ2VDb250cm9sc0J1dHRvbi4KKworICAgICAgICAqIGNz
cy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIHBsYXRmb3JtL1RoZW1lVHlwZXMuaDoK
KyAgICAgICAgQWRkIGEgLXdlYmtpdC1hcHBlYXJhbmNlIHZhbHVlIGltYWdlLWNvbnRyb2xzLWJ1
dHRvbiwgYW5kIGFuIGFzc29jaWF0ZWQgY29udHJvbCBwYXJ0LgorCisgICAgICAgICogZG9tL05v
ZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1l
bnQpOiBBZGRlZC4KKworICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VD
b250cm9sc0J1dHRvbjo6UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjp+UmVuZGVySW1hZ2VDb250cm9sc0J1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjp1cGRhdGVM
b2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VDb250cm9sc0J1dHRv
bjo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9s
c0J1dHRvbkVsZW1lbnRNYWM6OkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjp+SW1hZ2VDb250cm9s
c0J1dHRvbkVsZW1lbnRNYWMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc0J1dHRv
bkVsZW1lbnRNYWM6Om1heWJlQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQ29udHJv
bHNCdXR0b25FbGVtZW50TWFjOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIp
OgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1h
Yy5oOiBBZGRlZC4KKyAgICAgICAgQWRkIGEgbmV3IGVsZW1lbnQvcmVuZGVyZXIgcGFpciBmb3Ig
dGhlIHNpbmdsZSBidXR0b24gdGhhdCBjb21wcmlzZXMgaW1hZ2UgY29udHJvbHMgb24gTWFjLgor
ICAgICAgICBSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uIGdldHMgaXRzIHNpemUgZnJvbSB0aGUg
dGhlbWUncyBpbWFnZUNvbnRyb2xzQnV0dG9uU2l6ZS4KKworICAgICAgICAqIGh0bWwvc2hhZG93
L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2VDb250cm9sczo6UmVuZGVySW1hZ2VDb250cm9scyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZUNvbnRyb2xzOjp+UmVuZGVySW1hZ2VDb250cm9scyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZUNvbnRyb2xzOjp1cGRhdGVMb2dpY2FsV2lkdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VDb250cm9sczo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50OjptYXliZUNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6OkltYWdl
Q29udHJvbHNSb290RWxlbWVudE1hYyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUNvbnRyb2xz
Um9vdEVsZW1lbnRNYWM6On5JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRN
YWMuaDoKKyAgICAgICAgQWRkIGEgY3VzdG9tIHJlbmRlcmVyIGZvciB0aGUgcm9vdCBpbWFnZSBj
b250cm9scyBlbGVtZW50IG9uIE1hYywgd2hpY2ggaW5oZXJpdHMKKyAgICAgICAgaXRzIHNpemUg
ZnJvbSB0aGUgPGltZz4gdGhhdCBpdCBpcyBzaGFkb3dpbmcuCisgICAgICAgIEFkZCBhIEltYWdl
Q29udHJvbHNCdXR0b25FbGVtZW50TWFjIGFzIHRoZSBzb2xlIGNoaWxkIG9mIHRoZSByb290IGVs
ZW1lbnQuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9tYWMvaW1hZ2VDb250cm9sc01hYy5jc3M6
CisgICAgICAgICgueC13ZWJraXQtaW1hZ2UtY29udHJvbHMpOgorICAgICAgICAoLngtd2Via2l0
LWltYWdlLWNvbnRyb2xzLWJ1dHRvbik6CisgICAgICAgICgueC13ZWJraXQtaW1hZ2UtY29udHJv
bHM6aG92ZXIgLngtd2Via2l0LWltYWdlLWNvbnRyb2xzLWJ1dHRvbik6CisgICAgICAgIFRoZSBi
dXR0b24gc2hvdWxkIGJlY29tZSBvcGFxdWUgd2hlbmV2ZXIgKmFueSogcGFydCBvZiB0aGUgaW1h
Z2UgaXMgaG92ZXJlZCwKKyAgICAgICAgbm90IGp1c3QgdGhlIGJ1dHRvbiBpdHNlbGYuIEFsc28s
IHVzZSB0aGUgbmV3IGltYWdlLWNvbnRyb2xzLWJ1dHRvbiAtd2Via2l0LWFwcGVhcmFuY2UKKyAg
ICAgICAgdmFsdWUgdG8gZ2V0IHRoZSBhcHByb3ByaWF0ZSBhcHBlYXJhbmNlIGZyb20gdGhlIHRo
ZW1lLgorCisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGV4dE1lbnVDb250ZXh0OjpDb250ZXh0TWVudUNvbnRleHQpOgorICAgICAg
ICAqIHBhZ2UvQ29udGV4dE1lbnVDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0
TWVudUNvbnRleHQ6OnNldENvbnRyb2xsZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudUNvbnRleHQ6OmNvbnRyb2xsZWRJbWFnZSk6CisgICAgICAgIFN0b3JlIGFuIGltYWdl
IG9uIHRoZSBDb250ZXh0TWVudUNvbnRleHQgaW5zdGVhZCBvZiBqdXN0IHdoZXRoZXIgd2UgaGl0
IGFuIGltYWdlLgorCisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpoYW5kbGVDb250ZXh0TWVu
dUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0Nv
bnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlRnJvbUltYWdlRWxlbWVudE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNv
bnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9w
dWxhdGUpOgorICAgICAgICBLZWVwIHRyYWNrIG9mIHRoZSBoaXQgaW1hZ2UgaW4gdGhlIENvbnRl
eHRNZW51Q29udGV4dC4KKworICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVy
OjpyZXBsYWNlQ29udHJvbGxlZEltYWdlKToKKyAgICAgICAgUmVwbGFjZSB0aGUgaGl0IGltYWdl
IHdpdGggYSBuZXcgb25lLgorCisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
aDoKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oOgorICAgICAgICBGaXgg
YSBkb3VibGUtc3BhY2UgdHlwby4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lOjpwYWludEJvcmRlck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6
OnBhaW50RGVjb3JhdGlvbnMpOgorICAgICAgICBIYW5kbGUgSW1hZ2VDb250cm9sc0J1dHRvblBh
cnQgaW4gUmVuZGVyVGhlbWUncyBzd2l0Y2hlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmltYWdlQ29udHJvbHNC
dXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludEltYWdlQ29u
dHJvbHNCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lTWFjOjpzZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2VsbCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRJbWFnZUNvbnRyb2xzQnV0dG9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjppbWFnZUNvbnRyb2xzQnV0dG9uU2l6ZSk6CisgICAg
ICAgIFBhaW50IHRoZSBpbWFnZSBjb250cm9scyBidXR0b24uCisKIDIwMTQtMDMtMTEgIFJ5dWFu
IENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQg
bWV0aG9kIGZyb20gQmF0dGVyeUNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNzZk
N2EwMi4uNTIxOWYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTEyNCw2ICsxMjQsNyBAQCBf
X1pON1dlYkNvcmUxMUJpdG1hcEltYWdlQzFFUDdDR0ltYWdlUE5TXzEzSW1hZ2VPYnNlcnZlckUK
IF9fWk43V2ViQ29yZTExQml0bWFwSW1hZ2VDMUVQTlNfMTNJbWFnZU9ic2VydmVyRQogX19aTjdX
ZWJDb3JlMTFDYWNoZWRGcmFtZTIzY2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFFdgogX19aTjdXZWJD
b3JlMTFDYWNoZWRGcmFtZTI2c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFFTlN0M19fMTEwdW5p
cXVlX3B0cklOU18yM0NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhRU5TMV8xNGRlZmF1bHRfZGVsZXRl
SVMzX0VFRUUKK19fWk43V2ViQ29yZTExQ2FjaGVkSW1hZ2UxNmltYWdlRm9yUmVuZGVyZXJFUEtO
U18xMlJlbmRlck9iamVjdEUKIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXIxMGNob29zZUZpbGVF
UktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMUZpbGVDaG9vc2VyMTFjaG9vc2VGaWxlc0VS
S04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBf
X1pON1dlYkNvcmUxMUZpbGVDaG9vc2VyRDFFdgpAQCAtMTU1MSw2ICsxNTUyLDcgQEAgX19aTks3
V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE3aXNDb250ZW50RWRpdGFibGVFdgogX19aTks3V2ViQ29y
ZTEzSGl0VGVzdFJlc3VsdDE4dGl0bGVEaXNwbGF5U3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxM0hp
dFRlc3RSZXN1bHQxOW1lZGlhSXNJbkZ1bGxzY3JlZW5FdgogX19aTks3V2ViQ29yZTEzSGl0VGVz
dFJlc3VsdDE5cmVjdEJhc2VkVGVzdFJlc3VsdEV2CitfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVz
dWx0MjFpbm5lck5vblNoYXJlZEVsZW1lbnRFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3Vs
dDVpbWFnZUV2CiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0NXRpdGxlRVJOU18xM1RleHRE
aXJlY3Rpb25FCiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0OWltYWdlUmVjdEV2CkBAIC0y
OTMwLDYgKzI5MzIsMTAgQEAgX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlMjRzaG91bGRTdG9w
VGhyZWFkQWN0aXZpdHlFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlOWlzRW5hYmxlZEV2
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKK19fWk43V2ViQ29yZTIxQ29u
dGV4dE1lbnVDb250cm9sbGVyMjJyZXBsYWNlQ29udHJvbGxlZEltYWdlRU4zV1RGMTBQYXNzUmVm
UHRySU5TXzVJbWFnZUVFRQorI2VuZGlmCisKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
IF9fWk43V2ViQ29yZTEwSURCS2V5RGF0YTE0c2V0TnVtYmVyVmFsdWVFZAogX19aTjdXZWJDb3Jl
MTBJREJLZXlEYXRhNmRlY29kZUVSTlNfMTJLZXllZERlY29kZXJFUlMwXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE5OGU1OWEu
LjJhZTFlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEwMzUsNiArMTAzNSw4IEBACiAJCTJCMzY1Qzg0MTUyNTExOUUwMDkx
RDI3QiAvKiBSZW5kZXJTVkdFbGxpcHNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyQjQyMzVBMDE1MjUwRjYwMDBEQkJDRDggLyogUmVuZGVyU1ZHRWxs
aXBzZS5oICovOyB9OwogCQkyQkU4RTJDNzEyQTU4OUVDMDBGQUQ1NTAgLyogSFRNTE1ldGFDaGFy
c2V0UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyQkU4RTJDNjEyQTU4OUVDMDBGQUQ1NTAgLyogSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmggKi87
IH07CiAJCTJCRThFMkM5MTJBNThBMDEwMEZBRDU1MCAvKiBIVE1MTWV0YUNoYXJzZXRQYXJzZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkJFOEUy
QzgxMkE1OEEwMTAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgKi87IH07CisJ
CTJEMjUzOTYyMThDRTdGNjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1h
Yy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI1
Mzk2MDE4Q0U3RjYyMDAyNzAyMjIgLyogSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3Bw
ICovOyB9OworCQkyRDI1Mzk2MzE4Q0U3RjYyMDAyNzAyMjIgLyogSW1hZ2VDb250cm9sc0J1dHRv
bkVsZW1lbnRNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEMjUzOTYxMThDRTdGNjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVu
dE1hYy5oICovOyB9OwogCQkyRDNBMEUzNjEzQTdENzYxMDBFODVBRjAgLyogU1ZHUGFyc2luZ0Vy
cm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDNB
MEUzNTEzQTdENzYxMDBFODVBRjAgLyogU1ZHUGFyc2luZ0Vycm9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ0NkYwNEUxN0I5NkZCRDAwNTY0
N0YwIC8qIEludFBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJENDZGMDREMTdCOTZGQkQwMDU2NDdGMCAvKiBJbnRQb2ludC5jcHAgKi87IH07
CiAJCTJENDZGMDUwMTdCOTZGRDIwMDU2NDdGMCAvKiBJbnRTaXplLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENDZGMDRGMTdCOTZGRDIwMDU2NDdG
MCAvKiBJbnRTaXplLmNwcCAqLzsgfTsKQEAgLTc4NzEsNiArNzg3Myw4IEBACiAJCTJCNDIzNUEw
MTUyNTBGNjAwMERCQkNEOCAvKiBSZW5kZXJTVkdFbGxpcHNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0VsbGlwc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkJFOEUyQzYxMkE1ODlFQzAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MTWV0YUNoYXJzZXRQYXJz
ZXIuaDsgcGF0aCA9IHBhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkJFOEUyQzgxMkE1OEEwMTAwRkFENTUwIC8qIEhUTUxNZXRhQ2hh
cnNldFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBIVE1M
TWV0YUNoYXJzZXRQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMjUzOTYwMThDRTdGNjIwMDI3
MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMjUzOTYxMThDRTdGNjIwMDI3MDIyMiAv
KiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDJGQzA1NDE0NjBDRDZGMDAyNjM2MzMgLyogQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
RDJGQzA1NTE0NjBDRDZGMDAyNjM2MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyRkMwNTYxNDYwQ0Q2RjAwMjYzNjMzIC8q
IEdyYWRpZW50SW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R3JhZGllbnRJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTcyMiw2
ICsxNTcyNiw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTUx
MDE5MkQ4MThCN0Q3QUIwMDdGQzdBMSAvKiBpbWFnZUNvbnRyb2xzTWFjLmNzcyAqLywKKwkJCQky
RDI1Mzk2MDE4Q0U3RjYyMDAyNzAyMjIgLyogSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMu
Y3BwICovLAorCQkJCTJEMjUzOTYxMThDRTdGNjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYy5oICovLAogCQkJCTUxMDE5MkNGMThCNkI5QUIwMDdGQzdBMSAvKiBJbWFn
ZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwICovLAogCQkJCTUxMDE5MkQwMThCNkI5QUIwMDdG
QzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaCAqLywKIAkJCSk7CkBAIC0yNDAx
MSw2ICsyNDAxNyw3IEBACiAJCQkJN0FCMEIxQzExMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzRjVDRjEzMTJFRDgxQjMwMDg0
QzU2OSAvKiBJbnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDFGMDYyMTQwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEMjUzOTYzMThDRTdGNjIwMDI3MDIyMiAvKiBJbWFn
ZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EyNDU4N0Mx
MDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGM0Q0QzQ3OTEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTE1NCw2ICsyOTE2MSw3IEBA
CiAJCQkJMDFEM0NGODYxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMU2hhcmVkT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQ5QzdCOUU1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTFRleHR1
cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEMzRjFGNUExMEM4ODcxMjAwRDcyQ0UxIC8qIFdl
YkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJEMjUzOTYyMThDRTdG
NjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3N0ExN0E3NzEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTg0MEUyNDE4N0I4QUMyMDA4NDNCMTAg
LyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODRGRTJG
MTg2NENCODQwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVN
YXBwaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3Mu
aAppbmRleCAzZDM1NWY4Li4yMDIxMjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKQEAgLTM4LDkgKzM4LDYgQEAKICNpbmNsdWRlICJGb250
RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJGb250U21vb3RoaW5nTW9kZS5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzVHlwZXMuaCIKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotI2lu
Y2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKLSNlbmRpZgogI2luY2x1ZGUgIkxlbmd0aC5oIgog
I2luY2x1ZGUgIkxpbmVDbGFtcFZhbHVlLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgpAQCAtNTEsOSAr
NDgsMTIgQEAKICNpbmNsdWRlICJUaGVtZVR5cGVzLmgiCiAjaW5jbHVkZSAiVW5pY29kZUJpZGku
aCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgotCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KIAorI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCisjaW5jbHVkZSAiSW1hZ2VP
cmllbnRhdGlvbi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKHNob3J0IGkpCkBA
IC02MDQsNiArNjA0LDExIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShDb250cm9sUGFydCBlKQogICAgIGNhc2UgQ2Fwc0xvY2tJbmRpY2F0
b3JQYXJ0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNhcHNMb2NrSW5kaWNh
dG9yOwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgY2Fz
ZSBJbWFnZUNvbnRyb2xzQnV0dG9uUGFydDoKKyAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVJbWFnZUNvbnRyb2xzQnV0dG9uOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNh
c2UgSW5wdXRTcGVlY2hCdXR0b25QYXJ0OgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlV2Via2l0SW5wdXRTcGVlY2hCdXR0b247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbiBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCmluZGV4IGUxNDAwYTcuLmQzNzQxNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCkBAIC03MTgsNiArNzE4LDkg
QEAgcmVsZXZhbmN5LWxldmVsLWluZGljYXRvcgogY29udGludW91cy1jYXBhY2l0eS1sZXZlbC1p
bmRpY2F0b3IKIGRpc2NyZXRlLWNhcGFjaXR5LWxldmVsLWluZGljYXRvcgogcmF0aW5nLWxldmVs
LWluZGljYXRvcgorI2lmIGRlZmluZWQoRU5BQkxFX0lNQUdFX0NPTlRST0xTKSAmJiBFTkFCTEVf
SU1BR0VfQ09OVFJPTFMKK2ltYWdlLWNvbnRyb2xzLWJ1dHRvbgorI2VuZGlmCiB0ZXh0YXJlYQog
Ly8gQW4gYXBwZWFyYW5jZSB2YWx1ZSB0aGF0IHNob3VsZCBub3QgYmUgYWNjZXB0ZWQgYnkgdGhl
IHBhcnNlcjoKIGNhcHMtbG9jay1pbmRpY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDk1ODQ2ZjUuLjZi
YTk5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjQwLDYgKzI0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNJbnNlcnRpb25Qb2ludE5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
I2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUNvbnRy
b2xzUm9vdEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICNlbmRpZgogCiAgICAgYm9vbCBpc0RvY3VtZW50Tm9kZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50
TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ0
OWY1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9J
bWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAKQEAgLTAsMCArMSwxMTggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VDb250cm9sc0J1dHRv
bkVsZW1lbnRNYWMuaCIKKworI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKworI2luY2x1ZGUg
IkNvbnRleHRNZW51Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAi
SFRNTERpdkVsZW1lbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyQmxv
Y2tGbG93LmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVt
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlckltYWdlQ29udHJvbHNC
dXR0b24gZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKK3B1YmxpYzoKKyAgICBSZW5k
ZXJJbWFnZUNvbnRyb2xzQnV0dG9uKEhUTUxFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4p
OworICAgIHZpcnR1YWwgflJlbmRlckltYWdlQ29udHJvbHNCdXR0b24oKTsKKworcHJpdmF0ZToK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoKCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwg
TGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25z
dCBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uIjsgfQorICAgIHZp
cnR1YWwgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Cit9OworCitSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9u
OjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKEhUTUxFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKKyAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBzdGQ6
Om1vdmUoc3R5bGUpKQoreworfQorCitSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjp+UmVuZGVy
SW1hZ2VDb250cm9sc0J1dHRvbigpCit7Cit9CisKK3ZvaWQgUmVuZGVySW1hZ2VDb250cm9sc0J1
dHRvbjo6dXBkYXRlTG9naWNhbFdpZHRoKCkKK3sKKyAgICBSZW5kZXJCb3g6OnVwZGF0ZUxvZ2lj
YWxXaWR0aCgpOworCisgICAgSW50U2l6ZSBmcmFtZVNpemUgPSB0aGVtZSgpLmltYWdlQ29udHJv
bHNCdXR0b25TaXplKHRoaXMpOworICAgIHNldExvZ2ljYWxXaWR0aChpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID8gZnJhbWVTaXplLndpZHRoKCkgOiBmcmFtZVNpemUuaGVpZ2h0KCkpOworfQor
Cit2b2lkIFJlbmRlckltYWdlQ29udHJvbHNCdXR0b246OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExh
eW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0
ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGVkVmFsdWVzKSBjb25zdAoreworICAgIFJlbmRlckJv
eDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCwgbG9naWNhbFRvcCwgY29tcHV0
ZWRWYWx1ZXMpOworCisgICAgSW50U2l6ZSBmcmFtZVNpemUgPSB0aGVtZSgpLmltYWdlQ29udHJv
bHNCdXR0b25TaXplKHRoaXMpOworICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IGZyYW1lU2l6ZS5oZWlnaHQoKSA6IGZyYW1lU2l6ZS53aWR0
aCgpOworfQorCitJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6SW1hZ2VDb250cm9sc0J1
dHRvbkVsZW1lbnRNYWMoRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogSFRNTERpdkVsZW1lbnQo
SFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQoreworfQorCitJbWFnZUNvbnRyb2xzQnV0dG9u
RWxlbWVudE1hYzo6fkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjKCkKK3sKK30KKworUGFz
c1JlZlB0cjxJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYz4gSW1hZ2VDb250cm9sc0J1dHRv
bkVsZW1lbnRNYWM6Om1heWJlQ3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBpZiAo
IWRvY3VtZW50LnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZWZQdHI8
SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBJbWFn
ZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYyhkb2N1bWVudCkpOworICAgIGJ1dHRvbi0+c2V0QXR0
cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAieC13ZWJraXQtaW1hZ2UtY29udHJvbHMtYnV0
dG9uIik7CisKKyAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKK30KKwordm9pZCBJbWFnZUNv
bnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQp
Cit7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsK
KyAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgICAg
IHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLnNob3dJbWFnZUNvbnRyb2xzTWVudShldmVu
dCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEhUTUxEaXZFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKK30KKworUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IElt
YWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCit7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
ckltYWdlQ29udHJvbHNCdXR0b24+KCp0aGlzLCBzdGQ6Om1vdmUoc3R5bGUpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0NPTlRST0xTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNC
dXR0b25FbGVtZW50TWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VD
b250cm9sc0J1dHRvbkVsZW1lbnRNYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi42ZTZhMWFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmgKQEAgLTAsMCArMSw1NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWNfaAorI2Rl
ZmluZSBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hY19oCisKKyNpbmNsdWRlICJIVE1MRGl2
RWxlbWVudC5oIgorCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjIDogcHVibGljIEhU
TUxEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICB+SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRN
YWMoKTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50
TWFjPiBtYXliZUNyZWF0ZShEb2N1bWVudCYpOworCitwcml2YXRlOgorICAgIEltYWdlQ29udHJv
bHNCdXR0b25FbGVtZW50TWFjKERvY3VtZW50Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikg
b3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVu
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKworI2VuZGlmIC8v
IEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5j
cHAKaW5kZXggOGFlYWJkZC4uZTYxMTQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAK
QEAgLTI4LDUyICsyOCw4NCBAQAogCiAjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQogCi0jaW5j
bHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNs
dWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiVGV4dC5oIgorI2luY2x1ZGUgIkhUTUxFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuaCIKKyNpbmNsdWRlICJS
ZW5kZXJCbG9ja0Zsb3cuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgorI2luY2x1ZGUgIlJl
bmRlclN0eWxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VDb250cm9sc1Jvb3RF
bGVtZW50TWFjOjpJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMoRG9jdW1lbnQmIGRvY3VtZW50
KQotICAgIDogSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50KGRvY3VtZW50KQorY2xhc3MgUmVuZGVy
SW1hZ2VDb250cm9scyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgeworcHVibGljOgor
ICAgIFJlbmRlckltYWdlQ29udHJvbHMoSFRNTEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
Pik7CisgICAgdmlydHVhbCB+UmVuZGVySW1hZ2VDb250cm9scygpOworCitwcml2YXRlOgorICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGgoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlv
dXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92
ZXJyaWRlOworCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIlJlbmRlckltYWdlQ29udHJvbHMiOyB9CisgICAgdmlydHVhbCBib29s
IHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KK307CisKK1JlbmRlckltYWdlQ29udHJvbHM6OlJlbmRlckltYWdlQ29u
dHJvbHMoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
ICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIHN0ZDo6bW92ZShzdHlsZSkpCiB7CiB9CiAK
LUltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6fkltYWdlQ29udHJvbHNSb290RWxlbWVudE1h
YygpCitSZW5kZXJJbWFnZUNvbnRyb2xzOjp+UmVuZGVySW1hZ2VDb250cm9scygpCiB7CiB9CiAK
LVBhc3NSZWZQdHI8SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50PiBJbWFnZUNvbnRyb2xzUm9vdEVs
ZW1lbnQ6Om1heWJlQ3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK3ZvaWQgUmVuZGVySW1hZ2VD
b250cm9sczo6dXBkYXRlTG9naWNhbFdpZHRoKCkKIHsKLSAgICByZXR1cm4gSW1hZ2VDb250cm9s
c1Jvb3RFbGVtZW50TWFjOjptYXliZUNyZWF0ZShkb2N1bWVudCk7CisgICAgUmVuZGVyQm94Ojp1
cGRhdGVMb2dpY2FsV2lkdGgoKTsKKworICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gZWxl
bWVudCgpLT5zaGFkb3dIb3N0KCktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlci0+aXNS
ZW5kZXJJbWFnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXRMb2dpY2FsV2lkdGgodG9S
ZW5kZXJJbWFnZShyZW5kZXJlciktPmxvZ2ljYWxXaWR0aCgpKTsKK30KKwordm9pZCBSZW5kZXJJ
bWFnZUNvbnRyb2xzOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBj
b21wdXRlZFZhbHVlcykgY29uc3QKK3sKKyAgICBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVp
Z2h0KGxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxUb3AsIGNvbXB1dGVkVmFsdWVzKTsKKworICAgIFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyID0gZWxlbWVudCgpLT5zaGFkb3dIb3N0KCktPnJlbmRlcmVy
KCk7CisgICAgaWYgKCFyZW5kZXJlci0+aXNSZW5kZXJJbWFnZSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIp
LT5sb2dpY2FsSGVpZ2h0KCk7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2VDb250cm9sc1Jvb3RFbGVt
ZW50TWFjPiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6Om1heWJlQ3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCkKK1Bhc3NSZWZQdHI8SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50PiBJbWFnZUNv
bnRyb2xzUm9vdEVsZW1lbnQ6Om1heWJlQ3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAg
ICBpZiAoIWRvY3VtZW50LnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBS
ZWZQdHI8SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjPiBjb250cm9scyA9IGFkb3B0UmVmKG5l
dyBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMoZG9jdW1lbnQpKTsKLSAgICBjb250cm9scy0+
c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAieC13ZWJraXQtaW1hZ2VtZW51Iik7
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBjb250cm9scy0+YXBwZW5kQ2hpbGQoVGV4dDo6
Y3JlYXRlKGRvY3VtZW50LCAiIiksIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIGNvbnRyb2xzLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIs
ICJ4LXdlYmtpdC1pbWFnZS1jb250cm9scyIpOworCisgICAgUmVmUHRyPEltYWdlQ29udHJvbHNC
dXR0b25FbGVtZW50TWFjPiBidXR0b24gPSBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6
bWF5YmVDcmVhdGUoZG9jdW1lbnQpOworICAgIGNvbnRyb2xzLT5hcHBlbmRDaGlsZChidXR0b24u
cmVsZWFzZSgpKTsKIAogICAgIHJldHVybiBjb250cm9scy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQg
SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKK0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6SW1hZ2VDb250cm9sc1Jvb3RFbGVt
ZW50TWFjKERvY3VtZW50JiBkb2N1bWVudCkKKyAgICA6IEltYWdlQ29udHJvbHNSb290RWxlbWVu
dChkb2N1bWVudCkKK3sKK30KKworSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjp+SW1hZ2VD
b250cm9sc1Jvb3RFbGVtZW50TWFjKCkKIHsKLSAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkuY2xpY2tFdmVudCkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50
KCkucGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuc2hv
d0ltYWdlQ29udHJvbHNNZW51KGV2ZW50KTsKK30KIAotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIAotICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK3sKKyAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW1hZ2VDb250cm9scz4oKnRoaXMsIHN0ZDo6bW92ZShz
dHlsZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFj
LmgKaW5kZXggMjgzZDBiNy4uZmVjYjYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaApAQCAt
MzMsMTUgKzMzLDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlQ29udHJv
bHNSb290RWxlbWVudE1hYyA6IHB1YmxpYyBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnQgeworICAg
IGZyaWVuZCBjbGFzcyBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnQ7CiBwdWJsaWM6CiAgICAgfklt
YWdlQ29udHJvbHNSb290RWxlbWVudE1hYygpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1h
Z2VDb250cm9sc1Jvb3RFbGVtZW50TWFjPiBtYXliZUNyZWF0ZShEb2N1bWVudCYpOwotCiBwcml2
YXRlOgogICAgIEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYyhEb2N1bWVudCYpOwogCi0gICAg
dmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFz
c1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL2ltYWdlQ29udHJv
bHNNYWMuY3NzIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL2ltYWdlQ29udHJvbHNN
YWMuY3NzCmluZGV4IGE1ZDcwODkuLjM0ZDg4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L21hYy9pbWFnZUNvbnRyb2xzTWFjLmNzcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9tYWMvaW1hZ2VDb250cm9sc01hYy5jc3MKQEAgLTIzLDE2ICsyMywyMCBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS54LXdlYmtpdC1p
bWFnZW1lbnUgewotICAgIG9wYWNpdHk6IDA7CisueC13ZWJraXQtaW1hZ2UtY29udHJvbHMgewog
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Ci0gICAg
d2lkdGg6IDIwcHg7Ci0gICAgaGVpZ2h0OiAyMHB4OwotICAgIGJvcmRlci1yYWRpdXM6IDVweDsK
LSAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXM7CiB9CiAKLS54LXdlYmtpdC1pbWFnZW1lbnU6
aG92ZXIgeworLngtd2Via2l0LWltYWdlLWNvbnRyb2xzLWJ1dHRvbiB7CisgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgIHJpZ2h0OiAxOHB4OyAvKiBGSVhNRTogV2h5IGlzIHJpZ2h0OiAwcHgg
b2ZmIHRoZSByaWdodCBlZGdlIG9mIHRoZSBwYXJlbnQ/ICovCisKKyAgICAtd2Via2l0LWFwcGVh
cmFuY2U6IGltYWdlLWNvbnRyb2xzLWJ1dHRvbjsKKworICAgIHRyYW5zaXRpb246IG9wYWNpdHkg
MC4yNXM7CisgICAgb3BhY2l0eTogMDsKK30KKworLngtd2Via2l0LWltYWdlLWNvbnRyb2xzOmhv
dmVyIC54LXdlYmtpdC1pbWFnZS1jb250cm9scy1idXR0b24gewogICAgIG9wYWNpdHk6IDEuMDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250ZXh0LmNwcAppbmRleCA4OGZm
YjBjLi5hM2QyZDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRleHQu
Y3BwCkBAIC0zMiwyMiArMzIsMTUgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ29udGV4dE1l
bnVDb250ZXh0OjpDb250ZXh0TWVudUNvbnRleHQoKQotI2lmIEVOQUJMRShJTUFHRV9DT05UUk9M
UykKLSAgICA6IG1faXNJbWFnZUNvbnRyb2woZmFsc2UpCi0jZW5kaWYKIHsKIH0KIAotQ29udGV4
dE1lbnVDb250ZXh0OjpDb250ZXh0TWVudUNvbnRleHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0
VGVzdFJlc3VsdCwgYm9vbCBpc0ltYWdlQ29udHJvbCkKK0NvbnRleHRNZW51Q29udGV4dDo6Q29u
dGV4dE1lbnVDb250ZXh0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQpCiAgICAg
OiBtX2hpdFRlc3RSZXN1bHQoaGl0VGVzdFJlc3VsdCkKICNpZiBFTkFCTEUoSU1BR0VfQ09OVFJP
TFMpCi0gICAgLCBtX2lzSW1hZ2VDb250cm9sKGlzSW1hZ2VDb250cm9sKQorICAgICwgbV9jb250
cm9sbGVkSW1hZ2UobnVsbHB0cikKICNlbmRpZgogewotI2lmICFFTkFCTEUoSU1BR0VfQ09OVFJP
TFMpCi0gICAgVU5VU0VEX1BBUkFNKGlzSW1hZ2VDb250cm9sKTsKLSNlbmRpZgotICAgIEFTU0VS
VF9VTlVTRUQoaXNJbWFnZUNvbnRyb2wsIHRydWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRleHQuaAppbmRleCA5YjY5MWNk
Li45NjE5Y2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250ZXh0LmgKQEAg
LTMwLDE4ICszMCwyMCBAQAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogCiAjaW5jbHVkZSAi
SGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkltYWdlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29udGV4dE1lbnVDb250ZXh0IHsKIHB1YmxpYzoKICAgICBDb250ZXh0TWVu
dUNvbnRleHQoKTsKLSAgICBDb250ZXh0TWVudUNvbnRleHQoY29uc3QgSGl0VGVzdFJlc3VsdCYs
IGJvb2wgaXNJbWFnZUNvbnRyb2wgPSBmYWxzZSk7CisgICAgQ29udGV4dE1lbnVDb250ZXh0KGNv
bnN0IEhpdFRlc3RSZXN1bHQmKTsKIAogICAgIGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RS
ZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2hpdFRlc3RSZXN1bHQ7IH0KIAogI2lmIEVOQUJMRShJ
TUFHRV9DT05UUk9MUykKLSAgICBib29sIGlzSW1hZ2VDb250cm9sKCkgY29uc3QgeyByZXR1cm4g
bV9pc0ltYWdlQ29udHJvbDsgfQorICAgIHZvaWQgc2V0Q29udHJvbGxlZEltYWdlKEltYWdlKiBj
b250cm9sbGVkSW1hZ2UpIHsgbV9jb250cm9sbGVkSW1hZ2UgPSBjb250cm9sbGVkSW1hZ2U7IH0K
KyAgICBJbWFnZSogY29udHJvbGxlZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jb250cm9sbGVk
SW1hZ2UuZ2V0KCk7IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNDksNyArNTEsNyBAQCBwcml2
YXRlOgogICAgIEhpdFRlc3RSZXN1bHQgbV9oaXRUZXN0UmVzdWx0OwogCiAjaWYgRU5BQkxFKElN
QUdFX0NPTlRST0xTKQotICAgIGJvb2wgbV9pc0ltYWdlQ29udHJvbDsKKyAgICBSZWZQdHI8SW1h
Z2U+IG1fY29udHJvbGxlZEltYWdlOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggNzAzNzNhYS4uYTMwMzAzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtNjAs
NiArNjAsNyBAQAogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1FdmVudC5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAi
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtOTYsNyArOTcsNyBAQCB2b2lkIENvbnRleHRNZW51
Q29udHJvbGxlcjo6Y2xlYXJDb250ZXh0TWVudSgpCiAKIHZvaWQgQ29udGV4dE1lbnVDb250cm9s
bGVyOjpoYW5kbGVDb250ZXh0TWVudUV2ZW50KEV2ZW50KiBldmVudCkKIHsKLSAgICBtX2NvbnRl
eHRNZW51ID0gY3JlYXRlQ29udGV4dE1lbnUoZXZlbnQpOworICAgIG1fY29udGV4dE1lbnUgPSBt
YXliZUNyZWF0ZUNvbnRleHRNZW51KGV2ZW50KTsKICAgICBpZiAoIW1fY29udGV4dE1lbnUpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTE0LDcgKzExNSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250
cm9sbGVyOjpzaG93Q29udGV4dE1lbnUoRXZlbnQqIGV2ZW50LCBQYXNzUmVmUHRyPENvbnRleHRN
ZW51CiB7CiAgICAgbV9tZW51UHJvdmlkZXIgPSBtZW51UHJvdmlkZXI7CiAKLSAgICBtX2NvbnRl
eHRNZW51ID0gY3JlYXRlQ29udGV4dE1lbnUoZXZlbnQpOworICAgIG1fY29udGV4dE1lbnUgPSBt
YXliZUNyZWF0ZUNvbnRleHRNZW51KGV2ZW50KTsKICAgICBpZiAoIW1fY29udGV4dE1lbnUpIHsK
ICAgICAgICAgY2xlYXJDb250ZXh0TWVudSgpOwogICAgICAgICByZXR1cm47CkBAIC0xMjgsNyAr
MTI5LDIzIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpzaG93Q29udGV4dE1lbnUoRXZl
bnQqIGV2ZW50LCBQYXNzUmVmUHRyPENvbnRleHRNZW51CiAgICAgc2hvd0NvbnRleHRNZW51KGV2
ZW50KTsKIH0KIAotUGFzc093blB0cjxDb250ZXh0TWVudT4gQ29udGV4dE1lbnVDb250cm9sbGVy
OjpjcmVhdGVDb250ZXh0TWVudShFdmVudCogZXZlbnQpCisjaWYgRU5BQkxFKElNQUdFX0NPTlRS
T0xTKQorc3RhdGljIEltYWdlKiBpbWFnZUZyb21JbWFnZUVsZW1lbnROb2RlKE5vZGUmIG5vZGUp
Cit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUucmVuZGVyZXIoKTsKKyAgICBp
ZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIXJlbmRlcmVy
LT5pc1JlbmRlckltYWdlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENhY2hlZElt
YWdlKiBpbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5jYWNoZWRJbWFnZSgpOworICAg
IGlmICghaW1hZ2UgfHwgaW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICByZXR1cm4gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwor
fQorI2VuZGlmCisKK1Bhc3NPd25QdHI8Q29udGV4dE1lbnU+IENvbnRleHRNZW51Q29udHJvbGxl
cjo6bWF5YmVDcmVhdGVDb250ZXh0TWVudShFdmVudCogZXZlbnQpCiB7CiAgICAgQVNTRVJUKGV2
ZW50KTsKICAgICAKQEAgLTE0NSwxMCArMTYyLDE2IEBAIFBhc3NPd25QdHI8Q29udGV4dE1lbnU+
IENvbnRleHRNZW51Q29udHJvbGxlcjo6Y3JlYXRlQ29udGV4dE1lbnUoRXZlbnQqIGV2ZW50KQog
ICAgIGlmICghcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKLSAgICBtX2NvbnRleHQgPSBDb250
ZXh0TWVudUNvbnRleHQocmVzdWx0LCBub2RlLT5pc0ltYWdlQ29udHJvbHNSb290RWxlbWVudCgp
KTsKLSNlbHNlCiAgICAgbV9jb250ZXh0ID0gQ29udGV4dE1lbnVDb250ZXh0KHJlc3VsdCk7CisK
KyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgaWYgKG5vZGUtPmlzSW1hZ2VDb250cm9s
c0J1dHRvbkVsZW1lbnQoKSkgeworICAgICAgICBpZiAoSW1hZ2UqIGltYWdlID0gaW1hZ2VGcm9t
SW1hZ2VFbGVtZW50Tm9kZSgqcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKSkKKyAgICAgICAg
ICAgIG1fY29udGV4dC5zZXRDb250cm9sbGVkSW1hZ2UoaW1hZ2UpOworCisgICAgICAgIC8vIEZJ
WE1FOiBJZiB3ZSBjb3VsZG4ndCBnZXQgdGhlIGltYWdlIHRoZW4gd2Ugc2hvdWxkbid0IHRyeSB0
byBzaG93IHRoZSBpbWFnZSBjb250cm9scyBtZW51IGZvciBpdC4KKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQogI2VuZGlmCiAKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENvbnRleHRN
ZW51KTsKQEAgLTgyMiw3ICs4NDUsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9w
dWxhdGUoKQogCiAjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQogICAgIC8vIFRoZSBkZWZhdWx0
IGltYWdlIGNvbnRyb2wgbWVudSBnZXRzIHBvcHVsYXRlZCBzb2xlbHkgYnkgdGhlIHBsYXRmb3Jt
LgotICAgIGlmIChtX2NvbnRleHQuaXNJbWFnZUNvbnRyb2woKSkKKyAgICBpZiAobV9jb250ZXh0
LmNvbnRyb2xsZWRJbWFnZSgpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIApAQCAtMTQyOSw2
ICsxNDUyLDI0IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpzaG93SW1hZ2VDb250cm9s
c01lbnUoRXZlbnQqIGV2ZW50KQogICAgIGhhbmRsZUNvbnRleHRNZW51RXZlbnQoZXZlbnQpOwog
ICAgIG1fY2xpZW50LnNob3dDb250ZXh0TWVudSgpOwogfQorCit2b2lkIENvbnRleHRNZW51Q29u
dHJvbGxlcjo6cmVwbGFjZUNvbnRyb2xsZWRJbWFnZShQYXNzUmVmUHRyPEltYWdlPiBuZXdJbWFn
ZSkKK3sKKyAgICBOb2RlKiBub2RlID0gbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5pbm5lck5v
blNoYXJlZE5vZGUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIEZy
YW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQor
ICAgICAgICByZXR1cm47CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVu
ZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNSZW5kZXJJbWFnZSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFn
ZT4gcmVwbGFjZWRJbWFnZSA9IG5ldyBDYWNoZWRJbWFnZShuZXdJbWFnZS5nZXQoKSwgZnJhbWUt
PnBhZ2UoKS0+c2Vzc2lvbklEKCkpOworICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5pbWFn
ZVJlc291cmNlKCkuc2V0Q2FjaGVkSW1hZ2UocmVwbGFjZWRJbWFnZS5nZXQoKSk7Cit9CiAjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmgKaW5kZXggZTg3OGIxMC4uMWVmN2ZjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCkBAIC03MSwxMCArNzEsMTEgQEAgcHVi
bGljOgogCiAjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQogICAgIHZvaWQgc2hvd0ltYWdlQ29u
dHJvbHNNZW51KEV2ZW50Kik7CisgICAgdm9pZCByZXBsYWNlQ29udHJvbGxlZEltYWdlKFBhc3NS
ZWZQdHI8SW1hZ2U+KTsKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFBhc3NPd25QdHI8Q29udGV4
dE1lbnU+IGNyZWF0ZUNvbnRleHRNZW51KEV2ZW50Kik7CisgICAgUGFzc093blB0cjxDb250ZXh0
TWVudT4gbWF5YmVDcmVhdGVDb250ZXh0TWVudShFdmVudCopOwogICAgIHZvaWQgc2hvd0NvbnRl
eHRNZW51KEV2ZW50Kik7CiAgICAgCiAgICAgdm9pZCBhcHBlbmRJdGVtKENvbnRleHRNZW51SXRl
bSYsIENvbnRleHRNZW51KiBwYXJlbnRNZW51KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RoZW1lVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlw
ZXMuaAppbmRleCA0NDIxYzUxLi5kOGFiMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaGVtZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWVU
eXBlcy5oCkBAIC01OCw2ICs1OCw5IEBAIGVudW0gQ29udHJvbFBhcnQgewogICAgIFNlYXJjaEZp
ZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0LCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0LAog
ICAgIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uUGFydCwgU25hcHNob3R0ZWRQbHVnaW5PdmVybGF5
UGFydCwgVGV4dEZpZWxkUGFydCwKICAgICBSZWxldmFuY3lMZXZlbEluZGljYXRvclBhcnQsIENv
bnRpbnVvdXNDYXBhY2l0eUxldmVsSW5kaWNhdG9yUGFydCwgRGlzY3JldGVDYXBhY2l0eUxldmVs
SW5kaWNhdG9yUGFydCwgUmF0aW5nTGV2ZWxJbmRpY2F0b3JQYXJ0LAorI2lmIEVOQUJMRShJTUFH
RV9DT05UUk9MUykKKyAgICBJbWFnZUNvbnRyb2xzQnV0dG9uUGFydCwKKyNlbmRpZgogICAgIFRl
eHRBcmVhUGFydCwgQ2Fwc0xvY2tJbmRpY2F0b3JQYXJ0CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4IDAyM2JhM2UuLjEwZTBjMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCkBAIC0zMCw3ICszMCw3IEBAIGNs
YXNzIFJlbmRlclJlcGxhY2VkIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+UmVuZGVyUmVwbGFjZWQoKTsKIAotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRl
UmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCAgPSBDb21wdXRlQWN0
dWFsKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgY29tcHV0ZVJlcGxh
Y2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgPSBDb21wdXRlQWN0dWFsKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9n
aWNhbEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0UmVjdCByZXBsYWNlZENv
bnRlbnRSZWN0KGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggMjkxOWNiOC4uOWM5MjFjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0yNTMsNiArMjUz
LDEwIEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIFJlbmRlclN0eWxlJiBzdHlsZSwKICAgICBjYXNlIElucHV0U3BlZWNoQnV0dG9u
UGFydDoKICAgICAgICAgcmV0dXJuIGFkanVzdElucHV0RmllbGRTcGVlY2hCdXR0b25TdHlsZSgm
c3R5bGVSZXNvbHZlciwgJnN0eWxlLCBlKTsKICNlbmRpZgorI2lmIEVOQUJMRShJTUFHRV9DT05U
Uk9MUykKKyAgICBjYXNlIEltYWdlQ29udHJvbHNCdXR0b25QYXJ0OgorICAgICAgICBicmVhazsK
KyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM4Niw2ICsz
OTAsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmUKICAgICBjYXNlIElucHV0U3BlZWNoQnV0
dG9uUGFydDoKICAgICAgICAgcmV0dXJuIHBhaW50SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbihvLCBw
YWludEluZm8sIHIpOwogI2VuZGlmCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIGNh
c2UgSW1hZ2VDb250cm9sc0J1dHRvblBhcnQ6CisgICAgICAgIHJldHVybiBwYWludEltYWdlQ29u
dHJvbHNCdXR0b24obywgcGFpbnRJbmZvLCByKTsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTQ0MCw2ICs0NDgsOSBAQCBib29sIFJlbmRlclRoZW1lOjpw
YWludEJvcmRlck9ubHkoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgYwogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgY2FzZSBJbnB1dFNwZWVjaEJ1dHRv
blBhcnQ6CiAjZW5kaWYKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgY2FzZSBJbWFn
ZUNvbnRyb2xzQnV0dG9uUGFydDoKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTQ5OSw2ICs1MTAsOSBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludERlY29y
YXRpb25zKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFBhaW50SW5mbyYgcGFpbgogI2lm
IEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgY2FzZSBJbnB1dFNwZWVjaEJ1dHRvblBhcnQ6CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgY2FzZSBJbWFnZUNvbnRyb2xz
QnV0dG9uUGFydDoKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKaW5kZXggZDNjOWE5Ni4uMGFkODZi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKQEAgLTI0NCw2ICsyNDQs
MTAgQEAgcHVibGljOgogICAgIGVudW0gRmlsZVVwbG9hZERlY29yYXRpb25zIHsgU2luZ2xlRmls
ZSwgTXVsdGlwbGVGaWxlcyB9OwogICAgIHZpcnR1YWwgYm9vbCBwYWludEZpbGVVcGxvYWRJY29u
RGVjb3JhdGlvbnMoUmVuZGVyT2JqZWN0KiAvKmlucHV0UmVuZGVyZXIqLywgUmVuZGVyT2JqZWN0
KiAvKmJ1dHRvblJlbmRlcmVyKi8sIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmLCBJ
Y29uKiwgRmlsZVVwbG9hZERlY29yYXRpb25zKSB7IHJldHVybiB0cnVlOyB9CiAKKyNpZiBFTkFC
TEUoSU1BR0VfQ09OVFJPTFMpCisgICAgdmlydHVhbCBJbnRTaXplIGltYWdlQ29udHJvbHNCdXR0
b25TaXplKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIEludFNpemUoKTsgfQor
I2VuZGlmCisKIHByb3RlY3RlZDoKICAgICAvLyBUaGUgcGxhdGZvcm0gc2VsZWN0aW9uIGNvbG9y
LgogICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdDsKQEAgLTM2MCw2ICszNjQsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVh
bCBib29sIHBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KFJlbmRlck9iamVjdCosIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CiAKKyNpZiBFTkFC
TEUoSU1BR0VfQ09OVFJPTFMpCisgICAgdmlydHVhbCBib29sIHBhaW50SW1hZ2VDb250cm9sc0J1
dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyBy
ZXR1cm4gdHJ1ZTsgfQorI2VuZGlmCisKIHB1YmxpYzoKICAgICAvLyBNZXRob2RzIGZvciBzdGF0
ZSBxdWVyeWluZwogICAgIENvbnRyb2xTdGF0ZXMgY29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNv
bnN0IFJlbmRlck9iamVjdCogbykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5oCmluZGV4IDNiMTk5NWEuLjE2MzY2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCkBAIC0yOCw2ICsyOCwxMCBAQAogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KIAorI2lmIEVOQUJMRShJTUFH
RV9DT05UUk9MUykKK09CSkNfQ0xBU1MgTlNTZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2VsbDsKKyNl
bmRpZgorCiBPQkpDX0NMQVNTIFdlYkNvcmVSZW5kZXJUaGVtZU5vdGlmaWNhdGlvbk9ic2VydmVy
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yMDMsMTYgKzIwNywxNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0U2VhcmNoQ2VsbFN0YXRlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFJlY3Qm
KTsKICAgICB2b2lkIHNldFNlYXJjaEZpZWxkU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwogCi0g
ICAgTlNQb3BVcEJ1dHRvbkNlbGwqIHBvcHVwQnV0dG9uKCkgY29uc3Q7Ci0gICAgTlNTZWFyY2hG
aWVsZENlbGwqIHNlYXJjaCgpIGNvbnN0OwotICAgIE5TTWVudSogc2VhcmNoTWVudVRlbXBsYXRl
KCkgY29uc3Q7Ci0gICAgTlNTbGlkZXJDZWxsKiBzbGlkZXJUaHVtYkhvcml6b250YWwoKSBjb25z
dDsKLSAgICBOU1NsaWRlckNlbGwqIHNsaWRlclRodW1iVmVydGljYWwoKSBjb25zdDsKLSAgICBO
U1RleHRGaWVsZENlbGwqIHRleHRGaWVsZCgpIGNvbnN0OworICAgIE5TUG9wVXBCdXR0b25DZWxs
ICpwb3B1cEJ1dHRvbigpIGNvbnN0OworICAgIE5TU2VhcmNoRmllbGRDZWxsICpzZWFyY2goKSBj
b25zdDsKKyAgICBOU01lbnUgKnNlYXJjaE1lbnVUZW1wbGF0ZSgpIGNvbnN0OworICAgIE5TU2xp
ZGVyQ2VsbCAqc2xpZGVyVGh1bWJIb3Jpem9udGFsKCkgY29uc3Q7CisgICAgTlNTbGlkZXJDZWxs
ICpzbGlkZXJUaHVtYlZlcnRpY2FsKCkgY29uc3Q7CisgICAgTlNUZXh0RmllbGRDZWxsICp0ZXh0
RmllbGQoKSBjb25zdDsKIAogI2lmIEVOQUJMRShNRVRFUl9FTEVNRU5UKQogICAgIE5TTGV2ZWxJ
bmRpY2F0b3JTdHlsZSBsZXZlbEluZGljYXRvclN0eWxlRm9yKENvbnRyb2xQYXJ0KSBjb25zdDsK
LSAgICBOU0xldmVsSW5kaWNhdG9yQ2VsbCogbGV2ZWxJbmRpY2F0b3JGb3IoY29uc3QgUmVuZGVy
TWV0ZXIqKSBjb25zdDsKKyAgICBOU0xldmVsSW5kaWNhdG9yQ2VsbCAqbGV2ZWxJbmRpY2F0b3JG
b3IoY29uc3QgUmVuZGVyTWV0ZXIqKSBjb25zdDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFBST0dS
RVNTX0VMRU1FTlQpCkBAIC0yMjEsNyArMjI1LDEyIEBAIHByaXZhdGU6CiAgICAgY29uc3QgaW50
KiBwcm9ncmVzc0Jhck1hcmdpbnMoTlNDb250cm9sU2l6ZSkgY29uc3Q7CiAjZW5kaWYKIAotcHJp
dmF0ZToKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgdmlydHVhbCBib29sIHBhaW50
SW1hZ2VDb250cm9sc0J1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJbnRTaXplIGltYWdlQ29udHJvbHNC
dXR0b25TaXplKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IG92ZXJyaWRlOworICAgIE5TU2Vy
dmljZXNSb2xsb3ZlckJ1dHRvbkNlbGwgKnNlcnZpY2VzUm9sbG92ZXJCdXR0b25DZWxsKCkgY29u
c3Q7CisjZW5kaWYKKwogICAgIG11dGFibGUgUmV0YWluUHRyPE5TUG9wVXBCdXR0b25DZWxsPiBt
X3BvcHVwQnV0dG9uOwogICAgIG11dGFibGUgUmV0YWluUHRyPE5TU2VhcmNoRmllbGRDZWxsPiBt
X3NlYXJjaDsKICAgICBtdXRhYmxlIFJldGFpblB0cjxOU01lbnU+IG1fc2VhcmNoTWVudVRlbXBs
YXRlOwpAQCAtMjI5LDYgKzIzOCw5IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8
TlNTbGlkZXJDZWxsPiBtX3NsaWRlclRodW1iVmVydGljYWw7CiAgICAgbXV0YWJsZSBSZXRhaW5Q
dHI8TlNMZXZlbEluZGljYXRvckNlbGw+IG1fbGV2ZWxJbmRpY2F0b3I7CiAgICAgbXV0YWJsZSBS
ZXRhaW5QdHI8TlNUZXh0RmllbGRDZWxsPiBtX3RleHRGaWVsZDsKKyNpZiBFTkFCTEUoSU1BR0Vf
Q09OVFJPTFMpCisgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNTZXJ2aWNlc1JvbGxvdmVyQnV0dG9u
Q2VsbD4gbV9zZXJ2aWNlc1JvbGxvdmVyQnV0dG9uOworI2VuZGlmCiAKICAgICBib29sIG1faXNT
bGlkZXJUaHVtYkhvcml6b250YWxQcmVzc2VkOwogICAgIGJvb2wgbV9pc1NsaWRlclRodW1iVmVy
dGljYWxQcmVzc2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
CmluZGV4IGRhZDEyYjkuLjRmZTJjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0KQEAgLTcwLDEwICs3MCwzNiBAQAogI2ltcG9ydCA8bWF0aC5oPgogCiAj
aWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCi0jaW5jbHVkZSAiUmVuZGVyTWV0ZXIuaCIKLSNpbmNs
dWRlICJIVE1MTWV0ZXJFbGVtZW50LmgiCisjaW1wb3J0ICJSZW5kZXJNZXRlci5oIgorI2ltcG9y
dCAiSFRNTE1ldGVyRWxlbWVudC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJP
TFMpCisKKyNpZiBfX2hhc19pbmNsdWRlKDxBcHBLaXQvQXBwS2l0RGVmaW5lc19Qcml2YXRlLmg+
KQorI2ltcG9ydCA8QXBwS2l0L0FwcEtpdERlZmluZXNfUHJpdmF0ZS5oPgorI2Vsc2UKKyNkZWZp
bmUgQVBQS0lUX1BSSVZBVEVfQ0xBU1MKKyNlbmRpZgorCisjaWYgX19oYXNfaW5jbHVkZSg8QXBw
S2l0L05TU2VydmljZXNSb2xsb3ZlckJ1dHRvbkNlbGwuaD4pCisjaW1wb3J0IDxBcHBLaXQvTlNT
ZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2VsbC5oPgorI2VuZGlmCisKK0BpbnRlcmZhY2UgTlNTZXJ2
aWNlc1JvbGxvdmVyQnV0dG9uQ2VsbCAoRGV0YWlscykKKysgKE5TU2VydmljZXNSb2xsb3ZlckJ1
dHRvbkNlbGwgKilzZXJ2aWNlUm9sbG92ZXJCdXR0b25DZWxsRm9yU3R5bGU6KE5TU2hhcmluZ1Nl
cnZpY2VQaWNrZXJTdHlsZSlzdHlsZTsKK0BlbmQKKworI2lmIF9faGFzX2luY2x1ZGUoPEFwcEtp
dC9OU1NoYXJpbmdTZXJ2aWNlX1ByaXZhdGUuaD4pCisjaW1wb3J0IDxBcHBLaXQvTlNTaGFyaW5n
U2VydmljZV9Qcml2YXRlLmg+CisjZWxzZQordHlwZWRlZiBlbnVtIHsKKyAgICBOU1NoYXJpbmdT
ZXJ2aWNlUGlja2VyU3R5bGVSb2xsb3ZlciA9IDEKK30gTlNTaGFyaW5nU2VydmljZVBpY2tlclN0
eWxlOworI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisKIC8vIFRo
ZSBtZXRob2RzIGluIHRoaXMgZmlsZSBhcmUgc3BlY2lmaWMgdG8gdGhlIE1hYyBPUyBYIHBsYXRm
b3JtLgogCiAvLyBGSVhNRTogVGhlIHBsYXRmb3JtLWluZGVwZW5kZW50IGNvZGUgaW4gdGhpcyBj
bGFzcyBzaG91bGQgYmUgZmFjdG9yZWQgb3V0IGFuZCBtZXJnZWQgd2l0aCBSZW5kZXJUaGVtZVNh
ZmFyaS4KQEAgLTE5NDEsNiArMTk2Nyw0MyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVNYWM6OmZpbGVM
aXN0TmFtZUZvcldpZHRoKGNvbnN0IEZpbGVMaXN0KiBmaWxlTGlzdCwgY29uc3QgRm9udAogICAg
IHJldHVybiBTdHJpbmdUcnVuY2F0b3I6OmNlbnRlclRydW5jYXRlKHN0clRvVHJ1bmNhdGUsIHdp
ZHRoLCBmb250LCBTdHJpbmdUcnVuY2F0b3I6OkVuYWJsZVJvdW5kaW5nSGFja3MpOwogfQogCisj
aWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorTlNTZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2VsbCog
UmVuZGVyVGhlbWVNYWM6OnNlcnZpY2VzUm9sbG92ZXJCdXR0b25DZWxsKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fc2VydmljZXNSb2xsb3ZlckJ1dHRvbikgeworICAgICAgICBtX3NlcnZpY2VzUm9s
bG92ZXJCdXR0b24gPSBbTlNTZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2VsbCBzZXJ2aWNlUm9sbG92
ZXJCdXR0b25DZWxsRm9yU3R5bGU6TlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlUm9sbG92ZXJd
OworICAgICAgICBbbV9zZXJ2aWNlc1JvbGxvdmVyQnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbV9zZXJ2aWNlc1JvbGxvdmVyQnV0dG9uLmdldCgpOworfQorCiti
b29sIFJlbmRlclRoZW1lTWFjOjpwYWludEltYWdlQ29udHJvbHNCdXR0b24oUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sK
KyAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgTlNTZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2VsbCAq
Y2VsbCA9IHNlcnZpY2VzUm9sbG92ZXJCdXR0b25DZWxsKCk7CisKKyAgICBMb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKwor
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICBwYWlu
dEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCAtcmVjdC5oZWlnaHQoKSAtIHJlY3Qu
eSgpKTsKKworICAgIEludFJlY3QgaW5uZXJGcmFtZShJbnRQb2ludCgpLCByZWN0LnNpemUoKSk7
CisgICAgW2NlbGwgZHJhd1dpdGhGcmFtZTppbm5lckZyYW1lIGluVmlldzpkb2N1bWVudFZpZXdG
b3IobyldOworICAgIFtjZWxsIHNldENvbnRyb2xWaWV3Om5pbF07CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworSW50U2l6ZSBSZW5kZXJUaGVtZU1hYzo6aW1hZ2VDb250cm9sc0J1dHRvblNpemUo
Y29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QKK3sKKyAgICBOU1NlcnZpY2VzUm9sbG92ZXJCdXR0
b25DZWxsICpjZWxsID0gc2VydmljZXNSb2xsb3ZlckJ1dHRvbkNlbGwoKTsKKyAgICByZXR1cm4g
SW50U2l6ZShbY2VsbCBjZWxsU2l6ZV0pOworfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA0NzM1NTgyLi4zNjc3MzMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDE0LTAzLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgorCisgICAgICAgIEhvb2sgdXAgaW1hZ2UgY29udHJvbHMgZm9yIFdlYktpdDEKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA2MgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTU5NjQ4MDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgQWRkIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci4KKwogMjAxNC0wMy0x
MSAgSmFlIEh5dW4gUGFyayAgPGphZXBhcmtAd2Via2l0Lm9yZz4KIAogICAgICAgICBbR1RLXVtD
TWFrZV0gQWRkIEhBUkZCVVpaX0lOQ0xVREVfRElSUyB0byBXZWJLaXQgYW5kIFdlYktpdDIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZk
MThkZDIuLmVhODE0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtODAsNiArODAsOCBAQAogCQkyMjQxMDBGOTA5MTgxOTAxMDBEMkQy
NjYgLyogV2ViUGx1Z2luc1ByaXZhdGUubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDIyNDEwMEY4MDkxODE5MDEwMEQyRDI2NiAvKiBXZWJQbHVnaW5zUHJp
dmF0ZS5tICovOyB9OwogCQkyMkYyMTlDQzA4RDIzNjczMDAzMEUwNzggLyogV2ViQmFja0Zvcndh
cmRMaXN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjJGMjE5Q0IwOEQyMzY3MzAwMzBFMDc4IC8qIFdlYkJhY2tGb3J3YXJkTGlzdFByaXZh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQky
OUFFRjk2MDEzNEM3NkZCMDBGRTUwOTYgLyogT3V0bG9va1F1aXJrc1VzZXJTY3JpcHQuanMgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QUVGOTVEMTM0
Qzc1NTQwMEZFNTA5NiAvKiBPdXRsb29rUXVpcmtzVXNlclNjcmlwdC5qcyAqLzsgfTsKKwkJMkQy
NTM5NjYxOENFODVDMjAwMjcwMjIyIC8qIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyNTM5
NjQxOENFODVDMjAwMjcwMjIyIC8qIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5o
ICovOyB9OworCQkyRDI1Mzk2NzE4Q0U4NUMyMDAyNzAyMjIgLyogV2ViU2hhcmluZ1NlcnZpY2VQ
aWNrZXJDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkQyNTM5NjUxOENFODVDMjAwMjcwMjIyIC8qIFdlYlNoYXJpbmdTZXJ2aWNlUGlj
a2VyQ29udHJvbGxlci5tbSAqLzsgfTsKIAkJMzEyRTJGRTUxNEU0ODE4MjAwN0NDQTE4IC8qIFdl
Yk5vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzEyRTJGRTMxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxMkUyRkU2MTRF
NDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJFMkZFNDE0RTQ4MTgyMDA3Q0NBMTggLyogV2Vi
Tm90aWZpY2F0aW9uLm1tICovOyB9OwogCQkzMTJFMkZFOTE0RTQ4MjE1MDA3Q0NBMTggLyogV2Vi
Tm90aWZpY2F0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxMkUyRkU4MTRFNDgyMTUwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb25J
bnRlcm5hbC5oICovOyB9OwpAQCAtNTI3LDYgKzUyOSw4IEBACiAJCTIyRjIxOUNCMDhEMjM2NzMw
MDMwRTA3OCAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKIAkJMjU2OEM3MkMwMTc0OTEyRDBFQ0ExNDlFIC8qIFdlYktpdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJMjlBRUY5NUQx
MzRDNzU1NDAwRkU1MDk2IC8qIE91dGxvb2tRdWlya3NVc2VyU2NyaXB0LmpzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gT3V0bG9va1F1aXJrc1VzZXJTY3JpcHQuanM7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMjUzOTY0MThDRTg1QzIwMDI3MDIyMiAv
KiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMjUzOTY1MThDRTg1QzIwMDI3MDIyMiAvKiBXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMzZGRDVFMDNGNzhGOUUwMEE4MDE2NiAvKiBX
ZWJGb3JtRGVsZWdhdGVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViRm9ybURlbGVnYXRlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJMkQ4MURBQjIwM0VC
MEIyRDAwQTgwMTY2IC8qIFdlYkZvcm1EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGb3JtRGVsZWdhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTJEODFEQUIz
MDNFQjBCMkQwMEE4MDE2NiAvKiBXZWJGb3JtRGVsZWdhdGUubSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2ViRm9ybURlbGVnYXRlLm07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAt
MTEzNCw2ICsxMTM4LDggQEAKIAkJCQk5MzQ1RERBRTAzNjVGQjI3MDA4NjM1Q0UgLyogV2ViTlNX
aW5kb3dFeHRyYXMuaCAqLywKIAkJCQk5MzQ1RERBRjAzNjVGQjI3MDA4NjM1Q0UgLyogV2ViTlNX
aW5kb3dFeHRyYXMubSAqLywKIAkJCQlBNTdFMkYyMjEyMDc0OUU2MDAwNDhERjMgLyogV2ViUXVv
dGFNYW5hZ2VyLmggKi8sCisJCQkJMkQyNTM5NjQxOENFODVDMjAwMjcwMjIyIC8qIFdlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oICovLAorCQkJCTJEMjUzOTY1MThDRTg1QzIwMDI3
MDIyMiAvKiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIubW0gKi8sCiAJCQkJRjU5
NjY4QzgwMkFEMjkyMzAxODYzNUNBIC8qIFdlYlN0cmluZ1RydW5jYXRvci5oICovLAogCQkJCUY1
OTY2OEM5MDJBRDI5MjMwMTg2MzVDQSAvKiBXZWJTdHJpbmdUcnVuY2F0b3IubW0gKi8sCiAJCQkJ
REQ3Q0RFRTYwQTIzQkE5RTAwMDY5OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCAqLywKQEAgLTE4
NTQsNiArMTg2MCw3IEBACiAJCQkJOTM5ODEwMjQwODI0QkYwMTAwOERGMDM4IC8qIFdlYk5TVmll
d0V4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwMjUwODI0QkYwMTAwOERGMDM4IC8q
IFdlYk5TV2luZG93RXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNThBNTc5OTE0M0U3Mjcw
MDAxMjVGNTAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTJEMjUzOTY2MThDRTg1QzIwMDI3MDIyMiAvKiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDJBMDgyNEJGMDEwMDhERjAzOCAv
KiBXZWJQYW5lbEF1dGhlbnRpY2F0aW9uSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdC
NkZCNEUxMDYzNTMwQzAwMEZEQjNCIC8qIFdlYlBERkRvY3VtZW50RXh0cmFzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5Mzk4MTBBNTA4MjRCRjAxMDA4REYwMzggLyogV2ViUERGUmVwcmVzZW50YXRp
b24uaCBpbiBIZWFkZXJzICovLApAQCAtMjE2MSw2ICsyMTY4LDcgQEAKIAkJCWlzYSA9IFBCWFNv
dXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZp
bGVzID0gKAorCQkJCTJEMjUzOTY3MThDRTg1QzIwMDI3MDIyMiAvKiBXZWJTaGFyaW5nU2Vydmlj
ZVBpY2tlckNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTYwNTE5MTE3NTAyQTVE
MDBCQzYyRjUgLyogQmluYXJ5UHJvcGVydHlMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
OTgxMTAxMDgyNEJGMDEwMDhERjAzOCAvKiBDYXJib25VdGlscy5tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM5ODEwRkQwODI0QkYwMTAwOERGMDM4IC8qIENhcmJvbldpbmRvd0FkYXB0ZXIubW0gaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxZjVhYzYyLi44MWRlMWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTQtMDMtMTAgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgSG9vayB1cCBpbWFnZSBjb250cm9scyBm
b3IgV2ViS2l0MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMwMDYyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNTk2NDgwOT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2MvV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIE1pc2MvV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIGluaXRXaXRoSW1hZ2U6bWVudUNsaWVudDpdKToKKyAg
ICAgICAgKC1bV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIG1lbnVdKToKKyAgICAg
ICAgKC1bV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIHNoYXJpbmdTZXJ2aWNlUGlj
a2VyOmRlbGVnYXRlRm9yU2hhcmluZ1NlcnZpY2U6XSk6CisgICAgICAgICgtW1dlYlNoYXJpbmdT
ZXJ2aWNlUGlja2VyQ29udHJvbGxlciBzaGFyaW5nU2VydmljZVBpY2tlcjpkaWRDaG9vc2VTaGFy
aW5nU2VydmljZTpdKToKKyAgICAgICAgKC1bV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9s
bGVyIHNoYXJpbmdTZXJ2aWNlOmRpZFNoYXJlSXRlbXM6XSk6CisgICAgICAgICgtW1dlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciBzaGFyaW5nU2VydmljZTpkaWRGYWlsVG9TaGFyZUl0
ZW1zOmVycm9yOl0pOgorICAgICAgICAoLVtXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXIgc2hhcmluZ1NlcnZpY2U6c291cmNlV2luZG93Rm9yU2hhcmVJdGVtczpzaGFyaW5nQ29udGVu
dFNjb3BlOl0pOgorICAgICAgICBBZGQgYSBOU1NoYXJpbmdTZXJ2aWNlRGVsZWdhdGUgYW5kIE5T
U2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSwgd2hpY2ggd2lsbCBhbHNvCisgICAgICAgIHBy
b3ZpZGUgYSBOU01lbnUgaW5zdGFuY2UgZm9yIFdlYkNvbnRleHRNZW51Q2xpZW50IHRvIHBvcCB1
cCB3aGVuIGltYWdlIGNvbnRyb2xzIGFyZSBuZWVkZWQuCisgICAgICAgIFdoZW4gZGF0YSBpcyBy
ZXR1cm5lZCBmcm9tIHRoZSBzZXJ2aWNlLCBpdCBpcyByZS1pbnNlcnRlZCBpbnRvIHRoZSBpbWFn
ZSB2aWEgcmVwbGFjZUNvbnRyb2xsZWRJbWFnZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6Y29udGV4
dE1lbnVGb3JFdmVudCk6CisgICAgICAgIEZhY3RvciBvdXQgY29kZSB0byBkZWNpZGUgd2hpY2gg
TlNNZW51IHRvIHVzZSwgc28gdGhhdCB3ZSBjYW4gdXNlIGVhcmx5LXJldHVybnMgdG8gc2ltcGxp
ZnkgaXQuCisgICAgICAgIElmIHdlIGhpdCBhbiBpbWFnZSB3aXRoIGltYWdlIGNvbnRyb2xzLCB1
c2UgdGhlIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcidzIG1lbnUuCisKKyAgICAg
ICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAoV2Vi
Q29udGV4dE1lbnVDbGllbnQ6OmNsZWFyU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyKToK
KwogMjAxNC0wMy0xMCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXVtXSzFdIENyYXNoIGluIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcigpIC0gIi1bTlNTZXQgYWRkT2JqZWN0Ol06IG9iamVjdCBjYW5ub3QgYmUgbmlsIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWViMGU5
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
ZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisKK0BjbGFzcyBOU1NoYXJpbmdTZXJ2aWNlUGlja2Vy
OworQHByb3RvY29sIE5TU2hhcmluZ1NlcnZpY2VEZWxlZ2F0ZTsKK0Bwcm90b2NvbCBOU1NoYXJp
bmdTZXJ2aWNlUGlja2VyRGVsZWdhdGU7CisKK2NsYXNzIFdlYkNvbnRleHRNZW51Q2xpZW50Owor
CitAaW50ZXJmYWNlIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciA6IE5TT2JqZWN0
IDxOU1NoYXJpbmdTZXJ2aWNlRGVsZWdhdGUsIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0
ZT4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBtZW51
Q2xpZW50OihXZWJDb250ZXh0TWVudUNsaWVudCopbWVudUNsaWVudDsKKy0gKE5TTWVudSAqKW1l
bnU7CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMzQ3ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5tbQpAQCAt
MCwwICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldlYlNoYXJpbmdTZXJ2aWNlUGlj
a2VyQ29udHJvbGxlci5oIgorCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorCisjaW1wb3J0
ICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgorI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCisj
aW1wb3J0IDxBcHBLaXQvTlNTaGFyaW5nU2VydmljZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9CaXRt
YXBJbWFnZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvUGFnZS5oPgorCisjaWYgX19oYXNfaW5jbHVkZSg8QXBwS2l0L05TU2hh
cmluZ1NlcnZpY2VfUHJpdmF0ZS5oPikKKyNpbXBvcnQgPEFwcEtpdC9OU1NoYXJpbmdTZXJ2aWNl
X1ByaXZhdGUuaD4KKyNlbHNlCit0eXBlZGVmIGVudW0geworICAgIE5TU2hhcmluZ1NlcnZpY2VQ
aWNrZXJTdHlsZVJvbGxvdmVyID0gMQorfSBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGU7Cisj
ZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgeworICAgIFdlYkNvbnRleHRNZW51Q2xpZW50
KiBfbWVudUNsaWVudDsKKyAgICBSZXRhaW5QdHI8TlNTaGFyaW5nU2VydmljZVBpY2tlcj4gX3Bp
Y2tlcjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSW1hZ2U6KE5TSW1hZ2UgKilpbWFn
ZSBtZW51Q2xpZW50OihXZWJDb250ZXh0TWVudUNsaWVudCopbWVudUNsaWVudAoreworICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3Bp
Y2tlciA9IGFkb3B0TlMoW1tOU1NoYXJpbmdTZXJ2aWNlUGlja2VyIGFsbG9jXSBpbml0V2l0aEl0
ZW1zOkBbIGltYWdlIF1dKTsKKyAgICBbX3BpY2tlciBzZXRTdHlsZTpOU1NoYXJpbmdTZXJ2aWNl
UGlja2VyU3R5bGVSb2xsb3Zlcl07CisgICAgW19waWNrZXIgc2V0RGVsZWdhdGU6c2VsZl07CisK
KyAgICBfbWVudUNsaWVudCA9IG1lbnVDbGllbnQ7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKwor
LSAoTlNNZW51ICopbWVudQoreworICAgIHJldHVybiBbX3BpY2tlciBtZW51XTsKK30KKworI3By
YWdtYSBtYXJrIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBtZXRob2RzCisKKy0gKGlk
IDxOU1NoYXJpbmdTZXJ2aWNlRGVsZWdhdGU+KXNoYXJpbmdTZXJ2aWNlUGlja2VyOihOU1NoYXJp
bmdTZXJ2aWNlUGlja2VyICopc2hhcmluZ1NlcnZpY2VQaWNrZXIgZGVsZWdhdGVGb3JTaGFyaW5n
U2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlCit7CisgICAgcmV0dXJu
IHNlbGY7Cit9CisKKy0gKHZvaWQpc2hhcmluZ1NlcnZpY2VQaWNrZXI6KE5TU2hhcmluZ1NlcnZp
Y2VQaWNrZXIgKilzaGFyaW5nU2VydmljZVBpY2tlciBkaWRDaG9vc2VTaGFyaW5nU2VydmljZToo
TlNTaGFyaW5nU2VydmljZSAqKXNlcnZpY2UKK3sKKyAgICBpZiAoIXNlcnZpY2UpCisgICAgICAg
IF9tZW51Q2xpZW50LT5jbGVhclNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcigpOworfQor
CisjcHJhZ21hIG1hcmsgTlNTaGFyaW5nU2VydmljZURlbGVnYXRlIG1ldGhvZHMKKworLSAodm9p
ZClzaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlIGRpZFNo
YXJlSXRlbXM6KE5TQXJyYXkgKilpdGVtcworeworICAgIC8vIFdlIG9ubHkgc2VuZCBvbmUgaXRl
bSwgc28gd2Ugc2hvdWxkIG9ubHkgZ2V0IG9uZSBpdGVtIGJhY2suCisgICAgaWYgKFtpdGVtcyBj
b3VudF0gIT0gMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmV0YWluUHRyPENHSW1hZ2VTb3Vy
Y2VSZWY+IHNvdXJjZSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChDRkRh
dGFSZWYpW2l0ZW1zIG9iamVjdEF0SW5kZXg6MF0sIE5VTEwpKTsKKyAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY2dJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZUltYWdlQXRJbmRl
eChzb3VyY2UuZ2V0KCksIDAsIE5VTEwpKTsKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gQml0
bWFwSW1hZ2U6OmNyZWF0ZShjZ0ltYWdlLmdldCgpKTsKKworICAgIFBhZ2UqIHBhZ2UgPSBbX21l
bnVDbGllbnQtPndlYlZpZXcoKSBwYWdlXTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLnJlcGxhY2VDb250cm9sbGVk
SW1hZ2UoaW1hZ2UuZ2V0KCkpOworCisgICAgX21lbnVDbGllbnQtPmNsZWFyU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyKCk7Cit9CisKKy0gKHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hh
cmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBkaWRGYWlsVG9TaGFyZUl0ZW1zOihOU0FycmF5
ICopaXRlbXMgZXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIF9tZW51Q2xpZW50LT5jbGVh
clNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcigpOworfQorCistIChOU1dpbmRvdyAqKXNo
YXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2Ugc291cmNlV2lu
ZG93Rm9yU2hhcmVJdGVtczooTlNBcnJheSAqKWl0ZW1zIHNoYXJpbmdDb250ZW50U2NvcGU6KE5T
U2hhcmluZ0NvbnRlbnRTY29wZSAqKXNoYXJpbmdDb250ZW50U2NvcGUKK3sKKyAgICByZXR1cm4g
W19tZW51Q2xpZW50LT53ZWJWaWV3KCkgd2luZG93XTsKK30KKworQGVuZAorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5oCmluZGV4IGEzOGRhZDQuLmYzMzk5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMjgs
NiArMjgsMTAgQEAKIAogI2ltcG9ydCA8V2ViQ29yZS9Db250ZXh0TWVudUNsaWVudC5oPgogCisj
aWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorQGNsYXNzIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2Vy
Q29udHJvbGxlcjsKKyNlbmRpZgorCiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViQ29udGV4
dE1lbnVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQgewpAQCAtNDgs
OCArNTIsMTcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoU3BvdGxpZ2h0
KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpIG92ZXJyaWRl
OwogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIHZvaWQgY2xlYXJTaGFyaW5nU2Vy
dmljZVBpY2tlckNvbnRyb2xsZXIoKTsKKyNlbmRpZgorCiAgICAgV2ViVmlldyAqd2ViVmlldygp
IHsgcmV0dXJuIG1fd2ViVmlldzsgfQogICAgICAgICAKIHByaXZhdGU6CisgICAgTlNNZW51ICpj
b250ZXh0TWVudUZvckV2ZW50KE5TRXZlbnQgKiwgTlNWaWV3ICopOworCiAgICAgV2ViVmlldyAq
bV93ZWJWaWV3OworI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICBSZXRhaW5QdHI8V2Vi
U2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyPiBtX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29u
dHJvbGxlcjsKKyNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggODViYTllYS4uYzgyMGE2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiV2ViQ29u
dGV4dE1lbnVDbGllbnQuaCIKIAorI2ltcG9ydCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2lt
cG9ydCAiV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaCIKICNpbXBvcnQgIldlYkVs
ZW1lbnREaWN0aW9uYXJ5LmgiCiAjaW1wb3J0ICJXZWJGcmFtZS5oIgpAQCAtMzgsNiArMzksNyBA
QAogI2ltcG9ydCAiV2ViSFRNTFZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViS2l0VmVyc2lv
bkNoZWNrcy5oIgogI2ltcG9ydCAiV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLmgiCisjaW1wb3J0ICJX
ZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYlVJRGVsZWdh
dGUuaCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3
LmgiCkBAIC0zNTIsNiArMzU0LDIyIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnN0b3BT
cGVha2luZygpCiAgICAgW05TQXBwIHN0b3BTcGVha2luZzpuaWxdOwogfQogCitOU01lbnUgKldl
YkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUZvckV2ZW50KE5TRXZlbnQgKmV2ZW50LCBO
U1ZpZXcgKnZpZXcpCit7CisgICAgUGFnZSogcGFnZSA9IFttX3dlYlZpZXcgcGFnZV07CisgICAg
aWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gbmlsOworCisjaWYgRU5BQkxFKElNQUdFX0NPTlRS
T0xTKQorICAgIGlmIChJbWFnZSogaW1hZ2UgPSBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIo
KS5jb250ZXh0KCkuY29udHJvbGxlZEltYWdlKCkpIHsKKyAgICAgICAgbV9zaGFyaW5nU2Vydmlj
ZVBpY2tlckNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250
cm9sbGVyIGFsbG9jXSBpbml0V2l0aEltYWdlOmltYWdlLT5nZXROU0ltYWdlKCkgbWVudUNsaWVu
dDp0aGlzXSk7CisgICAgICAgIHJldHVybiBbbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXIgbWVudV07CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gW3ZpZXcgbWVudUZvckV2ZW50
OmV2ZW50XTsKK30KKwogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hvd0NvbnRleHRNZW51
KCkKIHsKICAgICBQYWdlKiBwYWdlID0gW21fd2ViVmlldyBwYWdlXTsKQEAgLTM2NCwxNCArMzgy
LDIxIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNob3dDb250ZXh0TWVudSgpCiAgICAg
aWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIEludFBvaW50IHBvaW50ID0g
ZnJhbWVWaWV3LT5jb250ZW50c1RvV2luZG93KHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigp
LmhpdFRlc3RSZXN1bHQoKS5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCkpOwogICAgIE5T
VmlldyogdmlldyA9IGZyYW1lVmlldy0+ZG9jdW1lbnRWaWV3KCk7CisgICAgSW50UG9pbnQgcG9p
bnQgPSBmcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhwYWdlLT5jb250ZXh0TWVudUNvbnRy
b2xsZXIoKS5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgpKTsK
ICAgICBOU1BvaW50IG5zU2NyZWVuUG9pbnQgPSBbdmlldyBjb252ZXJ0UG9pbnQ6cG9pbnQgdG9W
aWV3Om5pbF07Ci0gICAgLy8gU2hvdyB0aGUgY29udGV4dHVhbCBtZW51IGZvciB0aGlzIGV2ZW50
LgogICAgIE5TRXZlbnQqIGV2ZW50ID0gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOk5TUmln
aHRNb3VzZURvd24gbG9jYXRpb246bnNTY3JlZW5Qb2ludCBtb2RpZmllckZsYWdzOjAgdGltZXN0
YW1wOjAgd2luZG93TnVtYmVyOltbdmlldyB3aW5kb3ddIHdpbmRvd051bWJlcl0gY29udGV4dDow
IGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDoxIHByZXNzdXJlOjFdOwotICAgIE5TTWVudSogbnNN
ZW51ID0gW3ZpZXcgbWVudUZvckV2ZW50OmV2ZW50XTsKLSAgICBpZiAobnNNZW51KQotICAgICAg
ICBbTlNNZW51IHBvcFVwQ29udGV4dE1lbnU6bnNNZW51IHdpdGhFdmVudDpldmVudCBmb3JWaWV3
OnZpZXddOworCisgICAgLy8gU2hvdyB0aGUgY29udGV4dHVhbCBtZW51IGZvciB0aGlzIGV2ZW50
LgorICAgIGlmIChOU01lbnUgKm1lbnUgPSBjb250ZXh0TWVudUZvckV2ZW50KGV2ZW50LCB2aWV3
KSkKKyAgICAgICAgW05TTWVudSBwb3BVcENvbnRleHRNZW51Om1lbnUgd2l0aEV2ZW50OmV2ZW50
IGZvclZpZXc6dmlld107Cit9CisKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCit2b2lkIFdl
YkNvbnRleHRNZW51Q2xpZW50OjpjbGVhclNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcigp
Cit7CisgICAgbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgPSBuaWw7CiB9CisjZW5k
aWYKIAogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzJlY2IzYi4uZGUz
ZGI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE0LTAzLTEwICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEhvb2sgdXAgaW1hZ2UgY29u
dHJvbHMgZm9yIFdlYktpdDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzMDA2MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTU5NjQ4MDk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q29u
dGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEpOgorCiAyMDE0LTAzLTExICBKYWUgSHl1
biBQYXJrICA8amFlcGFya0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtHVEtdW0NNYWtlXSBBZGQg
SEFSRkJVWlpfSU5DTFVERV9ESVJTIHRvIFdlYktpdCBhbmQgV2ViS2l0MgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCmluZGV4IDRiNWRlMTIu
LjJjNDk2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNv
bnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250
ZXh0RGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29u
dGV4dE1lbnVDb250ZXh0RGF0YSgpCiBDb250ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVu
dUNvbnRleHREYXRhKGNvbnN0IENvbnRleHRNZW51Q29udGV4dCYgY29udGV4dCkKICAgICA6IG1f
d2ViSGl0VGVzdFJlc3VsdERhdGEoV2ViSGl0VGVzdFJlc3VsdDo6RGF0YShjb250ZXh0LmhpdFRl
c3RSZXN1bHQoKSkpCiAjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQotICAgICwgbV9pc0ltYWdl
Q29udHJvbChjb250ZXh0LmlzSW1hZ2VDb250cm9sKCkpCisgICAgLCBtX2lzSW1hZ2VDb250cm9s
KCEhY29udGV4dC5jb250cm9sbGVkSW1hZ2UoKSkKICNlbmRpZgogewogfQo=
</data>
<flag name="review"
          id="250670"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226465</attachid>
            <date>2014-03-11 19:18:40 -0700</date>
            <delta_ts>2014-03-11 20:09:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>picker.diff</filename>
            <type>text/plain</type>
            <size>66983</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhOGMyZmVmLi5jNDBhNTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEz
IEBACisyMDE0LTAzLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIEhvb2sgdXAgaW1hZ2UgY29udHJvbHMgZm9yIFdlYktpdDEKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA2MgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTU5NjQ4MDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFw
cGluZ3MuaDoKKyAgICAgICAgRml4IHNvbWUgaGVhZGVyIG9yZGVyaW5nLgorCisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICBI
YW5kbGUgbWFwcGluZyBJbWFnZUNvbnRyb2xzQnV0dG9uUGFydCB0byB0aGUgLXdlYmtpdC1hcHBl
YXJhbmNlIHZhbHVlIENTU1ZhbHVlSW1hZ2VDb250cm9sc0J1dHRvbi4KKworICAgICAgICAqIGNz
cy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIHBsYXRmb3JtL1RoZW1lVHlwZXMuaDoK
KyAgICAgICAgQWRkIGEgLXdlYmtpdC1hcHBlYXJhbmNlIHZhbHVlIGltYWdlLWNvbnRyb2xzLWJ1
dHRvbiwgYW5kIGFuIGFzc29jaWF0ZWQgY29udHJvbCBwYXJ0LgorCisgICAgICAgICogZG9tL05v
ZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1l
bnQpOiBBZGRlZC4KKworICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VD
b250cm9sc0J1dHRvbjo6UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjp+UmVuZGVySW1hZ2VDb250cm9sc0J1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjp1cGRhdGVM
b2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VDb250cm9sc0J1dHRv
bjo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9s
c0J1dHRvbkVsZW1lbnRNYWM6OkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjp+SW1hZ2VDb250cm9s
c0J1dHRvbkVsZW1lbnRNYWMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc0J1dHRv
bkVsZW1lbnRNYWM6Om1heWJlQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQ29udHJv
bHNCdXR0b25FbGVtZW50TWFjOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIp
OgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1h
Yy5oOiBBZGRlZC4KKyAgICAgICAgQWRkIGEgbmV3IGVsZW1lbnQvcmVuZGVyZXIgcGFpciBmb3Ig
dGhlIHNpbmdsZSBidXR0b24gdGhhdCBjb21wcmlzZXMgaW1hZ2UgY29udHJvbHMgb24gTWFjLgor
ICAgICAgICBSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uIGdldHMgaXRzIHNpemUgZnJvbSB0aGUg
dGhlbWUncyBpbWFnZUNvbnRyb2xzQnV0dG9uU2l6ZS4KKworICAgICAgICAqIGh0bWwvc2hhZG93
L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2VDb250cm9sczo6UmVuZGVySW1hZ2VDb250cm9scyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZUNvbnRyb2xzOjp+UmVuZGVySW1hZ2VDb250cm9scyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZUNvbnRyb2xzOjp1cGRhdGVMb2dpY2FsV2lkdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VDb250cm9sczo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50OjptYXliZUNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6OkltYWdl
Q29udHJvbHNSb290RWxlbWVudE1hYyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUNvbnRyb2xz
Um9vdEVsZW1lbnRNYWM6On5JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRN
YWMuaDoKKyAgICAgICAgQWRkIGEgY3VzdG9tIHJlbmRlcmVyIGZvciB0aGUgcm9vdCBpbWFnZSBj
b250cm9scyBlbGVtZW50IG9uIE1hYywgd2hpY2ggaW5oZXJpdHMKKyAgICAgICAgaXRzIHNpemUg
ZnJvbSB0aGUgPGltZz4gdGhhdCBpdCBpcyBzaGFkb3dpbmcuCisgICAgICAgIEFkZCBhIEltYWdl
Q29udHJvbHNCdXR0b25FbGVtZW50TWFjIGFzIHRoZSBzb2xlIGNoaWxkIG9mIHRoZSByb290IGVs
ZW1lbnQuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9tYWMvaW1hZ2VDb250cm9sc01hYy5jc3M6
CisgICAgICAgICgueC13ZWJraXQtaW1hZ2UtY29udHJvbHMpOgorICAgICAgICAoLngtd2Via2l0
LWltYWdlLWNvbnRyb2xzLWJ1dHRvbik6CisgICAgICAgICgueC13ZWJraXQtaW1hZ2UtY29udHJv
bHM6aG92ZXIgLngtd2Via2l0LWltYWdlLWNvbnRyb2xzLWJ1dHRvbik6CisgICAgICAgIFRoZSBi
dXR0b24gc2hvdWxkIGJlY29tZSBvcGFxdWUgd2hlbmV2ZXIgKmFueSogcGFydCBvZiB0aGUgaW1h
Z2UgaXMgaG92ZXJlZCwKKyAgICAgICAgbm90IGp1c3QgdGhlIGJ1dHRvbiBpdHNlbGYuIEFsc28s
IHVzZSB0aGUgbmV3IGltYWdlLWNvbnRyb2xzLWJ1dHRvbiAtd2Via2l0LWFwcGVhcmFuY2UKKyAg
ICAgICAgdmFsdWUgdG8gZ2V0IHRoZSBhcHByb3ByaWF0ZSBhcHBlYXJhbmNlIGZyb20gdGhlIHRo
ZW1lLgorCisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGV4dE1lbnVDb250ZXh0OjpDb250ZXh0TWVudUNvbnRleHQpOgorICAgICAg
ICAqIHBhZ2UvQ29udGV4dE1lbnVDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0
TWVudUNvbnRleHQ6OnNldENvbnRyb2xsZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudUNvbnRleHQ6OmNvbnRyb2xsZWRJbWFnZSk6CisgICAgICAgIFN0b3JlIGFuIGltYWdl
IG9uIHRoZSBDb250ZXh0TWVudUNvbnRleHQgaW5zdGVhZCBvZiBqdXN0IHdoZXRoZXIgd2UgaGl0
IGFuIGltYWdlLgorCisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpoYW5kbGVDb250ZXh0TWVu
dUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0Nv
bnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlRnJvbUltYWdlRWxlbWVudE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNv
bnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9w
dWxhdGUpOgorICAgICAgICBLZWVwIHRyYWNrIG9mIHRoZSBoaXQgaW1hZ2UgaW4gdGhlIENvbnRl
eHRNZW51Q29udGV4dC4KKworICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVy
OjpyZXBsYWNlQ29udHJvbGxlZEltYWdlKToKKyAgICAgICAgUmVwbGFjZSB0aGUgaGl0IGltYWdl
IHdpdGggYSBuZXcgb25lLgorCisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
aDoKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oOgorICAgICAgICBGaXgg
YSBkb3VibGUtc3BhY2UgdHlwby4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lOjpwYWludEJvcmRlck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6
OnBhaW50RGVjb3JhdGlvbnMpOgorICAgICAgICBIYW5kbGUgSW1hZ2VDb250cm9sc0J1dHRvblBh
cnQgaW4gUmVuZGVyVGhlbWUncyBzd2l0Y2hlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmltYWdlQ29udHJvbHNC
dXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludEltYWdlQ29u
dHJvbHNCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lTWFjOjpzZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2VsbCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRJbWFnZUNvbnRyb2xzQnV0dG9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjppbWFnZUNvbnRyb2xzQnV0dG9uU2l6ZSk6CisgICAg
ICAgIFBhaW50IHRoZSBpbWFnZSBjb250cm9scyBidXR0b24uCisKKyAgICAgICAgKiBlZGl0aW5n
L2lvcy9FZGl0b3JJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OldlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OldlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRVUkwpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9VUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpmYWtlVVJM
V2l0aFJlbGF0aXZlUGFydCk6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6CisgICAgICAgIEZh
Y3RvciBvdXQgY29kZSB0byBjcmVhdGUgYSAiZmFrZSIgVVJMICh3aXRoIGEgVVVJRCAiaG9zdG5h
bWUiIGFuZCB0aGUKKyAgICAgICAgd2Via2l0LWZha2UtdXJsIHByb3RvY29sKSwgYW5kIG1ha2Ug
dXNlIG9mIGl0IHdoZXJlIHdlIGNvbnN0cnVjdCBzdWNoIFVSTHMuCisKIDIwMTQtMDMtMTEgIFJ5
dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVz
ZWQgbWV0aG9kIGZyb20gQmF0dGVyeUNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXgg
NzZkN2EwMi4uNTIxOWYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTEyNCw2ICsxMjQsNyBA
QCBfX1pON1dlYkNvcmUxMUJpdG1hcEltYWdlQzFFUDdDR0ltYWdlUE5TXzEzSW1hZ2VPYnNlcnZl
ckUKIF9fWk43V2ViQ29yZTExQml0bWFwSW1hZ2VDMUVQTlNfMTNJbWFnZU9ic2VydmVyRQogX19a
TjdXZWJDb3JlMTFDYWNoZWRGcmFtZTIzY2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFFdgogX19aTjdX
ZWJDb3JlMTFDYWNoZWRGcmFtZTI2c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFFTlN0M19fMTEw
dW5pcXVlX3B0cklOU18yM0NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhRU5TMV8xNGRlZmF1bHRfZGVs
ZXRlSVMzX0VFRUUKK19fWk43V2ViQ29yZTExQ2FjaGVkSW1hZ2UxNmltYWdlRm9yUmVuZGVyZXJF
UEtOU18xMlJlbmRlck9iamVjdEUKIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXIxMGNob29zZUZp
bGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMUZpbGVDaG9vc2VyMTFjaG9vc2VGaWxl
c0VSS04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVF
CiBfX1pON1dlYkNvcmUxMUZpbGVDaG9vc2VyRDFFdgpAQCAtMTU1MSw2ICsxNTUyLDcgQEAgX19a
Tks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE3aXNDb250ZW50RWRpdGFibGVFdgogX19aTks3V2Vi
Q29yZTEzSGl0VGVzdFJlc3VsdDE4dGl0bGVEaXNwbGF5U3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUx
M0hpdFRlc3RSZXN1bHQxOW1lZGlhSXNJbkZ1bGxzY3JlZW5FdgogX19aTks3V2ViQ29yZTEzSGl0
VGVzdFJlc3VsdDE5cmVjdEJhc2VkVGVzdFJlc3VsdEV2CitfX1pOSzdXZWJDb3JlMTNIaXRUZXN0
UmVzdWx0MjFpbm5lck5vblNoYXJlZEVsZW1lbnRFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJl
c3VsdDVpbWFnZUV2CiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0NXRpdGxlRVJOU18xM1Rl
eHREaXJlY3Rpb25FCiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0OWltYWdlUmVjdEV2CkBA
IC0yOTMwLDYgKzI5MzIsMTAgQEAgX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlMjRzaG91bGRT
dG9wVGhyZWFkQWN0aXZpdHlFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlOWlzRW5hYmxl
ZEV2CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKK19fWk43V2ViQ29yZTIx
Q29udGV4dE1lbnVDb250cm9sbGVyMjJyZXBsYWNlQ29udHJvbGxlZEltYWdlRU4zV1RGMTBQYXNz
UmVmUHRySU5TXzVJbWFnZUVFRQorI2VuZGlmCisKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKIF9fWk43V2ViQ29yZTEwSURCS2V5RGF0YTE0c2V0TnVtYmVyVmFsdWVFZAogX19aTjdXZWJD
b3JlMTBJREJLZXlEYXRhNmRlY29kZUVSTlNfMTJLZXllZERlY29kZXJFUlMwXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE5OGU1
OWEuLjJhZTFlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEwMzUsNiArMTAzNSw4IEBACiAJCTJCMzY1Qzg0MTUyNTExOUUw
MDkxRDI3QiAvKiBSZW5kZXJTVkdFbGxpcHNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyQjQyMzVBMDE1MjUwRjYwMDBEQkJDRDggLyogUmVuZGVyU1ZH
RWxsaXBzZS5oICovOyB9OwogCQkyQkU4RTJDNzEyQTU4OUVDMDBGQUQ1NTAgLyogSFRNTE1ldGFD
aGFyc2V0UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQkU4RTJDNjEyQTU4OUVDMDBGQUQ1NTAgLyogSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmgg
Ki87IH07CiAJCTJCRThFMkM5MTJBNThBMDEwMEZBRDU1MCAvKiBIVE1MTWV0YUNoYXJzZXRQYXJz
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkJF
OEUyQzgxMkE1OEEwMTAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgKi87IH07
CisJCTJEMjUzOTYyMThDRTdGNjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVu
dE1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RDI1Mzk2MDE4Q0U3RjYyMDAyNzAyMjIgLyogSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMu
Y3BwICovOyB9OworCQkyRDI1Mzk2MzE4Q0U3RjYyMDAyNzAyMjIgLyogSW1hZ2VDb250cm9sc0J1
dHRvbkVsZW1lbnRNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJEMjUzOTYxMThDRTdGNjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxl
bWVudE1hYy5oICovOyB9OwogCQkyRDNBMEUzNjEzQTdENzYxMDBFODVBRjAgLyogU1ZHUGFyc2lu
Z0Vycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RDNBMEUzNTEzQTdENzYxMDBFODVBRjAgLyogU1ZHUGFyc2luZ0Vycm9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ0NkYwNEUxN0I5NkZCRDAw
NTY0N0YwIC8qIEludFBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJENDZGMDREMTdCOTZGQkQwMDU2NDdGMCAvKiBJbnRQb2ludC5jcHAgKi87
IH07CiAJCTJENDZGMDUwMTdCOTZGRDIwMDU2NDdGMCAvKiBJbnRTaXplLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENDZGMDRGMTdCOTZGRDIwMDU2
NDdGMCAvKiBJbnRTaXplLmNwcCAqLzsgfTsKQEAgLTc4NzEsNiArNzg3Myw4IEBACiAJCTJCNDIz
NUEwMTUyNTBGNjAwMERCQkNEOCAvKiBSZW5kZXJTVkdFbGxpcHNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0VsbGlwc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkJFOEUyQzYxMkE1ODlFQzAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBh
cnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MTWV0YUNoYXJzZXRQ
YXJzZXIuaDsgcGF0aCA9IHBhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkJFOEUyQzgxMkE1OEEwMTAwRkFENTUwIC8qIEhUTUxNZXRh
Q2hhcnNldFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBI
VE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBh
cnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMjUzOTYwMThDRTdGNjIw
MDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMjUzOTYxMThDRTdGNjIwMDI3MDIy
MiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRDJGQzA1NDE0NjBDRDZGMDAyNjM2MzMgLyogQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDJGQzA1NTE0NjBDRDZGMDAyNjM2MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyRkMwNTYxNDYwQ0Q2RjAwMjYzNjMz
IC8qIEdyYWRpZW50SW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR3JhZGllbnRJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTcy
Miw2ICsxNTcyNiw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CTUxMDE5MkQ4MThCN0Q3QUIwMDdGQzdBMSAvKiBpbWFnZUNvbnRyb2xzTWFjLmNzcyAqLywKKwkJ
CQkyRDI1Mzk2MDE4Q0U3RjYyMDAyNzAyMjIgLyogSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRN
YWMuY3BwICovLAorCQkJCTJEMjUzOTYxMThDRTdGNjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xz
QnV0dG9uRWxlbWVudE1hYy5oICovLAogCQkJCTUxMDE5MkNGMThCNkI5QUIwMDdGQzdBMSAvKiBJ
bWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwICovLAogCQkJCTUxMDE5MkQwMThCNkI5QUIw
MDdGQzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaCAqLywKIAkJCSk7CkBAIC0y
NDAxMSw2ICsyNDAxNyw3IEBACiAJCQkJN0FCMEIxQzExMjExQTYyMjAwQTc2OTQwIC8qIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzRjVDRjEzMTJFRDgxQjMw
MDg0QzU2OSAvKiBJbnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDFGMDYyMTQwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEMjUzOTYzMThDRTdGNjIwMDI3MDIyMiAvKiBJ
bWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EyNDU4
N0MxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGM0Q0QzQ3OTEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTE1NCw2ICsyOTE2MSw3
IEBACiAJCQkJMDFEM0NGODYxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMU2hhcmVkT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOUU1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTFRl
eHR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEMzRjFGNUExMEM4ODcxMjAwRDcyQ0UxIC8q
IFdlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJEMjUzOTYyMThD
RTdGNjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3N0ExN0E3NzEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdE9FUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTg0MEUyNDE4N0I4QUMyMDA4NDNC
MTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODRG
RTJGMTg2NENCODQwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWVNYXBwaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGlu
Z3MuaAppbmRleCAzZDM1NWY4Li4yMDIxMjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKQEAgLTM4LDkgKzM4LDYgQEAKICNpbmNsdWRlICJG
b250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJGb250U21vb3RoaW5nTW9kZS5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXMuaCIKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQot
I2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKLSNlbmRpZgogI2luY2x1ZGUgIkxlbmd0aC5o
IgogI2luY2x1ZGUgIkxpbmVDbGFtcFZhbHVlLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgpAQCAtNTEs
OSArNDgsMTIgQEAKICNpbmNsdWRlICJUaGVtZVR5cGVzLmgiCiAjaW5jbHVkZSAiVW5pY29kZUJp
ZGkuaCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgotCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KIAorI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCisjaW5jbHVkZSAiSW1h
Z2VPcmllbnRhdGlvbi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKHNob3J0IGkp
CkBAIC02MDQsNiArNjA0LDExIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShDb250cm9sUGFydCBlKQogICAgIGNhc2UgQ2Fwc0xvY2tJbmRp
Y2F0b3JQYXJ0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNhcHNMb2NrSW5k
aWNhdG9yOwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAg
Y2FzZSBJbWFnZUNvbnRyb2xzQnV0dG9uUGFydDoKKyAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVJbWFnZUNvbnRyb2xzQnV0dG9uOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAg
IGNhc2UgSW5wdXRTcGVlY2hCdXR0b25QYXJ0OgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlV2Via2l0SW5wdXRTcGVlY2hCdXR0b247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbiBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCmluZGV4IGUxNDAwYTcuLmQzNzQx
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCkBAIC03MTgsNiArNzE4
LDkgQEAgcmVsZXZhbmN5LWxldmVsLWluZGljYXRvcgogY29udGludW91cy1jYXBhY2l0eS1sZXZl
bC1pbmRpY2F0b3IKIGRpc2NyZXRlLWNhcGFjaXR5LWxldmVsLWluZGljYXRvcgogcmF0aW5nLWxl
dmVsLWluZGljYXRvcgorI2lmIGRlZmluZWQoRU5BQkxFX0lNQUdFX0NPTlRST0xTKSAmJiBFTkFC
TEVfSU1BR0VfQ09OVFJPTFMKK2ltYWdlLWNvbnRyb2xzLWJ1dHRvbgorI2VuZGlmCiB0ZXh0YXJl
YQogLy8gQW4gYXBwZWFyYW5jZSB2YWx1ZSB0aGF0IHNob3VsZCBub3QgYmUgYWNjZXB0ZWQgYnkg
dGhlIHBhcnNlcjoKIGNhcHMtbG9jay1pbmRpY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDk1ODQ2ZjUu
LjZiYTk5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjQwLDYgKzI0MCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgaXNJbnNlcnRpb25Qb2ludE5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUNv
bnRyb2xzUm9vdEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICNlbmRpZgogCiAgICAgYm9vbCBpc0RvY3VtZW50Tm9kZSgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IDEzYmQzNjkuLjc0ZmIwZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTQ3MCwxNCArNDcwLDYgQEAg
Ym9vbCBFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcikKICAgICByZXR1cm4gZnJhZ21lbnQ7CiB9CiAKLXN0YXRpYyBOU1VSTCog
dW5pcXVlVVJMV2l0aFJlbGF0aXZlUGFydChOU1N0cmluZyAqcmVsYXRpdmVQYXJ0KQotewotICAg
IFJldGFpblB0cjxDRlVVSURSZWY+IFVVSURSZWYgPSBhZG9wdENGKENGVVVJRENyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0KSk7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBVVUlEU3RyaW5nID0g
YWRvcHROUygoTlNTdHJpbmcgKilDRlVVSURDcmVhdGVTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgVVVJRFJlZi5nZXQoKSkpOwotCi0gICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOltO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA6Ly8lQC8lQCIsIEAid2Via2l0LWZha2UtdXJs
IiwgVVVJRFN0cmluZy5nZXQoKSwgcmVsYXRpdmVQYXJ0XV07Ci19Ci0KIGJvb2wgRWRpdG9yOjpX
ZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3Ry
aW5nVHlwZSA9IHR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKQEAgLTQ4NSw3ICs0NzcsNyBAQCBib29s
IEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIsIGNvbnN0CiAgICAgTlNTdHJpbmcgKnJlbGF0aXZlVVJMUGFydCA9IFtAImlt
YWdlIiBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpmaWxlbmFtZUV4dGVuc2lvbi5nZXQoKV07CiAg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtaW1lVHlwZSA9IGFkb3B0TlMoKE5TU3RyaW5nICopVVRU
eXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyhzdHJpbmdUeXBlLmdldCgpLCBrVVRUYWdDbGFz
c01JTUVUeXBlKSk7CiAKLSAgICBhZGRGcmFnbWVudChmcmFtZS5lZGl0b3IoKS5jcmVhdGVGcmFn
bWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjZShBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShidWZmZXIsIHVuaXF1ZVVSTFdpdGhSZWxhdGl2ZVBhcnQocmVsYXRpdmVVUkxQYXJ0KSwgbWlt
ZVR5cGUuZ2V0KCksIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpKSk7CisgICAgYWRkRnJh
Z21lbnQoZnJhbWUuZWRpdG9yKCkuY3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRk
UmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoYnVmZmVyLCBVUkw6OmZha2VVUkxXaXRo
UmVsYXRpdmVQYXJ0KHJlbGF0aXZlVVJMUGFydCksIG1pbWVUeXBlLmdldCgpLCBlbXB0eVN0cmlu
ZygpLCBlbXB0eVN0cmluZygpKSkpOwogICAgIHJldHVybiBmcmFnbWVudDsKIH0KIApAQCAtNTA4
LDEwICs1MDAsMTAgQEAgYm9vbCBFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYpCiAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4g
ZmlsZVR5cGUgPSBhZG9wdE5TKChOU1N0cmluZyAqKVVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50
aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiwgKENGU3RyaW5nUmVmKVts
b2NhbFBhdGggcGF0aEV4dGVuc2lvbl0sIE5VTEwpKTsKICAgICAgICAgTlNEYXRhICpkYXRhID0g
W05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmxvY2FsUGF0aF07CiAgICAgICAgIGlmIChV
VFR5cGVDb25mb3Jtc1RvKChDRlN0cmluZ1JlZilmaWxlVHlwZS5nZXQoKSwga1VUVHlwZVBORykp
IHsKLSAgICAgICAgICAgIGFkZEZyYWdtZW50KGZyYW1lLmVkaXRvcigpLmNyZWF0ZUZyYWdtZW50
Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291cmNlKEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNo
YXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShbW2RhdGEgY29weV0gYXV0b3JlbGVhc2VdKSwgdW5pcXVl
VVJMV2l0aFJlbGF0aXZlUGFydChAImltYWdlLnBuZyIpLCBAImltYWdlL3BuZyIsIGVtcHR5U3Ry
aW5nKCksIGVtcHR5U3RyaW5nKCkpKSk7CisgICAgICAgICAgICBhZGRGcmFnbWVudChmcmFtZS5l
ZGl0b3IoKS5jcmVhdGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjZShBcmNo
aXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoW1tkYXRhIGNvcHld
IGF1dG9yZWxlYXNlXSksIFVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoImltYWdlLnBuZyIp
LCBAImltYWdlL3BuZyIsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZnJhZ21lbnQ7CiAgICAgICAgIH0gZWxzZSBpZiAoVVRUeXBlQ29uZm9ybXNU
bygoQ0ZTdHJpbmdSZWYpZmlsZVR5cGUuZ2V0KCksIGtVVFR5cGVKUEVHKSkgewotICAgICAgICAg
ICAgYWRkRnJhZ21lbnQoZnJhbWUuZWRpdG9yKCkuY3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291
cmNlQW5kQWRkUmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjp3
cmFwTlNEYXRhKFtbZGF0YSBjb3B5XSBhdXRvcmVsZWFzZV0pLCB1bmlxdWVVUkxXaXRoUmVsYXRp
dmVQYXJ0KEAiaW1hZ2UuanBnIiksIEAiaW1hZ2UvanBnIiwgZW1wdHlTdHJpbmcoKSwgZW1wdHlT
dHJpbmcoKSkpKTsKKyAgICAgICAgICAgIGFkZEZyYWdtZW50KGZyYW1lLmVkaXRvcigpLmNyZWF0
ZUZyYWdtZW50Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291cmNlKEFyY2hpdmVSZXNvdXJjZTo6
Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShbW2RhdGEgY29weV0gYXV0b3JlbGVhc2Vd
KSwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydCgiaW1hZ2UuanBnIiksIEAiaW1hZ2UvanBn
IiwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkpKTsKICAgICAgICAgICAgIHJldHVybiBm
cmFnbWVudDsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW0KaW5kZXggNjlhZGYwNi4uZGUzOGY3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtNTQ1LDcgKzU0NSw3IEBAIGJvb2wgRWRpdG9yOjpX
ZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciwgY29uc3QKICAgICBBU1NFUlQodHlwZS5jb250YWlucygnLycpKTsKICAgICBTdHJpbmcgdHlw
ZUFzRmlsZW5hbWVXaXRoRXh0ZW5zaW9uID0gdHlwZTsKICAgICB0eXBlQXNGaWxlbmFtZVdpdGhF
eHRlbnNpb24ucmVwbGFjZSgnLycsICcuJyk7Ci0gICAgVVJMIGltYWdlVVJMID0gVVJMKFVSTCgp
LCAid2Via2l0LWZha2UtdXJsOi8vIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSArICcv
JyArIHR5cGVBc0ZpbGVuYW1lV2l0aEV4dGVuc2lvbik7CisgICAgVVJMIGltYWdlVVJMID0gVVJM
OjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydCh0eXBlQXNGaWxlbmFtZVdpdGhFeHRlbnNpb24pOwog
CiAgICAgZnJhZ21lbnQgPSBmcmFtZS5lZGl0b3IoKS5jcmVhdGVGcmFnbWVudEZvckltYWdlUmVz
b3VyY2VBbmRBZGRSZXNvdXJjZShBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShidWZmZXIsIGltYWdl
VVJMLCB0eXBlLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpKSk7CiAgICAgcmV0dXJuIGZy
YWdtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdl
Q29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMWI4YmMwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAKQEAg
LTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuaCIKKworI2lmIEVOQUJMRShJTUFHRV9D
T05UUk9MUykKKworI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgorI2luY2x1ZGUg
IkV2ZW50LmgiCisjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIK
KyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFJlbmRlckltYWdlQ29udHJvbHNCdXR0b24gZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93
IHsKK3B1YmxpYzoKKyAgICBSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKEhUTUxFbGVtZW50Jiwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIHZpcnR1YWwgflJlbmRlckltYWdlQ29udHJvbHNC
dXR0b24oKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRo
KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91
dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50
Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJJbWFnZUNvbnRy
b2xzQnV0dG9uIjsgfQorICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxj
UHJvcGFnYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Cit9OworCitSZW5k
ZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKEhUTUxFbGVt
ZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKKyAgICA6IFJlbmRlckJs
b2NrRmxvdyhlbGVtZW50LCBzdGQ6Om1vdmUoc3R5bGUpKQoreworfQorCitSZW5kZXJJbWFnZUNv
bnRyb2xzQnV0dG9uOjp+UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbigpCit7Cit9CisKK3ZvaWQg
UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbjo6dXBkYXRlTG9naWNhbFdpZHRoKCkKK3sKKyAgICBS
ZW5kZXJCb3g6OnVwZGF0ZUxvZ2ljYWxXaWR0aCgpOworCisgICAgSW50U2l6ZSBmcmFtZVNpemUg
PSB0aGVtZSgpLmltYWdlQ29udHJvbHNCdXR0b25TaXplKHRoaXMpOworICAgIHNldExvZ2ljYWxX
aWR0aChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gZnJhbWVTaXplLndpZHRoKCkgOiBmcmFt
ZVNpemUuaGVpZ2h0KCkpOworfQorCit2b2lkIFJlbmRlckltYWdlQ29udHJvbHNCdXR0b246OmNv
bXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBs
b2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGVkVmFsdWVzKSBj
b25zdAoreworICAgIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdo
dCwgbG9naWNhbFRvcCwgY29tcHV0ZWRWYWx1ZXMpOworCisgICAgSW50U2l6ZSBmcmFtZVNpemUg
PSB0aGVtZSgpLmltYWdlQ29udHJvbHNCdXR0b25TaXplKHRoaXMpOworICAgIGNvbXB1dGVkVmFs
dWVzLm1fZXh0ZW50ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZyYW1lU2l6ZS5oZWln
aHQoKSA6IGZyYW1lU2l6ZS53aWR0aCgpOworfQorCitJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVu
dE1hYzo6SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMoRG9jdW1lbnQmIGRvY3VtZW50KQor
ICAgIDogSFRNTERpdkVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQoreworfQor
CitJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6fkltYWdlQ29udHJvbHNCdXR0b25FbGVt
ZW50TWFjKCkKK3sKK30KKworUGFzc1JlZlB0cjxJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1h
Yz4gSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6Om1heWJlQ3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCkKK3sKKyAgICBpZiAoIWRvY3VtZW50LnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBSZWZQdHI8SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM+IGJ1dHRv
biA9IGFkb3B0UmVmKG5ldyBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYyhkb2N1bWVudCkp
OworICAgIGJ1dHRvbi0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAieC13ZWJr
aXQtaW1hZ2UtY29udHJvbHMtYnV0dG9uIik7CisKKyAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2Uo
KTsKK30KKwordm9pZCBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQpIHsKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgp
LnBhZ2UoKSkKKyAgICAgICAgICAgIHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLnNob3dJ
bWFnZUNvbnRyb2xzTWVudShldmVudCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoZXZlbnQpOworfQorCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSW1h
Z2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
SW1hZ2VDb250cm9sc0J1dHRvbj4oKnRoaXMsIHN0ZDo6bW92ZShzdHlsZSkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1
dHRvbkVsZW1lbnRNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNv
bnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjM0MDVmMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuaApAQCAtMCwwICsxLDU0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hY19oCisjZGVm
aW5lIEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjX2gKKworI2luY2x1ZGUgIkhUTUxEaXZF
bGVtZW50LmgiCisKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMgZmluYWwgOiBwdWJs
aWMgSFRNTERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkltYWdlQ29udHJvbHNC
dXR0b25FbGVtZW50TWFjKCk7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUNvbnRyb2xz
QnV0dG9uRWxlbWVudE1hYz4gbWF5YmVDcmVhdGUoRG9jdW1lbnQmKTsKKworcHJpdmF0ZToKKyAg
ICBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYyhEb2N1bWVudCYpOworCisgICAgdmlydHVh
bCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworCisgICAgdmlydHVhbCBib29sIGlzSW1hZ2VDb250cm9s
c0J1dHRvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQ09OVFJPTFMp
CisKKyNlbmRpZiAvLyBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hY19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50
TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9v
dEVsZW1lbnRNYWMuY3BwCmluZGV4IDhhZWFiZGQuLjM3YjEyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVs
ZW1lbnRNYWMuY3BwCkBAIC0yOCw1MiArMjgsODMgQEAKIAogI2lmIEVOQUJMRShJTUFHRV9DT05U
Uk9MUykKIAotI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIkV2
ZW50LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlRleHQuaCIKKyNpbmNsdWRlICJI
VE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmgi
CisjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIK
KyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUltYWdl
Q29udHJvbHNSb290RWxlbWVudE1hYzo6SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjKERvY3Vt
ZW50JiBkb2N1bWVudCkKLSAgICA6IEltYWdlQ29udHJvbHNSb290RWxlbWVudChkb2N1bWVudCkK
K2NsYXNzIFJlbmRlckltYWdlQ29udHJvbHMgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93
IHsKK3B1YmxpYzoKKyAgICBSZW5kZXJJbWFnZUNvbnRyb2xzKEhUTUxFbGVtZW50JiwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pOworICAgIHZpcnR1YWwgflJlbmRlckltYWdlQ29udHJvbHMoKTsKKwor
cHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoKCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNh
bEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1
ZXMmKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJJbWFnZUNvbnRyb2xzIjsgfQorICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Cit9OworCitSZW5kZXJJbWFnZUNvbnRyb2xzOjpS
ZW5kZXJJbWFnZUNvbnRyb2xzKEhUTUxFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKKyAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBzdGQ6Om1vdmUoc3R5
bGUpKQogewogfQogCi1JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6On5JbWFnZUNvbnRyb2xz
Um9vdEVsZW1lbnRNYWMoKQorUmVuZGVySW1hZ2VDb250cm9sczo6flJlbmRlckltYWdlQ29udHJv
bHMoKQogewogfQogCi1QYXNzUmVmUHRyPEltYWdlQ29udHJvbHNSb290RWxlbWVudD4gSW1hZ2VD
b250cm9sc1Jvb3RFbGVtZW50OjptYXliZUNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCit2b2lk
IFJlbmRlckltYWdlQ29udHJvbHM6OnVwZGF0ZUxvZ2ljYWxXaWR0aCgpCiB7Ci0gICAgcmV0dXJu
IEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6bWF5YmVDcmVhdGUoZG9jdW1lbnQpOworICAg
IFJlbmRlckJveDo6dXBkYXRlTG9naWNhbFdpZHRoKCk7CisKKyAgICBSZW5kZXJFbGVtZW50KiBy
ZW5kZXJlciA9IGVsZW1lbnQoKS0+c2hhZG93SG9zdCgpLT5yZW5kZXJlcigpOworICAgIGlmICgh
cmVuZGVyZXItPmlzUmVuZGVySW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2V0TG9n
aWNhbFdpZHRoKHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5sb2dpY2FsV2lkdGgoKSk7Cit9CisK
K3ZvaWQgUmVuZGVySW1hZ2VDb250cm9sczo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5p
dCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21w
dXRlZFZhbHVlcyYgY29tcHV0ZWRWYWx1ZXMpIGNvbnN0Cit7CisgICAgUmVuZGVyQm94Ojpjb21w
dXRlTG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0LCBsb2dpY2FsVG9wLCBjb21wdXRlZFZhbHVl
cyk7CisKKyAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IGVsZW1lbnQoKS0+c2hhZG93SG9z
dCgpLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXItPmlzUmVuZGVySW1hZ2UoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSB0b1JlbmRlcklt
YWdlKHJlbmRlcmVyKS0+bG9naWNhbEhlaWdodCgpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlQ29u
dHJvbHNSb290RWxlbWVudE1hYz4gSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjptYXliZUNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCitQYXNzUmVmUHRyPEltYWdlQ29udHJvbHNSb290RWxl
bWVudD4gSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50OjptYXliZUNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQpCiB7CiAgICAgaWYgKCFkb2N1bWVudC5wYWdlKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgUmVmUHRyPEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYz4gY29udHJvbHMg
PSBhZG9wdFJlZihuZXcgSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjKGRvY3VtZW50KSk7Ci0g
ICAgY29udHJvbHMtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwgIngtd2Via2l0
LWltYWdlbWVudSIpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgY29udHJvbHMtPmFwcGVu
ZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgIiIpLCBlYyk7Ci0gICAgaWYgKGVjKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjb250cm9scy0+c2V0QXR0cmlidXRlKEhUTUxOYW1l
czo6Y2xhc3NBdHRyLCAieC13ZWJraXQtaW1hZ2UtY29udHJvbHMiKTsKKworICAgIGNvbnRyb2xz
LT5hcHBlbmRDaGlsZChJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6bWF5YmVDcmVhdGUo
ZG9jdW1lbnQpKTsKIAogICAgIHJldHVybiBjb250cm9scy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQg
SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKK0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6SW1hZ2VDb250cm9sc1Jvb3RFbGVt
ZW50TWFjKERvY3VtZW50JiBkb2N1bWVudCkKKyAgICA6IEltYWdlQ29udHJvbHNSb290RWxlbWVu
dChkb2N1bWVudCkKK3sKK30KKworSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjp+SW1hZ2VD
b250cm9sc1Jvb3RFbGVtZW50TWFjKCkKIHsKLSAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkuY2xpY2tFdmVudCkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50
KCkucGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuc2hv
d0ltYWdlQ29udHJvbHNNZW51KGV2ZW50KTsKK30KIAotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIAotICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK3sKKyAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW1hZ2VDb250cm9scz4oKnRoaXMsIHN0ZDo6bW92ZShz
dHlsZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFj
LmgKaW5kZXggMjgzZDBiNy4uMjcyZTcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaApAQCAt
MzIsMTYgKzMyLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW1hZ2VDb250
cm9sc1Jvb3RFbGVtZW50TWFjIDogcHVibGljIEltYWdlQ29udHJvbHNSb290RWxlbWVudCB7Citj
bGFzcyBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMgZmluYWwgOiBwdWJsaWMgSW1hZ2VDb250
cm9sc1Jvb3RFbGVtZW50IHsKKyAgICBmcmllbmQgY2xhc3MgSW1hZ2VDb250cm9sc1Jvb3RFbGVt
ZW50OwogcHVibGljOgotICAgIH5JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMoKTsKLQotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYz4gbWF5YmVDcmVh
dGUoRG9jdW1lbnQmKTsKKyAgICB2aXJ0dWFsIH5JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMo
KTsKIAogcHJpdmF0ZToKICAgICBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMoRG9jdW1lbnQm
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9p
bWFnZUNvbnRyb2xzTWFjLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9pbWFn
ZUNvbnRyb2xzTWFjLmNzcwppbmRleCBhNWQ3MDg5Li4zNGQ4ODM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvaW1hZ2VDb250cm9sc01hYy5jc3MKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL2ltYWdlQ29udHJvbHNNYWMuY3NzCkBAIC0yMywx
NiArMjMsMjAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0u
eC13ZWJraXQtaW1hZ2VtZW51IHsKLSAgICBvcGFjaXR5OiAwOworLngtd2Via2l0LWltYWdlLWNv
bnRyb2xzIHsKICAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjog
cmVkOwotICAgIHdpZHRoOiAyMHB4OwotICAgIGhlaWdodDogMjBweDsKLSAgICBib3JkZXItcmFk
aXVzOiA1cHg7Ci0gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzOwogfQogCi0ueC13ZWJraXQt
aW1hZ2VtZW51OmhvdmVyIHsKKy54LXdlYmtpdC1pbWFnZS1jb250cm9scy1idXR0b24geworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICByaWdodDogMThweDsgLyogRklYTUU6IFdoeSBpcyBy
aWdodDogMHB4IG9mZiB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgcGFyZW50PyAqLworCisgICAgLXdl
YmtpdC1hcHBlYXJhbmNlOiBpbWFnZS1jb250cm9scy1idXR0b247CisKKyAgICB0cmFuc2l0aW9u
OiBvcGFjaXR5IDAuMjVzOworICAgIG9wYWNpdHk6IDA7Cit9CisKKy54LXdlYmtpdC1pbWFnZS1j
b250cm9sczpob3ZlciAueC13ZWJraXQtaW1hZ2UtY29udHJvbHMtYnV0dG9uIHsKICAgICBvcGFj
aXR5OiAxLjA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udGV4dC5jcHAK
aW5kZXggODhmZmIwYy4uYTNkMmQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDb250ZXh0LmNwcApAQCAtMzIsMjIgKzMyLDE1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IENvbnRleHRNZW51Q29udGV4dDo6Q29udGV4dE1lbnVDb250ZXh0KCkKLSNpZiBFTkFCTEUoSU1B
R0VfQ09OVFJPTFMpCi0gICAgOiBtX2lzSW1hZ2VDb250cm9sKGZhbHNlKQotI2VuZGlmCiB7CiB9
CiAKLUNvbnRleHRNZW51Q29udGV4dDo6Q29udGV4dE1lbnVDb250ZXh0KGNvbnN0IEhpdFRlc3RS
ZXN1bHQmIGhpdFRlc3RSZXN1bHQsIGJvb2wgaXNJbWFnZUNvbnRyb2wpCitDb250ZXh0TWVudUNv
bnRleHQ6OkNvbnRleHRNZW51Q29udGV4dChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVz
dWx0KQogICAgIDogbV9oaXRUZXN0UmVzdWx0KGhpdFRlc3RSZXN1bHQpCiAjaWYgRU5BQkxFKElN
QUdFX0NPTlRST0xTKQotICAgICwgbV9pc0ltYWdlQ29udHJvbChpc0ltYWdlQ29udHJvbCkKKyAg
ICAsIG1fY29udHJvbGxlZEltYWdlKG51bGxwdHIpCiAjZW5kaWYKIHsKLSNpZiAhRU5BQkxFKElN
QUdFX0NPTlRST0xTKQotICAgIFVOVVNFRF9QQVJBTShpc0ltYWdlQ29udHJvbCk7Ci0jZW5kaWYK
LSAgICBBU1NFUlRfVU5VU0VEKGlzSW1hZ2VDb250cm9sLCB0cnVlKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250ZXh0LmgKaW5k
ZXggOWI2OTFjZC4uOTYxOWNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dGV4dC5oCkBAIC0zMCwxOCArMzAsMjAgQEAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIAog
I2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRleHRNZW51Q29udGV4dCB7CiBwdWJsaWM6CiAgICAg
Q29udGV4dE1lbnVDb250ZXh0KCk7Ci0gICAgQ29udGV4dE1lbnVDb250ZXh0KGNvbnN0IEhpdFRl
c3RSZXN1bHQmLCBib29sIGlzSW1hZ2VDb250cm9sID0gZmFsc2UpOworICAgIENvbnRleHRNZW51
Q29udGV4dChjb25zdCBIaXRUZXN0UmVzdWx0Jik7CiAKICAgICBjb25zdCBIaXRUZXN0UmVzdWx0
JiBoaXRUZXN0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9oaXRUZXN0UmVzdWx0OyB9CiAKICNp
ZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCi0gICAgYm9vbCBpc0ltYWdlQ29udHJvbCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNJbWFnZUNvbnRyb2w7IH0KKyAgICB2b2lkIHNldENvbnRyb2xsZWRJbWFn
ZShJbWFnZSogY29udHJvbGxlZEltYWdlKSB7IG1fY29udHJvbGxlZEltYWdlID0gY29udHJvbGxl
ZEltYWdlOyB9CisgICAgSW1hZ2UqIGNvbnRyb2xsZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udHJvbGxlZEltYWdlLmdldCgpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTQ5LDcgKzUx
LDcgQEAgcHJpdmF0ZToKICAgICBIaXRUZXN0UmVzdWx0IG1faGl0VGVzdFJlc3VsdDsKIAogI2lm
IEVOQUJMRShJTUFHRV9DT05UUk9MUykKLSAgICBib29sIG1faXNJbWFnZUNvbnRyb2w7CisgICAg
UmVmUHRyPEltYWdlPiBtX2NvbnRyb2xsZWRJbWFnZTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IDcwMzczYWEuLjM2
NmU5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHAKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgog
I2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNsZWFyQ29udGV4dE1lbnUoKQogCiB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChFdmVudCogZXZlbnQpCiB7Ci0g
ICAgbV9jb250ZXh0TWVudSA9IGNyZWF0ZUNvbnRleHRNZW51KGV2ZW50KTsKKyAgICBtX2NvbnRl
eHRNZW51ID0gbWF5YmVDcmVhdGVDb250ZXh0TWVudShldmVudCk7CiAgICAgaWYgKCFtX2NvbnRl
eHRNZW51KQogICAgICAgICByZXR1cm47CiAKQEAgLTExNCw3ICsxMTUsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6c2hvd0NvbnRleHRNZW51KEV2ZW50KiBldmVudCwgUGFzc1JlZlB0
cjxDb250ZXh0TWVudQogewogICAgIG1fbWVudVByb3ZpZGVyID0gbWVudVByb3ZpZGVyOwogCi0g
ICAgbV9jb250ZXh0TWVudSA9IGNyZWF0ZUNvbnRleHRNZW51KGV2ZW50KTsKKyAgICBtX2NvbnRl
eHRNZW51ID0gbWF5YmVDcmVhdGVDb250ZXh0TWVudShldmVudCk7CiAgICAgaWYgKCFtX2NvbnRl
eHRNZW51KSB7CiAgICAgICAgIGNsZWFyQ29udGV4dE1lbnUoKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTI4LDcgKzEyOSwyMyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0NvbnRl
eHRNZW51KEV2ZW50KiBldmVudCwgUGFzc1JlZlB0cjxDb250ZXh0TWVudQogICAgIHNob3dDb250
ZXh0TWVudShldmVudCk7CiB9CiAKLVBhc3NPd25QdHI8Q29udGV4dE1lbnU+IENvbnRleHRNZW51
Q29udHJvbGxlcjo6Y3JlYXRlQ29udGV4dE1lbnUoRXZlbnQqIGV2ZW50KQorI2lmIEVOQUJMRShJ
TUFHRV9DT05UUk9MUykKK3N0YXRpYyBJbWFnZSogaW1hZ2VGcm9tSW1hZ2VFbGVtZW50Tm9kZShO
b2RlJiBub2RlKQoreworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLnJlbmRlcmVy
KCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYg
KCFyZW5kZXJlci0+aXNSZW5kZXJJbWFnZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBDYWNoZWRJbWFnZSogaW1hZ2UgPSB0b1JlbmRlckltYWdlKCpyZW5kZXJlcikuY2FjaGVkSW1h
Z2UoKTsKKyAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJl
bmRlcmVyKTsKK30KKyNlbmRpZgorCitQYXNzT3duUHRyPENvbnRleHRNZW51PiBDb250ZXh0TWVu
dUNvbnRyb2xsZXI6Om1heWJlQ3JlYXRlQ29udGV4dE1lbnUoRXZlbnQqIGV2ZW50KQogewogICAg
IEFTU0VSVChldmVudCk7CiAgICAgCkBAIC0xNDUsMTAgKzE2MiwxNiBAQCBQYXNzT3duUHRyPENv
bnRleHRNZW51PiBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNyZWF0ZUNvbnRleHRNZW51KEV2ZW50
KiBldmVudCkKICAgICBpZiAoIXJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCi0gICAgbV9jb250
ZXh0ID0gQ29udGV4dE1lbnVDb250ZXh0KHJlc3VsdCwgbm9kZS0+aXNJbWFnZUNvbnRyb2xzUm9v
dEVsZW1lbnQoKSk7Ci0jZWxzZQogICAgIG1fY29udGV4dCA9IENvbnRleHRNZW51Q29udGV4dChy
ZXN1bHQpOworCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIGlmIChub2RlLT5pc0lt
YWdlQ29udHJvbHNCdXR0b25FbGVtZW50KCkpIHsKKyAgICAgICAgaWYgKEltYWdlKiBpbWFnZSA9
IGltYWdlRnJvbUltYWdlRWxlbWVudE5vZGUoKnJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSkp
CisgICAgICAgICAgICBtX2NvbnRleHQuc2V0Q29udHJvbGxlZEltYWdlKGltYWdlKTsKKworICAg
ICAgICAvLyBGSVhNRTogSWYgd2UgY291bGRuJ3QgZ2V0IHRoZSBpbWFnZSB0aGVuIHdlIHNob3Vs
ZG4ndCB0cnkgdG8gc2hvdyB0aGUgaW1hZ2UgY29udHJvbHMgbWVudSBmb3IgaXQuCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KICNlbmRpZgogCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBDb250ZXh0TWVudSk7CkBAIC04MjIsNyArODQ1LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRy
b2xsZXI6OnBvcHVsYXRlKCkKIAogI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKICAgICAvLyBU
aGUgZGVmYXVsdCBpbWFnZSBjb250cm9sIG1lbnUgZ2V0cyBwb3B1bGF0ZWQgc29sZWx5IGJ5IHRo
ZSBwbGF0Zm9ybS4KLSAgICBpZiAobV9jb250ZXh0LmlzSW1hZ2VDb250cm9sKCkpCisgICAgaWYg
KG1fY29udGV4dC5jb250cm9sbGVkSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAK
QEAgLTE0MjksNiArMTQ1MiwyNCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0lt
YWdlQ29udHJvbHNNZW51KEV2ZW50KiBldmVudCkKICAgICBoYW5kbGVDb250ZXh0TWVudUV2ZW50
KGV2ZW50KTsKICAgICBtX2NsaWVudC5zaG93Q29udGV4dE1lbnUoKTsKIH0KKwordm9pZCBDb250
ZXh0TWVudUNvbnRyb2xsZXI6OnJlcGxhY2VDb250cm9sbGVkSW1hZ2UoUGFzc1JlZlB0cjxJbWFn
ZT4gbmV3SW1hZ2UpCit7CisgICAgTm9kZSogbm9kZSA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0
KCkuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47
CisKKyAgICBGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CisgICAgaWYg
KCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzUmVu
ZGVySW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkSW1hZ2U+IHJlcGxhY2VkSW1hZ2UgPSBuZXcgQ2FjaGVkSW1hZ2UoVVJMOjpmYWtlVVJM
V2l0aFJlbGF0aXZlUGFydCgiaW1hZ2UiKSwgbmV3SW1hZ2UuZ2V0KCksIGZyYW1lLT5wYWdlKCkt
PnNlc3Npb25JRCgpKTsKKyAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+aW1hZ2VSZXNvdXJj
ZSgpLnNldENhY2hlZEltYWdlKHJlcGxhY2VkSW1hZ2UuZ2V0KCkpOworfQogI2VuZGlmCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5oCmluZGV4IGU4NzhiMTAuLjFlZjdmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaApAQCAtNzEsMTAgKzcxLDExIEBAIHB1YmxpYzoKIAog
I2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKICAgICB2b2lkIHNob3dJbWFnZUNvbnRyb2xzTWVu
dShFdmVudCopOworICAgIHZvaWQgcmVwbGFjZUNvbnRyb2xsZWRJbWFnZShQYXNzUmVmUHRyPElt
YWdlPik7CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBQYXNzT3duUHRyPENvbnRleHRNZW51PiBj
cmVhdGVDb250ZXh0TWVudShFdmVudCopOworICAgIFBhc3NPd25QdHI8Q29udGV4dE1lbnU+IG1h
eWJlQ3JlYXRlQ29udGV4dE1lbnUoRXZlbnQqKTsKICAgICB2b2lkIHNob3dDb250ZXh0TWVudShF
dmVudCopOwogICAgIAogICAgIHZvaWQgYXBwZW5kSXRlbShDb250ZXh0TWVudUl0ZW0mLCBDb250
ZXh0TWVudSogcGFyZW50TWVudSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UaGVtZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgKaW5k
ZXggNDQyMWM1MS4uZDhhYjE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGhlbWVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaApA
QCAtNTgsNiArNTgsOSBAQCBlbnVtIENvbnRyb2xQYXJ0IHsKICAgICBTZWFyY2hGaWVsZFJlc3Vs
dHNEZWNvcmF0aW9uUGFydCwgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uUGFydCwKICAgICBTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvblBhcnQsIFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheVBhcnQsIFRl
eHRGaWVsZFBhcnQsCiAgICAgUmVsZXZhbmN5TGV2ZWxJbmRpY2F0b3JQYXJ0LCBDb250aW51b3Vz
Q2FwYWNpdHlMZXZlbEluZGljYXRvclBhcnQsIERpc2NyZXRlQ2FwYWNpdHlMZXZlbEluZGljYXRv
clBhcnQsIFJhdGluZ0xldmVsSW5kaWNhdG9yUGFydCwKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJP
TFMpCisgICAgSW1hZ2VDb250cm9sc0J1dHRvblBhcnQsCisjZW5kaWYKICAgICBUZXh0QXJlYVBh
cnQsIENhcHNMb2NrSW5kaWNhdG9yUGFydAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKaW5k
ZXggMWJjZTJhYS4uOWI3NGVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmgiCiAjaW5jbHVkZSAiTUlN
RVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgIlVV
SUQuaCIKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTk0Nyw0ICsxOTQ4LDkgQEAgU3RyaW5nIFVSTDo6
c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKICAg
ICByZXR1cm4gc3RyaW5nKCkubGVmdChsZW5ndGggLyAyIC0gMSkgKyAiLi4uIiArIHN0cmluZygp
LnJpZ2h0KGxlbmd0aCAvIDIgLSAyKTsKIH0KIAorVVJMIFVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2
ZVBhcnQoY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhcnQpCit7CisgICAgcmV0dXJuIFVSTChVUkwo
KSwgIndlYmtpdC1mYWtlLXVybDovLyIgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkgKyAn
LycgKyByZWxhdGl2ZVBhcnQpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCmluZGV4IDdkYmU3
OTEuLmUyZjllMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCkBAIC03Miw2ICs3Miw4IEBAIHB1Ymxp
YzoKICAgICBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlKTsKICAg
ICBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0
RW5jb2RpbmcmKTsKIAorICAgIHN0YXRpYyBVUkwgZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29u
c3QgU3RyaW5nJik7CisKICAgICBTdHJpbmcgc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgY29u
c3Q7CiAKICAgICAvLyBGSVhNRTogVGhlIGFib3ZlIGZ1bmN0aW9ucyBzaG91bGQgYmUgaGFybW9u
aXplZCBzbyB0aGF0IHBhc3NpbmcgYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuaAppbmRleCAwMjNiYTNlLi4xMGUwYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuaApAQCAtMzAsNyArMzAsNyBAQCBjbGFzcyBSZW5kZXJSZXBsYWNl
ZCA6IHB1YmxpYyBSZW5kZXJCb3ggewogcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlclJlcGxh
Y2VkKCk7CiAKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdp
ZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgID0gQ29tcHV0ZUFjdHVhbCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChT
aG91bGRDb21wdXRlUHJlZmVycmVkID0gQ29tcHV0ZUFjdHVhbCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIExheW91dFJlY3QgcmVwbGFjZWRDb250ZW50UmVjdChjb25zdCBM
YXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwCmluZGV4IDI5MTljYjguLjljOTIxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtMjUzLDYgKzI1MywxMCBAQCB2b2lkIFJlbmRl
clRoZW1lOjphZGp1c3RTdHlsZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBSZW5kZXJT
dHlsZSYgc3R5bGUsCiAgICAgY2FzZSBJbnB1dFNwZWVjaEJ1dHRvblBhcnQ6CiAgICAgICAgIHJl
dHVybiBhZGp1c3RJbnB1dEZpZWxkU3BlZWNoQnV0dG9uU3R5bGUoJnN0eWxlUmVzb2x2ZXIsICZz
dHlsZSwgZSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgY2FzZSBJ
bWFnZUNvbnRyb2xzQnV0dG9uUGFydDoKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBkZWZh
dWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zODYsNiArMzkwLDEwIEBAIGJvb2wgUmVu
ZGVyVGhlbWU6OnBhaW50KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEludFJlCiAgICAgY2FzZSBJbnB1dFNwZWVjaEJ1dHRvblBhcnQ6CiAgICAgICAg
IHJldHVybiBwYWludElucHV0RmllbGRTcGVlY2hCdXR0b24obywgcGFpbnRJbmZvLCByKTsKICNl
bmRpZgorI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICBjYXNlIEltYWdlQ29udHJvbHNC
dXR0b25QYXJ0OgorICAgICAgICByZXR1cm4gcGFpbnRJbWFnZUNvbnRyb2xzQnV0dG9uKG8sIHBh
aW50SW5mbywgcik7CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9
CkBAIC00NDAsNiArNDQ4LDkgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnRCb3JkZXJPbmx5KFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGMKICNpZiBFTkFCTEUo
SU5QVVRfU1BFRUNIKQogICAgIGNhc2UgSW5wdXRTcGVlY2hCdXR0b25QYXJ0OgogI2VuZGlmCisj
aWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIGNhc2UgSW1hZ2VDb250cm9sc0J1dHRvblBh
cnQ6CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC00OTks
NiArNTEwLDkgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnREZWNvcmF0aW9ucyhSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW4KICNpZiBFTkFCTEUoSU5QVVRfU1BF
RUNIKQogICAgIGNhc2UgSW5wdXRTcGVlY2hCdXR0b25QYXJ0OgogI2VuZGlmCisjaWYgRU5BQkxF
KElNQUdFX0NPTlRST0xTKQorICAgIGNhc2UgSW1hZ2VDb250cm9sc0J1dHRvblBhcnQ6CisjZW5k
aWYKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IGQzYzlhOTYuLjBhZDg2YmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBAIC0yNDQsNiArMjQ0LDEwIEBAIHB1YmxpYzoKICAg
ICBlbnVtIEZpbGVVcGxvYWREZWNvcmF0aW9ucyB7IFNpbmdsZUZpbGUsIE11bHRpcGxlRmlsZXMg
fTsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRGaWxlVXBsb2FkSWNvbkRlY29yYXRpb25zKFJlbmRl
ck9iamVjdCogLyppbnB1dFJlbmRlcmVyKi8sIFJlbmRlck9iamVjdCogLypidXR0b25SZW5kZXJl
ciovLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JiwgSWNvbiosIEZpbGVVcGxvYWRE
ZWNvcmF0aW9ucykgeyByZXR1cm4gdHJ1ZTsgfQogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xT
KQorICAgIHZpcnR1YWwgSW50U2l6ZSBpbWFnZUNvbnRyb2xzQnV0dG9uU2l6ZShjb25zdCBSZW5k
ZXJPYmplY3QqKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0KKyNlbmRpZgorCiBwcm90ZWN0
ZWQ6CiAgICAgLy8gVGhlIHBsYXRmb3JtIHNlbGVjdGlvbiBjb2xvci4KICAgICB2aXJ0dWFsIENv
bG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CkBAIC0z
NjAsNiArMzY0LDEwIEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludFNuYXBz
aG90dGVkUGx1Z2luT3ZlcmxheShSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xT
KQorICAgIHZpcnR1YWwgYm9vbCBwYWludEltYWdlQ29udHJvbHNCdXR0b24oUmVuZGVyT2JqZWN0
KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KKyNl
bmRpZgorCiBwdWJsaWM6CiAgICAgLy8gTWV0aG9kcyBmb3Igc3RhdGUgcXVlcnlpbmcKICAgICBD
b250cm9sU3RhdGVzIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3Qq
IG8pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAppbmRl
eCAzYjE5OTVhLi4xNjM2NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMuaApAQCAtMjgsNiArMjgsMTAgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCitPQkpD
X0NMQVNTIE5TU2VydmljZXNSb2xsb3ZlckJ1dHRvbkNlbGw7CisjZW5kaWYKKwogT0JKQ19DTEFT
UyBXZWJDb3JlUmVuZGVyVGhlbWVOb3RpZmljYXRpb25PYnNlcnZlcjsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMjAzLDE2ICsyMDcsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNlYXJj
aENlbGxTdGF0ZShSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCBzZXRT
ZWFyY2hGaWVsZFNpemUoUmVuZGVyU3R5bGUqKSBjb25zdDsKIAotICAgIE5TUG9wVXBCdXR0b25D
ZWxsKiBwb3B1cEJ1dHRvbigpIGNvbnN0OwotICAgIE5TU2VhcmNoRmllbGRDZWxsKiBzZWFyY2go
KSBjb25zdDsKLSAgICBOU01lbnUqIHNlYXJjaE1lbnVUZW1wbGF0ZSgpIGNvbnN0OwotICAgIE5T
U2xpZGVyQ2VsbCogc2xpZGVyVGh1bWJIb3Jpem9udGFsKCkgY29uc3Q7Ci0gICAgTlNTbGlkZXJD
ZWxsKiBzbGlkZXJUaHVtYlZlcnRpY2FsKCkgY29uc3Q7Ci0gICAgTlNUZXh0RmllbGRDZWxsKiB0
ZXh0RmllbGQoKSBjb25zdDsKKyAgICBOU1BvcFVwQnV0dG9uQ2VsbCAqcG9wdXBCdXR0b24oKSBj
b25zdDsKKyAgICBOU1NlYXJjaEZpZWxkQ2VsbCAqc2VhcmNoKCkgY29uc3Q7CisgICAgTlNNZW51
ICpzZWFyY2hNZW51VGVtcGxhdGUoKSBjb25zdDsKKyAgICBOU1NsaWRlckNlbGwgKnNsaWRlclRo
dW1iSG9yaXpvbnRhbCgpIGNvbnN0OworICAgIE5TU2xpZGVyQ2VsbCAqc2xpZGVyVGh1bWJWZXJ0
aWNhbCgpIGNvbnN0OworICAgIE5TVGV4dEZpZWxkQ2VsbCAqdGV4dEZpZWxkKCkgY29uc3Q7CiAK
ICNpZiBFTkFCTEUoTUVURVJfRUxFTUVOVCkKICAgICBOU0xldmVsSW5kaWNhdG9yU3R5bGUgbGV2
ZWxJbmRpY2F0b3JTdHlsZUZvcihDb250cm9sUGFydCkgY29uc3Q7Ci0gICAgTlNMZXZlbEluZGlj
YXRvckNlbGwqIGxldmVsSW5kaWNhdG9yRm9yKGNvbnN0IFJlbmRlck1ldGVyKikgY29uc3Q7Cisg
ICAgTlNMZXZlbEluZGljYXRvckNlbGwgKmxldmVsSW5kaWNhdG9yRm9yKGNvbnN0IFJlbmRlck1l
dGVyKikgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQpAQCAt
MjIxLDcgKzIyNSwxMiBAQCBwcml2YXRlOgogICAgIGNvbnN0IGludCogcHJvZ3Jlc3NCYXJNYXJn
aW5zKE5TQ29udHJvbFNpemUpIGNvbnN0OwogI2VuZGlmCiAKLXByaXZhdGU6CisjaWYgRU5BQkxF
KElNQUdFX0NPTlRST0xTKQorICAgIHZpcnR1YWwgYm9vbCBwYWludEltYWdlQ29udHJvbHNCdXR0
b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgSW50U2l6ZSBpbWFnZUNvbnRyb2xzQnV0dG9uU2l6ZShjb25zdCBS
ZW5kZXJPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKKyAgICBOU1NlcnZpY2VzUm9sbG92ZXJCdXR0
b25DZWxsICpzZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2VsbCgpIGNvbnN0OworI2VuZGlmCisKICAg
ICBtdXRhYmxlIFJldGFpblB0cjxOU1BvcFVwQnV0dG9uQ2VsbD4gbV9wb3B1cEJ1dHRvbjsKICAg
ICBtdXRhYmxlIFJldGFpblB0cjxOU1NlYXJjaEZpZWxkQ2VsbD4gbV9zZWFyY2g7CiAgICAgbXV0
YWJsZSBSZXRhaW5QdHI8TlNNZW51PiBtX3NlYXJjaE1lbnVUZW1wbGF0ZTsKQEAgLTIyOSw2ICsy
MzgsOSBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmV0YWluUHRyPE5TU2xpZGVyQ2VsbD4gbV9z
bGlkZXJUaHVtYlZlcnRpY2FsOwogICAgIG11dGFibGUgUmV0YWluUHRyPE5TTGV2ZWxJbmRpY2F0
b3JDZWxsPiBtX2xldmVsSW5kaWNhdG9yOwogICAgIG11dGFibGUgUmV0YWluUHRyPE5TVGV4dEZp
ZWxkQ2VsbD4gbV90ZXh0RmllbGQ7CisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIG11
dGFibGUgUmV0YWluUHRyPE5TU2VydmljZXNSb2xsb3ZlckJ1dHRvbkNlbGw+IG1fc2VydmljZXNS
b2xsb3ZlckJ1dHRvbjsKKyNlbmRpZgogCiAgICAgYm9vbCBtX2lzU2xpZGVyVGh1bWJIb3Jpem9u
dGFsUHJlc3NlZDsKICAgICBib29sIG1faXNTbGlkZXJUaHVtYlZlcnRpY2FsUHJlc3NlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCBkYWQxMmI5Li5k
NDI4MTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBA
IC03MCwxMCArNzAsMzYgQEAKICNpbXBvcnQgPG1hdGguaD4KIAogI2lmIEVOQUJMRShNRVRFUl9F
TEVNRU5UKQotI2luY2x1ZGUgIlJlbmRlck1ldGVyLmgiCi0jaW5jbHVkZSAiSFRNTE1ldGVyRWxl
bWVudC5oIgorI2ltcG9ydCAiUmVuZGVyTWV0ZXIuaCIKKyNpbXBvcnQgIkhUTUxNZXRlckVsZW1l
bnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorCisjaWYgX19oYXNf
aW5jbHVkZSg8QXBwS2l0L0FwcEtpdERlZmluZXNfUHJpdmF0ZS5oPikKKyNpbXBvcnQgPEFwcEtp
dC9BcHBLaXREZWZpbmVzX1ByaXZhdGUuaD4KKyNlbHNlCisjZGVmaW5lIEFQUEtJVF9QUklWQVRF
X0NMQVNTCisjZW5kaWYKKworI2lmIF9faGFzX2luY2x1ZGUoPEFwcEtpdC9OU1NlcnZpY2VzUm9s
bG92ZXJCdXR0b25DZWxsLmg+KQorI2ltcG9ydCA8QXBwS2l0L05TU2VydmljZXNSb2xsb3ZlckJ1
dHRvbkNlbGwuaD4KKyNlbmRpZgorCitAaW50ZXJmYWNlIE5TU2VydmljZXNSb2xsb3ZlckJ1dHRv
bkNlbGwgKERldGFpbHMpCisrIChOU1NlcnZpY2VzUm9sbG92ZXJCdXR0b25DZWxsICopc2Vydmlj
ZVJvbGxvdmVyQnV0dG9uQ2VsbEZvclN0eWxlOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGUp
c3R5bGU7CitAZW5kCisKKyNpZiBfX2hhc19pbmNsdWRlKDxBcHBLaXQvTlNTaGFyaW5nU2Vydmlj
ZV9Qcml2YXRlLmg+KQorI2ltcG9ydCA8QXBwS2l0L05TU2hhcmluZ1NlcnZpY2VfUHJpdmF0ZS5o
PgorI2Vsc2UKK3R5cGVkZWYgZW51bSB7CisgICAgTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxl
Um9sbG92ZXIgPSAxCit9IE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZTsKKyNlbmRpZgorCisj
ZW5kaWYgLy8gRU5BQkxFKElNQUdFX0NPTlRST0xTKQorCiAvLyBUaGUgbWV0aG9kcyBpbiB0aGlz
IGZpbGUgYXJlIHNwZWNpZmljIHRvIHRoZSBNYWMgT1MgWCBwbGF0Zm9ybS4KIAogLy8gRklYTUU6
IFRoZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBjb2RlIGluIHRoaXMgY2xhc3Mgc2hvdWxkIGJlIGZh
Y3RvcmVkIG91dCBhbmQgbWVyZ2VkIHdpdGggUmVuZGVyVGhlbWVTYWZhcmkuCkBAIC0xOTQxLDYg
KzE5NjcsNDIgQEAgU3RyaW5nIFJlbmRlclRoZW1lTWFjOjpmaWxlTGlzdE5hbWVGb3JXaWR0aChj
b25zdCBGaWxlTGlzdCogZmlsZUxpc3QsIGNvbnN0IEZvbnQKICAgICByZXR1cm4gU3RyaW5nVHJ1
bmNhdG9yOjpjZW50ZXJUcnVuY2F0ZShzdHJUb1RydW5jYXRlLCB3aWR0aCwgZm9udCwgU3RyaW5n
VHJ1bmNhdG9yOjpFbmFibGVSb3VuZGluZ0hhY2tzKTsKIH0KIAorI2lmIEVOQUJMRShJTUFHRV9D
T05UUk9MUykKK05TU2VydmljZXNSb2xsb3ZlckJ1dHRvbkNlbGwqIFJlbmRlclRoZW1lTWFjOjpz
ZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2VsbCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NlcnZpY2Vz
Um9sbG92ZXJCdXR0b24pIHsKKyAgICAgICAgbV9zZXJ2aWNlc1JvbGxvdmVyQnV0dG9uID0gW05T
U2VydmljZXNSb2xsb3ZlckJ1dHRvbkNlbGwgc2VydmljZVJvbGxvdmVyQnV0dG9uQ2VsbEZvclN0
eWxlOk5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZVJvbGxvdmVyXTsKKyAgICAgICAgW21fc2Vy
dmljZXNSb2xsb3ZlckJ1dHRvbiBzZXRCb3JkZXJlZDpOT107CisgICAgfQorCisgICAgcmV0dXJu
IG1fc2VydmljZXNSb2xsb3ZlckJ1dHRvbi5nZXQoKTsKK30KKworYm9vbCBSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRJbWFnZUNvbnRyb2xzQnV0dG9uKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0
IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIGlmIChw
YWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICBOU1NlcnZpY2VzUm9sbG92ZXJCdXR0b25DZWxsICpjZWxsID0gc2Vy
dmljZXNSb2xsb3ZlckJ1dHRvbkNlbGwoKTsKKworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29u
dGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworCisgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworICAgIHBhaW50SW5mby5jb250
ZXh0LT50cmFuc2xhdGUocmVjdC54KCksIC1yZWN0LmhlaWdodCgpIC0gcmVjdC55KCkpOworCisg
ICAgSW50UmVjdCBpbm5lckZyYW1lKEludFBvaW50KCksIHJlY3Quc2l6ZSgpKTsKKyAgICBbY2Vs
bCBkcmF3V2l0aEZyYW1lOmlubmVyRnJhbWUgaW5WaWV3OmRvY3VtZW50Vmlld0ZvcihyZW5kZXJl
cildOworICAgIFtjZWxsIHNldENvbnRyb2xWaWV3Om5pbF07CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworSW50U2l6ZSBSZW5kZXJUaGVtZU1hYzo6aW1hZ2VDb250cm9sc0J1dHRvblNpemUoY29u
c3QgUmVuZGVyT2JqZWN0KikgY29uc3QKK3sKKyAgICByZXR1cm4gSW50U2l6ZShzZXJ2aWNlc1Jv
bGxvdmVyQnV0dG9uQ2VsbCgpLmNlbGxTaXplKTsKK30KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDczNTU4Mi4uMzY3NzMzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNC0wMy0xMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KKworICAgICAgICBIb29rIHVwIGltYWdlIGNvbnRyb2xzIGZvciBXZWJLaXQxCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwNjIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzE1OTY0ODA5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgIEFkZCBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuCisKIDIwMTQt
MDMtMTEgIEphZSBIeXVuIFBhcmsgIDxqYWVwYXJrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0dU
S11bQ01ha2VdIEFkZCBIQVJGQlVaWl9JTkNMVURFX0RJUlMgdG8gV2ViS2l0IGFuZCBXZWJLaXQy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBmZDE4ZGQyLi5lYTgxNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTgwLDYgKzgwLDggQEAKIAkJMjI0MTAwRjkwOTE4MTkwMTAw
RDJEMjY2IC8qIFdlYlBsdWdpbnNQcml2YXRlLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyMjQxMDBGODA5MTgxOTAxMDBEMkQyNjYgLyogV2ViUGx1Z2lu
c1ByaXZhdGUubSAqLzsgfTsKIAkJMjJGMjE5Q0MwOEQyMzY3MzAwMzBFMDc4IC8qIFdlYkJhY2tG
b3J3YXJkTGlzdFByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDIyRjIxOUNCMDhEMjM2NzMwMDMwRTA3OCAvKiBXZWJCYWNrRm9yd2FyZExpc3RQ
cml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMjlBRUY5NjAxMzRDNzZGQjAwRkU1MDk2IC8qIE91dGxvb2tRdWlya3NVc2VyU2NyaXB0Lmpz
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUFFRjk1
RDEzNEM3NTU0MDBGRTUwOTYgLyogT3V0bG9va1F1aXJrc1VzZXJTY3JpcHQuanMgKi87IH07CisJ
CTJEMjUzOTY2MThDRTg1QzIwMDI3MDIyMiAvKiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
MjUzOTY0MThDRTg1QzIwMDI3MDIyMiAvKiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXIuaCAqLzsgfTsKKwkJMkQyNTM5NjcxOENFODVDMjAwMjcwMjIyIC8qIFdlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEMjUzOTY1MThDRTg1QzIwMDI3MDIyMiAvKiBXZWJTaGFyaW5nU2Vydmlj
ZVBpY2tlckNvbnRyb2xsZXIubW0gKi87IH07CiAJCTMxMkUyRkU1MTRFNDgxODIwMDdDQ0ExOCAv
KiBXZWJOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxMkUyRkUzMTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTJFMkZF
NjE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRTJGRTQxNEU0ODE4MjAwN0NDQTE4IC8q
IFdlYk5vdGlmaWNhdGlvbi5tbSAqLzsgfTsKIAkJMzEyRTJGRTkxNEU0ODIxNTAwN0NDQTE4IC8q
IFdlYk5vdGlmaWNhdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMTJFMkZFODE0RTQ4MjE1MDA3Q0NBMTggLyogV2ViTm90aWZpY2F0
aW9uSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTUyNyw2ICs1MjksOCBAQAogCQkyMkYyMTlDQjA4RDIz
NjczMDAzMEUwNzggLyogV2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlzdFBy
aXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CiAJCTI1NjhDNzJDMDE3NDkxMkQwRUNBMTQ5RSAvKiBXZWJLaXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTI5QUVG
OTVEMTM0Qzc1NTQwMEZFNTA5NiAvKiBPdXRsb29rUXVpcmtzVXNlclNjcmlwdC5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IE91dGxvb2tRdWlya3NVc2VyU2NyaXB0
LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDI1Mzk2NDE4Q0U4NUMyMDAyNzAy
MjIgLyogV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDI1Mzk2NTE4Q0U4NUMyMDAyNzAyMjIgLyog
V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDM2RkQ1RTAzRjc4RjlFMDBBODAxNjYg
LyogV2ViRm9ybURlbGVnYXRlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZvcm1EZWxlZ2F0ZVByaXZhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTJEODFEQUIy
MDNFQjBCMkQwMEE4MDE2NiAvKiBXZWJGb3JtRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRm9ybURlbGVnYXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQkyRDgx
REFCMzAzRUIwQjJEMDBBODAxNjYgLyogV2ViRm9ybURlbGVnYXRlLm0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdlYkZvcm1EZWxlZ2F0ZS5t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsK
QEAgLTExMzQsNiArMTEzOCw4IEBACiAJCQkJOTM0NUREQUUwMzY1RkIyNzAwODYzNUNFIC8qIFdl
Yk5TV2luZG93RXh0cmFzLmggKi8sCiAJCQkJOTM0NUREQUYwMzY1RkIyNzAwODYzNUNFIC8qIFdl
Yk5TV2luZG93RXh0cmFzLm0gKi8sCiAJCQkJQTU3RTJGMjIxMjA3NDlFNjAwMDQ4REYzIC8qIFdl
YlF1b3RhTWFuYWdlci5oICovLAorCQkJCTJEMjUzOTY0MThDRTg1QzIwMDI3MDIyMiAvKiBXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaCAqLywKKwkJCQkyRDI1Mzk2NTE4Q0U4NUMy
MDAyNzAyMjIgLyogV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tICovLAogCQkJ
CUY1OTY2OEM4MDJBRDI5MjMwMTg2MzVDQSAvKiBXZWJTdHJpbmdUcnVuY2F0b3IuaCAqLywKIAkJ
CQlGNTk2NjhDOTAyQUQyOTIzMDE4NjM1Q0EgLyogV2ViU3RyaW5nVHJ1bmNhdG9yLm1tICovLAog
CQkJCUREN0NERUU2MEEyM0JBOUUwMDA2OTkyOCAvKiBXZWJUeXBlc0ludGVybmFsLmggKi8sCkBA
IC0xODU0LDYgKzE4NjAsNyBAQAogCQkJCTkzOTgxMDI0MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJO
U1ZpZXdFeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDI1MDgyNEJGMDEwMDhERjAz
OCAvKiBXZWJOU1dpbmRvd0V4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4QTU3OTkxNDNF
NzI3MDAwMTI1RjUwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQkyRDI1Mzk2NjE4Q0U4NUMyMDAyNzAyMjIgLyogV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTAyQTA4MjRCRjAxMDA4REYw
MzggLyogV2ViUGFuZWxBdXRoZW50aWNhdGlvbkhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTM3QjZGQjRFMTA2MzUzMEMwMDBGREIzQiAvKiBXZWJQREZEb2N1bWVudEV4dHJhcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM5ODEwQTUwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBERlJlcHJlc2Vu
dGF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTIxNjEsNiArMjE2OCw3IEBACiAJCQlpc2EgPSBQ
QlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJ
CQlmaWxlcyA9ICgKKwkJCQkyRDI1Mzk2NzE4Q0U4NUMyMDAyNzAyMjIgLyogV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2MDUxOTExNzUw
MkE1RDAwQkM2MkY1IC8qIEJpbmFyeVByb3BlcnR5TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5Mzk4MTEwMTA4MjRCRjAxMDA4REYwMzggLyogQ2FyYm9uVXRpbHMubSBpbiBTb3VyY2VzICov
LAogCQkJCTkzOTgxMEZEMDgyNEJGMDEwMDhERjAzOCAvKiBDYXJib25XaW5kb3dBZGFwdGVyLm1t
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMWY1YWM2Mi4uODFkZTFmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE0LTAzLTEwICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEhvb2sgdXAgaW1hZ2UgY29udHJv
bHMgZm9yIFdlYktpdDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMDA2MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTU5NjQ4MDk+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBNaXNjL1dlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciBpbml0V2l0aEltYWdlOm1lbnVDbGllbnQ6XSk6
CisgICAgICAgICgtW1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciBtZW51XSk6Cisg
ICAgICAgICgtW1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciBzaGFyaW5nU2Vydmlj
ZVBpY2tlcjpkZWxlZ2F0ZUZvclNoYXJpbmdTZXJ2aWNlOl0pOgorICAgICAgICAoLVtXZWJTaGFy
aW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgc2hhcmluZ1NlcnZpY2VQaWNrZXI6ZGlkQ2hvb3Nl
U2hhcmluZ1NlcnZpY2U6XSk6CisgICAgICAgICgtW1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29u
dHJvbGxlciBzaGFyaW5nU2VydmljZTpkaWRTaGFyZUl0ZW1zOl0pOgorICAgICAgICAoLVtXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgc2hhcmluZ1NlcnZpY2U6ZGlkRmFpbFRvU2hh
cmVJdGVtczplcnJvcjpdKToKKyAgICAgICAgKC1bV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250
cm9sbGVyIHNoYXJpbmdTZXJ2aWNlOnNvdXJjZVdpbmRvd0ZvclNoYXJlSXRlbXM6c2hhcmluZ0Nv
bnRlbnRTY29wZTpdKToKKyAgICAgICAgQWRkIGEgTlNTaGFyaW5nU2VydmljZURlbGVnYXRlIGFu
ZCBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUsIHdoaWNoIHdpbGwgYWxzbworICAgICAg
ICBwcm92aWRlIGEgTlNNZW51IGluc3RhbmNlIGZvciBXZWJDb250ZXh0TWVudUNsaWVudCB0byBw
b3AgdXAgd2hlbiBpbWFnZSBjb250cm9scyBhcmUgbmVlZGVkLgorICAgICAgICBXaGVuIGRhdGEg
aXMgcmV0dXJuZWQgZnJvbSB0aGUgc2VydmljZSwgaXQgaXMgcmUtaW5zZXJ0ZWQgaW50byB0aGUg
aW1hZ2UgdmlhIHJlcGxhY2VDb250cm9sbGVkSW1hZ2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50Lm1tOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNv
bnRleHRNZW51Rm9yRXZlbnQpOgorICAgICAgICBGYWN0b3Igb3V0IGNvZGUgdG8gZGVjaWRlIHdo
aWNoIE5TTWVudSB0byB1c2UsIHNvIHRoYXQgd2UgY2FuIHVzZSBlYXJseS1yZXR1cm5zIHRvIHNp
bXBsaWZ5IGl0LgorICAgICAgICBJZiB3ZSBoaXQgYW4gaW1hZ2Ugd2l0aCBpbWFnZSBjb250cm9s
cywgdXNlIHRoZSBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIncyBtZW51LgorCisg
ICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAg
KFdlYkNvbnRleHRNZW51Q2xpZW50OjpjbGVhclNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
cik6CisKIDIwMTQtMDMtMTAgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU11bV0sxXSBDcmFzaCBpbiBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoKSAtICItW05TU2V0IGFkZE9iamVjdDpdOiBvYmplY3QgY2Fubm90IGJlIG5pbCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFl
YjBlOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorCitAY2xhc3MgTlNTaGFyaW5nU2VydmljZVBp
Y2tlcjsKK0Bwcm90b2NvbCBOU1NoYXJpbmdTZXJ2aWNlRGVsZWdhdGU7CitAcHJvdG9jb2wgTlNT
aGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlOworCitjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVu
dDsKKworQGludGVyZmFjZSBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgOiBOU09i
amVjdCA8TlNTaGFyaW5nU2VydmljZURlbGVnYXRlLCBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVs
ZWdhdGU+CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEltYWdlOihOU0ltYWdlICopaW1hZ2Ug
bWVudUNsaWVudDooV2ViQ29udGV4dE1lbnVDbGllbnQqKW1lbnVDbGllbnQ7CistIChOU01lbnUg
KiltZW51OworCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGIzNmEyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIubW0K
QEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJTaGFyaW5nU2Vydmlj
ZVBpY2tlckNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKworI2lt
cG9ydCAiV2ViQ29udGV4dE1lbnVDbGllbnQuaCIKKyNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5o
IgorI2ltcG9ydCA8QXBwS2l0L05TU2hhcmluZ1NlcnZpY2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
Qml0bWFwSW1hZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+
CisjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KKworI2lmIF9faGFzX2luY2x1ZGUoPEFwcEtpdC9O
U1NoYXJpbmdTZXJ2aWNlX1ByaXZhdGUuaD4pCisjaW1wb3J0IDxBcHBLaXQvTlNTaGFyaW5nU2Vy
dmljZV9Qcml2YXRlLmg+CisjZWxzZQordHlwZWRlZiBlbnVtIHsKKyAgICBOU1NoYXJpbmdTZXJ2
aWNlUGlja2VyU3R5bGVSb2xsb3ZlciA9IDEKK30gTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxl
OworI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW1wbGVtZW50YXRpb24g
V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIHsKKyAgICBXZWJDb250ZXh0TWVudUNs
aWVudCogX21lbnVDbGllbnQ7CisgICAgUmV0YWluUHRyPE5TU2hhcmluZ1NlcnZpY2VQaWNrZXI+
IF9waWNrZXI7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEltYWdlOihOU0ltYWdlICop
aW1hZ2UgbWVudUNsaWVudDooV2ViQ29udGV4dE1lbnVDbGllbnQqKW1lbnVDbGllbnQKK3sKKyAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IF9waWNrZXIgPSBhZG9wdE5TKFtbTlNTaGFyaW5nU2VydmljZVBpY2tlciBhbGxvY10gaW5pdFdp
dGhJdGVtczpAWyBpbWFnZSBdXSk7CisgICAgW19waWNrZXIgc2V0U3R5bGU6TlNTaGFyaW5nU2Vy
dmljZVBpY2tlclN0eWxlUm9sbG92ZXJdOworICAgIFtfcGlja2VyIHNldERlbGVnYXRlOnNlbGZd
OworCisgICAgX21lbnVDbGllbnQgPSBtZW51Q2xpZW50OworCisgICAgcmV0dXJuIHNlbGY7Cit9
CisKKy0gKHZvaWQpY2xlYXIKK3sKKyAgICBfbWVudUNsaWVudC0+Y2xlYXJTaGFyaW5nU2Vydmlj
ZVBpY2tlckNvbnRyb2xsZXIoKTsKKworICAgIF9waWNrZXIgPSBudWxscHRyOworICAgIF9tZW51
Q2xpZW50ID0gbnVsbHB0cjsKK30KKworLSAoTlNNZW51ICopbWVudQoreworICAgIHJldHVybiBb
X3BpY2tlciBtZW51XTsKK30KKworI3ByYWdtYSBtYXJrIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJE
ZWxlZ2F0ZSBtZXRob2RzCisKKy0gKGlkIDxOU1NoYXJpbmdTZXJ2aWNlRGVsZWdhdGU+KXNoYXJp
bmdTZXJ2aWNlUGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICopc2hhcmluZ1NlcnZpY2VQ
aWNrZXIgZGVsZWdhdGVGb3JTaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJp
bmdTZXJ2aWNlCit7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2hhcmluZ1NlcnZp
Y2VQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgKilzaGFyaW5nU2VydmljZVBpY2tlciBk
aWRDaG9vc2VTaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNlcnZpY2UKK3sKKyAg
ICBpZiAoIXNlcnZpY2UpCisgICAgICAgIF9tZW51Q2xpZW50LT5jbGVhclNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlcigpOworfQorCisjcHJhZ21hIG1hcmsgTlNTaGFyaW5nU2VydmljZURl
bGVnYXRlIG1ldGhvZHMKKworLSAodm9pZClzaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2Vydmlj
ZSAqKXNoYXJpbmdTZXJ2aWNlIGRpZFNoYXJlSXRlbXM6KE5TQXJyYXkgKilpdGVtcworeworICAg
IC8vIFdlIG9ubHkgc2VuZCBvbmUgaXRlbSwgc28gd2Ugc2hvdWxkIG9ubHkgZ2V0IG9uZSBpdGVt
IGJhY2suCisgICAgaWYgKFtpdGVtcyBjb3VudF0gIT0gMSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IHNvdXJjZSA9IGFkb3B0Q0YoQ0dJbWFnZVNv
dXJjZUNyZWF0ZVdpdGhEYXRhKChDRkRhdGFSZWYpW2l0ZW1zIG9iamVjdEF0SW5kZXg6MF0sIE5V
TEwpKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFn
ZVNvdXJjZUNyZWF0ZUltYWdlQXRJbmRleChzb3VyY2UuZ2V0KCksIDAsIE5VTEwpKTsKKyAgICBS
ZWZQdHI8SW1hZ2U+IGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShjZ0ltYWdlLmdldCgpKTsK
KworICAgIFBhZ2UqIHBhZ2UgPSBbX21lbnVDbGllbnQtPndlYlZpZXcoKSBwYWdlXTsKKyAgICBp
ZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPmNvbnRleHRNZW51Q29udHJv
bGxlcigpLnJlcGxhY2VDb250cm9sbGVkSW1hZ2UoaW1hZ2UuZ2V0KCkpOworCisgICAgW3NlbGYg
Y2xlYXJdOworfQorCistICh2b2lkKXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICop
c2hhcmluZ1NlcnZpY2UgZGlkRmFpbFRvU2hhcmVJdGVtczooTlNBcnJheSAqKWl0ZW1zIGVycm9y
OihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBbc2VsZiBjbGVhcl07Cit9CisKKy0gKE5TV2luZG93
ICopc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBzb3Vy
Y2VXaW5kb3dGb3JTaGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMgc2hhcmluZ0NvbnRlbnRTY29w
ZTooTlNTaGFyaW5nQ29udGVudFNjb3BlICopc2hhcmluZ0NvbnRlbnRTY29wZQoreworICAgIHJl
dHVybiBbX21lbnVDbGllbnQtPndlYlZpZXcoKSB3aW5kb3ddOworfQorCitAZW5kCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmgKaW5kZXggYTM4ZGFkNC4uNDk1MDcxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgPFdlYkNvcmUvQ29udGV4dE1lbnVDbGllbnQuaD4K
IAorQGNsYXNzIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcjsKIEBjbGFzcyBXZWJW
aWV3OwogCiBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250
ZXh0TWVudUNsaWVudCB7CkBAIC00OCw4ICs0OSwxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2hv
d0NvbnRleHRNZW51KCkgb3ZlcnJpZGU7CiAKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisg
ICAgdm9pZCBjbGVhclNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcigpOworI2VuZGlmCisK
ICAgICBXZWJWaWV3ICp3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CiAgICAgICAgIAog
cHJpdmF0ZToKKyAgICBOU01lbnUgKmNvbnRleHRNZW51Rm9yRXZlbnQoTlNFdmVudCAqLCBOU1Zp
ZXcgKik7CisKICAgICBXZWJWaWV3ICptX3dlYlZpZXc7CisjaWYgRU5BQkxFKElNQUdFX0NPTlRS
T0xTKQorICAgIFJldGFpblB0cjxXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXI+IG1f
c2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyOworI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5t
bQppbmRleCA4NWJhOWVhLi5jODIwYTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpAQCAtMzAsNiArMzAs
NyBAQAogCiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgogCisjaW1wb3J0IDxXZWJD
b3JlL0JpdG1hcEltYWdlLmg+CiAjaW1wb3J0ICJXZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2Fj
aGluZy5oIgogI2ltcG9ydCAiV2ViRWxlbWVudERpY3Rpb25hcnkuaCIKICNpbXBvcnQgIldlYkZy
YW1lLmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW1wb3J0ICJXZWJIVE1MVmlld0ludGVybmFsLmgi
CiAjaW1wb3J0ICJXZWJLaXRWZXJzaW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJXZWJOU1Bhc3RlYm9h
cmRFeHRyYXMuaCIKKyNpbXBvcnQgIldlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5o
IgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZh
dGUuaCIKICNpbXBvcnQgIldlYlZpZXcuaCIKQEAgLTM1Miw2ICszNTQsMjIgQEAgdm9pZCBXZWJD
b250ZXh0TWVudUNsaWVudDo6c3RvcFNwZWFraW5nKCkKICAgICBbTlNBcHAgc3RvcFNwZWFraW5n
Om5pbF07CiB9CiAKK05TTWVudSAqV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51Rm9y
RXZlbnQoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAqdmlldykKK3sKKyAgICBQYWdlKiBwYWdlID0g
W21fd2ViVmlldyBwYWdlXTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgaWYgKEltYWdlKiBpbWFnZSA9IHBhZ2Ut
PmNvbnRleHRNZW51Q29udHJvbGxlcigpLmNvbnRleHQoKS5jb250cm9sbGVkSW1hZ2UoKSkgewor
ICAgICAgICBtX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciA9IGFkb3B0TlMoW1tXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoSW1hZ2U6aW1hZ2Ut
PmdldE5TSW1hZ2UoKSBtZW51Q2xpZW50OnRoaXNdKTsKKyAgICAgICAgcmV0dXJuIFttX3NoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciBtZW51XTsKKyAgICB9CisjZW5kaWYKKworICAgIHJl
dHVybiBbdmlldyBtZW51Rm9yRXZlbnQ6ZXZlbnRdOworfQorCiB2b2lkIFdlYkNvbnRleHRNZW51
Q2xpZW50OjpzaG93Q29udGV4dE1lbnUoKQogewogICAgIFBhZ2UqIHBhZ2UgPSBbbV93ZWJWaWV3
IHBhZ2VdOwpAQCAtMzY0LDE0ICszODIsMjEgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6
c2hvd0NvbnRleHRNZW51KCkKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgSW50UG9pbnQgcG9pbnQgPSBmcmFtZVZpZXctPmNvbnRlbnRzVG9XaW5kb3cocGFnZS0+
Y29udGV4dE1lbnVDb250cm9sbGVyKCkuaGl0VGVzdFJlc3VsdCgpLnJvdW5kZWRQb2ludEluSW5u
ZXJOb2RlRnJhbWUoKSk7CiAgICAgTlNWaWV3KiB2aWV3ID0gZnJhbWVWaWV3LT5kb2N1bWVudFZp
ZXcoKTsKKyAgICBJbnRQb2ludCBwb2ludCA9IGZyYW1lVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3
KHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLmhpdFRlc3RSZXN1bHQoKS5yb3VuZGVkUG9p
bnRJbklubmVyTm9kZUZyYW1lKCkpOwogICAgIE5TUG9pbnQgbnNTY3JlZW5Qb2ludCA9IFt2aWV3
IGNvbnZlcnRQb2ludDpwb2ludCB0b1ZpZXc6bmlsXTsKLSAgICAvLyBTaG93IHRoZSBjb250ZXh0
dWFsIG1lbnUgZm9yIHRoaXMgZXZlbnQuCiAgICAgTlNFdmVudCogZXZlbnQgPSBbTlNFdmVudCBt
b3VzZUV2ZW50V2l0aFR5cGU6TlNSaWdodE1vdXNlRG93biBsb2NhdGlvbjpuc1NjcmVlblBvaW50
IG1vZGlmaWVyRmxhZ3M6MCB0aW1lc3RhbXA6MCB3aW5kb3dOdW1iZXI6W1t2aWV3IHdpbmRvd10g
d2luZG93TnVtYmVyXSBjb250ZXh0OjAgZXZlbnROdW1iZXI6MCBjbGlja0NvdW50OjEgcHJlc3N1
cmU6MV07Ci0gICAgTlNNZW51KiBuc01lbnUgPSBbdmlldyBtZW51Rm9yRXZlbnQ6ZXZlbnRdOwot
ICAgIGlmIChuc01lbnUpCi0gICAgICAgIFtOU01lbnUgcG9wVXBDb250ZXh0TWVudTpuc01lbnUg
d2l0aEV2ZW50OmV2ZW50IGZvclZpZXc6dmlld107CisKKyAgICAvLyBTaG93IHRoZSBjb250ZXh0
dWFsIG1lbnUgZm9yIHRoaXMgZXZlbnQuCisgICAgaWYgKE5TTWVudSAqbWVudSA9IGNvbnRleHRN
ZW51Rm9yRXZlbnQoZXZlbnQsIHZpZXcpKQorICAgICAgICBbTlNNZW51IHBvcFVwQ29udGV4dE1l
bnU6bWVudSB3aXRoRXZlbnQ6ZXZlbnQgZm9yVmlldzp2aWV3XTsKK30KKworI2lmIEVOQUJMRShJ
TUFHRV9DT05UUk9MUykKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNsZWFyU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyKCkKK3sKKyAgICBtX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29u
dHJvbGxlciA9IG5pbDsKIH0KKyNlbmRpZgogCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCBjMmVjYjNiLi5kZTNkYjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTQtMDMtMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgSG9vayB1cCBpbWFnZSBjb250cm9scyBmb3IgV2ViS2l0MQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDYyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xNTk2NDgwOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YSk6
CisKIDIwMTQtMDMtMTEgIEphZSBIeXVuIFBhcmsgIDxqYWVwYXJrQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW0dUS11bQ01ha2VdIEFkZCBIQVJGQlVaWl9JTkNMVURFX0RJUlMgdG8gV2ViS2l0IGFu
ZCBXZWJLaXQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVD
b250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0
RGF0YS5jcHAKaW5kZXggNGI1ZGUxMi4uM2JlMzc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcApAQCAtNDYsNyArNDYsNyBAQCBDb250
ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKCkKIENvbnRleHRNZW51
Q29udGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEoY29uc3QgQ29udGV4dE1lbnVDb250
ZXh0JiBjb250ZXh0KQogICAgIDogbV93ZWJIaXRUZXN0UmVzdWx0RGF0YShXZWJIaXRUZXN0UmVz
dWx0OjpEYXRhKGNvbnRleHQuaGl0VGVzdFJlc3VsdCgpKSkKICNpZiBFTkFCTEUoSU1BR0VfQ09O
VFJPTFMpCi0gICAgLCBtX2lzSW1hZ2VDb250cm9sKGNvbnRleHQuaXNJbWFnZUNvbnRyb2woKSkK
KyAgICAsIG1faXNJbWFnZUNvbnRyb2woY29udGV4dC5jb250cm9sbGVkSW1hZ2UoKSkKICNlbmRp
ZgogewogfQo=
</data>
<flag name="review"
          id="250698"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>