<?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>143620</bug_id>
          
          <creation_ts>2015-04-10 15:12:31 -0700</creation_ts>
          <short_desc>Share sheets from Share menus appear outside the browser window</short_desc>
          <delta_ts>2022-10-25 08:51:51 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1084392</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-10 15:12:31 -0700</bug_when>
    <thetext>Share sheets from Share menus appear outside the browser window

This is because we don&apos;t implement the appropriate delegates to tell them which window is the source.

rdar://problem/20455592</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084393</commentid>
    <comment_count>1</comment_count>
      <attachid>250536</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-10 15:23:37 -0700</bug_when>
    <thetext>Created attachment 250536
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084395</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-10 15:25:50 -0700</bug_when>
    <thetext>Attachment 250536 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:40:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/UIProcess/mac/WKSharingServicePickerDelegate.mm:34:  &quot;WebCore/NSSharingServiceSPI.h&quot; already included at Source/WebKit2/UIProcess/mac/WKSharingServicePickerDelegate.mm:33  [build/include] [4]
ERROR: Source/WebKit2/UIProcess/mac/WKSharingServicePickerDelegate.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 3 in 14 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>1084421</commentid>
    <comment_count>3</comment_count>
      <attachid>250544</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-10 17:14:48 -0700</bug_when>
    <thetext>Created attachment 250544
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084463</commentid>
    <comment_count>4</comment_count>
      <attachid>250544</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-10 19:53:44 -0700</bug_when>
    <thetext>Comment on attachment 250544
Patch v2

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

Looks like this doesn’t compile yet. So obviously, please don’t land until it does!

&gt; Source/WebKit/mac/Misc/WebSharingServicePickerController.h:42
&gt; +    WebSharingServicePickerClient(WebView *);

explicit please

Also should make this constructor be protected.

&gt; Source/WebKit/mac/Misc/WebSharingServicePickerController.h:64
&gt; +- (instancetype)initWithSharingServicePicker:(NSSharingServicePicker *)sharingServicePicker client:(WebSharingServicePickerClient*)pickerClient;

Can client be a reference instead of a pointer?

&gt; Source/WebKit/mac/Misc/WebSharingServicePickerController.mm:44
&gt; +    : m_webView(webView)

What prevents us from holding on to the WebView pointer after the WebView is deallocated?

&gt; Source/WebKit/mac/Misc/WebSharingServicePickerController.mm:106
&gt; +    _handleEditingReplacement = NO;

I don’t think we need this. Objective-C initializes everything to NO.

&gt; Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.h:41
&gt; +class WebContextMenuClient : public WebCore::ContextMenuClient, public WebSharingServicePickerClient
&gt;  {

Should move the brace up one line.

Can the derivation be private here instead of public?

&gt; Source/WebKit/mac/WebView/WebHTMLView.mm:3365
&gt; +    ContextMenuClient&amp; contextMenuClient = page-&gt;contextMenuController().client();

I suggest using auto&amp; here instead of uttering the type. Also probably should do the typecast here instead of down in the code below.

&gt; Source/WebKit/mac/WebView/WebHTMLView.mm:3367
&gt; +    Vector&lt;ContextMenuItem&gt; menuItemVector = contextMenuItemVector(coreMenu-&gt;platformDescription());

I suggest using auto here instead of uttering the type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084855</commentid>
    <comment_count>5</comment_count>
      <attachid>250650</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-13 10:19:51 -0700</bug_when>
    <thetext>Created attachment 250650
Patch v3 - Review feedback and fixing older builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084856</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-13 10:20:34 -0700</bug_when>
    <thetext>Going to work through the build failures with EWS, then prep to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084882</commentid>
    <comment_count>7</comment_count>
      <attachid>250659</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-13 11:06:11 -0700</bug_when>
    <thetext>Created attachment 250659
Patch v4 - More feature guards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084891</commentid>
    <comment_count>8</comment_count>
      <attachid>250660</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-13 11:41:54 -0700</bug_when>
    <thetext>Created attachment 250660
Patch v5 - Still more feature guards</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084892</commentid>
    <comment_count>9</comment_count>
      <attachid>250661</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-13 11:44:53 -0700</bug_when>
    <thetext>Created attachment 250661
Patch v6 - Mo&apos; better feature guards</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084903</commentid>
    <comment_count>10</comment_count>
      <attachid>250663</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-13 12:18:57 -0700</bug_when>
    <thetext>Created attachment 250663
Patch v7 - Potentially landable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084965</commentid>
    <comment_count>11</comment_count>
      <attachid>250663</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-13 14:24:09 -0700</bug_when>
    <thetext>Comment on attachment 250663
Patch v7 - Potentially landable

Clearing flags on attachment: 250663

Committed r182756: &lt;http://trac.webkit.org/changeset/182756&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908114</commentid>
    <comment_count>12</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-10-25 08:51:51 -0700</bug_when>
    <thetext>Landed - https://github.com/WebKit/WebKit/commit/95ef8bd83955487e2e8db1f9513bd0d8377d730d

and didn&apos;t backed out.

Marking this as &quot;RESOLVED FIXED&quot;. Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250536</attachid>
            <date>2015-04-10 15:23:37 -0700</date>
            <delta_ts>2015-04-10 17:14:48 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>35574</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCmluZGV4IDM1NzM5
ZDguLjBmNTg1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgfkNvbnRleHRNZW51Q29udHJvbGxl
cigpOwogCiAgICAgUGFnZSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIENvbnRleHRN
ZW51Q2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCiAgICAgQ29udGV4dE1l
bnUqIGNvbnRleHRNZW51KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0TWVudS5nZXQoKTsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDb250ZXh0TWVudSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9s
bGVyLmgKaW5kZXggYTNjYmNiMS4uZjU1ZWEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oCkBAIC0z
MCw2ICszMCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL05TU2hhcmluZ1NlcnZpY2VTUEkuaD4KIAog
QGNsYXNzIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcjsKK0BjbGFzcyBXZWJWaWV3
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9hdFJlY3Q7CkBAIC00MCwyMyArNDEs
MjkgQEAgY2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQ7CiAKIGNsYXNzIFdlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ2xpZW50IHsKIHB1YmxpYzoKKyAgICBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNs
aWVudChXZWJWaWV3ICopOwogICAgIHZpcnR1YWwgfldlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xp
ZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVE
ZXN0cm95ZWQoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpID0gMDsKLSAgICB2
aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIHBhZ2VGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFy
aW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgPSAwOwotICAgIHZpcnR1YWwgUmV0YWluUHRy
PE5TV2luZG93PiB3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2Vydmlj
ZVBpY2tlckNvbnRyb2xsZXIgJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzaGFyaW5nU2Vydmlj
ZVBpY2tlcldpbGxCZURlc3Ryb3llZChXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIg
Jik7CisgICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlKiBwYWdlRm9yU2hhcmluZ1NlcnZpY2VQaWNr
ZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpOworICAgIHZpcnR1YWwgUmV0
YWluUHRyPE5TV2luZG93PiB3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5n
U2VydmljZVBpY2tlckNvbnRyb2xsZXIgJik7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0
UmVjdCBzY3JlZW5SZWN0Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFy
aW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgPSAwOwotICAgIHZpcnR1YWwgUmV0YWluUHRy
PE5TSW1hZ2U+IGltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFy
aW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgPSAwOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
RmxvYXRSZWN0IHNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKTsKKyAgICB2aXJ0dWFsIFJldGFpblB0
cjxOU0ltYWdlPiBpbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpOworCitwcm90ZWN0ZWQ6CisgICAgV2ViVmll
dyAqbV93ZWJWaWV3OwogfTsKIAogQGludGVyZmFjZSBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNv
bnRyb2xsZXIgOiBOU09iamVjdCA8TlNTaGFyaW5nU2VydmljZURlbGVnYXRlLCBOU1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGU+IHsKICAgICBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVu
dCogX3BpY2tlckNsaWVudDsKICAgICBSZXRhaW5QdHI8TlNTaGFyaW5nU2VydmljZVBpY2tlcj4g
X3BpY2tlcjsKICAgICBCT09MIF9pbmNsdWRlRWRpdG9yU2VydmljZXM7CisgICAgQk9PTCBfaGFu
ZGxlRWRpdGluZ1JlcGxhY2VtZW50OwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJdGVt
czooTlNBcnJheSAqKWl0ZW1zIGluY2x1ZGVFZGl0b3JTZXJ2aWNlczooQk9PTClpbmNsdWRlRWRp
dG9yU2VydmljZXMgY2xpZW50OihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudCopcGlja2Vy
Q2xpZW50IHN0eWxlOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGUpc3R5bGU7CistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhTaGFyaW5nU2VydmljZVBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBp
Y2tlciAqKXNoYXJpbmdTZXJ2aWNlUGlja2VyIGNsaWVudDooV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDbGllbnQqKXBpY2tlckNsaWVudDsKIC0gKE5TTWVudSAqKW1lbnU7CiAtICh2b2lkKWRpZFNo
YXJlSW1hZ2VEYXRhOihOU0RhdGEgKilkYXRhIGNvbmZpcm1EYXRhSXNWYWxpZFRJRkZEYXRhOihC
T09MKWNvbmZpcm1EYXRhOwogLSAodm9pZCljbGVhcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIubW0KaW5k
ZXggMzQ3ODdiYS4uNzk4MGJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9X
ZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIubW0KQEAgLTI1LDggKzI1
LDYgQEAKIAogI2ltcG9ydCAiV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLmgiCiAK
LSNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKLQogI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVD
bGllbnQuaCIKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9C
aXRtYXBJbWFnZS5oPgpAQCAtNDIsNiArNDAsMzUgQEAgc3RhdGljIE5TU3RyaW5nICpzZXJ2aWNl
Q29udHJvbHNQYXN0ZWJvYXJkTmFtZSA9IEAiV2ViS2l0U2VydmljZUNvbnRyb2xzUGFzdGVib2EK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xp
ZW50OjpXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQorICAg
IDogbV93ZWJWaWV3KHdlYlZpZXcpCit7Cit9CisKK3ZvaWQgV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDbGllbnQ6OnNoYXJpbmdTZXJ2aWNlUGlja2VyV2lsbEJlRGVzdHJveWVkKFdlYlNoYXJpbmdT
ZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQoreworfQorCitQYWdlKiBXZWJTaGFyaW5nU2Vydmlj
ZVBpY2tlckNsaWVudDo6cGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlciAmKQoreworICAgIHJldHVybiBbbV93ZWJWaWV3IHBhZ2VdOwor
fQorCitSZXRhaW5QdHI8TlNXaW5kb3c+IFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50Ojp3
aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIgJikKK3sKKyAgICByZXR1cm4gW21fd2ViVmlldyB3aW5kb3ddOworfQorCitGbG9hdFJl
Y3QgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQ6OnNjcmVlblJlY3RGb3JDdXJyZW50U2hh
cmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAm
KQoreworICAgIHJldHVybiBGbG9hdFJlY3QoKTsKK30KKworUmV0YWluUHRyPE5TSW1hZ2U+IFdl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2Vydmlj
ZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCit7CisgICAg
cmV0dXJuIG5pbDsKK30KKwogQGltcGxlbWVudGF0aW9uIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2Vy
Q29udHJvbGxlcgogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJdGVtczooTlNBcnJheSAqKWl0
ZW1zIGluY2x1ZGVFZGl0b3JTZXJ2aWNlczooQk9PTClpbmNsdWRlRWRpdG9yU2VydmljZXMgY2xp
ZW50OihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudCopcGlja2VyQ2xpZW50IHN0eWxlOihO
U1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGUpc3R5bGUKQEAgLTU3LDEyICs4NCw0MCBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICBbX3BpY2tlciBzZXREZWxlZ2F0ZTpzZWxmXTsKIAog
ICAgIF9pbmNsdWRlRWRpdG9yU2VydmljZXMgPSBpbmNsdWRlRWRpdG9yU2VydmljZXM7CisgICAg
X2hhbmRsZUVkaXRpbmdSZXBsYWNlbWVudCA9IGluY2x1ZGVFZGl0b3JTZXJ2aWNlczsKICAgICBf
cGlja2VyQ2xpZW50ID0gcGlja2VyQ2xpZW50OwogCiAgICAgcmV0dXJuIHNlbGY7CiAjZW5kaWYK
IH0KIAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2hhcmluZ1NlcnZpY2VQaWNrZXI6KE5TU2hh
cmluZ1NlcnZpY2VQaWNrZXIgKilzaGFyaW5nU2VydmljZVBpY2tlciBjbGllbnQ6KFdlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ2xpZW50KilwaWNrZXJDbGllbnQKK3sKKyNpZm5kZWYgX19MUDY0X18K
KyAgICByZXR1cm4gbmlsOworI2Vsc2UKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHByaW50ZigiQ3JlYXRpbmcgV1NTUEMgJXBcbiIs
IHNlbGYpOworCisgICAgX3BpY2tlciA9IHNoYXJpbmdTZXJ2aWNlUGlja2VyOworICAgIFtfcGlj
a2VyIHNldERlbGVnYXRlOnNlbGZdOworCisgICAgX2luY2x1ZGVFZGl0b3JTZXJ2aWNlcyA9IFlF
UzsKKyAgICBfaGFuZGxlRWRpdGluZ1JlcGxhY2VtZW50ID0gTk87CisgICAgX3BpY2tlckNsaWVu
dCA9IHBpY2tlckNsaWVudDsKKworICAgIHJldHVybiBzZWxmOworI2VuZGlmCit9CisKKy0gKHZv
aWQpZGVhbGxvYworeworICAgIHByaW50ZigiREVTVFJPWUlORyBXU1NQQyAlcFxuIiwgc2VsZik7
CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCiAtICh2b2lkKWNsZWFyCiB7CiAgICAgLy8gUHJv
dGVjdCBzZWxmIGZyb20gYmVpbmcgZGVhbGxvYydlZCBwYXJ0d2F5IHRocm91Z2ggdGhpcyBtZXRo
b2QuCkBAIC0xNDAsOSArMTk1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC0gKHZv
aWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBkaWRT
aGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMKIHsKLSAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQg
d2hhdCBpdGVtIHdhcyBzaGFyZWQgaWYgd2Ugd2VyZSBpbnRlcmVzdGVkIGluIGVkaXRvciBzZXJ2
aWNlcwotICAgIC8vIChpLmUuLCBpZiB3ZSBwbGFuIG9uIHJlcGxhY2luZyB0aGUgc2VsZWN0aW9u
IHdpdGggdGhlIHJldHVybmVkIGl0ZW0pCi0gICAgaWYgKCFfaW5jbHVkZUVkaXRvclNlcnZpY2Vz
KQorICAgIGlmICghX2hhbmRsZUVkaXRpbmdSZXBsYWNlbWVudCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gV2Ugb25seSBzZW5kIG9uZSBpdGVtLCBzbyB3ZSBzaG91bGQgb25seSBnZXQgb25l
IGl0ZW0gYmFjay4KQEAgLTIxMCw1ICsyNjMsMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IH0KIAogQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDE5NGUyMDYuLjY2MDRlZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuaApAQCAtMzcsMTAgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgTm9kZTsKIH0KIAotY2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgV2Vi
Q29yZTo6Q29udGV4dE1lbnVDbGllbnQKLSNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKLSwg
cHVibGljIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50Ci0jZW5kaWYKK2NsYXNzIFdlYkNv
bnRleHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50LCBwdWJs
aWMgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQKIHsKIHB1YmxpYzoKICAgICBXZWJDb250
ZXh0TWVudUNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KTsKQEAgLTY0LDggKzYxLDYgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgIC8vIFdlYlNoYXJpbmdTZXJ2aWNl
UGlja2VyQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHNoYXJpbmdTZXJ2aWNlUGlja2VyV2lsbEJl
RGVzdHJveWVkKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIHBhZ2VGb3JTaGFyaW5nU2VydmljZVBpY2tlcihX
ZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OkZsb2F0UmVjdCBzY3JlZW5SZWN0Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2Vy
SXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBSZXRhaW5QdHI8TlNJbWFnZT4gaW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQ
aWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsK
ICNlbmRpZgpAQCAtNzcsNyArNzIsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBjbGllbnRGbG9h
dFJlY3RGb3JOb2RlKFdlYkNvcmU6Ok5vZGUmLCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBjb25zdDsK
IAotICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykK
ICAgICBSZXRhaW5QdHI8V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyPiBtX3NoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQppbmRleCA3
MGUyOTQ0Li44MzBlNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpAQCAtNjgsNyArNjgsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIEBlbmQKIAogV2ViQ29udGV4dE1lbnVDbGllbnQ6OldlYkNv
bnRleHRNZW51Q2xpZW50KFdlYlZpZXcgKndlYlZpZXcpIAotICAgIDogbV93ZWJWaWV3KHdlYlZp
ZXcpCisgICAgOiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudCh3ZWJWaWV3KQogewogfQog
CkBAIC00MTIsMTYgKzQxMiw2IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNoYXJpbmdT
ZXJ2aWNlUGlja2VyV2lsbEJlRGVzdHJveWVkKFdlYlNoYXJpbmdTZXJ2aWNlCiAgICAgbV9zaGFy
aW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgPSBuaWw7CiB9CiAKLVdlYkNvcmU6OlBhZ2UqIFdl
YkNvbnRleHRNZW51Q2xpZW50OjpwYWdlRm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCi17Ci0gICAgcmV0dXJuIFttX3dlYlZpZXcgcGFn
ZV07Ci19Ci0KLVJldGFpblB0cjxOU1dpbmRvdz4gV2ViQ29udGV4dE1lbnVDbGllbnQ6OndpbmRv
d0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ciAmKQotewotICAgIHJldHVybiBbbV93ZWJWaWV3IHdpbmRvd107Ci19Ci0KIFdlYkNvcmU6OkZs
b2F0UmVjdCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2NyZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5n
U2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCiB7
CiAgICAgUGFnZSogcGFnZSA9IFttX3dlYlZpZXcgcGFnZV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNv
bnRyb2xsZXIuaAppbmRleCBkODFiYmUwLi42NWIyODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VD
b250cm9sbGVyLmgKQEAgLTUxLDE0ICs1MSw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHNoYXJpbmdTZXJ2aWNlUGlj
a2VyV2lsbEJlRGVzdHJveWVkKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIHBhZ2VGb3JTaGFyaW5nU2Vydmlj
ZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlj
a2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBzY3JlZW5SZWN0Rm9yQ3VycmVudFNoYXJpbmdTZXJ2
aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBSZXRhaW5QdHI8TlNJbWFnZT4gaW1hZ2VGb3JDdXJyZW50U2hhcmlu
Z1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBXZWJWaWV3ICptX3dlYlZpZXc7Ci0KICAgICBSZXRh
aW5QdHI8V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyPiBtX3NoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0K
aW5kZXggMTQwYjEwYy4uNzdmNmM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIu
bW0KQEAgLTM3LDcgKzM3LDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBXZWJTZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIoV2Vi
VmlldyAqd2ViVmlldykgCi0gICAgOiBtX3dlYlZpZXcod2ViVmlldykKKyAgICA6IFdlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ2xpZW50KHdlYlZpZXcpCiB7CiB9CiAKQEAgLTk2LDI0ICs5Niw0IEBA
IHZvaWQgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OnNoYXJpbmdTZXJ2aWNlUGlja2Vy
V2lsbEJlRGVzdHJveWVkKFdlYlNoYXJpCiAgICAgbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIgPSBuaWw7CiB9CiAKLVdlYkNvcmU6OlBhZ2UqIFdlYlNlbGVjdGlvblNlcnZpY2VDb250
cm9sbGVyOjpwYWdlRm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDb250cm9sbGVyICYpCi17Ci0gICAgcmV0dXJuIFttX3dlYlZpZXcgcGFnZV07Ci19Ci0KLVJl
dGFpblB0cjxOU1dpbmRvdz4gV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OndpbmRvd0Zv
clNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAm
KQotewotICAgIHJldHVybiBbbV93ZWJWaWV3IHdpbmRvd107Ci19Ci0KLUZsb2F0UmVjdCBXZWJT
ZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6c2NyZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5nU2Vy
dmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCi17Ci0g
ICAgcmV0dXJuIEZsb2F0UmVjdCgpOwotfQotCi1SZXRhaW5QdHI8TlNJbWFnZT4gV2ViU2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXI6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2Vy
SXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKLXsKLSAgICByZXR1cm4g
bmlsOwotfQotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CmluZGV4IDZkZDRjNGMuLjQzNGRiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCAiV2ViQWN0aW9uTWVudUNvbnRy
b2xsZXIuaCIKICNpbXBvcnQgIldlYkFyY2hpdmUuaCIKICNpbXBvcnQgIldlYkNsaXBWaWV3Lmgi
CisjaW1wb3J0ICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgogI2ltcG9ydCAiV2ViRE9NT3BlcmF0
aW9uc0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJEYXRhU291cmNlSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldlYkRlZmF1bHRVSURlbGVnYXRlLmgiCkBAIC02Nyw2ICs2OCw3IEBACiAjaW1wb3J0ICJX
ZWJQcmVmZXJlbmNlcy5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgiCiAjaW1w
b3J0ICJXZWJSZXNvdXJjZVByaXZhdGUuaCIKKyNpbXBvcnQgIldlYlNoYXJpbmdTZXJ2aWNlUGlj
a2VyQ29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLmgi
CiAjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJVSURlbGVnYXRlUHJp
dmF0ZS5oIgpAQCAtNjI0LDYgKzYyNiw4IEBAIHN0cnVjdCBXZWJIVE1MVmlld0ludGVycHJldEtl
eUV2ZW50c1BhcmFtZXRlcnMgewogI2lmbmRlZiBOREVCVUcKICAgICBCT09MIGVudW1lcmF0aW5n
U3Vidmlld3M7CiAjZW5kaWYKKworICAgIFJldGFpblB0cjxXZWJTaGFyaW5nU2VydmljZVBpY2tl
ckNvbnRyb2xsZXI+IGN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXI7CiB9CiAt
ICh2b2lkKWNsZWFyOwogQGVuZApAQCAtMzM1OCw2ICszMzYyLDIyIEBAIHN0YXRpYyB2b2lkIHNl
dE1lbnVUYXJnZXRzKE5TTWVudSogbWVudSkKICAgICBpZiAoIWNvcmVNZW51KQogICAgICAgICBy
ZXR1cm4gbmlsOwogCisgICAgQ29udGV4dE1lbnVDbGllbnQmIGNvbnRleHRNZW51Q2xpZW50ID0g
cGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuY2xpZW50KCk7CisKKyAgICBWZWN0b3I8Q29u
dGV4dE1lbnVJdGVtPiBtZW51SXRlbVZlY3RvciA9IGNvbnRleHRNZW51SXRlbVZlY3Rvcihjb3Jl
TWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpKTsKKyAgICBmb3IgKGF1dG8mIG1lbnVJdGVtIDog
bWVudUl0ZW1WZWN0b3IpIHsKKyAgICAgICAgaWYgKG1lbnVJdGVtLmFjdGlvbigpICE9IENvbnRl
eHRNZW51SXRlbVRhZ1NoYXJlTWVudSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IE5TTWVudUl0ZW0gKm5zSXRlbSA9IG1lbnVJdGVtLnBsYXRmb3JtRGVzY3JpcHRpb24oKTsKKyAg
ICAgICAgaWYgKCFbbnNJdGVtLnJlcHJlc2VudGVkT2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TU2hh
cmluZ1NlcnZpY2VQaWNrZXIgY2xhc3NdXSkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIF9wcml2
YXRlLT5jdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyID0gYWRvcHROUyhbW1dl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhTaGFyaW5nU2Vy
dmljZVBpY2tlcjpuc0l0ZW0ucmVwcmVzZW50ZWRPYmplY3QgY2xpZW50OnN0YXRpY19jYXN0PFdl
YkNvbnRleHRNZW51Q2xpZW50Kj4oJmNvbnRleHRNZW51Q2xpZW50KV0pOworICAgIH0KKwogICAg
IE5TQXJyYXkqIG1lbnVJdGVtcyA9IGNvcmVNZW51LT5wbGF0Zm9ybURlc2NyaXB0aW9uKCk7CiAg
ICAgaWYgKCFtZW51SXRlbXMpCiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGZiODgwYzQuLmJhZjRkYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MDYwLDggKzQwNjAsMTAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBv
aW50JiBtZW51TG9jYXRpb24sIGNvbnN0IEMKICAgICAgICAgfQogCiAgICAgICAgIENvbnRleHRN
ZW51SXRlbSBjb3JlSXRlbSA9IENvbnRleHRNZW51SXRlbTo6c2hhcmVNZW51SXRlbShhYnNvbHV0
ZUxpbmtVUkwsIGRvd25sb2FkYWJsZU1lZGlhVVJMLCBpbWFnZS5nZXQoKSwgY29udGV4dE1lbnVD
b250ZXh0RGF0YS5zZWxlY3RlZFRleHQoKSk7Ci0gICAgICAgIGlmICghY29yZUl0ZW0uaXNOdWxs
KCkpCisgICAgICAgIGlmICghY29yZUl0ZW0uaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIHBsYXRm
b3JtSW5pdGlhbGl6ZVNoYXJlTWVudUl0ZW0oY29yZUl0ZW0pOwogICAgICAgICAgICAgcHJvcG9z
ZWRBUElJdGVtcy5hcHBlbmQoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoY29yZUl0ZW0pKTsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVt
Pj4gY2xpZW50SXRlbXM7CkBAIC00MDc3LDYgKzQwNzksMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmludGVybmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBvaW50JiBtZW51TG9jYXRpb24sIGNv
bnN0IEMKICAgICBtX2NvbnRleHRNZW51Q2xpZW50LT5jb250ZXh0TWVudURpc21pc3NlZCgqdGhp
cyk7CiB9CiAKKyNpZiAhUExBVEZPUk0oTUFDKQordm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVNoYXJlTWVudUl0ZW0oQ29udGV4dE1lbnVJdGVtJikKK3sKK30KKyNlbmRpZgor
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKIHsKICAgICAvLyBBcHBsaWNhdGlvbiBjdXN0b20gaXRl
bXMgZG9uJ3QgbmVlZCB0byByb3VuZC10cmlwIHRocm91Z2ggdG8gV2ViQ29yZSBpbiB0aGUgV2Vi
UHJvY2Vzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3ZDEx
MDIxLi4yNzIxM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0xMjMzLDYgKzEyMzMsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgdm9pZCBzaG93Q29udGV4
dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgQ29udGV4
dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYs
IGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBpbnRlcm5hbFNob3dDb250ZXh0TWVudShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBDb250ZXh0TWVudUNvbnRl
eHREYXRhJiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiwgQ29udGV4dE1l
bnVDbGllbnRFbGlnaWJpbGl0eSwgY29uc3QgVXNlckRhdGEmKTsKKworICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplU2hhcmVNZW51SXRlbShXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0mKTsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVs
ZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2VydmljZVBp
Y2tlckRlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJhZDBl
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tTaGFy
aW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlX2gKKyNkZWZpbmUgV0tTaGFy
aW5nU2VydmljZVBpY2tlckRlbGVnYXRlX2gKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisgICAgY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eU1hYzsK
K30KKworQGNsYXNzIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXI7CisKK0BpbnRlcmZhY2UgV0tTaGFy
aW5nU2VydmljZVBpY2tlckRlbGVnYXRlIDogTlNPYmplY3QgPE5TU2hhcmluZ1NlcnZpY2VEZWxl
Z2F0ZSwgTlNTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlPiB7CisgICAgV2ViS2l0OjpXZWJD
b250ZXh0TWVudVByb3h5TWFjKiBfbWVudVByb3h5OworICAgIFJldGFpblB0cjxOU1NoYXJpbmdT
ZXJ2aWNlUGlja2VyPiBfcGlja2VyOworICAgIEJPT0wgX2ZpbHRlckVkaXRpbmdTZXJ2aWNlczsK
KyAgICBCT09MIF9oYW5kbGVFZGl0aW5nUmVwbGFjZW1lbnQ7Cit9CisKKysgKFdLU2hhcmluZ1Nl
cnZpY2VQaWNrZXJEZWxlZ2F0ZSAqKXNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGU7
CistIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eTsKKy0gKHZvaWQp
c2V0TWVudVByb3h5OihXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eTsK
Ky0gKHZvaWQpc2V0UGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICopcGlja2VyOworLSAo
dm9pZClzZXRGaWx0ZXJzRWRpdGluZ1NlcnZpY2VzOihCT09MKWZpbHRlcnNFZGl0aW5nU2Vydmlj
ZXM7CistICh2b2lkKXNldEhhbmRsZXNFZGl0aW5nUmVwbGFjZW1lbnQ6KEJPT0wpaGFuZGxlc0Vk
aXRpbmdSZXBsYWNlbWVudDsKK0BlbmQKKworI2VuZGlmIC8vIFdLU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dL
U2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmViNTgxYmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5tbQpAQCAt
MCwwICsxLDEzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
V0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmgiCisKKyNpbXBvcnQgIkRhdGFSZWZlcmVu
Y2UuaCIKKyNpbXBvcnQgIldlYkNvbnRleHRNZW51UHJveHlNYWMuaCIKKyNpbXBvcnQgIldlYlBh
Z2VQcm94eS5oIgorI2ltcG9ydCA8V2ViQ29yZS9OU1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmg+
CisjaW1wb3J0IDxXZWJDb3JlL05TU2hhcmluZ1NlcnZpY2VTUEkuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvTlNTaGFyaW5nU2VydmljZVNQSS5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKKy8vIEZJWE1FOiBXZSBwcm9iYWJseSBuZWVkIHRvIGhhbmcgb24gdGhlIHBpY2tlciBpdHNl
bGYgdW50aWwgdGhlIGNvbnRleHQgbWVudSBvcGVyYXRpb24gaXMgZG9uZSwgYW5kIHRoaXMgb2Jq
ZWN0IHdpbGwgcHJvYmFibHkgZG8gdGhhdC4KK0BpbXBsZW1lbnRhdGlvbiBXS1NoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGUKKworKyAoV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlKilz
aGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlCit7CisgICAgc3RhdGljIFdLU2hhcmlu
Z1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSogZGVsZWdhdGUgPSBbW1dLU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF07CisgICAgcmV0dXJuIGRlbGVnYXRlOworfQorCistIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eQoreworICAgIHJldHVybiBf
bWVudVByb3h5OworfQorCistICh2b2lkKXNldE1lbnVQcm94eTooV2ViS2l0OjpXZWJDb250ZXh0
TWVudVByb3h5TWFjKiltZW51UHJveHkKK3sKKyAgICBfbWVudVByb3h5ID0gbWVudVByb3h5Owor
fQorCistICh2b2lkKXNldFBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXBpY2tlcgor
eworICAgIF9waWNrZXIgPSBwaWNrZXI7Cit9CisKKy0gKHZvaWQpc2V0RmlsdGVyc0VkaXRpbmdT
ZXJ2aWNlczooQk9PTClmaWx0ZXJzRWRpdGluZ1NlcnZpY2VzCit7CisgICAgX2ZpbHRlckVkaXRp
bmdTZXJ2aWNlcyA9IGZpbHRlcnNFZGl0aW5nU2VydmljZXM7Cit9CisKKy0gKHZvaWQpc2V0SGFu
ZGxlc0VkaXRpbmdSZXBsYWNlbWVudDooQk9PTCloYW5kbGVzRWRpdGluZ1JlcGxhY2VtZW50Cit7
CisgICAgX2hhbmRsZUVkaXRpbmdSZXBsYWNlbWVudCA9IGhhbmRsZXNFZGl0aW5nUmVwbGFjZW1l
bnQ7Cit9CisKKy0gKE5TQXJyYXkgKilzaGFyaW5nU2VydmljZVBpY2tlcjooTlNTaGFyaW5nU2Vy
dmljZVBpY2tlciAqKXNoYXJpbmdTZXJ2aWNlUGlja2VyIHNoYXJpbmdTZXJ2aWNlc0Zvckl0ZW1z
OihOU0FycmF5ICopaXRlbXMgbWFzazooTlNTaGFyaW5nU2VydmljZU1hc2spbWFzayBwcm9wb3Nl
ZFNoYXJpbmdTZXJ2aWNlczooTlNBcnJheSAqKXByb3Bvc2VkU2VydmljZXMKK3sKKyAgICBpZiAo
IV9maWx0ZXJFZGl0aW5nU2VydmljZXMpCisgICAgICAgIHJldHVybiBwcm9wb3NlZFNlcnZpY2Vz
OworCisgICAgTlNNdXRhYmxlQXJyYXkgKnNlcnZpY2VzID0gW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhDYXBhY2l0eTpbcHJvcG9zZWRTZXJ2aWNlcyBjb3VudF1dOworICAgIAorICAg
IGZvciAoTlNTaGFyaW5nU2VydmljZSAqc2VydmljZSBpbiBwcm9wb3NlZFNlcnZpY2VzKSB7Cisg
ICAgICAgIGlmIChzZXJ2aWNlLnR5cGUgIT0gTlNTaGFyaW5nU2VydmljZVR5cGVFZGl0b3IpCisg
ICAgICAgICAgICBbc2VydmljZXMgYWRkT2JqZWN0OnNlcnZpY2VdOworICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gc2VydmljZXM7Cit9CisKKy0gKGlkIDxOU1NoYXJpbmdTZXJ2aWNlRGVsZWdhdGU+
KXNoYXJpbmdTZXJ2aWNlUGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICopc2hhcmluZ1Nl
cnZpY2VQaWNrZXIgZGVsZWdhdGVGb3JTaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAq
KXNoYXJpbmdTZXJ2aWNlCit7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2hhcmlu
Z1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSB3aWxsU2hhcmVJdGVt
czooTlNBcnJheSAqKWl0ZW1zCit7CisgICAgX21lbnVQcm94eS0+Y2xlYXJTZXJ2aWNlc01lbnUo
KTsKK30KKworLSAodm9pZClzaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJp
bmdTZXJ2aWNlIGRpZFNoYXJlSXRlbXM6KE5TQXJyYXkgKilpdGVtcworeworICAgIC8vIFdlIG9u
bHkgY2FyZSBhYm91dCB3aGF0IGl0ZW0gd2FzIHNoYXJlZCBpZiB3ZSB3ZXJlIGludGVyZXN0ZWQg
aW4gZWRpdG9yIHNlcnZpY2VzCisgICAgLy8gKGkuZS4sIGlmIHdlIHBsYW4gb24gcmVwbGFjaW5n
IHRoZSBzZWxlY3Rpb24gd2l0aCB0aGUgcmV0dXJuZWQgaXRlbSkKKyAgICBpZiAoIV9oYW5kbGVF
ZGl0aW5nUmVwbGFjZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxTdHJpbmc+
IHR5cGVzOworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworCisgICAgaWQg
aXRlbSA9IFtpdGVtcyBvYmplY3RBdEluZGV4OjBdOworCisgICAgaWYgKFtpdGVtIGlzS2luZE9m
Q2xhc3M6W05TQXR0cmlidXRlZFN0cmluZyBjbGFzc11dKSB7CisgICAgICAgIE5TRGF0YSAqZGF0
YSA9IFtpdGVtIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW2l0ZW0gbGVuZ3RoXSkgZG9j
dW1lbnRBdHRyaWJ1dGVzOm5pbF07CisgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFS
ZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRh
IGxlbmd0aF0pOworCisgICAgICAgIHR5cGVzLmFwcGVuZChOU1Bhc3RlYm9hcmRUeXBlUlRGRCk7
CisgICAgICAgIHR5cGVzLmFwcGVuZChOU1JURkRQYm9hcmRUeXBlKTsKKyAgICB9IGVsc2UgaWYg
KFtpdGVtIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKSB7CisgICAgICAgIE5TRGF0YSAq
ZGF0YSA9IChOU0RhdGEgKilpdGVtOworICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVNvdXJjZVJl
Zj4gc291cmNlID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlV2l0aERhdGEoKENGRGF0YVJl
ZilkYXRhLCBOVUxMKSk7CisgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGFk
b3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZUltYWdlQXRJbmRleChzb3VyY2UuZ2V0KCksIDAsIE5V
TEwpKTsKKworICAgICAgICBpZiAoIWltYWdlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgICAgICB0eXBlcy5h
cHBlbmQoTlNQYXN0ZWJvYXJkVHlwZVRJRkYpOworICAgIH0gZWxzZSB7CisgICAgICAgIExPR19F
UlJPUigic2hhcmluZ1NlcnZpY2U6ZGlkU2hhcmVJdGVtczogLSBVbmtub3duIGl0ZW0gdHlwZSBy
ZXR1cm5lZFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGFkb3B0IHJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRlZFN0cmluZyBpbnN0ZWFk
IG9mIGJvdW5jaW5nIHRocm91Z2ggdGhlIChmYWtlKSBwYXN0ZWJvYXJkLgorICAgIF9tZW51UHJv
eHktPnBhZ2UoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKHR5cGVzLCBkYXRh
UmVmZXJlbmNlKTsKK30KKworLSAoTlNXaW5kb3cgKilzaGFyaW5nU2VydmljZTooTlNTaGFyaW5n
U2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlIHNvdXJjZVdpbmRvd0ZvclNoYXJlSXRlbXM6KE5TQXJy
YXkgKilpdGVtcyBzaGFyaW5nQ29udGVudFNjb3BlOihOU1NoYXJpbmdDb250ZW50U2NvcGUgKilz
aGFyaW5nQ29udGVudFNjb3BlCit7CisgICAgcmV0dXJuIF9tZW51UHJveHktPndpbmRvdygpOwor
fQorCitAZW5kCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbQppbmRleCA1NTgwZWQxLi44MDhlY2M0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFj
Lm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKICNp
bXBvcnQgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94
eS5oIgorI2ltcG9ydCAiV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmgiCiAjaW1wb3J0
ICJXS1ZpZXcuaCIKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ludFJlY3QuaD4KQEAgLTE0NywxMTkgKzE0OCw2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBAZW5kCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKLUBpbnRl
cmZhY2UgV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIDogTlNPYmplY3QgPE5TU2hhcmlu
Z1NlcnZpY2VEZWxlZ2F0ZSwgTlNTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlPiB7Ci0gICAg
V2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiBfbWVudVByb3h5OwotICAgIFJldGFpblB0
cjxOU1NoYXJpbmdTZXJ2aWNlUGlja2VyPiBfcGlja2VyOwotICAgIEJPT0wgX2luY2x1ZGVFZGl0
b3JTZXJ2aWNlczsKLX0KLQotKyAoV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlICopc2hh
cmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZTsKLS0gKFdlYktpdDo6V2ViQ29udGV4dE1l
bnVQcm94eU1hYyopbWVudVByb3h5OwotLSAodm9pZClzZXRNZW51UHJveHk6KFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVQcm94eU1hYyopbWVudVByb3h5OwotLSAodm9pZClzZXRQaWNrZXI6KE5TU2hh
cmluZ1NlcnZpY2VQaWNrZXIgKilwaWNrZXI7Ci0tICh2b2lkKXNldEluY2x1ZGVFZGl0b3JTZXJ2
aWNlczooQk9PTClpbmNsdWRlRWRpdG9yU2VydmljZXM7Ci1AZW5kCi0KLS8vIEZJWE1FOiBXZSBw
cm9iYWJseSBuZWVkIHRvIGhhbmcgb24gdGhlIHBpY2tlciBpdHNlbGYgdW50aWwgdGhlIGNvbnRl
eHQgbWVudSBvcGVyYXRpb24gaXMgZG9uZSwgYW5kIHRoaXMgb2JqZWN0IHdpbGwgcHJvYmFibHkg
ZG8gdGhhdC4KLUBpbXBsZW1lbnRhdGlvbiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUK
LSsgKFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSopc2hhcmVkU2hhcmluZ1NlcnZpY2VQ
aWNrZXJEZWxlZ2F0ZQotewotICAgIHN0YXRpYyBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdh
dGUqIGRlbGVnYXRlID0gW1tXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgYWxsb2NdIGlu
aXRdOwotICAgIHJldHVybiBkZWxlZ2F0ZTsKLX0KLQotLSAoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dVByb3h5TWFjKiltZW51UHJveHkKLXsKLSAgICByZXR1cm4gX21lbnVQcm94eTsKLX0KLQotLSAo
dm9pZClzZXRNZW51UHJveHk6KFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVudVBy
b3h5Ci17Ci0gICAgX21lbnVQcm94eSA9IG1lbnVQcm94eTsKLX0KLQotLSAodm9pZClzZXRQaWNr
ZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgKilwaWNrZXIKLXsKLSAgICBfcGlja2VyID0gcGlj
a2VyOwotfQotCi0tICh2b2lkKXNldEluY2x1ZGVFZGl0b3JTZXJ2aWNlczooQk9PTClpbmNsdWRl
RWRpdG9yU2VydmljZXMKLXsKLSAgICBfaW5jbHVkZUVkaXRvclNlcnZpY2VzID0gaW5jbHVkZUVk
aXRvclNlcnZpY2VzOwotfQotCi0tIChOU0FycmF5ICopc2hhcmluZ1NlcnZpY2VQaWNrZXI6KE5T
U2hhcmluZ1NlcnZpY2VQaWNrZXIgKilzaGFyaW5nU2VydmljZVBpY2tlciBzaGFyaW5nU2Vydmlj
ZXNGb3JJdGVtczooTlNBcnJheSAqKWl0ZW1zIG1hc2s6KE5TU2hhcmluZ1NlcnZpY2VNYXNrKW1h
c2sgcHJvcG9zZWRTaGFyaW5nU2VydmljZXM6KE5TQXJyYXkgKilwcm9wb3NlZFNlcnZpY2VzCi17
Ci0gICAgaWYgKF9pbmNsdWRlRWRpdG9yU2VydmljZXMpCi0gICAgICAgIHJldHVybiBwcm9wb3Nl
ZFNlcnZpY2VzOwotCi0gICAgTlNNdXRhYmxlQXJyYXkgKnNlcnZpY2VzID0gW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpbcHJvcG9zZWRTZXJ2aWNlcyBjb3VudF1dOwot
ICAgIAotICAgIGZvciAoTlNTaGFyaW5nU2VydmljZSAqc2VydmljZSBpbiBwcm9wb3NlZFNlcnZp
Y2VzKSB7Ci0gICAgICAgIGlmIChzZXJ2aWNlLnR5cGUgIT0gTlNTaGFyaW5nU2VydmljZVR5cGVF
ZGl0b3IpCi0gICAgICAgICAgICBbc2VydmljZXMgYWRkT2JqZWN0OnNlcnZpY2VdOwotICAgIH0K
LSAgICAKLSAgICByZXR1cm4gc2VydmljZXM7Ci19Ci0KLS0gKGlkIDxOU1NoYXJpbmdTZXJ2aWNl
RGVsZWdhdGU+KXNoYXJpbmdTZXJ2aWNlUGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICop
c2hhcmluZ1NlcnZpY2VQaWNrZXIgZGVsZWdhdGVGb3JTaGFyaW5nU2VydmljZTooTlNTaGFyaW5n
U2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlCi17Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZv
aWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSB3aWxs
U2hhcmVJdGVtczooTlNBcnJheSAqKWl0ZW1zCi17Ci0gICAgX21lbnVQcm94eS0+Y2xlYXJTZXJ2
aWNlc01lbnUoKTsKLX0KLQotLSAodm9pZClzaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2Vydmlj
ZSAqKXNoYXJpbmdTZXJ2aWNlIGRpZFNoYXJlSXRlbXM6KE5TQXJyYXkgKilpdGVtcwotewotICAg
IC8vIFdlIG9ubHkgY2FyZSBhYm91dCB3aGF0IGl0ZW0gd2FzIHNoYXJlZCBpZiB3ZSB3ZXJlIGlu
dGVyZXN0ZWQgaW4gZWRpdG9yIHNlcnZpY2VzCi0gICAgLy8gKGkuZS4sIGlmIHdlIHBsYW4gb24g
cmVwbGFjaW5nIHRoZSBzZWxlY3Rpb24gd2l0aCB0aGUgcmV0dXJuZWQgaXRlbSkKLSAgICBpZiAo
IV9pbmNsdWRlRWRpdG9yU2VydmljZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIFZlY3RvcjxT
dHJpbmc+IHR5cGVzOwotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotCi0g
ICAgaWQgaXRlbSA9IFtpdGVtcyBvYmplY3RBdEluZGV4OjBdOwotCi0gICAgaWYgKFtpdGVtIGlz
S2luZE9mQ2xhc3M6W05TQXR0cmlidXRlZFN0cmluZyBjbGFzc11dKSB7Ci0gICAgICAgIE5TRGF0
YSAqZGF0YSA9IFtpdGVtIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW2l0ZW0gbGVuZ3Ro
XSkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF07Ci0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6
OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSks
IFtkYXRhIGxlbmd0aF0pOwotCi0gICAgICAgIHR5cGVzLmFwcGVuZChOU1Bhc3RlYm9hcmRUeXBl
UlRGRCk7Ci0gICAgICAgIHR5cGVzLmFwcGVuZChOU1JURkRQYm9hcmRUeXBlKTsKLSAgICB9IGVs
c2UgaWYgKFtpdGVtIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKSB7Ci0gICAgICAgIE5T
RGF0YSAqZGF0YSA9IChOU0RhdGEgKilpdGVtOwotICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVNv
dXJjZVJlZj4gc291cmNlID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlV2l0aERhdGEoKENG
RGF0YVJlZilkYXRhLCBOVUxMKSk7Ci0gICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFn
ZSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZUltYWdlQXRJbmRleChzb3VyY2UuZ2V0KCks
IDAsIE5VTEwpKTsKLQotICAgICAgICBpZiAoIWltYWdlKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOwotICAgICAgICB0
eXBlcy5hcHBlbmQoTlNQYXN0ZWJvYXJkVHlwZVRJRkYpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IExPR19FUlJPUigic2hhcmluZ1NlcnZpY2U6ZGlkU2hhcmVJdGVtczogLSBVbmtub3duIGl0ZW0g
dHlwZSByZXR1cm5lZFxuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGFkb3B0IHJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRlZFN0cmluZyBp
bnN0ZWFkIG9mIGJvdW5jaW5nIHRocm91Z2ggdGhlIChmYWtlKSBwYXN0ZWJvYXJkLgotICAgIF9t
ZW51UHJveHktPnBhZ2UoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKHR5cGVz
LCBkYXRhUmVmZXJlbmNlKTsKLX0KLQotLSAoTlNXaW5kb3cgKilzaGFyaW5nU2VydmljZTooTlNT
aGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlIHNvdXJjZVdpbmRvd0ZvclNoYXJlSXRlbXM6
KE5TQXJyYXkgKilpdGVtcyBzaGFyaW5nQ29udGVudFNjb3BlOihOU1NoYXJpbmdDb250ZW50U2Nv
cGUgKilzaGFyaW5nQ29udGVudFNjb3BlCi17Ci0gICAgcmV0dXJuIF9tZW51UHJveHktPndpbmRv
dygpOwotfQotCi1AZW5kCi0KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViQ29u
dGV4dE1lbnVQcm94eU1hYzo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyhXS1ZpZXcqIHdlYlZpZXcs
IFdlYlBhZ2VQcm94eSogcGFnZSkKQEAgLTM5Miw3ICsyODAsOCBAQCB2b2lkIFdlYkNvbnRleHRN
ZW51UHJveHlNYWM6OnNldHVwU2VydmljZXNNZW51KGNvbnN0IENvbnRleHRNZW51Q29udGV4dERh
dGEmIGNvbgogICAgIFtwaWNrZXIgc2V0U3R5bGU6aGFzQ29udHJvbGxlZEltYWdlID8gTlNTaGFy
aW5nU2VydmljZVBpY2tlclN0eWxlUm9sbG92ZXIgOiBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5
bGVUZXh0U2VsZWN0aW9uXTsKICAgICBbcGlja2VyIHNldERlbGVnYXRlOltXS1NoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV1dOwog
ICAgIFtbV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNoYXJlZFNoYXJpbmdTZXJ2aWNl
UGlja2VyRGVsZWdhdGVdIHNldFBpY2tlcjpwaWNrZXIuZ2V0KCldOwotICAgIFtbV0tTaGFyaW5n
U2VydmljZVBpY2tlckRlbGVnYXRlIHNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVd
IHNldEluY2x1ZGVFZGl0b3JTZXJ2aWNlczppbmNsdWRlRWRpdG9yU2VydmljZXNdOworICAgIFtb
V0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2Vy
RGVsZWdhdGVdIHNldEZpbHRlcnNFZGl0aW5nU2VydmljZXM6IWluY2x1ZGVFZGl0b3JTZXJ2aWNl
c107CisgICAgW1tXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1Nl
cnZpY2VQaWNrZXJEZWxlZ2F0ZV0gc2V0SGFuZGxlc0VkaXRpbmdSZXBsYWNlbWVudDppbmNsdWRl
RWRpdG9yU2VydmljZXNdOwogCiAgICAgbV9zZXJ2aWNlc01lbnUgPSBhZG9wdE5TKFtbcGlja2Vy
IG1lbnVdIGNvcHldKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQppbmRleCBlMzhiOWZmLi45YTE0MWE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNDMsNiArNDMsOCBAQAog
I2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXh0Q2hlY2tlci5oIgogI2lt
cG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKKyNpbXBvcnQgIldL
U2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVQ
cm94eU1hYy5oIgogI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9j
ZXNzUHJveHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KQEAg
LTc0NSw2ICs3NDcsMjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVkaXRvclN0YXRlQ2hhbmdlZChj
b25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUpCiAgICAgfQogI2VuZGlmCiB9CisKK3ZvaWQg
V2ViUGFnZVByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVTaGFyZU1lbnVJdGVtKENvbnRleHRNZW51
SXRlbSYgaXRlbSkKK3sKKyAgICBOU01lbnVJdGVtICpuc0l0ZW0gPSBpdGVtLnBsYXRmb3JtRGVz
Y3JpcHRpb24oKTsKKworICAgIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgKnNoYXJpbmdTZXJ2aWNl
UGlja2VyID0gW25zSXRlbSByZXByZXNlbnRlZE9iamVjdF07CisgICAgc2hhcmluZ1NlcnZpY2VQ
aWNrZXIuZGVsZWdhdGUgPSBbV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNoYXJlZFNo
YXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVdOworICAgIAorICAgIFtbV0tTaGFyaW5nU2Vydmlj
ZVBpY2tlckRlbGVnYXRlIHNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVdIHNldEZp
bHRlcnNFZGl0aW5nU2VydmljZXM6Tk9dOworICAgIFtbV0tTaGFyaW5nU2VydmljZVBpY2tlckRl
bGVnYXRlIHNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVdIHNldEhhbmRsZXNFZGl0
aW5nUmVwbGFjZW1lbnQ6Tk9dOworICAgIFtbV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRl
IHNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVdIHNldE1lbnVQcm94eTpzdGF0aWNf
Y2FzdDxXZWJDb250ZXh0TWVudVByb3h5TWFjKj4obV9hY3RpdmVDb250ZXh0TWVudS5nZXQoKSld
OworCisgICAgLy8gU2V0dGluZyB0aGUgcGlja2VyIGxldHMgdGhlIGRlbGVnYXRlIHJldGFpbiBp
dCB0byBrZWVwIGl0IGFsaXZlLCBidXQgdGhpcyBwaWNrZXIgaXMga2VwdCBhbGl2ZSBieSB0aGUg
bWVudSBpdGVtLgorICAgIFtbV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNoYXJlZFNo
YXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVdIHNldFBpY2tlcjpuaWxdOworfQogICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ZDgyNjZhLi4yZDM0NGRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MjUsNiAr
OTI1LDggQEAKIAkJNTEzQTE2M0QxNjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJv
eHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEzQTE2M0IxNjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdl
cy5oICovOyB9OwogCQk1MTNBMTY0QzE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEzQTE2NDkxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcCAqLzsgfTsKIAkJNTEzQTE2NEQxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTNBMTY0QTE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCAqLzsgfTsKKwkJNTEzRTQ2MkQxQUQ4Mzc1NjAwMTYyMzRBIC8q
IFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzRTQ2MkIxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oICovOyB9OworCQk1MTNFNDYyRTFBRDgzNzU2MDAx
NjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzRTQ2MkMxQUQ4Mzc1NjAwMTYyMzRB
IC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJNTE0QkRFRDMx
NkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRCREVEMjE2Qzk4RUREMDBFNEUyNUUgLyog
U3RhdGlzdGljc1JlcXVlc3QuaCAqLzsgfTsKIAkJNTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8q
IFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE0RDlGNTUxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxl
ci5oICovOyB9OwogCQk1MTREOUY1ODE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9s
bGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0
RDlGNTYxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSAqLzsgfTsKQEAg
LTMxMTUsNiArMzExNyw4IEBACiAJCTUxM0ExNjQ5MTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA7IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxM0ExNjRBMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTEzQTE2NEIxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxM0U0NjJCMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVs
ZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTaGFyaW5nU2Vydmlj
ZVBpY2tlckRlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxM0U0NjJD
MUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NoYXJpbmdTZXJ2aWNlUGlj
a2VyRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEJERUQyMTZD
OThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdGF0aXN0aWNzUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VzQ29udHJvbGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTREOUY1NjE5MTE5RDM1MDAwMDYzQTcgLyog
U2VydmljZXNDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU2VydmljZXNDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzA2Myw2ICs3MDY3LDggQEAKIAkJCQkwRkNCNEU1RDE4QkJFM0Q5MDAwRkNGQzkgLyogV0tQ
cmludGluZ1ZpZXcubW0gKi8sCiAJCQkJMEZDQjRFNUUxOEJCRTNEOTAwMEZDRkM5IC8qIFdLVGV4
dElucHV0V2luZG93Q29udHJvbGxlci5oICovLAogCQkJCTBGQ0I0RTVGMThCQkUzRDkwMDBGQ0ZD
OSAvKiBXS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIubW0gKi8sCisJCQkJNTEzRTQ2MkIxQUQ4
Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oICovLAorCQkJ
CTUxM0U0NjJDMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdh
dGUubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC03OTM1LDYgKzc5NDEsNyBAQAogCQkJCTFBNUU0REE0MTJEM0JEM0QwMDk5QTJCQiAv
KiBUZXh0Q2hlY2tlclN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTFBMEJENzFBNDhFNkM2
MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFGMjYzOTE0
Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUxM0U0NjJEMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNl
UGlja2VyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjA1RDg3MTQ2ODgzNDgwMDhC
MUU4MSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUZFNDM2NjE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0VFNEFFMkIxQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJS2l0U1BJLmggaW4gSGVh
ZGVycyAqLywKQEAgLTk4NjQsNiArOTg3MSw3IEBACiAJCQkJMzFBMkVDNDgxNDg5OTdDMjAwODEw
RDcxIC8qIFdlYk5vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTA5OTk3MzE0
NkM3NUEyMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxMzEyNjIwMTQ4RkY4MkMwMEJBMkEzOSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxM0U0NjJFMUFEODM3NTYwMDE2MjM0QSAvKiBXS1No
YXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMUJBOTI0
RDE0ODgzMTI2MDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUEyRUM0QTE0ODk5N0MyMDA4MTBENzEgLyogV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQTJFQzRE
MTQ4OTk3QzIwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgaW4gU291cmNl
cyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250544</attachid>
            <date>2015-04-10 17:14:48 -0700</date>
            <delta_ts>2015-04-10 19:53:44 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>35618</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCmluZGV4IDM1NzM5
ZDguLjBmNTg1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgfkNvbnRleHRNZW51Q29udHJvbGxl
cigpOwogCiAgICAgUGFnZSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIENvbnRleHRN
ZW51Q2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCiAgICAgQ29udGV4dE1l
bnUqIGNvbnRleHRNZW51KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0TWVudS5nZXQoKTsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDb250ZXh0TWVudSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9s
bGVyLmgKaW5kZXggYTNjYmNiMS4uNjQ3ZDRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oCkBAIC0y
MywxMyArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi0KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTlNTaGFyaW5nU2VydmljZVBpY2tlclNQSS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9OU1NoYXJpbmdTZXJ2aWNlU1BJLmg+CiAKIEBjbGFzcyBXZWJTaGFyaW5nU2Vy
dmljZVBpY2tlckNvbnRyb2xsZXI7CitAY2xhc3MgV2ViVmlldzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgRmxvYXRSZWN0OwpAQCAtNDAsMjcgKzM5LDMxIEBAIGNsYXNzIFdlYkNvbnRl
eHRNZW51Q2xpZW50OwogCiBjbGFzcyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudCB7CiBw
dWJsaWM6CisgICAgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQoV2ViVmlldyAqKTsKICAg
ICB2aXJ0dWFsIH5XZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudCgpIHsgfQogCi0gICAgdmly
dHVhbCB2b2lkIHNoYXJpbmdTZXJ2aWNlUGlja2VyV2lsbEJlRGVzdHJveWVkKFdlYlNoYXJpbmdT
ZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSA9IDA7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpQYWdl
KiBwYWdlRm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250
cm9sbGVyICYpID0gMDsKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93Rm9y
U2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0cm95
ZWQoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpOworICAgIHZpcnR1YWwgV2Vi
Q29yZTo6UGFnZSogcGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlciAmKTsKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxOU1dpbmRvdz4gd2lu
ZG93Rm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9s
bGVyICYpOworCisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3Qgc2NyZWVuUmVjdEZvckN1
cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250
cm9sbGVyICYpOworICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TSW1hZ2U+IGltYWdlRm9yQ3VycmVu
dFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXIgJik7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBzY3JlZW5SZWN0Rm9yQ3Vy
cmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIgJikgPSAwOwotICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TSW1hZ2U+IGltYWdlRm9yQ3Vy
cmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIgJikgPSAwOworcHJvdGVjdGVkOgorICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKIH07CiAK
IEBpbnRlcmZhY2UgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIDogTlNPYmplY3Qg
PE5TU2hhcmluZ1NlcnZpY2VEZWxlZ2F0ZSwgTlNTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRl
PiB7CiAgICAgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQqIF9waWNrZXJDbGllbnQ7CiAg
ICAgUmV0YWluUHRyPE5TU2hhcmluZ1NlcnZpY2VQaWNrZXI+IF9waWNrZXI7CiAgICAgQk9PTCBf
aW5jbHVkZUVkaXRvclNlcnZpY2VzOworICAgIEJPT0wgX2hhbmRsZUVkaXRpbmdSZXBsYWNlbWVu
dDsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSXRlbXM6KE5TQXJyYXkgKilpdGVtcyBp
bmNsdWRlRWRpdG9yU2VydmljZXM6KEJPT0wpaW5jbHVkZUVkaXRvclNlcnZpY2VzIGNsaWVudDoo
V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQqKXBpY2tlckNsaWVudCBzdHlsZTooTlNTaGFy
aW5nU2VydmljZVBpY2tlclN0eWxlKXN0eWxlOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2hh
cmluZ1NlcnZpY2VQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgKilzaGFyaW5nU2Vydmlj
ZVBpY2tlciBjbGllbnQ6KFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KilwaWNrZXJDbGll
bnQ7CiAtIChOU01lbnUgKiltZW51OwogLSAodm9pZClkaWRTaGFyZUltYWdlRGF0YTooTlNEYXRh
ICopZGF0YSBjb25maXJtRGF0YUlzVmFsaWRUSUZGRGF0YTooQk9PTCljb25maXJtRGF0YTsKIC0g
KHZvaWQpY2xlYXI7CiAKIEBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCmluZGV4
IDM0Nzg3YmEuLjYyYjU4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2Vi
U2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCkBAIC0yNSw4ICsyNSw2
IEBACiAKICNpbXBvcnQgIldlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oIgogCi0j
aWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi0KICNpbXBvcnQgIldlYkNvbnRleHRNZW51Q2xp
ZW50LmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvQml0
bWFwSW1hZ2UuaD4KQEAgLTQyLDYgKzQwLDM1IEBAIHN0YXRpYyBOU1N0cmluZyAqc2VydmljZUNv
bnRyb2xzUGFzdGVib2FyZE5hbWUgPSBAIldlYktpdFNlcnZpY2VDb250cm9sc1Bhc3RlYm9hCiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVu
dDo6V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQoV2ViVmlldyAqd2ViVmlldykKKyAgICA6
IG1fd2ViVmlldyh3ZWJWaWV3KQoreworfQorCit2b2lkIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2Vy
Q2xpZW50OjpzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChXZWJTaGFyaW5nU2Vy
dmljZVBpY2tlckNvbnRyb2xsZXIgJikKK3sKK30KKworUGFnZSogV2ViU2hhcmluZ1NlcnZpY2VQ
aWNrZXJDbGllbnQ6OnBhZ2VGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2Vydmlj
ZVBpY2tlckNvbnRyb2xsZXIgJikKK3sKKyAgICByZXR1cm4gW21fd2ViVmlldyBwYWdlXTsKK30K
KworUmV0YWluUHRyPE5TV2luZG93PiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudDo6d2lu
ZG93Rm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9s
bGVyICYpCit7CisgICAgcmV0dXJuIFttX3dlYlZpZXcgd2luZG93XTsKK30KKworRmxvYXRSZWN0
IFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50OjpzY3JlZW5SZWN0Rm9yQ3VycmVudFNoYXJp
bmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikK
K3sKKyAgICByZXR1cm4gRmxvYXRSZWN0KCk7Cit9CisKK1JldGFpblB0cjxOU0ltYWdlPiBXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNsaWVudDo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQ
aWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQoreworICAgIHJl
dHVybiBuaWw7Cit9CisKIEBpbXBsZW1lbnRhdGlvbiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNv
bnRyb2xsZXIKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSXRlbXM6KE5TQXJyYXkgKilpdGVt
cyBpbmNsdWRlRWRpdG9yU2VydmljZXM6KEJPT0wpaW5jbHVkZUVkaXRvclNlcnZpY2VzIGNsaWVu
dDooV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQqKXBpY2tlckNsaWVudCBzdHlsZTooTlNT
aGFyaW5nU2VydmljZVBpY2tlclN0eWxlKXN0eWxlCkBAIC01Nyw2ICs4NCwyNiBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKICAgICBbX3BpY2tlciBzZXREZWxlZ2F0ZTpzZWxmXTsKIAogICAg
IF9pbmNsdWRlRWRpdG9yU2VydmljZXMgPSBpbmNsdWRlRWRpdG9yU2VydmljZXM7CisgICAgX2hh
bmRsZUVkaXRpbmdSZXBsYWNlbWVudCA9IGluY2x1ZGVFZGl0b3JTZXJ2aWNlczsKKyAgICBfcGlj
a2VyQ2xpZW50ID0gcGlja2VyQ2xpZW50OworCisgICAgcmV0dXJuIHNlbGY7CisjZW5kaWYKK30K
KworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2hhcmluZ1NlcnZpY2VQaWNrZXI6KE5TU2hhcmlu
Z1NlcnZpY2VQaWNrZXIgKilzaGFyaW5nU2VydmljZVBpY2tlciBjbGllbnQ6KFdlYlNoYXJpbmdT
ZXJ2aWNlUGlja2VyQ2xpZW50KilwaWNrZXJDbGllbnQKK3sKKyNpZm5kZWYgX19MUDY0X18KKyAg
ICByZXR1cm4gbmlsOworI2Vsc2UKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9waWNrZXIgPSBzaGFyaW5nU2VydmljZVBpY2tlcjsK
KyAgICBbX3BpY2tlciBzZXREZWxlZ2F0ZTpzZWxmXTsKKworICAgIF9pbmNsdWRlRWRpdG9yU2Vy
dmljZXMgPSBZRVM7CisgICAgX2hhbmRsZUVkaXRpbmdSZXBsYWNlbWVudCA9IE5POwogICAgIF9w
aWNrZXJDbGllbnQgPSBwaWNrZXJDbGllbnQ7CiAKICAgICByZXR1cm4gc2VsZjsKQEAgLTE0MCw5
ICsxODcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLSAodm9pZClzaGFyaW5nU2Vy
dmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlIGRpZFNoYXJlSXRlbXM6KE5T
QXJyYXkgKilpdGVtcwogewotICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCB3aGF0IGl0ZW0gd2Fz
IHNoYXJlZCBpZiB3ZSB3ZXJlIGludGVyZXN0ZWQgaW4gZWRpdG9yIHNlcnZpY2VzCi0gICAgLy8g
KGkuZS4sIGlmIHdlIHBsYW4gb24gcmVwbGFjaW5nIHRoZSBzZWxlY3Rpb24gd2l0aCB0aGUgcmV0
dXJuZWQgaXRlbSkKLSAgICBpZiAoIV9pbmNsdWRlRWRpdG9yU2VydmljZXMpCisgICAgaWYgKCFf
aGFuZGxlRWRpdGluZ1JlcGxhY2VtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBv
bmx5IHNlbmQgb25lIGl0ZW0sIHNvIHdlIHNob3VsZCBvbmx5IGdldCBvbmUgaXRlbSBiYWNrLgpA
QCAtMjEwLDUgKzI1NSwzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogfQogCiBAZW5kCi0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggMTk0ZTIwNi4uNjYwNGVlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5oCkBAIC0zNywxMCArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOb2RlOwog
fQogCi1jbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0
TWVudUNsaWVudAotI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQotLCBwdWJsaWMgV2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDbGllbnQKLSNlbmRpZgorY2xhc3MgV2ViQ29udGV4dE1lbnVDbGll
bnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQsIHB1YmxpYyBXZWJTaGFyaW5n
U2VydmljZVBpY2tlckNsaWVudAogewogcHVibGljOgogICAgIFdlYkNvbnRleHRNZW51Q2xpZW50
KFdlYlZpZXcgKndlYlZpZXcpOwpAQCAtNjQsOCArNjEsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgLy8gV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQK
ICAgICB2aXJ0dWFsIHZvaWQgc2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0cm95ZWQoV2Vi
U2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
V2ViQ29yZTo6UGFnZSogcGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxO
U1dpbmRvdz4gd2luZG93Rm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQ
aWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRS
ZWN0IHNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJldGFp
blB0cjxOU0ltYWdlPiBpbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2Vi
U2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC03
Nyw3ICs3Miw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIGNsaWVudEZsb2F0UmVjdEZvck5vZGUo
V2ViQ29yZTo6Tm9kZSYsIFdlYkNvcmU6OkZsb2F0UmVjdCYpIGNvbnN0OwogCi0gICAgV2ViVmll
dyAqbV93ZWJWaWV3OwogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgIFJldGFpblB0
cjxXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXI+IG1fc2hhcmluZ1NlcnZpY2VQaWNr
ZXJDb250cm9sbGVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IDcwZTI5NDQuLjgzMGU0
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC02OCw3ICs2OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogQGVuZAogCiBXZWJDb250ZXh0TWVudUNsaWVudDo6V2ViQ29udGV4dE1lbnVDbGll
bnQoV2ViVmlldyAqd2ViVmlldykgCi0gICAgOiBtX3dlYlZpZXcod2ViVmlldykKKyAgICA6IFdl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KHdlYlZpZXcpCiB7CiB9CiAKQEAgLTQxMiwxNiAr
NDEyLDYgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hhcmluZ1NlcnZpY2VQaWNrZXJX
aWxsQmVEZXN0cm95ZWQoV2ViU2hhcmluZ1NlcnZpY2UKICAgICBtX3NoYXJpbmdTZXJ2aWNlUGlj
a2VyQ29udHJvbGxlciA9IG5pbDsKIH0KIAotV2ViQ29yZTo6UGFnZSogV2ViQ29udGV4dE1lbnVD
bGllbnQ6OnBhZ2VGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tl
ckNvbnRyb2xsZXIgJikKLXsKLSAgICByZXR1cm4gW21fd2ViVmlldyBwYWdlXTsKLX0KLQotUmV0
YWluUHRyPE5TV2luZG93PiBXZWJDb250ZXh0TWVudUNsaWVudDo6d2luZG93Rm9yU2hhcmluZ1Nl
cnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCi17Ci0gICAg
cmV0dXJuIFttX3dlYlZpZXcgd2luZG93XTsKLX0KLQogV2ViQ29yZTo6RmxvYXRSZWN0IFdlYkNv
bnRleHRNZW51Q2xpZW50OjpzY3JlZW5SZWN0Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2Vy
SXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKIHsKICAgICBQYWdlKiBw
YWdlID0gW21fd2ViVmlldyBwYWdlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCmlu
ZGV4IGQ4MWJiZTAuLjY1YjI4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaApA
QCAtNTEsMTQgKzUxLDggQEAgcHVibGljOgogCiAgICAgLy8gV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgc2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0
cm95ZWQoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogcGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJl
dGFpblB0cjxOU1dpbmRvdz4gd2luZG93Rm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29y
ZTo6RmxvYXRSZWN0IHNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVt
KFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFJldGFpblB0cjxOU0ltYWdlPiBpbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tl
ckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgotICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKLQogICAgIFJldGFpblB0cjxXZWJTaGFy
aW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXI+IG1fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9s
bGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbQppbmRleCAxNDBiMTBj
Li43N2Y2YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbQpAQCAtMzcsNyAr
MzcsNyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdlYlNlbGVjdGlvblNlcnZpY2VD
b250cm9sbGVyOjpXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcihXZWJWaWV3ICp3ZWJWaWV3
KSAKLSAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorICAgIDogV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDbGllbnQod2ViVmlldykKIHsKIH0KIApAQCAtOTYsMjQgKzk2LDQgQEAgdm9pZCBXZWJTZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6c2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0cm95
ZWQoV2ViU2hhcmkKICAgICBtX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciA9IG5pbDsK
IH0KIAotV2ViQ29yZTo6UGFnZSogV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OnBhZ2VG
b3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIg
JikKLXsKLSAgICByZXR1cm4gW21fd2ViVmlldyBwYWdlXTsKLX0KLQotUmV0YWluUHRyPE5TV2lu
ZG93PiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6d2luZG93Rm9yU2hhcmluZ1NlcnZp
Y2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCi17Ci0gICAgcmV0
dXJuIFttX3dlYlZpZXcgd2luZG93XTsKLX0KLQotRmxvYXRSZWN0IFdlYlNlbGVjdGlvblNlcnZp
Y2VDb250cm9sbGVyOjpzY3JlZW5SZWN0Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRl
bShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKLXsKLSAgICByZXR1cm4gRmxv
YXRSZWN0KCk7Ci19Ci0KLVJldGFpblB0cjxOU0ltYWdlPiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29u
dHJvbGxlcjo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQotewotICAgIHJldHVybiBuaWw7Ci19Ci0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNmRkNGM0
Yy4uNDM0ZGJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBA
IC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJXZWJBY3Rpb25NZW51Q29udHJvbGxlci5oIgogI2lt
cG9ydCAiV2ViQXJjaGl2ZS5oIgogI2ltcG9ydCAiV2ViQ2xpcFZpZXcuaCIKKyNpbXBvcnQgIldl
YkNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW1wb3J0ICJXZWJET01PcGVyYXRpb25zSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldlYkRhdGFTb3VyY2VJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRGVmYXVs
dFVJRGVsZWdhdGUuaCIKQEAgLTY3LDYgKzY4LDcgQEAKICNpbXBvcnQgIldlYlByZWZlcmVuY2Vz
LmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCIKICNpbXBvcnQgIldlYlJlc291
cmNlUHJpdmF0ZS5oIgorI2ltcG9ydCAiV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVy
LmgiCiAjaW1wb3J0ICJXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldl
YlR5cGVzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCkBAIC02
MjQsNiArNjI2LDggQEAgc3RydWN0IFdlYkhUTUxWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1l
dGVycyB7CiAjaWZuZGVmIE5ERUJVRwogICAgIEJPT0wgZW51bWVyYXRpbmdTdWJ2aWV3czsKICNl
bmRpZgorCisgICAgUmV0YWluUHRyPFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcj4g
Y3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcjsKIH0KIC0gKHZvaWQpY2xlYXI7
CiBAZW5kCkBAIC0zMzU4LDYgKzMzNjIsMjIgQEAgc3RhdGljIHZvaWQgc2V0TWVudVRhcmdldHMo
TlNNZW51KiBtZW51KQogICAgIGlmICghY29yZU1lbnUpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
KyAgICBDb250ZXh0TWVudUNsaWVudCYgY29udGV4dE1lbnVDbGllbnQgPSBwYWdlLT5jb250ZXh0
TWVudUNvbnRyb2xsZXIoKS5jbGllbnQoKTsKKworICAgIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+
IG1lbnVJdGVtVmVjdG9yID0gY29udGV4dE1lbnVJdGVtVmVjdG9yKGNvcmVNZW51LT5wbGF0Zm9y
bURlc2NyaXB0aW9uKCkpOworICAgIGZvciAoYXV0byYgbWVudUl0ZW0gOiBtZW51SXRlbVZlY3Rv
cikgeworICAgICAgICBpZiAobWVudUl0ZW0uYWN0aW9uKCkgIT0gQ29udGV4dE1lbnVJdGVtVGFn
U2hhcmVNZW51KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgTlNNZW51SXRlbSAq
bnNJdGVtID0gbWVudUl0ZW0ucGxhdGZvcm1EZXNjcmlwdGlvbigpOworICAgICAgICBpZiAoIVtu
c0l0ZW0ucmVwcmVzZW50ZWRPYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNTaGFyaW5nU2VydmljZVBp
Y2tlciBjbGFzc11dKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgX3ByaXZhdGUtPmN1cnJlbnRT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFNoYXJpbmdTZXJ2aWNlUGlja2VyOm5z
SXRlbS5yZXByZXNlbnRlZE9iamVjdCBjbGllbnQ6c3RhdGljX2Nhc3Q8V2ViQ29udGV4dE1lbnVD
bGllbnQqPigmY29udGV4dE1lbnVDbGllbnQpXSk7CisgICAgfQorCiAgICAgTlNBcnJheSogbWVu
dUl0ZW1zID0gY29yZU1lbnUtPnBsYXRmb3JtRGVzY3JpcHRpb24oKTsKICAgICBpZiAoIW1lbnVJ
dGVtcykKICAgICAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggZmI4ODBjNC4uYmFmNGRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQwNjAsOCArNDA2MCwxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUoY29uc3QgSW50UG9pbnQmIG1lbnVMb2Nh
dGlvbiwgY29uc3QgQwogICAgICAgICB9CiAKICAgICAgICAgQ29udGV4dE1lbnVJdGVtIGNvcmVJ
dGVtID0gQ29udGV4dE1lbnVJdGVtOjpzaGFyZU1lbnVJdGVtKGFic29sdXRlTGlua1VSTCwgZG93
bmxvYWRhYmxlTWVkaWFVUkwsIGltYWdlLmdldCgpLCBjb250ZXh0TWVudUNvbnRleHREYXRhLnNl
bGVjdGVkVGV4dCgpKTsKLSAgICAgICAgaWYgKCFjb3JlSXRlbS5pc051bGwoKSkKKyAgICAgICAg
aWYgKCFjb3JlSXRlbS5pc051bGwoKSkgeworICAgICAgICAgICAgcGxhdGZvcm1Jbml0aWFsaXpl
U2hhcmVNZW51SXRlbShjb3JlSXRlbSk7CiAgICAgICAgICAgICBwcm9wb3NlZEFQSUl0ZW1zLmFw
cGVuZChXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShjb3JlSXRlbSkpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+PiBjbGllbnRJdGVt
czsKQEAgLTQwNzcsNiArNDA3OSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93
Q29udGV4dE1lbnUoY29uc3QgSW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgQwogICAgIG1f
Y29udGV4dE1lbnVDbGllbnQtPmNvbnRleHRNZW51RGlzbWlzc2VkKCp0aGlzKTsKIH0KIAorI2lm
ICFQTEFURk9STShNQUMpCit2b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplU2hh
cmVNZW51SXRlbShDb250ZXh0TWVudUl0ZW0mKQoreworfQorI2VuZGlmCisKIHZvaWQgV2ViUGFn
ZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1E
YXRhJiBpdGVtKQogewogICAgIC8vIEFwcGxpY2F0aW9uIGN1c3RvbSBpdGVtcyBkb24ndCBuZWVk
IHRvIHJvdW5kLXRyaXAgdGhyb3VnaCB0byBXZWJDb3JlIGluIHRoZSBXZWJQcm9jZXNzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDdkMTEwMjEuLjI3MjEzYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyMzMsNiArMTIz
Myw4IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICB2b2lkIHNob3dDb250ZXh0TWVudShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHRE
YXRhJiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiwgY29uc3QgVXNlckRh
dGEmKTsKICAgICB2b2lkIGludGVybmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25z
dCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mLCBDb250ZXh0TWVudUNsaWVudEVsaWdp
YmlsaXR5LCBjb25zdCBVc2VyRGF0YSYpOworCisgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVT
aGFyZU1lbnVJdGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSYpOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWEzNTQ5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNlUGlj
a2VyRGVsZWdhdGUuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1No
YXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVfaAorI2RlZmluZSBXS1NoYXJpbmdTZXJ2aWNlUGlj
a2VyRGVsZWdhdGVfaAorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJveHlNYWM7Cit9CisKK0BjbGFzcyBOU1No
YXJpbmdTZXJ2aWNlUGlja2VyOworCitAaW50ZXJmYWNlIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJE
ZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1NoYXJpbmdTZXJ2aWNlRGVsZWdhdGUsIE5TU2hhcmluZ1Nl
cnZpY2VQaWNrZXJEZWxlZ2F0ZT4geworICAgIFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1h
YyogX21lbnVQcm94eTsKKyAgICBSZXRhaW5QdHI8TlNTaGFyaW5nU2VydmljZVBpY2tlcj4gX3Bp
Y2tlcjsKKyAgICBCT09MIF9maWx0ZXJFZGl0aW5nU2VydmljZXM7CisgICAgQk9PTCBfaGFuZGxl
RWRpdGluZ1JlcGxhY2VtZW50OworfQorCisrIChXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdh
dGUgKilzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlOworLSAoV2ViS2l0OjpXZWJD
b250ZXh0TWVudVByb3h5TWFjKiltZW51UHJveHk7CistICh2b2lkKXNldE1lbnVQcm94eTooV2Vi
S2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51UHJveHk7CistICh2b2lkKXNldFBpY2tl
cjooTlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXBpY2tlcjsKKy0gKHZvaWQpc2V0RmlsdGVyc0Vk
aXRpbmdTZXJ2aWNlczooQk9PTClmaWx0ZXJzRWRpdGluZ1NlcnZpY2VzOworLSAodm9pZClzZXRI
YW5kbGVzRWRpdGluZ1JlcGxhY2VtZW50OihCT09MKWhhbmRsZXNFZGl0aW5nUmVwbGFjZW1lbnQ7
CitAZW5kCisKKyNlbmRpZiAvLyBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNlUGlj
a2VyRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1Nl
cnZpY2VQaWNrZXJEZWxlZ2F0ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5mNWYwZmU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUubW0KQEAgLTAsMCArMSwxMzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLU2hhcmluZ1NlcnZpY2VQ
aWNrZXJEZWxlZ2F0ZS5oIgorCisjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJX
ZWJDb250ZXh0TWVudVByb3h5TWFjLmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBv
cnQgPFdlYkNvcmUvTlNTaGFyaW5nU2VydmljZVBpY2tlclNQSS5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9OU1NoYXJpbmdTZXJ2aWNlU1BJLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworLy8gRklYTUU6IFdlIHByb2JhYmx5IG5lZWQgdG8gaGFuZyBvbiB0aGUgcGlja2VyIGl0c2Vs
ZiB1bnRpbCB0aGUgY29udGV4dCBtZW51IG9wZXJhdGlvbiBpcyBkb25lLCBhbmQgdGhpcyBvYmpl
Y3Qgd2lsbCBwcm9iYWJseSBkbyB0aGF0LgorQGltcGxlbWVudGF0aW9uIFdLU2hhcmluZ1NlcnZp
Y2VQaWNrZXJEZWxlZ2F0ZQorCisrIChXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUqKXNo
YXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUKK3sKKyAgICBzdGF0aWMgV0tTaGFyaW5n
U2VydmljZVBpY2tlckRlbGVnYXRlKiBkZWxlZ2F0ZSA9IFtbV0tTaGFyaW5nU2VydmljZVBpY2tl
ckRlbGVnYXRlIGFsbG9jXSBpbml0XTsKKyAgICByZXR1cm4gZGVsZWdhdGU7Cit9CisKKy0gKFdl
YktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVudVByb3h5Cit7CisgICAgcmV0dXJuIF9t
ZW51UHJveHk7Cit9CisKKy0gKHZvaWQpc2V0TWVudVByb3h5OihXZWJLaXQ6OldlYkNvbnRleHRN
ZW51UHJveHlNYWMqKW1lbnVQcm94eQoreworICAgIF9tZW51UHJveHkgPSBtZW51UHJveHk7Cit9
CisKKy0gKHZvaWQpc2V0UGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICopcGlja2VyCit7
CisgICAgX3BpY2tlciA9IHBpY2tlcjsKK30KKworLSAodm9pZClzZXRGaWx0ZXJzRWRpdGluZ1Nl
cnZpY2VzOihCT09MKWZpbHRlcnNFZGl0aW5nU2VydmljZXMKK3sKKyAgICBfZmlsdGVyRWRpdGlu
Z1NlcnZpY2VzID0gZmlsdGVyc0VkaXRpbmdTZXJ2aWNlczsKK30KKworLSAodm9pZClzZXRIYW5k
bGVzRWRpdGluZ1JlcGxhY2VtZW50OihCT09MKWhhbmRsZXNFZGl0aW5nUmVwbGFjZW1lbnQKK3sK
KyAgICBfaGFuZGxlRWRpdGluZ1JlcGxhY2VtZW50ID0gaGFuZGxlc0VkaXRpbmdSZXBsYWNlbWVu
dDsKK30KKworLSAoTlNBcnJheSAqKXNoYXJpbmdTZXJ2aWNlUGlja2VyOihOU1NoYXJpbmdTZXJ2
aWNlUGlja2VyICopc2hhcmluZ1NlcnZpY2VQaWNrZXIgc2hhcmluZ1NlcnZpY2VzRm9ySXRlbXM6
KE5TQXJyYXkgKilpdGVtcyBtYXNrOihOU1NoYXJpbmdTZXJ2aWNlTWFzayltYXNrIHByb3Bvc2Vk
U2hhcmluZ1NlcnZpY2VzOihOU0FycmF5ICopcHJvcG9zZWRTZXJ2aWNlcworeworICAgIGlmICgh
X2ZpbHRlckVkaXRpbmdTZXJ2aWNlcykKKyAgICAgICAgcmV0dXJuIHByb3Bvc2VkU2VydmljZXM7
CisKKyAgICBOU011dGFibGVBcnJheSAqc2VydmljZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5Oltwcm9wb3NlZFNlcnZpY2VzIGNvdW50XV07CisgICAgCisgICAg
Zm9yIChOU1NoYXJpbmdTZXJ2aWNlICpzZXJ2aWNlIGluIHByb3Bvc2VkU2VydmljZXMpIHsKKyAg
ICAgICAgaWYgKHNlcnZpY2UudHlwZSAhPSBOU1NoYXJpbmdTZXJ2aWNlVHlwZUVkaXRvcikKKyAg
ICAgICAgICAgIFtzZXJ2aWNlcyBhZGRPYmplY3Q6c2VydmljZV07CisgICAgfQorICAgIAorICAg
IHJldHVybiBzZXJ2aWNlczsKK30KKworLSAoaWQgPE5TU2hhcmluZ1NlcnZpY2VEZWxlZ2F0ZT4p
c2hhcmluZ1NlcnZpY2VQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgKilzaGFyaW5nU2Vy
dmljZVBpY2tlciBkZWxlZ2F0ZUZvclNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICop
c2hhcmluZ1NlcnZpY2UKK3sKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClzaGFyaW5n
U2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlIHdpbGxTaGFyZUl0ZW1z
OihOU0FycmF5ICopaXRlbXMKK3sKKyAgICBfbWVudVByb3h5LT5jbGVhclNlcnZpY2VzTWVudSgp
OworfQorCistICh2b2lkKXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmlu
Z1NlcnZpY2UgZGlkU2hhcmVJdGVtczooTlNBcnJheSAqKWl0ZW1zCit7CisgICAgLy8gV2Ugb25s
eSBjYXJlIGFib3V0IHdoYXQgaXRlbSB3YXMgc2hhcmVkIGlmIHdlIHdlcmUgaW50ZXJlc3RlZCBp
biBlZGl0b3Igc2VydmljZXMKKyAgICAvLyAoaS5lLiwgaWYgd2UgcGxhbiBvbiByZXBsYWNpbmcg
dGhlIHNlbGVjdGlvbiB3aXRoIHRoZSByZXR1cm5lZCBpdGVtKQorICAgIGlmICghX2hhbmRsZUVk
aXRpbmdSZXBsYWNlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFN0cmluZz4g
dHlwZXM7CisgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisKKyAgICBpZCBp
dGVtID0gW2l0ZW1zIG9iamVjdEF0SW5kZXg6MF07CisKKyAgICBpZiAoW2l0ZW0gaXNLaW5kT2ZD
bGFzczpbTlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAgTlNEYXRhICpkYXRh
ID0gW2l0ZW0gUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBbaXRlbSBsZW5ndGhdKSBkb2N1
bWVudEF0dHJpYnV0ZXM6bmlsXTsKKyAgICAgICAgZGF0YVJlZmVyZW5jZSA9IElQQzo6RGF0YVJl
ZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEg
bGVuZ3RoXSk7CisKKyAgICAgICAgdHlwZXMuYXBwZW5kKE5TUGFzdGVib2FyZFR5cGVSVEZEKTsK
KyAgICAgICAgdHlwZXMuYXBwZW5kKE5TUlRGRFBib2FyZFR5cGUpOworICAgIH0gZWxzZSBpZiAo
W2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pIHsKKyAgICAgICAgTlNEYXRhICpk
YXRhID0gKE5TRGF0YSAqKWl0ZW07CisgICAgICAgIFJldGFpblB0cjxDR0ltYWdlU291cmNlUmVm
PiBzb3VyY2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoRGF0YSgoQ0ZEYXRhUmVm
KWRhdGEsIE5VTEwpKTsKKyAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYWRv
cHRDRihDR0ltYWdlU291cmNlQ3JlYXRlSW1hZ2VBdEluZGV4KHNvdXJjZS5nZXQoKSwgMCwgTlVM
TCkpOworCisgICAgICAgIGlmICghaW1hZ2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgZGF0YVJlZmVyZW5jZSA9IElQQzo6RGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgICAgIHR5cGVzLmFw
cGVuZChOU1Bhc3RlYm9hcmRUeXBlVElGRik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTE9HX0VS
Uk9SKCJzaGFyaW5nU2VydmljZTpkaWRTaGFyZUl0ZW1zOiAtIFVua25vd24gaXRlbSB0eXBlIHJl
dHVybmVkXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgYWRvcHQgcmVwbGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nIGluc3RlYWQg
b2YgYm91bmNpbmcgdGhyb3VnaCB0aGUgKGZha2UpIHBhc3RlYm9hcmQuCisgICAgX21lbnVQcm94
eS0+cGFnZSgpLnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlwZXMsIGRhdGFS
ZWZlcmVuY2UpOworfQorCistIChOU1dpbmRvdyAqKXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdT
ZXJ2aWNlICopc2hhcmluZ1NlcnZpY2Ugc291cmNlV2luZG93Rm9yU2hhcmVJdGVtczooTlNBcnJh
eSAqKWl0ZW1zIHNoYXJpbmdDb250ZW50U2NvcGU6KE5TU2hhcmluZ0NvbnRlbnRTY29wZSAqKXNo
YXJpbmdDb250ZW50U2NvcGUKK3sKKyAgICByZXR1cm4gX21lbnVQcm94eS0+d2luZG93KCk7Cit9
CisKK0BlbmQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJD
b250ZXh0TWVudVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJD
b250ZXh0TWVudVByb3h5TWFjLm1tCmluZGV4IDU1ODBlZDEuLjUxM2VhMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMu
bW0KQEAgLTM0LDEwICszNCwxMSBAQAogI2ltcG9ydCAiU2VydmljZXNDb250cm9sbGVyLmgiCiAj
aW1wb3J0ICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbXBvcnQgIlN0cmluZ1V0aWxpdGllcy5oIgor
I2ltcG9ydCAiV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmgiCisjaW1wb3J0ICJXS1Zp
ZXcuaCIKICNpbXBvcnQgIldlYkNvbnRleHRNZW51SXRlbS5oIgogI2ltcG9ydCAiV2ViQ29udGV4
dE1lbnVJdGVtRGF0YS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW1wb3J0ICJX
S1ZpZXcuaCIKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ludFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvTlNTaGFyaW5nU2VydmljZVBpY2tl
clNQSS5oPgpAQCAtMTQ3LDExOSArMTQ4LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IEBlbmQKIAotI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQotQGludGVyZmFjZSBXS1NoYXJp
bmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgOiBOU09iamVjdCA8TlNTaGFyaW5nU2VydmljZURlbGVn
YXRlLCBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGU+IHsKLSAgICBXZWJLaXQ6OldlYkNv
bnRleHRNZW51UHJveHlNYWMqIF9tZW51UHJveHk7Ci0gICAgUmV0YWluUHRyPE5TU2hhcmluZ1Nl
cnZpY2VQaWNrZXI+IF9waWNrZXI7Ci0gICAgQk9PTCBfaW5jbHVkZUVkaXRvclNlcnZpY2VzOwot
fQotCi0rIChXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgKilzaGFyZWRTaGFyaW5nU2Vy
dmljZVBpY2tlckRlbGVnYXRlOwotLSAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKilt
ZW51UHJveHk7Ci0tICh2b2lkKXNldE1lbnVQcm94eTooV2ViS2l0OjpXZWJDb250ZXh0TWVudVBy
b3h5TWFjKiltZW51UHJveHk7Ci0tICh2b2lkKXNldFBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBp
Y2tlciAqKXBpY2tlcjsKLS0gKHZvaWQpc2V0SW5jbHVkZUVkaXRvclNlcnZpY2VzOihCT09MKWlu
Y2x1ZGVFZGl0b3JTZXJ2aWNlczsKLUBlbmQKLQotLy8gRklYTUU6IFdlIHByb2JhYmx5IG5lZWQg
dG8gaGFuZyBvbiB0aGUgcGlja2VyIGl0c2VsZiB1bnRpbCB0aGUgY29udGV4dCBtZW51IG9wZXJh
dGlvbiBpcyBkb25lLCBhbmQgdGhpcyBvYmplY3Qgd2lsbCBwcm9iYWJseSBkbyB0aGF0LgotQGlt
cGxlbWVudGF0aW9uIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZQotKyAoV0tTaGFyaW5n
U2VydmljZVBpY2tlckRlbGVnYXRlKilzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRl
Ci17Ci0gICAgc3RhdGljIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSogZGVsZWdhdGUg
PSBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0gICAgcmV0
dXJuIGRlbGVnYXRlOwotfQotCi0tIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1l
bnVQcm94eQotewotICAgIHJldHVybiBfbWVudVByb3h5OwotfQotCi0tICh2b2lkKXNldE1lbnVQ
cm94eTooV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51UHJveHkKLXsKLSAgICBf
bWVudVByb3h5ID0gbWVudVByb3h5OwotfQotCi0tICh2b2lkKXNldFBpY2tlcjooTlNTaGFyaW5n
U2VydmljZVBpY2tlciAqKXBpY2tlcgotewotICAgIF9waWNrZXIgPSBwaWNrZXI7Ci19Ci0KLS0g
KHZvaWQpc2V0SW5jbHVkZUVkaXRvclNlcnZpY2VzOihCT09MKWluY2x1ZGVFZGl0b3JTZXJ2aWNl
cwotewotICAgIF9pbmNsdWRlRWRpdG9yU2VydmljZXMgPSBpbmNsdWRlRWRpdG9yU2VydmljZXM7
Ci19Ci0KLS0gKE5TQXJyYXkgKilzaGFyaW5nU2VydmljZVBpY2tlcjooTlNTaGFyaW5nU2Vydmlj
ZVBpY2tlciAqKXNoYXJpbmdTZXJ2aWNlUGlja2VyIHNoYXJpbmdTZXJ2aWNlc0Zvckl0ZW1zOihO
U0FycmF5ICopaXRlbXMgbWFzazooTlNTaGFyaW5nU2VydmljZU1hc2spbWFzayBwcm9wb3NlZFNo
YXJpbmdTZXJ2aWNlczooTlNBcnJheSAqKXByb3Bvc2VkU2VydmljZXMKLXsKLSAgICBpZiAoX2lu
Y2x1ZGVFZGl0b3JTZXJ2aWNlcykKLSAgICAgICAgcmV0dXJuIHByb3Bvc2VkU2VydmljZXM7Ci0K
LSAgICBOU011dGFibGVBcnJheSAqc2VydmljZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aENhcGFjaXR5Oltwcm9wb3NlZFNlcnZpY2VzIGNvdW50XV07Ci0gICAgCi0gICAgZm9y
IChOU1NoYXJpbmdTZXJ2aWNlICpzZXJ2aWNlIGluIHByb3Bvc2VkU2VydmljZXMpIHsKLSAgICAg
ICAgaWYgKHNlcnZpY2UudHlwZSAhPSBOU1NoYXJpbmdTZXJ2aWNlVHlwZUVkaXRvcikKLSAgICAg
ICAgICAgIFtzZXJ2aWNlcyBhZGRPYmplY3Q6c2VydmljZV07Ci0gICAgfQotICAgIAotICAgIHJl
dHVybiBzZXJ2aWNlczsKLX0KLQotLSAoaWQgPE5TU2hhcmluZ1NlcnZpY2VEZWxlZ2F0ZT4pc2hh
cmluZ1NlcnZpY2VQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgKilzaGFyaW5nU2Vydmlj
ZVBpY2tlciBkZWxlZ2F0ZUZvclNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hh
cmluZ1NlcnZpY2UKLXsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClzaGFyaW5nU2Vy
dmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlIHdpbGxTaGFyZUl0ZW1zOihO
U0FycmF5ICopaXRlbXMKLXsKLSAgICBfbWVudVByb3h5LT5jbGVhclNlcnZpY2VzTWVudSgpOwot
fQotCi0tICh2b2lkKXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1Nl
cnZpY2UgZGlkU2hhcmVJdGVtczooTlNBcnJheSAqKWl0ZW1zCi17Ci0gICAgLy8gV2Ugb25seSBj
YXJlIGFib3V0IHdoYXQgaXRlbSB3YXMgc2hhcmVkIGlmIHdlIHdlcmUgaW50ZXJlc3RlZCBpbiBl
ZGl0b3Igc2VydmljZXMKLSAgICAvLyAoaS5lLiwgaWYgd2UgcGxhbiBvbiByZXBsYWNpbmcgdGhl
IHNlbGVjdGlvbiB3aXRoIHRoZSByZXR1cm5lZCBpdGVtKQotICAgIGlmICghX2luY2x1ZGVFZGl0
b3JTZXJ2aWNlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7
Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0KLSAgICBpZCBpdGVtID0g
W2l0ZW1zIG9iamVjdEF0SW5kZXg6MF07Ci0KLSAgICBpZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpb
TlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAgTlNEYXRhICpkYXRhID0gW2l0
ZW0gUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBbaXRlbSBsZW5ndGhdKSBkb2N1bWVudEF0
dHJpYnV0ZXM6bmlsXTsKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IElQQzo6RGF0YVJlZmVyZW5j
ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3Ro
XSk7Ci0KLSAgICAgICAgdHlwZXMuYXBwZW5kKE5TUGFzdGVib2FyZFR5cGVSVEZEKTsKLSAgICAg
ICAgdHlwZXMuYXBwZW5kKE5TUlRGRFBib2FyZFR5cGUpOwotICAgIH0gZWxzZSBpZiAoW2l0ZW0g
aXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pIHsKLSAgICAgICAgTlNEYXRhICpkYXRhID0g
KE5TRGF0YSAqKWl0ZW07Ci0gICAgICAgIFJldGFpblB0cjxDR0ltYWdlU291cmNlUmVmPiBzb3Vy
Y2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoRGF0YSgoQ0ZEYXRhUmVmKWRhdGEs
IE5VTEwpKTsKLSAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYWRvcHRDRihD
R0ltYWdlU291cmNlQ3JlYXRlSW1hZ2VBdEluZGV4KHNvdXJjZS5nZXQoKSwgMCwgTlVMTCkpOwot
Ci0gICAgICAgIGlmICghaW1hZ2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZGF0
YVJlZmVyZW5jZSA9IElQQzo6RGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7Ci0gICAgICAgIHR5cGVzLmFwcGVuZChO
U1Bhc3RlYm9hcmRUeXBlVElGRik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgTE9HX0VSUk9SKCJz
aGFyaW5nU2VydmljZTpkaWRTaGFyZUl0ZW1zOiAtIFVua25vd24gaXRlbSB0eXBlIHJldHVybmVk
XG4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
YWRvcHQgcmVwbGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nIGluc3RlYWQgb2YgYm91
bmNpbmcgdGhyb3VnaCB0aGUgKGZha2UpIHBhc3RlYm9hcmQuCi0gICAgX21lbnVQcm94eS0+cGFn
ZSgpLnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlwZXMsIGRhdGFSZWZlcmVu
Y2UpOwotfQotCi0tIChOU1dpbmRvdyAqKXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNl
ICopc2hhcmluZ1NlcnZpY2Ugc291cmNlV2luZG93Rm9yU2hhcmVJdGVtczooTlNBcnJheSAqKWl0
ZW1zIHNoYXJpbmdDb250ZW50U2NvcGU6KE5TU2hhcmluZ0NvbnRlbnRTY29wZSAqKXNoYXJpbmdD
b250ZW50U2NvcGUKLXsKLSAgICByZXR1cm4gX21lbnVQcm94eS0+d2luZG93KCk7Ci19Ci0KLUBl
bmQKLQotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJDb250ZXh0TWVudVByb3h5
TWFjOjpXZWJDb250ZXh0TWVudVByb3h5TWFjKFdLVmlldyogd2ViVmlldywgV2ViUGFnZVByb3h5
KiBwYWdlKQpAQCAtMzkyLDcgKzI4MCw4IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6
c2V0dXBTZXJ2aWNlc01lbnUoY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYgY29uCiAgICAg
W3BpY2tlciBzZXRTdHlsZTpoYXNDb250cm9sbGVkSW1hZ2UgPyBOU1NoYXJpbmdTZXJ2aWNlUGlj
a2VyU3R5bGVSb2xsb3ZlciA6IE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZVRleHRTZWxlY3Rp
b25dOwogICAgIFtwaWNrZXIgc2V0RGVsZWdhdGU6W1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxl
Z2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXV07CiAgICAgW1tXS1NoYXJp
bmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0
ZV0gc2V0UGlja2VyOnBpY2tlci5nZXQoKV07Ci0gICAgW1tXS1NoYXJpbmdTZXJ2aWNlUGlja2Vy
RGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV0gc2V0SW5jbHVkZUVk
aXRvclNlcnZpY2VzOmluY2x1ZGVFZGl0b3JTZXJ2aWNlc107CisgICAgW1tXS1NoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV0gc2V0
RmlsdGVyc0VkaXRpbmdTZXJ2aWNlczohaW5jbHVkZUVkaXRvclNlcnZpY2VzXTsKKyAgICBbW1dL
U2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRl
bGVnYXRlXSBzZXRIYW5kbGVzRWRpdGluZ1JlcGxhY2VtZW50OmluY2x1ZGVFZGl0b3JTZXJ2aWNl
c107CiAKICAgICBtX3NlcnZpY2VzTWVudSA9IGFkb3B0TlMoW1twaWNrZXIgbWVudV0gY29weV0p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CmluZGV4IGUzOGI5ZmYuLjlhMTQxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC00Myw2ICs0Myw4IEBACiAjaW1wb3J0ICJTdHJp
bmdVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRleHRDaGVja2VyLmgiCiAjaW1wb3J0ICJXS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tTaGFyaW5nU2Vydmlj
ZVBpY2tlckRlbGVnYXRlLmgiCisjaW1wb3J0ICJXZWJDb250ZXh0TWVudVByb3h5TWFjLmgiCiAj
aW1wb3J0ICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgog
I2ltcG9ydCA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgpAQCAtNzQ1LDYgKzc0Nywy
MSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZWRpdG9yU3RhdGVDaGFuZ2VkKGNvbnN0IEVkaXRvclN0
YXRlJiBlZGl0b3JTdGF0ZSkKICAgICB9CiAjZW5kaWYKIH0KKwordm9pZCBXZWJQYWdlUHJveHk6
OnBsYXRmb3JtSW5pdGlhbGl6ZVNoYXJlTWVudUl0ZW0oQ29udGV4dE1lbnVJdGVtJiBpdGVtKQor
eworICAgIE5TTWVudUl0ZW0gKm5zSXRlbSA9IGl0ZW0ucGxhdGZvcm1EZXNjcmlwdGlvbigpOwor
CisgICAgTlNTaGFyaW5nU2VydmljZVBpY2tlciAqc2hhcmluZ1NlcnZpY2VQaWNrZXIgPSBbbnNJ
dGVtIHJlcHJlc2VudGVkT2JqZWN0XTsKKyAgICBzaGFyaW5nU2VydmljZVBpY2tlci5kZWxlZ2F0
ZSA9IFtXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZpY2VQ
aWNrZXJEZWxlZ2F0ZV07CisgICAgCisgICAgW1tXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdh
dGUgc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV0gc2V0RmlsdGVyc0VkaXRpbmdT
ZXJ2aWNlczpOT107CisgICAgW1tXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVk
U2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV0gc2V0SGFuZGxlc0VkaXRpbmdSZXBsYWNlbWVu
dDpOT107CisgICAgW1tXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hhcmlu
Z1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV0gc2V0TWVudVByb3h5OnN0YXRpY19jYXN0PFdlYkNvbnRl
eHRNZW51UHJveHlNYWMqPihtX2FjdGl2ZUNvbnRleHRNZW51LmdldCgpKV07CisKKyAgICAvLyBT
ZXR0aW5nIHRoZSBwaWNrZXIgbGV0cyB0aGUgZGVsZWdhdGUgcmV0YWluIGl0IHRvIGtlZXAgaXQg
YWxpdmUsIGJ1dCB0aGlzIHBpY2tlciBpcyBrZXB0IGFsaXZlIGJ5IHRoZSBtZW51IGl0ZW0uCisg
ICAgW1tXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZpY2VQ
aWNrZXJEZWxlZ2F0ZV0gc2V0UGlja2VyOm5pbF07Cit9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDZkODI2NmEuLjJkMzQ0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkyNSw2ICs5MjUsOCBAQAogCQk1
MTNBMTYzRDE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNBMTYzQjE2
MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmggKi87IH07CiAJ
CTUxM0ExNjRDMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNB
MTY0OTE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
ICovOyB9OwogCQk1MTNBMTY0RDE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxM0ExNjRBMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oICovOyB9OworCQk1MTNFNDYyRDFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2Vy
dmljZVBpY2tlckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTNFNDYyQjFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBp
Y2tlckRlbGVnYXRlLmggKi87IH07CisJCTUxM0U0NjJFMUFEODM3NTYwMDE2MjM0QSAvKiBXS1No
YXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNFNDYyQzFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5n
U2VydmljZVBpY2tlckRlbGVnYXRlLm1tICovOyB9OwogCQk1MTRCREVEMzE2Qzk4RUREMDBFNEUy
NUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNEJERUQyMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVx
dWVzdC5oICovOyB9OwogCQk1MTREOUY1NzE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggKi87IH07CiAJ
CTUxNEQ5RjU4MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTREOUY1NjE5MTE5RDM1
MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLm1tICovOyB9OwpAQCAtMzExNSw2ICszMTE3
LDggQEAKIAkJNTEzQTE2NDkxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTEzQTE2NEExNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTNBMTY0QjE2MzBB
OUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW47IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEzRTQ2MkIx
QUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEzRTQ2MkMxQUQ4Mzc1NjAwMTYy
MzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0QkRFRDIxNkM5OEVERDAwRTRFMjVF
IC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0YXRpc3RpY3NSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEQ5
RjU1MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZXNDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNEQ5RjU2MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRy
b2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXJ2aWNl
c0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDYzLDYgKzcw
NjcsOCBAQAogCQkJCTBGQ0I0RTVEMThCQkUzRDkwMDBGQ0ZDOSAvKiBXS1ByaW50aW5nVmlldy5t
bSAqLywKIAkJCQkwRkNCNEU1RTE4QkJFM0Q5MDAwRkNGQzkgLyogV0tUZXh0SW5wdXRXaW5kb3dD
b250cm9sbGVyLmggKi8sCiAJCQkJMEZDQjRFNUYxOEJCRTNEOTAwMEZDRkM5IC8qIFdLVGV4dElu
cHV0V2luZG93Q29udHJvbGxlci5tbSAqLywKKwkJCQk1MTNFNDYyQjFBRDgzNzU2MDAxNjIzNEEg
LyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggKi8sCisJCQkJNTEzRTQ2MkMxQUQ4
Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5tbSAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc5MzUs
NiArNzk0MSw3IEBACiAJCQkJMUE1RTREQTQxMkQzQkQzRDAwOTlBMkJCIC8qIFRleHRDaGVja2Vy
U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMUEwQkQ3MUE0OEU2QzYwMDU0RUY3NCAvKiBU
ZXh0SW5wdXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUYyNjM5MTQ2ODdDMzkwMDRBMUU4
QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTEzRTQ2MkQxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMDVEODcxNDY4ODM0ODAwOEIxRTgxIC8qIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkU0
MzY2MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RUU0QUUyQjFBNURDRjQzMDAwMkY0OUIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICovLApAQCAt
OTg2NCw2ICs5ODcxLDcgQEAKIAkJCQkzMUEyRUM0ODE0ODk5N0MyMDA4MTBENzEgLyogV2ViTm90
aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMDk5OTczMTQ2Qzc1QTIwMDI5REVC
OSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEzMTI2
MjAxNDhGRjgyQzAwQkEyQTM5IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTEzRTQ2MkUxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQ
aWNrZXJEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxQkE5MjREMTQ4ODMxMjYwMDYy
RURCNSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMxQTJFQzRBMTQ4OTk3QzIwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFBMkVDNEQxNDg5OTdDMjAwODEw
RDcxIC8qIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>
<flag name="review"
          id="275333"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250650</attachid>
            <date>2015-04-13 10:19:51 -0700</date>
            <delta_ts>2015-04-13 11:06:11 -0700</delta_ts>
            <desc>Patch v3 - Review feedback and fixing older builds</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>36244</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCmluZGV4IDM1NzM5
ZDguLjBmNTg1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgfkNvbnRleHRNZW51Q29udHJvbGxl
cigpOwogCiAgICAgUGFnZSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIENvbnRleHRN
ZW51Q2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCiAgICAgQ29udGV4dE1l
bnUqIGNvbnRleHRNZW51KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0TWVudS5nZXQoKTsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDb250ZXh0TWVudSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9s
bGVyLmgKaW5kZXggYTNjYmNiMS4uOTBlZjMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oCkBAIC0y
MywxMyArMjMsMTUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi0KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKworI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQgPFdlYkNvcmUvTlNTaGFyaW5nU2Vydmlj
ZVBpY2tlclNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OU1NoYXJpbmdTZXJ2aWNlU1BJLmg+Cisj
ZW5kaWYKIAogQGNsYXNzIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcjsKK0BjbGFz
cyBXZWJWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9hdFJlY3Q7CkBAIC00
MiwyNSArNDQsMzEgQEAgY2xhc3MgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgfldlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KCkgeyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0cm95ZWQoV2Vi
U2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpID0gMDsKLSAgICB2aXJ0dWFsIFdlYkNv
cmU6OlBhZ2UqIHBhZ2VGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBp
Y2tlckNvbnRyb2xsZXIgJikgPSAwOwotICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TV2luZG93PiB3
aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIgJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzaGFyaW5nU2VydmljZVBpY2tlcldpbGxC
ZURlc3Ryb3llZChXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJik7CisgICAgdmly
dHVhbCBXZWJDb3JlOjpQYWdlKiBwYWdlRm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpOworICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TV2lu
ZG93PiB3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tl
ckNvbnRyb2xsZXIgJik7CisKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBzY3JlZW5S
ZWN0Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBp
Y2tlckNvbnRyb2xsZXIgJik7CisgICAgdmlydHVhbCBSZXRhaW5QdHI8TlNJbWFnZT4gaW1hZ2VG
b3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2Vy
Q29udHJvbGxlciAmKTsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHNjcmVlblJl
Y3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlj
a2VyQ29udHJvbGxlciAmKSA9IDA7Ci0gICAgdmlydHVhbCBSZXRhaW5QdHI8TlNJbWFnZT4gaW1h
Z2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlj
a2VyQ29udHJvbGxlciAmKSA9IDA7Citwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDbGllbnQoV2ViVmlldyAqKTsKKyAgICBXZWJWaWV3ICptX3dlYlZpZXc7
CiB9OwogCiBAaW50ZXJmYWNlIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciA6IE5T
T2JqZWN0IDxOU1NoYXJpbmdTZXJ2aWNlRGVsZWdhdGUsIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJE
ZWxlZ2F0ZT4gewogICAgIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KiBfcGlja2VyQ2xp
ZW50OwogICAgIFJldGFpblB0cjxOU1NoYXJpbmdTZXJ2aWNlUGlja2VyPiBfcGlja2VyOwogICAg
IEJPT0wgX2luY2x1ZGVFZGl0b3JTZXJ2aWNlczsKKyAgICBCT09MIF9oYW5kbGVFZGl0aW5nUmVw
bGFjZW1lbnQ7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aEl0ZW1zOihOU0FycmF5ICopaXRlbXMgaW5jbHVkZUVkaXRvclNlcnZpY2Vz
OihCT09MKWluY2x1ZGVFZGl0b3JTZXJ2aWNlcyBjbGllbnQ6KFdlYlNoYXJpbmdTZXJ2aWNlUGlj
a2VyQ2xpZW50KilwaWNrZXJDbGllbnQgc3R5bGU6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHls
ZSlzdHlsZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNoYXJpbmdTZXJ2aWNlUGlja2VyOihO
U1NoYXJpbmdTZXJ2aWNlUGlja2VyICopc2hhcmluZ1NlcnZpY2VQaWNrZXIgY2xpZW50OihXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNsaWVudCYpcGlja2VyQ2xpZW50OworI2VuZGlmCiAtIChOU01l
bnUgKiltZW51OwogLSAodm9pZClkaWRTaGFyZUltYWdlRGF0YTooTlNEYXRhICopZGF0YSBjb25m
aXJtRGF0YUlzVmFsaWRUSUZGRGF0YTooQk9PTCljb25maXJtRGF0YTsKIC0gKHZvaWQpY2xlYXI7
CiAKIEBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01p
c2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCmluZGV4IDM0Nzg3YmEuLjQ4
OTlkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCkBAIC0yNSw4ICsyNSw2IEBACiAKICNpbXBv
cnQgIldlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oIgogCi0jaWYgRU5BQkxFKFNF
UlZJQ0VfQ09OVFJPTFMpCi0KICNpbXBvcnQgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW1w
b3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4K
QEAgLTQyLDYgKzQwLDM1IEBAIHN0YXRpYyBOU1N0cmluZyAqc2VydmljZUNvbnRyb2xzUGFzdGVi
b2FyZE5hbWUgPSBAIldlYktpdFNlcnZpY2VDb250cm9sc1Bhc3RlYm9hCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCitXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudDo6V2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDbGllbnQoV2ViVmlldyAqd2ViVmlldykKKyAgICA6IG1fd2ViVmlldyh3
ZWJWaWV3KQoreworfQorCit2b2lkIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50OjpzaGFy
aW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChXZWJTaGFyaW5nU2VydmljZVBpY2tlckNv
bnRyb2xsZXIgJikKK3sKK30KKworUGFnZSogV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQ6
OnBhZ2VGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIgJikKK3sKKyAgICByZXR1cm4gW21fd2ViVmlldyBwYWdlXTsKK30KKworUmV0YWluUHRy
PE5TV2luZG93PiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudDo6d2luZG93Rm9yU2hhcmlu
Z1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCit7Cisg
ICAgcmV0dXJuIFttX3dlYlZpZXcgd2luZG93XTsKK30KKworRmxvYXRSZWN0IFdlYlNoYXJpbmdT
ZXJ2aWNlUGlja2VyQ2xpZW50OjpzY3JlZW5SZWN0Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlj
a2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKK3sKKyAgICByZXR1
cm4gRmxvYXRSZWN0KCk7Cit9CisKK1JldGFpblB0cjxOU0ltYWdlPiBXZWJTaGFyaW5nU2Vydmlj
ZVBpY2tlckNsaWVudDo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQoreworICAgIHJldHVybiBuaWw7Cit9
CisKIEBpbXBsZW1lbnRhdGlvbiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIKIAog
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSXRlbXM6KE5TQXJyYXkgKilpdGVtcyBpbmNsdWRlRWRp
dG9yU2VydmljZXM6KEJPT0wpaW5jbHVkZUVkaXRvclNlcnZpY2VzIGNsaWVudDooV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDbGllbnQqKXBpY2tlckNsaWVudCBzdHlsZTooTlNTaGFyaW5nU2Vydmlj
ZVBpY2tlclN0eWxlKXN0eWxlCkBAIC01NywxMiArODQsMzEgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAgICAgW19waWNrZXIgc2V0RGVsZWdhdGU6c2VsZl07CiAKICAgICBfaW5jbHVkZUVk
aXRvclNlcnZpY2VzID0gaW5jbHVkZUVkaXRvclNlcnZpY2VzOworICAgIF9oYW5kbGVFZGl0aW5n
UmVwbGFjZW1lbnQgPSBpbmNsdWRlRWRpdG9yU2VydmljZXM7CiAgICAgX3BpY2tlckNsaWVudCA9
IHBpY2tlckNsaWVudDsKIAogICAgIHJldHVybiBzZWxmOwogI2VuZGlmCiB9CiAKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFNoYXJpbmdTZXJ2aWNlUGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlj
a2VyICopc2hhcmluZ1NlcnZpY2VQaWNrZXIgY2xpZW50OihXZWJTaGFyaW5nU2VydmljZVBpY2tl
ckNsaWVudCYpcGlja2VyQ2xpZW50Cit7CisjaWZuZGVmIF9fTFA2NF9fCisgICAgcmV0dXJuIG5p
bDsKKyNlbHNlCisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVy
biBuaWw7CisKKyAgICBfcGlja2VyID0gc2hhcmluZ1NlcnZpY2VQaWNrZXI7CisgICAgW19waWNr
ZXIgc2V0RGVsZWdhdGU6c2VsZl07CisKKyAgICBfaW5jbHVkZUVkaXRvclNlcnZpY2VzID0gWUVT
OworICAgIF9waWNrZXJDbGllbnQgPSAmcGlja2VyQ2xpZW50OworCisgICAgcmV0dXJuIHNlbGY7
CisjZW5kaWYKK30KKwogLSAodm9pZCljbGVhcgogewogICAgIC8vIFByb3RlY3Qgc2VsZiBmcm9t
IGJlaW5nIGRlYWxsb2MnZWQgcGFydHdheSB0aHJvdWdoIHRoaXMgbWV0aG9kLgpAQCAtMTQwLDkg
KzE4Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAtICh2b2lkKXNoYXJpbmdTZXJ2
aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2UgZGlkU2hhcmVJdGVtczooTlNB
cnJheSAqKWl0ZW1zCiB7Ci0gICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IHdoYXQgaXRlbSB3YXMg
c2hhcmVkIGlmIHdlIHdlcmUgaW50ZXJlc3RlZCBpbiBlZGl0b3Igc2VydmljZXMKLSAgICAvLyAo
aS5lLiwgaWYgd2UgcGxhbiBvbiByZXBsYWNpbmcgdGhlIHNlbGVjdGlvbiB3aXRoIHRoZSByZXR1
cm5lZCBpdGVtKQotICAgIGlmICghX2luY2x1ZGVFZGl0b3JTZXJ2aWNlcykKKyAgICBpZiAoIV9o
YW5kbGVFZGl0aW5nUmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIG9u
bHkgc2VuZCBvbmUgaXRlbSwgc28gd2Ugc2hvdWxkIG9ubHkgZ2V0IG9uZSBpdGVtIGJhY2suCkBA
IC0yMTAsNSArMjU0LDMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB9CiAKIEBlbmQKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaAppbmRleCAxOTRlMjA2Li5iNDM2NDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
LmgKQEAgLTM3LDExICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5vZGU7CiB9
CiAKLWNsYXNzIFdlYkNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNvbnRleHRN
ZW51Q2xpZW50Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi0sIHB1YmxpYyBXZWJTaGFy
aW5nU2VydmljZVBpY2tlckNsaWVudAotI2VuZGlmCi17CitjbGFzcyBXZWJDb250ZXh0TWVudUNs
aWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCwgcHVibGljIFdlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBXZWJDb250ZXh0TWVudUNsaWVu
dChXZWJWaWV3ICp3ZWJWaWV3KTsKICAgICB2aXJ0dWFsIH5XZWJDb250ZXh0TWVudUNsaWVudCgp
OwpAQCAtNjQsOCArNjAsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMp
CiAgICAgLy8gV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQg
c2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0cm95ZWQoV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogcGFn
ZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ciAmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93Rm9y
U2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHNjcmVlblJlY3RGb3JD
dXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29u
dHJvbGxlciAmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJldGFpblB0cjxOU0ltYWdlPiBpbWFn
ZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC03Nyw3ICs3MSw2IEBAIHByaXZh
dGU6CiAKICAgICBib29sIGNsaWVudEZsb2F0UmVjdEZvck5vZGUoV2ViQ29yZTo6Tm9kZSYsIFdl
YkNvcmU6OkZsb2F0UmVjdCYpIGNvbnN0OwogCi0gICAgV2ViVmlldyAqbV93ZWJWaWV3OwogI2lm
IEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgIFJldGFpblB0cjxXZWJTaGFyaW5nU2Vydmlj
ZVBpY2tlckNvbnRyb2xsZXI+IG1fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IDcwZTI5NDQuLjgzMGU0ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lm1tCkBAIC02OCw3ICs2OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogQGVuZAogCiBX
ZWJDb250ZXh0TWVudUNsaWVudDo6V2ViQ29udGV4dE1lbnVDbGllbnQoV2ViVmlldyAqd2ViVmll
dykgCi0gICAgOiBtX3dlYlZpZXcod2ViVmlldykKKyAgICA6IFdlYlNoYXJpbmdTZXJ2aWNlUGlj
a2VyQ2xpZW50KHdlYlZpZXcpCiB7CiB9CiAKQEAgLTQxMiwxNiArNDEyLDYgQEAgdm9pZCBXZWJD
b250ZXh0TWVudUNsaWVudDo6c2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0cm95ZWQoV2Vi
U2hhcmluZ1NlcnZpY2UKICAgICBtX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciA9IG5p
bDsKIH0KIAotV2ViQ29yZTo6UGFnZSogV2ViQ29udGV4dE1lbnVDbGllbnQ6OnBhZ2VGb3JTaGFy
aW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKLXsK
LSAgICByZXR1cm4gW21fd2ViVmlldyBwYWdlXTsKLX0KLQotUmV0YWluUHRyPE5TV2luZG93PiBX
ZWJDb250ZXh0TWVudUNsaWVudDo6d2luZG93Rm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCi17Ci0gICAgcmV0dXJuIFttX3dlYlZpZXcg
d2luZG93XTsKLX0KLQogV2ViQ29yZTo6RmxvYXRSZWN0IFdlYkNvbnRleHRNZW51Q2xpZW50Ojpz
Y3JlZW5SZWN0Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2Vy
dmljZVBpY2tlckNvbnRyb2xsZXIgJikKIHsKICAgICBQYWdlKiBwYWdlID0gW21fd2ViVmlldyBw
YWdlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCmluZGV4IGQ4MWJiZTAuLjY1YjI4
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaApAQCAtNTEsMTQgKzUxLDggQEAg
cHVibGljOgogCiAgICAgLy8gV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQKICAgICB2aXJ0
dWFsIHZvaWQgc2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0cm95ZWQoV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6
UGFnZSogcGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2Vy
Q29udHJvbGxlciAmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxOU1dpbmRvdz4g
d2luZG93Rm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250
cm9sbGVyICYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHNjcmVl
blJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxOU0lt
YWdlPiBpbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFdlYlZp
ZXcgKm1fd2ViVmlldzsKLQogICAgIFJldGFpblB0cjxXZWJTaGFyaW5nU2VydmljZVBpY2tlckNv
bnRyb2xsZXI+IG1fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2Vydmlj
ZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbQppbmRleCAxNDBiMTBjLi41NWNmMzY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNl
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
ZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbQpAQCAtMzcsNyArMzcsNyBAQAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpXZWJTZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlcihXZWJWaWV3ICp3ZWJWaWV3KSAKLSAgICA6IG1fd2ViVmll
dyh3ZWJWaWV3KQorICAgIDogV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQod2ViVmlldykK
IHsKIH0KIApAQCAtNTgsNiArNTgsNyBAQCB2b2lkIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9s
bGVyOjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soV2ViQ29yZTo6RnJhbWVTZQogICAgIE5T
QXJyYXkgKml0ZW1zID0gQFsgYXR0cmlidXRlZFNlbGVjdGlvbi5nZXQoKSBdOwogCiAgICAgYm9v
bCBpc0VkaXRhYmxlID0gc2VsZWN0aW9uLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCk7
CisgICAgCiAgICAgbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgPSBhZG9wdE5TKFtb
V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEl0ZW1zOml0
ZW1zIGluY2x1ZGVFZGl0b3JTZXJ2aWNlczppc0VkaXRhYmxlIGNsaWVudDp0aGlzIHN0eWxlOk5T
U2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZVRleHRTZWxlY3Rpb25dKTsKIAogICAgIFJldGFpblB0
cjxOU01lbnU+IG1lbnUgPSBhZG9wdE5TKFtbbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXIgbWVudV0gY29weV0pOwpAQCAtOTYsMjQgKzk3LDQgQEAgdm9pZCBXZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlcjo6c2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0cm95ZWQoV2ViU2hh
cmkKICAgICBtX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciA9IG5pbDsKIH0KIAotV2Vi
Q29yZTo6UGFnZSogV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OnBhZ2VGb3JTaGFyaW5n
U2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKLXsKLSAg
ICByZXR1cm4gW21fd2ViVmlldyBwYWdlXTsKLX0KLQotUmV0YWluUHRyPE5TV2luZG93PiBXZWJT
ZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6d2luZG93Rm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIo
V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCi17Ci0gICAgcmV0dXJuIFttX3dl
YlZpZXcgd2luZG93XTsKLX0KLQotRmxvYXRSZWN0IFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9s
bGVyOjpzY3JlZW5SZWN0Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFy
aW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKLXsKLSAgICByZXR1cm4gRmxvYXRSZWN0KCk7
Ci19Ci0KLVJldGFpblB0cjxOU0ltYWdlPiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6
aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlciAmKQotewotICAgIHJldHVybiBuaWw7Ci19Ci0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNmRkNGM0Yy4uNWMzN2Mz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW1wb3J0ICJXZWJBY3Rpb25NZW51Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV2Vi
QXJjaGl2ZS5oIgogI2ltcG9ydCAiV2ViQ2xpcFZpZXcuaCIKKyNpbXBvcnQgIldlYkNvbnRleHRN
ZW51Q2xpZW50LmgiCiAjaW1wb3J0ICJXZWJET01PcGVyYXRpb25zSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldlYkRhdGFTb3VyY2VJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRGVmYXVsdFVJRGVsZWdh
dGUuaCIKQEAgLTY3LDYgKzY4LDcgQEAKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzLmgiCiAjaW1w
b3J0ICJXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCIKICNpbXBvcnQgIldlYlJlc291cmNlUHJpdmF0
ZS5oIgorI2ltcG9ydCAiV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLmgiCiAjaW1w
b3J0ICJXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYlR5cGVzSW50
ZXJuYWwuaCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCkBAIC02MjQsNiArNjI2
LDggQEAgc3RydWN0IFdlYkhUTUxWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiAj
aWZuZGVmIE5ERUJVRwogICAgIEJPT0wgZW51bWVyYXRpbmdTdWJ2aWV3czsKICNlbmRpZgorCisg
ICAgUmV0YWluUHRyPFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcj4gY3VycmVudFNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcjsKIH0KIC0gKHZvaWQpY2xlYXI7CiBAZW5kCkBA
IC0zMzU4LDYgKzMzNjIsMjEgQEAgc3RhdGljIHZvaWQgc2V0TWVudVRhcmdldHMoTlNNZW51KiBt
ZW51KQogICAgIGlmICghY29yZU1lbnUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKKyAgICBhdXRv
IG1lbnVJdGVtVmVjdG9yID0gY29udGV4dE1lbnVJdGVtVmVjdG9yKGNvcmVNZW51LT5wbGF0Zm9y
bURlc2NyaXB0aW9uKCkpOworICAgIGZvciAoYXV0byYgbWVudUl0ZW0gOiBtZW51SXRlbVZlY3Rv
cikgeworICAgICAgICBpZiAobWVudUl0ZW0uYWN0aW9uKCkgIT0gQ29udGV4dE1lbnVJdGVtVGFn
U2hhcmVNZW51KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgTlNNZW51SXRlbSAq
bnNJdGVtID0gbWVudUl0ZW0ucGxhdGZvcm1EZXNjcmlwdGlvbigpOworICAgICAgICBpZiAoIVtu
c0l0ZW0ucmVwcmVzZW50ZWRPYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNTaGFyaW5nU2VydmljZVBp
Y2tlciBjbGFzc11dKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMp
CisgICAgICAgIF9wcml2YXRlLT5jdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVy
ID0gYWRvcHROUyhbW1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciBhbGxvY10gaW5p
dFdpdGhTaGFyaW5nU2VydmljZVBpY2tlcjpuc0l0ZW0ucmVwcmVzZW50ZWRPYmplY3QgY2xpZW50
OnN0YXRpY19jYXN0PFdlYkNvbnRleHRNZW51Q2xpZW50Jj4ocGFnZS0+Y29udGV4dE1lbnVDb250
cm9sbGVyKCkuY2xpZW50KCkpXSk7CisjZW5kaWYKKyAgICB9CisKICAgICBOU0FycmF5KiBtZW51
SXRlbXMgPSBjb3JlTWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpOwogICAgIGlmICghbWVudUl0
ZW1zKQogICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAppbmRleCBmYjg4MGM0Li5iYWY0ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDA2MCw4ICs0MDYwLDEwIEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudShjb25zdCBJbnRQb2ludCYgbWVudUxvY2F0
aW9uLCBjb25zdCBDCiAgICAgICAgIH0KIAogICAgICAgICBDb250ZXh0TWVudUl0ZW0gY29yZUl0
ZW0gPSBDb250ZXh0TWVudUl0ZW06OnNoYXJlTWVudUl0ZW0oYWJzb2x1dGVMaW5rVVJMLCBkb3du
bG9hZGFibGVNZWRpYVVSTCwgaW1hZ2UuZ2V0KCksIGNvbnRleHRNZW51Q29udGV4dERhdGEuc2Vs
ZWN0ZWRUZXh0KCkpOwotICAgICAgICBpZiAoIWNvcmVJdGVtLmlzTnVsbCgpKQorICAgICAgICBp
ZiAoIWNvcmVJdGVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBwbGF0Zm9ybUluaXRpYWxpemVT
aGFyZU1lbnVJdGVtKGNvcmVJdGVtKTsKICAgICAgICAgICAgIHByb3Bvc2VkQVBJSXRlbXMuYXBw
ZW5kKFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKGNvcmVJdGVtKSk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4+IGNsaWVudEl0ZW1z
OwpAQCAtNDA3Nyw2ICs0MDc5LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnRlcm5hbFNob3dD
b250ZXh0TWVudShjb25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBDCiAgICAgbV9j
b250ZXh0TWVudUNsaWVudC0+Y29udGV4dE1lbnVEaXNtaXNzZWQoKnRoaXMpOwogfQogCisjaWYg
IVBMQVRGT1JNKE1BQykKK3ZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVTaGFy
ZU1lbnVJdGVtKENvbnRleHRNZW51SXRlbSYpCit7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdl
UHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURh
dGEmIGl0ZW0pCiB7CiAgICAgLy8gQXBwbGljYXRpb24gY3VzdG9tIGl0ZW1zIGRvbid0IG5lZWQg
dG8gcm91bmQtdHJpcCB0aHJvdWdoIHRvIFdlYkNvcmUgaW4gdGhlIFdlYlByb2Nlc3MuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2QxMTAyMS4uMjcyMTNiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTIzMyw2ICsxMjMz
LDggQEAgcHJpdmF0ZToKICAgICB9OwogICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERh
dGEmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mLCBjb25zdCBVc2VyRGF0
YSYpOwogICAgIHZvaWQgaW50ZXJuYWxTaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0
IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYsIENvbnRleHRNZW51Q2xpZW50RWxpZ2li
aWxpdHksIGNvbnN0IFVzZXJEYXRhJik7CisKKyAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVNo
YXJlTWVudUl0ZW0oV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtJik7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YTM1NDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV9oCisjZGVmaW5lIFdLU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZV9oCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eU1hYzsKK30KKworQGNsYXNzIE5TU2hh
cmluZ1NlcnZpY2VQaWNrZXI7CisKK0BpbnRlcmZhY2UgV0tTaGFyaW5nU2VydmljZVBpY2tlckRl
bGVnYXRlIDogTlNPYmplY3QgPE5TU2hhcmluZ1NlcnZpY2VEZWxlZ2F0ZSwgTlNTaGFyaW5nU2Vy
dmljZVBpY2tlckRlbGVnYXRlPiB7CisgICAgV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFj
KiBfbWVudVByb3h5OworICAgIFJldGFpblB0cjxOU1NoYXJpbmdTZXJ2aWNlUGlja2VyPiBfcGlj
a2VyOworICAgIEJPT0wgX2ZpbHRlckVkaXRpbmdTZXJ2aWNlczsKKyAgICBCT09MIF9oYW5kbGVF
ZGl0aW5nUmVwbGFjZW1lbnQ7Cit9CisKKysgKFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0
ZSAqKXNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGU7CistIChXZWJLaXQ6OldlYkNv
bnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eTsKKy0gKHZvaWQpc2V0TWVudVByb3h5OihXZWJL
aXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eTsKKy0gKHZvaWQpc2V0UGlja2Vy
OihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICopcGlja2VyOworLSAodm9pZClzZXRGaWx0ZXJzRWRp
dGluZ1NlcnZpY2VzOihCT09MKWZpbHRlcnNFZGl0aW5nU2VydmljZXM7CistICh2b2lkKXNldEhh
bmRsZXNFZGl0aW5nUmVwbGFjZW1lbnQ6KEJPT0wpaGFuZGxlc0VkaXRpbmdSZXBsYWNlbWVudDsK
K0BlbmQKKworI2VuZGlmIC8vIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2Vy
dmljZVBpY2tlckRlbGVnYXRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmY1ZjBmZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDEzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tTaGFyaW5nU2VydmljZVBp
Y2tlckRlbGVnYXRlLmgiCisKKyNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbXBvcnQgIldl
YkNvbnRleHRNZW51UHJveHlNYWMuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9y
dCA8V2ViQ29yZS9OU1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L05TU2hhcmluZ1NlcnZpY2VTUEkuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CisvLyBGSVhNRTogV2UgcHJvYmFibHkgbmVlZCB0byBoYW5nIG9uIHRoZSBwaWNrZXIgaXRzZWxm
IHVudGlsIHRoZSBjb250ZXh0IG1lbnUgb3BlcmF0aW9uIGlzIGRvbmUsIGFuZCB0aGlzIG9iamVj
dCB3aWxsIHByb2JhYmx5IGRvIHRoYXQuCitAaW1wbGVtZW50YXRpb24gV0tTaGFyaW5nU2Vydmlj
ZVBpY2tlckRlbGVnYXRlCisKKysgKFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSopc2hh
cmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZQoreworICAgIHN0YXRpYyBXS1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGUqIGRlbGVnYXRlID0gW1tXS1NoYXJpbmdTZXJ2aWNlUGlja2Vy
RGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAgIHJldHVybiBkZWxlZ2F0ZTsKK30KKworLSAoV2Vi
S2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51UHJveHkKK3sKKyAgICByZXR1cm4gX21l
bnVQcm94eTsKK30KKworLSAodm9pZClzZXRNZW51UHJveHk6KFdlYktpdDo6V2ViQ29udGV4dE1l
bnVQcm94eU1hYyopbWVudVByb3h5Cit7CisgICAgX21lbnVQcm94eSA9IG1lbnVQcm94eTsKK30K
KworLSAodm9pZClzZXRQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgKilwaWNrZXIKK3sK
KyAgICBfcGlja2VyID0gcGlja2VyOworfQorCistICh2b2lkKXNldEZpbHRlcnNFZGl0aW5nU2Vy
dmljZXM6KEJPT0wpZmlsdGVyc0VkaXRpbmdTZXJ2aWNlcworeworICAgIF9maWx0ZXJFZGl0aW5n
U2VydmljZXMgPSBmaWx0ZXJzRWRpdGluZ1NlcnZpY2VzOworfQorCistICh2b2lkKXNldEhhbmRs
ZXNFZGl0aW5nUmVwbGFjZW1lbnQ6KEJPT0wpaGFuZGxlc0VkaXRpbmdSZXBsYWNlbWVudAorewor
ICAgIF9oYW5kbGVFZGl0aW5nUmVwbGFjZW1lbnQgPSBoYW5kbGVzRWRpdGluZ1JlcGxhY2VtZW50
OworfQorCistIChOU0FycmF5ICopc2hhcmluZ1NlcnZpY2VQaWNrZXI6KE5TU2hhcmluZ1NlcnZp
Y2VQaWNrZXIgKilzaGFyaW5nU2VydmljZVBpY2tlciBzaGFyaW5nU2VydmljZXNGb3JJdGVtczoo
TlNBcnJheSAqKWl0ZW1zIG1hc2s6KE5TU2hhcmluZ1NlcnZpY2VNYXNrKW1hc2sgcHJvcG9zZWRT
aGFyaW5nU2VydmljZXM6KE5TQXJyYXkgKilwcm9wb3NlZFNlcnZpY2VzCit7CisgICAgaWYgKCFf
ZmlsdGVyRWRpdGluZ1NlcnZpY2VzKQorICAgICAgICByZXR1cm4gcHJvcG9zZWRTZXJ2aWNlczsK
KworICAgIE5TTXV0YWJsZUFycmF5ICpzZXJ2aWNlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQ2FwYWNpdHk6W3Byb3Bvc2VkU2VydmljZXMgY291bnRdXTsKKyAgICAKKyAgICBm
b3IgKE5TU2hhcmluZ1NlcnZpY2UgKnNlcnZpY2UgaW4gcHJvcG9zZWRTZXJ2aWNlcykgeworICAg
ICAgICBpZiAoc2VydmljZS50eXBlICE9IE5TU2hhcmluZ1NlcnZpY2VUeXBlRWRpdG9yKQorICAg
ICAgICAgICAgW3NlcnZpY2VzIGFkZE9iamVjdDpzZXJ2aWNlXTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIHNlcnZpY2VzOworfQorCistIChpZCA8TlNTaGFyaW5nU2VydmljZURlbGVnYXRlPilz
aGFyaW5nU2VydmljZVBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXNoYXJpbmdTZXJ2
aWNlUGlja2VyIGRlbGVnYXRlRm9yU2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilz
aGFyaW5nU2VydmljZQoreworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXNoYXJpbmdT
ZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2Ugd2lsbFNoYXJlSXRlbXM6
KE5TQXJyYXkgKilpdGVtcworeworICAgIF9tZW51UHJveHktPmNsZWFyU2VydmljZXNNZW51KCk7
Cit9CisKKy0gKHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5n
U2VydmljZSBkaWRTaGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMKK3sKKyAgICAvLyBXZSBvbmx5
IGNhcmUgYWJvdXQgd2hhdCBpdGVtIHdhcyBzaGFyZWQgaWYgd2Ugd2VyZSBpbnRlcmVzdGVkIGlu
IGVkaXRvciBzZXJ2aWNlcworICAgIC8vIChpLmUuLCBpZiB3ZSBwbGFuIG9uIHJlcGxhY2luZyB0
aGUgc2VsZWN0aW9uIHdpdGggdGhlIHJldHVybmVkIGl0ZW0pCisgICAgaWYgKCFfaGFuZGxlRWRp
dGluZ1JlcGxhY2VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8U3RyaW5nPiB0
eXBlczsKKyAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKworICAgIGlkIGl0
ZW0gPSBbaXRlbXMgb2JqZWN0QXRJbmRleDowXTsKKworICAgIGlmIChbaXRlbSBpc0tpbmRPZkNs
YXNzOltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSkgeworICAgICAgICBOU0RhdGEgKmRhdGEg
PSBbaXRlbSBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtpdGVtIGxlbmd0aF0pIGRvY3Vt
ZW50QXR0cmlidXRlczpuaWxdOworICAgICAgICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVm
ZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBs
ZW5ndGhdKTsKKworICAgICAgICB0eXBlcy5hcHBlbmQoTlNQYXN0ZWJvYXJkVHlwZVJURkQpOwor
ICAgICAgICB0eXBlcy5hcHBlbmQoTlNSVEZEUGJvYXJkVHlwZSk7CisgICAgfSBlbHNlIGlmIChb
aXRlbSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkgeworICAgICAgICBOU0RhdGEgKmRh
dGEgPSAoTlNEYXRhICopaXRlbTsKKyAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+
IHNvdXJjZSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChDRkRhdGFSZWYp
ZGF0YSwgTlVMTCkpOworICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9w
dENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJbWFnZUF0SW5kZXgoc291cmNlLmdldCgpLCAwLCBOVUxM
KSk7CisKKyAgICAgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICAgICAgdHlwZXMuYXBw
ZW5kKE5TUGFzdGVib2FyZFR5cGVUSUZGKTsKKyAgICB9IGVsc2UgeworICAgICAgICBMT0dfRVJS
T1IoInNoYXJpbmdTZXJ2aWNlOmRpZFNoYXJlSXRlbXM6IC0gVW5rbm93biBpdGVtIHR5cGUgcmV0
dXJuZWRcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBhZG9wdCByZXBsYWNlU2VsZWN0aW9uV2l0aEF0dHJpYnV0ZWRTdHJpbmcgaW5zdGVhZCBv
ZiBib3VuY2luZyB0aHJvdWdoIHRoZSAoZmFrZSkgcGFzdGVib2FyZC4KKyAgICBfbWVudVByb3h5
LT5wYWdlKCkucmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0eXBlcywgZGF0YVJl
ZmVyZW5jZSk7Cit9CisKKy0gKE5TV2luZG93ICopc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1Nl
cnZpY2UgKilzaGFyaW5nU2VydmljZSBzb3VyY2VXaW5kb3dGb3JTaGFyZUl0ZW1zOihOU0FycmF5
ICopaXRlbXMgc2hhcmluZ0NvbnRlbnRTY29wZTooTlNTaGFyaW5nQ29udGVudFNjb3BlICopc2hh
cmluZ0NvbnRlbnRTY29wZQoreworICAgIHJldHVybiBfbWVudVByb3h5LT53aW5kb3coKTsKK30K
KworQGVuZAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMubW0KaW5kZXggNTU4MGVkMS4uNTEzZWEyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5t
bQpAQCAtMzQsMTAgKzM0LDExIEBACiAjaW1wb3J0ICJTZXJ2aWNlc0NvbnRyb2xsZXIuaCIKICNp
bXBvcnQgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgiCisj
aW1wb3J0ICJXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldLVmll
dy5oIgogI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0
TWVudUl0ZW1EYXRhLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbXBvcnQgIldL
Vmlldy5oIgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvSW50UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9OU1NoYXJpbmdTZXJ2aWNlUGlja2Vy
U1BJLmg+CkBAIC0xNDcsMTE5ICsxNDgsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
QGVuZAogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi1AaW50ZXJmYWNlIFdLU2hhcmlu
Z1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1NoYXJpbmdTZXJ2aWNlRGVsZWdh
dGUsIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZT4gewotICAgIFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVQcm94eU1hYyogX21lbnVQcm94eTsKLSAgICBSZXRhaW5QdHI8TlNTaGFyaW5nU2Vy
dmljZVBpY2tlcj4gX3BpY2tlcjsKLSAgICBCT09MIF9pbmNsdWRlRWRpdG9yU2VydmljZXM7Ci19
Ci0KLSsgKFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSAqKXNoYXJlZFNoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGU7Ci0tIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1l
bnVQcm94eTsKLS0gKHZvaWQpc2V0TWVudVByb3h5OihXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHlNYWMqKW1lbnVQcm94eTsKLS0gKHZvaWQpc2V0UGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlj
a2VyICopcGlja2VyOwotLSAodm9pZClzZXRJbmNsdWRlRWRpdG9yU2VydmljZXM6KEJPT0wpaW5j
bHVkZUVkaXRvclNlcnZpY2VzOwotQGVuZAotCi0vLyBGSVhNRTogV2UgcHJvYmFibHkgbmVlZCB0
byBoYW5nIG9uIHRoZSBwaWNrZXIgaXRzZWxmIHVudGlsIHRoZSBjb250ZXh0IG1lbnUgb3BlcmF0
aW9uIGlzIGRvbmUsIGFuZCB0aGlzIG9iamVjdCB3aWxsIHByb2JhYmx5IGRvIHRoYXQuCi1AaW1w
bGVtZW50YXRpb24gV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlCi0rIChXS1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGUqKXNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUK
LXsKLSAgICBzdGF0aWMgV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlKiBkZWxlZ2F0ZSA9
IFtbV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAgICByZXR1
cm4gZGVsZWdhdGU7Ci19Ci0KLS0gKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVu
dVByb3h5Ci17Ci0gICAgcmV0dXJuIF9tZW51UHJveHk7Ci19Ci0KLS0gKHZvaWQpc2V0TWVudVBy
b3h5OihXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eQotewotICAgIF9t
ZW51UHJveHkgPSBtZW51UHJveHk7Ci19Ci0KLS0gKHZvaWQpc2V0UGlja2VyOihOU1NoYXJpbmdT
ZXJ2aWNlUGlja2VyICopcGlja2VyCi17Ci0gICAgX3BpY2tlciA9IHBpY2tlcjsKLX0KLQotLSAo
dm9pZClzZXRJbmNsdWRlRWRpdG9yU2VydmljZXM6KEJPT0wpaW5jbHVkZUVkaXRvclNlcnZpY2Vz
Ci17Ci0gICAgX2luY2x1ZGVFZGl0b3JTZXJ2aWNlcyA9IGluY2x1ZGVFZGl0b3JTZXJ2aWNlczsK
LX0KLQotLSAoTlNBcnJheSAqKXNoYXJpbmdTZXJ2aWNlUGlja2VyOihOU1NoYXJpbmdTZXJ2aWNl
UGlja2VyICopc2hhcmluZ1NlcnZpY2VQaWNrZXIgc2hhcmluZ1NlcnZpY2VzRm9ySXRlbXM6KE5T
QXJyYXkgKilpdGVtcyBtYXNrOihOU1NoYXJpbmdTZXJ2aWNlTWFzayltYXNrIHByb3Bvc2VkU2hh
cmluZ1NlcnZpY2VzOihOU0FycmF5ICopcHJvcG9zZWRTZXJ2aWNlcwotewotICAgIGlmIChfaW5j
bHVkZUVkaXRvclNlcnZpY2VzKQotICAgICAgICByZXR1cm4gcHJvcG9zZWRTZXJ2aWNlczsKLQot
ICAgIE5TTXV0YWJsZUFycmF5ICpzZXJ2aWNlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6W3Byb3Bvc2VkU2VydmljZXMgY291bnRdXTsKLSAgICAKLSAgICBmb3Ig
KE5TU2hhcmluZ1NlcnZpY2UgKnNlcnZpY2UgaW4gcHJvcG9zZWRTZXJ2aWNlcykgewotICAgICAg
ICBpZiAoc2VydmljZS50eXBlICE9IE5TU2hhcmluZ1NlcnZpY2VUeXBlRWRpdG9yKQotICAgICAg
ICAgICAgW3NlcnZpY2VzIGFkZE9iamVjdDpzZXJ2aWNlXTsKLSAgICB9Ci0gICAgCi0gICAgcmV0
dXJuIHNlcnZpY2VzOwotfQotCi0tIChpZCA8TlNTaGFyaW5nU2VydmljZURlbGVnYXRlPilzaGFy
aW5nU2VydmljZVBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXNoYXJpbmdTZXJ2aWNl
UGlja2VyIGRlbGVnYXRlRm9yU2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFy
aW5nU2VydmljZQotewotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKXNoYXJpbmdTZXJ2
aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2Ugd2lsbFNoYXJlSXRlbXM6KE5T
QXJyYXkgKilpdGVtcwotewotICAgIF9tZW51UHJveHktPmNsZWFyU2VydmljZXNNZW51KCk7Ci19
Ci0KLS0gKHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2Vy
dmljZSBkaWRTaGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMKLXsKLSAgICAvLyBXZSBvbmx5IGNh
cmUgYWJvdXQgd2hhdCBpdGVtIHdhcyBzaGFyZWQgaWYgd2Ugd2VyZSBpbnRlcmVzdGVkIGluIGVk
aXRvciBzZXJ2aWNlcwotICAgIC8vIChpLmUuLCBpZiB3ZSBwbGFuIG9uIHJlcGxhY2luZyB0aGUg
c2VsZWN0aW9uIHdpdGggdGhlIHJldHVybmVkIGl0ZW0pCi0gICAgaWYgKCFfaW5jbHVkZUVkaXRv
clNlcnZpY2VzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsK
LSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLQotICAgIGlkIGl0ZW0gPSBb
aXRlbXMgb2JqZWN0QXRJbmRleDowXTsKLQotICAgIGlmIChbaXRlbSBpc0tpbmRPZkNsYXNzOltO
U0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICBOU0RhdGEgKmRhdGEgPSBbaXRl
bSBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtpdGVtIGxlbmd0aF0pIGRvY3VtZW50QXR0
cmlidXRlczpuaWxdOwotICAgICAgICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNl
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhd
KTsKLQotICAgICAgICB0eXBlcy5hcHBlbmQoTlNQYXN0ZWJvYXJkVHlwZVJURkQpOwotICAgICAg
ICB0eXBlcy5hcHBlbmQoTlNSVEZEUGJvYXJkVHlwZSk7Ci0gICAgfSBlbHNlIGlmIChbaXRlbSBp
c0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkgewotICAgICAgICBOU0RhdGEgKmRhdGEgPSAo
TlNEYXRhICopaXRlbTsKLSAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IHNvdXJj
ZSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChDRkRhdGFSZWYpZGF0YSwg
TlVMTCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENH
SW1hZ2VTb3VyY2VDcmVhdGVJbWFnZUF0SW5kZXgoc291cmNlLmdldCgpLCAwLCBOVUxMKSk7Ci0K
LSAgICAgICAgaWYgKCFpbWFnZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBkYXRh
UmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKLSAgICAgICAgdHlwZXMuYXBwZW5kKE5T
UGFzdGVib2FyZFR5cGVUSUZGKTsKLSAgICB9IGVsc2UgewotICAgICAgICBMT0dfRVJST1IoInNo
YXJpbmdTZXJ2aWNlOmRpZFNoYXJlSXRlbXM6IC0gVW5rbm93biBpdGVtIHR5cGUgcmV0dXJuZWRc
biIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBh
ZG9wdCByZXBsYWNlU2VsZWN0aW9uV2l0aEF0dHJpYnV0ZWRTdHJpbmcgaW5zdGVhZCBvZiBib3Vu
Y2luZyB0aHJvdWdoIHRoZSAoZmFrZSkgcGFzdGVib2FyZC4KLSAgICBfbWVudVByb3h5LT5wYWdl
KCkucmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0eXBlcywgZGF0YVJlZmVyZW5j
ZSk7Ci19Ci0KLS0gKE5TV2luZG93ICopc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2Ug
KilzaGFyaW5nU2VydmljZSBzb3VyY2VXaW5kb3dGb3JTaGFyZUl0ZW1zOihOU0FycmF5ICopaXRl
bXMgc2hhcmluZ0NvbnRlbnRTY29wZTooTlNTaGFyaW5nQ29udGVudFNjb3BlICopc2hhcmluZ0Nv
bnRlbnRTY29wZQotewotICAgIHJldHVybiBfbWVudVByb3h5LT53aW5kb3coKTsKLX0KLQotQGVu
ZAotCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkNvbnRleHRNZW51UHJveHlN
YWM6OldlYkNvbnRleHRNZW51UHJveHlNYWMoV0tWaWV3KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkq
IHBhZ2UpCkBAIC0zOTIsNyArMjgwLDggQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpz
ZXR1cFNlcnZpY2VzTWVudShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiBjb24KICAgICBb
cGlja2VyIHNldFN0eWxlOmhhc0NvbnRyb2xsZWRJbWFnZSA/IE5TU2hhcmluZ1NlcnZpY2VQaWNr
ZXJTdHlsZVJvbGxvdmVyIDogTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlVGV4dFNlbGVjdGlv
bl07CiAgICAgW3BpY2tlciBzZXREZWxlZ2F0ZTpbV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVn
YXRlIHNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVdXTsKICAgICBbW1dLU2hhcmlu
Z1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRl
XSBzZXRQaWNrZXI6cGlja2VyLmdldCgpXTsKLSAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJE
ZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRJbmNsdWRlRWRp
dG9yU2VydmljZXM6aW5jbHVkZUVkaXRvclNlcnZpY2VzXTsKKyAgICBbW1dLU2hhcmluZ1NlcnZp
Y2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRG
aWx0ZXJzRWRpdGluZ1NlcnZpY2VzOiFpbmNsdWRlRWRpdG9yU2VydmljZXNdOworICAgIFtbV0tT
aGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVs
ZWdhdGVdIHNldEhhbmRsZXNFZGl0aW5nUmVwbGFjZW1lbnQ6aW5jbHVkZUVkaXRvclNlcnZpY2Vz
XTsKIAogICAgIG1fc2VydmljZXNNZW51ID0gYWRvcHROUyhbW3BpY2tlciBtZW51XSBjb3B5XSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
aW5kZXggZTM4YjlmZi4uOWExNDFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTQzLDYgKzQzLDggQEAKICNpbXBvcnQgIlN0cmlu
Z1V0aWxpdGllcy5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXIuaCIKICNpbXBvcnQgIldLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgiCisjaW1wb3J0ICJXS1NoYXJpbmdTZXJ2aWNl
UGlja2VyRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldlYkNvbnRleHRNZW51UHJveHlNYWMuaCIKICNp
bXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAj
aW1wb3J0IDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+CkBAIC03NDUsNiArNzQ3LDIx
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplZGl0b3JTdGF0ZUNoYW5nZWQoY29uc3QgRWRpdG9yU3Rh
dGUmIGVkaXRvclN0YXRlKQogICAgIH0KICNlbmRpZgogfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
cGxhdGZvcm1Jbml0aWFsaXplU2hhcmVNZW51SXRlbShDb250ZXh0TWVudUl0ZW0mIGl0ZW0pCit7
CisgICAgTlNNZW51SXRlbSAqbnNJdGVtID0gaXRlbS5wbGF0Zm9ybURlc2NyaXB0aW9uKCk7CisK
KyAgICBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICpzaGFyaW5nU2VydmljZVBpY2tlciA9IFtuc0l0
ZW0gcmVwcmVzZW50ZWRPYmplY3RdOworICAgIHNoYXJpbmdTZXJ2aWNlUGlja2VyLmRlbGVnYXRl
ID0gW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBp
Y2tlckRlbGVnYXRlXTsKKyAgICAKKyAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0
ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRGaWx0ZXJzRWRpdGluZ1Nl
cnZpY2VzOk5PXTsKKyAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRT
aGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRIYW5kbGVzRWRpdGluZ1JlcGxhY2VtZW50
Ok5PXTsKKyAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5n
U2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRNZW51UHJveHk6c3RhdGljX2Nhc3Q8V2ViQ29udGV4
dE1lbnVQcm94eU1hYyo+KG1fYWN0aXZlQ29udGV4dE1lbnUuZ2V0KCkpXTsKKworICAgIC8vIFNl
dHRpbmcgdGhlIHBpY2tlciBsZXRzIHRoZSBkZWxlZ2F0ZSByZXRhaW4gaXQgdG8ga2VlcCBpdCBh
bGl2ZSwgYnV0IHRoaXMgcGlja2VyIGlzIGtlcHQgYWxpdmUgYnkgdGhlIG1lbnUgaXRlbS4KKyAg
ICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBp
Y2tlckRlbGVnYXRlXSBzZXRQaWNrZXI6bmlsXTsKK30KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNmQ4MjY2YS4uMmQzNDRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTI1LDYgKzkyNSw4IEBACiAJCTUx
M0ExNjNEMTYzMDg4RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0ExNjNCMTYz
MDg4RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJ
NTEzQTE2NEMxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0Ex
NjQ5MTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
Ki87IH07CiAJCTUxM0ExNjREMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEzQTE2NEExNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggKi87IH07CisJCTUxM0U0NjJEMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxM0U0NjJCMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlj
a2VyRGVsZWdhdGUuaCAqLzsgfTsKKwkJNTEzRTQ2MkUxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0U0NjJDMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGUubW0gKi87IH07CiAJCTUxNEJERUQzMTZDOThFREQwMEU0RTI1
RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1
ZXN0LmggKi87IH07CiAJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NEQ5RjU1MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJ
NTE0RDlGNTgxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU2MTkxMTlEMzUw
MDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0gKi87IH07CkBAIC0zMTE1LDYgKzMxMTcs
OCBAQAogCQk1MTNBMTY0OTE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTNBMTY0QTE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxM0ExNjRCMTYzMEE5
QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbjsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTNFNDYyQjFB
RDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTNFNDYyQzFBRDgzNzU2MDAxNjIz
NEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRCREVEMjE2Qzk4RUREMDBFNEUyNUUg
LyogU3RhdGlzdGljc1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RhdGlzdGljc1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlG
NTUxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlc0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTYxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJv
bGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2Vz
Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwNjMsNiArNzA2
Nyw4IEBACiAJCQkJMEZDQjRFNUQxOEJCRTNEOTAwMEZDRkM5IC8qIFdLUHJpbnRpbmdWaWV3Lm1t
ICovLAogCQkJCTBGQ0I0RTVFMThCQkUzRDkwMDBGQ0ZDOSAvKiBXS1RleHRJbnB1dFdpbmRvd0Nv
bnRyb2xsZXIuaCAqLywKIAkJCQkwRkNCNEU1RjE4QkJFM0Q5MDAwRkNGQzkgLyogV0tUZXh0SW5w
dXRXaW5kb3dDb250cm9sbGVyLm1tICovLAorCQkJCTUxM0U0NjJCMUFEODM3NTYwMDE2MjM0QSAv
KiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCAqLywKKwkJCQk1MTNFNDYyQzFBRDgz
NzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLm1tICovLAogCQkJ
KTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzkzNSw2
ICs3OTQxLDcgQEAKIAkJCQkxQTVFNERBNDEyRDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxQTBCRDcxQTQ4RTZDNjAwNTRFRjc0IC8qIFRl
eHRJbnB1dFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjI2MzkxNDY4N0MzOTAwNEExRThB
IC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MTNFNDYyRDFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUYwNUQ4NzE0Njg4MzQ4MDA4QjFFODEgLyogVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGRTQz
NjYxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNF
RTRBRTJCMUE1RENGNDMwMDAyRjQ5QiAvKiBVSUtpdFNQSS5oIGluIEhlYWRlcnMgKi8sCkBAIC05
ODY0LDYgKzk4NzEsNyBAQAogCQkJCTMxQTJFQzQ4MTQ4OTk3QzIwMDgxMEQ3MSAvKiBXZWJOb3Rp
ZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwOTk5NzMxNDZDNzVBMjAwMjlERUI5
IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTMxMjYy
MDE0OEZGODJDMDBCQTJBMzkgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MTNFNDYyRTFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBp
Y2tlckRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFCQTkyNEQxNDg4MzEyNjAwNjJF
REI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzFBMkVDNEExNDg5OTdDMjAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUEyRUM0RDE0ODk5N0MyMDA4MTBE
NzEgLyogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250659</attachid>
            <date>2015-04-13 11:06:11 -0700</date>
            <delta_ts>2015-04-13 11:41:54 -0700</delta_ts>
            <desc>Patch v4 - More feature guards.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>36745</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCmluZGV4IDM1NzM5
ZDguLjBmNTg1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgfkNvbnRleHRNZW51Q29udHJvbGxl
cigpOwogCiAgICAgUGFnZSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIENvbnRleHRN
ZW51Q2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCiAgICAgQ29udGV4dE1l
bnUqIGNvbnRleHRNZW51KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0TWVudS5nZXQoKTsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDb250ZXh0TWVudSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9s
bGVyLmgKaW5kZXggYTNjYmNiMS4uYTliNDJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oCkBAIC0y
NiwxMCArMjYsMTQgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKIAogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorCisjaWYgUExBVEZPUk0oTUFDKQogI2ltcG9ydCA8V2ViQ29yZS9O
U1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05TU2hhcmluZ1Nl
cnZpY2VTUEkuaD4KKyNlbmRpZgogCiBAY2xhc3MgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250
cm9sbGVyOworQGNsYXNzIFdlYlZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZs
b2F0UmVjdDsKQEAgLTQyLDIxICs0NiwyOSBAQCBjbGFzcyBXZWJTaGFyaW5nU2VydmljZVBpY2tl
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
bGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzaGFyaW5nU2VydmljZVBpY2tlcldpbGxC
ZURlc3Ryb3llZChXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgPSAwOwotICAg
IHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogcGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSA9IDA7Ci0gICAgdmlydHVhbCBSZXRhaW5Q
dHI8TlNXaW5kb3c+IHdpbmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlciAmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNoYXJpbmdTZXJ2
aWNlUGlja2VyV2lsbEJlRGVzdHJveWVkKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ciAmKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIHBhZ2VGb3JTaGFyaW5nU2VydmljZVBp
Y2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJik7CisgICAgdmlydHVhbCBS
ZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKTsKKworICAgIHZpcnR1YWwgV2ViQ29yZTo6Rmxv
YXRSZWN0IHNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKTsKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxO
U0ltYWdlPiBpbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpOworCisgICAgV2ViVmlldyAqd2ViVmlldygpIHsg
cmV0dXJuIG1fd2ViVmlldzsgfQogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3Qgc2Ny
ZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyICYpID0gMDsKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxOU0ltYWdl
PiBpbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyICYpID0gMDsKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNsaWVudChXZWJWaWV3ICopOworICAgIFdlYlZpZXcgKm1fd2Vi
VmlldzsKIH07CiAKIEBpbnRlcmZhY2UgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVy
IDogTlNPYmplY3QgPE5TU2hhcmluZ1NlcnZpY2VEZWxlZ2F0ZSwgTlNTaGFyaW5nU2VydmljZVBp
Y2tlckRlbGVnYXRlPiB7CiAgICAgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQqIF9waWNr
ZXJDbGllbnQ7CiAgICAgUmV0YWluUHRyPE5TU2hhcmluZ1NlcnZpY2VQaWNrZXI+IF9waWNrZXI7
CiAgICAgQk9PTCBfaW5jbHVkZUVkaXRvclNlcnZpY2VzOworICAgIEJPT0wgX2hhbmRsZUVkaXRp
bmdSZXBsYWNlbWVudDsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSXRlbXM6KE5TQXJy
YXkgKilpdGVtcyBpbmNsdWRlRWRpdG9yU2VydmljZXM6KEJPT0wpaW5jbHVkZUVkaXRvclNlcnZp
Y2VzIGNsaWVudDooV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQqKXBpY2tlckNsaWVudCBz
dHlsZTooTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlKXN0eWxlOworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoU2hhcmluZ1NlcnZpY2VQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgKilz
aGFyaW5nU2VydmljZVBpY2tlciBjbGllbnQ6KFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50
JilwaWNrZXJDbGllbnQ7CiAtIChOU01lbnUgKiltZW51OwogLSAodm9pZClkaWRTaGFyZUltYWdl
RGF0YTooTlNEYXRhICopZGF0YSBjb25maXJtRGF0YUlzVmFsaWRUSUZGRGF0YTooQk9PTCljb25m
aXJtRGF0YTsKIC0gKHZvaWQpY2xlYXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9N
aXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCmluZGV4IDM0Nzg3
YmEuLmJkZmI0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2Mv
V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCkBAIC00Miw4ICs0MiwzOCBAQCBz
dGF0aWMgTlNTdHJpbmcgKnNlcnZpY2VDb250cm9sc1Bhc3RlYm9hcmROYW1lID0gQCJXZWJLaXRT
ZXJ2aWNlQ29udHJvbHNQYXN0ZWJvYQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorV2Vi
U2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQ6OldlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50
KFdlYlZpZXcgKndlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKK3sKK30KKwordm9p
ZCBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudDo6c2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxs
QmVEZXN0cm95ZWQoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCit7Cit9CisK
K1BhZ2UqIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50OjpwYWdlRm9yU2hhcmluZ1NlcnZp
Y2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCit7CisgICAgcmV0
dXJuIFttX3dlYlZpZXcgcGFnZV07Cit9CisKK1JldGFpblB0cjxOU1dpbmRvdz4gV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDbGllbnQ6OndpbmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQoreworICAgIHJldHVybiBbbV93ZWJWaWV3
IHdpbmRvd107Cit9CisKK0Zsb2F0UmVjdCBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudDo6
c2NyZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyICYpCit7CisgICAgcmV0dXJuIEZsb2F0UmVjdCgpOworfQor
CitSZXRhaW5QdHI8TlNJbWFnZT4gV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQ6OmltYWdl
Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tl
ckNvbnRyb2xsZXIgJikKK3sKKyAgICByZXR1cm4gbmlsOworfQorCiBAaW1wbGVtZW50YXRpb24g
V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyCiAKKyNpZiBFTkFCTEUoU0VSVklDRV9D
T05UUk9MUykKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEl0ZW1zOihOU0FycmF5ICopaXRlbXMg
aW5jbHVkZUVkaXRvclNlcnZpY2VzOihCT09MKWluY2x1ZGVFZGl0b3JTZXJ2aWNlcyBjbGllbnQ6
KFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KilwaWNrZXJDbGllbnQgc3R5bGU6KE5TU2hh
cmluZ1NlcnZpY2VQaWNrZXJTdHlsZSlzdHlsZQogewogI2lmbmRlZiBfX0xQNjRfXwpAQCAtNTcs
MTIgKzg3LDMzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIFtfcGlja2VyIHNldERl
bGVnYXRlOnNlbGZdOwogCiAgICAgX2luY2x1ZGVFZGl0b3JTZXJ2aWNlcyA9IGluY2x1ZGVFZGl0
b3JTZXJ2aWNlczsKKyAgICBfaGFuZGxlRWRpdGluZ1JlcGxhY2VtZW50ID0gaW5jbHVkZUVkaXRv
clNlcnZpY2VzOwogICAgIF9waWNrZXJDbGllbnQgPSBwaWNrZXJDbGllbnQ7CiAKICAgICByZXR1
cm4gc2VsZjsKICNlbmRpZgogfQogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTaGFyaW5nU2Vy
dmljZVBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXNoYXJpbmdTZXJ2aWNlUGlja2Vy
IGNsaWVudDooV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQmKXBpY2tlckNsaWVudAorewor
I2lmbmRlZiBfX0xQNjRfXworICAgIHJldHVybiBuaWw7CisjZWxzZQorICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3BpY2tlciA9IHNo
YXJpbmdTZXJ2aWNlUGlja2VyOworICAgIFtfcGlja2VyIHNldERlbGVnYXRlOnNlbGZdOworCisg
ICAgX2luY2x1ZGVFZGl0b3JTZXJ2aWNlcyA9IFlFUzsKKyAgICBfcGlja2VyQ2xpZW50ID0gJnBp
Y2tlckNsaWVudDsKKworICAgIHJldHVybiBzZWxmOworI2VuZGlmCit9CisjZW5kaWYgLy8gRU5B
QkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisKKwogLSAodm9pZCljbGVhcgogewogICAgIC8vIFByb3Rl
Y3Qgc2VsZiBmcm9tIGJlaW5nIGRlYWxsb2MnZWQgcGFydHdheSB0aHJvdWdoIHRoaXMgbWV0aG9k
LgpAQCAtMTQwLDkgKzE5MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAtICh2b2lk
KXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2UgZGlkU2hh
cmVJdGVtczooTlNBcnJheSAqKWl0ZW1zCiB7Ci0gICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IHdo
YXQgaXRlbSB3YXMgc2hhcmVkIGlmIHdlIHdlcmUgaW50ZXJlc3RlZCBpbiBlZGl0b3Igc2Vydmlj
ZXMKLSAgICAvLyAoaS5lLiwgaWYgd2UgcGxhbiBvbiByZXBsYWNpbmcgdGhlIHNlbGVjdGlvbiB3
aXRoIHRoZSByZXR1cm5lZCBpdGVtKQotICAgIGlmICghX2luY2x1ZGVFZGl0b3JTZXJ2aWNlcykK
KyAgICBpZiAoIV9oYW5kbGVFZGl0aW5nUmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIFdlIG9ubHkgc2VuZCBvbmUgaXRlbSwgc28gd2Ugc2hvdWxkIG9ubHkgZ2V0IG9uZSBp
dGVtIGJhY2suCkBAIC0yMTEsNCArMjYwLDQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IEBlbmQKIAotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaAppbmRleCAxOTRlMjA2Li4wZWExZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTM5LDcg
KzM5LDcgQEAgY2xhc3MgTm9kZTsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBwdWJs
aWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9M
UykKLSwgcHVibGljIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50CisgICAgLCBwdWJsaWMg
V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQKICNlbmRpZgogewogcHVibGljOgpAQCAtNjQs
MjEgKzY0LDE4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKICAgICAv
LyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBzaGFyaW5n
U2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIgJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlKiBwYWdlRm9yU2hh
cmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3dGb3JTaGFyaW5n
U2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3Qgc2NyZWVuUmVjdEZvckN1cnJlbnRT
aGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVy
ICYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TSW1hZ2U+IGltYWdlRm9yQ3Vy
cmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIgJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJl
dHVybiBtX3dlYlZpZXc7IH0KLSAgICAgICAgCiBwcml2YXRlOgogICAgIE5TTWVudSAqY29udGV4
dE1lbnVGb3JFdmVudChOU0V2ZW50ICosIE5TVmlldyAqLCBib29sJiBpc1NlcnZpY2VzTWVudSk7
CiAKICAgICBib29sIGNsaWVudEZsb2F0UmVjdEZvck5vZGUoV2ViQ29yZTo6Tm9kZSYsIFdlYkNv
cmU6OkZsb2F0UmVjdCYpIGNvbnN0OwogCi0gICAgV2ViVmlldyAqbV93ZWJWaWV3OwogI2lmIEVO
QUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgIFJldGFpblB0cjxXZWJTaGFyaW5nU2VydmljZVBp
Y2tlckNvbnRyb2xsZXI+IG1fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyOworI2Vsc2UK
KyAgICBXZWJWaWV3KiBtX3dlYlZpZXc7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4
IDcwZTI5NDQuLjI0ZGY2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC02Nyw4ICs2NywxMiBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIC0gKHZvaWQpc3BlYWtTdHJpbmc6KE5TU3RyaW5nICop
c3RyaW5nOwogQGVuZAogCi1XZWJDb250ZXh0TWVudUNsaWVudDo6V2ViQ29udGV4dE1lbnVDbGll
bnQoV2ViVmlldyAqd2ViVmlldykgCitXZWJDb250ZXh0TWVudUNsaWVudDo6V2ViQ29udGV4dE1l
bnVDbGllbnQoV2ViVmlldyAqd2ViVmlldykKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykK
KyAgICA6IFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KHdlYlZpZXcpCisjZWxzZQogICAg
IDogbV93ZWJWaWV3KHdlYlZpZXcpCisjZW5kaWYKIHsKIH0KIApAQCAtNDEyLDE2ICs0MTYsNiBA
QCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURl
c3Ryb3llZChXZWJTaGFyaW5nU2VydmljZQogICAgIG1fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250
cm9sbGVyID0gbmlsOwogfQogCi1XZWJDb3JlOjpQYWdlKiBXZWJDb250ZXh0TWVudUNsaWVudDo6
cGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJv
bGxlciAmKQotewotICAgIHJldHVybiBbbV93ZWJWaWV3IHBhZ2VdOwotfQotCi1SZXRhaW5QdHI8
TlNXaW5kb3c+IFdlYkNvbnRleHRNZW51Q2xpZW50Ojp3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBp
Y2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKLXsKLSAgICByZXR1cm4g
W21fd2ViVmlldyB3aW5kb3ddOwotfQotCiBXZWJDb3JlOjpGbG9hdFJlY3QgV2ViQ29udGV4dE1l
bnVDbGllbnQ6OnNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQogewogICAgIFBhZ2UqIHBhZ2UgPSBb
bV93ZWJWaWV3IHBhZ2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmgKaW5kZXggZDgx
YmJlMC4uNjViMjg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCkBAIC01MSwx
NCArNTEsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVu
dAogICAgIHZpcnR1YWwgdm9pZCBzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChX
ZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBXZWJDb3JlOjpQYWdlKiBwYWdlRm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmV0YWluUHRy
PE5TV2luZG93PiB3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2Vydmlj
ZVBpY2tlckNvbnRyb2xsZXIgJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9h
dFJlY3Qgc2NyZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmV0
YWluUHRyPE5TSW1hZ2U+IGltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShX
ZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
Ci0gICAgV2ViVmlldyAqbV93ZWJWaWV3OwotCiAgICAgUmV0YWluUHRyPFdlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlcj4gbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXI7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tCmluZGV4IDE0MGIxMGMuLjU1Y2Yz
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tCkBAIC0zNyw3ICszNyw3IEBA
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xs
ZXI6OldlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyKFdlYlZpZXcgKndlYlZpZXcpIAotICAg
IDogbV93ZWJWaWV3KHdlYlZpZXcpCisgICAgOiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVu
dCh3ZWJWaWV3KQogewogfQogCkBAIC01OCw2ICs1OCw3IEBAIHZvaWQgV2ViU2VsZWN0aW9uU2Vy
dmljZUNvbnRyb2xsZXI6OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhXZWJDb3JlOjpGcmFt
ZVNlCiAgICAgTlNBcnJheSAqaXRlbXMgPSBAWyBhdHRyaWJ1dGVkU2VsZWN0aW9uLmdldCgpIF07
CiAKICAgICBib29sIGlzRWRpdGFibGUgPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCkuaXNDb250ZW50
RWRpdGFibGUoKTsKKyAgICAKICAgICBtX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciA9
IGFkb3B0TlMoW1tXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgYWxsb2NdIGluaXRX
aXRoSXRlbXM6aXRlbXMgaW5jbHVkZUVkaXRvclNlcnZpY2VzOmlzRWRpdGFibGUgY2xpZW50OnRo
aXMgc3R5bGU6TlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlVGV4dFNlbGVjdGlvbl0pOwogCiAg
ICAgUmV0YWluUHRyPE5TTWVudT4gbWVudSA9IGFkb3B0TlMoW1ttX3NoYXJpbmdTZXJ2aWNlUGlj
a2VyQ29udHJvbGxlciBtZW51XSBjb3B5XSk7CkBAIC05NiwyNCArOTcsNCBAQCB2b2lkIFdlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ry
b3llZChXZWJTaGFyaQogICAgIG1fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyID0gbmls
OwogfQogCi1XZWJDb3JlOjpQYWdlKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6cGFn
ZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ciAmKQotewotICAgIHJldHVybiBbbV93ZWJWaWV3IHBhZ2VdOwotfQotCi1SZXRhaW5QdHI8TlNX
aW5kb3c+IFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjp3aW5kb3dGb3JTaGFyaW5nU2Vy
dmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKLXsKLSAgICBy
ZXR1cm4gW21fd2ViVmlldyB3aW5kb3ddOwotfQotCi1GbG9hdFJlY3QgV2ViU2VsZWN0aW9uU2Vy
dmljZUNvbnRyb2xsZXI6OnNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJ
dGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQotewotICAgIHJldHVybiBG
bG9hdFJlY3QoKTsKLX0KLQotUmV0YWluUHRyPE5TSW1hZ2U+IFdlYlNlbGVjdGlvblNlcnZpY2VD
b250cm9sbGVyOjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCi17Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA2ZGQ0
YzRjLi41YzM3YzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
QEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIldlYkFjdGlvbk1lbnVDb250cm9sbGVyLmgiCiAj
aW1wb3J0ICJXZWJBcmNoaXZlLmgiCiAjaW1wb3J0ICJXZWJDbGlwVmlldy5oIgorI2ltcG9ydCAi
V2ViQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbXBvcnQgIldlYkRPTU9wZXJhdGlvbnNJbnRlcm5h
bC5oIgogI2ltcG9ydCAiV2ViRGF0YVNvdXJjZUludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJEZWZh
dWx0VUlEZWxlZ2F0ZS5oIgpAQCAtNjcsNiArNjgsNyBAQAogI2ltcG9ydCAiV2ViUHJlZmVyZW5j
ZXMuaCIKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViUmVz
b3VyY2VQcml2YXRlLmgiCisjaW1wb3J0ICJXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXIuaCIKICNpbXBvcnQgIldlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5oIgogI2ltcG9ydCAi
V2ViVHlwZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIKQEAg
LTYyNCw2ICs2MjYsOCBAQCBzdHJ1Y3QgV2ViSFRNTFZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJh
bWV0ZXJzIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgQk9PTCBlbnVtZXJhdGluZ1N1YnZpZXdzOwog
I2VuZGlmCisKKyAgICBSZXRhaW5QdHI8V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVy
PiBjdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyOwogfQogLSAodm9pZCljbGVh
cjsKIEBlbmQKQEAgLTMzNTgsNiArMzM2MiwyMSBAQCBzdGF0aWMgdm9pZCBzZXRNZW51VGFyZ2V0
cyhOU01lbnUqIG1lbnUpCiAgICAgaWYgKCFjb3JlTWVudSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IAorICAgIGF1dG8gbWVudUl0ZW1WZWN0b3IgPSBjb250ZXh0TWVudUl0ZW1WZWN0b3IoY29yZU1l
bnUtPnBsYXRmb3JtRGVzY3JpcHRpb24oKSk7CisgICAgZm9yIChhdXRvJiBtZW51SXRlbSA6IG1l
bnVJdGVtVmVjdG9yKSB7CisgICAgICAgIGlmIChtZW51SXRlbS5hY3Rpb24oKSAhPSBDb250ZXh0
TWVudUl0ZW1UYWdTaGFyZU1lbnUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBO
U01lbnVJdGVtICpuc0l0ZW0gPSBtZW51SXRlbS5wbGF0Zm9ybURlc2NyaXB0aW9uKCk7CisgICAg
ICAgIGlmICghW25zSXRlbS5yZXByZXNlbnRlZE9iamVjdCBpc0tpbmRPZkNsYXNzOltOU1NoYXJp
bmdTZXJ2aWNlUGlja2VyIGNsYXNzXV0pIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyNpZiBFTkFCTEUoU0VSVklD
RV9DT05UUk9MUykKKyAgICAgICAgX3ByaXZhdGUtPmN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tl
ckNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVy
IGFsbG9jXSBpbml0V2l0aFNoYXJpbmdTZXJ2aWNlUGlja2VyOm5zSXRlbS5yZXByZXNlbnRlZE9i
amVjdCBjbGllbnQ6c3RhdGljX2Nhc3Q8V2ViQ29udGV4dE1lbnVDbGllbnQmPihwYWdlLT5jb250
ZXh0TWVudUNvbnRyb2xsZXIoKS5jbGllbnQoKSldKTsKKyNlbmRpZgorICAgIH0KKwogICAgIE5T
QXJyYXkqIG1lbnVJdGVtcyA9IGNvcmVNZW51LT5wbGF0Zm9ybURlc2NyaXB0aW9uKCk7CiAgICAg
aWYgKCFtZW51SXRlbXMpCiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdEYXRhLmgKaW5kZXggOGI5ZTk3ZC4uNmFlOTliYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKQEAgLTkzLDcgKzkzLDEwIEBAIGV4dGVybiBpbnQg
cGx1Z2luRGF0YWJhc2VDbGllbnRDb3VudDsKIAogY2xhc3MgTGF5ZXJGbHVzaENvbnRyb2xsZXI7
CiBjbGFzcyBXZWJWaWV3R3JvdXA7CisKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKIGNs
YXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOworI2VuZGlmCiAKIGNsYXNzIFdlYlZp
ZXdMYXllckZsdXNoU2NoZWR1bGVyIDogcHVibGljIFdlYkNvcmU6OkxheWVyRmx1c2hTY2hlZHVs
ZXIgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBmYjg4MGM0Li5iYWY0ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtNDA2MCw4ICs0MDYwLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnRl
cm5hbFNob3dDb250ZXh0TWVudShjb25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBD
CiAgICAgICAgIH0KIAogICAgICAgICBDb250ZXh0TWVudUl0ZW0gY29yZUl0ZW0gPSBDb250ZXh0
TWVudUl0ZW06OnNoYXJlTWVudUl0ZW0oYWJzb2x1dGVMaW5rVVJMLCBkb3dubG9hZGFibGVNZWRp
YVVSTCwgaW1hZ2UuZ2V0KCksIGNvbnRleHRNZW51Q29udGV4dERhdGEuc2VsZWN0ZWRUZXh0KCkp
OwotICAgICAgICBpZiAoIWNvcmVJdGVtLmlzTnVsbCgpKQorICAgICAgICBpZiAoIWNvcmVJdGVt
LmlzTnVsbCgpKSB7CisgICAgICAgICAgICBwbGF0Zm9ybUluaXRpYWxpemVTaGFyZU1lbnVJdGVt
KGNvcmVJdGVtKTsKICAgICAgICAgICAgIHByb3Bvc2VkQVBJSXRlbXMuYXBwZW5kKFdlYkNvbnRl
eHRNZW51SXRlbTo6Y3JlYXRlKGNvcmVJdGVtKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBW
ZWN0b3I8UmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4+IGNsaWVudEl0ZW1zOwpAQCAtNDA3Nyw2
ICs0MDc5LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudShj
b25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBDCiAgICAgbV9jb250ZXh0TWVudUNs
aWVudC0+Y29udGV4dE1lbnVEaXNtaXNzZWQoKnRoaXMpOwogfQogCisjaWYgIVBMQVRGT1JNKE1B
QykKK3ZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVTaGFyZU1lbnVJdGVtKENv
bnRleHRNZW51SXRlbSYpCit7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCiB7
CiAgICAgLy8gQXBwbGljYXRpb24gY3VzdG9tIGl0ZW1zIGRvbid0IG5lZWQgdG8gcm91bmQtdHJp
cCB0aHJvdWdoIHRvIFdlYkNvcmUgaW4gdGhlIFdlYlByb2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2QxMTAyMS4uMjcyMTNiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTIzMyw2ICsxMjMzLDggQEAgcHJpdmF0
ZToKICAgICB9OwogICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBtZW51TG9jYXRpb24sIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25zdCBW
ZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZv
aWQgaW50ZXJuYWxTaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1lbnVM
b2NhdGlvbiwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFZlY3RvcjxXZWJD
b250ZXh0TWVudUl0ZW1EYXRhPiYsIENvbnRleHRNZW51Q2xpZW50RWxpZ2liaWxpdHksIGNvbnN0
IFVzZXJEYXRhJik7CisKKyAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVNoYXJlTWVudUl0ZW0o
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShURUxFUEhP
TkVfTlVNQkVSX0RFVEVDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YTM1NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5o
CkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLU2hhcmluZ1NlcnZpY2VQ
aWNrZXJEZWxlZ2F0ZV9oCisjZGVmaW5lIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV9o
CisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xh
c3MgV2ViQ29udGV4dE1lbnVQcm94eU1hYzsKK30KKworQGNsYXNzIE5TU2hhcmluZ1NlcnZpY2VQ
aWNrZXI7CisKK0BpbnRlcmZhY2UgV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIDogTlNP
YmplY3QgPE5TU2hhcmluZ1NlcnZpY2VEZWxlZ2F0ZSwgTlNTaGFyaW5nU2VydmljZVBpY2tlckRl
bGVnYXRlPiB7CisgICAgV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiBfbWVudVByb3h5
OworICAgIFJldGFpblB0cjxOU1NoYXJpbmdTZXJ2aWNlUGlja2VyPiBfcGlja2VyOworICAgIEJP
T0wgX2ZpbHRlckVkaXRpbmdTZXJ2aWNlczsKKyAgICBCT09MIF9oYW5kbGVFZGl0aW5nUmVwbGFj
ZW1lbnQ7Cit9CisKKysgKFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSAqKXNoYXJlZFNo
YXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGU7CistIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHlNYWMqKW1lbnVQcm94eTsKKy0gKHZvaWQpc2V0TWVudVByb3h5OihXZWJLaXQ6OldlYkNvbnRl
eHRNZW51UHJveHlNYWMqKW1lbnVQcm94eTsKKy0gKHZvaWQpc2V0UGlja2VyOihOU1NoYXJpbmdT
ZXJ2aWNlUGlja2VyICopcGlja2VyOworLSAodm9pZClzZXRGaWx0ZXJzRWRpdGluZ1NlcnZpY2Vz
OihCT09MKWZpbHRlcnNFZGl0aW5nU2VydmljZXM7CistICh2b2lkKXNldEhhbmRsZXNFZGl0aW5n
UmVwbGFjZW1lbnQ6KEJPT0wpaGFuZGxlc0VkaXRpbmdSZXBsYWNlbWVudDsKK0BlbmQKKworI2Vu
ZGlmIC8vIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2VydmljZVBpY2tlckRl
bGVnYXRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1ZjBmZTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1Nl
cnZpY2VQaWNrZXJEZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRl
LmgiCisKKyNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbXBvcnQgIldlYkNvbnRleHRNZW51
UHJveHlNYWMuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCA8V2ViQ29yZS9O
U1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmg+CisjaW1wb3J0IDxXZWJDb3JlL05TU2hhcmluZ1Nl
cnZpY2VTUEkuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisvLyBGSVhNRTog
V2UgcHJvYmFibHkgbmVlZCB0byBoYW5nIG9uIHRoZSBwaWNrZXIgaXRzZWxmIHVudGlsIHRoZSBj
b250ZXh0IG1lbnUgb3BlcmF0aW9uIGlzIGRvbmUsIGFuZCB0aGlzIG9iamVjdCB3aWxsIHByb2Jh
Ymx5IGRvIHRoYXQuCitAaW1wbGVtZW50YXRpb24gV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVn
YXRlCisKKysgKFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSopc2hhcmVkU2hhcmluZ1Nl
cnZpY2VQaWNrZXJEZWxlZ2F0ZQoreworICAgIHN0YXRpYyBXS1NoYXJpbmdTZXJ2aWNlUGlja2Vy
RGVsZWdhdGUqIGRlbGVnYXRlID0gW1tXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgYWxs
b2NdIGluaXRdOworICAgIHJldHVybiBkZWxlZ2F0ZTsKK30KKworLSAoV2ViS2l0OjpXZWJDb250
ZXh0TWVudVByb3h5TWFjKiltZW51UHJveHkKK3sKKyAgICByZXR1cm4gX21lbnVQcm94eTsKK30K
KworLSAodm9pZClzZXRNZW51UHJveHk6KFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyop
bWVudVByb3h5Cit7CisgICAgX21lbnVQcm94eSA9IG1lbnVQcm94eTsKK30KKworLSAodm9pZClz
ZXRQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgKilwaWNrZXIKK3sKKyAgICBfcGlja2Vy
ID0gcGlja2VyOworfQorCistICh2b2lkKXNldEZpbHRlcnNFZGl0aW5nU2VydmljZXM6KEJPT0wp
ZmlsdGVyc0VkaXRpbmdTZXJ2aWNlcworeworICAgIF9maWx0ZXJFZGl0aW5nU2VydmljZXMgPSBm
aWx0ZXJzRWRpdGluZ1NlcnZpY2VzOworfQorCistICh2b2lkKXNldEhhbmRsZXNFZGl0aW5nUmVw
bGFjZW1lbnQ6KEJPT0wpaGFuZGxlc0VkaXRpbmdSZXBsYWNlbWVudAoreworICAgIF9oYW5kbGVF
ZGl0aW5nUmVwbGFjZW1lbnQgPSBoYW5kbGVzRWRpdGluZ1JlcGxhY2VtZW50OworfQorCistIChO
U0FycmF5ICopc2hhcmluZ1NlcnZpY2VQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgKilz
aGFyaW5nU2VydmljZVBpY2tlciBzaGFyaW5nU2VydmljZXNGb3JJdGVtczooTlNBcnJheSAqKWl0
ZW1zIG1hc2s6KE5TU2hhcmluZ1NlcnZpY2VNYXNrKW1hc2sgcHJvcG9zZWRTaGFyaW5nU2Vydmlj
ZXM6KE5TQXJyYXkgKilwcm9wb3NlZFNlcnZpY2VzCit7CisgICAgaWYgKCFfZmlsdGVyRWRpdGlu
Z1NlcnZpY2VzKQorICAgICAgICByZXR1cm4gcHJvcG9zZWRTZXJ2aWNlczsKKworICAgIE5TTXV0
YWJsZUFycmF5ICpzZXJ2aWNlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2Fw
YWNpdHk6W3Byb3Bvc2VkU2VydmljZXMgY291bnRdXTsKKyAgICAKKyAgICBmb3IgKE5TU2hhcmlu
Z1NlcnZpY2UgKnNlcnZpY2UgaW4gcHJvcG9zZWRTZXJ2aWNlcykgeworICAgICAgICBpZiAoc2Vy
dmljZS50eXBlICE9IE5TU2hhcmluZ1NlcnZpY2VUeXBlRWRpdG9yKQorICAgICAgICAgICAgW3Nl
cnZpY2VzIGFkZE9iamVjdDpzZXJ2aWNlXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHNlcnZp
Y2VzOworfQorCistIChpZCA8TlNTaGFyaW5nU2VydmljZURlbGVnYXRlPilzaGFyaW5nU2Vydmlj
ZVBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXNoYXJpbmdTZXJ2aWNlUGlja2VyIGRl
bGVnYXRlRm9yU2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2Vydmlj
ZQoreworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXNoYXJpbmdTZXJ2aWNlOihOU1No
YXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2Ugd2lsbFNoYXJlSXRlbXM6KE5TQXJyYXkgKilp
dGVtcworeworICAgIF9tZW51UHJveHktPmNsZWFyU2VydmljZXNNZW51KCk7Cit9CisKKy0gKHZv
aWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBkaWRT
aGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMKK3sKKyAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQg
d2hhdCBpdGVtIHdhcyBzaGFyZWQgaWYgd2Ugd2VyZSBpbnRlcmVzdGVkIGluIGVkaXRvciBzZXJ2
aWNlcworICAgIC8vIChpLmUuLCBpZiB3ZSBwbGFuIG9uIHJlcGxhY2luZyB0aGUgc2VsZWN0aW9u
IHdpdGggdGhlIHJldHVybmVkIGl0ZW0pCisgICAgaWYgKCFfaGFuZGxlRWRpdGluZ1JlcGxhY2Vt
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKKyAgICBJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKworICAgIGlkIGl0ZW0gPSBbaXRlbXMg
b2JqZWN0QXRJbmRleDowXTsKKworICAgIGlmIChbaXRlbSBpc0tpbmRPZkNsYXNzOltOU0F0dHJp
YnV0ZWRTdHJpbmcgY2xhc3NdXSkgeworICAgICAgICBOU0RhdGEgKmRhdGEgPSBbaXRlbSBSVEZE
RnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtpdGVtIGxlbmd0aF0pIGRvY3VtZW50QXR0cmlidXRl
czpuaWxdOworICAgICAgICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKwor
ICAgICAgICB0eXBlcy5hcHBlbmQoTlNQYXN0ZWJvYXJkVHlwZVJURkQpOworICAgICAgICB0eXBl
cy5hcHBlbmQoTlNSVEZEUGJvYXJkVHlwZSk7CisgICAgfSBlbHNlIGlmIChbaXRlbSBpc0tpbmRP
ZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkgeworICAgICAgICBOU0RhdGEgKmRhdGEgPSAoTlNEYXRh
ICopaXRlbTsKKyAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IHNvdXJjZSA9IGFk
b3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChDRkRhdGFSZWYpZGF0YSwgTlVMTCkp
OworICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VT
b3VyY2VDcmVhdGVJbWFnZUF0SW5kZXgoc291cmNlLmdldCgpLCAwLCBOVUxMKSk7CisKKyAgICAg
ICAgaWYgKCFpbWFnZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBkYXRhUmVmZXJl
bmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0
YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICAgICAgdHlwZXMuYXBwZW5kKE5TUGFzdGVi
b2FyZFR5cGVUSUZGKTsKKyAgICB9IGVsc2UgeworICAgICAgICBMT0dfRVJST1IoInNoYXJpbmdT
ZXJ2aWNlOmRpZFNoYXJlSXRlbXM6IC0gVW5rbm93biBpdGVtIHR5cGUgcmV0dXJuZWRcbiIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhZG9wdCBy
ZXBsYWNlU2VsZWN0aW9uV2l0aEF0dHJpYnV0ZWRTdHJpbmcgaW5zdGVhZCBvZiBib3VuY2luZyB0
aHJvdWdoIHRoZSAoZmFrZSkgcGFzdGVib2FyZC4KKyAgICBfbWVudVByb3h5LT5wYWdlKCkucmVw
bGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0eXBlcywgZGF0YVJlZmVyZW5jZSk7Cit9
CisKKy0gKE5TV2luZG93ICopc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFy
aW5nU2VydmljZSBzb3VyY2VXaW5kb3dGb3JTaGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMgc2hh
cmluZ0NvbnRlbnRTY29wZTooTlNTaGFyaW5nQ29udGVudFNjb3BlICopc2hhcmluZ0NvbnRlbnRT
Y29wZQoreworICAgIHJldHVybiBfbWVudVByb3h5LT53aW5kb3coKTsKK30KKworQGVuZAorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJv
eHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJv
eHlNYWMubW0KaW5kZXggNTU4MGVkMS4uNTEzZWEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQpAQCAtMzQsMTAg
KzM0LDExIEBACiAjaW1wb3J0ICJTZXJ2aWNlc0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIlNoYXJl
YWJsZUJpdG1hcC5oIgogI2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJXS1No
YXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldLVmlldy5oIgogI2ltcG9y
dCAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudUl0ZW1EYXRh
LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbXBvcnQgIldLVmlldy5oIgogI2lt
cG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW50UmVj
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9OU1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmg+CkBAIC0x
NDcsMTE5ICsxNDgsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGVuZAogCi0jaWYg
RU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi1AaW50ZXJmYWNlIFdLU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1NoYXJpbmdTZXJ2aWNlRGVsZWdhdGUsIE5TU2hhcmlu
Z1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZT4gewotICAgIFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94
eU1hYyogX21lbnVQcm94eTsKLSAgICBSZXRhaW5QdHI8TlNTaGFyaW5nU2VydmljZVBpY2tlcj4g
X3BpY2tlcjsKLSAgICBCT09MIF9pbmNsdWRlRWRpdG9yU2VydmljZXM7Ci19Ci0KLSsgKFdLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSAqKXNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVs
ZWdhdGU7Ci0tIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eTsKLS0g
KHZvaWQpc2V0TWVudVByb3h5OihXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQ
cm94eTsKLS0gKHZvaWQpc2V0UGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICopcGlja2Vy
OwotLSAodm9pZClzZXRJbmNsdWRlRWRpdG9yU2VydmljZXM6KEJPT0wpaW5jbHVkZUVkaXRvclNl
cnZpY2VzOwotQGVuZAotCi0vLyBGSVhNRTogV2UgcHJvYmFibHkgbmVlZCB0byBoYW5nIG9uIHRo
ZSBwaWNrZXIgaXRzZWxmIHVudGlsIHRoZSBjb250ZXh0IG1lbnUgb3BlcmF0aW9uIGlzIGRvbmUs
IGFuZCB0aGlzIG9iamVjdCB3aWxsIHByb2JhYmx5IGRvIHRoYXQuCi1AaW1wbGVtZW50YXRpb24g
V0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlCi0rIChXS1NoYXJpbmdTZXJ2aWNlUGlja2Vy
RGVsZWdhdGUqKXNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUKLXsKLSAgICBzdGF0
aWMgV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlKiBkZWxlZ2F0ZSA9IFtbV0tTaGFyaW5n
U2VydmljZVBpY2tlckRlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAgICByZXR1cm4gZGVsZWdhdGU7
Ci19Ci0KLS0gKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVudVByb3h5Ci17Ci0g
ICAgcmV0dXJuIF9tZW51UHJveHk7Ci19Ci0KLS0gKHZvaWQpc2V0TWVudVByb3h5OihXZWJLaXQ6
OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eQotewotICAgIF9tZW51UHJveHkgPSBt
ZW51UHJveHk7Ci19Ci0KLS0gKHZvaWQpc2V0UGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2Vy
ICopcGlja2VyCi17Ci0gICAgX3BpY2tlciA9IHBpY2tlcjsKLX0KLQotLSAodm9pZClzZXRJbmNs
dWRlRWRpdG9yU2VydmljZXM6KEJPT0wpaW5jbHVkZUVkaXRvclNlcnZpY2VzCi17Ci0gICAgX2lu
Y2x1ZGVFZGl0b3JTZXJ2aWNlcyA9IGluY2x1ZGVFZGl0b3JTZXJ2aWNlczsKLX0KLQotLSAoTlNB
cnJheSAqKXNoYXJpbmdTZXJ2aWNlUGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICopc2hh
cmluZ1NlcnZpY2VQaWNrZXIgc2hhcmluZ1NlcnZpY2VzRm9ySXRlbXM6KE5TQXJyYXkgKilpdGVt
cyBtYXNrOihOU1NoYXJpbmdTZXJ2aWNlTWFzayltYXNrIHByb3Bvc2VkU2hhcmluZ1NlcnZpY2Vz
OihOU0FycmF5ICopcHJvcG9zZWRTZXJ2aWNlcwotewotICAgIGlmIChfaW5jbHVkZUVkaXRvclNl
cnZpY2VzKQotICAgICAgICByZXR1cm4gcHJvcG9zZWRTZXJ2aWNlczsKLQotICAgIE5TTXV0YWJs
ZUFycmF5ICpzZXJ2aWNlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNp
dHk6W3Byb3Bvc2VkU2VydmljZXMgY291bnRdXTsKLSAgICAKLSAgICBmb3IgKE5TU2hhcmluZ1Nl
cnZpY2UgKnNlcnZpY2UgaW4gcHJvcG9zZWRTZXJ2aWNlcykgewotICAgICAgICBpZiAoc2Vydmlj
ZS50eXBlICE9IE5TU2hhcmluZ1NlcnZpY2VUeXBlRWRpdG9yKQotICAgICAgICAgICAgW3NlcnZp
Y2VzIGFkZE9iamVjdDpzZXJ2aWNlXTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHNlcnZpY2Vz
OwotfQotCi0tIChpZCA8TlNTaGFyaW5nU2VydmljZURlbGVnYXRlPilzaGFyaW5nU2VydmljZVBp
Y2tlcjooTlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXNoYXJpbmdTZXJ2aWNlUGlja2VyIGRlbGVn
YXRlRm9yU2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZQot
ewotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJp
bmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2Ugd2lsbFNoYXJlSXRlbXM6KE5TQXJyYXkgKilpdGVt
cwotewotICAgIF9tZW51UHJveHktPmNsZWFyU2VydmljZXNNZW51KCk7Ci19Ci0KLS0gKHZvaWQp
c2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBkaWRTaGFy
ZUl0ZW1zOihOU0FycmF5ICopaXRlbXMKLXsKLSAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgd2hh
dCBpdGVtIHdhcyBzaGFyZWQgaWYgd2Ugd2VyZSBpbnRlcmVzdGVkIGluIGVkaXRvciBzZXJ2aWNl
cwotICAgIC8vIChpLmUuLCBpZiB3ZSBwbGFuIG9uIHJlcGxhY2luZyB0aGUgc2VsZWN0aW9uIHdp
dGggdGhlIHJldHVybmVkIGl0ZW0pCi0gICAgaWYgKCFfaW5jbHVkZUVkaXRvclNlcnZpY2VzKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBJUEM6OkRh
dGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLQotICAgIGlkIGl0ZW0gPSBbaXRlbXMgb2JqZWN0
QXRJbmRleDowXTsKLQotICAgIGlmIChbaXRlbSBpc0tpbmRPZkNsYXNzOltOU0F0dHJpYnV0ZWRT
dHJpbmcgY2xhc3NdXSkgewotICAgICAgICBOU0RhdGEgKmRhdGEgPSBbaXRlbSBSVEZERnJvbVJh
bmdlOk5TTWFrZVJhbmdlKDAsIFtpdGVtIGxlbmd0aF0pIGRvY3VtZW50QXR0cmlidXRlczpuaWxd
OwotICAgICAgICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKLQotICAgICAg
ICB0eXBlcy5hcHBlbmQoTlNQYXN0ZWJvYXJkVHlwZVJURkQpOwotICAgICAgICB0eXBlcy5hcHBl
bmQoTlNSVEZEUGJvYXJkVHlwZSk7Ci0gICAgfSBlbHNlIGlmIChbaXRlbSBpc0tpbmRPZkNsYXNz
OltOU0RhdGEgY2xhc3NdXSkgewotICAgICAgICBOU0RhdGEgKmRhdGEgPSAoTlNEYXRhICopaXRl
bTsKLSAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IHNvdXJjZSA9IGFkb3B0Q0Yo
Q0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChDRkRhdGFSZWYpZGF0YSwgTlVMTCkpOwotICAg
ICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VD
cmVhdGVJbWFnZUF0SW5kZXgoc291cmNlLmdldCgpLCAwLCBOVUxMKSk7Ci0KLSAgICAgICAgaWYg
KCFpbWFnZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBkYXRhUmVmZXJlbmNlID0g
SVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRl
c10pLCBbZGF0YSBsZW5ndGhdKTsKLSAgICAgICAgdHlwZXMuYXBwZW5kKE5TUGFzdGVib2FyZFR5
cGVUSUZGKTsKLSAgICB9IGVsc2UgewotICAgICAgICBMT0dfRVJST1IoInNoYXJpbmdTZXJ2aWNl
OmRpZFNoYXJlSXRlbXM6IC0gVW5rbm93biBpdGVtIHR5cGUgcmV0dXJuZWRcbiIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhZG9wdCByZXBsYWNl
U2VsZWN0aW9uV2l0aEF0dHJpYnV0ZWRTdHJpbmcgaW5zdGVhZCBvZiBib3VuY2luZyB0aHJvdWdo
IHRoZSAoZmFrZSkgcGFzdGVib2FyZC4KLSAgICBfbWVudVByb3h5LT5wYWdlKCkucmVwbGFjZVNl
bGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0eXBlcywgZGF0YVJlZmVyZW5jZSk7Ci19Ci0KLS0g
KE5TV2luZG93ICopc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2Vy
dmljZSBzb3VyY2VXaW5kb3dGb3JTaGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMgc2hhcmluZ0Nv
bnRlbnRTY29wZTooTlNTaGFyaW5nQ29udGVudFNjb3BlICopc2hhcmluZ0NvbnRlbnRTY29wZQot
ewotICAgIHJldHVybiBfbWVudVByb3h5LT53aW5kb3coKTsKLX0KLQotQGVuZAotCi0jZW5kaWYK
LQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkNvbnRleHRNZW51UHJveHlNYWM6OldlYkNvbnRl
eHRNZW51UHJveHlNYWMoV0tWaWV3KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkqIHBhZ2UpCkBAIC0z
OTIsNyArMjgwLDggQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzZXR1cFNlcnZpY2Vz
TWVudShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiBjb24KICAgICBbcGlja2VyIHNldFN0
eWxlOmhhc0NvbnRyb2xsZWRJbWFnZSA/IE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZVJvbGxv
dmVyIDogTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlVGV4dFNlbGVjdGlvbl07CiAgICAgW3Bp
Y2tlciBzZXREZWxlZ2F0ZTpbV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNoYXJlZFNo
YXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVdXTsKICAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRQaWNrZXI6
cGlja2VyLmdldCgpXTsKLSAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFy
ZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRJbmNsdWRlRWRpdG9yU2VydmljZXM6
aW5jbHVkZUVkaXRvclNlcnZpY2VzXTsKKyAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxl
Z2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRGaWx0ZXJzRWRpdGlu
Z1NlcnZpY2VzOiFpbmNsdWRlRWRpdG9yU2VydmljZXNdOworICAgIFtbV0tTaGFyaW5nU2Vydmlj
ZVBpY2tlckRlbGVnYXRlIHNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVdIHNldEhh
bmRsZXNFZGl0aW5nUmVwbGFjZW1lbnQ6aW5jbHVkZUVkaXRvclNlcnZpY2VzXTsKIAogICAgIG1f
c2VydmljZXNNZW51ID0gYWRvcHROUyhbW3BpY2tlciBtZW51XSBjb3B5XSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggZTM4Yjlm
Zi4uOWExNDFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KQEAgLTQzLDYgKzQzLDggQEAKICNpbXBvcnQgIlN0cmluZ1V0aWxpdGllcy5o
IgogI2ltcG9ydCAiVGV4dENoZWNrZXIuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlckludGVybmFsLmgiCisjaW1wb3J0ICJXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdh
dGUuaCIKKyNpbXBvcnQgIldlYkNvbnRleHRNZW51UHJveHlNYWMuaCIKICNpbXBvcnQgIldlYlBh
Z2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxXZWJD
b3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+CkBAIC03NDUsNiArNzQ3LDIxIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjplZGl0b3JTdGF0ZUNoYW5nZWQoY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRvclN0
YXRlKQogICAgIH0KICNlbmRpZgogfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1Jbml0
aWFsaXplU2hhcmVNZW51SXRlbShDb250ZXh0TWVudUl0ZW0mIGl0ZW0pCit7CisgICAgTlNNZW51
SXRlbSAqbnNJdGVtID0gaXRlbS5wbGF0Zm9ybURlc2NyaXB0aW9uKCk7CisKKyAgICBOU1NoYXJp
bmdTZXJ2aWNlUGlja2VyICpzaGFyaW5nU2VydmljZVBpY2tlciA9IFtuc0l0ZW0gcmVwcmVzZW50
ZWRPYmplY3RdOworICAgIHNoYXJpbmdTZXJ2aWNlUGlja2VyLmRlbGVnYXRlID0gW1dLU2hhcmlu
Z1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRl
XTsKKyAgICAKKyAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFy
aW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRGaWx0ZXJzRWRpdGluZ1NlcnZpY2VzOk5PXTsK
KyAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2Vydmlj
ZVBpY2tlckRlbGVnYXRlXSBzZXRIYW5kbGVzRWRpdGluZ1JlcGxhY2VtZW50Ok5PXTsKKyAgICBb
W1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tl
ckRlbGVnYXRlXSBzZXRNZW51UHJveHk6c3RhdGljX2Nhc3Q8V2ViQ29udGV4dE1lbnVQcm94eU1h
Yyo+KG1fYWN0aXZlQ29udGV4dE1lbnUuZ2V0KCkpXTsKKworICAgIC8vIFNldHRpbmcgdGhlIHBp
Y2tlciBsZXRzIHRoZSBkZWxlZ2F0ZSByZXRhaW4gaXQgdG8ga2VlcCBpdCBhbGl2ZSwgYnV0IHRo
aXMgcGlja2VyIGlzIGtlcHQgYWxpdmUgYnkgdGhlIG1lbnUgaXRlbS4KKyAgICBbW1dLU2hhcmlu
Z1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRl
XSBzZXRQaWNrZXI6bmlsXTsKK30KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NmQ4MjY2YS4uMmQzNDRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTI1LDYgKzkyNSw4IEBACiAJCTUxM0ExNjNEMTYzMDg4
RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0ExNjNCMTYzMDg4RjYwMDVEN0Qy
MiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJNTEzQTE2NEMxNjMw
QTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0ExNjQ5MTYzMEE5QkYw
MDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgKi87IH07CiAJCTUx
M0ExNjREMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzQTE2NEEx
NjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggKi87IH07
CisJCTUxM0U0NjJEMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVs
ZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
M0U0NjJCMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUu
aCAqLzsgfTsKKwkJNTEzRTQ2MkUxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQ
aWNrZXJEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxM0U0NjJDMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2Vy
RGVsZWdhdGUubW0gKi87IH07CiAJCTUxNEJERUQzMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0
aWNzUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggKi87IH07
CiAJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU1MTkxMTlE
MzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNTE0RDlGNTgxOTEx
OUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU2MTkxMTlEMzUwMDAwNjNBNyAvKiBT
ZXJ2aWNlc0NvbnRyb2xsZXIubW0gKi87IH07CkBAIC0zMTE1LDYgKzMxMTcsOCBAQAogCQk1MTNB
MTY0OTE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTNBMTY0QTE2
MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxM0ExNjRCMTYzMEE5QkYwMDVEN0QyMiAv
KiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjsgcGF0
aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTNFNDYyQjFBRDgzNzU2MDAxNjIz
NEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTNFNDYyQzFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFy
aW5nU2VydmljZVBpY2tlckRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTRCREVEMjE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGlj
c1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlzdGljc1Jl
cXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTUxOTExOUQzNTAw
MDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTZXJ2aWNlc0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE0RDlGNTYxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VzQ29udHJvbGxlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwNjMsNiArNzA2Nyw4IEBACiAJCQkJ
MEZDQjRFNUQxOEJCRTNEOTAwMEZDRkM5IC8qIFdLUHJpbnRpbmdWaWV3Lm1tICovLAogCQkJCTBG
Q0I0RTVFMThCQkUzRDkwMDBGQ0ZDOSAvKiBXS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIuaCAq
LywKIAkJCQkwRkNCNEU1RjE4QkJFM0Q5MDAwRkNGQzkgLyogV0tUZXh0SW5wdXRXaW5kb3dDb250
cm9sbGVyLm1tICovLAorCQkJCTUxM0U0NjJCMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCAqLywKKwkJCQk1MTNFNDYyQzFBRDgzNzU2MDAxNjIzNEEg
LyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLm1tICovLAogCQkJKTsKIAkJCXBhdGgg
PSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzkzNSw2ICs3OTQxLDcgQEAK
IAkJCQkxQTVFNERBNDEyRDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0UxQTBCRDcxQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjI2MzkxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTNFNDYyRDFBRDgz
NzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUYwNUQ4NzE0Njg4MzQ4MDA4QjFFODEgLyogVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGRTQzNjYxOEI2QzA4MTAw
OUM3QTQ4IC8qIFVJRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFRTRBRTJCMUE1RENG
NDMwMDAyRjQ5QiAvKiBVSUtpdFNQSS5oIGluIEhlYWRlcnMgKi8sCkBAIC05ODY0LDYgKzk4NzEs
NyBAQAogCQkJCTMxQTJFQzQ4MTQ4OTk3QzIwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwOTk5NzMxNDZDNzVBMjAwMjlERUI5IC8qIFdlYk5vdGlm
aWNhdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTMxMjYyMDE0OEZGODJDMDBC
QTJBMzkgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MTNFNDYyRTFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRl
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFCQTkyNEQxNDg4MzEyNjAwNjJFREI1IC8qIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzFBMkVDNEExNDg5OTdDMjAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUEyRUM0RDE0ODk5N0MyMDA4MTBENzEgLyogV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250660</attachid>
            <date>2015-04-13 11:41:54 -0700</date>
            <delta_ts>2015-04-13 11:44:53 -0700</delta_ts>
            <desc>Patch v5 - Still more feature guards</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>37131</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCmluZGV4IDM1NzM5
ZDguLjBmNTg1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgfkNvbnRleHRNZW51Q29udHJvbGxl
cigpOwogCiAgICAgUGFnZSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIENvbnRleHRN
ZW51Q2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCiAgICAgQ29udGV4dE1l
bnUqIGNvbnRleHRNZW51KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0TWVudS5nZXQoKTsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDb250ZXh0TWVudSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9s
bGVyLmgKaW5kZXggYTNjYmNiMS4uYTliNDJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oCkBAIC0y
NiwxMCArMjYsMTQgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKIAogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorCisjaWYgUExBVEZPUk0oTUFDKQogI2ltcG9ydCA8V2ViQ29yZS9O
U1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05TU2hhcmluZ1Nl
cnZpY2VTUEkuaD4KKyNlbmRpZgogCiBAY2xhc3MgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250
cm9sbGVyOworQGNsYXNzIFdlYlZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZs
b2F0UmVjdDsKQEAgLTQyLDIxICs0NiwyOSBAQCBjbGFzcyBXZWJTaGFyaW5nU2VydmljZVBpY2tl
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
bGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzaGFyaW5nU2VydmljZVBpY2tlcldpbGxC
ZURlc3Ryb3llZChXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgPSAwOwotICAg
IHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogcGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSA9IDA7Ci0gICAgdmlydHVhbCBSZXRhaW5Q
dHI8TlNXaW5kb3c+IHdpbmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlciAmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNoYXJpbmdTZXJ2
aWNlUGlja2VyV2lsbEJlRGVzdHJveWVkKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ciAmKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIHBhZ2VGb3JTaGFyaW5nU2VydmljZVBp
Y2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJik7CisgICAgdmlydHVhbCBS
ZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKTsKKworICAgIHZpcnR1YWwgV2ViQ29yZTo6Rmxv
YXRSZWN0IHNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKTsKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxO
U0ltYWdlPiBpbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpOworCisgICAgV2ViVmlldyAqd2ViVmlldygpIHsg
cmV0dXJuIG1fd2ViVmlldzsgfQogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3Qgc2Ny
ZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyICYpID0gMDsKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxOU0ltYWdl
PiBpbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyICYpID0gMDsKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNsaWVudChXZWJWaWV3ICopOworICAgIFdlYlZpZXcgKm1fd2Vi
VmlldzsKIH07CiAKIEBpbnRlcmZhY2UgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVy
IDogTlNPYmplY3QgPE5TU2hhcmluZ1NlcnZpY2VEZWxlZ2F0ZSwgTlNTaGFyaW5nU2VydmljZVBp
Y2tlckRlbGVnYXRlPiB7CiAgICAgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQqIF9waWNr
ZXJDbGllbnQ7CiAgICAgUmV0YWluUHRyPE5TU2hhcmluZ1NlcnZpY2VQaWNrZXI+IF9waWNrZXI7
CiAgICAgQk9PTCBfaW5jbHVkZUVkaXRvclNlcnZpY2VzOworICAgIEJPT0wgX2hhbmRsZUVkaXRp
bmdSZXBsYWNlbWVudDsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSXRlbXM6KE5TQXJy
YXkgKilpdGVtcyBpbmNsdWRlRWRpdG9yU2VydmljZXM6KEJPT0wpaW5jbHVkZUVkaXRvclNlcnZp
Y2VzIGNsaWVudDooV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQqKXBpY2tlckNsaWVudCBz
dHlsZTooTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlKXN0eWxlOworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoU2hhcmluZ1NlcnZpY2VQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgKilz
aGFyaW5nU2VydmljZVBpY2tlciBjbGllbnQ6KFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50
JilwaWNrZXJDbGllbnQ7CiAtIChOU01lbnUgKiltZW51OwogLSAodm9pZClkaWRTaGFyZUltYWdl
RGF0YTooTlNEYXRhICopZGF0YSBjb25maXJtRGF0YUlzVmFsaWRUSUZGRGF0YTooQk9PTCljb25m
aXJtRGF0YTsKIC0gKHZvaWQpY2xlYXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9N
aXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCmluZGV4IDM0Nzg3
YmEuLmJkZmI0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2Mv
V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCkBAIC00Miw4ICs0MiwzOCBAQCBz
dGF0aWMgTlNTdHJpbmcgKnNlcnZpY2VDb250cm9sc1Bhc3RlYm9hcmROYW1lID0gQCJXZWJLaXRT
ZXJ2aWNlQ29udHJvbHNQYXN0ZWJvYQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorV2Vi
U2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQ6OldlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50
KFdlYlZpZXcgKndlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKK3sKK30KKwordm9p
ZCBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudDo6c2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxs
QmVEZXN0cm95ZWQoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCit7Cit9CisK
K1BhZ2UqIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50OjpwYWdlRm9yU2hhcmluZ1NlcnZp
Y2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCit7CisgICAgcmV0
dXJuIFttX3dlYlZpZXcgcGFnZV07Cit9CisKK1JldGFpblB0cjxOU1dpbmRvdz4gV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDbGllbnQ6OndpbmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQoreworICAgIHJldHVybiBbbV93ZWJWaWV3
IHdpbmRvd107Cit9CisKK0Zsb2F0UmVjdCBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudDo6
c2NyZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyICYpCit7CisgICAgcmV0dXJuIEZsb2F0UmVjdCgpOworfQor
CitSZXRhaW5QdHI8TlNJbWFnZT4gV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQ6OmltYWdl
Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tl
ckNvbnRyb2xsZXIgJikKK3sKKyAgICByZXR1cm4gbmlsOworfQorCiBAaW1wbGVtZW50YXRpb24g
V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyCiAKKyNpZiBFTkFCTEUoU0VSVklDRV9D
T05UUk9MUykKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEl0ZW1zOihOU0FycmF5ICopaXRlbXMg
aW5jbHVkZUVkaXRvclNlcnZpY2VzOihCT09MKWluY2x1ZGVFZGl0b3JTZXJ2aWNlcyBjbGllbnQ6
KFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KilwaWNrZXJDbGllbnQgc3R5bGU6KE5TU2hh
cmluZ1NlcnZpY2VQaWNrZXJTdHlsZSlzdHlsZQogewogI2lmbmRlZiBfX0xQNjRfXwpAQCAtNTcs
MTIgKzg3LDMzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIFtfcGlja2VyIHNldERl
bGVnYXRlOnNlbGZdOwogCiAgICAgX2luY2x1ZGVFZGl0b3JTZXJ2aWNlcyA9IGluY2x1ZGVFZGl0
b3JTZXJ2aWNlczsKKyAgICBfaGFuZGxlRWRpdGluZ1JlcGxhY2VtZW50ID0gaW5jbHVkZUVkaXRv
clNlcnZpY2VzOwogICAgIF9waWNrZXJDbGllbnQgPSBwaWNrZXJDbGllbnQ7CiAKICAgICByZXR1
cm4gc2VsZjsKICNlbmRpZgogfQogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTaGFyaW5nU2Vy
dmljZVBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXNoYXJpbmdTZXJ2aWNlUGlja2Vy
IGNsaWVudDooV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQmKXBpY2tlckNsaWVudAorewor
I2lmbmRlZiBfX0xQNjRfXworICAgIHJldHVybiBuaWw7CisjZWxzZQorICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3BpY2tlciA9IHNo
YXJpbmdTZXJ2aWNlUGlja2VyOworICAgIFtfcGlja2VyIHNldERlbGVnYXRlOnNlbGZdOworCisg
ICAgX2luY2x1ZGVFZGl0b3JTZXJ2aWNlcyA9IFlFUzsKKyAgICBfcGlja2VyQ2xpZW50ID0gJnBp
Y2tlckNsaWVudDsKKworICAgIHJldHVybiBzZWxmOworI2VuZGlmCit9CisjZW5kaWYgLy8gRU5B
QkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisKKwogLSAodm9pZCljbGVhcgogewogICAgIC8vIFByb3Rl
Y3Qgc2VsZiBmcm9tIGJlaW5nIGRlYWxsb2MnZWQgcGFydHdheSB0aHJvdWdoIHRoaXMgbWV0aG9k
LgpAQCAtMTQwLDkgKzE5MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAtICh2b2lk
KXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2UgZGlkU2hh
cmVJdGVtczooTlNBcnJheSAqKWl0ZW1zCiB7Ci0gICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IHdo
YXQgaXRlbSB3YXMgc2hhcmVkIGlmIHdlIHdlcmUgaW50ZXJlc3RlZCBpbiBlZGl0b3Igc2Vydmlj
ZXMKLSAgICAvLyAoaS5lLiwgaWYgd2UgcGxhbiBvbiByZXBsYWNpbmcgdGhlIHNlbGVjdGlvbiB3
aXRoIHRoZSByZXR1cm5lZCBpdGVtKQotICAgIGlmICghX2luY2x1ZGVFZGl0b3JTZXJ2aWNlcykK
KyAgICBpZiAoIV9oYW5kbGVFZGl0aW5nUmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIFdlIG9ubHkgc2VuZCBvbmUgaXRlbSwgc28gd2Ugc2hvdWxkIG9ubHkgZ2V0IG9uZSBp
dGVtIGJhY2suCkBAIC0yMTEsNCArMjYwLDQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IEBlbmQKIAotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaAppbmRleCAxOTRlMjA2Li45NTAwYWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTI2LDYg
KzI2LDggQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQor
CiAjaW1wb3J0ICJXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaCIKICNpbXBvcnQg
PFdlYkNvcmUvQ29udGV4dE1lbnVDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5o
PgpAQCAtMzksNyArNDEsNyBAQCBjbGFzcyBOb2RlOwogCiBjbGFzcyBXZWJDb250ZXh0TWVudUNs
aWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudAogI2lmIEVOQUJMRShTRVJW
SUNFX0NPTlRST0xTKQotLCBwdWJsaWMgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQKKyAg
ICAsIHB1YmxpYyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudAogI2VuZGlmCiB7CiBwdWJs
aWM6CkBAIC02NCwyMSArNjYsMjEgQEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRS
T0xTKQogICAgIC8vIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50CiAgICAgdmlydHVhbCB2
b2lkIHNoYXJpbmdTZXJ2aWNlUGlja2VyV2lsbEJlRGVzdHJveWVkKFdlYlNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2Uq
IHBhZ2VGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIgJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRv
d0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ciAmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBzY3JlZW5SZWN0
Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tl
ckNvbnRyb2xsZXIgJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZXRhaW5QdHI8TlNJbWFnZT4g
aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgV2ViVmlldyAqd2Vi
VmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQotICAgICAgICAKIHByaXZhdGU6CiAgICAgTlNN
ZW51ICpjb250ZXh0TWVudUZvckV2ZW50KE5TRXZlbnQgKiwgTlNWaWV3ICosIGJvb2wmIGlzU2Vy
dmljZXNNZW51KTsKIAogICAgIGJvb2wgY2xpZW50RmxvYXRSZWN0Rm9yTm9kZShXZWJDb3JlOjpO
b2RlJiwgV2ViQ29yZTo6RmxvYXRSZWN0JikgY29uc3Q7CiAKLSAgICBXZWJWaWV3ICptX3dlYlZp
ZXc7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgUmV0YWluUHRyPFdlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcj4gbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXI7CisjZWxzZQorICAgIFdlYlZpZXcqIG1fd2ViVmlldzsKICNlbmRpZgogfTsKKworI2VuZGlm
IC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IDcwZTI5NDQu
LjI0ZGY2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC02Nyw4ICs2NywxMiBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIC0gKHZvaWQpc3BlYWtTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nOwog
QGVuZAogCi1XZWJDb250ZXh0TWVudUNsaWVudDo6V2ViQ29udGV4dE1lbnVDbGllbnQoV2ViVmll
dyAqd2ViVmlldykgCitXZWJDb250ZXh0TWVudUNsaWVudDo6V2ViQ29udGV4dE1lbnVDbGllbnQo
V2ViVmlldyAqd2ViVmlldykKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKyAgICA6IFdl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KHdlYlZpZXcpCisjZWxzZQogICAgIDogbV93ZWJW
aWV3KHdlYlZpZXcpCisjZW5kaWYKIHsKIH0KIApAQCAtNDEyLDE2ICs0MTYsNiBAQCB2b2lkIFdl
YkNvbnRleHRNZW51Q2xpZW50OjpzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChX
ZWJTaGFyaW5nU2VydmljZQogICAgIG1fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyID0g
bmlsOwogfQogCi1XZWJDb3JlOjpQYWdlKiBXZWJDb250ZXh0TWVudUNsaWVudDo6cGFnZUZvclNo
YXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQot
ewotICAgIHJldHVybiBbbV93ZWJWaWV3IHBhZ2VdOwotfQotCi1SZXRhaW5QdHI8TlNXaW5kb3c+
IFdlYkNvbnRleHRNZW51Q2xpZW50Ojp3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKLXsKLSAgICByZXR1cm4gW21fd2ViVmll
dyB3aW5kb3ddOwotfQotCiBXZWJDb3JlOjpGbG9hdFJlY3QgV2ViQ29udGV4dE1lbnVDbGllbnQ6
OnNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdT
ZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQogewogICAgIFBhZ2UqIHBhZ2UgPSBbbV93ZWJWaWV3
IHBhZ2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmgKaW5kZXggZDgxYmJlMC4uNjVi
Mjg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2Vs
ZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCkBAIC01MSwxNCArNTEsOCBA
QCBwdWJsaWM6CiAKICAgICAvLyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudAogICAgIHZp
cnR1YWwgdm9pZCBzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChXZWJTaGFyaW5n
U2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3Jl
OjpQYWdlKiBwYWdlRm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TV2luZG93
PiB3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNv
bnRyb2xsZXIgJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3Qgc2Ny
ZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmV0YWluUHRyPE5T
SW1hZ2U+IGltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5n
U2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgV2Vi
VmlldyAqbV93ZWJWaWV3OwotCiAgICAgUmV0YWluUHRyPFdlYlNoYXJpbmdTZXJ2aWNlUGlja2Vy
Q29udHJvbGxlcj4gbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXI7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tCmluZGV4IDE0MGIxMGMuLjU1Y2YzNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZp
Y2VDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tCkBAIC0zNyw3ICszNyw3IEBACiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OldlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyKFdlYlZpZXcgKndlYlZpZXcpIAotICAgIDogbV93ZWJW
aWV3KHdlYlZpZXcpCisgICAgOiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudCh3ZWJWaWV3
KQogewogfQogCkBAIC01OCw2ICs1OCw3IEBAIHZvaWQgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRy
b2xsZXI6OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhXZWJDb3JlOjpGcmFtZVNlCiAgICAg
TlNBcnJheSAqaXRlbXMgPSBAWyBhdHRyaWJ1dGVkU2VsZWN0aW9uLmdldCgpIF07CiAKICAgICBi
b29sIGlzRWRpdGFibGUgPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUo
KTsKKyAgICAKICAgICBtX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciA9IGFkb3B0TlMo
W1tXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoSXRlbXM6
aXRlbXMgaW5jbHVkZUVkaXRvclNlcnZpY2VzOmlzRWRpdGFibGUgY2xpZW50OnRoaXMgc3R5bGU6
TlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlVGV4dFNlbGVjdGlvbl0pOwogCiAgICAgUmV0YWlu
UHRyPE5TTWVudT4gbWVudSA9IGFkb3B0TlMoW1ttX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJv
bGxlciBtZW51XSBjb3B5XSk7CkBAIC05NiwyNCArOTcsNCBAQCB2b2lkIFdlYlNlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyOjpzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChXZWJT
aGFyaQogICAgIG1fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyID0gbmlsOwogfQogCi1X
ZWJDb3JlOjpQYWdlKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6cGFnZUZvclNoYXJp
bmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQotewot
ICAgIHJldHVybiBbbV93ZWJWaWV3IHBhZ2VdOwotfQotCi1SZXRhaW5QdHI8TlNXaW5kb3c+IFdl
YlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjp3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tl
cihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKLXsKLSAgICByZXR1cm4gW21f
d2ViVmlldyB3aW5kb3ddOwotfQotCi1GbG9hdFJlY3QgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRy
b2xsZXI6OnNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQotewotICAgIHJldHVybiBGbG9hdFJlY3Qo
KTsKLX0KLQotUmV0YWluUHRyPE5TSW1hZ2U+IFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyICYpCi17Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA2ZGQ0YzRjLi41YzM3
YzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM4LDYg
KzM4LDcgQEAKICNpbXBvcnQgIldlYkFjdGlvbk1lbnVDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJX
ZWJBcmNoaXZlLmgiCiAjaW1wb3J0ICJXZWJDbGlwVmlldy5oIgorI2ltcG9ydCAiV2ViQ29udGV4
dE1lbnVDbGllbnQuaCIKICNpbXBvcnQgIldlYkRPTU9wZXJhdGlvbnNJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV2ViRGF0YVNvdXJjZUludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJEZWZhdWx0VUlEZWxl
Z2F0ZS5oIgpAQCAtNjcsNiArNjgsNyBAQAogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXMuaCIKICNp
bXBvcnQgIldlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViUmVzb3VyY2VQcml2
YXRlLmgiCisjaW1wb3J0ICJXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaCIKICNp
bXBvcnQgIldlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViVHlwZXNJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIKQEAgLTYyNCw2ICs2
MjYsOCBAQCBzdHJ1Y3QgV2ViSFRNTFZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgQk9PTCBlbnVtZXJhdGluZ1N1YnZpZXdzOwogI2VuZGlmCisK
KyAgICBSZXRhaW5QdHI8V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyPiBjdXJyZW50
U2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyOwogfQogLSAodm9pZCljbGVhcjsKIEBlbmQK
QEAgLTMzNTgsNiArMzM2MiwyMSBAQCBzdGF0aWMgdm9pZCBzZXRNZW51VGFyZ2V0cyhOU01lbnUq
IG1lbnUpCiAgICAgaWYgKCFjb3JlTWVudSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAorICAgIGF1
dG8gbWVudUl0ZW1WZWN0b3IgPSBjb250ZXh0TWVudUl0ZW1WZWN0b3IoY29yZU1lbnUtPnBsYXRm
b3JtRGVzY3JpcHRpb24oKSk7CisgICAgZm9yIChhdXRvJiBtZW51SXRlbSA6IG1lbnVJdGVtVmVj
dG9yKSB7CisgICAgICAgIGlmIChtZW51SXRlbS5hY3Rpb24oKSAhPSBDb250ZXh0TWVudUl0ZW1U
YWdTaGFyZU1lbnUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBOU01lbnVJdGVt
ICpuc0l0ZW0gPSBtZW51SXRlbS5wbGF0Zm9ybURlc2NyaXB0aW9uKCk7CisgICAgICAgIGlmICgh
W25zSXRlbS5yZXByZXNlbnRlZE9iamVjdCBpc0tpbmRPZkNsYXNzOltOU1NoYXJpbmdTZXJ2aWNl
UGlja2VyIGNsYXNzXV0pIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9M
UykKKyAgICAgICAgX3ByaXZhdGUtPmN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXIgPSBhZG9wdE5TKFtbV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIGFsbG9jXSBp
bml0V2l0aFNoYXJpbmdTZXJ2aWNlUGlja2VyOm5zSXRlbS5yZXByZXNlbnRlZE9iamVjdCBjbGll
bnQ6c3RhdGljX2Nhc3Q8V2ViQ29udGV4dE1lbnVDbGllbnQmPihwYWdlLT5jb250ZXh0TWVudUNv
bnRyb2xsZXIoKS5jbGllbnQoKSldKTsKKyNlbmRpZgorICAgIH0KKwogICAgIE5TQXJyYXkqIG1l
bnVJdGVtcyA9IGNvcmVNZW51LT5wbGF0Zm9ybURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCFtZW51
SXRlbXMpCiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdEYXRhLmgKaW5kZXggOGI5ZTk3ZC4uNmFlOTliYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdEYXRhLmgKQEAgLTkzLDcgKzkzLDEwIEBAIGV4dGVybiBpbnQgcGx1Z2luRGF0
YWJhc2VDbGllbnRDb3VudDsKIAogY2xhc3MgTGF5ZXJGbHVzaENvbnRyb2xsZXI7CiBjbGFzcyBX
ZWJWaWV3R3JvdXA7CisKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKIGNsYXNzIFdlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyOworI2VuZGlmCiAKIGNsYXNzIFdlYlZpZXdMYXllckZs
dXNoU2NoZWR1bGVyIDogcHVibGljIFdlYkNvcmU6OkxheWVyRmx1c2hTY2hlZHVsZXIgewogcHVi
bGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmYjg4
MGM0Li5iYWY0ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtNDA2MCw4ICs0MDYwLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnRlcm5hbFNob3dD
b250ZXh0TWVudShjb25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBDCiAgICAgICAg
IH0KIAogICAgICAgICBDb250ZXh0TWVudUl0ZW0gY29yZUl0ZW0gPSBDb250ZXh0TWVudUl0ZW06
OnNoYXJlTWVudUl0ZW0oYWJzb2x1dGVMaW5rVVJMLCBkb3dubG9hZGFibGVNZWRpYVVSTCwgaW1h
Z2UuZ2V0KCksIGNvbnRleHRNZW51Q29udGV4dERhdGEuc2VsZWN0ZWRUZXh0KCkpOwotICAgICAg
ICBpZiAoIWNvcmVJdGVtLmlzTnVsbCgpKQorICAgICAgICBpZiAoIWNvcmVJdGVtLmlzTnVsbCgp
KSB7CisgICAgICAgICAgICBwbGF0Zm9ybUluaXRpYWxpemVTaGFyZU1lbnVJdGVtKGNvcmVJdGVt
KTsKICAgICAgICAgICAgIHByb3Bvc2VkQVBJSXRlbXMuYXBwZW5kKFdlYkNvbnRleHRNZW51SXRl
bTo6Y3JlYXRlKGNvcmVJdGVtKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBWZWN0b3I8UmVm
UHRyPFdlYkNvbnRleHRNZW51SXRlbT4+IGNsaWVudEl0ZW1zOwpAQCAtNDA3Nyw2ICs0MDc5LDEy
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudShjb25zdCBJbnRQ
b2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBDCiAgICAgbV9jb250ZXh0TWVudUNsaWVudC0+Y29u
dGV4dE1lbnVEaXNtaXNzZWQoKnRoaXMpOwogfQogCisjaWYgIVBMQVRGT1JNKE1BQykKK3ZvaWQg
V2ViUGFnZVByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVTaGFyZU1lbnVJdGVtKENvbnRleHRNZW51
SXRlbSYpCit7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRl
bVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCiB7CiAgICAgLy8g
QXBwbGljYXRpb24gY3VzdG9tIGl0ZW1zIGRvbid0IG5lZWQgdG8gcm91bmQtdHJpcCB0aHJvdWdo
IHRvIFdlYkNvcmUgaW4gdGhlIFdlYlByb2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggN2QxMTAyMS4uMjcyMTNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTIzMyw2ICsxMjMzLDggQEAgcHJpdmF0ZToKICAgICB9
OwogICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51
TG9jYXRpb24sIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25zdCBWZWN0b3I8V2Vi
Q29udGV4dE1lbnVJdGVtRGF0YT4mLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgaW50ZXJu
YWxTaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1lbnVMb2NhdGlvbiwg
Y29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhPiYsIENvbnRleHRNZW51Q2xpZW50RWxpZ2liaWxpdHksIGNvbnN0IFVzZXJEYXRh
Jik7CisKKyAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVNoYXJlTWVudUl0ZW0oV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVS
X0RFVEVDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tT
aGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmY5YTM1NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oCkBAIC0wLDAg
KzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxl
Z2F0ZV9oCisjZGVmaW5lIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV9oCisKKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViQ29u
dGV4dE1lbnVQcm94eU1hYzsKK30KKworQGNsYXNzIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXI7CisK
K0BpbnRlcmZhY2UgV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIDogTlNPYmplY3QgPE5T
U2hhcmluZ1NlcnZpY2VEZWxlZ2F0ZSwgTlNTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlPiB7
CisgICAgV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiBfbWVudVByb3h5OworICAgIFJl
dGFpblB0cjxOU1NoYXJpbmdTZXJ2aWNlUGlja2VyPiBfcGlja2VyOworICAgIEJPT0wgX2ZpbHRl
ckVkaXRpbmdTZXJ2aWNlczsKKyAgICBCT09MIF9oYW5kbGVFZGl0aW5nUmVwbGFjZW1lbnQ7Cit9
CisKKysgKFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSAqKXNoYXJlZFNoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGU7CistIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1l
bnVQcm94eTsKKy0gKHZvaWQpc2V0TWVudVByb3h5OihXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHlNYWMqKW1lbnVQcm94eTsKKy0gKHZvaWQpc2V0UGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlj
a2VyICopcGlja2VyOworLSAodm9pZClzZXRGaWx0ZXJzRWRpdGluZ1NlcnZpY2VzOihCT09MKWZp
bHRlcnNFZGl0aW5nU2VydmljZXM7CistICh2b2lkKXNldEhhbmRsZXNFZGl0aW5nUmVwbGFjZW1l
bnQ6KEJPT0wpaGFuZGxlc0VkaXRpbmdSZXBsYWNlbWVudDsKK0BlbmQKKworI2VuZGlmIC8vIFdL
U2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZTg1OTYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmgiCisKKyNp
ZiBFTkFCTEUoU0VSVklDRTFfQ09OVFJPTFMpCisKKyNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIK
KyNpbXBvcnQgIldlYkNvbnRleHRNZW51UHJveHlNYWMuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94
eS5oIgorI2ltcG9ydCA8V2ViQ29yZS9OU1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmg+CisjaW1w
b3J0IDxXZWJDb3JlL05TU2hhcmluZ1NlcnZpY2VTUEkuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCisvLyBGSVhNRTogV2UgcHJvYmFibHkgbmVlZCB0byBoYW5nIG9uIHRoZSBw
aWNrZXIgaXRzZWxmIHVudGlsIHRoZSBjb250ZXh0IG1lbnUgb3BlcmF0aW9uIGlzIGRvbmUsIGFu
ZCB0aGlzIG9iamVjdCB3aWxsIHByb2JhYmx5IGRvIHRoYXQuCitAaW1wbGVtZW50YXRpb24gV0tT
aGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlCisKKysgKFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJE
ZWxlZ2F0ZSopc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZQoreworICAgIHN0YXRp
YyBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUqIGRlbGVnYXRlID0gW1tXS1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAgIHJldHVybiBkZWxlZ2F0ZTsK
K30KKworLSAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51UHJveHkKK3sKKyAg
ICByZXR1cm4gX21lbnVQcm94eTsKK30KKworLSAodm9pZClzZXRNZW51UHJveHk6KFdlYktpdDo6
V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVudVByb3h5Cit7CisgICAgX21lbnVQcm94eSA9IG1l
bnVQcm94eTsKK30KKworLSAodm9pZClzZXRQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIg
KilwaWNrZXIKK3sKKyAgICBfcGlja2VyID0gcGlja2VyOworfQorCistICh2b2lkKXNldEZpbHRl
cnNFZGl0aW5nU2VydmljZXM6KEJPT0wpZmlsdGVyc0VkaXRpbmdTZXJ2aWNlcworeworICAgIF9m
aWx0ZXJFZGl0aW5nU2VydmljZXMgPSBmaWx0ZXJzRWRpdGluZ1NlcnZpY2VzOworfQorCistICh2
b2lkKXNldEhhbmRsZXNFZGl0aW5nUmVwbGFjZW1lbnQ6KEJPT0wpaGFuZGxlc0VkaXRpbmdSZXBs
YWNlbWVudAoreworICAgIF9oYW5kbGVFZGl0aW5nUmVwbGFjZW1lbnQgPSBoYW5kbGVzRWRpdGlu
Z1JlcGxhY2VtZW50OworfQorCistIChOU0FycmF5ICopc2hhcmluZ1NlcnZpY2VQaWNrZXI6KE5T
U2hhcmluZ1NlcnZpY2VQaWNrZXIgKilzaGFyaW5nU2VydmljZVBpY2tlciBzaGFyaW5nU2Vydmlj
ZXNGb3JJdGVtczooTlNBcnJheSAqKWl0ZW1zIG1hc2s6KE5TU2hhcmluZ1NlcnZpY2VNYXNrKW1h
c2sgcHJvcG9zZWRTaGFyaW5nU2VydmljZXM6KE5TQXJyYXkgKilwcm9wb3NlZFNlcnZpY2VzCit7
CisgICAgaWYgKCFfZmlsdGVyRWRpdGluZ1NlcnZpY2VzKQorICAgICAgICByZXR1cm4gcHJvcG9z
ZWRTZXJ2aWNlczsKKworICAgIE5TTXV0YWJsZUFycmF5ICpzZXJ2aWNlcyA9IFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6W3Byb3Bvc2VkU2VydmljZXMgY291bnRdXTsK
KyAgICAKKyAgICBmb3IgKE5TU2hhcmluZ1NlcnZpY2UgKnNlcnZpY2UgaW4gcHJvcG9zZWRTZXJ2
aWNlcykgeworICAgICAgICBpZiAoc2VydmljZS50eXBlICE9IE5TU2hhcmluZ1NlcnZpY2VUeXBl
RWRpdG9yKQorICAgICAgICAgICAgW3NlcnZpY2VzIGFkZE9iamVjdDpzZXJ2aWNlXTsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIHNlcnZpY2VzOworfQorCistIChpZCA8TlNTaGFyaW5nU2Vydmlj
ZURlbGVnYXRlPilzaGFyaW5nU2VydmljZVBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBpY2tlciAq
KXNoYXJpbmdTZXJ2aWNlUGlja2VyIGRlbGVnYXRlRm9yU2hhcmluZ1NlcnZpY2U6KE5TU2hhcmlu
Z1NlcnZpY2UgKilzaGFyaW5nU2VydmljZQoreworICAgIHJldHVybiBzZWxmOworfQorCistICh2
b2lkKXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2Ugd2ls
bFNoYXJlSXRlbXM6KE5TQXJyYXkgKilpdGVtcworeworICAgIF9tZW51UHJveHktPmNsZWFyU2Vy
dmljZXNNZW51KCk7Cit9CisKKy0gKHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZp
Y2UgKilzaGFyaW5nU2VydmljZSBkaWRTaGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMKK3sKKyAg
ICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgd2hhdCBpdGVtIHdhcyBzaGFyZWQgaWYgd2Ugd2VyZSBp
bnRlcmVzdGVkIGluIGVkaXRvciBzZXJ2aWNlcworICAgIC8vIChpLmUuLCBpZiB3ZSBwbGFuIG9u
IHJlcGxhY2luZyB0aGUgc2VsZWN0aW9uIHdpdGggdGhlIHJldHVybmVkIGl0ZW0pCisgICAgaWYg
KCFfaGFuZGxlRWRpdGluZ1JlcGxhY2VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0
b3I8U3RyaW5nPiB0eXBlczsKKyAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsK
KworICAgIGlkIGl0ZW0gPSBbaXRlbXMgb2JqZWN0QXRJbmRleDowXTsKKworICAgIGlmIChbaXRl
bSBpc0tpbmRPZkNsYXNzOltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSkgeworICAgICAgICBO
U0RhdGEgKmRhdGEgPSBbaXRlbSBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtpdGVtIGxl
bmd0aF0pIGRvY3VtZW50QXR0cmlidXRlczpuaWxdOworICAgICAgICBkYXRhUmVmZXJlbmNlID0g
SVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRl
c10pLCBbZGF0YSBsZW5ndGhdKTsKKworICAgICAgICB0eXBlcy5hcHBlbmQoTlNQYXN0ZWJvYXJk
VHlwZVJURkQpOworICAgICAgICB0eXBlcy5hcHBlbmQoTlNSVEZEUGJvYXJkVHlwZSk7CisgICAg
fSBlbHNlIGlmIChbaXRlbSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkgeworICAgICAg
ICBOU0RhdGEgKmRhdGEgPSAoTlNEYXRhICopaXRlbTsKKyAgICAgICAgUmV0YWluUHRyPENHSW1h
Z2VTb3VyY2VSZWY+IHNvdXJjZSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRh
KChDRkRhdGFSZWYpZGF0YSwgTlVMTCkpOworICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
aW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJbWFnZUF0SW5kZXgoc291cmNlLmdl
dCgpLCAwLCBOVUxMKSk7CisKKyAgICAgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICAg
ICAgdHlwZXMuYXBwZW5kKE5TUGFzdGVib2FyZFR5cGVUSUZGKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBMT0dfRVJST1IoInNoYXJpbmdTZXJ2aWNlOmRpZFNoYXJlSXRlbXM6IC0gVW5rbm93biBp
dGVtIHR5cGUgcmV0dXJuZWRcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBhZG9wdCByZXBsYWNlU2VsZWN0aW9uV2l0aEF0dHJpYnV0ZWRTdHJp
bmcgaW5zdGVhZCBvZiBib3VuY2luZyB0aHJvdWdoIHRoZSAoZmFrZSkgcGFzdGVib2FyZC4KKyAg
ICBfbWVudVByb3h5LT5wYWdlKCkucmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0
eXBlcywgZGF0YVJlZmVyZW5jZSk7Cit9CisKKy0gKE5TV2luZG93ICopc2hhcmluZ1NlcnZpY2U6
KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBzb3VyY2VXaW5kb3dGb3JTaGFyZUl0
ZW1zOihOU0FycmF5ICopaXRlbXMgc2hhcmluZ0NvbnRlbnRTY29wZTooTlNTaGFyaW5nQ29udGVu
dFNjb3BlICopc2hhcmluZ0NvbnRlbnRTY29wZQoreworICAgIHJldHVybiBfbWVudVByb3h5LT53
aW5kb3coKTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0UxX0NPTlRST0xT
KQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRN
ZW51UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRN
ZW51UHJveHlNYWMubW0KaW5kZXggNTU4MGVkMS4uNTEzZWEyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQpAQCAt
MzQsMTAgKzM0LDExIEBACiAjaW1wb3J0ICJTZXJ2aWNlc0NvbnRyb2xsZXIuaCIKICNpbXBvcnQg
IlNoYXJlYWJsZUJpdG1hcC5oIgogI2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgiCisjaW1wb3J0
ICJXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldLVmlldy5oIgog
I2ltcG9ydCAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudUl0
ZW1EYXRhLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbXBvcnQgIldLVmlldy5o
IgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SW50UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9OU1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmg+
CkBAIC0xNDcsMTE5ICsxNDgsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGVuZAog
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi1AaW50ZXJmYWNlIFdLU2hhcmluZ1NlcnZp
Y2VQaWNrZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1NoYXJpbmdTZXJ2aWNlRGVsZWdhdGUsIE5T
U2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZT4gewotICAgIFdlYktpdDo6V2ViQ29udGV4dE1l
bnVQcm94eU1hYyogX21lbnVQcm94eTsKLSAgICBSZXRhaW5QdHI8TlNTaGFyaW5nU2VydmljZVBp
Y2tlcj4gX3BpY2tlcjsKLSAgICBCT09MIF9pbmNsdWRlRWRpdG9yU2VydmljZXM7Ci19Ci0KLSsg
KFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSAqKXNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlj
a2VyRGVsZWdhdGU7Ci0tIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94
eTsKLS0gKHZvaWQpc2V0TWVudVByb3h5OihXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMq
KW1lbnVQcm94eTsKLS0gKHZvaWQpc2V0UGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICop
cGlja2VyOwotLSAodm9pZClzZXRJbmNsdWRlRWRpdG9yU2VydmljZXM6KEJPT0wpaW5jbHVkZUVk
aXRvclNlcnZpY2VzOwotQGVuZAotCi0vLyBGSVhNRTogV2UgcHJvYmFibHkgbmVlZCB0byBoYW5n
IG9uIHRoZSBwaWNrZXIgaXRzZWxmIHVudGlsIHRoZSBjb250ZXh0IG1lbnUgb3BlcmF0aW9uIGlz
IGRvbmUsIGFuZCB0aGlzIG9iamVjdCB3aWxsIHByb2JhYmx5IGRvIHRoYXQuCi1AaW1wbGVtZW50
YXRpb24gV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlCi0rIChXS1NoYXJpbmdTZXJ2aWNl
UGlja2VyRGVsZWdhdGUqKXNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUKLXsKLSAg
ICBzdGF0aWMgV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlKiBkZWxlZ2F0ZSA9IFtbV0tT
aGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAgICByZXR1cm4gZGVs
ZWdhdGU7Ci19Ci0KLS0gKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVudVByb3h5
Ci17Ci0gICAgcmV0dXJuIF9tZW51UHJveHk7Ci19Ci0KLS0gKHZvaWQpc2V0TWVudVByb3h5OihX
ZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eQotewotICAgIF9tZW51UHJv
eHkgPSBtZW51UHJveHk7Ci19Ci0KLS0gKHZvaWQpc2V0UGlja2VyOihOU1NoYXJpbmdTZXJ2aWNl
UGlja2VyICopcGlja2VyCi17Ci0gICAgX3BpY2tlciA9IHBpY2tlcjsKLX0KLQotLSAodm9pZClz
ZXRJbmNsdWRlRWRpdG9yU2VydmljZXM6KEJPT0wpaW5jbHVkZUVkaXRvclNlcnZpY2VzCi17Ci0g
ICAgX2luY2x1ZGVFZGl0b3JTZXJ2aWNlcyA9IGluY2x1ZGVFZGl0b3JTZXJ2aWNlczsKLX0KLQot
LSAoTlNBcnJheSAqKXNoYXJpbmdTZXJ2aWNlUGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2Vy
ICopc2hhcmluZ1NlcnZpY2VQaWNrZXIgc2hhcmluZ1NlcnZpY2VzRm9ySXRlbXM6KE5TQXJyYXkg
KilpdGVtcyBtYXNrOihOU1NoYXJpbmdTZXJ2aWNlTWFzayltYXNrIHByb3Bvc2VkU2hhcmluZ1Nl
cnZpY2VzOihOU0FycmF5ICopcHJvcG9zZWRTZXJ2aWNlcwotewotICAgIGlmIChfaW5jbHVkZUVk
aXRvclNlcnZpY2VzKQotICAgICAgICByZXR1cm4gcHJvcG9zZWRTZXJ2aWNlczsKLQotICAgIE5T
TXV0YWJsZUFycmF5ICpzZXJ2aWNlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
Q2FwYWNpdHk6W3Byb3Bvc2VkU2VydmljZXMgY291bnRdXTsKLSAgICAKLSAgICBmb3IgKE5TU2hh
cmluZ1NlcnZpY2UgKnNlcnZpY2UgaW4gcHJvcG9zZWRTZXJ2aWNlcykgewotICAgICAgICBpZiAo
c2VydmljZS50eXBlICE9IE5TU2hhcmluZ1NlcnZpY2VUeXBlRWRpdG9yKQotICAgICAgICAgICAg
W3NlcnZpY2VzIGFkZE9iamVjdDpzZXJ2aWNlXTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHNl
cnZpY2VzOwotfQotCi0tIChpZCA8TlNTaGFyaW5nU2VydmljZURlbGVnYXRlPilzaGFyaW5nU2Vy
dmljZVBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXNoYXJpbmdTZXJ2aWNlUGlja2Vy
IGRlbGVnYXRlRm9yU2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2Vy
dmljZQotewotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKXNoYXJpbmdTZXJ2aWNlOihO
U1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2Ugd2lsbFNoYXJlSXRlbXM6KE5TQXJyYXkg
KilpdGVtcwotewotICAgIF9tZW51UHJveHktPmNsZWFyU2VydmljZXNNZW51KCk7Ci19Ci0KLS0g
KHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBk
aWRTaGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMKLXsKLSAgICAvLyBXZSBvbmx5IGNhcmUgYWJv
dXQgd2hhdCBpdGVtIHdhcyBzaGFyZWQgaWYgd2Ugd2VyZSBpbnRlcmVzdGVkIGluIGVkaXRvciBz
ZXJ2aWNlcwotICAgIC8vIChpLmUuLCBpZiB3ZSBwbGFuIG9uIHJlcGxhY2luZyB0aGUgc2VsZWN0
aW9uIHdpdGggdGhlIHJldHVybmVkIGl0ZW0pCi0gICAgaWYgKCFfaW5jbHVkZUVkaXRvclNlcnZp
Y2VzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLQotICAgIGlkIGl0ZW0gPSBbaXRlbXMg
b2JqZWN0QXRJbmRleDowXTsKLQotICAgIGlmIChbaXRlbSBpc0tpbmRPZkNsYXNzOltOU0F0dHJp
YnV0ZWRTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICBOU0RhdGEgKmRhdGEgPSBbaXRlbSBSVEZE
RnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtpdGVtIGxlbmd0aF0pIGRvY3VtZW50QXR0cmlidXRl
czpuaWxdOwotICAgICAgICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKLQot
ICAgICAgICB0eXBlcy5hcHBlbmQoTlNQYXN0ZWJvYXJkVHlwZVJURkQpOwotICAgICAgICB0eXBl
cy5hcHBlbmQoTlNSVEZEUGJvYXJkVHlwZSk7Ci0gICAgfSBlbHNlIGlmIChbaXRlbSBpc0tpbmRP
ZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkgewotICAgICAgICBOU0RhdGEgKmRhdGEgPSAoTlNEYXRh
ICopaXRlbTsKLSAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IHNvdXJjZSA9IGFk
b3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChDRkRhdGFSZWYpZGF0YSwgTlVMTCkp
OwotICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VT
b3VyY2VDcmVhdGVJbWFnZUF0SW5kZXgoc291cmNlLmdldCgpLCAwLCBOVUxMKSk7Ci0KLSAgICAg
ICAgaWYgKCFpbWFnZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBkYXRhUmVmZXJl
bmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0
YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKLSAgICAgICAgdHlwZXMuYXBwZW5kKE5TUGFzdGVi
b2FyZFR5cGVUSUZGKTsKLSAgICB9IGVsc2UgewotICAgICAgICBMT0dfRVJST1IoInNoYXJpbmdT
ZXJ2aWNlOmRpZFNoYXJlSXRlbXM6IC0gVW5rbm93biBpdGVtIHR5cGUgcmV0dXJuZWRcbiIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhZG9wdCBy
ZXBsYWNlU2VsZWN0aW9uV2l0aEF0dHJpYnV0ZWRTdHJpbmcgaW5zdGVhZCBvZiBib3VuY2luZyB0
aHJvdWdoIHRoZSAoZmFrZSkgcGFzdGVib2FyZC4KLSAgICBfbWVudVByb3h5LT5wYWdlKCkucmVw
bGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0eXBlcywgZGF0YVJlZmVyZW5jZSk7Ci19
Ci0KLS0gKE5TV2luZG93ICopc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFy
aW5nU2VydmljZSBzb3VyY2VXaW5kb3dGb3JTaGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMgc2hh
cmluZ0NvbnRlbnRTY29wZTooTlNTaGFyaW5nQ29udGVudFNjb3BlICopc2hhcmluZ0NvbnRlbnRT
Y29wZQotewotICAgIHJldHVybiBfbWVudVByb3h5LT53aW5kb3coKTsKLX0KLQotQGVuZAotCi0j
ZW5kaWYKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkNvbnRleHRNZW51UHJveHlNYWM6Oldl
YkNvbnRleHRNZW51UHJveHlNYWMoV0tWaWV3KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkqIHBhZ2Up
CkBAIC0zOTIsNyArMjgwLDggQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzZXR1cFNl
cnZpY2VzTWVudShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiBjb24KICAgICBbcGlja2Vy
IHNldFN0eWxlOmhhc0NvbnRyb2xsZWRJbWFnZSA/IE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHls
ZVJvbGxvdmVyIDogTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlVGV4dFNlbGVjdGlvbl07CiAg
ICAgW3BpY2tlciBzZXREZWxlZ2F0ZTpbV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNo
YXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVdXTsKICAgICBbW1dLU2hhcmluZ1NlcnZp
Y2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRQ
aWNrZXI6cGlja2VyLmdldCgpXTsKLSAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0
ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRJbmNsdWRlRWRpdG9yU2Vy
dmljZXM6aW5jbHVkZUVkaXRvclNlcnZpY2VzXTsKKyAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRGaWx0ZXJz
RWRpdGluZ1NlcnZpY2VzOiFpbmNsdWRlRWRpdG9yU2VydmljZXNdOworICAgIFtbV0tTaGFyaW5n
U2VydmljZVBpY2tlckRlbGVnYXRlIHNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVd
IHNldEhhbmRsZXNFZGl0aW5nUmVwbGFjZW1lbnQ6aW5jbHVkZUVkaXRvclNlcnZpY2VzXTsKIAog
ICAgIG1fc2VydmljZXNNZW51ID0gYWRvcHROUyhbW3BpY2tlciBtZW51XSBjb3B5XSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXgg
ZTM4YjlmZi4uNWJjYjhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KQEAgLTQzLDYgKzQzLDggQEAKICNpbXBvcnQgIlN0cmluZ1V0aWxp
dGllcy5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXIuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlckludGVybmFsLmgiCisjaW1wb3J0ICJXS1NoYXJpbmdTZXJ2aWNlUGlja2Vy
RGVsZWdhdGUuaCIKKyNpbXBvcnQgIldlYkNvbnRleHRNZW51UHJveHlNYWMuaCIKICNpbXBvcnQg
IldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0
IDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+CkBAIC03NDUsNiArNzQ3LDIzIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjplZGl0b3JTdGF0ZUNoYW5nZWQoY29uc3QgRWRpdG9yU3RhdGUmIGVk
aXRvclN0YXRlKQogICAgIH0KICNlbmRpZgogfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZv
cm1Jbml0aWFsaXplU2hhcmVNZW51SXRlbShDb250ZXh0TWVudUl0ZW0mIGl0ZW0pCit7CisjaWYg
RU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisgICAgTlNNZW51SXRlbSAqbnNJdGVtID0gaXRlbS5w
bGF0Zm9ybURlc2NyaXB0aW9uKCk7CisKKyAgICBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICpzaGFy
aW5nU2VydmljZVBpY2tlciA9IFtuc0l0ZW0gcmVwcmVzZW50ZWRPYmplY3RdOworICAgIHNoYXJp
bmdTZXJ2aWNlUGlja2VyLmRlbGVnYXRlID0gW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0
ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXTsKKyAgICAKKyAgICBbW1dLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVn
YXRlXSBzZXRGaWx0ZXJzRWRpdGluZ1NlcnZpY2VzOk5PXTsKKyAgICBbW1dLU2hhcmluZ1NlcnZp
Y2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRI
YW5kbGVzRWRpdGluZ1JlcGxhY2VtZW50Ok5PXTsKKyAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRNZW51UHJv
eHk6c3RhdGljX2Nhc3Q8V2ViQ29udGV4dE1lbnVQcm94eU1hYyo+KG1fYWN0aXZlQ29udGV4dE1l
bnUuZ2V0KCkpXTsKKworICAgIC8vIFNldHRpbmcgdGhlIHBpY2tlciBsZXRzIHRoZSBkZWxlZ2F0
ZSByZXRhaW4gaXQgdG8ga2VlcCBpdCBhbGl2ZSwgYnV0IHRoaXMgcGlja2VyIGlzIGtlcHQgYWxp
dmUgYnkgdGhlIG1lbnUgaXRlbS4KKyAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0
ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRQaWNrZXI6bmlsXTsKKyNl
bmRpZgorfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ZDgyNjZhLi4yZDM0
NGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC05MjUsNiArOTI1LDggQEAKIAkJNTEzQTE2M0QxNjMwODhGNjAwNUQ3RDIyIC8q
IE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzQTE2M0IxNjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdvcmtQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oICovOyB9OwogCQk1MTNBMTY0QzE2MzBBOUJGMDA1RDdEMjIg
LyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzQTE2NDkxNjMwQTlCRjAwNUQ3RDIyIC8qIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAqLzsgfTsKIAkJNTEzQTE2NEQxNjMwQTlC
RjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNBMTY0QTE2MzBBOUJGMDA1RDdE
MjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAqLzsgfTsKKwkJNTEzRTQ2MkQx
QUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzRTQ2MkIxQUQ4Mzc1
NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oICovOyB9OworCQk1
MTNFNDYyRTFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzRTQ2
MkMxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5tbSAq
LzsgfTsKIAkJNTE0QkRFRDMxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRCREVEMjE2
Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCAqLzsgfTsKIAkJNTE0RDlGNTcx
OTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0RDlGNTUxOTExOUQzNTAwMDA2M0E3IC8q
IFNlcnZpY2VzQ29udHJvbGxlci5oICovOyB9OwogCQk1MTREOUY1ODE5MTE5RDM1MDAwMDYzQTcg
LyogU2VydmljZXNDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE0RDlGNTYxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJv
bGxlci5tbSAqLzsgfTsKQEAgLTMxMTUsNiArMzExNyw4IEBACiAJCTUxM0ExNjQ5MTYzMEE5QkYw
MDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxM0ExNjRBMTYzMEE5QkYwMDVEN0Qy
MiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTEzQTE2NEIxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxM0U0NjJCMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJp
bmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxM0U0NjJDMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlj
a2VyRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
S1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxNEJERUQyMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aXN0aWNzUmVxdWVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2Vy
dmljZXNDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZp
Y2VzQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTREOUY1NjE5
MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VydmljZXNDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNzA2Myw2ICs3MDY3LDggQEAKIAkJCQkwRkNCNEU1RDE4QkJF
M0Q5MDAwRkNGQzkgLyogV0tQcmludGluZ1ZpZXcubW0gKi8sCiAJCQkJMEZDQjRFNUUxOEJCRTNE
OTAwMEZDRkM5IC8qIFdLVGV4dElucHV0V2luZG93Q29udHJvbGxlci5oICovLAogCQkJCTBGQ0I0
RTVGMThCQkUzRDkwMDBGQ0ZDOSAvKiBXS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIubW0gKi8s
CisJCQkJNTEzRTQ2MkIxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJE
ZWxlZ2F0ZS5oICovLAorCQkJCTUxM0U0NjJDMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGUubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03OTM1LDYgKzc5NDEsNyBAQAogCQkJCTFBNUU0REE0
MTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRTFBMEJENzFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUFGMjYzOTE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxM0U0NjJEMUFEODM3NTYwMDE2MjM0QSAv
KiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RjA1RDg3MTQ2ODgzNDgwMDhCMUU4MSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVBy
b3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZFNDM2NjE4QjZDMDgxMDA5QzdBNDggLyogVUlE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VFNEFFMkIxQTVEQ0Y0MzAwMDJGNDlCIC8q
IFVJS2l0U1BJLmggaW4gSGVhZGVycyAqLywKQEAgLTk4NjQsNiArOTg3MSw3IEBACiAJCQkJMzFB
MkVDNDgxNDg5OTdDMjAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkzMTA5OTk3MzE0NkM3NUEyMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMzEyNjIwMTQ4RkY4MkMwMEJBMkEzOSAvKiBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxM0U0NjJFMUFEODM3
NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUubW0gaW4gU291cmNl
cyAqLywKIAkJCQkzMUJBOTI0RDE0ODgzMTI2MDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUEyRUM0QTE0ODk5
N0MyMDA4MTBENzEgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTMxQTJFQzREMTQ4OTk3QzIwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb25Qcm92
aWRlci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250661</attachid>
            <date>2015-04-13 11:44:53 -0700</date>
            <delta_ts>2015-04-13 12:18:57 -0700</delta_ts>
            <desc>Patch v6 - Mo&apos; better feature guards</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>37197</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCmluZGV4IDM1NzM5
ZDguLjBmNTg1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgfkNvbnRleHRNZW51Q29udHJvbGxl
cigpOwogCiAgICAgUGFnZSYgcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIENvbnRleHRN
ZW51Q2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCiAgICAgQ29udGV4dE1l
bnUqIGNvbnRleHRNZW51KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0TWVudS5nZXQoKTsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDb250ZXh0TWVudSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9s
bGVyLmgKaW5kZXggYTNjYmNiMS4uYTliNDJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oCkBAIC0y
NiwxMCArMjYsMTQgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKIAogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorCisjaWYgUExBVEZPUk0oTUFDKQogI2ltcG9ydCA8V2ViQ29yZS9O
U1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05TU2hhcmluZ1Nl
cnZpY2VTUEkuaD4KKyNlbmRpZgogCiBAY2xhc3MgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250
cm9sbGVyOworQGNsYXNzIFdlYlZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZs
b2F0UmVjdDsKQEAgLTQyLDIxICs0NiwyOSBAQCBjbGFzcyBXZWJTaGFyaW5nU2VydmljZVBpY2tl
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
bGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzaGFyaW5nU2VydmljZVBpY2tlcldpbGxC
ZURlc3Ryb3llZChXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgPSAwOwotICAg
IHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogcGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSA9IDA7Ci0gICAgdmlydHVhbCBSZXRhaW5Q
dHI8TlNXaW5kb3c+IHdpbmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlciAmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNoYXJpbmdTZXJ2
aWNlUGlja2VyV2lsbEJlRGVzdHJveWVkKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ciAmKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIHBhZ2VGb3JTaGFyaW5nU2VydmljZVBp
Y2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJik7CisgICAgdmlydHVhbCBS
ZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKTsKKworICAgIHZpcnR1YWwgV2ViQ29yZTo6Rmxv
YXRSZWN0IHNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKTsKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxO
U0ltYWdlPiBpbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpOworCisgICAgV2ViVmlldyAqd2ViVmlldygpIHsg
cmV0dXJuIG1fd2ViVmlldzsgfQogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3Qgc2Ny
ZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyICYpID0gMDsKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxOU0ltYWdl
PiBpbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyICYpID0gMDsKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNsaWVudChXZWJWaWV3ICopOworICAgIFdlYlZpZXcgKm1fd2Vi
VmlldzsKIH07CiAKIEBpbnRlcmZhY2UgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVy
IDogTlNPYmplY3QgPE5TU2hhcmluZ1NlcnZpY2VEZWxlZ2F0ZSwgTlNTaGFyaW5nU2VydmljZVBp
Y2tlckRlbGVnYXRlPiB7CiAgICAgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQqIF9waWNr
ZXJDbGllbnQ7CiAgICAgUmV0YWluUHRyPE5TU2hhcmluZ1NlcnZpY2VQaWNrZXI+IF9waWNrZXI7
CiAgICAgQk9PTCBfaW5jbHVkZUVkaXRvclNlcnZpY2VzOworICAgIEJPT0wgX2hhbmRsZUVkaXRp
bmdSZXBsYWNlbWVudDsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSXRlbXM6KE5TQXJy
YXkgKilpdGVtcyBpbmNsdWRlRWRpdG9yU2VydmljZXM6KEJPT0wpaW5jbHVkZUVkaXRvclNlcnZp
Y2VzIGNsaWVudDooV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQqKXBpY2tlckNsaWVudCBz
dHlsZTooTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlKXN0eWxlOworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoU2hhcmluZ1NlcnZpY2VQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgKilz
aGFyaW5nU2VydmljZVBpY2tlciBjbGllbnQ6KFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50
JilwaWNrZXJDbGllbnQ7CiAtIChOU01lbnUgKiltZW51OwogLSAodm9pZClkaWRTaGFyZUltYWdl
RGF0YTooTlNEYXRhICopZGF0YSBjb25maXJtRGF0YUlzVmFsaWRUSUZGRGF0YTooQk9PTCljb25m
aXJtRGF0YTsKIC0gKHZvaWQpY2xlYXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9N
aXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCmluZGV4IDM0Nzg3
YmEuLmJkZmI0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2Mv
V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCkBAIC00Miw4ICs0MiwzOCBAQCBz
dGF0aWMgTlNTdHJpbmcgKnNlcnZpY2VDb250cm9sc1Bhc3RlYm9hcmROYW1lID0gQCJXZWJLaXRT
ZXJ2aWNlQ29udHJvbHNQYXN0ZWJvYQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorV2Vi
U2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQ6OldlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50
KFdlYlZpZXcgKndlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKK3sKK30KKwordm9p
ZCBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudDo6c2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxs
QmVEZXN0cm95ZWQoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCit7Cit9CisK
K1BhZ2UqIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50OjpwYWdlRm9yU2hhcmluZ1NlcnZp
Y2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCit7CisgICAgcmV0
dXJuIFttX3dlYlZpZXcgcGFnZV07Cit9CisKK1JldGFpblB0cjxOU1dpbmRvdz4gV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDbGllbnQ6OndpbmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQoreworICAgIHJldHVybiBbbV93ZWJWaWV3
IHdpbmRvd107Cit9CisKK0Zsb2F0UmVjdCBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudDo6
c2NyZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyICYpCit7CisgICAgcmV0dXJuIEZsb2F0UmVjdCgpOworfQor
CitSZXRhaW5QdHI8TlNJbWFnZT4gV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQ6OmltYWdl
Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tl
ckNvbnRyb2xsZXIgJikKK3sKKyAgICByZXR1cm4gbmlsOworfQorCiBAaW1wbGVtZW50YXRpb24g
V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyCiAKKyNpZiBFTkFCTEUoU0VSVklDRV9D
T05UUk9MUykKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEl0ZW1zOihOU0FycmF5ICopaXRlbXMg
aW5jbHVkZUVkaXRvclNlcnZpY2VzOihCT09MKWluY2x1ZGVFZGl0b3JTZXJ2aWNlcyBjbGllbnQ6
KFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KilwaWNrZXJDbGllbnQgc3R5bGU6KE5TU2hh
cmluZ1NlcnZpY2VQaWNrZXJTdHlsZSlzdHlsZQogewogI2lmbmRlZiBfX0xQNjRfXwpAQCAtNTcs
MTIgKzg3LDMzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIFtfcGlja2VyIHNldERl
bGVnYXRlOnNlbGZdOwogCiAgICAgX2luY2x1ZGVFZGl0b3JTZXJ2aWNlcyA9IGluY2x1ZGVFZGl0
b3JTZXJ2aWNlczsKKyAgICBfaGFuZGxlRWRpdGluZ1JlcGxhY2VtZW50ID0gaW5jbHVkZUVkaXRv
clNlcnZpY2VzOwogICAgIF9waWNrZXJDbGllbnQgPSBwaWNrZXJDbGllbnQ7CiAKICAgICByZXR1
cm4gc2VsZjsKICNlbmRpZgogfQogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTaGFyaW5nU2Vy
dmljZVBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXNoYXJpbmdTZXJ2aWNlUGlja2Vy
IGNsaWVudDooV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQmKXBpY2tlckNsaWVudAorewor
I2lmbmRlZiBfX0xQNjRfXworICAgIHJldHVybiBuaWw7CisjZWxzZQorICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3BpY2tlciA9IHNo
YXJpbmdTZXJ2aWNlUGlja2VyOworICAgIFtfcGlja2VyIHNldERlbGVnYXRlOnNlbGZdOworCisg
ICAgX2luY2x1ZGVFZGl0b3JTZXJ2aWNlcyA9IFlFUzsKKyAgICBfcGlja2VyQ2xpZW50ID0gJnBp
Y2tlckNsaWVudDsKKworICAgIHJldHVybiBzZWxmOworI2VuZGlmCit9CisjZW5kaWYgLy8gRU5B
QkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisKKwogLSAodm9pZCljbGVhcgogewogICAgIC8vIFByb3Rl
Y3Qgc2VsZiBmcm9tIGJlaW5nIGRlYWxsb2MnZWQgcGFydHdheSB0aHJvdWdoIHRoaXMgbWV0aG9k
LgpAQCAtMTQwLDkgKzE5MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAtICh2b2lk
KXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2UgZGlkU2hh
cmVJdGVtczooTlNBcnJheSAqKWl0ZW1zCiB7Ci0gICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IHdo
YXQgaXRlbSB3YXMgc2hhcmVkIGlmIHdlIHdlcmUgaW50ZXJlc3RlZCBpbiBlZGl0b3Igc2Vydmlj
ZXMKLSAgICAvLyAoaS5lLiwgaWYgd2UgcGxhbiBvbiByZXBsYWNpbmcgdGhlIHNlbGVjdGlvbiB3
aXRoIHRoZSByZXR1cm5lZCBpdGVtKQotICAgIGlmICghX2luY2x1ZGVFZGl0b3JTZXJ2aWNlcykK
KyAgICBpZiAoIV9oYW5kbGVFZGl0aW5nUmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIFdlIG9ubHkgc2VuZCBvbmUgaXRlbSwgc28gd2Ugc2hvdWxkIG9ubHkgZ2V0IG9uZSBp
dGVtIGJhY2suCkBAIC0yMTEsNCArMjYwLDQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IEBlbmQKIAotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaAppbmRleCAxOTRlMjA2Li45NTAwYWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTI2LDYg
KzI2LDggQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQor
CiAjaW1wb3J0ICJXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaCIKICNpbXBvcnQg
PFdlYkNvcmUvQ29udGV4dE1lbnVDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5o
PgpAQCAtMzksNyArNDEsNyBAQCBjbGFzcyBOb2RlOwogCiBjbGFzcyBXZWJDb250ZXh0TWVudUNs
aWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudAogI2lmIEVOQUJMRShTRVJW
SUNFX0NPTlRST0xTKQotLCBwdWJsaWMgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQKKyAg
ICAsIHB1YmxpYyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudAogI2VuZGlmCiB7CiBwdWJs
aWM6CkBAIC02NCwyMSArNjYsMjEgQEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRS
T0xTKQogICAgIC8vIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50CiAgICAgdmlydHVhbCB2
b2lkIHNoYXJpbmdTZXJ2aWNlUGlja2VyV2lsbEJlRGVzdHJveWVkKFdlYlNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2Uq
IHBhZ2VGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIgJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRv
d0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ciAmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBzY3JlZW5SZWN0
Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tl
ckNvbnRyb2xsZXIgJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZXRhaW5QdHI8TlNJbWFnZT4g
aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgV2ViVmlldyAqd2Vi
VmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQotICAgICAgICAKIHByaXZhdGU6CiAgICAgTlNN
ZW51ICpjb250ZXh0TWVudUZvckV2ZW50KE5TRXZlbnQgKiwgTlNWaWV3ICosIGJvb2wmIGlzU2Vy
dmljZXNNZW51KTsKIAogICAgIGJvb2wgY2xpZW50RmxvYXRSZWN0Rm9yTm9kZShXZWJDb3JlOjpO
b2RlJiwgV2ViQ29yZTo6RmxvYXRSZWN0JikgY29uc3Q7CiAKLSAgICBXZWJWaWV3ICptX3dlYlZp
ZXc7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgUmV0YWluUHRyPFdlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcj4gbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXI7CisjZWxzZQorICAgIFdlYlZpZXcqIG1fd2ViVmlldzsKICNlbmRpZgogfTsKKworI2VuZGlm
IC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IDcwZTI5NDQu
LjI0ZGY2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC02Nyw4ICs2NywxMiBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIC0gKHZvaWQpc3BlYWtTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nOwog
QGVuZAogCi1XZWJDb250ZXh0TWVudUNsaWVudDo6V2ViQ29udGV4dE1lbnVDbGllbnQoV2ViVmll
dyAqd2ViVmlldykgCitXZWJDb250ZXh0TWVudUNsaWVudDo6V2ViQ29udGV4dE1lbnVDbGllbnQo
V2ViVmlldyAqd2ViVmlldykKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKyAgICA6IFdl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KHdlYlZpZXcpCisjZWxzZQogICAgIDogbV93ZWJW
aWV3KHdlYlZpZXcpCisjZW5kaWYKIHsKIH0KIApAQCAtNDEyLDE2ICs0MTYsNiBAQCB2b2lkIFdl
YkNvbnRleHRNZW51Q2xpZW50OjpzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChX
ZWJTaGFyaW5nU2VydmljZQogICAgIG1fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyID0g
bmlsOwogfQogCi1XZWJDb3JlOjpQYWdlKiBXZWJDb250ZXh0TWVudUNsaWVudDo6cGFnZUZvclNo
YXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQot
ewotICAgIHJldHVybiBbbV93ZWJWaWV3IHBhZ2VdOwotfQotCi1SZXRhaW5QdHI8TlNXaW5kb3c+
IFdlYkNvbnRleHRNZW51Q2xpZW50Ojp3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKLXsKLSAgICByZXR1cm4gW21fd2ViVmll
dyB3aW5kb3ddOwotfQotCiBXZWJDb3JlOjpGbG9hdFJlY3QgV2ViQ29udGV4dE1lbnVDbGllbnQ6
OnNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdT
ZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQogewogICAgIFBhZ2UqIHBhZ2UgPSBbbV93ZWJWaWV3
IHBhZ2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmgKaW5kZXggZDgxYmJlMC4uNjVi
Mjg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2Vs
ZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCkBAIC01MSwxNCArNTEsOCBA
QCBwdWJsaWM6CiAKICAgICAvLyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudAogICAgIHZp
cnR1YWwgdm9pZCBzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChXZWJTaGFyaW5n
U2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3Jl
OjpQYWdlKiBwYWdlRm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TV2luZG93
PiB3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNv
bnRyb2xsZXIgJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3Qgc2Ny
ZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmV0YWluUHRyPE5T
SW1hZ2U+IGltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5n
U2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgV2Vi
VmlldyAqbV93ZWJWaWV3OwotCiAgICAgUmV0YWluUHRyPFdlYlNoYXJpbmdTZXJ2aWNlUGlja2Vy
Q29udHJvbGxlcj4gbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXI7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tCmluZGV4IDE0MGIxMGMuLjU1Y2YzNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZp
Y2VDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tCkBAIC0zNyw3ICszNyw3IEBACiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OldlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyKFdlYlZpZXcgKndlYlZpZXcpIAotICAgIDogbV93ZWJW
aWV3KHdlYlZpZXcpCisgICAgOiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudCh3ZWJWaWV3
KQogewogfQogCkBAIC01OCw2ICs1OCw3IEBAIHZvaWQgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRy
b2xsZXI6OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhXZWJDb3JlOjpGcmFtZVNlCiAgICAg
TlNBcnJheSAqaXRlbXMgPSBAWyBhdHRyaWJ1dGVkU2VsZWN0aW9uLmdldCgpIF07CiAKICAgICBi
b29sIGlzRWRpdGFibGUgPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUo
KTsKKyAgICAKICAgICBtX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciA9IGFkb3B0TlMo
W1tXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoSXRlbXM6
aXRlbXMgaW5jbHVkZUVkaXRvclNlcnZpY2VzOmlzRWRpdGFibGUgY2xpZW50OnRoaXMgc3R5bGU6
TlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlVGV4dFNlbGVjdGlvbl0pOwogCiAgICAgUmV0YWlu
UHRyPE5TTWVudT4gbWVudSA9IGFkb3B0TlMoW1ttX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJv
bGxlciBtZW51XSBjb3B5XSk7CkBAIC05NiwyNCArOTcsNCBAQCB2b2lkIFdlYlNlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyOjpzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChXZWJT
aGFyaQogICAgIG1fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyID0gbmlsOwogfQogCi1X
ZWJDb3JlOjpQYWdlKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6cGFnZUZvclNoYXJp
bmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQotewot
ICAgIHJldHVybiBbbV93ZWJWaWV3IHBhZ2VdOwotfQotCi1SZXRhaW5QdHI8TlNXaW5kb3c+IFdl
YlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjp3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tl
cihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKLXsKLSAgICByZXR1cm4gW21f
d2ViVmlldyB3aW5kb3ddOwotfQotCi1GbG9hdFJlY3QgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRy
b2xsZXI6OnNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQotewotICAgIHJldHVybiBGbG9hdFJlY3Qo
KTsKLX0KLQotUmV0YWluUHRyPE5TSW1hZ2U+IFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyICYpCi17Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA2ZGQ0YzRjLi41YzM3
YzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM4LDYg
KzM4LDcgQEAKICNpbXBvcnQgIldlYkFjdGlvbk1lbnVDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJX
ZWJBcmNoaXZlLmgiCiAjaW1wb3J0ICJXZWJDbGlwVmlldy5oIgorI2ltcG9ydCAiV2ViQ29udGV4
dE1lbnVDbGllbnQuaCIKICNpbXBvcnQgIldlYkRPTU9wZXJhdGlvbnNJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV2ViRGF0YVNvdXJjZUludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJEZWZhdWx0VUlEZWxl
Z2F0ZS5oIgpAQCAtNjcsNiArNjgsNyBAQAogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXMuaCIKICNp
bXBvcnQgIldlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViUmVzb3VyY2VQcml2
YXRlLmgiCisjaW1wb3J0ICJXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaCIKICNp
bXBvcnQgIldlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViVHlwZXNJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIKQEAgLTYyNCw2ICs2
MjYsOCBAQCBzdHJ1Y3QgV2ViSFRNTFZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgQk9PTCBlbnVtZXJhdGluZ1N1YnZpZXdzOwogI2VuZGlmCisK
KyAgICBSZXRhaW5QdHI8V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyPiBjdXJyZW50
U2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyOwogfQogLSAodm9pZCljbGVhcjsKIEBlbmQK
QEAgLTMzNTgsNiArMzM2MiwyMSBAQCBzdGF0aWMgdm9pZCBzZXRNZW51VGFyZ2V0cyhOU01lbnUq
IG1lbnUpCiAgICAgaWYgKCFjb3JlTWVudSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAorICAgIGF1
dG8gbWVudUl0ZW1WZWN0b3IgPSBjb250ZXh0TWVudUl0ZW1WZWN0b3IoY29yZU1lbnUtPnBsYXRm
b3JtRGVzY3JpcHRpb24oKSk7CisgICAgZm9yIChhdXRvJiBtZW51SXRlbSA6IG1lbnVJdGVtVmVj
dG9yKSB7CisgICAgICAgIGlmIChtZW51SXRlbS5hY3Rpb24oKSAhPSBDb250ZXh0TWVudUl0ZW1U
YWdTaGFyZU1lbnUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBOU01lbnVJdGVt
ICpuc0l0ZW0gPSBtZW51SXRlbS5wbGF0Zm9ybURlc2NyaXB0aW9uKCk7CisgICAgICAgIGlmICgh
W25zSXRlbS5yZXByZXNlbnRlZE9iamVjdCBpc0tpbmRPZkNsYXNzOltOU1NoYXJpbmdTZXJ2aWNl
UGlja2VyIGNsYXNzXV0pIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9M
UykKKyAgICAgICAgX3ByaXZhdGUtPmN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXIgPSBhZG9wdE5TKFtbV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIGFsbG9jXSBp
bml0V2l0aFNoYXJpbmdTZXJ2aWNlUGlja2VyOm5zSXRlbS5yZXByZXNlbnRlZE9iamVjdCBjbGll
bnQ6c3RhdGljX2Nhc3Q8V2ViQ29udGV4dE1lbnVDbGllbnQmPihwYWdlLT5jb250ZXh0TWVudUNv
bnRyb2xsZXIoKS5jbGllbnQoKSldKTsKKyNlbmRpZgorICAgIH0KKwogICAgIE5TQXJyYXkqIG1l
bnVJdGVtcyA9IGNvcmVNZW51LT5wbGF0Zm9ybURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCFtZW51
SXRlbXMpCiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdEYXRhLmgKaW5kZXggOGI5ZTk3ZC4uNmFlOTliYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdEYXRhLmgKQEAgLTkzLDcgKzkzLDEwIEBAIGV4dGVybiBpbnQgcGx1Z2luRGF0
YWJhc2VDbGllbnRDb3VudDsKIAogY2xhc3MgTGF5ZXJGbHVzaENvbnRyb2xsZXI7CiBjbGFzcyBX
ZWJWaWV3R3JvdXA7CisKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKIGNsYXNzIFdlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyOworI2VuZGlmCiAKIGNsYXNzIFdlYlZpZXdMYXllckZs
dXNoU2NoZWR1bGVyIDogcHVibGljIFdlYkNvcmU6OkxheWVyRmx1c2hTY2hlZHVsZXIgewogcHVi
bGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmYjg4
MGM0Li5iYWY0ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtNDA2MCw4ICs0MDYwLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnRlcm5hbFNob3dD
b250ZXh0TWVudShjb25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBDCiAgICAgICAg
IH0KIAogICAgICAgICBDb250ZXh0TWVudUl0ZW0gY29yZUl0ZW0gPSBDb250ZXh0TWVudUl0ZW06
OnNoYXJlTWVudUl0ZW0oYWJzb2x1dGVMaW5rVVJMLCBkb3dubG9hZGFibGVNZWRpYVVSTCwgaW1h
Z2UuZ2V0KCksIGNvbnRleHRNZW51Q29udGV4dERhdGEuc2VsZWN0ZWRUZXh0KCkpOwotICAgICAg
ICBpZiAoIWNvcmVJdGVtLmlzTnVsbCgpKQorICAgICAgICBpZiAoIWNvcmVJdGVtLmlzTnVsbCgp
KSB7CisgICAgICAgICAgICBwbGF0Zm9ybUluaXRpYWxpemVTaGFyZU1lbnVJdGVtKGNvcmVJdGVt
KTsKICAgICAgICAgICAgIHByb3Bvc2VkQVBJSXRlbXMuYXBwZW5kKFdlYkNvbnRleHRNZW51SXRl
bTo6Y3JlYXRlKGNvcmVJdGVtKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBWZWN0b3I8UmVm
UHRyPFdlYkNvbnRleHRNZW51SXRlbT4+IGNsaWVudEl0ZW1zOwpAQCAtNDA3Nyw2ICs0MDc5LDEy
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudShjb25zdCBJbnRQ
b2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBDCiAgICAgbV9jb250ZXh0TWVudUNsaWVudC0+Y29u
dGV4dE1lbnVEaXNtaXNzZWQoKnRoaXMpOwogfQogCisjaWYgIVBMQVRGT1JNKE1BQykKK3ZvaWQg
V2ViUGFnZVByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVTaGFyZU1lbnVJdGVtKENvbnRleHRNZW51
SXRlbSYpCit7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRl
bVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCiB7CiAgICAgLy8g
QXBwbGljYXRpb24gY3VzdG9tIGl0ZW1zIGRvbid0IG5lZWQgdG8gcm91bmQtdHJpcCB0aHJvdWdo
IHRvIFdlYkNvcmUgaW4gdGhlIFdlYlByb2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggN2QxMTAyMS4uMjcyMTNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTIzMyw2ICsxMjMzLDggQEAgcHJpdmF0ZToKICAgICB9
OwogICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51
TG9jYXRpb24sIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25zdCBWZWN0b3I8V2Vi
Q29udGV4dE1lbnVJdGVtRGF0YT4mLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgaW50ZXJu
YWxTaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1lbnVMb2NhdGlvbiwg
Y29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhPiYsIENvbnRleHRNZW51Q2xpZW50RWxpZ2liaWxpdHksIGNvbnN0IFVzZXJEYXRh
Jik7CisKKyAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVNoYXJlTWVudUl0ZW0oV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVS
X0RFVEVDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tT
aGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmZjOTc2NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oCkBAIC0wLDAg
KzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxl
Z2F0ZV9oCisjZGVmaW5lIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV9oCisKKyNpZiBF
TkFCTEUoU0VSVklDRV9DT05UUk9MUykKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJDb250ZXh0TWVudVByb3h5TWFjOworfQorCitA
Y2xhc3MgTlNTaGFyaW5nU2VydmljZVBpY2tlcjsKKworQGludGVyZmFjZSBXS1NoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGUgOiBOU09iamVjdCA8TlNTaGFyaW5nU2VydmljZURlbGVnYXRlLCBO
U1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGU+IHsKKyAgICBXZWJLaXQ6OldlYkNvbnRleHRN
ZW51UHJveHlNYWMqIF9tZW51UHJveHk7CisgICAgUmV0YWluUHRyPE5TU2hhcmluZ1NlcnZpY2VQ
aWNrZXI+IF9waWNrZXI7CisgICAgQk9PTCBfZmlsdGVyRWRpdGluZ1NlcnZpY2VzOworICAgIEJP
T0wgX2hhbmRsZUVkaXRpbmdSZXBsYWNlbWVudDsKK30KKworKyAoV0tTaGFyaW5nU2VydmljZVBp
Y2tlckRlbGVnYXRlICopc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZTsKKy0gKFdl
YktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVudVByb3h5OworLSAodm9pZClzZXRNZW51
UHJveHk6KFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVudVByb3h5OworLSAodm9p
ZClzZXRQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgKilwaWNrZXI7CistICh2b2lkKXNl
dEZpbHRlcnNFZGl0aW5nU2VydmljZXM6KEJPT0wpZmlsdGVyc0VkaXRpbmdTZXJ2aWNlczsKKy0g
KHZvaWQpc2V0SGFuZGxlc0VkaXRpbmdSZXBsYWNlbWVudDooQk9PTCloYW5kbGVzRWRpdGluZ1Jl
cGxhY2VtZW50OworQGVuZAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisj
ZW5kaWYgLy8gV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRl
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNlUGlja2Vy
RGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYxYTY2NQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5n
U2VydmljZVBpY2tlckRlbGVnYXRlLm1tCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdh
dGUuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorCisjaW1wb3J0ICJEYXRhUmVm
ZXJlbmNlLmgiCisjaW1wb3J0ICJXZWJDb250ZXh0TWVudVByb3h5TWFjLmgiCisjaW1wb3J0ICJX
ZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTlNTaGFyaW5nU2VydmljZVBpY2tlclNQ
SS5oPgorI2ltcG9ydCA8V2ViQ29yZS9OU1NoYXJpbmdTZXJ2aWNlU1BJLmg+CisjaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworLy8gRklYTUU6IFdlIHByb2JhYmx5IG5lZWQgdG8gaGFu
ZyBvbiB0aGUgcGlja2VyIGl0c2VsZiB1bnRpbCB0aGUgY29udGV4dCBtZW51IG9wZXJhdGlvbiBp
cyBkb25lLCBhbmQgdGhpcyBvYmplY3Qgd2lsbCBwcm9iYWJseSBkbyB0aGF0LgorQGltcGxlbWVu
dGF0aW9uIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZQorCisrIChXS1NoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGUqKXNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUKK3sK
KyAgICBzdGF0aWMgV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlKiBkZWxlZ2F0ZSA9IFtb
V0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIGFsbG9jXSBpbml0XTsKKyAgICByZXR1cm4g
ZGVsZWdhdGU7Cit9CisKKy0gKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyopbWVudVBy
b3h5Cit7CisgICAgcmV0dXJuIF9tZW51UHJveHk7Cit9CisKKy0gKHZvaWQpc2V0TWVudVByb3h5
OihXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eQoreworICAgIF9tZW51
UHJveHkgPSBtZW51UHJveHk7Cit9CisKKy0gKHZvaWQpc2V0UGlja2VyOihOU1NoYXJpbmdTZXJ2
aWNlUGlja2VyICopcGlja2VyCit7CisgICAgX3BpY2tlciA9IHBpY2tlcjsKK30KKworLSAodm9p
ZClzZXRGaWx0ZXJzRWRpdGluZ1NlcnZpY2VzOihCT09MKWZpbHRlcnNFZGl0aW5nU2VydmljZXMK
K3sKKyAgICBfZmlsdGVyRWRpdGluZ1NlcnZpY2VzID0gZmlsdGVyc0VkaXRpbmdTZXJ2aWNlczsK
K30KKworLSAodm9pZClzZXRIYW5kbGVzRWRpdGluZ1JlcGxhY2VtZW50OihCT09MKWhhbmRsZXNF
ZGl0aW5nUmVwbGFjZW1lbnQKK3sKKyAgICBfaGFuZGxlRWRpdGluZ1JlcGxhY2VtZW50ID0gaGFu
ZGxlc0VkaXRpbmdSZXBsYWNlbWVudDsKK30KKworLSAoTlNBcnJheSAqKXNoYXJpbmdTZXJ2aWNl
UGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICopc2hhcmluZ1NlcnZpY2VQaWNrZXIgc2hh
cmluZ1NlcnZpY2VzRm9ySXRlbXM6KE5TQXJyYXkgKilpdGVtcyBtYXNrOihOU1NoYXJpbmdTZXJ2
aWNlTWFzayltYXNrIHByb3Bvc2VkU2hhcmluZ1NlcnZpY2VzOihOU0FycmF5ICopcHJvcG9zZWRT
ZXJ2aWNlcworeworICAgIGlmICghX2ZpbHRlckVkaXRpbmdTZXJ2aWNlcykKKyAgICAgICAgcmV0
dXJuIHByb3Bvc2VkU2VydmljZXM7CisKKyAgICBOU011dGFibGVBcnJheSAqc2VydmljZXMgPSBb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Oltwcm9wb3NlZFNlcnZpY2Vz
IGNvdW50XV07CisgICAgCisgICAgZm9yIChOU1NoYXJpbmdTZXJ2aWNlICpzZXJ2aWNlIGluIHBy
b3Bvc2VkU2VydmljZXMpIHsKKyAgICAgICAgaWYgKHNlcnZpY2UudHlwZSAhPSBOU1NoYXJpbmdT
ZXJ2aWNlVHlwZUVkaXRvcikKKyAgICAgICAgICAgIFtzZXJ2aWNlcyBhZGRPYmplY3Q6c2Vydmlj
ZV07CisgICAgfQorICAgIAorICAgIHJldHVybiBzZXJ2aWNlczsKK30KKworLSAoaWQgPE5TU2hh
cmluZ1NlcnZpY2VEZWxlZ2F0ZT4pc2hhcmluZ1NlcnZpY2VQaWNrZXI6KE5TU2hhcmluZ1NlcnZp
Y2VQaWNrZXIgKilzaGFyaW5nU2VydmljZVBpY2tlciBkZWxlZ2F0ZUZvclNoYXJpbmdTZXJ2aWNl
OihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2UKK3sKKyAgICByZXR1cm4gc2VsZjsK
K30KKworLSAodm9pZClzaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJpbmdT
ZXJ2aWNlIHdpbGxTaGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMKK3sKKyAgICBfbWVudVByb3h5
LT5jbGVhclNlcnZpY2VzTWVudSgpOworfQorCistICh2b2lkKXNoYXJpbmdTZXJ2aWNlOihOU1No
YXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2UgZGlkU2hhcmVJdGVtczooTlNBcnJheSAqKWl0
ZW1zCit7CisgICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IHdoYXQgaXRlbSB3YXMgc2hhcmVkIGlm
IHdlIHdlcmUgaW50ZXJlc3RlZCBpbiBlZGl0b3Igc2VydmljZXMKKyAgICAvLyAoaS5lLiwgaWYg
d2UgcGxhbiBvbiByZXBsYWNpbmcgdGhlIHNlbGVjdGlvbiB3aXRoIHRoZSByZXR1cm5lZCBpdGVt
KQorICAgIGlmICghX2hhbmRsZUVkaXRpbmdSZXBsYWNlbWVudCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CisgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2U7CisKKyAgICBpZCBpdGVtID0gW2l0ZW1zIG9iamVjdEF0SW5kZXg6MF07CisKKyAg
ICBpZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0pIHsK
KyAgICAgICAgTlNEYXRhICpkYXRhID0gW2l0ZW0gUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgw
LCBbaXRlbSBsZW5ndGhdKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXTsKKyAgICAgICAgZGF0YVJl
ZmVyZW5jZSA9IElQQzo6RGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
W2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisKKyAgICAgICAgdHlwZXMuYXBwZW5kKE5T
UGFzdGVib2FyZFR5cGVSVEZEKTsKKyAgICAgICAgdHlwZXMuYXBwZW5kKE5TUlRGRFBib2FyZFR5
cGUpOworICAgIH0gZWxzZSBpZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0p
IHsKKyAgICAgICAgTlNEYXRhICpkYXRhID0gKE5TRGF0YSAqKWl0ZW07CisgICAgICAgIFJldGFp
blB0cjxDR0ltYWdlU291cmNlUmVmPiBzb3VyY2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVh
dGVXaXRoRGF0YSgoQ0ZEYXRhUmVmKWRhdGEsIE5VTEwpKTsKKyAgICAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGltYWdlID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlSW1hZ2VBdEluZGV4
KHNvdXJjZS5nZXQoKSwgMCwgTlVMTCkpOworCisgICAgICAgIGlmICghaW1hZ2UpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgZGF0YVJlZmVyZW5jZSA9IElQQzo6RGF0YVJlZmVyZW5j
ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3Ro
XSk7CisgICAgICAgIHR5cGVzLmFwcGVuZChOU1Bhc3RlYm9hcmRUeXBlVElGRik7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgTE9HX0VSUk9SKCJzaGFyaW5nU2VydmljZTpkaWRTaGFyZUl0ZW1zOiAt
IFVua25vd24gaXRlbSB0eXBlIHJldHVybmVkXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWRvcHQgcmVwbGFjZVNlbGVjdGlvbldpdGhBdHRy
aWJ1dGVkU3RyaW5nIGluc3RlYWQgb2YgYm91bmNpbmcgdGhyb3VnaCB0aGUgKGZha2UpIHBhc3Rl
Ym9hcmQuCisgICAgX21lbnVQcm94eS0+cGFnZSgpLnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVi
b2FyZERhdGEodHlwZXMsIGRhdGFSZWZlcmVuY2UpOworfQorCistIChOU1dpbmRvdyAqKXNoYXJp
bmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2Ugc291cmNlV2luZG93
Rm9yU2hhcmVJdGVtczooTlNBcnJheSAqKWl0ZW1zIHNoYXJpbmdDb250ZW50U2NvcGU6KE5TU2hh
cmluZ0NvbnRlbnRTY29wZSAqKXNoYXJpbmdDb250ZW50U2NvcGUKK3sKKyAgICByZXR1cm4gX21l
bnVQcm94eS0+d2luZG93KCk7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNZW51UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNZW51UHJveHlNYWMubW0KaW5kZXggNTU4MGVkMS4uNTEzZWEyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1h
Yy5tbQpAQCAtMzQsMTAgKzM0LDExIEBACiAjaW1wb3J0ICJTZXJ2aWNlc0NvbnRyb2xsZXIuaCIK
ICNpbXBvcnQgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgi
CisjaW1wb3J0ICJXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldL
Vmlldy5oIgogI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCiAjaW1wb3J0ICJXZWJDb250
ZXh0TWVudUl0ZW1EYXRhLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbXBvcnQg
IldLVmlldy5oIgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSW50UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9OU1NoYXJpbmdTZXJ2aWNlUGlj
a2VyU1BJLmg+CkBAIC0xNDcsMTE5ICsxNDgsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogQGVuZAogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi1AaW50ZXJmYWNlIFdLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1NoYXJpbmdTZXJ2aWNlRGVs
ZWdhdGUsIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZT4gewotICAgIFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVQcm94eU1hYyogX21lbnVQcm94eTsKLSAgICBSZXRhaW5QdHI8TlNTaGFyaW5n
U2VydmljZVBpY2tlcj4gX3BpY2tlcjsKLSAgICBCT09MIF9pbmNsdWRlRWRpdG9yU2VydmljZXM7
Ci19Ci0KLSsgKFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSAqKXNoYXJlZFNoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGU7Ci0tIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMq
KW1lbnVQcm94eTsKLS0gKHZvaWQpc2V0TWVudVByb3h5OihXZWJLaXQ6OldlYkNvbnRleHRNZW51
UHJveHlNYWMqKW1lbnVQcm94eTsKLS0gKHZvaWQpc2V0UGlja2VyOihOU1NoYXJpbmdTZXJ2aWNl
UGlja2VyICopcGlja2VyOwotLSAodm9pZClzZXRJbmNsdWRlRWRpdG9yU2VydmljZXM6KEJPT0wp
aW5jbHVkZUVkaXRvclNlcnZpY2VzOwotQGVuZAotCi0vLyBGSVhNRTogV2UgcHJvYmFibHkgbmVl
ZCB0byBoYW5nIG9uIHRoZSBwaWNrZXIgaXRzZWxmIHVudGlsIHRoZSBjb250ZXh0IG1lbnUgb3Bl
cmF0aW9uIGlzIGRvbmUsIGFuZCB0aGlzIG9iamVjdCB3aWxsIHByb2JhYmx5IGRvIHRoYXQuCi1A
aW1wbGVtZW50YXRpb24gV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlCi0rIChXS1NoYXJp
bmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUqKXNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdh
dGUKLXsKLSAgICBzdGF0aWMgV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlKiBkZWxlZ2F0
ZSA9IFtbV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAgICBy
ZXR1cm4gZGVsZWdhdGU7Ci19Ci0KLS0gKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyop
bWVudVByb3h5Ci17Ci0gICAgcmV0dXJuIF9tZW51UHJveHk7Ci19Ci0KLS0gKHZvaWQpc2V0TWVu
dVByb3h5OihXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eQotewotICAg
IF9tZW51UHJveHkgPSBtZW51UHJveHk7Ci19Ci0KLS0gKHZvaWQpc2V0UGlja2VyOihOU1NoYXJp
bmdTZXJ2aWNlUGlja2VyICopcGlja2VyCi17Ci0gICAgX3BpY2tlciA9IHBpY2tlcjsKLX0KLQot
LSAodm9pZClzZXRJbmNsdWRlRWRpdG9yU2VydmljZXM6KEJPT0wpaW5jbHVkZUVkaXRvclNlcnZp
Y2VzCi17Ci0gICAgX2luY2x1ZGVFZGl0b3JTZXJ2aWNlcyA9IGluY2x1ZGVFZGl0b3JTZXJ2aWNl
czsKLX0KLQotLSAoTlNBcnJheSAqKXNoYXJpbmdTZXJ2aWNlUGlja2VyOihOU1NoYXJpbmdTZXJ2
aWNlUGlja2VyICopc2hhcmluZ1NlcnZpY2VQaWNrZXIgc2hhcmluZ1NlcnZpY2VzRm9ySXRlbXM6
KE5TQXJyYXkgKilpdGVtcyBtYXNrOihOU1NoYXJpbmdTZXJ2aWNlTWFzayltYXNrIHByb3Bvc2Vk
U2hhcmluZ1NlcnZpY2VzOihOU0FycmF5ICopcHJvcG9zZWRTZXJ2aWNlcwotewotICAgIGlmIChf
aW5jbHVkZUVkaXRvclNlcnZpY2VzKQotICAgICAgICByZXR1cm4gcHJvcG9zZWRTZXJ2aWNlczsK
LQotICAgIE5TTXV0YWJsZUFycmF5ICpzZXJ2aWNlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQ2FwYWNpdHk6W3Byb3Bvc2VkU2VydmljZXMgY291bnRdXTsKLSAgICAKLSAgICBm
b3IgKE5TU2hhcmluZ1NlcnZpY2UgKnNlcnZpY2UgaW4gcHJvcG9zZWRTZXJ2aWNlcykgewotICAg
ICAgICBpZiAoc2VydmljZS50eXBlICE9IE5TU2hhcmluZ1NlcnZpY2VUeXBlRWRpdG9yKQotICAg
ICAgICAgICAgW3NlcnZpY2VzIGFkZE9iamVjdDpzZXJ2aWNlXTsKLSAgICB9Ci0gICAgCi0gICAg
cmV0dXJuIHNlcnZpY2VzOwotfQotCi0tIChpZCA8TlNTaGFyaW5nU2VydmljZURlbGVnYXRlPilz
aGFyaW5nU2VydmljZVBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXNoYXJpbmdTZXJ2
aWNlUGlja2VyIGRlbGVnYXRlRm9yU2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilz
aGFyaW5nU2VydmljZQotewotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKXNoYXJpbmdT
ZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2Ugd2lsbFNoYXJlSXRlbXM6
KE5TQXJyYXkgKilpdGVtcwotewotICAgIF9tZW51UHJveHktPmNsZWFyU2VydmljZXNNZW51KCk7
Ci19Ci0KLS0gKHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5n
U2VydmljZSBkaWRTaGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMKLXsKLSAgICAvLyBXZSBvbmx5
IGNhcmUgYWJvdXQgd2hhdCBpdGVtIHdhcyBzaGFyZWQgaWYgd2Ugd2VyZSBpbnRlcmVzdGVkIGlu
IGVkaXRvciBzZXJ2aWNlcwotICAgIC8vIChpLmUuLCBpZiB3ZSBwbGFuIG9uIHJlcGxhY2luZyB0
aGUgc2VsZWN0aW9uIHdpdGggdGhlIHJldHVybmVkIGl0ZW0pCi0gICAgaWYgKCFfaW5jbHVkZUVk
aXRvclNlcnZpY2VzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB0eXBl
czsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLQotICAgIGlkIGl0ZW0g
PSBbaXRlbXMgb2JqZWN0QXRJbmRleDowXTsKLQotICAgIGlmIChbaXRlbSBpc0tpbmRPZkNsYXNz
OltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSkgewotICAgICAgICBOU0RhdGEgKmRhdGEgPSBb
aXRlbSBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtpdGVtIGxlbmd0aF0pIGRvY3VtZW50
QXR0cmlidXRlczpuaWxdOwotICAgICAgICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJl
bmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5n
dGhdKTsKLQotICAgICAgICB0eXBlcy5hcHBlbmQoTlNQYXN0ZWJvYXJkVHlwZVJURkQpOwotICAg
ICAgICB0eXBlcy5hcHBlbmQoTlNSVEZEUGJvYXJkVHlwZSk7Ci0gICAgfSBlbHNlIGlmIChbaXRl
bSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkgewotICAgICAgICBOU0RhdGEgKmRhdGEg
PSAoTlNEYXRhICopaXRlbTsKLSAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IHNv
dXJjZSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChDRkRhdGFSZWYpZGF0
YSwgTlVMTCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENG
KENHSW1hZ2VTb3VyY2VDcmVhdGVJbWFnZUF0SW5kZXgoc291cmNlLmdldCgpLCAwLCBOVUxMKSk7
Ci0KLSAgICAgICAgaWYgKCFpbWFnZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBk
YXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKLSAgICAgICAgdHlwZXMuYXBwZW5k
KE5TUGFzdGVib2FyZFR5cGVUSUZGKTsKLSAgICB9IGVsc2UgewotICAgICAgICBMT0dfRVJST1Io
InNoYXJpbmdTZXJ2aWNlOmRpZFNoYXJlSXRlbXM6IC0gVW5rbm93biBpdGVtIHR5cGUgcmV0dXJu
ZWRcbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBhZG9wdCByZXBsYWNlU2VsZWN0aW9uV2l0aEF0dHJpYnV0ZWRTdHJpbmcgaW5zdGVhZCBvZiBi
b3VuY2luZyB0aHJvdWdoIHRoZSAoZmFrZSkgcGFzdGVib2FyZC4KLSAgICBfbWVudVByb3h5LT5w
YWdlKCkucmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0eXBlcywgZGF0YVJlZmVy
ZW5jZSk7Ci19Ci0KLS0gKE5TV2luZG93ICopc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZp
Y2UgKilzaGFyaW5nU2VydmljZSBzb3VyY2VXaW5kb3dGb3JTaGFyZUl0ZW1zOihOU0FycmF5ICop
aXRlbXMgc2hhcmluZ0NvbnRlbnRTY29wZTooTlNTaGFyaW5nQ29udGVudFNjb3BlICopc2hhcmlu
Z0NvbnRlbnRTY29wZQotewotICAgIHJldHVybiBfbWVudVByb3h5LT53aW5kb3coKTsKLX0KLQot
QGVuZAotCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkNvbnRleHRNZW51UHJv
eHlNYWM6OldlYkNvbnRleHRNZW51UHJveHlNYWMoV0tWaWV3KiB3ZWJWaWV3LCBXZWJQYWdlUHJv
eHkqIHBhZ2UpCkBAIC0zOTIsNyArMjgwLDggQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFj
OjpzZXR1cFNlcnZpY2VzTWVudShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiBjb24KICAg
ICBbcGlja2VyIHNldFN0eWxlOmhhc0NvbnRyb2xsZWRJbWFnZSA/IE5TU2hhcmluZ1NlcnZpY2VQ
aWNrZXJTdHlsZVJvbGxvdmVyIDogTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlVGV4dFNlbGVj
dGlvbl07CiAgICAgW3BpY2tlciBzZXREZWxlZ2F0ZTpbV0tTaGFyaW5nU2VydmljZVBpY2tlckRl
bGVnYXRlIHNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGVdXTsKICAgICBbW1dLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVn
YXRlXSBzZXRQaWNrZXI6cGlja2VyLmdldCgpXTsKLSAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRJbmNsdWRl
RWRpdG9yU2VydmljZXM6aW5jbHVkZUVkaXRvclNlcnZpY2VzXTsKKyAgICBbW1dLU2hhcmluZ1Nl
cnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBz
ZXRGaWx0ZXJzRWRpdGluZ1NlcnZpY2VzOiFpbmNsdWRlRWRpdG9yU2VydmljZXNdOworICAgIFtb
V0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2Vy
RGVsZWdhdGVdIHNldEhhbmRsZXNFZGl0aW5nUmVwbGFjZW1lbnQ6aW5jbHVkZUVkaXRvclNlcnZp
Y2VzXTsKIAogICAgIG1fc2VydmljZXNNZW51ID0gYWRvcHROUyhbW3BpY2tlciBtZW51XSBjb3B5
XSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KaW5kZXggZTM4YjlmZi4uNWJjYjhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTQzLDYgKzQzLDggQEAKICNpbXBvcnQgIlN0
cmluZ1V0aWxpdGllcy5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXIuaCIKICNpbXBvcnQgIldLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgiCisjaW1wb3J0ICJXS1NoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldlYkNvbnRleHRNZW51UHJveHlNYWMuaCIK
ICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+CkBAIC03NDUsNiArNzQ3
LDIzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjplZGl0b3JTdGF0ZUNoYW5nZWQoY29uc3QgRWRpdG9y
U3RhdGUmIGVkaXRvclN0YXRlKQogICAgIH0KICNlbmRpZgogfQorCit2b2lkIFdlYlBhZ2VQcm94
eTo6cGxhdGZvcm1Jbml0aWFsaXplU2hhcmVNZW51SXRlbShDb250ZXh0TWVudUl0ZW0mIGl0ZW0p
Cit7CisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisgICAgTlNNZW51SXRlbSAqbnNJdGVt
ID0gaXRlbS5wbGF0Zm9ybURlc2NyaXB0aW9uKCk7CisKKyAgICBOU1NoYXJpbmdTZXJ2aWNlUGlj
a2VyICpzaGFyaW5nU2VydmljZVBpY2tlciA9IFtuc0l0ZW0gcmVwcmVzZW50ZWRPYmplY3RdOwor
ICAgIHNoYXJpbmdTZXJ2aWNlUGlja2VyLmRlbGVnYXRlID0gW1dLU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXTsKKyAgICAKKyAg
ICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBp
Y2tlckRlbGVnYXRlXSBzZXRGaWx0ZXJzRWRpdGluZ1NlcnZpY2VzOk5PXTsKKyAgICBbW1dLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVn
YXRlXSBzZXRIYW5kbGVzRWRpdGluZ1JlcGxhY2VtZW50Ok5PXTsKKyAgICBbW1dLU2hhcmluZ1Nl
cnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBz
ZXRNZW51UHJveHk6c3RhdGljX2Nhc3Q8V2ViQ29udGV4dE1lbnVQcm94eU1hYyo+KG1fYWN0aXZl
Q29udGV4dE1lbnUuZ2V0KCkpXTsKKworICAgIC8vIFNldHRpbmcgdGhlIHBpY2tlciBsZXRzIHRo
ZSBkZWxlZ2F0ZSByZXRhaW4gaXQgdG8ga2VlcCBpdCBhbGl2ZSwgYnV0IHRoaXMgcGlja2VyIGlz
IGtlcHQgYWxpdmUgYnkgdGhlIG1lbnUgaXRlbS4KKyAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRQaWNrZXI6
bmlsXTsKKyNlbmRpZgorfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ZDgy
NjZhLi4yZDM0NGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC05MjUsNiArOTI1LDggQEAKIAkJNTEzQTE2M0QxNjMwODhGNjAw
NUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzQTE2M0IxNjMwODhGNjAwNUQ3RDIyIC8q
IE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oICovOyB9OwogCQk1MTNBMTY0QzE2MzBBOUJG
MDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzQTE2NDkxNjMwQTlCRjAwNUQ3
RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAqLzsgfTsKIAkJNTEzQTE2
NEQxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNBMTY0QTE2MzBB
OUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAqLzsgfTsKKwkJ
NTEzRTQ2MkQxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzRTQ2
MkIxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oICov
OyB9OworCQk1MTNFNDYyRTFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tl
ckRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEzRTQ2MkMxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxl
Z2F0ZS5tbSAqLzsgfTsKIAkJNTE0QkRFRDMxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NS
ZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTRCREVEMjE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCAqLzsgfTsKIAkJ
NTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0RDlGNTUxOTExOUQzNTAw
MDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oICovOyB9OwogCQk1MTREOUY1ODE5MTE5RDM1
MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0RDlGNTYxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZp
Y2VzQ29udHJvbGxlci5tbSAqLzsgfTsKQEAgLTMxMTUsNiArMzExNyw4IEBACiAJCTUxM0ExNjQ5
MTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxM0ExNjRBMTYzMEE5
QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOyBw
YXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEzQTE2NEIxNjMwQTlCRjAwNUQ3RDIyIC8qIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
bmFtZSA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOyBwYXRoID0g
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxM0U0NjJCMUFEODM3NTYwMDE2MjM0QSAv
KiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxM0U0NjJDMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNEJERUQyMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVx
dWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aXN0aWNzUmVxdWVz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTREOUY1NTE5MTE5RDM1MDAwMDYz
QTcgLyogU2VydmljZXNDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNlcnZpY2VzQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTREOUY1NjE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VydmljZXNDb250cm9sbGVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA2Myw2ICs3MDY3LDggQEAKIAkJCQkwRkNC
NEU1RDE4QkJFM0Q5MDAwRkNGQzkgLyogV0tQcmludGluZ1ZpZXcubW0gKi8sCiAJCQkJMEZDQjRF
NUUxOEJCRTNEOTAwMEZDRkM5IC8qIFdLVGV4dElucHV0V2luZG93Q29udHJvbGxlci5oICovLAog
CQkJCTBGQ0I0RTVGMThCQkUzRDkwMDBGQ0ZDOSAvKiBXS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xs
ZXIubW0gKi8sCisJCQkJNTEzRTQ2MkIxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZp
Y2VQaWNrZXJEZWxlZ2F0ZS5oICovLAorCQkJCTUxM0U0NjJDMUFEODM3NTYwMDE2MjM0QSAvKiBX
S1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1h
YzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03OTM1LDYgKzc5NDEsNyBAQAogCQkJ
CTFBNUU0REE0MTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRTFBMEJENzFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUFGMjYzOTE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxM0U0NjJEMUFEODM3NTYw
MDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBRjA1RDg3MTQ2ODgzNDgwMDhCMUU4MSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZFNDM2NjE4QjZDMDgxMDA5QzdB
NDggLyogVUlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VFNEFFMkIxQTVEQ0Y0MzAw
MDJGNDlCIC8qIFVJS2l0U1BJLmggaW4gSGVhZGVycyAqLywKQEAgLTk4NjQsNiArOTg3MSw3IEBA
CiAJCQkJMzFBMkVDNDgxNDg5OTdDMjAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkzMTA5OTk3MzE0NkM3NUEyMDAyOURFQjkgLyogV2ViTm90aWZpY2F0
aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMzEyNjIwMTQ4RkY4MkMwMEJBMkEz
OSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxM0U0
NjJFMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUubW0g
aW4gU291cmNlcyAqLywKIAkJCQkzMUJBOTI0RDE0ODgzMTI2MDA2MkVEQjUgLyogV2ViTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUEy
RUM0QTE0ODk5N0MyMDA4MTBENzEgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMxQTJFQzREMTQ4OTk3QzIwMDgxMEQ3MSAvKiBXZWJOb3RpZmlj
YXRpb25Qcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250663</attachid>
            <date>2015-04-13 12:18:57 -0700</date>
            <delta_ts>2015-04-13 14:24:09 -0700</delta_ts>
            <desc>Patch v7 - Potentially landable</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>43651</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhZDZlZDFjLi41NDgzNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTUtMDQtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFNoYXJlIHNoZWV0cyBmcm9tIFNoYXJlIG1lbnVzIGFwcGVhciBvdXRzaWRlIHRoZSBicm93
c2VyIHdpbmRvdy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwNDU1NTkyPiBhbmQgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzYyMAorCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y2xpZW50KToK
KwogMjAxNS0wNC0wOSAgSmF2aWVyIEZlcm5hbmRleiAgPGpmZXJuYW5kZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBJbXBsZW1lbnQganVzdGlmeS1zZWxmIGFuZCBq
dXN0aWZ5LWl0ZW0gY3NzIHByb3BlcnRpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuaAppbmRleCAzNTczOWQ4Li4wZjU4NWIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGlj
OgogICAgIH5Db250ZXh0TWVudUNvbnRyb2xsZXIoKTsKIAogICAgIFBhZ2UmIHBhZ2UoKSB7IHJl
dHVybiBtX3BhZ2U7IH0KKyAgICBDb250ZXh0TWVudUNsaWVudCYgY2xpZW50KCkgeyByZXR1cm4g
bV9jbGllbnQ7IH0KIAogICAgIENvbnRleHRNZW51KiBjb250ZXh0TWVudSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGV4dE1lbnUuZ2V0KCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFy
Q29udGV4dE1lbnUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBkNTUwMTk4Li5kNTdiMzE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTUtMDQtMTMgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFNoYXJlIHNoZWV0cyBmcm9tIFNoYXJlIG1l
bnVzIGFwcGVhciBvdXRzaWRlIHRoZSBicm93c2VyIHdpbmRvdy4KKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzIwNDU1NTkyPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MzYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
IFJlZmFjdG9yIGV4aXN0aW5nIFNoYXJpbmcgU2VydmljZSBQaWNrZXIgY29kZSB0byBhbHNvIGJl
IHVzZWQgZm9yIHRoZSBTaGFyZSBtZW51IE5TTWVudUl0ZW0uCisKKyAgICAgICAgKiBNaXNjL1dl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDbGllbnQ6OndlYlZpZXcpOgorICAgICAgICAqIE1pc2MvV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDbGllbnQ6OldlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KToKKyAgICAgICAgKFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50OjpzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ry
b3llZCk6CisgICAgICAgIChXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudDo6cGFnZUZvclNo
YXJpbmdTZXJ2aWNlUGlja2VyKToKKyAgICAgICAgKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xp
ZW50Ojp3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcik6CisgICAgICAgIChXZWJTaGFyaW5n
U2VydmljZVBpY2tlckNsaWVudDo6c2NyZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBp
Y2tlckl0ZW0pOgorICAgICAgICAoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQ6OmltYWdl
Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbSk6CisgICAgICAgICgtW1dlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciBpbml0V2l0aEl0ZW1zOmluY2x1ZGVFZGl0b3JTZXJ2
aWNlczpjbGllbnQ6c3R5bGU6XSk6CisgICAgICAgICgtW1dlYlNoYXJpbmdTZXJ2aWNlUGlja2Vy
Q29udHJvbGxlciBpbml0V2l0aFNoYXJpbmdTZXJ2aWNlUGlja2VyOmNsaWVudDpdKToKKyAgICAg
ICAgKC1bV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIHNoYXJpbmdTZXJ2aWNlOmRp
ZFNoYXJlSXRlbXM6XSk6CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5oOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OndlYlZpZXcpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tOgor
ICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OldlYkNvbnRleHRNZW51Q2xpZW50KToKKyAg
ICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjpwYWdlRm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OndpbmRvd0ZvclNoYXJp
bmdTZXJ2aWNlUGlja2VyKTogRGVsZXRlZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJTZWxlY3Rpb25T
ZXJ2aWNlQ29udHJvbGxlcjo6V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VD
bGljayk6CisgICAgICAgIChXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6cGFnZUZvclNo
YXJpbmdTZXJ2aWNlUGlja2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlNlbGVjdGlvblNlcnZp
Y2VDb250cm9sbGVyOjp3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6c2NyZWVuUmVjdEZvckN1cnJl
bnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViU2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXI6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2Vy
SXRlbSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAg
ICAgICAoLVtXZWJIVE1MVmlldyBtZW51Rm9yRXZlbnQ6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3RGF0YS5oOgorCiAyMDE1LTA0LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dLMl1baU9TXSBlZGl0b3JTdGF0ZSgpIHNob3VsZCBub3QgY2F1c2Ug
YSBzeW5jaHJvbm91cyBsYXlvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2Mv
V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9N
aXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oCmluZGV4IGEzY2JjYjEuLmE5
YjQyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJTaGFy
aW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaApAQCAtMjYsMTAgKzI2LDE0IEBACiAjaWYgRU5B
QkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lm
IFBMQVRGT1JNKE1BQykKICNpbXBvcnQgPFdlYkNvcmUvTlNTaGFyaW5nU2VydmljZVBpY2tlclNQ
SS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OU1NoYXJpbmdTZXJ2aWNlU1BJLmg+CisjZW5kaWYKIAog
QGNsYXNzIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcjsKK0BjbGFzcyBXZWJWaWV3
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9hdFJlY3Q7CkBAIC00MiwyMSArNDYs
MjkgQEAgY2xhc3MgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQgewogcHVibGljOgogICAg
IHZpcnR1YWwgfldlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0cm95ZWQoV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyICYpID0gMDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2Uq
IHBhZ2VGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIgJikgPSAwOwotICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3dGb3JT
aGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3ll
ZChXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJik7CisgICAgdmlydHVhbCBXZWJD
b3JlOjpQYWdlKiBwYWdlRm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQ
aWNrZXJDb250cm9sbGVyICYpOworICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TV2luZG93PiB3aW5k
b3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXIgJik7CisKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBzY3JlZW5SZWN0Rm9yQ3Vy
cmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIgJik7CisgICAgdmlydHVhbCBSZXRhaW5QdHI8TlNJbWFnZT4gaW1hZ2VGb3JDdXJyZW50
U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ciAmKTsKKworICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0KIAot
ICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmlu
Z1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSA9
IDA7Ci0gICAgdmlydHVhbCBSZXRhaW5QdHI8TlNJbWFnZT4gaW1hZ2VGb3JDdXJyZW50U2hhcmlu
Z1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSA9
IDA7Citwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGll
bnQoV2ViVmlldyAqKTsKKyAgICBXZWJWaWV3ICptX3dlYlZpZXc7CiB9OwogCiBAaW50ZXJmYWNl
IFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciA6IE5TT2JqZWN0IDxOU1NoYXJpbmdT
ZXJ2aWNlRGVsZWdhdGUsIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZT4gewogICAgIFdl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KiBfcGlja2VyQ2xpZW50OwogICAgIFJldGFpblB0
cjxOU1NoYXJpbmdTZXJ2aWNlUGlja2VyPiBfcGlja2VyOwogICAgIEJPT0wgX2luY2x1ZGVFZGl0
b3JTZXJ2aWNlczsKKyAgICBCT09MIF9oYW5kbGVFZGl0aW5nUmVwbGFjZW1lbnQ7CiB9CiAKIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEl0ZW1zOihOU0FycmF5ICopaXRlbXMgaW5jbHVkZUVkaXRv
clNlcnZpY2VzOihCT09MKWluY2x1ZGVFZGl0b3JTZXJ2aWNlcyBjbGllbnQ6KFdlYlNoYXJpbmdT
ZXJ2aWNlUGlja2VyQ2xpZW50KilwaWNrZXJDbGllbnQgc3R5bGU6KE5TU2hhcmluZ1NlcnZpY2VQ
aWNrZXJTdHlsZSlzdHlsZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNoYXJpbmdTZXJ2aWNl
UGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICopc2hhcmluZ1NlcnZpY2VQaWNrZXIgY2xp
ZW50OihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudCYpcGlja2VyQ2xpZW50OwogLSAoTlNN
ZW51ICopbWVudTsKIC0gKHZvaWQpZGlkU2hhcmVJbWFnZURhdGE6KE5TRGF0YSAqKWRhdGEgY29u
ZmlybURhdGFJc1ZhbGlkVElGRkRhdGE6KEJPT0wpY29uZmlybURhdGE7CiAtICh2b2lkKWNsZWFy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBp
Y2tlckNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlci5tbQppbmRleCAzNDc4N2JhLi5iZGZiNDJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2Vy
Q29udHJvbGxlci5tbQpAQCAtNDIsOCArNDIsMzggQEAgc3RhdGljIE5TU3RyaW5nICpzZXJ2aWNl
Q29udHJvbHNQYXN0ZWJvYXJkTmFtZSA9IEAiV2ViS2l0U2VydmljZUNvbnRyb2xzUGFzdGVib2EK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xp
ZW50OjpXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQorICAg
IDogbV93ZWJWaWV3KHdlYlZpZXcpCit7Cit9CisKK3ZvaWQgV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDbGllbnQ6OnNoYXJpbmdTZXJ2aWNlUGlja2VyV2lsbEJlRGVzdHJveWVkKFdlYlNoYXJpbmdT
ZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQoreworfQorCitQYWdlKiBXZWJTaGFyaW5nU2Vydmlj
ZVBpY2tlckNsaWVudDo6cGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlciAmKQoreworICAgIHJldHVybiBbbV93ZWJWaWV3IHBhZ2VdOwor
fQorCitSZXRhaW5QdHI8TlNXaW5kb3c+IFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50Ojp3
aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIgJikKK3sKKyAgICByZXR1cm4gW21fd2ViVmlldyB3aW5kb3ddOworfQorCitGbG9hdFJl
Y3QgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQ6OnNjcmVlblJlY3RGb3JDdXJyZW50U2hh
cmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAm
KQoreworICAgIHJldHVybiBGbG9hdFJlY3QoKTsKK30KKworUmV0YWluUHRyPE5TSW1hZ2U+IFdl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2Vydmlj
ZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCit7CisgICAg
cmV0dXJuIG5pbDsKK30KKwogQGltcGxlbWVudGF0aW9uIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2Vy
Q29udHJvbGxlcgogCisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhJdGVtczooTlNBcnJheSAqKWl0ZW1zIGluY2x1ZGVFZGl0b3JTZXJ2aWNlczoo
Qk9PTClpbmNsdWRlRWRpdG9yU2VydmljZXMgY2xpZW50OihXZWJTaGFyaW5nU2VydmljZVBpY2tl
ckNsaWVudCopcGlja2VyQ2xpZW50IHN0eWxlOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGUp
c3R5bGUKIHsKICNpZm5kZWYgX19MUDY0X18KQEAgLTU3LDEyICs4NywzMyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKICAgICBbX3BpY2tlciBzZXREZWxlZ2F0ZTpzZWxmXTsKIAogICAgIF9p
bmNsdWRlRWRpdG9yU2VydmljZXMgPSBpbmNsdWRlRWRpdG9yU2VydmljZXM7CisgICAgX2hhbmRs
ZUVkaXRpbmdSZXBsYWNlbWVudCA9IGluY2x1ZGVFZGl0b3JTZXJ2aWNlczsKICAgICBfcGlja2Vy
Q2xpZW50ID0gcGlja2VyQ2xpZW50OwogCiAgICAgcmV0dXJuIHNlbGY7CiAjZW5kaWYKIH0KIAor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2hhcmluZ1NlcnZpY2VQaWNrZXI6KE5TU2hhcmluZ1Nl
cnZpY2VQaWNrZXIgKilzaGFyaW5nU2VydmljZVBpY2tlciBjbGllbnQ6KFdlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ2xpZW50JilwaWNrZXJDbGllbnQKK3sKKyNpZm5kZWYgX19MUDY0X18KKyAgICBy
ZXR1cm4gbmlsOworI2Vsc2UKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIF9waWNrZXIgPSBzaGFyaW5nU2VydmljZVBpY2tlcjsKKyAg
ICBbX3BpY2tlciBzZXREZWxlZ2F0ZTpzZWxmXTsKKworICAgIF9pbmNsdWRlRWRpdG9yU2Vydmlj
ZXMgPSBZRVM7CisgICAgX3BpY2tlckNsaWVudCA9ICZwaWNrZXJDbGllbnQ7CisKKyAgICByZXR1
cm4gc2VsZjsKKyNlbmRpZgorfQorI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQor
CisKIC0gKHZvaWQpY2xlYXIKIHsKICAgICAvLyBQcm90ZWN0IHNlbGYgZnJvbSBiZWluZyBkZWFs
bG9jJ2VkIHBhcnR3YXkgdGhyb3VnaCB0aGlzIG1ldGhvZC4KQEAgLTE0MCw5ICsxOTEsNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLSAodm9pZClzaGFyaW5nU2VydmljZTooTlNTaGFy
aW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlIGRpZFNoYXJlSXRlbXM6KE5TQXJyYXkgKilpdGVt
cwogewotICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCB3aGF0IGl0ZW0gd2FzIHNoYXJlZCBpZiB3
ZSB3ZXJlIGludGVyZXN0ZWQgaW4gZWRpdG9yIHNlcnZpY2VzCi0gICAgLy8gKGkuZS4sIGlmIHdl
IHBsYW4gb24gcmVwbGFjaW5nIHRoZSBzZWxlY3Rpb24gd2l0aCB0aGUgcmV0dXJuZWQgaXRlbSkK
LSAgICBpZiAoIV9pbmNsdWRlRWRpdG9yU2VydmljZXMpCisgICAgaWYgKCFfaGFuZGxlRWRpdGlu
Z1JlcGxhY2VtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBvbmx5IHNlbmQgb25l
IGl0ZW0sIHNvIHdlIHNob3VsZCBvbmx5IGdldCBvbmUgaXRlbSBiYWNrLgpAQCAtMjExLDQgKzI2
MCw0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAZW5kCiAKLSNlbmRpZgorI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggMTk0ZTIwNi4u
OTUwMGFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC0yNiw2ICsyNiw4IEBACiAgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKwogI2ltcG9ydCAiV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Q2xp
ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ludFJlY3QuaD4KQEAgLTM5LDcgKzQxLDcgQEAgY2xh
c3MgTm9kZTsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6
Q29udGV4dE1lbnVDbGllbnQKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKLSwgcHVibGlj
IFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50CisgICAgLCBwdWJsaWMgV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDbGllbnQKICNlbmRpZgogewogcHVibGljOgpAQCAtNjQsMjEgKzY2LDIxIEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKICAgICAvLyBXZWJTaGFyaW5n
U2VydmljZVBpY2tlckNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBzaGFyaW5nU2VydmljZVBpY2tl
cldpbGxCZURlc3Ryb3llZChXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlKiBwYWdlRm9yU2hhcmluZ1NlcnZpY2VQ
aWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tl
cihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpGbG9hdFJlY3Qgc2NyZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5nU2Vydmlj
ZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TSW1hZ2U+IGltYWdlRm9yQ3VycmVudFNoYXJpbmdT
ZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3Zl
cnJpZGU7CiAjZW5kaWYKIAotICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZp
ZXc7IH0KLSAgICAgICAgCiBwcml2YXRlOgogICAgIE5TTWVudSAqY29udGV4dE1lbnVGb3JFdmVu
dChOU0V2ZW50ICosIE5TVmlldyAqLCBib29sJiBpc1NlcnZpY2VzTWVudSk7CiAKICAgICBib29s
IGNsaWVudEZsb2F0UmVjdEZvck5vZGUoV2ViQ29yZTo6Tm9kZSYsIFdlYkNvcmU6OkZsb2F0UmVj
dCYpIGNvbnN0OwogCi0gICAgV2ViVmlldyAqbV93ZWJWaWV3OwogI2lmIEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKQogICAgIFJldGFpblB0cjxXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXI+IG1fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyOworI2Vsc2UKKyAgICBXZWJWaWV3
KiBtX3dlYlZpZXc7CiAjZW5kaWYKIH07CisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5tbQppbmRleCA3MGUyOTQ0Li4yNGRmNjBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5tbQpAQCAtNjcsOCArNjcsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAtICh2b2lk
KXNwZWFrU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZzsKIEBlbmQKIAotV2ViQ29udGV4dE1lbnVD
bGllbnQ6OldlYkNvbnRleHRNZW51Q2xpZW50KFdlYlZpZXcgKndlYlZpZXcpIAorV2ViQ29udGV4
dE1lbnVDbGllbnQ6OldlYkNvbnRleHRNZW51Q2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCisjaWYg
RU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisgICAgOiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNs
aWVudCh3ZWJWaWV3KQorI2Vsc2UKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorI2VuZGlmCiB7
CiB9CiAKQEAgLTQxMiwxNiArNDE2LDYgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hh
cmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0cm95ZWQoV2ViU2hhcmluZ1NlcnZpY2UKICAgICBt
X3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciA9IG5pbDsKIH0KIAotV2ViQ29yZTo6UGFn
ZSogV2ViQ29udGV4dE1lbnVDbGllbnQ6OnBhZ2VGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKLXsKLSAgICByZXR1cm4gW21fd2ViVmll
dyBwYWdlXTsKLX0KLQotUmV0YWluUHRyPE5TV2luZG93PiBXZWJDb250ZXh0TWVudUNsaWVudDo6
d2luZG93Rm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250
cm9sbGVyICYpCi17Ci0gICAgcmV0dXJuIFttX3dlYlZpZXcgd2luZG93XTsKLX0KLQogV2ViQ29y
ZTo6RmxvYXRSZWN0IFdlYkNvbnRleHRNZW51Q2xpZW50OjpzY3JlZW5SZWN0Rm9yQ3VycmVudFNo
YXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIg
JikKIHsKICAgICBQYWdlKiBwYWdlID0gW21fd2ViVmlldyBwYWdlXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlci5oCmluZGV4IGQ4MWJiZTAuLjY1YjI4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2Vy
dmljZUNvbnRyb2xsZXIuaApAQCAtNTEsMTQgKzUxLDggQEAgcHVibGljOgogCiAgICAgLy8gV2Vi
U2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgc2hhcmluZ1NlcnZp
Y2VQaWNrZXJXaWxsQmVEZXN0cm95ZWQoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVy
ICYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogcGFnZUZvclNoYXJpbmdT
ZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93Rm9yU2hhcmluZ1NlcnZp
Y2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmlu
Z1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxOU0ltYWdlPiBpbWFnZUZvckN1cnJlbnRT
aGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVy
ICYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKLQogICAg
IFJldGFpblB0cjxXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXI+IG1fc2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
ci5tbQppbmRleCAxNDBiMTBjLi41NWNmMzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJv
bGxlci5tbQpAQCAtMzcsNyArMzcsNyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdl
YlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
cihXZWJWaWV3ICp3ZWJWaWV3KSAKLSAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorICAgIDogV2Vi
U2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQod2ViVmlldykKIHsKIH0KIApAQCAtNTgsNiArNTgs
NyBAQCB2b2lkIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpoYW5kbGVTZWxlY3Rpb25T
ZXJ2aWNlQ2xpY2soV2ViQ29yZTo6RnJhbWVTZQogICAgIE5TQXJyYXkgKml0ZW1zID0gQFsgYXR0
cmlidXRlZFNlbGVjdGlvbi5nZXQoKSBdOwogCiAgICAgYm9vbCBpc0VkaXRhYmxlID0gc2VsZWN0
aW9uLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCk7CisgICAgCiAgICAgbV9zaGFyaW5n
U2VydmljZVBpY2tlckNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEl0ZW1zOml0ZW1zIGluY2x1ZGVFZGl0b3JTZXJ2
aWNlczppc0VkaXRhYmxlIGNsaWVudDp0aGlzIHN0eWxlOk5TU2hhcmluZ1NlcnZpY2VQaWNrZXJT
dHlsZVRleHRTZWxlY3Rpb25dKTsKIAogICAgIFJldGFpblB0cjxOU01lbnU+IG1lbnUgPSBhZG9w
dE5TKFtbbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgbWVudV0gY29weV0pOwpAQCAt
OTYsMjQgKzk3LDQgQEAgdm9pZCBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6c2hhcmlu
Z1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0cm95ZWQoV2ViU2hhcmkKICAgICBtX3NoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlciA9IG5pbDsKIH0KIAotV2ViQ29yZTo6UGFnZSogV2ViU2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXI6OnBhZ2VGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFy
aW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKLXsKLSAgICByZXR1cm4gW21fd2ViVmlldyBw
YWdlXTsKLX0KLQotUmV0YWluUHRyPE5TV2luZG93PiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJv
bGxlcjo6d2luZG93Rm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDb250cm9sbGVyICYpCi17Ci0gICAgcmV0dXJuIFttX3dlYlZpZXcgd2luZG93XTsKLX0KLQot
RmxvYXRSZWN0IFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpzY3JlZW5SZWN0Rm9yQ3Vy
cmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIgJikKLXsKLSAgICByZXR1cm4gRmxvYXRSZWN0KCk7Ci19Ci0KLVJldGFpblB0cjxOU0lt
YWdlPiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6aW1hZ2VGb3JDdXJyZW50U2hhcmlu
Z1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQot
ewotICAgIHJldHVybiBuaWw7Ci19Ci0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KaW5kZXggNmRkNGM0Yy4uMjY2ZmRlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJXZWJB
Y3Rpb25NZW51Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZS5oIgogI2ltcG9ydCAi
V2ViQ2xpcFZpZXcuaCIKKyNpbXBvcnQgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW1wb3J0
ICJXZWJET01PcGVyYXRpb25zSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkRhdGFTb3VyY2VJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV2ViRGVmYXVsdFVJRGVsZWdhdGUuaCIKQEAgLTY3LDYgKzY4LDcg
QEAKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzLmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc1By
aXZhdGUuaCIKICNpbXBvcnQgIldlYlJlc291cmNlUHJpdmF0ZS5oIgorI2ltcG9ydCAiV2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXZWJUZXh0Q29tcGxldGlv
bkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldl
YlVJRGVsZWdhdGVQcml2YXRlLmgiCkBAIC02MjQsNiArNjI2LDEwIEBAIHN0cnVjdCBXZWJIVE1M
Vmlld0ludGVycHJldEtleUV2ZW50c1BhcmFtZXRlcnMgewogI2lmbmRlZiBOREVCVUcKICAgICBC
T09MIGVudW1lcmF0aW5nU3Vidmlld3M7CiAjZW5kaWYKKworI2lmIEVOQUJMRShTRVJWSUNFX0NP
TlRST0xTKQorICAgIFJldGFpblB0cjxXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXI+
IGN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXI7CisjZW5kaWYKIH0KIC0gKHZv
aWQpY2xlYXI7CiBAZW5kCkBAIC0zMzU4LDYgKzMzNjQsMjEgQEAgc3RhdGljIHZvaWQgc2V0TWVu
dVRhcmdldHMoTlNNZW51KiBtZW51KQogICAgIGlmICghY29yZU1lbnUpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKKyAgICBhdXRvIG1lbnVJdGVtVmVjdG9yID0gY29udGV4dE1lbnVJdGVtVmVjdG9y
KGNvcmVNZW51LT5wbGF0Zm9ybURlc2NyaXB0aW9uKCkpOworICAgIGZvciAoYXV0byYgbWVudUl0
ZW0gOiBtZW51SXRlbVZlY3RvcikgeworICAgICAgICBpZiAobWVudUl0ZW0uYWN0aW9uKCkgIT0g
Q29udGV4dE1lbnVJdGVtVGFnU2hhcmVNZW51KQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgTlNNZW51SXRlbSAqbnNJdGVtID0gbWVudUl0ZW0ucGxhdGZvcm1EZXNjcmlwdGlvbigp
OworICAgICAgICBpZiAoIVtuc0l0ZW0ucmVwcmVzZW50ZWRPYmplY3QgaXNLaW5kT2ZDbGFzczpb
TlNTaGFyaW5nU2VydmljZVBpY2tlciBjbGFzc11dKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisjaWYgRU5BQkxF
KFNFUlZJQ0VfQ09OVFJPTFMpCisgICAgICAgIF9wcml2YXRlLT5jdXJyZW50U2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyID0gYWRvcHROUyhbW1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29u
dHJvbGxlciBhbGxvY10gaW5pdFdpdGhTaGFyaW5nU2VydmljZVBpY2tlcjpuc0l0ZW0ucmVwcmVz
ZW50ZWRPYmplY3QgY2xpZW50OnN0YXRpY19jYXN0PFdlYkNvbnRleHRNZW51Q2xpZW50Jj4ocGFn
ZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuY2xpZW50KCkpXSk7CisjZW5kaWYKKyAgICB9CisK
ICAgICBOU0FycmF5KiBtZW51SXRlbXMgPSBjb3JlTWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigp
OwogICAgIGlmICghbWVudUl0ZW1zKQogICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCmluZGV4IDhiOWU5N2QuLjZhZTk5YmMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCkBAIC05Myw3ICs5MywxMCBAQCBleHRl
cm4gaW50IHBsdWdpbkRhdGFiYXNlQ2xpZW50Q291bnQ7CiAKIGNsYXNzIExheWVyRmx1c2hDb250
cm9sbGVyOwogY2xhc3MgV2ViVmlld0dyb3VwOworCisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJP
TFMpCiBjbGFzcyBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsKKyNlbmRpZgogCiBjbGFz
cyBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlciA6IHB1YmxpYyBXZWJDb3JlOjpMYXllckZsdXNo
U2NoZWR1bGVyIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1MDNiMzFjLi42NzA5MmZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTUtMDQtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFNoYXJlIHNoZWV0cyBmcm9tIFNoYXJlIG1lbnVzIGFw
cGVhciBvdXRzaWRlIHRoZSBicm93c2VyIHdpbmRvdy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzIwNDU1NTkyPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
MzYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlZmFj
dG9yIGV4aXN0aW5nIFNoYXJpbmcgU2VydmljZSBQaWNrZXIgY29kZSB0byBhbHNvIGJlIHVzZWQg
Zm9yIHRoZSBTaGFyZSBtZW51IE5TTWVudUl0ZW0uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnRlcm5hbFNo
b3dDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1J
bml0aWFsaXplU2hhcmVNZW51SXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVs
ZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNl
UGlja2VyRGVsZWdhdGUubW06IEFkZGVkLgorICAgICAgICAoK1tXS1NoYXJpbmdTZXJ2aWNlUGlj
a2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV0pOgorICAgICAg
ICAoLVtXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgbWVudVByb3h5XSk6CisgICAgICAg
ICgtW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzZXRNZW51UHJveHk6XSk6CisgICAg
ICAgICgtW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzZXRQaWNrZXI6XSk6CisgICAg
ICAgICgtW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzZXRGaWx0ZXJzRWRpdGluZ1Nl
cnZpY2VzOl0pOgorICAgICAgICAoLVtXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2V0
SGFuZGxlc0VkaXRpbmdSZXBsYWNlbWVudDpdKToKKyAgICAgICAgKC1bV0tTaGFyaW5nU2Vydmlj
ZVBpY2tlckRlbGVnYXRlIHNoYXJpbmdTZXJ2aWNlUGlja2VyOnNoYXJpbmdTZXJ2aWNlc0Zvckl0
ZW1zOm1hc2s6cHJvcG9zZWRTaGFyaW5nU2VydmljZXM6XSk6CisgICAgICAgICgtW1dLU2hhcmlu
Z1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyaW5nU2VydmljZVBpY2tlcjpkZWxlZ2F0ZUZvclNo
YXJpbmdTZXJ2aWNlOl0pOgorICAgICAgICAoLVtXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdh
dGUgc2hhcmluZ1NlcnZpY2U6d2lsbFNoYXJlSXRlbXM6XSk6CisgICAgICAgICgtW1dLU2hhcmlu
Z1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyaW5nU2VydmljZTpkaWRTaGFyZUl0ZW1zOl0pOgor
ICAgICAgICAoLVtXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmluZ1NlcnZpY2U6
c291cmNlV2luZG93Rm9yU2hhcmVJdGVtczpzaGFyaW5nQ29udGVudFNjb3BlOl0pOgorCisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzZXR1cFNlcnZpY2VzTWVudSk6CisgICAg
ICAgICgrW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2Vydmlj
ZVBpY2tlckRlbGVnYXRlXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLU2hhcmluZ1NlcnZpY2VQ
aWNrZXJEZWxlZ2F0ZSBtZW51UHJveHldKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tTaGFyaW5n
U2VydmljZVBpY2tlckRlbGVnYXRlIHNldE1lbnVQcm94eTpdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNldFBpY2tlcjpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIHNldEluY2x1ZGVFZGl0
b3JTZXJ2aWNlczpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tTaGFyaW5nU2VydmljZVBpY2tl
ckRlbGVnYXRlIHNoYXJpbmdTZXJ2aWNlUGlja2VyOnNoYXJpbmdTZXJ2aWNlc0Zvckl0ZW1zOm1h
c2s6cHJvcG9zZWRTaGFyaW5nU2VydmljZXM6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyaW5nU2VydmljZVBpY2tlcjpkZWxlZ2F0ZUZv
clNoYXJpbmdTZXJ2aWNlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1NoYXJpbmdTZXJ2aWNl
UGlja2VyRGVsZWdhdGUgc2hhcmluZ1NlcnZpY2U6d2lsbFNoYXJlSXRlbXM6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyaW5nU2Vydmlj
ZTpkaWRTaGFyZUl0ZW1zOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1NoYXJpbmdTZXJ2aWNl
UGlja2VyRGVsZWdhdGUgc2hhcmluZ1NlcnZpY2U6c291cmNlV2luZG93Rm9yU2hhcmVJdGVtczpz
aGFyaW5nQ29udGVudFNjb3BlOl0pOiBEZWxldGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGxh
dGZvcm1Jbml0aWFsaXplU2hhcmVNZW51SXRlbSk6CisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTUtMDQtMDkgIEdvcmRvbiBTaGVyaWRhbiAgPGdv
cmRvbl9zaGVyaWRhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVHJhY2sgSWNvbkRhdGFiYXNlIHJl
dGFpbiBjb3VudHMgZm9yIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLiBCYWxhbmNlIHJldGFpbi9yZWxl
YXNlcyBmb3IgcHJvY2Vzc2VzIHRoYXQgdGVybWluYXRlIGJlZm9yZSBzdWNjZXNzZnVsbHkgZG9p
bmcgaXQgdGhlbXNlbHZlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggZmI4ODBjNC4uYmFmNGRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTQwNjAsOCArNDA2MCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aW50ZXJuYWxTaG93Q29udGV4dE1lbnUoY29uc3QgSW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29u
c3QgQwogICAgICAgICB9CiAKICAgICAgICAgQ29udGV4dE1lbnVJdGVtIGNvcmVJdGVtID0gQ29u
dGV4dE1lbnVJdGVtOjpzaGFyZU1lbnVJdGVtKGFic29sdXRlTGlua1VSTCwgZG93bmxvYWRhYmxl
TWVkaWFVUkwsIGltYWdlLmdldCgpLCBjb250ZXh0TWVudUNvbnRleHREYXRhLnNlbGVjdGVkVGV4
dCgpKTsKLSAgICAgICAgaWYgKCFjb3JlSXRlbS5pc051bGwoKSkKKyAgICAgICAgaWYgKCFjb3Jl
SXRlbS5pc051bGwoKSkgeworICAgICAgICAgICAgcGxhdGZvcm1Jbml0aWFsaXplU2hhcmVNZW51
SXRlbShjb3JlSXRlbSk7CiAgICAgICAgICAgICBwcm9wb3NlZEFQSUl0ZW1zLmFwcGVuZChXZWJD
b250ZXh0TWVudUl0ZW06OmNyZWF0ZShjb3JlSXRlbSkpOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgVmVjdG9yPFJlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+PiBjbGllbnRJdGVtczsKQEAgLTQw
NzcsNiArNDA3OSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1l
bnUoY29uc3QgSW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgQwogICAgIG1fY29udGV4dE1l
bnVDbGllbnQtPmNvbnRleHRNZW51RGlzbWlzc2VkKCp0aGlzKTsKIH0KIAorI2lmICFQTEFURk9S
TShNQUMpCit2b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplU2hhcmVNZW51SXRl
bShDb250ZXh0TWVudUl0ZW0mKQoreworfQorI2VuZGlmCisKIHZvaWQgV2ViUGFnZVByb3h5Ojpj
b250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVt
KQogewogICAgIC8vIEFwcGxpY2F0aW9uIGN1c3RvbSBpdGVtcyBkb24ndCBuZWVkIHRvIHJvdW5k
LXRyaXAgdGhyb3VnaCB0byBXZWJDb3JlIGluIHRoZSBXZWJQcm9jZXNzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDdkMTEwMjEuLjI3MjEzYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyMzMsNiArMTIzMyw4IEBAIHBy
aXZhdGU6CiAgICAgfTsKICAgICB2b2lkIHNob3dDb250ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwgY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiwgY29uc3QgVXNlckRhdGEmKTsKICAg
ICB2b2lkIGludGVybmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBt
ZW51TG9jYXRpb24sIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25zdCBWZWN0b3I8
V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mLCBDb250ZXh0TWVudUNsaWVudEVsaWdpYmlsaXR5LCBj
b25zdCBVc2VyRGF0YSYpOworCisgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVTaGFyZU1lbnVJ
dGVtKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVEVM
RVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzk3NjZjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdh
dGUuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1NoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGVfaAorI2RlZmluZSBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdh
dGVfaAorCisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisKKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94
eU1hYzsKK30KKworQGNsYXNzIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXI7CisKK0BpbnRlcmZhY2Ug
V0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIDogTlNPYmplY3QgPE5TU2hhcmluZ1NlcnZp
Y2VEZWxlZ2F0ZSwgTlNTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlPiB7CisgICAgV2ViS2l0
OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiBfbWVudVByb3h5OworICAgIFJldGFpblB0cjxOU1No
YXJpbmdTZXJ2aWNlUGlja2VyPiBfcGlja2VyOworICAgIEJPT0wgX2ZpbHRlckVkaXRpbmdTZXJ2
aWNlczsKKyAgICBCT09MIF9oYW5kbGVFZGl0aW5nUmVwbGFjZW1lbnQ7Cit9CisKKysgKFdLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSAqKXNoYXJlZFNoYXJpbmdTZXJ2aWNlUGlja2VyRGVs
ZWdhdGU7CistIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQcm94eTsKKy0g
KHZvaWQpc2V0TWVudVByb3h5OihXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqKW1lbnVQ
cm94eTsKKy0gKHZvaWQpc2V0UGlja2VyOihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICopcGlja2Vy
OworLSAodm9pZClzZXRGaWx0ZXJzRWRpdGluZ1NlcnZpY2VzOihCT09MKWZpbHRlcnNFZGl0aW5n
U2VydmljZXM7CistICh2b2lkKXNldEhhbmRsZXNFZGl0aW5nUmVwbGFjZW1lbnQ6KEJPT0wpaGFu
ZGxlc0VkaXRpbmdSZXBsYWNlbWVudDsKK0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKQorI2VuZGlmIC8vIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQ
aWNrZXJEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5n
U2VydmljZVBpY2tlckRlbGVnYXRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmM2MWE2NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDE0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tTaGFyaW5nU2Vydmlj
ZVBpY2tlckRlbGVnYXRlLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKworI2lt
cG9ydCAiRGF0YVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVQcm94eU1hYy5o
IgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0IDxXZWJDb3JlL05TU2hhcmluZ1Nl
cnZpY2VQaWNrZXJTUEkuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTlNTaGFyaW5nU2VydmljZVNQSS5o
PgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKy8vIEZJWE1FOiBXZSBwcm9iYWJs
eSBuZWVkIHRvIGhhbmcgb24gdGhlIHBpY2tlciBpdHNlbGYgdW50aWwgdGhlIGNvbnRleHQgbWVu
dSBvcGVyYXRpb24gaXMgZG9uZSwgYW5kIHRoaXMgb2JqZWN0IHdpbGwgcHJvYmFibHkgZG8gdGhh
dC4KK0BpbXBsZW1lbnRhdGlvbiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUKKworKyAo
V0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlKilzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tl
ckRlbGVnYXRlCit7CisgICAgc3RhdGljIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSog
ZGVsZWdhdGUgPSBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF07
CisgICAgcmV0dXJuIGRlbGVnYXRlOworfQorCistIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHlNYWMqKW1lbnVQcm94eQoreworICAgIHJldHVybiBfbWVudVByb3h5OworfQorCistICh2b2lk
KXNldE1lbnVQcm94eTooV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51UHJveHkK
K3sKKyAgICBfbWVudVByb3h5ID0gbWVudVByb3h5OworfQorCistICh2b2lkKXNldFBpY2tlcjoo
TlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXBpY2tlcgoreworICAgIF9waWNrZXIgPSBwaWNrZXI7
Cit9CisKKy0gKHZvaWQpc2V0RmlsdGVyc0VkaXRpbmdTZXJ2aWNlczooQk9PTClmaWx0ZXJzRWRp
dGluZ1NlcnZpY2VzCit7CisgICAgX2ZpbHRlckVkaXRpbmdTZXJ2aWNlcyA9IGZpbHRlcnNFZGl0
aW5nU2VydmljZXM7Cit9CisKKy0gKHZvaWQpc2V0SGFuZGxlc0VkaXRpbmdSZXBsYWNlbWVudDoo
Qk9PTCloYW5kbGVzRWRpdGluZ1JlcGxhY2VtZW50Cit7CisgICAgX2hhbmRsZUVkaXRpbmdSZXBs
YWNlbWVudCA9IGhhbmRsZXNFZGl0aW5nUmVwbGFjZW1lbnQ7Cit9CisKKy0gKE5TQXJyYXkgKilz
aGFyaW5nU2VydmljZVBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXNoYXJpbmdTZXJ2
aWNlUGlja2VyIHNoYXJpbmdTZXJ2aWNlc0Zvckl0ZW1zOihOU0FycmF5ICopaXRlbXMgbWFzazoo
TlNTaGFyaW5nU2VydmljZU1hc2spbWFzayBwcm9wb3NlZFNoYXJpbmdTZXJ2aWNlczooTlNBcnJh
eSAqKXByb3Bvc2VkU2VydmljZXMKK3sKKyAgICBpZiAoIV9maWx0ZXJFZGl0aW5nU2VydmljZXMp
CisgICAgICAgIHJldHVybiBwcm9wb3NlZFNlcnZpY2VzOworCisgICAgTlNNdXRhYmxlQXJyYXkg
KnNlcnZpY2VzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpbcHJv
cG9zZWRTZXJ2aWNlcyBjb3VudF1dOworICAgIAorICAgIGZvciAoTlNTaGFyaW5nU2VydmljZSAq
c2VydmljZSBpbiBwcm9wb3NlZFNlcnZpY2VzKSB7CisgICAgICAgIGlmIChzZXJ2aWNlLnR5cGUg
IT0gTlNTaGFyaW5nU2VydmljZVR5cGVFZGl0b3IpCisgICAgICAgICAgICBbc2VydmljZXMgYWRk
T2JqZWN0OnNlcnZpY2VdOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gc2VydmljZXM7Cit9CisK
Ky0gKGlkIDxOU1NoYXJpbmdTZXJ2aWNlRGVsZWdhdGU+KXNoYXJpbmdTZXJ2aWNlUGlja2VyOihO
U1NoYXJpbmdTZXJ2aWNlUGlja2VyICopc2hhcmluZ1NlcnZpY2VQaWNrZXIgZGVsZWdhdGVGb3JT
aGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlCit7CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZp
Y2UgKilzaGFyaW5nU2VydmljZSB3aWxsU2hhcmVJdGVtczooTlNBcnJheSAqKWl0ZW1zCit7Cisg
ICAgX21lbnVQcm94eS0+Y2xlYXJTZXJ2aWNlc01lbnUoKTsKK30KKworLSAodm9pZClzaGFyaW5n
U2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlIGRpZFNoYXJlSXRlbXM6
KE5TQXJyYXkgKilpdGVtcworeworICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCB3aGF0IGl0ZW0g
d2FzIHNoYXJlZCBpZiB3ZSB3ZXJlIGludGVyZXN0ZWQgaW4gZWRpdG9yIHNlcnZpY2VzCisgICAg
Ly8gKGkuZS4sIGlmIHdlIHBsYW4gb24gcmVwbGFjaW5nIHRoZSBzZWxlY3Rpb24gd2l0aCB0aGUg
cmV0dXJuZWQgaXRlbSkKKyAgICBpZiAoIV9oYW5kbGVFZGl0aW5nUmVwbGFjZW1lbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOworICAgIElQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworCisgICAgaWQgaXRlbSA9IFtpdGVtcyBvYmplY3RBdElu
ZGV4OjBdOworCisgICAgaWYgKFtpdGVtIGlzS2luZE9mQ2xhc3M6W05TQXR0cmlidXRlZFN0cmlu
ZyBjbGFzc11dKSB7CisgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtpdGVtIFJURkRGcm9tUmFuZ2U6
TlNNYWtlUmFuZ2UoMCwgW2l0ZW0gbGVuZ3RoXSkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF07Cisg
ICAgICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworCisgICAgICAgIHR5
cGVzLmFwcGVuZChOU1Bhc3RlYm9hcmRUeXBlUlRGRCk7CisgICAgICAgIHR5cGVzLmFwcGVuZChO
U1JURkRQYm9hcmRUeXBlKTsKKyAgICB9IGVsc2UgaWYgKFtpdGVtIGlzS2luZE9mQ2xhc3M6W05T
RGF0YSBjbGFzc11dKSB7CisgICAgICAgIE5TRGF0YSAqZGF0YSA9IChOU0RhdGEgKilpdGVtOwor
ICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVNvdXJjZVJlZj4gc291cmNlID0gYWRvcHRDRihDR0lt
YWdlU291cmNlQ3JlYXRlV2l0aERhdGEoKENGRGF0YVJlZilkYXRhLCBOVUxMKSk7CisgICAgICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0
ZUltYWdlQXRJbmRleChzb3VyY2UuZ2V0KCksIDAsIE5VTEwpKTsKKworICAgICAgICBpZiAoIWlt
YWdlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6
OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSks
IFtkYXRhIGxlbmd0aF0pOworICAgICAgICB0eXBlcy5hcHBlbmQoTlNQYXN0ZWJvYXJkVHlwZVRJ
RkYpOworICAgIH0gZWxzZSB7CisgICAgICAgIExPR19FUlJPUigic2hhcmluZ1NlcnZpY2U6ZGlk
U2hhcmVJdGVtczogLSBVbmtub3duIGl0ZW0gdHlwZSByZXR1cm5lZFxuIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFkb3B0IHJlcGxhY2VTZWxl
Y3Rpb25XaXRoQXR0cmlidXRlZFN0cmluZyBpbnN0ZWFkIG9mIGJvdW5jaW5nIHRocm91Z2ggdGhl
IChmYWtlKSBwYXN0ZWJvYXJkLgorICAgIF9tZW51UHJveHktPnBhZ2UoKS5yZXBsYWNlU2VsZWN0
aW9uV2l0aFBhc3RlYm9hcmREYXRhKHR5cGVzLCBkYXRhUmVmZXJlbmNlKTsKK30KKworLSAoTlNX
aW5kb3cgKilzaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNl
IHNvdXJjZVdpbmRvd0ZvclNoYXJlSXRlbXM6KE5TQXJyYXkgKilpdGVtcyBzaGFyaW5nQ29udGVu
dFNjb3BlOihOU1NoYXJpbmdDb250ZW50U2NvcGUgKilzaGFyaW5nQ29udGVudFNjb3BlCit7Cisg
ICAgcmV0dXJuIF9tZW51UHJveHktPndpbmRvdygpOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9DT05UUk9MUykKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCmluZGV4IDU1ODBlZDEuLjUxM2Vh
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1l
bnVQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRl
eHRNZW51UHJveHlNYWMubW0KQEAgLTM0LDEwICszNCwxMSBAQAogI2ltcG9ydCAiU2VydmljZXND
b250cm9sbGVyLmgiCiAjaW1wb3J0ICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbXBvcnQgIlN0cmlu
Z1V0aWxpdGllcy5oIgorI2ltcG9ydCAiV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmgi
CisjaW1wb3J0ICJXS1ZpZXcuaCIKICNpbXBvcnQgIldlYkNvbnRleHRNZW51SXRlbS5oIgogI2lt
cG9ydCAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5
LmgiCi0jaW1wb3J0ICJXS1ZpZXcuaCIKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvTlNTaGFy
aW5nU2VydmljZVBpY2tlclNQSS5oPgpAQCAtMTQ3LDExOSArMTQ4LDYgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIEBlbmQKIAotI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQotQGlu
dGVyZmFjZSBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgOiBOU09iamVjdCA8TlNTaGFy
aW5nU2VydmljZURlbGVnYXRlLCBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGU+IHsKLSAg
ICBXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWMqIF9tZW51UHJveHk7Ci0gICAgUmV0YWlu
UHRyPE5TU2hhcmluZ1NlcnZpY2VQaWNrZXI+IF9waWNrZXI7Ci0gICAgQk9PTCBfaW5jbHVkZUVk
aXRvclNlcnZpY2VzOwotfQotCi0rIChXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgKilz
aGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlOwotLSAoV2ViS2l0OjpXZWJDb250ZXh0
TWVudVByb3h5TWFjKiltZW51UHJveHk7Ci0tICh2b2lkKXNldE1lbnVQcm94eTooV2ViS2l0OjpX
ZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51UHJveHk7Ci0tICh2b2lkKXNldFBpY2tlcjooTlNT
aGFyaW5nU2VydmljZVBpY2tlciAqKXBpY2tlcjsKLS0gKHZvaWQpc2V0SW5jbHVkZUVkaXRvclNl
cnZpY2VzOihCT09MKWluY2x1ZGVFZGl0b3JTZXJ2aWNlczsKLUBlbmQKLQotLy8gRklYTUU6IFdl
IHByb2JhYmx5IG5lZWQgdG8gaGFuZyBvbiB0aGUgcGlja2VyIGl0c2VsZiB1bnRpbCB0aGUgY29u
dGV4dCBtZW51IG9wZXJhdGlvbiBpcyBkb25lLCBhbmQgdGhpcyBvYmplY3Qgd2lsbCBwcm9iYWJs
eSBkbyB0aGF0LgotQGltcGxlbWVudGF0aW9uIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0
ZQotKyAoV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlKilzaGFyZWRTaGFyaW5nU2Vydmlj
ZVBpY2tlckRlbGVnYXRlCi17Ci0gICAgc3RhdGljIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxl
Z2F0ZSogZGVsZWdhdGUgPSBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBhbGxvY10g
aW5pdF07Ci0gICAgcmV0dXJuIGRlbGVnYXRlOwotfQotCi0tIChXZWJLaXQ6OldlYkNvbnRleHRN
ZW51UHJveHlNYWMqKW1lbnVQcm94eQotewotICAgIHJldHVybiBfbWVudVByb3h5OwotfQotCi0t
ICh2b2lkKXNldE1lbnVQcm94eTooV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjKiltZW51
UHJveHkKLXsKLSAgICBfbWVudVByb3h5ID0gbWVudVByb3h5OwotfQotCi0tICh2b2lkKXNldFBp
Y2tlcjooTlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXBpY2tlcgotewotICAgIF9waWNrZXIgPSBw
aWNrZXI7Ci19Ci0KLS0gKHZvaWQpc2V0SW5jbHVkZUVkaXRvclNlcnZpY2VzOihCT09MKWluY2x1
ZGVFZGl0b3JTZXJ2aWNlcwotewotICAgIF9pbmNsdWRlRWRpdG9yU2VydmljZXMgPSBpbmNsdWRl
RWRpdG9yU2VydmljZXM7Ci19Ci0KLS0gKE5TQXJyYXkgKilzaGFyaW5nU2VydmljZVBpY2tlcjoo
TlNTaGFyaW5nU2VydmljZVBpY2tlciAqKXNoYXJpbmdTZXJ2aWNlUGlja2VyIHNoYXJpbmdTZXJ2
aWNlc0Zvckl0ZW1zOihOU0FycmF5ICopaXRlbXMgbWFzazooTlNTaGFyaW5nU2VydmljZU1hc2sp
bWFzayBwcm9wb3NlZFNoYXJpbmdTZXJ2aWNlczooTlNBcnJheSAqKXByb3Bvc2VkU2VydmljZXMK
LXsKLSAgICBpZiAoX2luY2x1ZGVFZGl0b3JTZXJ2aWNlcykKLSAgICAgICAgcmV0dXJuIHByb3Bv
c2VkU2VydmljZXM7Ci0KLSAgICBOU011dGFibGVBcnJheSAqc2VydmljZXMgPSBbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Oltwcm9wb3NlZFNlcnZpY2VzIGNvdW50XV07
Ci0gICAgCi0gICAgZm9yIChOU1NoYXJpbmdTZXJ2aWNlICpzZXJ2aWNlIGluIHByb3Bvc2VkU2Vy
dmljZXMpIHsKLSAgICAgICAgaWYgKHNlcnZpY2UudHlwZSAhPSBOU1NoYXJpbmdTZXJ2aWNlVHlw
ZUVkaXRvcikKLSAgICAgICAgICAgIFtzZXJ2aWNlcyBhZGRPYmplY3Q6c2VydmljZV07Ci0gICAg
fQotICAgIAotICAgIHJldHVybiBzZXJ2aWNlczsKLX0KLQotLSAoaWQgPE5TU2hhcmluZ1NlcnZp
Y2VEZWxlZ2F0ZT4pc2hhcmluZ1NlcnZpY2VQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIg
KilzaGFyaW5nU2VydmljZVBpY2tlciBkZWxlZ2F0ZUZvclNoYXJpbmdTZXJ2aWNlOihOU1NoYXJp
bmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2UKLXsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAo
dm9pZClzaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlIHdp
bGxTaGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMKLXsKLSAgICBfbWVudVByb3h5LT5jbGVhclNl
cnZpY2VzTWVudSgpOwotfQotCi0tICh2b2lkKXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2
aWNlICopc2hhcmluZ1NlcnZpY2UgZGlkU2hhcmVJdGVtczooTlNBcnJheSAqKWl0ZW1zCi17Ci0g
ICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IHdoYXQgaXRlbSB3YXMgc2hhcmVkIGlmIHdlIHdlcmUg
aW50ZXJlc3RlZCBpbiBlZGl0b3Igc2VydmljZXMKLSAgICAvLyAoaS5lLiwgaWYgd2UgcGxhbiBv
biByZXBsYWNpbmcgdGhlIHNlbGVjdGlvbiB3aXRoIHRoZSByZXR1cm5lZCBpdGVtKQotICAgIGlm
ICghX2luY2x1ZGVFZGl0b3JTZXJ2aWNlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVmVjdG9y
PFN0cmluZz4gdHlwZXM7Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0K
LSAgICBpZCBpdGVtID0gW2l0ZW1zIG9iamVjdEF0SW5kZXg6MF07Ci0KLSAgICBpZiAoW2l0ZW0g
aXNLaW5kT2ZDbGFzczpbTlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAgTlNE
YXRhICpkYXRhID0gW2l0ZW0gUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBbaXRlbSBsZW5n
dGhdKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXTsKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IElQ
Qzo6RGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNd
KSwgW2RhdGEgbGVuZ3RoXSk7Ci0KLSAgICAgICAgdHlwZXMuYXBwZW5kKE5TUGFzdGVib2FyZFR5
cGVSVEZEKTsKLSAgICAgICAgdHlwZXMuYXBwZW5kKE5TUlRGRFBib2FyZFR5cGUpOwotICAgIH0g
ZWxzZSBpZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pIHsKLSAgICAgICAg
TlNEYXRhICpkYXRhID0gKE5TRGF0YSAqKWl0ZW07Ci0gICAgICAgIFJldGFpblB0cjxDR0ltYWdl
U291cmNlUmVmPiBzb3VyY2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoRGF0YSgo
Q0ZEYXRhUmVmKWRhdGEsIE5VTEwpKTsKLSAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGlt
YWdlID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlSW1hZ2VBdEluZGV4KHNvdXJjZS5nZXQo
KSwgMCwgTlVMTCkpOwotCi0gICAgICAgIGlmICghaW1hZ2UpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IElQQzo6RGF0YVJlZmVyZW5jZShzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7Ci0gICAgICAg
IHR5cGVzLmFwcGVuZChOU1Bhc3RlYm9hcmRUeXBlVElGRik7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgTE9HX0VSUk9SKCJzaGFyaW5nU2VydmljZTpkaWRTaGFyZUl0ZW1zOiAtIFVua25vd24gaXRl
bSB0eXBlIHJldHVybmVkXG4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgYWRvcHQgcmVwbGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5n
IGluc3RlYWQgb2YgYm91bmNpbmcgdGhyb3VnaCB0aGUgKGZha2UpIHBhc3RlYm9hcmQuCi0gICAg
X21lbnVQcm94eS0+cGFnZSgpLnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlw
ZXMsIGRhdGFSZWZlcmVuY2UpOwotfQotCi0tIChOU1dpbmRvdyAqKXNoYXJpbmdTZXJ2aWNlOihO
U1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2Ugc291cmNlV2luZG93Rm9yU2hhcmVJdGVt
czooTlNBcnJheSAqKWl0ZW1zIHNoYXJpbmdDb250ZW50U2NvcGU6KE5TU2hhcmluZ0NvbnRlbnRT
Y29wZSAqKXNoYXJpbmdDb250ZW50U2NvcGUKLXsKLSAgICByZXR1cm4gX21lbnVQcm94eS0+d2lu
ZG93KCk7Ci19Ci0KLUBlbmQKLQotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJD
b250ZXh0TWVudVByb3h5TWFjOjpXZWJDb250ZXh0TWVudVByb3h5TWFjKFdLVmlldyogd2ViVmll
dywgV2ViUGFnZVByb3h5KiBwYWdlKQpAQCAtMzkyLDcgKzI4MCw4IEBAIHZvaWQgV2ViQ29udGV4
dE1lbnVQcm94eU1hYzo6c2V0dXBTZXJ2aWNlc01lbnUoY29uc3QgQ29udGV4dE1lbnVDb250ZXh0
RGF0YSYgY29uCiAgICAgW3BpY2tlciBzZXRTdHlsZTpoYXNDb250cm9sbGVkSW1hZ2UgPyBOU1No
YXJpbmdTZXJ2aWNlUGlja2VyU3R5bGVSb2xsb3ZlciA6IE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJT
dHlsZVRleHRTZWxlY3Rpb25dOwogICAgIFtwaWNrZXIgc2V0RGVsZWdhdGU6W1dLU2hhcmluZ1Nl
cnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXV07
CiAgICAgW1tXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZp
Y2VQaWNrZXJEZWxlZ2F0ZV0gc2V0UGlja2VyOnBpY2tlci5nZXQoKV07Ci0gICAgW1tXS1NoYXJp
bmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0
ZV0gc2V0SW5jbHVkZUVkaXRvclNlcnZpY2VzOmluY2x1ZGVFZGl0b3JTZXJ2aWNlc107CisgICAg
W1tXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZV0gc2V0RmlsdGVyc0VkaXRpbmdTZXJ2aWNlczohaW5jbHVkZUVkaXRvclNlcnZp
Y2VzXTsKKyAgICBbW1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZSBzaGFyZWRTaGFyaW5n
U2VydmljZVBpY2tlckRlbGVnYXRlXSBzZXRIYW5kbGVzRWRpdGluZ1JlcGxhY2VtZW50OmluY2x1
ZGVFZGl0b3JTZXJ2aWNlc107CiAKICAgICBtX3NlcnZpY2VzTWVudSA9IGFkb3B0TlMoW1twaWNr
ZXIgbWVudV0gY29weV0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCmluZGV4IGUzOGI5ZmYuLjViY2I4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC00Myw2ICs0Myw4IEBA
CiAjaW1wb3J0ICJTdHJpbmdVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRleHRDaGVja2VyLmgiCiAj
aW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oIgorI2ltcG9ydCAi
V0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmgiCisjaW1wb3J0ICJXZWJDb250ZXh0TWVu
dVByb3h5TWFjLmgiCiAjaW1wb3J0ICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlBy
b2Nlc3NQcm94eS5oIgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgpA
QCAtNzQ1LDYgKzc0NywyMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZWRpdG9yU3RhdGVDaGFuZ2Vk
KGNvbnN0IEVkaXRvclN0YXRlJiBlZGl0b3JTdGF0ZSkKICAgICB9CiAjZW5kaWYKIH0KKwordm9p
ZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVNoYXJlTWVudUl0ZW0oQ29udGV4dE1l
bnVJdGVtJiBpdGVtKQoreworI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorICAgIE5TTWVu
dUl0ZW0gKm5zSXRlbSA9IGl0ZW0ucGxhdGZvcm1EZXNjcmlwdGlvbigpOworCisgICAgTlNTaGFy
aW5nU2VydmljZVBpY2tlciAqc2hhcmluZ1NlcnZpY2VQaWNrZXIgPSBbbnNJdGVtIHJlcHJlc2Vu
dGVkT2JqZWN0XTsKKyAgICBzaGFyaW5nU2VydmljZVBpY2tlci5kZWxlZ2F0ZSA9IFtXS1NoYXJp
bmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0
ZV07CisgICAgCisgICAgW1tXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV0gc2V0RmlsdGVyc0VkaXRpbmdTZXJ2aWNlczpOT107
CisgICAgW1tXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZp
Y2VQaWNrZXJEZWxlZ2F0ZV0gc2V0SGFuZGxlc0VkaXRpbmdSZXBsYWNlbWVudDpOT107CisgICAg
W1tXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZV0gc2V0TWVudVByb3h5OnN0YXRpY19jYXN0PFdlYkNvbnRleHRNZW51UHJveHlN
YWMqPihtX2FjdGl2ZUNvbnRleHRNZW51LmdldCgpKV07CisKKyAgICAvLyBTZXR0aW5nIHRoZSBw
aWNrZXIgbGV0cyB0aGUgZGVsZWdhdGUgcmV0YWluIGl0IHRvIGtlZXAgaXQgYWxpdmUsIGJ1dCB0
aGlzIHBpY2tlciBpcyBrZXB0IGFsaXZlIGJ5IHRoZSBtZW51IGl0ZW0uCisgICAgW1tXS1NoYXJp
bmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0
ZV0gc2V0UGlja2VyOm5pbF07CisjZW5kaWYKK30KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNmQ4MjY2YS4uMmQzNDRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTI1LDYgKzkyNSw4IEBACiAJCTUxM0Ex
NjNEMTYzMDg4RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0ExNjNCMTYzMDg4
RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJNTEz
QTE2NEMxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0ExNjQ5
MTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgKi87
IH07CiAJCTUxM0ExNjREMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEzQTE2NEExNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmggKi87IH07CisJCTUxM0U0NjJEMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNl
UGlja2VyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxM0U0NjJCMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2Vy
RGVsZWdhdGUuaCAqLzsgfTsKKwkJNTEzRTQ2MkUxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmlu
Z1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxM0U0NjJDMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGUubW0gKi87IH07CiAJCTUxNEJERUQzMTZDOThFREQwMEU0RTI1RSAv
KiBTdGF0aXN0aWNzUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0
LmggKi87IH07CiAJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5
RjU1MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNTE0
RDlGNTgxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU2MTkxMTlEMzUwMDAw
NjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0gKi87IH07CkBAIC0zMTE1LDYgKzMxMTcsOCBA
QAogCQk1MTNBMTY0OTE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTNBMTY0QTE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxM0ExNjRCMTYzMEE5QkYw
MDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTNFNDYyQjFBRDgz
NzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTNFNDYyQzFBRDgzNzU2MDAxNjIzNEEg
LyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRCREVEMjE2Qzk4RUREMDBFNEUyNUUgLyog
U3RhdGlzdGljc1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Rh
dGlzdGljc1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTUx
OTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlc0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE0RDlGNTYxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxl
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VzQ29u
dHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwNjMsNiArNzA2Nyw4
IEBACiAJCQkJMEZDQjRFNUQxOEJCRTNEOTAwMEZDRkM5IC8qIFdLUHJpbnRpbmdWaWV3Lm1tICov
LAogCQkJCTBGQ0I0RTVFMThCQkUzRDkwMDBGQ0ZDOSAvKiBXS1RleHRJbnB1dFdpbmRvd0NvbnRy
b2xsZXIuaCAqLywKIAkJCQkwRkNCNEU1RjE4QkJFM0Q5MDAwRkNGQzkgLyogV0tUZXh0SW5wdXRX
aW5kb3dDb250cm9sbGVyLm1tICovLAorCQkJCTUxM0U0NjJCMUFEODM3NTYwMDE2MjM0QSAvKiBX
S1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCAqLywKKwkJCQk1MTNFNDYyQzFBRDgzNzU2
MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLm1tICovLAogCQkJKTsK
IAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzkzNSw2ICs3
OTQxLDcgQEAKIAkJCQkxQTVFNERBNDEyRDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxQTBCRDcxQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJ
bnB1dFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjI2MzkxNDY4N0MzOTAwNEExRThBIC8q
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTNF
NDYyRDFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUYwNUQ4NzE0Njg4MzQ4MDA4QjFFODEgLyogVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGRTQzNjYx
OEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFRTRB
RTJCMUE1RENGNDMwMDAyRjQ5QiAvKiBVSUtpdFNQSS5oIGluIEhlYWRlcnMgKi8sCkBAIC05ODY0
LDYgKzk4NzEsNyBAQAogCQkJCTMxQTJFQzQ4MTQ4OTk3QzIwMDgxMEQ3MSAvKiBXZWJOb3RpZmlj
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwOTk5NzMxNDZDNzVBMjAwMjlERUI5IC8q
IFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTMxMjYyMDE0
OEZGODJDMDBCQTJBMzkgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MTNFNDYyRTFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tl
ckRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFCQTkyNEQxNDg4MzEyNjAwNjJFREI1
IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzFBMkVDNEExNDg5OTdDMjAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUEyRUM0RDE0ODk5N0MyMDA4MTBENzEg
LyogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>