<?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>211825</bug_id>
          
          <creation_ts>2020-05-12 18:56:32 -0700</creation_ts>
          <short_desc>Change Date/Time popovers to contextMenus.</short_desc>
          <delta_ts>2020-05-13 14:54:56 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Megan Gardner">megan_gardner</reporter>
          <assigned_to name="Megan Gardner">megan_gardner</assigned_to>
          <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1652081</commentid>
    <comment_count>0</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2020-05-12 18:56:32 -0700</bug_when>
    <thetext>Change Date/Time popovers to contextMenus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652087</commentid>
    <comment_count>1</comment_count>
      <attachid>399226</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2020-05-12 19:06:44 -0700</bug_when>
    <thetext>Created attachment 399226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652105</commentid>
    <comment_count>2</comment_count>
      <attachid>399235</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2020-05-12 20:29:43 -0700</bug_when>
    <thetext>Created attachment 399235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652118</commentid>
    <comment_count>3</comment_count>
      <attachid>399239</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2020-05-12 21:56:45 -0700</bug_when>
    <thetext>Created attachment 399239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652233</commentid>
    <comment_count>4</comment_count>
      <attachid>399239</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-13 08:03:00 -0700</bug_when>
    <thetext>Comment on attachment 399239
Patch

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        Removed all the unneded popover code.

Nit - unneeded

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:104
&gt; +@class WKDateTimeInputControl;

Nit - let’s keep this sorted and move it above WKDrawingCoordinator.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:542
&gt; +- (NSString*)inputLabelText;

Nit - space before *

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:8628
&gt; +- (WKDateTimeInputControl *)formInputControl

Should we also rename `-formInputControl` to `-dateTimeInputControl`?

&gt; Source/WebKit/UIProcess/ios/forms/WKDateTimeInputControl.mm:44
&gt; +}
&gt; +- (id)init;

Nit - no need for the { }, as well as the -init declaration.

&gt; Source/WebKit/UIProcess/ios/forms/WKDateTimeInputControl.mm:67
&gt; +- (id)initWithView:(WKContentView *)view datePickerMode:(UIDatePickerMode)mode;

Let’s use instancetype for the return value.

&gt; Source/WebKit/UIProcess/ios/forms/WKDateTimeInputControl.mm:87
&gt; +- (id)init
&gt; +{
&gt; +    if (!(self = [super init]))
&gt; +        return nil;
&gt; +    return self;
&gt; +}

Do we need to override this?

&gt; Source/WebKit/UIProcess/ios/forms/WKDateTimeInputControl.mm:175
&gt; +        [_viewController setToolbarItems:@[ [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], [[UIBarButtonItem alloc] initWithTitle:resetString style:UIBarButtonItemStylePlain target:self action:@selector(reset:)] ]];

The two UIBarButtonItems leak here.

&gt; Source/WebKit/UIProcess/ios/forms/WKDateTimeInputControl.mm:182
&gt; +            UILabel *title = [[UILabel alloc] init];

The UILabel leaks here.

&gt; Source/WebKit/UIProcess/ios/forms/WKDateTimeInputControl.mm:187
&gt; +            _viewController.get().navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:title];

This leaks the UIBarButtonItem.

&gt; Source/WebKit/UIProcess/ios/forms/WKDateTimeInputControl.mm:432
&gt; +    RetainPtr&lt;NSObject &lt;WKFormControl&gt;&gt; control;
&gt; +    control = adoptNS([[WKDateTimePicker alloc] initWithView:view datePickerMode:mode]);

Nit - I think you can just return [super initWithView:view control:adoptNS([[WKDateTimePicker alloc] initWithView:view datePickerMode:mode])];</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652235</commentid>
    <comment_count>5</comment_count>
      <attachid>399239</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-13 08:07:09 -0700</bug_when>
    <thetext>Comment on attachment 399239
Patch

r=me, with fixes for the memory leaks and style nits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652236</commentid>
    <comment_count>6</comment_count>
      <attachid>399239</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-13 08:13:41 -0700</bug_when>
    <thetext>Comment on attachment 399239
Patch

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

It’s also probably worth running the tests in fast/forms/ios to make sure this doesn’t break any testing infrastructure.

&gt; Source/WebKit/UIProcess/ios/forms/WKDateTimeInputControl.mm:58
&gt; +    WKContentView* _view;

Nit - space before the *</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652248</commentid>
    <comment_count>7</comment_count>
      <attachid>399267</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2020-05-13 09:06:58 -0700</bug_when>
    <thetext>Created attachment 399267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652255</commentid>
    <comment_count>8</comment_count>
      <attachid>399272</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2020-05-13 09:18:37 -0700</bug_when>
    <thetext>Created attachment 399272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652380</commentid>
    <comment_count>9</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2020-05-13 13:56:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/63102524&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652395</commentid>
    <comment_count>10</comment_count>
      <attachid>399301</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2020-05-13 14:34:22 -0700</bug_when>
    <thetext>Created attachment 399301
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652401</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-13 14:54:55 -0700</bug_when>
    <thetext>Committed r261658: &lt;https://trac.webkit.org/changeset/261658&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399301.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399226</attachid>
            <date>2020-05-12 19:06:44 -0700</date>
            <delta_ts>2020-05-12 20:29:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211825-20200512190628.patch</filename>
            <type>text/plain</type>
            <size>62561</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiNjRkMjljZmRhYWQ3ZTUy
MGIwM2FkYjg3NWRhNjE1ZGYzYjJiYWYuLmRiNDk4MzNlYTIzYTkwMTQyYjIzNmZlYzgwN2JmYzZj
ZGJkZDUyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjAtMDUtMTIgIE1lZ2FuIEdh
cmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgRGF0ZS9U
aW1lIHBvcG92ZXJzIHRvIGNvbnRleHRNZW51cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTgyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgRGF0ZS9UaW1lIHBpY2tlciB0byB1c2Ug
VUlDb250ZXh0TWVudXMgaW5zdGVhZCBvZiBwb3BvdmVycy4KKyAgICAgICAgUmVtb3ZlZCBhbGwg
dGhlIHVubmVkZWQgcG9wb3ZlciBjb2RlLgorICAgICAgICBSZW5hbWVkIFdLRm9ybUlucHV0Q29u
dHJvbCB0byBXS0RhdGVUaW1lSW5wdXRDb250cm9sIGJlY2F1c2UgaXQgd2FzIG9ubHkgdXNlZAor
ICAgICAgICBmb3IgZGF0ZSBhbmQgdGltZSBjb250cm9scywgdW5uZWNjZXNzYXJ5IGFic3RyYWN0
aW9uLgorICAgICAgICBXZSBuZWVkIHRvIGVuc3VyZSB0aGUgcG9pc2l0aW9uIGluZm9ybWF0aW9u
IGlzIHVwIHRvIGRhdGUgYmVmb3JlIHByZXNlbnRpbmcKKyAgICAgICAgdGhlIGNvbnRleHQgbWVu
dSwgb3IgdGhlIHBvc2l0aW9uIGl0IHdpbGwgYmUgcHJlc2VudGVkIGZyb20gY2FuIGJlIHN0YWxl
LgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG91
bGRTaG93QXV0b21hdGljS2V5Ym9hcmRVSUlnbm9yaW5nSW5wdXRNb2RlXSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgcmVxdWlyZXNBY2Nlc3NvcnlWaWV3XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX3VwZGF0ZUFjY2Vzc29yeV0pOgorICAgICAgICAobWF5Q29udGFpblNlbGVjdGFi
bGVUZXh0KToKKyAgICAgICAgKGNyZWF0ZUlucHV0UGVyaXBoZXJhbFdpdGhWaWV3KToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBpbnB1dExhYmVsVGV4dF0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9yZW1vdmVDb250ZXh0TWVudVZpZXdJZlBvc3NpYmxlXSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgaW5wdXRMYWJlbFRleHRGb3JWaWV3Q29udHJvbGxlcjpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBmb3JtSW5wdXRDb250cm9sXSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgc2V0VGltZVBpY2tlclZhbHVlVG9Ib3VyOm1pbnV0ZTpdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyB0aW1lUGlja2VyVmFsdWVIb3VyXSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgdGltZVBpY2tlclZhbHVlTWludXRlXSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmguCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLm1tOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5tbS4KKyAg
ICAgICAgKC1bV0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXIgaW5pdF0pOgorICAg
ICAgICAoLVtXS0RhdGVUaW1lQ29udGV4dE1lbnVWaWV3Q29udHJvbGxlciBwcmVmZXJyZWRDb250
ZW50U2l6ZV0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGluaXRXaXRoVmlldzpkYXRl
UGlja2VyTW9kZTpdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBjb250ZXh0TWVudUlu
dGVyYWN0aW9uOnByZXZpZXdGb3JIaWdobGlnaHRpbmdNZW51V2l0aENvbmZpZ3VyYXRpb246XSk6
CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgX2NvbnRleHRNZW51SW50ZXJhY3Rpb246c3R5
bGVGb3JNZW51V2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNr
ZXIgY29udGV4dE1lbnVJbnRlcmFjdGlvbjpjb25maWd1cmF0aW9uRm9yTWVudUF0TG9jYXRpb246
XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgY29udGV4dE1lbnVJbnRlcmFjdGlvbjp3
aWxsRW5kRm9yQ29uZmlndXJhdGlvbjphbmltYXRvcjpdKToKKyAgICAgICAgKC1bV0tEYXRlVGlt
ZVBpY2tlciByZW1vdmVDb250ZXh0TWVudUludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLRGF0
ZVRpbWVQaWNrZXIgZW5zdXJlQ29udGV4dE1lbnVJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtX
S0RhdGVUaW1lUGlja2VyIHNob3dEYXRlVGltZVBpY2tlcl0pOgorICAgICAgICAoLVtXS0RhdGVU
aW1lUGlja2VyIHJlc2V0Ol0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGNhbGVuZGFy
VHlwZV0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV0tEYXRlVGltZVBpY2tlciBzZXREYXRlVGltZVBpY2tlclRvSW5pdGlhbFZhbHVlXSk6Cisg
ICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgY29udHJvbEJlZ2luRWRpdGluZ10pOgorICAgICAg
ICAoLVtXS0RhdGVUaW1lUGlja2VyIHZpZXdDb250cm9sbGVyXSk6CisgICAgICAgICgtW1dLRGF0
ZVRpbWVQaWNrZXIgY29udHJvbEVuZEVkaXRpbmddKToKKyAgICAgICAgKC1bV0tEYXRlVGltZUlu
cHV0Q29udHJvbCBpbml0V2l0aFZpZXc6XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVJbnB1dENv
bnRyb2wgc2V0VGltZVBpY2tlckhvdXI6bWludXRlOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1l
SW5wdXRDb250cm9sIGRhdGVUaW1lUGlja2VyQ2FsZW5kYXJUeXBlXSk6CisgICAgICAgICgtW1dL
RGF0ZVRpbWVJbnB1dENvbnRyb2wgdGltZVBpY2tlclZhbHVlSG91cl0pOgorICAgICAgICAoLVtX
S0RhdGVUaW1lSW5wdXRDb250cm9sIHRpbWVQaWNrZXJWYWx1ZU1pbnV0ZV0pOgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTA1LTExICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1MgXSBzY3Jv
bGxpbmdjb29yZGluYXRvci9tYWMvbGF0Y2hpbmcvc2Nyb2xsaW5nLXNlbGVjdC1zaG91bGQtbm90
LWxhdGNoLW1haW5mcmFtZS5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncyBiL1NvdXJjZS9XZWJDb3Jl
L2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKaW5kZXggNzg0MTlkNTFlYWNkYTg4NTA3NzFi
ZTc5MzJlNmYyNWM4N2VmNDY2MC4uZjI1NDFmN2FlNjI1YTU4ZDFhNTA0ODViODFiNDg2OTc3YTkz
NjQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5ncworKysgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBA
IC0yMTEsOSArMjExLDYgQEAKIC8qIFRpdGxlIGZvciBmaWxlIGJ1dHRvbiB1c2VkIGluIEhUTUwg
Zm9ybXMgZm9yIG1lZGlhIGZpbGVzICovCiAiQ2hvb3NlIE1lZGlhIChTaW5nbGUpIiA9ICJDaG9v
c2UgTWVkaWEgKFNpbmdsZSkiOwogCi0vKiBDbGVhciBidXR0b24gaW4gZGF0ZSBpbnB1dCBwb3Bv
dmVyICovCi0iQ2xlYXIgQnV0dG9uIERhdGUgUG9wb3ZlciIgPSAiQ2xlYXIiOwotCiAvKiBtZW51
IGl0ZW0gaW4gUmVjZW50IFNlYXJjaGVzIG1lbnUgdGhhdCBlbXB0aWVzIG1lbnUncyBjb250ZW50
cyAqLwogIkNsZWFyIFJlY2VudCBTZWFyY2hlcyIgPSAiQ2xlYXIgUmVjZW50IFNlYXJjaGVzIjsK
IApAQCAtMTMyNyw2ICsxMzI0LDkgQEAKIC8qIEhUVFAgcmVzdWx0IGNvZGUgc3RyaW5nICovCiAi
cmVxdWVzdGVkIHJhbmdlIG5vdCBzYXRpc2ZpYWJsZSIgPSAicmVxdWVzdGVkIHJhbmdlIG5vdCBz
YXRpc2ZpYWJsZSI7CiAKKy8qIFJlc2V0IGJ1dHRvbiBpbiBkYXRlIGlucHV0IHBvcG92ZXIgKi8K
KyJSZXNldCBCdXR0b24gRGF0ZS9UaW1lIENvbnRleHQgTWVudSIgPSAiUmVzZXQiOworCiAvKiBI
VFRQIHJlc3VsdCBjb2RlIHN0cmluZyAqLwogInJlc2V0IGNvbnRlbnQiID0gInJlc2V0IGNvbnRl
bnQiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMTY4ZjFkYjEwNmQ1NGMyNTBkNzA3NDVh
NDJmYWI5NDBhMTliYWZkYy4uYzY5Mjc5YTVmZDQzNjQwNzQ1MGZkMDQ0MDk3NzIyNTBmNTFiNzFl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDE1LDExICs0MTUsMTEgQEAgVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JXS1dlYlZpZXcubW0KIAogVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQ
aWNrZXJWaWV3Q29udHJvbGxlci5tbQorVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVUaW1lSW5w
dXRDb250cm9sLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCiBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5tbQogVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
b3JtQ29sb3JQaWNrZXIubW0KLVVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9s
Lm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWxCYXNlLm1tCiBVSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRm9ybVBvcG92ZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3Jt
U2VsZWN0Q29udHJvbC5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IGRkYjllYjAyNGJkYjAwY2EyOTJkZGRi
ODAwZGM0MDRkZDk5NmY4MGIuLjJiMzliMTBmYWQwNGEyYTc0MWNkMDMxYzEyYjBiYjA0Y2QyMWI4
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdHJ1Y3QgV2ViQXV0b2NvcnJl
Y3Rpb25Db250ZXh0OwogQGNsYXNzIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mbzsKIEBjbGFzcyBX
S0RyYXdpbmdDb29yZGluYXRvcjsKIEBjbGFzcyBXS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXc7Ci1A
Y2xhc3MgV0tGb3JtSW5wdXRDb250cm9sOworQGNsYXNzIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2w7
CiBAY2xhc3MgV0tGb3JtSW5wdXRTZXNzaW9uOwogQGNsYXNzIFdLSGlnaGxpZ2h0TG9uZ1ByZXNz
R2VzdHVyZVJlY29nbml6ZXI7CiBAY2xhc3MgV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyOwpAQCAt
NTM5LDYgKzUzOSw4IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVD
TEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAtIChCT09MKWhhc0hpZGRl
bkNvbnRlbnRFZGl0YWJsZTsKIC0gKHZvaWQpZ2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZDooV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUpY29tbWFuZDsKIAorLSAoTlNT
dHJpbmcqKWlucHV0TGFiZWxUZXh0OworCiAtICh2b2lkKXByZXNlcnZlRm9jdXM7CiAtICh2b2lk
KXJlbGVhc2VGb2N1czsKIApAQCAtNjE1LDcgKzYxNyw3IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tD
T05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJ
RVcpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICp0ZXh0Q29udGVu
dFR5cGVGb3JUZXN0aW5nOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmlu
ZyAqc2VsZWN0Rm9ybVBvcG92ZXJUaXRsZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNTdHJpbmcgKmZvcm1JbnB1dExhYmVsOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBXS0Zvcm1JbnB1dENvbnRyb2wgKmZvcm1JbnB1dENvbnRyb2w7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wgKmZvcm1JbnB1dENvbnRy
b2w7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggNGFkYmY4YWFhOTVkNjBkZTViNzkwODRj
ZWIyOTg5MjJjNjQ0OTRkYS4uMWM2OTdiYmI5NTJiMGQ2Y2EyODc5YjVhN2RiOWU1NmI3MGU2M2E4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCkBAIC01MCwxMCArNTAsMTAgQEAKICNpbXBvcnQgIldLQ29udGV4
dE1lbnVFbGVtZW50SW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRleHRNZW51RWxlbWVu
dEluZm9Qcml2YXRlLmgiCiAjaW1wb3J0ICJXS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5oIgor
I2ltcG9ydCAiV0tEYXRlVGltZUlucHV0Q29udHJvbC5oIgogI2ltcG9ydCAiV0tEcmF3aW5nQ29v
cmRpbmF0b3IuaCIKICNpbXBvcnQgIldLRXJyb3IuaCIKICNpbXBvcnQgIldLRm9jdXNlZEZvcm1D
b250cm9sVmlldy5oIgotI2ltcG9ydCAiV0tGb3JtSW5wdXRDb250cm9sLmgiCiAjaW1wb3J0ICJX
S0Zvcm1TZWxlY3RDb250cm9sLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAj
aW1wb3J0ICJXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmgiCkBAIC0xOTAy
LDE2ICsxOTAyLDE1IEBAIC0gKEJPT0wpX3Nob3VsZFNob3dBdXRvbWF0aWNLZXlib2FyZFVJSWdu
b3JpbmdJbnB1dE1vZGUKICAgICBzd2l0Y2ggKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVs
ZW1lbnRUeXBlKSB7CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Tm9uZToKICAgICBjYXNl
IFdlYktpdDo6SW5wdXRUeXBlOjpEcmF3aW5nOgorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6
OkRhdGU6CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TW9udGg6CisgICAgY2FzZSBXZWJL
aXQ6OklucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBl
OjpUaW1lOgogICAgICAgICByZXR1cm4gTk87CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6
U2VsZWN0OgogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIGNhc2UgV2ViS2l0OjpJ
bnB1dFR5cGU6OkNvbG9yOgogI2VuZGlmCi0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0
ZToKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpNb250aDoKLSAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRp
bWU6Ci0gICAgICAgIHJldHVybiAhV2ViS2l0OjpjdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQ
YWQoKTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gIV9mb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uLmlzUmVhZE9ubHk7CiAgICAgfQpAQCAtMjkxNCw2ICsyOTEzLDEwIEBAIC0gKEJPT0wp
cmVxdWlyZXNBY2Nlc3NvcnlWaWV3CiAgICAgc3dpdGNoIChfZm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbi5lbGVtZW50VHlwZSkgewogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok5vbmU6CiAg
ICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RHJhd2luZzoKKyAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpEYXRlOgorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw6
CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TW9udGg6CisgICAgY2FzZSBXZWJLaXQ6Oklu
cHV0VHlwZTo6VGltZToKICAgICAgICAgcmV0dXJuIE5POwogICAgIGNhc2UgV2ViS2l0OjpJbnB1
dFR5cGU6OlRleHQ6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6UGFzc3dvcmQ6CkBAIC0y
OTI2LDEyICsyOTI5LDggQEAgLSAoQk9PTClyZXF1aXJlc0FjY2Vzc29yeVZpZXcKICAgICBjYXNl
IFdlYktpdDo6SW5wdXRUeXBlOjpDb250ZW50RWRpdGFibGU6CiAgICAgY2FzZSBXZWJLaXQ6Oklu
cHV0VHlwZTo6VGV4dEFyZWE6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6U2VsZWN0Ogot
ICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGU6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6RGF0ZVRpbWU6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWVMb2Nh
bDoKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpNb250aDoKLSAgICBjYXNlIFdlYktpdDo6
IElucHV0VHlwZTo6V2VlazoKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lOgorICAg
IGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OldlZWs6CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29sb3I6CiAjZW5kaWYKQEAgLTQ0MDIs
OCArNDQwMSw4IEBAIC0gKHZvaWQpX3VwZGF0ZUFjY2Vzc29yeQogCiAgICAgc3dpdGNoIChfZm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgewogICAgIGNhc2UgV2ViS2l0OjpJ
bnB1dFR5cGU6OkRhdGU6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TW9udGg6CiAgICAg
Y2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpNb250aDoKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lOgogICAg
ICAgICBbYWNjZXNzb3J5VmlldyBzZXRDbGVhclZpc2libGU6WUVTXTsKICAgICAgICAgcmV0dXJu
OwpAQCAtNTcyOSw3ICs1NzI4LDYgQEAgc3RhdGljIGJvb2wgbWF5Q29udGFpblNlbGVjdGFibGVU
ZXh0KFdlYktpdDo6SW5wdXRUeXBlIHR5cGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAv
LyBUaGUgZm9sbG93aW5nIHR5cGVzIGxvb2sgYW5kIGJlaGF2ZSBsaWtlIGEgdGV4dCBmaWVsZC4K
ICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpDb250ZW50RWRpdGFibGU6Ci0gICAgY2FzZSBX
ZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWU6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6
RW1haWw6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TnVtYmVyOgogICAgIGNhc2UgV2Vi
S2l0OjpJbnB1dFR5cGU6Ok51bWJlclBhZDoKQEAgLTU3MzksNiArNTczNyw3IEBAIHN0YXRpYyBi
b29sIG1heUNvbnRhaW5TZWxlY3RhYmxlVGV4dChXZWJLaXQ6OklucHV0VHlwZSB0eXBlKQogICAg
IGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRleHQ6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlw
ZTo6VGV4dEFyZWE6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VVJMOgorICAgIGNhc2Ug
V2ViS2l0OjpJbnB1dFR5cGU6OkRhdGVUaW1lOgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6
OldlZWs6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTU4MDEsOCArNTgwMCwxMyBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TT2JqZWN0IDxXS0Zvcm1QZXJpcGhlcmFsPj4gY3JlYXRlSW5w
dXRQZXJpcGhlcmFsV2l0aFZpZXcoV2ViSwogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNv
bG9yOgogICAgICAgICByZXR1cm4gYWRvcHROUyhbW1dLRm9ybUNvbG9yQ29udHJvbCBhbGxvY10g
aW5pdFdpdGhWaWV3OnZpZXddKTsKICNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
KyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlOgorICAgIGNhc2UgV2ViS2l0OjpJbnB1
dFR5cGU6OkRhdGVUaW1lTG9jYWw6CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TW9udGg6
CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGltZToKKyAgICAgICAgcmV0dXJuIGFkb3B0
TlMoW1tXS0RhdGVUaW1lSW5wdXRDb250cm9sIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlld10pOwog
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tGb3JtSW5wdXRDb250cm9s
IGFsbG9jXSBpbml0V2l0aFZpZXc6dmlld10pOworICAgICAgICByZXR1cm4gbmlsOwogICAgIH0K
ICNlbmRpZgogfQpAQCAtNjc1MSw2ICs2NzU1LDIwIEBAIC0gKHZvaWQpc2hhcmVTaGVldERpZERp
c21pc3M6KFdLU2hhcmVTaGVldCAqKXNoYXJlU2hlZXQKIH0KICNlbmRpZgogCistIChOU1N0cmlu
ZyAqKWlucHV0TGFiZWxUZXh0Cit7CisgICAgaWYgKCFfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
bi5sYWJlbC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBfZm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbi5sYWJlbDsKKworICAgIGlmICghX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uYXJpYUxh
YmVsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
LmFyaWFMYWJlbDsKKworICAgIGlmICghX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24udGl0bGUu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24udGl0
bGU7CisKKyAgICByZXR1cm4gX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24ucGxhY2Vob2xkZXI7
Cit9CisKICNwcmFnbWEgbWFyayAtIFVJVGV4dElucHV0TXVsdGlEb2N1bWVudAogCiAtIChCT09M
KV9yZXN0b3JlRm9jdXNXaXRoVG9rZW46KGlkIDxOU0NvcHlpbmcsIE5TU2VjdXJlQ29kaW5nPil0
b2tlbgpAQCAtNzY5MiwxMCArNzcxMCwxNCBAQCAtICh2b2lkKV9yZW1vdmVDb250ZXh0TWVudVZp
ZXdJZlBvc3NpYmxlCiAgICAgaWYgKFtfYWN0aW9uU2hlZXRBc3Npc3RhbnQgaGFzQ29udGV4dE1l
bnVJbnRlcmFjdGlvbl0pCiAgICAgICAgIHJldHVybjsKICNlbmRpZgotICAgIC8vIGFuZCBmb3Ig
dGhlIGZpbGUgdXBsb2FkIHBhbmVsLgorICAgIC8vIGFuZCBmb3IgdGhlIGZpbGUgdXBsb2FkIHBh
bmVsLi4uCiAgICAgaWYgKF9maWxlVXBsb2FkUGFuZWwpCiAgICAgICAgIHJldHVybjsKICAgICAK
KyAgICAvLyBhbmQgZm9yIHRoZSBkYXRlL3RpbWUgcGlja2VyLgorICAgIGlmIChbc2VsZiBmb3Jt
SW5wdXRDb250cm9sXSkKKyAgICAgICAgcmV0dXJuOworICAgIAogICAgIFtzdGQ6OmV4Y2hhbmdl
KF9jb250ZXh0TWVudUhpbnRDb250YWluZXJWaWV3LCBuaWwpIHJlbW92ZUZyb21TdXBlcnZpZXdd
OwogfQogCkBAIC04MzExLDE2ICs4MzMzLDcgQEAgLSAoVUlWaWV3ICopaW5wdXRDb250ZXh0Vmll
d0ZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY28KIAog
LSAoTlNTdHJpbmcgKilpbnB1dExhYmVsVGV4dEZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2ti
b2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgogewotICAgIGlmICghX2ZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24ubGFiZWwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gX2ZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24ubGFiZWw7Ci0KLSAgICBpZiAoIV9mb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uLmFyaWFMYWJlbC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBfZm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbi5hcmlhTGFiZWw7Ci0KLSAgICBpZiAoIV9mb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uLnRpdGxlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIF9mb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uLnRpdGxlOwotCi0gICAgcmV0dXJuIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
LnBsYWNlaG9sZGVyOworICAgIHJldHVybiBbc2VsZiBpbnB1dExhYmVsVGV4dF07CiB9CiAKIC0g
KE5TU3RyaW5nICopaW5pdGlhbFZhbHVlRm9yVmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJk
Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCkBAIC04NjEyLDEwICs4NjI1LDEwIEBAIC0gKHZv
aWQpX2RvQWZ0ZXJSZWNlaXZpbmdFZGl0RHJhZ1NuYXBzaG90Rm9yVGVzdGluZzooZGlzcGF0Y2hf
YmxvY2tfdClhY3Rpb24KICAgICBhY3Rpb24oKTsKIH0KIAotLSAoV0tGb3JtSW5wdXRDb250cm9s
ICopZm9ybUlucHV0Q29udHJvbAorLSAoV0tEYXRlVGltZUlucHV0Q29udHJvbCAqKWZvcm1JbnB1
dENvbnRyb2wKIHsKLSAgICBpZiAoW19pbnB1dFBlcmlwaGVyYWwgaXNLaW5kT2ZDbGFzczpXS0Zv
cm1JbnB1dENvbnRyb2wuY2xhc3NdKQotICAgICAgICByZXR1cm4gKFdLRm9ybUlucHV0Q29udHJv
bCAqKV9pbnB1dFBlcmlwaGVyYWwuZ2V0KCk7CisgICAgaWYgKFtfaW5wdXRQZXJpcGhlcmFsIGlz
S2luZE9mQ2xhc3M6V0tEYXRlVGltZUlucHV0Q29udHJvbC5jbGFzc10pCisgICAgICAgIHJldHVy
biAoV0tEYXRlVGltZUlucHV0Q29udHJvbCAqKV9pbnB1dFBlcmlwaGVyYWwuZ2V0KCk7CiAgICAg
cmV0dXJuIG5pbDsKIH0KIApAQCAtODY4MSwxNiArODY5NCwxNiBAQCAtICh2b2lkKXNldFRpbWVQ
aWNrZXJWYWx1ZVRvSG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRl
CiAgICAgaWYgKFtfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIgaXNLaW5k
T2ZDbGFzczpbV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgY2xhc3NdXSkKICAgICAgICAgWyhX
S1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3
Q29udHJvbGxlci5nZXQoKSBzZXRIb3VyOmhvdXIgbWludXRlOm1pbnV0ZV07CiAjZWxpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIGlmIChbX2lucHV0UGVyaXBoZXJhbCBpc0tpbmRPZkNsYXNz
OltXS0Zvcm1JbnB1dENvbnRyb2wgY2xhc3NdXSkKLSAgICAgICAgWyhXS0Zvcm1JbnB1dENvbnRy
b2wgKilfaW5wdXRQZXJpcGhlcmFsLmdldCgpIHNldFRpbWVQaWNrZXJIb3VyOmhvdXIgbWludXRl
Om1pbnV0ZV07CisgICAgaWYgKFtfaW5wdXRQZXJpcGhlcmFsIGlzS2luZE9mQ2xhc3M6W1dLRGF0
ZVRpbWVJbnB1dENvbnRyb2wgY2xhc3NdXSkKKyAgICAgICAgWyhXS0RhdGVUaW1lSW5wdXRDb250
cm9sICopX2lucHV0UGVyaXBoZXJhbC5nZXQoKSBzZXRUaW1lUGlja2VySG91cjpob3VyIG1pbnV0
ZTptaW51dGVdOwogI2VuZGlmCiB9CiAKIC0gKGRvdWJsZSl0aW1lUGlja2VyVmFsdWVIb3VyCiB7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoW19pbnB1dFBlcmlwaGVyYWwgaXNL
aW5kT2ZDbGFzczpbV0tGb3JtSW5wdXRDb250cm9sIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBb
KFdLRm9ybUlucHV0Q29udHJvbCAqKV9pbnB1dFBlcmlwaGVyYWwuZ2V0KCkgdGltZVBpY2tlclZh
bHVlSG91cl07CisgICAgaWYgKFtfaW5wdXRQZXJpcGhlcmFsIGlzS2luZE9mQ2xhc3M6W1dLRGF0
ZVRpbWVJbnB1dENvbnRyb2wgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFsoV0tEYXRlVGltZUlu
cHV0Q29udHJvbCAqKV9pbnB1dFBlcmlwaGVyYWwuZ2V0KCkgdGltZVBpY2tlclZhbHVlSG91cl07
CiAjZW5kaWYKICAgICByZXR1cm4gLTE7CiB9CkBAIC04Njk4LDggKzg3MTEsOCBAQCAtIChkb3Vi
bGUpdGltZVBpY2tlclZhbHVlSG91cgogLSAoZG91YmxlKXRpbWVQaWNrZXJWYWx1ZU1pbnV0ZQog
ewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKFtfaW5wdXRQZXJpcGhlcmFsIGlz
S2luZE9mQ2xhc3M6W1dLRm9ybUlucHV0Q29udHJvbCBjbGFzc11dKQotICAgICAgICByZXR1cm4g
WyhXS0Zvcm1JbnB1dENvbnRyb2wgKilfaW5wdXRQZXJpcGhlcmFsLmdldCgpIHRpbWVQaWNrZXJW
YWx1ZU1pbnV0ZV07CisgICAgaWYgKFtfaW5wdXRQZXJpcGhlcmFsIGlzS2luZE9mQ2xhc3M6W1dL
RGF0ZVRpbWVJbnB1dENvbnRyb2wgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFsoV0tEYXRlVGlt
ZUlucHV0Q29udHJvbCAqKV9pbnB1dFBlcmlwaGVyYWwuZ2V0KCkgdGltZVBpY2tlclZhbHVlTWlu
dXRlXTsKICNlbmRpZgogICAgIHJldHVybiAtMTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg0YmMxNDg4NWIyNTYwYWI0Yjg0MDk3NTVmNDNlZjA1ODM3ZWFiMzcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlu
cHV0Q29udHJvbC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKworI2ltcG9ydCAiV0tGb3JtUGVyaXBoZXJhbEJhc2UuaCIKKworQGNsYXNz
IFdLQ29udGVudFZpZXc7CisKK0BpbnRlcmZhY2UgV0tEYXRlVGltZUlucHV0Q29udHJvbCA6IFdL
Rm9ybVBlcmlwaGVyYWxCYXNlCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRl
bnRWaWV3ICopdmlldzsKK0BlbmQKKworQGludGVyZmFjZSBXS0RhdGVUaW1lSW5wdXRDb250cm9s
IChXS1Rlc3RpbmcpCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpk
YXRlVGltZVBpY2tlckNhbGVuZGFyVHlwZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgZG91YmxlIHRpbWVQaWNrZXJWYWx1ZUhvdXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIGRvdWJsZSB0aW1lUGlja2VyVmFsdWVNaW51dGU7CistICh2b2lkKXNldFRpbWVQaWNr
ZXJIb3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51dGU7CitAZW5kCisK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xYWE3ZDBhMTRmNTM4YmY5MWYyYzJlZWViNzVhOTc3ZDAxNTY4OWU5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJ
bnB1dENvbnRyb2wubW0KQEAgLTAsMCArMSw0NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIldLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaCIKKworI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgIlVzZXJJbnRlcmZhY2VJZGlvbS5oIgorI2ltcG9y
dCAiV0tDb250ZW50Vmlldy5oIgorI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgi
CisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgPFVJS2l0L1VJQmFyQnV0dG9uSXRl
bS5oPgorI2ltcG9ydCA8VUlLaXQvVUlEYXRlUGlja2VyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0xv
Y2FsaXplZFN0cmluZ3MuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworQGludGVyZmFjZSBXS0RhdGVUaW1lQ29udGV4dE1lbnVWaWV3Q29u
dHJvbGxlciA6IFVJVmlld0NvbnRyb2xsZXIgeworfQorLSAoaWQpaW5pdDsKK0BlbmQKKworQGlu
dGVyZmFjZSBXS0RhdGVUaW1lUGlja2VyIDogTlNPYmplY3Q8V0tGb3JtQ29udHJvbAorI2lmIFVT
RShVSUNPTlRFWFRNRU5VKQorLCBVSUNvbnRleHRNZW51SW50ZXJhY3Rpb25EZWxlZ2F0ZQorI2Vu
ZGlmCis+IHsKKyAgICBSZXRhaW5QdHI8VUlEYXRlUGlja2VyPiBfZGF0ZVBpY2tlcjsKKyAgICBO
U1N0cmluZyAqX2Zvcm1hdFN0cmluZzsKKyAgICBOU1N0cmluZyAqX2luaXRpYWxWYWx1ZTsKKyAg
ICBOU1RpbWVJbnRlcnZhbCBfaW5pdGlhbFZhbHVlQXNOdW1iZXI7CisgICAgQk9PTCBfc2hvdWxk
UmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbjsKKyAgICBCT09MIF9pc1RpbWVJbnB1dDsKKyAgICBX
S0NvbnRlbnRWaWV3KiBfdmlldzsKKyAgICBDR1BvaW50IF9pbnRlcmFjdGlvblBvaW50OworICAg
IFJldGFpblB0cjxXS0RhdGVUaW1lQ29udGV4dE1lbnVWaWV3Q29udHJvbGxlcj4gX3ZpZXdDb250
cm9sbGVyOworI2lmIFVTRShVSUNPTlRFWFRNRU5VKQorICAgIFJldGFpblB0cjxVSUNvbnRleHRN
ZW51SW50ZXJhY3Rpb24+IF9kYXRlVGltZUNvbnRleHRNZW51SW50ZXJhY3Rpb247CisjZW5kaWYK
KyAgICBCT09MIF9wcmVzZW50aW5nOworICAgIEJPT0wgX3ByZXNlcnZpbmdGb2N1czsKK30KKy0g
KGlkKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgZGF0ZVBpY2tlck1vZGU6KFVJ
RGF0ZVBpY2tlck1vZGUpbW9kZTsKKy0gKFdLRGF0ZVRpbWVDb250ZXh0TWVudVZpZXdDb250cm9s
bGVyICopdmlld0NvbnRyb2xsZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5T
U3RyaW5nICpjYWxlbmRhclR5cGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGRv
dWJsZSBob3VyOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBkb3VibGUgbWludXRl
OworLSAodm9pZClzZXRIb3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51
dGU7CitAZW5kCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0
QWRkaXRpb25zL1dLRm9ybUlucHV0Q29udHJvbEFkZGl0aW9ucy5tbT4KKyNlbmRpZgorCisKK0Bp
bXBsZW1lbnRhdGlvbiBXS0RhdGVUaW1lQ29udGV4dE1lbnVWaWV3Q29udHJvbGxlcgorCistIChp
ZClpbml0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVy
biBuaWw7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKENHU2l6ZSlwcmVmZXJyZWRDb250ZW50
U2l6ZQoreworICAgIHJldHVybiBbc2VsZi52aWV3IHN5c3RlbUxheW91dFNpemVGaXR0aW5nU2l6
ZTpVSUxheW91dEZpdHRpbmdDb21wcmVzc2VkU2l6ZV07Cit9CisKK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIFdLRGF0ZVRpbWVQaWNrZXIKKworc3RhdGljIE5TU3RyaW5nICogY29uc3Qga0RhdGVG
b3JtYXRTdHJpbmcgPSBAInl5eXktTU0tZGQiOyAvLyAiMjAxMS0wMS0yNyIuCitzdGF0aWMgTlNT
dHJpbmcgKiBjb25zdCBrTW9udGhGb3JtYXRTdHJpbmcgPSBAInl5eXktTU0iOyAvLyAiMjAxMS0w
MSIuCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBrVGltZUZvcm1hdFN0cmluZyA9IEAiSEg6bW0i
OyAvLyAiMTM6NDUiLgorc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGtNaWxsaXNlY29uZHNQ
ZXJTZWNvbmQgPSAxMDAwOworCisjaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIEhBVkUo
VUlEQVRFUElDS0VSX1NUWUxFKQorLSAoVUlEYXRlUGlja2VyU3R5bGUpZGF0ZVBpY2tlclN0eWxl
Cit7CisgICAgcmV0dXJuIFVJRGF0ZVBpY2tlclN0eWxlQXV0b21hdGljOworfQorI2VuZGlmCisK
Ky0gKGlkKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgZGF0ZVBpY2tlck1vZGU6
KFVJRGF0ZVBpY2tlck1vZGUpbW9kZQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQorICAgICAgICByZXR1cm4gbmlsOworICAgIF92aWV3ID0gdmlldzsKKyAgICBfaW50ZXJhY3Rp
b25Qb2ludCA9IFtfdmlldyBsYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbl07CisgICAgX3Nob3VsZFJl
bW92ZVRpbWVab25lSW5mb3JtYXRpb24gPSBOTzsKKyAgICBfaXNUaW1lSW5wdXQgPSBOTzsKKyAg
ICBzd2l0Y2ggKHZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgewor
ICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlOgorICAgICAgICBfZm9ybWF0U3RyaW5nID0ga0RhdGVG
b3JtYXRTdHJpbmc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5wdXRUeXBlOjpNb250aDoK
KyAgICAgICAgX2Zvcm1hdFN0cmluZyA9IGtNb250aEZvcm1hdFN0cmluZzsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJbnB1dFR5cGU6OlRpbWU6CisgICAgICAgIF9mb3JtYXRTdHJpbmcgPSBr
VGltZUZvcm1hdFN0cmluZzsKKyAgICAgICAgX2lzVGltZUlucHV0ID0gWUVTOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIElucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICAgICAgX3Nob3Vs
ZFJlbW92ZVRpbWVab25lSW5mb3JtYXRpb24gPSBZRVM7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBfZGF0ZVBpY2tlciA9IGFk
b3B0TlMoW1tVSURhdGVQaWNrZXIgYWxsb2NdIGluaXRdKTsKKworICAgIFtfZGF0ZVBpY2tlciBz
ZXREYXRlUGlja2VyTW9kZTptb2RlXTsKKyAgICBbX2RhdGVQaWNrZXIgc2V0SGlkZGVuOk5PXTsK
KyAgICAKKyNpZiBIQVZFKFVJREFURVBJQ0tFUl9TVFlMRSkKKyAgICBbX2RhdGVQaWNrZXIgc2V0
UHJlZmVycmVkRGF0ZVBpY2tlclN0eWxlOltzZWxmIGRhdGVQaWNrZXJTdHlsZV1dOworI2VuZGlm
CisgICAgaWYgKFtzZWxmIHNob3VsZFByZXNlbnRHcmVnb3JpYW5DYWxlbmRhcjp2aWV3LmZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb25dKQorICAgICAgICBfZGF0ZVBpY2tlci5nZXQoKS5jYWxlbmRh
ciA9IFtOU0NhbGVuZGFyIGNhbGVuZGFyV2l0aElkZW50aWZpZXI6TlNDYWxlbmRhcklkZW50aWZp
ZXJHcmVnb3JpYW5dOworICAgIAorICAgIFtfZGF0ZVBpY2tlciBhZGRUYXJnZXQ6c2VsZiBhY3Rp
b246QHNlbGVjdG9yKF9kYXRlQ2hhbmdlSGFuZGxlcjopIGZvckNvbnRyb2xFdmVudHM6VUlDb250
cm9sRXZlbnRWYWx1ZUNoYW5nZWRdOworICAgIAorICAgIHJldHVybiBzZWxmOworfQorCisjaWYg
VVNFKFVJQ09OVEVYVE1FTlUpCisKKy0gKFVJVGFyZ2V0ZWRQcmV2aWV3ICopY29udGV4dE1lbnVJ
bnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJldmll
d0ZvckhpZ2hsaWdodGluZ01lbnVXaXRoQ29uZmlndXJhdGlvbjooVUlDb250ZXh0TWVudUNvbmZp
Z3VyYXRpb24gKiljb25maWd1cmF0aW9uCit7CisgICAgcmV0dXJuIFtfdmlldyBfY3JlYXRlVGFy
Z2V0ZWRDb250ZXh0TWVudUhpbnRQcmV2aWV3SWZQb3NzaWJsZV07Cit9CisKKy0gKF9VSUNvbnRl
eHRNZW51U3R5bGUgKilfY29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVy
YWN0aW9uICopaW50ZXJhY3Rpb24gc3R5bGVGb3JNZW51V2l0aENvbmZpZ3VyYXRpb246KFVJQ29u
dGV4dE1lbnVDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgoreworICAgIF9VSUNvbnRleHRN
ZW51U3R5bGUgKnN0eWxlID0gW19VSUNvbnRleHRNZW51U3R5bGUgZGVmYXVsdFN0eWxlXTsKKyAg
ICBzdHlsZS5oYXNJbnRlcmFjdGl2ZVByZXZpZXcgPSBZRVM7CisgICAgc3R5bGUucHJlZmVycmVk
TGF5b3V0ID0gX1VJQ29udGV4dE1lbnVMYXlvdXRBdXRvbWF0aWM7CisgICAgcmV0dXJuIHN0eWxl
OworfQorCistIChVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiAqKWNvbnRleHRNZW51SW50ZXJh
Y3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIGNvbmZpZ3VyYXRp
b25Gb3JNZW51QXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbgoreworICAgIHJldHVybiBbVUlD
b250ZXh0TWVudUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbldpdGhJZGVudGlmaWVyOkAiX1VJ
RGF0ZVBpY2tlckNvbXBhY3RFZGl0b3IiIHByZXZpZXdQcm92aWRlcjpeeworCisgICAgICAgIF92
aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXS0RhdGVUaW1lQ29udGV4dE1lbnVWaWV3Q29udHJv
bGxlciBhbGxvY10gaW5pdF0pOworICAgICAgICBSZXRhaW5QdHI8VUlOYXZpZ2F0aW9uQ29udHJv
bGxlcj4gbmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlOYXZpZ2F0aW9uQ29udHJv
bGxlciBhbGxvY10gaW5pdFdpdGhSb290Vmlld0NvbnRyb2xsZXI6X3ZpZXdDb250cm9sbGVyLmdl
dCgpXSk7CisgICAgICAgIE5TU3RyaW5nICpyZXNldFN0cmluZyA9IFdFQl9VSV9TVFJJTkdfS0VZ
KCJSZXNldCIsICJSZXNldCBCdXR0b24gRGF0ZS9UaW1lIENvbnRleHQgTWVudSIsICJSZXNldCBi
dXR0b24gaW4gZGF0ZSBpbnB1dCBjb250ZXh0IG1lbnUiKTsKKworICAgICAgICBbX3ZpZXdDb250
cm9sbGVyIHNldFRvb2xiYXJJdGVtczpAWyBbW1VJQmFyQnV0dG9uSXRlbSBhbGxvY10gaW5pdFdp
dGhCYXJCdXR0b25TeXN0ZW1JdGVtOlVJQmFyQnV0dG9uU3lzdGVtSXRlbUZsZXhpYmxlU3BhY2Ug
cHJpbWFyeUFjdGlvbjpuaWxdLCBbW1VJQmFyQnV0dG9uSXRlbSBhbGxvY10gaW5pdFdpdGhUaXRs
ZTpyZXNldFN0cmluZyBzdHlsZTpVSUJhckJ1dHRvbkl0ZW1TdHlsZVBsYWluIHRhcmdldDpzZWxm
IGFjdGlvbjpAc2VsZWN0b3IocmVzZXQ6KV0gXV07CisgICAgICAgIFtuYXZpZ2F0aW9uQ29udHJv
bGxlciBzZXRUb29sYmFySGlkZGVuOk5PXTsKKworICAgICAgICBbX3ZpZXdDb250cm9sbGVyIHNl
dFZpZXc6X2RhdGVQaWNrZXIuZ2V0KCldOworCisgICAgICAgIE5TU3RyaW5nICp0aXRsZVRleHQg
PSBfdmlldy5pbnB1dExhYmVsVGV4dDsKKyAgICAgICAgaWYgKCFbdGl0bGVUZXh0IGlzRXF1YWw6
QCIiXSkgeworICAgICAgICAgICAgVUlMYWJlbCAqdGl0bGUgPSBbW1VJTGFiZWwgYWxsb2NdIGlu
aXRdOworICAgICAgICAgICAgdGl0bGUuZm9udCA9IFtVSUZvbnQgcHJlZmVycmVkRm9udEZvclRl
eHRTdHlsZTpVSUZvbnRUZXh0U3R5bGVGb290bm90ZV07CisgICAgICAgICAgICB0aXRsZS50ZXh0
ID0gdGl0bGVUZXh0OworICAgICAgICAgICAgdGl0bGUudGV4dENvbG9yID0gW1VJQ29sb3Igc2Vj
b25kYXJ5TGFiZWxDb2xvcl07CisgICAgICAgICAgICB0aXRsZS50ZXh0QWxpZ25tZW50ID0gTlNU
ZXh0QWxpZ25tZW50TmF0dXJhbDsKKyAgICAgICAgICAgIF92aWV3Q29udHJvbGxlci5nZXQoKS5u
YXZpZ2F0aW9uSXRlbS5sZWZ0QmFyQnV0dG9uSXRlbSA9IFtbVUlCYXJCdXR0b25JdGVtIGFsbG9j
XSBpbml0V2l0aEN1c3RvbVZpZXc6dGl0bGVdOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IFtuYXZpZ2F0aW9uQ29udHJvbGxlciBzZXROYXZpZ2F0aW9uQmFySGlkZGVuOllFUyBhbmltYXRl
ZDpOT107CisgICAgICAgIAorICAgICAgICBuYXZpZ2F0aW9uQ29udHJvbGxlci5nZXQoKS5uYXZp
Z2F0aW9uQmFyLmJhY2tncm91bmRDb2xvciA9IFVJQ29sb3IuY2xlYXJDb2xvcjsKKyAgICAgICAg
bmF2aWdhdGlvbkNvbnRyb2xsZXIuZ2V0KCkubmF2aWdhdGlvbkJhci50cmFuc2x1Y2VudCA9IE5P
OworICAgICAgICBuYXZpZ2F0aW9uQ29udHJvbGxlci5nZXQoKS50b29sYmFyLmJhY2tncm91bmRD
b2xvciA9IFVJQ29sb3IuY2xlYXJDb2xvcjsKKyAgICAgICAgbmF2aWdhdGlvbkNvbnRyb2xsZXIu
Z2V0KCkudG9vbGJhci50cmFuc2x1Y2VudCA9IE5POworICAgICAgICByZXR1cm4gbmF2aWdhdGlv
bkNvbnRyb2xsZXIuZ2V0KCk7CisgICAgfSBhY3Rpb25Qcm92aWRlcjpuaWxdOworfQorCistICh2
b2lkKWNvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbiAqKWlu
dGVyYWN0aW9uIHdpbGxFbmRGb3JDb25maWd1cmF0aW9uOihVSUNvbnRleHRNZW51Q29uZmlndXJh
dGlvbiAqKWNvbmZpZ3VyYXRpb24gYW5pbWF0b3I6KGlkPFVJQ29udGV4dE1lbnVJbnRlcmFjdGlv
bkFuaW1hdGluZz4pYW5pbWF0b3IKK3sKKyAgICBbYW5pbWF0b3IgYWRkQ29tcGxldGlvbjpeewor
ICAgICAgICBbX3ZpZXcgYWNjZXNzb3J5RG9uZV07CisgICAgfV07Cit9CisKKy0gKHZvaWQpcmVt
b3ZlQ29udGV4dE1lbnVJbnRlcmFjdGlvbgoreworICAgIGlmIChfZGF0ZVRpbWVDb250ZXh0TWVu
dUludGVyYWN0aW9uKSB7CisgICAgICAgIFtfdmlldyByZW1vdmVJbnRlcmFjdGlvbjpfZGF0ZVRp
bWVDb250ZXh0TWVudUludGVyYWN0aW9uLmdldCgpXTsKKyAgICAgICAgX2RhdGVUaW1lQ29udGV4
dE1lbnVJbnRlcmFjdGlvbiA9IG5pbDsKKyAgICAgICAgW192aWV3IF9yZW1vdmVDb250ZXh0TWVu
dVZpZXdJZlBvc3NpYmxlXTsKKyAgICB9Cit9CisKKy0gKHZvaWQpZW5zdXJlQ29udGV4dE1lbnVJ
bnRlcmFjdGlvbgoreworICAgIGlmICghX2RhdGVUaW1lQ29udGV4dE1lbnVJbnRlcmFjdGlvbikg
eworICAgICAgICBfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uID0gYWRvcHROUyhbW1VJ
Q29udGV4dE1lbnVJbnRlcmFjdGlvbiBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZTpzZWxmXSk7Cisg
ICAgICAgIFtfdmlldyBhZGRJbnRlcmFjdGlvbjpfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0
aW9uLmdldCgpXTsKKyAgICB9Cit9CisKKy0gKHZvaWQpc2hvd0RhdGVUaW1lUGlja2VyCit7Cisj
aWYgSEFWRShVSUNPTlRFWFRNRU5VX0xPQ0FUSU9OKQorICAgIFtzZWxmIGVuc3VyZUNvbnRleHRN
ZW51SW50ZXJhY3Rpb25dOworICAgIFtfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uIF9w
cmVzZW50TWVudUF0TG9jYXRpb246X2ludGVyYWN0aW9uUG9pbnRdOworI2VuZGlmCit9CisKKyNl
bmRpZgorCistICh2b2lkKXJlc2V0OihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBzZXREYXRlVGlt
ZVBpY2tlclRvSW5pdGlhbFZhbHVlXTsKKyAgICBbX3ZpZXcgcGFnZV0tPnNldEZvY3VzZWRFbGVt
ZW50VmFsdWUoU3RyaW5nKCkpOworfQorCistIChOU1N0cmluZyAqKWNhbGVuZGFyVHlwZQorewor
ICAgIHJldHVybiBbX2RhdGVQaWNrZXIgY2FsZW5kYXJdLmNhbGVuZGFySWRlbnRpZmllcjsKK30K
KworLSAoZG91YmxlKWhvdXIKK3sKKyAgICBOU0NhbGVuZGFyICpjYWxlbmRhciA9IFtOU0NhbGVu
ZGFyIGN1cnJlbnRDYWxlbmRhcl07CisgICAgTlNEYXRlQ29tcG9uZW50cyAqY29tcG9uZW50cyA9
IFtjYWxlbmRhciBjb21wb25lbnRzOk5TQ2FsZW5kYXJVbml0SG91ciBmcm9tRGF0ZTpbX2RhdGVQ
aWNrZXIgZGF0ZV1dOworCisgICAgcmV0dXJuIFtjb21wb25lbnRzIGhvdXJdOworfQorCistIChk
b3VibGUpbWludXRlCit7CisgICAgTlNDYWxlbmRhciAqY2FsZW5kYXIgPSBbTlNDYWxlbmRhciBj
dXJyZW50Q2FsZW5kYXJdOworICAgIE5TRGF0ZUNvbXBvbmVudHMgKmNvbXBvbmVudHMgPSBbY2Fs
ZW5kYXIgY29tcG9uZW50czpOU0NhbGVuZGFyVW5pdE1pbnV0ZSBmcm9tRGF0ZTpbX2RhdGVQaWNr
ZXIgZGF0ZV1dOworCisgICAgcmV0dXJuIFtjb21wb25lbnRzIG1pbnV0ZV07Cit9CisKKy0gKHZv
aWQpZGVhbGxvYworeworICAgIFtfZGF0ZVBpY2tlciByZW1vdmVUYXJnZXQ6c2VsZiBhY3Rpb246
TlVMTCBmb3JDb250cm9sRXZlbnRzOlVJQ29udHJvbEV2ZW50VmFsdWVDaGFuZ2VkXTsKKyAgICBb
c2VsZiByZW1vdmVDb250ZXh0TWVudUludGVyYWN0aW9uXTsKKyAgICBbc3VwZXIgZGVhbGxvY107
Cit9CisKKy0gKEJPT0wpc2hvdWxkUHJlc2VudEdyZWdvcmlhbkNhbGVuZGFyOihjb25zdCBGb2N1
c2VkRWxlbWVudEluZm9ybWF0aW9uJilub2RlSW5mbworeworICAgIHJldHVybiBub2RlSW5mby5h
dXRvZmlsbEZpZWxkTmFtZSA9PSBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Q2NFeHBNb250
aAorICAgICAgICB8fCBub2RlSW5mby5hdXRvZmlsbEZpZWxkTmFtZSA9PSBXZWJDb3JlOjpBdXRv
ZmlsbEZpZWxkTmFtZTo6Q2NFeHAKKyAgICAgICAgfHwgbm9kZUluZm8uYXV0b2ZpbGxGaWVsZE5h
bWUgPT0gV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwWWVhcjsKK30KKworLSAoVUlW
aWV3ICopY29udHJvbFZpZXcKK3sKKyAgICByZXR1cm4gX2RhdGVQaWNrZXIuZ2V0KCk7Cit9CisK
Ky0gKE5TSW50ZWdlcilfdGltZVpvbmVPZmZzZXRGcm9tR01UOihOU0RhdGUgKilkYXRlCit7Cisg
ICAgaWYgKCFfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbikKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICByZXR1cm4gW19kYXRlUGlja2VyLmdldCgpLnRpbWVab25lIHNlY29uZHNGcm9t
R01URm9yRGF0ZTpkYXRlXTsKK30KKworLSAoTlNTdHJpbmcgKilfc2FuaXRpemVJbnB1dFZhbHVl
Rm9yRm9ybWF0dGVyOihOU1N0cmluZyAqKXZhbHVlCit7CisgICAgLy8gVGhlICJ0aW1lIiBpbnB1
dCB0eXBlIG1heSBoYXZlIHNlY29uZHMgYW5kIG1pbGxpc2Vjb25kcyBpbmZvcm1hdGlvbiB3aGlj
aCB3ZQorICAgIC8vIGp1c3QgaWdub3JlLiBGb3IgZXhhbXBsZTogIjAxOjU2OjIwLjM5MSIgaXMg
c2hvcnRlbmVkIHRvIGp1c3QgIjAxOjU2Ii4KKyAgICBpZiAoX2lzVGltZUlucHV0KQorICAgICAg
ICByZXR1cm4gW3ZhbHVlIHN1YnN0cmluZ1RvSW5kZXg6W2tUaW1lRm9ybWF0U3RyaW5nIGxlbmd0
aF1dOworCisgICAgcmV0dXJuIHZhbHVlOworfQorCistICh2b2lkKV9kYXRlQ2hhbmdlZFNldEFz
TnVtYmVyCit7CisgICAgTlNEYXRlICpkYXRlID0gW19kYXRlUGlja2VyIGRhdGVdOworICAgIFtf
dmlldyB1cGRhdGVGb2N1c2VkRWxlbWVudFZhbHVlQXNOdW1iZXI6KFtkYXRlIHRpbWVJbnRlcnZh
bFNpbmNlMTk3MF0gKyBbc2VsZiBfdGltZVpvbmVPZmZzZXRGcm9tR01UOmRhdGVdKSAqIGtNaWxs
aXNlY29uZHNQZXJTZWNvbmRdOworfQorCistIChSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPilk
YXRlRm9ybWF0dGVyRm9yUGlja2VyCit7CisgICAgUmV0YWluUHRyPE5TTG9jYWxlPiBlbmdsaXNo
TG9jYWxlID0gYWRvcHROUyhbW05TTG9jYWxlIGFsbG9jXSBpbml0V2l0aExvY2FsZUlkZW50aWZp
ZXI6QCJlbl9VU19QT1NJWCJdKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBkYXRl
Rm9ybWF0dGVyID0gYWRvcHROUyhbW05TRGF0ZUZvcm1hdHRlciBhbGxvY10gaW5pdF0pOworICAg
IFtkYXRlRm9ybWF0dGVyIHNldFRpbWVab25lOl9kYXRlUGlja2VyLmdldCgpLnRpbWVab25lXTsK
KyAgICBbZGF0ZUZvcm1hdHRlciBzZXREYXRlRm9ybWF0Ol9mb3JtYXRTdHJpbmddOworICAgIFtk
YXRlRm9ybWF0dGVyIHNldExvY2FsZTplbmdsaXNoTG9jYWxlLmdldCgpXTsKKyAgICByZXR1cm4g
ZGF0ZUZvcm1hdHRlcjsKK30KKworLSAodm9pZClfZGF0ZUNoYW5nZWRTZXRBc1N0cmluZworewor
ICAgIC8vIEZvcmNlIEVuZ2xpc2ggbG9jYWxlIGJlY2F1c2UgdGhhdCBpcyB3aGF0IEhUTUw1IHZh
bHVlIHBhcnNpbmcgZXhwZWN0cy4KKyAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBkYXRl
Rm9ybWF0dGVyID0gW3NlbGYgZGF0ZUZvcm1hdHRlckZvclBpY2tlcl07CisgICAgW192aWV3IHVw
ZGF0ZUZvY3VzZWRFbGVtZW50VmFsdWU6W2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6W19k
YXRlUGlja2VyIGRhdGVdXV07Cit9CisKKy0gKHZvaWQpX2RhdGVDaGFuZ2VkCit7CisgICAgLy8g
SW50ZXJuYWxseSwgRE9NSFRNTElucHV0RWxlbWVudCBzZXRWYWx1ZUFzKiBlYWNoIHRha2UgZGlm
ZmVyZW50IHZhbHVlcyBmb3IKKyAgICAvLyBkaWZmZXJlbnQgZGF0ZSB0eXBlcy4gSXQgaXMgc29t
ZXRpbWVzIGVhc2llciB0byBzZXQgdGhlIGRhdGUgaW4gZGlmZmVyZW50IHdheXM6CisgICAgLy8g
ICAtIHVzZSBzZXRWYWx1ZUFzU3RyaW5nIGZvciAiZGF0ZSIsICJtb250aCIsIGFuZCAidGltZSIu
CisgICAgLy8gICAtIHVzZSBzZXRWYWx1ZUFzTnVtYmVyIGZvciAiZGF0ZXRpbWUtbG9jYWwiLgor
ICAgIGlmIChfZm9ybWF0U3RyaW5nKQorICAgICAgICBbc2VsZiBfZGF0ZUNoYW5nZWRTZXRBc1N0
cmluZ107CisgICAgZWxzZQorICAgICAgICBbc2VsZiBfZGF0ZUNoYW5nZWRTZXRBc051bWJlcl07
Cit9CisKKy0gKHZvaWQpX2RhdGVDaGFuZ2VIYW5kbGVyOihpZClzZW5kZXIKK3sKKyAgICBbc2Vs
ZiBfZGF0ZUNoYW5nZWRdOworfQorCistICh2b2lkKXNldERhdGVUaW1lUGlja2VyVG9Jbml0aWFs
VmFsdWUKK3sKKyAgICBpZiAoW19pbml0aWFsVmFsdWUgaXNFcXVhbDogQCIiXSkgeworICAgICAg
ICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpbTlNEYXRlIGRhdGVdXTsKKyAgICAgICAgW3NlbGYgX2Rh
dGVDaGFuZ2VkXTsKKyAgICB9IGVsc2UgaWYgKF9mb3JtYXRTdHJpbmcpIHsKKyAgICAgICAgLy8g
Q29udmVydCB0aGUgc3RyaW5nIHZhbHVlIHRvIGEgZGF0ZSBvYmplY3QgZm9yIHRoZSBmaWVsZHMg
d2hlcmUgd2UgaGF2ZSBhIGZvcm1hdCBzdHJpbmcuCisgICAgICAgIFJldGFpblB0cjxOU0RhdGVG
b3JtYXR0ZXI+IGRhdGVGb3JtYXR0ZXIgPSBbc2VsZiBkYXRlRm9ybWF0dGVyRm9yUGlja2VyXTsK
KyAgICAgICAgTlNEYXRlICpwYXJzZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgZGF0ZUZyb21TdHJp
bmc6W3NlbGYgX3Nhbml0aXplSW5wdXRWYWx1ZUZvckZvcm1hdHRlcjpfaW5pdGlhbFZhbHVlXV07
CisgICAgICAgIFtfZGF0ZVBpY2tlciBzZXREYXRlOnBhcnNlZERhdGUgPyBwYXJzZWREYXRlIDog
W05TRGF0ZSBkYXRlXV07CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gQ29udmVydCB0aGUgbnVt
YmVyIHZhbHVlIHRvIGEgZGF0ZSBvYmplY3QgZm9yIHRoZSBmaWVsZHMgYWZmZWN0ZWQgYnkgdGlt
ZXpvbmVzLgorICAgICAgICBOU1RpbWVJbnRlcnZhbCBzZWNvbmRzU2luY2UxOTcwID0gX2luaXRp
YWxWYWx1ZUFzTnVtYmVyIC8ga01pbGxpc2Vjb25kc1BlclNlY29uZDsKKyAgICAgICAgTlNJbnRl
Z2VyIHRpbWVab25lT2Zmc2V0ID0gW3NlbGYgX3RpbWVab25lT2Zmc2V0RnJvbUdNVDpbTlNEYXRl
IGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOnNlY29uZHNTaW5jZTE5NzBdXTsKKyAgICAg
ICAgTlNUaW1lSW50ZXJ2YWwgYWRqdXN0ZWRTZWNvbmRzU2luY2UxOTcwID0gc2Vjb25kc1NpbmNl
MTk3MCAtIHRpbWVab25lT2Zmc2V0OworICAgICAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpbTlNE
YXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOmFkanVzdGVkU2Vjb25kc1NpbmNlMTk3
MF1dOworICAgIH0KK30KKworLSAodm9pZCljb250cm9sQmVnaW5FZGl0aW5nCit7CisgICAgCisg
ICAgaWYgKF9wcmVzZW50aW5nKQorICAgICAgICByZXR1cm47CisgICAgX3ByZXNlbnRpbmcgPSBZ
RVM7CisKKyAgICBpZiAoIV9wcmVzZXJ2aW5nRm9jdXMgJiYgKF92aWV3LmZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gSW5wdXRUeXBlOjpUaW1lIHx8IF92aWV3LmZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gSW5wdXRUeXBlOjpEYXRlVGltZUxv
Y2FsKSkgeworICAgICAgICBbX3ZpZXcgcHJlc2VydmVGb2N1c107CisgICAgICAgIF9wcmVzZXJ2
aW5nRm9jdXMgPSBZRVM7CisgICAgfQorICAgIAorICAgIC8vIFNldCB0aGUgdGltZSB6b25lIGlu
IGNhc2UgaXQgY2hhbmdlZC4KKyAgICBfZGF0ZVBpY2tlci5nZXQoKS50aW1lWm9uZSA9IFtOU1Rp
bWVab25lIGxvY2FsVGltZVpvbmVdOworCisgICAgLy8gQ3VycmVudGx5IG5vIHZhbHVlIGZvciB0
aGUgPGlucHV0Pi4gU3RhcnQgdGhlIHBpY2tlciB3aXRoIHRoZSBjdXJyZW50IHRpbWUuCisgICAg
Ly8gQWxzbywgdXBkYXRlIHRoZSBhY3R1YWwgPGlucHV0PiB2YWx1ZS4KKyAgICBfaW5pdGlhbFZh
bHVlID0gX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi52YWx1ZTsKKyAgICBfaW5pdGlh
bFZhbHVlQXNOdW1iZXIgPSBfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnZhbHVlQXNO
dW1iZXI7CisgICAgW3NlbGYgc2V0RGF0ZVRpbWVQaWNrZXJUb0luaXRpYWxWYWx1ZV07CisgICAg
CisgICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCBwb3NpdGlvbkluZm9y
bWF0aW9uUmVxdWVzdCB7IFdlYkNvcmU6OkludFBvaW50KF92aWV3LmZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24ubGFzdEludGVyYWN0aW9uTG9jYXRpb24pIH07CisgICAgW192aWV3IGRvQWZ0ZXJQ
b3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlOl4oV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbiBpbnRlcmFjdGlvbkluZm9ybWF0aW9uKSB7CisgICAgICAgIFtzZWxmIHNob3dE
YXRlVGltZVBpY2tlcl07CisgICAgfSBmb3JSZXF1ZXN0OnBvc2l0aW9uSW5mb3JtYXRpb25SZXF1
ZXN0XTsKKworfQorCistICh2b2lkKXNldEhvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJ
bnRlZ2VyKW1pbnV0ZQoreworICAgIE5TU3RyaW5nICp0aW1lU3RyaW5nID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCIlLjJsZDolLjJsZCIsIChsb25nKWhvdXIsIChsb25nKW1pbnV0ZV07
CisgICAgW19kYXRlUGlja2VyIHNldERhdGU6W1tzZWxmIGRhdGVGb3JtYXR0ZXJGb3JQaWNrZXJd
IGRhdGVGcm9tU3RyaW5nOnRpbWVTdHJpbmddXTsKKyAgICBbc2VsZiBfZGF0ZUNoYW5nZWRdOwor
fQorCistIChXS0RhdGVUaW1lQ29udGV4dE1lbnVWaWV3Q29udHJvbGxlciAqKXZpZXdDb250cm9s
bGVyCit7CisgICAgcmV0dXJuIF92aWV3Q29udHJvbGxlci5nZXQoKTsKK30KKworLSAodm9pZClj
b250cm9sRW5kRWRpdGluZworeworICAgIF9wcmVzZW50aW5nID0gTk87CisgICAgaWYgKF9wcmVz
ZXJ2aW5nRm9jdXMpIHsKKyAgICAgICAgW192aWV3IHJlbGVhc2VGb2N1c107CisgICAgICAgIF9w
cmVzZXJ2aW5nRm9jdXMgPSBOTzsKKyAgICB9CisgICAgW3NlbGYgcmVtb3ZlQ29udGV4dE1lbnVJ
bnRlcmFjdGlvbl07Cit9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0RhdGVUaW1lSW5wdXRD
b250cm9sCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2
aWV3Cit7CisgICAgVUlEYXRlUGlja2VyTW9kZSBtb2RlOworCisgICAgc3dpdGNoICh2aWV3LmZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKKyAgICBjYXNlIElucHV0VHlw
ZTo6RGF0ZToKKyAgICAgICAgbW9kZSA9IFVJRGF0ZVBpY2tlck1vZGVEYXRlOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIElucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICAgICAgbW9kZSA9
IFVJRGF0ZVBpY2tlck1vZGVEYXRlQW5kVGltZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJ
bnB1dFR5cGU6OlRpbWU6CisgICAgICAgIG1vZGUgPSBVSURhdGVQaWNrZXJNb2RlVGltZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnB1dFR5cGU6Ok1vbnRoOgorICAgICAgICBtb2RlID0g
KFVJRGF0ZVBpY2tlck1vZGUpVUlEYXRlUGlja2VyTW9kZVllYXJBbmRNb250aDsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgW3NlbGYgcmVsZWFzZV07CisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgfQorCisgICAgUmV0YWluUHRyPE5TT2JqZWN0IDxXS0Zvcm1Db250cm9s
Pj4gY29udHJvbDsKKyAgICBjb250cm9sID0gYWRvcHROUyhbW1dLRGF0ZVRpbWVQaWNrZXIgYWxs
b2NdIGluaXRXaXRoVmlldzp2aWV3IGRhdGVQaWNrZXJNb2RlOm1vZGVdKTsKKyAgICByZXR1cm4g
W3N1cGVyIGluaXRXaXRoVmlldzp2aWV3IGNvbnRyb2w6V1RGTW92ZShjb250cm9sKV07Cit9CisK
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wgKFdLVGVzdGlu
ZykKKworLSAodm9pZClzZXRUaW1lUGlja2VySG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihO
U0ludGVnZXIpbWludXRlCit7CisgICAgaWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpX
S0RhdGVUaW1lUGlja2VyLmNsYXNzXSkKKyAgICAgICAgWyhXS0RhdGVUaW1lUGlja2VyICopc2Vs
Zi5jb250cm9sIHNldEhvdXI6aG91ciBtaW51dGU6bWludXRlXTsKK30KKworLSAoTlNTdHJpbmcg
KilkYXRlVGltZVBpY2tlckNhbGVuZGFyVHlwZQoreworICAgIGlmIChbc2VsZi5jb250cm9sIGlz
S2luZE9mQ2xhc3M6V0tEYXRlVGltZVBpY2tlci5jbGFzc10pCisgICAgICAgIHJldHVybiBbKFdL
RGF0ZVRpbWVQaWNrZXIgKilzZWxmLmNvbnRyb2wgY2FsZW5kYXJUeXBlXTsKKyAgICByZXR1cm4g
bmlsOworfQorCistIChkb3VibGUpdGltZVBpY2tlclZhbHVlSG91cgoreworICAgIGlmIChbc2Vs
Zi5jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBpY2tlci5jbGFzc10pCisgICAgICAg
IHJldHVybiBbKFdLRGF0ZVRpbWVQaWNrZXIgKilzZWxmLmNvbnRyb2wgaG91cl07CisgICAgcmV0
dXJuIC0xOworfQorCistIChkb3VibGUpdGltZVBpY2tlclZhbHVlTWludXRlCit7CisgICAgaWYg
KFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lUGlja2VyLmNsYXNzXSkKKyAg
ICAgICAgcmV0dXJuIFsoV0tEYXRlVGltZVBpY2tlciAqKXNlbGYuY29udHJvbCBtaW51dGVdOwor
ICAgIHJldHVybiAtMTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1J
bnB1dENvbnRyb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1J
bnB1dENvbnRyb2wuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc1YTEyNGI5ZWYz
OTZjMDgwZjM4YmU2NTk2ZmE3MzhhN2NjODViMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
b3JtSW5wdXRDb250cm9sLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLSNpbXBvcnQgIldLRm9ybVBlcmlwaGVy
YWxCYXNlLmgiCi0KLUBjbGFzcyBXS0NvbnRlbnRWaWV3OwotCi1AaW50ZXJmYWNlIFdLRm9ybUlu
cHV0Q29udHJvbCA6IFdLRm9ybVBlcmlwaGVyYWxCYXNlCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldzsKLUBlbmQKLQotQGludGVyZmFjZSBXS0Zvcm1J
bnB1dENvbnRyb2wgKFdLVGVzdGluZykKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
TlNTdHJpbmcgKmRhdGVUaW1lUGlja2VyQ2FsZW5kYXJUeXBlOwotQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBkb3VibGUgdGltZVBpY2tlclZhbHVlSG91cjsKLUBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgZG91YmxlIHRpbWVQaWNrZXJWYWx1ZU1pbnV0ZTsKLS0gKHZvaWQp
c2V0VGltZVBpY2tlckhvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0
ZTsKLUBlbmQKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5tbQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUxMDA5YTk0YTIzZWYwNWJlZTQzNTAzNTE5
NDE4OTBmZWYxYjM2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9s
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTAyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIldLRm9ybUlucHV0Q29udHJvbC5oIgotCi0jaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLQotI2ltcG9ydCAiVXNlckludGVyZmFjZUlkaW9tLmgiCi0jaW1wb3J0
ICJXS0NvbnRlbnRWaWV3LmgiCi0jaW1wb3J0ICJXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCIK
LSNpbXBvcnQgIldLRm9ybVBvcG92ZXIuaCIKLSNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgotI2lt
cG9ydCA8VUlLaXQvVUlCYXJCdXR0b25JdGVtLmg+Ci0jaW1wb3J0IDxVSUtpdC9VSURhdGVQaWNr
ZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgotI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1AaW50ZXJmYWNlIFdL
RGF0ZVRpbWVQb3BvdmVyVmlld0NvbnRyb2xsZXIgOiBVSVZpZXdDb250cm9sbGVyIHsKLSAgICBS
ZXRhaW5QdHI8TlNPYmplY3Q8V0tGb3JtQ29udHJvbD4+IF9pbm5lckNvbnRyb2w7Ci19Ci0tIChp
ZClpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3IGRhdGVQaWNrZXJNb2RlOihVSURh
dGVQaWNrZXJNb2RlKWRhdGVQaWNrZXJNb2RlOwotLSAoTlNPYmplY3Q8V0tGb3JtQ29udHJvbD4g
Kilpbm5lckNvbnRyb2w7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgV0tEYXRlVGltZVBvcG92ZXIgOiBX
S0Zvcm1Sb3RhdGluZ0FjY2Vzc29yeVBvcG92ZXI8V0tGb3JtQ29udHJvbD4gewotICAgIFJldGFp
blB0cjxXS0RhdGVUaW1lUG9wb3ZlclZpZXdDb250cm9sbGVyPiBfdmlld0NvbnRyb2xsZXI7Ci0g
ICAgV0tDb250ZW50VmlldyAqX3ZpZXc7Ci0gICAgQk9PTCBfcHJlc2VudGluZzsKLSAgICBCT09M
IF9wcmVzZXJ2aW5nRm9jdXM7Ci19Ci0tIChpZClpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcg
Kil2aWV3IGRhdGVQaWNrZXJNb2RlOihVSURhdGVQaWNrZXJNb2RlKW1vZGU7Ci0tIChXS0RhdGVU
aW1lUG9wb3ZlclZpZXdDb250cm9sbGVyICopdmlld0NvbnRyb2xsZXI7Ci1AcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpjYWxlbmRhclR5cGU7Ci1AcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIGRvdWJsZSBob3VyOwotQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBkb3VibGUgbWludXRlOwotLSAodm9pZClzZXRIb3VyOihOU0ludGVnZXIpaG91ciBt
aW51dGU6KE5TSW50ZWdlciltaW51dGU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgV0tEYXRlVGltZVBp
Y2tlciA6IE5TT2JqZWN0PFdLRm9ybUNvbnRyb2w+IHsKLSAgICBSZXRhaW5QdHI8VUlEYXRlUGlj
a2VyPiBfZGF0ZVBpY2tlcjsKLSAgICBOU1N0cmluZyAqX2Zvcm1hdFN0cmluZzsKLSAgICBCT09M
IF9zaG91bGRSZW1vdmVUaW1lWm9uZUluZm9ybWF0aW9uOwotICAgIEJPT0wgX2lzVGltZUlucHV0
OwotICAgIFdLQ29udGVudFZpZXcqIF92aWV3OwotfQotLSAoaWQpaW5pdFdpdGhWaWV3OihXS0Nv
bnRlbnRWaWV3ICopdmlldyBkYXRlUGlja2VyTW9kZTooVUlEYXRlUGlja2VyTW9kZSltb2RlOwot
LSAoVUlEYXRlUGlja2VyICopZGF0ZVBpY2tlcjsKLQotQGVuZAotCi0jaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XS0Zvcm1JbnB1dENvbnRyb2xB
ZGRpdGlvbnMubW0+Ci0jZW5kaWYKLQotQGltcGxlbWVudGF0aW9uIFdLRGF0ZVRpbWVQaWNrZXIK
LQotc3RhdGljIE5TU3RyaW5nICogY29uc3Qga0RhdGVGb3JtYXRTdHJpbmcgPSBAInl5eXktTU0t
ZGQiOyAvLyAiMjAxMS0wMS0yNyIuCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBrTW9udGhGb3Jt
YXRTdHJpbmcgPSBAInl5eXktTU0iOyAvLyAiMjAxMS0wMSIuCi1zdGF0aWMgTlNTdHJpbmcgKiBj
b25zdCBrVGltZUZvcm1hdFN0cmluZyA9IEAiSEg6bW0iOyAvLyAiMTM6NDUiLgotc3RhdGljIGNv
bnN0IE5TVGltZUludGVydmFsIGtNaWxsaXNlY29uZHNQZXJTZWNvbmQgPSAxMDAwOwotCi0tIChV
SURhdGVQaWNrZXIgKilkYXRlUGlja2VyCi17Ci0gICAgcmV0dXJuIF9kYXRlUGlja2VyLmdldCgp
OwotfQotCi0jaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIEhBVkUoVUlEQVRFUElDS0VS
X1NUWUxFKQotLSAoVUlEYXRlUGlja2VyU3R5bGUpZGF0ZVBpY2tlclN0eWxlCi17Ci0gICAgcmV0
dXJuIFVJRGF0ZVBpY2tlclN0eWxlQXV0b21hdGljOwotfQotI2VuZGlmCi0KLS0gKGlkKWluaXRX
aXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgZGF0ZVBpY2tlck1vZGU6KFVJRGF0ZVBpY2tl
ck1vZGUpbW9kZQotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICBy
ZXR1cm4gbmlsOwotCi0gICAgX3ZpZXcgPSB2aWV3OwotICAgIF9zaG91bGRSZW1vdmVUaW1lWm9u
ZUluZm9ybWF0aW9uID0gTk87Ci0gICAgX2lzVGltZUlucHV0ID0gTk87Ci0gICAgc3dpdGNoICh2
aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKLSAgICBjYXNlIElu
cHV0VHlwZTo6RGF0ZToKLSAgICAgICAgX2Zvcm1hdFN0cmluZyA9IGtEYXRlRm9ybWF0U3RyaW5n
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIElucHV0VHlwZTo6TW9udGg6Ci0gICAgICAgIF9m
b3JtYXRTdHJpbmcgPSBrTW9udGhGb3JtYXRTdHJpbmc7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSW5wdXRUeXBlOjpUaW1lOgotICAgICAgICBfZm9ybWF0U3RyaW5nID0ga1RpbWVGb3JtYXRT
dHJpbmc7Ci0gICAgICAgIF9pc1RpbWVJbnB1dCA9IFlFUzsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw6Ci0gICAgICAgIF9zaG91bGRSZW1vdmVUaW1l
Wm9uZUluZm9ybWF0aW9uID0gWUVTOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAg
ICAgICBicmVhazsKLSAgICB9Ci0gICAgCi0gICAgX2RhdGVQaWNrZXIgPSBhZG9wdE5TKFtbVUlE
YXRlUGlja2VyIGFsbG9jXSBpbml0XSk7Ci0KLSAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZVBpY2tl
ck1vZGU6bW9kZV07Ci0gICAgW19kYXRlUGlja2VyIHNldEhpZGRlbjpOT107Ci0gICAgCi0jaWYg
SEFWRShVSURBVEVQSUNLRVJfU1RZTEUpCi0gICAgW19kYXRlUGlja2VyIHNldFByZWZlcnJlZERh
dGVQaWNrZXJTdHlsZTpbc2VsZiBkYXRlUGlja2VyU3R5bGVdXTsKLSNlbmRpZgotICAgIAotICAg
IGF1dG8gc2l6ZSA9IFtfZGF0ZVBpY2tlciBzaXplVGhhdEZpdHM6Q0dTaXplTWFrZSh2aWV3LmZy
YW1lLnNpemUud2lkdGgsIDApXTsKLSAgICBbX2RhdGVQaWNrZXIgc2V0RnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCBzaXplLndpZHRoLCBzaXplLmhlaWdodCldOwotICAgIAotICAgIGlmIChbc2VsZiBz
aG91bGRQcmVzZW50R3JlZ29yaWFuQ2FsZW5kYXI6dmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uXSkKLSAgICAgICAgX2RhdGVQaWNrZXIuZ2V0KCkuY2FsZW5kYXIgPSBbTlNDYWxlbmRhciBj
YWxlbmRhcldpdGhJZGVudGlmaWVyOk5TQ2FsZW5kYXJJZGVudGlmaWVyR3JlZ29yaWFuXTsKLSAg
ICAKLSAgICBbX2RhdGVQaWNrZXIgYWRkVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihfZGF0
ZUNoYW5nZUhhbmRsZXI6KSBmb3JDb250cm9sRXZlbnRzOlVJQ29udHJvbEV2ZW50VmFsdWVDaGFu
Z2VkXTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChOU1N0cmluZyAqKWNhbGVuZGFyVHlw
ZQotewotICAgIHJldHVybiBfZGF0ZVBpY2tlci5nZXQoKS5jYWxlbmRhci5jYWxlbmRhcklkZW50
aWZpZXI7Ci19Ci0KLS0gKGRvdWJsZSlob3VyCi17Ci0gICAgTlNDYWxlbmRhciAqY2FsZW5kYXIg
PSBbTlNDYWxlbmRhciBjdXJyZW50Q2FsZW5kYXJdOwotICAgIE5TRGF0ZUNvbXBvbmVudHMgKmNv
bXBvbmVudHMgPSBbY2FsZW5kYXIgY29tcG9uZW50czpOU0NhbGVuZGFyVW5pdEhvdXIgZnJvbURh
dGU6W19kYXRlUGlja2VyIGRhdGVdXTsKLQotICAgIHJldHVybiBbY29tcG9uZW50cyBob3VyXTsK
LX0KLQotLSAoZG91YmxlKW1pbnV0ZQotewotICAgIE5TQ2FsZW5kYXIgKmNhbGVuZGFyID0gW05T
Q2FsZW5kYXIgY3VycmVudENhbGVuZGFyXTsKLSAgICBOU0RhdGVDb21wb25lbnRzICpjb21wb25l
bnRzID0gW2NhbGVuZGFyIGNvbXBvbmVudHM6TlNDYWxlbmRhclVuaXRNaW51dGUgZnJvbURhdGU6
W19kYXRlUGlja2VyIGRhdGVdXTsKLQotICAgIHJldHVybiBbY29tcG9uZW50cyBtaW51dGVdOwot
fQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbX2RhdGVQaWNrZXIgcmVtb3ZlVGFyZ2V0OnNl
bGYgYWN0aW9uOk5VTEwgZm9yQ29udHJvbEV2ZW50czpVSUNvbnRyb2xFdmVudFZhbHVlQ2hhbmdl
ZF07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tIChCT09MKXNob3VsZFByZXNlbnRHcmVn
b3JpYW5DYWxlbmRhcjooY29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYpbm9kZUluZm8K
LXsKLSAgICByZXR1cm4gbm9kZUluZm8uYXV0b2ZpbGxGaWVsZE5hbWUgPT0gV2ViQ29yZTo6QXV0
b2ZpbGxGaWVsZE5hbWU6OkNjRXhwTW9udGgKLSAgICAgICAgfHwgbm9kZUluZm8uYXV0b2ZpbGxG
aWVsZE5hbWUgPT0gV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwCi0gICAgICAgIHx8
IG5vZGVJbmZvLmF1dG9maWxsRmllbGROYW1lID09IFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1l
OjpDY0V4cFllYXI7Ci19Ci0KLS0gKFVJVmlldyAqKWNvbnRyb2xWaWV3Ci17Ci0gICAgcmV0dXJu
IF9kYXRlUGlja2VyLmdldCgpOwotfQotCi0tIChOU0ludGVnZXIpX3RpbWVab25lT2Zmc2V0RnJv
bUdNVDooTlNEYXRlICopZGF0ZQotewotICAgIGlmICghX3Nob3VsZFJlbW92ZVRpbWVab25lSW5m
b3JtYXRpb24pCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIFtfZGF0ZVBpY2tlci5n
ZXQoKS50aW1lWm9uZSBzZWNvbmRzRnJvbUdNVEZvckRhdGU6ZGF0ZV07Ci19Ci0KLS0gKE5TU3Ry
aW5nICopX3Nhbml0aXplSW5wdXRWYWx1ZUZvckZvcm1hdHRlcjooTlNTdHJpbmcgKil2YWx1ZQot
ewotICAgIC8vIFRoZSAidGltZSIgaW5wdXQgdHlwZSBtYXkgaGF2ZSBzZWNvbmRzIGFuZCBtaWxs
aXNlY29uZHMgaW5mb3JtYXRpb24gd2hpY2ggd2UKLSAgICAvLyBqdXN0IGlnbm9yZS4gRm9yIGV4
YW1wbGU6ICIwMTo1NjoyMC4zOTEiIGlzIHNob3J0ZW5lZCB0byBqdXN0ICIwMTo1NiIuCi0gICAg
aWYgKF9pc1RpbWVJbnB1dCkKLSAgICAgICAgcmV0dXJuIFt2YWx1ZSBzdWJzdHJpbmdUb0luZGV4
OltrVGltZUZvcm1hdFN0cmluZyBsZW5ndGhdXTsKLQotICAgIHJldHVybiB2YWx1ZTsKLX0KLQot
LSAodm9pZClfZGF0ZUNoYW5nZWRTZXRBc051bWJlcgotewotICAgIE5TRGF0ZSAqZGF0ZSA9IFtf
ZGF0ZVBpY2tlciBkYXRlXTsKLSAgICBbX3ZpZXcgdXBkYXRlRm9jdXNlZEVsZW1lbnRWYWx1ZUFz
TnVtYmVyOihbZGF0ZSB0aW1lSW50ZXJ2YWxTaW5jZTE5NzBdICsgW3NlbGYgX3RpbWVab25lT2Zm
c2V0RnJvbUdNVDpkYXRlXSkgKiBrTWlsbGlzZWNvbmRzUGVyU2Vjb25kXTsKLX0KLQotLSAoUmV0
YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4pZGF0ZUZvcm1hdHRlckZvclBpY2tlcgotewotICAgIFJl
dGFpblB0cjxOU0xvY2FsZT4gZW5nbGlzaExvY2FsZSA9IGFkb3B0TlMoW1tOU0xvY2FsZSBhbGxv
Y10gaW5pdFdpdGhMb2NhbGVJZGVudGlmaWVyOkAiZW5fVVNfUE9TSVgiXSk7Ci0gICAgUmV0YWlu
UHRyPE5TRGF0ZUZvcm1hdHRlcj4gZGF0ZUZvcm1hdHRlciA9IGFkb3B0TlMoW1tOU0RhdGVGb3Jt
YXR0ZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbZGF0ZUZvcm1hdHRlciBzZXRUaW1lWm9uZTpfZGF0
ZVBpY2tlci5nZXQoKS50aW1lWm9uZV07Ci0gICAgW2RhdGVGb3JtYXR0ZXIgc2V0RGF0ZUZvcm1h
dDpfZm9ybWF0U3RyaW5nXTsKLSAgICBbZGF0ZUZvcm1hdHRlciBzZXRMb2NhbGU6ZW5nbGlzaExv
Y2FsZS5nZXQoKV07Ci0gICAgcmV0dXJuIGRhdGVGb3JtYXR0ZXI7Ci19Ci0KLS0gKHZvaWQpX2Rh
dGVDaGFuZ2VkU2V0QXNTdHJpbmcKLXsKLSAgICAvLyBGb3JjZSBFbmdsaXNoIGxvY2FsZSBiZWNh
dXNlIHRoYXQgaXMgd2hhdCBIVE1MNSB2YWx1ZSBwYXJzaW5nIGV4cGVjdHMuCi0gICAgUmV0YWlu
UHRyPE5TRGF0ZUZvcm1hdHRlcj4gZGF0ZUZvcm1hdHRlciA9IFtzZWxmIGRhdGVGb3JtYXR0ZXJG
b3JQaWNrZXJdOwotICAgIFtfdmlldyB1cGRhdGVGb2N1c2VkRWxlbWVudFZhbHVlOltkYXRlRm9y
bWF0dGVyIHN0cmluZ0Zyb21EYXRlOltfZGF0ZVBpY2tlciBkYXRlXV1dOwotfQotCi0tICh2b2lk
KV9kYXRlQ2hhbmdlZAotewotICAgIC8vIEludGVybmFsbHksIERPTUhUTUxJbnB1dEVsZW1lbnQg
c2V0VmFsdWVBcyogZWFjaCB0YWtlIGRpZmZlcmVudCB2YWx1ZXMgZm9yCi0gICAgLy8gZGlmZmVy
ZW50IGRhdGUgdHlwZXMuIEl0IGlzIHNvbWV0aW1lcyBlYXNpZXIgdG8gc2V0IHRoZSBkYXRlIGlu
IGRpZmZlcmVudCB3YXlzOgotICAgIC8vICAgLSB1c2Ugc2V0VmFsdWVBc1N0cmluZyBmb3IgImRh
dGUiLCAibW9udGgiLCBhbmQgInRpbWUiLgotICAgIC8vICAgLSB1c2Ugc2V0VmFsdWVBc051bWJl
ciBmb3IgImRhdGV0aW1lLWxvY2FsIi4KLSAgICBpZiAoX2Zvcm1hdFN0cmluZykKLSAgICAgICAg
W3NlbGYgX2RhdGVDaGFuZ2VkU2V0QXNTdHJpbmddOwotICAgIGVsc2UKLSAgICAgICAgW3NlbGYg
X2RhdGVDaGFuZ2VkU2V0QXNOdW1iZXJdOwotfQotCi0tICh2b2lkKV9kYXRlQ2hhbmdlSGFuZGxl
cjooaWQpc2VuZGVyCi17Ci0gICAgW3NlbGYgX2RhdGVDaGFuZ2VkXTsKLX0KLQotLSAodm9pZClj
b250cm9sQmVnaW5FZGl0aW5nCi17Ci0gICAgLy8gU2V0IHRoZSB0aW1lIHpvbmUgaW4gY2FzZSBp
dCBjaGFuZ2VkLgotICAgIF9kYXRlUGlja2VyLmdldCgpLnRpbWVab25lID0gW05TVGltZVpvbmUg
bG9jYWxUaW1lWm9uZV07Ci0KLSAgICAvLyBDdXJyZW50bHkgbm8gdmFsdWUgZm9yIHRoZSA8aW5w
dXQ+LiBTdGFydCB0aGUgcGlja2VyIHdpdGggdGhlIGN1cnJlbnQgdGltZS4KLSAgICAvLyBBbHNv
LCB1cGRhdGUgdGhlIGFjdHVhbCA8aW5wdXQ+IHZhbHVlLgotICAgIE5TU3RyaW5nICp2YWx1ZSA9
IF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24udmFsdWU7Ci0gICAgaWYgKF92aWV3LmZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24udmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFtfZGF0
ZVBpY2tlciBzZXREYXRlOltOU0RhdGUgZGF0ZV1dOwotICAgICAgICBbc2VsZiBfZGF0ZUNoYW5n
ZWRdOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gQ29udmVydCB0aGUgc3RyaW5n
IHZhbHVlIHRvIGEgZGF0ZSBvYmplY3QgZm9yIHRoZSBmaWVsZHMgd2hlcmUgd2UgaGF2ZSBhIGZv
cm1hdCBzdHJpbmcuCi0gICAgaWYgKF9mb3JtYXRTdHJpbmcpIHsKLSAgICAgICAgdmFsdWUgPSBb
c2VsZiBfc2FuaXRpemVJbnB1dFZhbHVlRm9yRm9ybWF0dGVyOnZhbHVlXTsKLSAgICAgICAgUmV0
YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gZGF0ZUZvcm1hdHRlciA9IFtzZWxmIGRhdGVGb3JtYXR0
ZXJGb3JQaWNrZXJdOwotICAgICAgICBOU0RhdGUgKnBhcnNlZERhdGUgPSBbZGF0ZUZvcm1hdHRl
ciBkYXRlRnJvbVN0cmluZzp2YWx1ZV07Ci0gICAgICAgIFtfZGF0ZVBpY2tlciBzZXREYXRlOnBh
cnNlZERhdGUgPyBwYXJzZWREYXRlIDogW05TRGF0ZSBkYXRlXV07Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICAvLyBDb252ZXJ0IHRoZSBudW1iZXIgdmFsdWUgdG8gYSBkYXRlIG9iamVj
dCBmb3IgdGhlIGZpZWxkcyBhZmZlY3RlZCBieSB0aW1lem9uZXMuCi0gICAgTlNUaW1lSW50ZXJ2
YWwgc2Vjb25kc1NpbmNlMTk3MCA9IF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24udmFs
dWVBc051bWJlciAvIGtNaWxsaXNlY29uZHNQZXJTZWNvbmQ7Ci0gICAgTlNJbnRlZ2VyIHRpbWVa
b25lT2Zmc2V0ID0gW3NlbGYgX3RpbWVab25lT2Zmc2V0RnJvbUdNVDpbTlNEYXRlIGRhdGVXaXRo
VGltZUludGVydmFsU2luY2UxOTcwOnNlY29uZHNTaW5jZTE5NzBdXTsKLSAgICBOU1RpbWVJbnRl
cnZhbCBhZGp1c3RlZFNlY29uZHNTaW5jZTE5NzAgPSBzZWNvbmRzU2luY2UxOTcwIC0gdGltZVpv
bmVPZmZzZXQ7Ci0gICAgW19kYXRlUGlja2VyIHNldERhdGU6W05TRGF0ZSBkYXRlV2l0aFRpbWVJ
bnRlcnZhbFNpbmNlMTk3MDphZGp1c3RlZFNlY29uZHNTaW5jZTE5NzBdXTsKLX0KLQotLSAodm9p
ZCljb250cm9sRW5kRWRpdGluZwotewotfQotCi0tICh2b2lkKXNldEhvdXI6KE5TSW50ZWdlcilo
b3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZQotewotICAgIE5TU3RyaW5nICp0aW1lU3RyaW5n
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlLjJsZDolLjJsZCIsIChsb25nKWhvdXIs
IChsb25nKW1pbnV0ZV07Ci0gICAgW19kYXRlUGlja2VyIHNldERhdGU6W1tzZWxmIGRhdGVGb3Jt
YXR0ZXJGb3JQaWNrZXJdIGRhdGVGcm9tU3RyaW5nOnRpbWVTdHJpbmddXTsKLSAgICBbc2VsZiBf
ZGF0ZUNoYW5nZWRdOwotfQotCi1AZW5kCi0KLS8vIFdLRm9ybUlucHV0Q29udHJvbAotQGltcGxl
bWVudGF0aW9uIFdLRm9ybUlucHV0Q29udHJvbAotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhW
aWV3OihXS0NvbnRlbnRWaWV3ICopdmlldwotewotICAgIFVJRGF0ZVBpY2tlck1vZGUgbW9kZTsK
LQotICAgIHN3aXRjaCAodmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBl
KSB7Ci0gICAgY2FzZSBJbnB1dFR5cGU6OkRhdGU6Ci0gICAgICAgIG1vZGUgPSBVSURhdGVQaWNr
ZXJNb2RlRGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnB1dFR5cGU6OkRhdGVUaW1l
TG9jYWw6Ci0gICAgICAgIG1vZGUgPSBVSURhdGVQaWNrZXJNb2RlRGF0ZUFuZFRpbWU7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSW5wdXRUeXBlOjpUaW1lOgotICAgICAgICBtb2RlID0gVUlE
YXRlUGlja2VyTW9kZVRpbWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5wdXRUeXBlOjpN
b250aDoKLSAgICAgICAgbW9kZSA9IChVSURhdGVQaWNrZXJNb2RlKVVJRGF0ZVBpY2tlck1vZGVZ
ZWFyQW5kTW9udGg7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFtzZWxm
IHJlbGVhc2VdOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIFJldGFpblB0cjxO
U09iamVjdCA8V0tGb3JtQ29udHJvbD4+IGNvbnRyb2w7Ci0gICAgaWYgKGN1cnJlbnRVc2VySW50
ZXJmYWNlSWRpb21Jc1BhZCgpKQotICAgICAgICBjb250cm9sID0gYWRvcHROUyhbW1dLRGF0ZVRp
bWVQb3BvdmVyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlldyBkYXRlUGlja2VyTW9kZTptb2RlXSk7
Ci0gICAgZWxzZQotICAgICAgICBjb250cm9sID0gYWRvcHROUyhbW1dLRGF0ZVRpbWVQaWNrZXIg
YWxsb2NdIGluaXRXaXRoVmlldzp2aWV3IGRhdGVQaWNrZXJNb2RlOm1vZGVdKTsKLSAgICByZXR1
cm4gW3N1cGVyIGluaXRXaXRoVmlldzp2aWV3IGNvbnRyb2w6V1RGTW92ZShjb250cm9sKV07Ci19
Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLRm9ybUlucHV0Q29udHJvbCAoV0tUZXN0aW5n
KQotCi0tICh2b2lkKXNldFRpbWVQaWNrZXJIb3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5T
SW50ZWdlciltaW51dGUKLXsKLSAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldL
RGF0ZVRpbWVQaWNrZXIuY2xhc3NdKQotICAgICAgICBbKFdLRGF0ZVRpbWVQaWNrZXIgKilzZWxm
LmNvbnRyb2wgc2V0SG91cjpob3VyIG1pbnV0ZTptaW51dGVdOwotICAgIGlmIChbc2VsZi5jb250
cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBvcG92ZXIuY2xhc3NdKQotICAgICAgICBbKFdL
RGF0ZVRpbWVQb3BvdmVyICopc2VsZi5jb250cm9sIHNldEhvdXI6aG91ciBtaW51dGU6bWludXRl
XTsKLX0KLQotLSAoTlNTdHJpbmcgKilkYXRlVGltZVBpY2tlckNhbGVuZGFyVHlwZQotewotICAg
IGlmIChbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBpY2tlci5jbGFzc10p
Ci0gICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVQaWNrZXIgKilzZWxmLmNvbnRyb2wgY2FsZW5k
YXJUeXBlXTsKLSAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQ
b3BvdmVyLmNsYXNzXSkKLSAgICAgICAgcmV0dXJuIFsoV0tEYXRlVGltZVBvcG92ZXIgKilzZWxm
LmNvbnRyb2wgY2FsZW5kYXJUeXBlXTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChkb3VibGUp
dGltZVBpY2tlclZhbHVlSG91cgotewotICAgIGlmIChbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xh
c3M6V0tEYXRlVGltZVBpY2tlci5jbGFzc10pCi0gICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVQ
aWNrZXIgKilzZWxmLmNvbnRyb2wgaG91cl07Ci0gICAgaWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5k
T2ZDbGFzczpXS0RhdGVUaW1lUG9wb3Zlci5jbGFzc10pCi0gICAgICAgIHJldHVybiBbKFdLRGF0
ZVRpbWVQb3BvdmVyICopc2VsZi5jb250cm9sIGhvdXJdOwotICAgIHJldHVybiAtMTsKLX0KLQot
LSAoZG91YmxlKXRpbWVQaWNrZXJWYWx1ZU1pbnV0ZQotewotICAgIGlmIChbc2VsZi5jb250cm9s
IGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBpY2tlci5jbGFzc10pCi0gICAgICAgIHJldHVybiBb
KFdLRGF0ZVRpbWVQaWNrZXIgKilzZWxmLmNvbnRyb2wgbWludXRlXTsKLSAgICBpZiAoW3NlbGYu
Y29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQb3BvdmVyLmNsYXNzXSkKLSAgICAgICAg
cmV0dXJuIFsoV0tEYXRlVGltZVBvcG92ZXIgKilzZWxmLmNvbnRyb2wgbWludXRlXTsKLSAgICBy
ZXR1cm4gLTE7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLRGF0ZVRpbWVQb3BvdmVy
Vmlld0NvbnRyb2xsZXIKLQotLSAoaWQpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmll
dyBkYXRlUGlja2VyTW9kZTooVUlEYXRlUGlja2VyTW9kZSlkYXRlUGlja2VyTW9kZQotewotICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAg
X2lubmVyQ29udHJvbCA9IGFkb3B0TlMoW1tXS0RhdGVUaW1lUGlja2VyIGFsbG9jXSBpbml0V2l0
aFZpZXc6dmlldyBkYXRlUGlja2VyTW9kZTpkYXRlUGlja2VyTW9kZV0pOwotCi0gICAgcmV0dXJu
IHNlbGY7Ci19Ci0KLS0gKE5TT2JqZWN0PFdLRm9ybUNvbnRyb2w+ICopaW5uZXJDb250cm9sCi17
Ci0gICAgcmV0dXJuIF9pbm5lckNvbnRyb2wuZ2V0KCk7Ci19Ci0KLS0gKHZvaWQpbG9hZFZpZXcK
LXsKLSAgICBzZWxmLnZpZXcgPSBbX2lubmVyQ29udHJvbCBjb250cm9sVmlld107Ci19Ci0KLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIFdLRGF0ZVRpbWVQb3BvdmVyCi0KLS0gKHZvaWQpY2xlYXI6
KGlkKXNlbmRlcgotewotICAgIFtfdmlldyBwYWdlXS0+c2V0Rm9jdXNlZEVsZW1lbnRWYWx1ZShT
dHJpbmcoKSk7Ci19Ci0KLS0gKHZvaWQpcG9wb3Zlcldhc0Rpc21pc3NlZDooV0tSb3RhdGluZ1Bv
cG92ZXIgKilwb3BvdmVyCi17Ci0gICAgW3N1cGVyIHBvcG92ZXJXYXNEaXNtaXNzZWQ6cG9wb3Zl
cl07Ci0gICAgCi0gICAgaWYgKHBvcG92ZXIgPT0gc2VsZikgewotICAgICAgICBpZiAoX3ByZXNl
cnZpbmdGb2N1cykgewotICAgICAgICAgICAgW192aWV3IHJlbGVhc2VGb2N1c107Ci0gICAgICAg
ICAgICBfcHJlc2VydmluZ0ZvY3VzID0gTk87Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS0gKGlk
KWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgZGF0ZVBpY2tlck1vZGU6KFVJRGF0
ZVBpY2tlck1vZGUpbW9kZQotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhWaWV3
OnZpZXddKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF92aWV3ID0gdmlldzsKLSAgICBf
dmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tEYXRlVGltZVBvcG92ZXJWaWV3Q29udHJvbGxl
ciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXcgZGF0ZVBpY2tlck1vZGU6bW9kZV0pOwotICAgIFVJ
RGF0ZVBpY2tlciAqZGF0ZVBpY2tlciA9IFsoV0tEYXRlVGltZVBpY2tlciAqKV92aWV3Q29udHJv
bGxlci5nZXQoKS5pbm5lckNvbnRyb2wgZGF0ZVBpY2tlcl07Ci0KLSAgICBpZiAodmlldy5mb2N1
c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IElucHV0VHlwZTo6TW9udGgpIHsK
LSAgICAgICAgQ0dGbG9hdCBwb3BvdmVyV2lkdGggPSBbZGF0ZVBpY2tlciBfY29udGVudFdpZHRo
XTsKLSAgICAgICAgQ0dGbG9hdCBwb3BvdmVySGVpZ2h0ID0gX3ZpZXdDb250cm9sbGVyLmdldCgp
LnZpZXcuZnJhbWUuc2l6ZS5oZWlnaHQ7Ci0gICAgICAgIFtfdmlld0NvbnRyb2xsZXIgc2V0UHJl
ZmVycmVkQ29udGVudFNpemU6Q0dTaXplTWFrZShwb3BvdmVyV2lkdGgsIHBvcG92ZXJIZWlnaHQp
XTsKLSAgICB9IGVsc2UgewotICAgICAgICBbX3ZpZXdDb250cm9sbGVyIHNldFByZWZlcnJlZENv
bnRlbnRTaXplOkNHU2l6ZU1ha2UoZGF0ZVBpY2tlci5mcmFtZS5zaXplLndpZHRoKzE2LCBkYXRl
UGlja2VyLmZyYW1lLnNpemUuaGVpZ2h0KV07Ci0gICAgfQotICAgIAotICAgIFtfdmlld0NvbnRy
b2xsZXIgc2V0RWRnZXNGb3JFeHRlbmRlZExheW91dDpVSVJlY3RFZGdlTm9uZV07Ci0gICAgW192
aWV3Q29udHJvbGxlciBzZXRUaXRsZTpfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnRp
dGxlXTsKLQotICAgIC8vIEFsd2F5cyBoYXZlIGEgbmF2aWdhdGlvbiBjb250cm9sbGVyIHdpdGgg
YSBjbGVhciBidXR0b24sIGFuZCBhIHRpdGxlIGlmIHRoZSBpbnB1dCBlbGVtZW50IGhhcyBhIHRp
dGxlLgotICAgIFJldGFpblB0cjxVSU5hdmlnYXRpb25Db250cm9sbGVyPiBuYXZpZ2F0aW9uQ29u
dHJvbGxlciA9IGFkb3B0TlMoW1tVSU5hdmlnYXRpb25Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0
aFJvb3RWaWV3Q29udHJvbGxlcjpfdmlld0NvbnRyb2xsZXIuZ2V0KCldKTsKLSAgICBVSU5hdmln
YXRpb25JdGVtICpuYXZpZ2F0aW9uSXRlbSA9IG5hdmlnYXRpb25Db250cm9sbGVyLmdldCgpLm5h
dmlnYXRpb25CYXIudG9wSXRlbTsKLSAgICBOU1N0cmluZyAqY2xlYXJTdHJpbmcgPSBXRUJfVUlf
U1RSSU5HX0tFWSgiQ2xlYXIiLCAiQ2xlYXIgQnV0dG9uIERhdGUgUG9wb3ZlciIsICJDbGVhciBi
dXR0b24gaW4gZGF0ZSBpbnB1dCBwb3BvdmVyIik7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KLSAgICBVSUJhckJ1dHRvbkl0ZW0gKmNsZWFyQnV0dG9uID0gW1tbVUlC
YXJCdXR0b25JdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOmNsZWFyU3RyaW5nIHN0eWxlOlVJQmFy
QnV0dG9uSXRlbVN0eWxlQm9yZGVyZWQgdGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihjbGVh
cjopXSBhdXRvcmVsZWFzZV07Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
Ci0gICAgW25hdmlnYXRpb25JdGVtIHNldFJpZ2h0QmFyQnV0dG9uSXRlbTpjbGVhckJ1dHRvbl07
Ci0KLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIFJldGFpblB0
cjxVSVBvcG92ZXJDb250cm9sbGVyPiBjb250cm9sbGVyID0gYWRvcHROUyhbW1VJUG9wb3ZlckNv
bnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQ29udGVudFZpZXdDb250cm9sbGVyOm5hdmlnYXRpb25D
b250cm9sbGVyLmdldCgpXSk7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
Ci0gICAgW3NlbGYgc2V0UG9wb3ZlckNvbnRyb2xsZXI6Y29udHJvbGxlci5nZXQoKV07Ci0KLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLSAoV0tEYXRlVGltZVBvcG92ZXJWaWV3Q29udHJvbGxlciAq
KXZpZXdDb250cm9sbGVyCi17Ci0gICAgcmV0dXJuIF92aWV3Q29udHJvbGxlci5nZXQoKTsKLX0K
LQotLSAodm9pZCljb250cm9sQmVnaW5FZGl0aW5nCi17Ci0gICAgaWYgKCFfcHJlc2VudGluZykg
ewotICAgICAgICBfcHJlc2VudGluZyA9IFlFUzsKLSAgICAgICAgW3NlbGYgcHJlc2VudFBvcG92
ZXJBbmltYXRlZDpOT107Ci0gICAgICAgIFtfdmlld0NvbnRyb2xsZXIuZ2V0KCkuaW5uZXJDb250
cm9sIGNvbnRyb2xCZWdpbkVkaXRpbmddOwotICAgICAgICAKLSAgICAgICAgaWYgKF92aWV3LmZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gSW5wdXRUeXBlOjpUaW1lIHx8
IF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gSW5wdXRUeXBl
OjpEYXRlVGltZUxvY2FsKSB7Ci0gICAgICAgICAgICBfcHJlc2VydmluZ0ZvY3VzID0gWUVTOwot
ICAgICAgICAgICAgW192aWV3IHByZXNlcnZlRm9jdXNdOwotICAgICAgICB9Ci0gICAgfQotfQot
Ci0tICh2b2lkKWNvbnRyb2xFbmRFZGl0aW5nCi17Ci0gICAgX3ByZXNlbnRpbmcgPSBOTzsKLSAg
ICBbc2VsZiBkaXNtaXNzUG9wb3ZlckFuaW1hdGVkOk5PXTsKLSAgICBbX3ZpZXdDb250cm9sbGVy
LmdldCgpLmlubmVyQ29udHJvbCBjb250cm9sRW5kRWRpdGluZ107Ci19Ci0KLS0gKFVJVmlldyAq
KWNvbnRyb2xWaWV3Ci17Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAodm9pZClzZXRIb3VyOihO
U0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51dGUKLXsKLSAgICBXS0RhdGVUaW1l
UGlja2VyICpkYXRlVGltZVBpY2tlciA9IChXS0RhdGVUaW1lUGlja2VyICopc2VsZi52aWV3Q29u
dHJvbGxlci5pbm5lckNvbnRyb2w7Ci0gICAgW2RhdGVUaW1lUGlja2VyIHNldEhvdXI6aG91ciBt
aW51dGU6bWludXRlXTsKLX0KLQotLSAoTlNTdHJpbmcgKiljYWxlbmRhclR5cGUKLXsKLSAgICBX
S0RhdGVUaW1lUGlja2VyICpkYXRlVGltZVBpY2tlciA9IChXS0RhdGVUaW1lUGlja2VyICopc2Vs
Zi52aWV3Q29udHJvbGxlci5pbm5lckNvbnRyb2w7Ci0gICAgcmV0dXJuIGRhdGVUaW1lUGlja2Vy
LmRhdGVQaWNrZXIuY2FsZW5kYXIuY2FsZW5kYXJJZGVudGlmaWVyOwotfQotCi0tIChkb3VibGUp
aG91cgotewotICAgIFdLRGF0ZVRpbWVQaWNrZXIgKmRhdGVUaW1lUGlja2VyID0gKFdLRGF0ZVRp
bWVQaWNrZXIgKilzZWxmLnZpZXdDb250cm9sbGVyLmlubmVyQ29udHJvbDsKLSAgICBOU0NhbGVu
ZGFyICpjYWxlbmRhciA9IFtOU0NhbGVuZGFyIGN1cnJlbnRDYWxlbmRhcl07Ci0gICAgTlNEYXRl
Q29tcG9uZW50cyAqY29tcG9uZW50cyA9IFtjYWxlbmRhciBjb21wb25lbnRzOihOU0NhbGVuZGFy
VW5pdEhvdXIpIGZyb21EYXRlOmRhdGVUaW1lUGlja2VyLmRhdGVQaWNrZXIuZGF0ZV07Ci0KLSAg
ICByZXR1cm4gW2NvbXBvbmVudHMgaG91cl07Ci19Ci0KLS0gKGRvdWJsZSltaW51dGUKLXsKLSAg
ICBXS0RhdGVUaW1lUGlja2VyICpkYXRlVGltZVBpY2tlciA9IChXS0RhdGVUaW1lUGlja2VyICop
c2VsZi52aWV3Q29udHJvbGxlci5pbm5lckNvbnRyb2w7Ci0gICAgTlNDYWxlbmRhciAqY2FsZW5k
YXIgPSBbTlNDYWxlbmRhciBjdXJyZW50Q2FsZW5kYXJdOwotICAgIE5TRGF0ZUNvbXBvbmVudHMg
KmNvbXBvbmVudHMgPSBbY2FsZW5kYXIgY29tcG9uZW50czooTlNDYWxlbmRhclVuaXRNaW51dGUp
IGZyb21EYXRlOmRhdGVUaW1lUGlja2VyLmRhdGVQaWNrZXIuZGF0ZV07Ci0KLSAgICByZXR1cm4g
W2NvbXBvbmVudHMgbWludXRlXTsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDk3MGM2ZGY5YzU4ZmUwNjliZWViNzVlNjdlZjQzYWRhZDQxYjY4N2QuLmQ0ZDM2
NmEyOTM5YjU3ZWVmYjBkNmVmZWUwZWVkYThkZDBlN2Q4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY4OCw3ICsxNjg4LDcgQEAK
IAkJQzE4MTczNjEyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTgxNzM2MDIwNTg0MjQ3MDBERkRB
NjUgLyogRGlzcGxheUxpbmsuaCAqLzsgfTsKIAkJQzFFMTIzQkEyMEExMTU3MzAwMjY0NkY0IC8q
IFBERkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLzsg
fTsKIAkJQzUxNzM4ODExMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTE3Mzg4MDEy
REY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLzsgfTsKLQkJQzU0MjU2
QjUxOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybUlucHV0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5
IC8qIFdLRm9ybUlucHV0Q29udHJvbC5oICovOyB9OworCQlDNTQyNTZCNTE4QkVDMThDMDBERTQx
NzkgLyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdLRGF0ZVRp
bWVJbnB1dENvbnRyb2wuaCAqLzsgfTsKIAkJQzU0MjU2QjcxOEJFQzE4QzAwREU0MTc5IC8qIFdL
Rm9ybVBlcmlwaGVyYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM1NDI1NkIxMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1QZXJpcGhlcmFsLmggKi87
IH07CiAJCUM1NDI1NkI4MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1Qb3BvdmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTQyNTZCMjE4QkVDMThC
MDBERTQxNzkgLyogV0tGb3JtUG9wb3Zlci5oICovOyB9OwogCQlDNTQyNTZCQTE4QkVDMThDMDBE
RTQxNzkgLyogV0tGb3JtU2VsZWN0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzU0MjU2QjQxOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybVNl
bGVjdENvbnRyb2wuaCAqLzsgfTsKQEAgLTUwMjMsOCArNTAyMyw4IEBACiAJCUMxRTEyM0I5MjBB
MTE1NzIwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQREZDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUyMzdGNUYxMjQ0MUNBMzAwNzgwNDcyIC8qIFdl
YkVkaXRvckNsaWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYkVkaXRvckNsaWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybUlucHV0Q29udHJvbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Zvcm1JbnB1dENvbnRyb2wuaDsgcGF0aCA9IGlv
cy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQzU0MjU2QjAxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybUlucHV0Q29udHJvbC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRm9ybUlucHV0Q29udHJvbC5t
bTsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5w
dXRDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRGF0ZVRpbWVJ
bnB1dENvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM1NDI1NkIwMThCRUMxOEIwMERFNDE3OSAv
KiBXS0RhdGVUaW1lSW5wdXRDb250cm9sLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9X
S0RhdGVUaW1lSW5wdXRDb250cm9sLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NTQyNTZCMTE4QkVDMThCMDBERTQxNzkgLyogV0tGb3JtUGVyaXBoZXJhbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Zvcm1QZXJpcGhlcmFsLmg7IHBhdGggPSBpb3MvZm9y
bXMvV0tGb3JtUGVyaXBoZXJhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTQy
NTZCMjE4QkVDMThCMDBERTQxNzkgLyogV0tGb3JtUG9wb3Zlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXS0Zvcm1Qb3BvdmVyLmg7IHBhdGggPSBpb3MvZm9ybXMvV0tGb3Jt
UG9wb3Zlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTQyNTZCMzE4QkVDMThC
MDBERTQxNzkgLyogV0tGb3JtUG9wb3Zlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFdLRm9ybVBvcG92ZXIubW07IHBhdGggPSBpb3MvZm9ybXMvV0tGb3JtUG9w
b3Zlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzNzMsMTQgKzgzNzMsMTQg
QEAKIAkJN0M2RTcwRjgxOEIyRDQ3RTAwRjI0RTJFIC8qIGNvY29hICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk0MTY4NEM0RjI0NjQzRDNGMDAxQ0U4RUQg
LyogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwICovLAotCQkJCTQxNjg0QzRFMjQ2NDND
ODEwMDFDRThFRCAvKiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oICovLAotCQkJCTQxNjg0
QzREMjQ2NDNCRkEwMDFDRThFRCAvKiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdl
cy5pbiAqLywKIAkJCQlDRDQ1NzBDQjI0NDBGQjJBMDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91
dGluZ0FyYml0cmF0b3IuY3BwICovLAogCQkJCUNENDU3MENBMjQ0MEZCMkEwMEEzRENFQiAvKiBB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5oICovLAogCQkJCUNEQTI5QTE5MUNCREJGNDEw
MDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmggKi8sCiAJCQkJQ0RBMjlBMUMxQ0JE
QkY1QjAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJ
CQkJQ0RBMjlBMTgxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0g
Ki8sCisJCQkJNDE2ODRDNEYyNDY0M0QzRjAwMUNFOEVEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVN
YW5hZ2VyLmNwcCAqLywKKwkJCQk0MTY4NEM0RTI0NjQzQzgxMDAxQ0U4RUQgLyogUmVtb3RlQ2Fw
dHVyZVNhbXBsZU1hbmFnZXIuaCAqLywKKwkJCQk0MTY4NEM0RDI0NjQzQkZBMDAxQ0U4RUQgLyog
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDE2ODRDNTAy
NDY0NTBGRDAwMUNFOEVEIC8qIFJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovLAogCQkJ
CTQxNjg0QzUxMjQ2NDUwRkQwMDFDRThFRCAvKiBSZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmgg
Ki8sCiAJCQkJQ0Q0OTFCMDUxRTcwRDA1RjAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyLmNwcCAqLywKQEAgLTk5NzIsNyArOTk3Miw2IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTJEN0RFQkUyMjEyNjlFNEIwMEI5RjczQyAvKiB1bmlmaWVkLXNv
dXJjZXMgKi8sCi0JCQkJMEZGMjRBMkIxODc5RTRCQzAwM0FCRjBEIC8qIFJlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlDRDQ1NzBEMDI0NDEwMTRB
MDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8sCiAJCQkJQ0Q0NTcwRDEyNDQxMDE0QjAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lv
blJvdXRpbmdBcmJpdHJhdG9yUHJveHlNZXNzYWdlcy5oICovLAogCQkJCUNENDU3MEQyMjQ0MTAx
NEIwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5TWVzc2FnZXNS
ZXBsaWVzLmggKi8sCkBAIC0xMDA1NCw2ICsxMDA1Myw3IEBACiAJCQkJQ0RENTM1NzEyNDBEREUw
NjAwRjdCOEM0IC8qIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKIAkJCQlDREQ1MzU3MjI0MERERTA2MDBGN0I4QzQgLyogUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHlNZXNzYWdlcy5oICovLAogCQkJCUNERDUzNTc3MjQwRERFMDcwMEY3QjhDNCAvKiBSZW1vdGVB
dWRpb1Nlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCTBGRjI0QTJCMTg3OUU0
QkMwMDNBQkYwRCAvKiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCiAJCQkJQ0RBQzIwRjIyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJQ0RBQzIwRjMyM0ZDMzgzQTAwMjFERUUz
IC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJQ0RBQzIwRUUyM0ZD
MzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oICov
LApAQCAtMTAyNTUsNiArMTAyNTUsOCBAQAogCQkJCUM1RkExRUQyMThFMTA2MjIwMEIzRjQwMiAv
KiBXS0FpclBsYXlSb3V0ZVBpY2tlci5tbSAqLywKIAkJCQkyRTk0RkMxNDIwMzUxQTZEMDA5NzRC
QTAgLyogV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIuaCAqLywKIAkJCQkyRTk0RkMxNTIwMzUx
QTZEMDA5NzRCQTAgLyogV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0gKi8sCisJCQkJQzU0
MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaCAqLywKKwkJ
CQlDNTQyNTZCMDE4QkVDMThCMDBERTQxNzkgLyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbSAq
LywKIAkJCQlBNThCNkYwNjE4RkNBNzMzMDA4Q0JBNTMgLyogV0tGaWxlVXBsb2FkUGFuZWwuaCAq
LywKIAkJCQlBNThCNkYwNzE4RkNBNzMzMDA4Q0JBNTMgLyogV0tGaWxlVXBsb2FkUGFuZWwubW0g
Ki8sCiAJCQkJMkUxNkI2Q0QyMDE3QjdBQzAwODk5NkQ2IC8qIFdLRm9jdXNlZEZvcm1Db250cm9s
Vmlldy5oICovLApAQCAtMTAyNjMsOCArMTAyNjUsNiBAQAogCQkJCUU1Q0IwN0RCMjBFMTY3OEYw
MDIyQzE4MyAvKiBXS0Zvcm1Db2xvckNvbnRyb2wubW0gKi8sCiAJCQkJRTU0OEVCQ0YyMTAxNUYw
RTAwQkUzQzMyIC8qIFdLRm9ybUNvbG9yUGlja2VyLmggKi8sCiAJCQkJRTU0OEVCRDAyMTAxNUYw
RTAwQkUzQzMyIC8qIFdLRm9ybUNvbG9yUGlja2VyLm1tICovLAotCQkJCUM1NDI1NkFGMThCRUMx
OEIwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wuaCAqLywKLQkJCQlDNTQyNTZCMDE4QkVD
MThCMDBERTQxNzkgLyogV0tGb3JtSW5wdXRDb250cm9sLm1tICovLAogCQkJCUM1NDI1NkIxMThC
RUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1QZXJpcGhlcmFsLmggKi8sCiAJCQkJQ0U3MEVFNUMyMjQ0
MkJEMDAwRTBBRjBGIC8qIFdLRm9ybVBlcmlwaGVyYWxCYXNlLmggKi8sCiAJCQkJQ0U3MEVFNUEy
MjQ0MkJCMzAwRTBBRjBGIC8qIFdLRm9ybVBlcmlwaGVyYWxCYXNlLm1tICovLApAQCAtMTE1MTUs
NiArMTE1MTUsNyBAQAogCQkJCTM3QTcwOUE3MUUzRUEwRkQwMENBNTk2OSAvKiBXS0RhdGFEZXRl
Y3RvclR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0E3MDlBOTFFM0VBNDBDMDBDQTU5Njkg
LyogV0tEYXRhRGV0ZWN0b3JUeXBlc0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTk0
RkMxNjIwMzUxQTZEMDA5NzRCQTAgLyogV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUM1NDI1NkI1MThCRUMxOEMwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5w
dXRDb250cm9sLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzdFQUQ0NTE3RTJDNTFBMDAyRDE5M0Qg
LyogV0tEZWNsYXJhdGlvblNwZWNpZmllcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0NDgxNTY0
MjM4NzgyMDAwMDk4MjY1NyAvKiBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1QzM1OUMwRDIxNTQ3MzlGMDA5RTc5NDggLyogV0tEZXByZWNhdGVkLmgg
aW4gSGVhZGVycyAqLywKQEAgLTExNTQ3LDcgKzExNTQ4LDYgQEAKIAkJCQkyRTE2QjZDRjIwMTdC
N0FEMDA4OTk2RDYgLyogV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNUNCMDdEQzIwRTE2NzhGMDAyMkMxODMgLyogV0tGb3JtQ29sb3JDb250cm9sLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFNTQ4RUJEMTIxMDE1RjBFMDBCRTNDMzIgLyogV0tGb3JtQ29sb3JQ
aWNrZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUM1NDI1NkI1MThCRUMxOEMwMERFNDE3OSAvKiBX
S0Zvcm1JbnB1dENvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NDI1NkI3MThCRUMxOEMw
MERFNDE3OSAvKiBXS0Zvcm1QZXJpcGhlcmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTcwRUU1
RDIyNDQyQkQwMDBFMEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUM1NDI1NkI4MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1Qb3BvdmVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTEyNjg1LDcgKzEyNjg1LDYgQEAKIAkJCQkyRDkyQTc3QjIxMkI2QTcxMDBG
NDkzRkQgLyogQXJndW1lbnRDb2RlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRFQjFEMkUy
MTI3NDczNjAwOTMzOTA2IC8qIEFyZ3VtZW50Q29kZXJzQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQ5MkE3N0MyMTJCNkE3MTAwRjQ5M0ZEIC8qIEF0dGFjaG1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJMEZGMjRBMkQxODc5RTRCQzAwM0FCRjBEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENDU3MEQ0MjQ0
MTFEMEYwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDRDdDRjM2MTI0NDRDQ0E2MDAzQkM0RDUgLyogQXVkaW9TZXNzaW9uUm91
dGluZ0FyYml0cmF0b3JQcm94eUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q0NTcwRDMy
NDQxMTNCNTAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjc3NCw2ICsxMjc3Myw3IEBACiAJ
CQkJMUEwQzIyN0YyNDUxMTMwQTAwRUQ2MTREIC8qIFF1aWNrTG9va1RodW1ibmFpbGluZ1NvZnRM
aW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEwQzIyNUUyNDM1NzVDRDAwRUQ2MTREIC8qIFF1
aWNrTG9va1RodW1ibmFpbExvYWRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlCMTIyOUNFMjNG
RjI1RjIwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRkYyNEEyRDE4NzlFNEJDMDAzQUJGMEQgLyogUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBQzIw
RjcyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREFDMjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDRDQ2NjE4MzI0MDEwQTY3MDA0N0NBMzUgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399235</attachid>
            <date>2020-05-12 20:29:43 -0700</date>
            <delta_ts>2020-05-12 21:56:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211825-20200512202927.patch</filename>
            <type>text/plain</type>
            <size>63325</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiNjRkMjljZmRhYWQ3ZTUy
MGIwM2FkYjg3NWRhNjE1ZGYzYjJiYWYuLmRiNDk4MzNlYTIzYTkwMTQyYjIzNmZlYzgwN2JmYzZj
ZGJkZDUyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjAtMDUtMTIgIE1lZ2FuIEdh
cmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgRGF0ZS9U
aW1lIHBvcG92ZXJzIHRvIGNvbnRleHRNZW51cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTgyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgRGF0ZS9UaW1lIHBpY2tlciB0byB1c2Ug
VUlDb250ZXh0TWVudXMgaW5zdGVhZCBvZiBwb3BvdmVycy4KKyAgICAgICAgUmVtb3ZlZCBhbGwg
dGhlIHVubmVkZWQgcG9wb3ZlciBjb2RlLgorICAgICAgICBSZW5hbWVkIFdLRm9ybUlucHV0Q29u
dHJvbCB0byBXS0RhdGVUaW1lSW5wdXRDb250cm9sIGJlY2F1c2UgaXQgd2FzIG9ubHkgdXNlZAor
ICAgICAgICBmb3IgZGF0ZSBhbmQgdGltZSBjb250cm9scywgdW5uZWNjZXNzYXJ5IGFic3RyYWN0
aW9uLgorICAgICAgICBXZSBuZWVkIHRvIGVuc3VyZSB0aGUgcG9pc2l0aW9uIGluZm9ybWF0aW9u
IGlzIHVwIHRvIGRhdGUgYmVmb3JlIHByZXNlbnRpbmcKKyAgICAgICAgdGhlIGNvbnRleHQgbWVu
dSwgb3IgdGhlIHBvc2l0aW9uIGl0IHdpbGwgYmUgcHJlc2VudGVkIGZyb20gY2FuIGJlIHN0YWxl
LgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG91
bGRTaG93QXV0b21hdGljS2V5Ym9hcmRVSUlnbm9yaW5nSW5wdXRNb2RlXSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgcmVxdWlyZXNBY2Nlc3NvcnlWaWV3XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX3VwZGF0ZUFjY2Vzc29yeV0pOgorICAgICAgICAobWF5Q29udGFpblNlbGVjdGFi
bGVUZXh0KToKKyAgICAgICAgKGNyZWF0ZUlucHV0UGVyaXBoZXJhbFdpdGhWaWV3KToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBpbnB1dExhYmVsVGV4dF0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9yZW1vdmVDb250ZXh0TWVudVZpZXdJZlBvc3NpYmxlXSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgaW5wdXRMYWJlbFRleHRGb3JWaWV3Q29udHJvbGxlcjpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBmb3JtSW5wdXRDb250cm9sXSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgc2V0VGltZVBpY2tlclZhbHVlVG9Ib3VyOm1pbnV0ZTpdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyB0aW1lUGlja2VyVmFsdWVIb3VyXSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgdGltZVBpY2tlclZhbHVlTWludXRlXSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmguCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLm1tOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5tbS4KKyAg
ICAgICAgKC1bV0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXIgaW5pdF0pOgorICAg
ICAgICAoLVtXS0RhdGVUaW1lQ29udGV4dE1lbnVWaWV3Q29udHJvbGxlciBwcmVmZXJyZWRDb250
ZW50U2l6ZV0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGluaXRXaXRoVmlldzpkYXRl
UGlja2VyTW9kZTpdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBjb250ZXh0TWVudUlu
dGVyYWN0aW9uOnByZXZpZXdGb3JIaWdobGlnaHRpbmdNZW51V2l0aENvbmZpZ3VyYXRpb246XSk6
CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgX2NvbnRleHRNZW51SW50ZXJhY3Rpb246c3R5
bGVGb3JNZW51V2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNr
ZXIgY29udGV4dE1lbnVJbnRlcmFjdGlvbjpjb25maWd1cmF0aW9uRm9yTWVudUF0TG9jYXRpb246
XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgY29udGV4dE1lbnVJbnRlcmFjdGlvbjp3
aWxsRW5kRm9yQ29uZmlndXJhdGlvbjphbmltYXRvcjpdKToKKyAgICAgICAgKC1bV0tEYXRlVGlt
ZVBpY2tlciByZW1vdmVDb250ZXh0TWVudUludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLRGF0
ZVRpbWVQaWNrZXIgZW5zdXJlQ29udGV4dE1lbnVJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtX
S0RhdGVUaW1lUGlja2VyIHNob3dEYXRlVGltZVBpY2tlcl0pOgorICAgICAgICAoLVtXS0RhdGVU
aW1lUGlja2VyIHJlc2V0Ol0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGNhbGVuZGFy
VHlwZV0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV0tEYXRlVGltZVBpY2tlciBzZXREYXRlVGltZVBpY2tlclRvSW5pdGlhbFZhbHVlXSk6Cisg
ICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgY29udHJvbEJlZ2luRWRpdGluZ10pOgorICAgICAg
ICAoLVtXS0RhdGVUaW1lUGlja2VyIHZpZXdDb250cm9sbGVyXSk6CisgICAgICAgICgtW1dLRGF0
ZVRpbWVQaWNrZXIgY29udHJvbEVuZEVkaXRpbmddKToKKyAgICAgICAgKC1bV0tEYXRlVGltZUlu
cHV0Q29udHJvbCBpbml0V2l0aFZpZXc6XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVJbnB1dENv
bnRyb2wgc2V0VGltZVBpY2tlckhvdXI6bWludXRlOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1l
SW5wdXRDb250cm9sIGRhdGVUaW1lUGlja2VyQ2FsZW5kYXJUeXBlXSk6CisgICAgICAgICgtW1dL
RGF0ZVRpbWVJbnB1dENvbnRyb2wgdGltZVBpY2tlclZhbHVlSG91cl0pOgorICAgICAgICAoLVtX
S0RhdGVUaW1lSW5wdXRDb250cm9sIHRpbWVQaWNrZXJWYWx1ZU1pbnV0ZV0pOgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTA1LTExICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1MgXSBzY3Jv
bGxpbmdjb29yZGluYXRvci9tYWMvbGF0Y2hpbmcvc2Nyb2xsaW5nLXNlbGVjdC1zaG91bGQtbm90
LWxhdGNoLW1haW5mcmFtZS5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncyBiL1NvdXJjZS9XZWJDb3Jl
L2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKaW5kZXggNzg0MTlkNTFlYWNkYTg4NTA3NzFi
ZTc5MzJlNmYyNWM4N2VmNDY2MC4uZjI1NDFmN2FlNjI1YTU4ZDFhNTA0ODViODFiNDg2OTc3YTkz
NjQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5ncworKysgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBA
IC0yMTEsOSArMjExLDYgQEAKIC8qIFRpdGxlIGZvciBmaWxlIGJ1dHRvbiB1c2VkIGluIEhUTUwg
Zm9ybXMgZm9yIG1lZGlhIGZpbGVzICovCiAiQ2hvb3NlIE1lZGlhIChTaW5nbGUpIiA9ICJDaG9v
c2UgTWVkaWEgKFNpbmdsZSkiOwogCi0vKiBDbGVhciBidXR0b24gaW4gZGF0ZSBpbnB1dCBwb3Bv
dmVyICovCi0iQ2xlYXIgQnV0dG9uIERhdGUgUG9wb3ZlciIgPSAiQ2xlYXIiOwotCiAvKiBtZW51
IGl0ZW0gaW4gUmVjZW50IFNlYXJjaGVzIG1lbnUgdGhhdCBlbXB0aWVzIG1lbnUncyBjb250ZW50
cyAqLwogIkNsZWFyIFJlY2VudCBTZWFyY2hlcyIgPSAiQ2xlYXIgUmVjZW50IFNlYXJjaGVzIjsK
IApAQCAtMTMyNyw2ICsxMzI0LDkgQEAKIC8qIEhUVFAgcmVzdWx0IGNvZGUgc3RyaW5nICovCiAi
cmVxdWVzdGVkIHJhbmdlIG5vdCBzYXRpc2ZpYWJsZSIgPSAicmVxdWVzdGVkIHJhbmdlIG5vdCBz
YXRpc2ZpYWJsZSI7CiAKKy8qIFJlc2V0IGJ1dHRvbiBpbiBkYXRlIGlucHV0IHBvcG92ZXIgKi8K
KyJSZXNldCBCdXR0b24gRGF0ZS9UaW1lIENvbnRleHQgTWVudSIgPSAiUmVzZXQiOworCiAvKiBI
VFRQIHJlc3VsdCBjb2RlIHN0cmluZyAqLwogInJlc2V0IGNvbnRlbnQiID0gInJlc2V0IGNvbnRl
bnQiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRT
UEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IGRk
NDc0MzQ4Y2Q4ZTVhZTQwMjQ3Y2MzZjg3MWFiNDUxMGY3OTAwMjMuLmJjMWMyNTA1MWQ0YWJkOWE4
MDk5NjI3YzA5NjFhYjk0M2JiYjcxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lv
cy9VSUtpdFNQSS5oCkBAIC0xMTUyLDEwICsxMTUyLDEyIEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhO
U0ludGVnZXIsIFVJV0tEb2N1bWVudFJlcXVlc3RGbGFncykgewogdHlwZWRlZiBOU19FTlVNKE5T
VUludGVnZXIsIF9VSUNvbnRleHRNZW51TGF5b3V0KSB7CiAgICAgX1VJQ29udGV4dE1lbnVMYXlv
dXRBY3Rpb25zT25seSA9IDEsCiAgICAgX1VJQ29udGV4dE1lbnVMYXlvdXRDb21wYWN0TWVudSA9
IDMsCisgICAgX1VJQ29udGV4dE1lbnVMYXlvdXRBdXRvbWF0aWMgPSAxMDAsCiB9OwogCiBAaW50
ZXJmYWNlIF9VSUNvbnRleHRNZW51U3R5bGUgOiBOU09iamVjdCA8TlNDb3B5aW5nPgogQHByb3Bl
cnR5IChub25hdG9taWMpIF9VSUNvbnRleHRNZW51TGF5b3V0IHByZWZlcnJlZExheW91dDsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGhhc0ludGVyYWN0aXZlUHJldmlldzsKICsgKGluc3Rh
bmNldHlwZSlkZWZhdWx0U3R5bGU7CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCAx
NjhmMWRiMTA2ZDU0YzI1MGQ3MDc0NWE0MmZhYjk0MGExOWJhZmRjLi5jNjkyNzlhNWZkNDM2NDA3
NDUwZmQwNDQwOTc3MjI1MGY1MWI3MWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MTUs
MTEgKzQxNSwxMSBAQCBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvcldLV2ViVmll
dy5tbQogCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLm1tCiBVSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCitVSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGaWxlVXBsb2FkUGFuZWwubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1c2VkRm9ybUNv
bnRyb2xWaWV3Lm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5tbQog
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBpY2tlci5tbQotVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUGVy
aXBoZXJhbEJhc2UubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUG9wb3Zlci5tbQogVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RDb250cm9sLm1tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXgg
ZGRiOWViMDI0YmRiMDBjYTI5MmRkZGI4MDBkYzQwNGRkOTk2ZjgwYi4uMmIzOWIxMGZhZDA0YTJh
NzQxY2QwMzFjMTJiMGJiMDRjZDIxYjhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMTAxLDcgKzEwMSw3
IEBAIHN0cnVjdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ7CiBAY2xhc3MgV0tDb250ZXh0TWVu
dUVsZW1lbnRJbmZvOwogQGNsYXNzIFdLRHJhd2luZ0Nvb3JkaW5hdG9yOwogQGNsYXNzIFdLRm9j
dXNlZEZvcm1Db250cm9sVmlldzsKLUBjbGFzcyBXS0Zvcm1JbnB1dENvbnRyb2w7CitAY2xhc3Mg
V0tEYXRlVGltZUlucHV0Q29udHJvbDsKIEBjbGFzcyBXS0Zvcm1JbnB1dFNlc3Npb247CiBAY2xh
c3MgV0tIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcjsKIEBjbGFzcyBXS01vdXNl
R2VzdHVyZVJlY29nbml6ZXI7CkBAIC01MzksNiArNTM5LDggQEAgRk9SX0VBQ0hfUFJJVkFURV9X
S0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJf
VklFVykKIC0gKEJPT0wpaGFzSGlkZGVuQ29udGVudEVkaXRhYmxlOwogLSAodm9pZClnZW5lcmF0
ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kOihXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZSljb21tYW5kOwogCistIChOU1N0cmluZyopaW5wdXRMYWJlbFRleHQ7CisKIC0gKHZvaWQp
cHJlc2VydmVGb2N1czsKIC0gKHZvaWQpcmVsZWFzZUZvY3VzOwogCkBAIC02MTUsNyArNjE3LDcg
QEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVO
VFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNTdHJpbmcgKnRleHRDb250ZW50VHlwZUZvclRlc3Rpbmc7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpzZWxlY3RGb3JtUG9wb3ZlclRpdGxlOwogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqZm9ybUlucHV0TGFiZWw7Ci1AcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLRm9ybUlucHV0Q29udHJvbCAqZm9ybUlucHV0
Q29udHJvbDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tEYXRlVGltZUlucHV0
Q29udHJvbCAqZm9ybUlucHV0Q29udHJvbDsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA0
YWRiZjhhYWE5NWQ2MGRlNWI3OTA4NGNlYjI5ODkyMmM2NDQ5NGRhLi4xYzY5N2JiYjk1MmIwZDZj
YTI4NzliNWE3ZGI5ZTU2YjcwZTYzYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTUwLDEwICs1MCwx
MCBAQAogI2ltcG9ydCAiV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLQ29udGV4dE1lbnVFbGVtZW50SW5mb1ByaXZhdGUuaCIKICNpbXBvcnQgIldLRGF0ZVBp
Y2tlclZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS0RhdGVUaW1lSW5wdXRDb250cm9sLmgi
CiAjaW1wb3J0ICJXS0RyYXdpbmdDb29yZGluYXRvci5oIgogI2ltcG9ydCAiV0tFcnJvci5oIgog
I2ltcG9ydCAiV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3LmgiCi0jaW1wb3J0ICJXS0Zvcm1JbnB1
dENvbnRyb2wuaCIKICNpbXBvcnQgIldLRm9ybVNlbGVjdENvbnRyb2wuaCIKICNpbXBvcnQgIldL
RnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVy
ZVJlY29nbml6ZXIuaCIKQEAgLTE5MDIsMTYgKzE5MDIsMTUgQEAgLSAoQk9PTClfc2hvdWxkU2hv
d0F1dG9tYXRpY0tleWJvYXJkVUlJZ25vcmluZ0lucHV0TW9kZQogICAgIHN3aXRjaCAoX2ZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKICAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpOb25lOgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRyYXdpbmc6CisgICAg
Y2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZToKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBl
OjpNb250aDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgorICAg
IGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6CiAgICAgICAgIHJldHVybiBOTzsKICAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpTZWxlY3Q6CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29sb3I6CiAjZW5kaWYKLSAgICBjYXNl
IFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1v
bnRoOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw6Ci0gICAgY2Fz
ZSBXZWJLaXQ6OklucHV0VHlwZTo6VGltZToKLSAgICAgICAgcmV0dXJuICFXZWJLaXQ6OmN1cnJl
bnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biAhX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uaXNSZWFkT25seTsKICAgICB9CkBAIC0yOTE0
LDYgKzI5MTMsMTAgQEAgLSAoQk9PTClyZXF1aXJlc0FjY2Vzc29yeVZpZXcKICAgICBzd2l0Y2gg
KF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlKSB7CiAgICAgY2FzZSBXZWJL
aXQ6OklucHV0VHlwZTo6Tm9uZToKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEcmF3aW5n
OgorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGU6CisgICAgY2FzZSBXZWJLaXQ6Oklu
cHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpNb250
aDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lOgogICAgICAgICByZXR1cm4gTk87
CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGV4dDoKICAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpQYXNzd29yZDoKQEAgLTI5MjYsMTIgKzI5MjksOCBAQCAtIChCT09MKXJlcXVpcmVz
QWNjZXNzb3J5VmlldwogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbnRlbnRFZGl0YWJs
ZToKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0QXJlYToKICAgICBjYXNlIFdlYktp
dDo6SW5wdXRUeXBlOjpTZWxlY3Q6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZToK
ICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZToKLSAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1v
bnRoOgotICAgIGNhc2UgV2ViS2l0OjogSW5wdXRUeXBlOjpXZWVrOgotICAgIGNhc2UgV2ViS2l0
OjpJbnB1dFR5cGU6OlRpbWU6CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6V2VlazoKICNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpD
b2xvcjoKICNlbmRpZgpAQCAtNDQwMiw4ICs0NDAxLDggQEAgLSAodm9pZClfdXBkYXRlQWNjZXNz
b3J5CiAKICAgICBzd2l0Y2ggKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBl
KSB7CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZToKLSAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpNb250aDoKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxv
Y2FsOgorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1vbnRoOgogICAgIGNhc2UgV2ViS2l0
OjpJbnB1dFR5cGU6OlRpbWU6CiAgICAgICAgIFthY2Nlc3NvcnlWaWV3IHNldENsZWFyVmlzaWJs
ZTpZRVNdOwogICAgICAgICByZXR1cm47CkBAIC01NzI5LDcgKzU3MjgsNiBAQCBzdGF0aWMgYm9v
bCBtYXlDb250YWluU2VsZWN0YWJsZVRleHQoV2ViS2l0OjpJbnB1dFR5cGUgdHlwZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIFRoZSBmb2xsb3dpbmcgdHlwZXMgbG9vayBhbmQgYmVo
YXZlIGxpa2UgYSB0ZXh0IGZpZWxkLgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbnRl
bnRFZGl0YWJsZToKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZToKICAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpFbWFpbDoKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBl
OjpOdW1iZXI6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TnVtYmVyUGFkOgpAQCAtNTcz
OSw2ICs1NzM3LDcgQEAgc3RhdGljIGJvb2wgbWF5Q29udGFpblNlbGVjdGFibGVUZXh0KFdlYktp
dDo6SW5wdXRUeXBlIHR5cGUpCiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGV4dDoKICAg
ICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0QXJlYToKICAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpVUkw6CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWU6CiAgICAg
Y2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6V2VlazoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtNTgwMSw4ICs1ODAwLDEzIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9y
bVBlcmlwaGVyYWw+PiBjcmVhdGVJbnB1dFBlcmlwaGVyYWxXaXRoVmlldyhXZWJLCiAgICAgY2Fz
ZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29sb3I6CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tG
b3JtQ29sb3JDb250cm9sIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlld10pOwogI2VuZGlmIC8vIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGU6
CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICBjYXNlIFdl
YktpdDo6SW5wdXRUeXBlOjpNb250aDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1l
OgorICAgICAgICByZXR1cm4gYWRvcHROUyhbW1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wgYWxsb2Nd
IGluaXRXaXRoVmlldzp2aWV3XSk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGFkb3B0
TlMoW1tXS0Zvcm1JbnB1dENvbnRyb2wgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3XSk7CisgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgfQogI2VuZGlmCiB9CkBAIC02NzUxLDYgKzY3NTUsMjAgQEAg
LSAodm9pZClzaGFyZVNoZWV0RGlkRGlzbWlzczooV0tTaGFyZVNoZWV0ICopc2hhcmVTaGVldAog
fQogI2VuZGlmCiAKKy0gKE5TU3RyaW5nICopaW5wdXRMYWJlbFRleHQKK3sKKyAgICBpZiAoIV9m
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmxhYmVsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmxhYmVsOworCisgICAgaWYgKCFfZm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbi5hcmlhTGFiZWwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gX2Zv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24uYXJpYUxhYmVsOworCisgICAgaWYgKCFfZm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbi50aXRsZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBfZm9jdXNl
ZEVsZW1lbnRJbmZvcm1hdGlvbi50aXRsZTsKKworICAgIHJldHVybiBfZm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbi5wbGFjZWhvbGRlcjsKK30KKwogI3ByYWdtYSBtYXJrIC0gVUlUZXh0SW5wdXRN
dWx0aURvY3VtZW50CiAKIC0gKEJPT0wpX3Jlc3RvcmVGb2N1c1dpdGhUb2tlbjooaWQgPE5TQ29w
eWluZywgTlNTZWN1cmVDb2Rpbmc+KXRva2VuCkBAIC03NjkyLDEwICs3NzEwLDE0IEBAIC0gKHZv
aWQpX3JlbW92ZUNvbnRleHRNZW51Vmlld0lmUG9zc2libGUKICAgICBpZiAoW19hY3Rpb25TaGVl
dEFzc2lzdGFudCBoYXNDb250ZXh0TWVudUludGVyYWN0aW9uXSkKICAgICAgICAgcmV0dXJuOwog
I2VuZGlmCi0gICAgLy8gYW5kIGZvciB0aGUgZmlsZSB1cGxvYWQgcGFuZWwuCisgICAgLy8gYW5k
IGZvciB0aGUgZmlsZSB1cGxvYWQgcGFuZWwuLi4KICAgICBpZiAoX2ZpbGVVcGxvYWRQYW5lbCkK
ICAgICAgICAgcmV0dXJuOwogICAgIAorICAgIC8vIGFuZCBmb3IgdGhlIGRhdGUvdGltZSBwaWNr
ZXIuCisgICAgaWYgKFtzZWxmIGZvcm1JbnB1dENvbnRyb2xdKQorICAgICAgICByZXR1cm47Cisg
ICAgCiAgICAgW3N0ZDo6ZXhjaGFuZ2UoX2NvbnRleHRNZW51SGludENvbnRhaW5lclZpZXcsIG5p
bCkgcmVtb3ZlRnJvbVN1cGVydmlld107CiB9CiAKQEAgLTgzMTEsMTYgKzgzMzMsNyBAQCAtIChV
SVZpZXcgKilpbnB1dENvbnRleHRWaWV3Rm9yVmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJk
Vmlld0NvbnRyb2xsZXIgKiljbwogCiAtIChOU1N0cmluZyAqKWlucHV0TGFiZWxUZXh0Rm9yVmll
d0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCiB7
Ci0gICAgaWYgKCFfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5sYWJlbC5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5sYWJlbDsKLQotICAgIGlm
ICghX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uYXJpYUxhYmVsLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmFyaWFMYWJlbDsKLQotICAgIGlm
ICghX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24udGl0bGUuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24udGl0bGU7Ci0KLSAgICByZXR1cm4gX2Zv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24ucGxhY2Vob2xkZXI7CisgICAgcmV0dXJuIFtzZWxmIGlu
cHV0TGFiZWxUZXh0XTsKIH0KIAogLSAoTlNTdHJpbmcgKilpbml0aWFsVmFsdWVGb3JWaWV3Q29u
dHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKQEAgLTg2
MTIsMTAgKzg2MjUsMTAgQEAgLSAodm9pZClfZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNo
b3RGb3JUZXN0aW5nOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbgogICAgIGFjdGlvbigpOwogfQog
Ci0tIChXS0Zvcm1JbnB1dENvbnRyb2wgKilmb3JtSW5wdXRDb250cm9sCistIChXS0RhdGVUaW1l
SW5wdXRDb250cm9sICopZm9ybUlucHV0Q29udHJvbAogewotICAgIGlmIChbX2lucHV0UGVyaXBo
ZXJhbCBpc0tpbmRPZkNsYXNzOldLRm9ybUlucHV0Q29udHJvbC5jbGFzc10pCi0gICAgICAgIHJl
dHVybiAoV0tGb3JtSW5wdXRDb250cm9sICopX2lucHV0UGVyaXBoZXJhbC5nZXQoKTsKKyAgICBp
ZiAoW19pbnB1dFBlcmlwaGVyYWwgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lSW5wdXRDb250cm9s
LmNsYXNzXSkKKyAgICAgICAgcmV0dXJuIChXS0RhdGVUaW1lSW5wdXRDb250cm9sICopX2lucHV0
UGVyaXBoZXJhbC5nZXQoKTsKICAgICByZXR1cm4gbmlsOwogfQogCkBAIC04NjgxLDE2ICs4Njk0
LDE2IEBAIC0gKHZvaWQpc2V0VGltZVBpY2tlclZhbHVlVG9Ib3VyOihOU0ludGVnZXIpaG91ciBt
aW51dGU6KE5TSW50ZWdlciltaW51dGUKICAgICBpZiAoW19wcmVzZW50ZWRGdWxsU2NyZWVuSW5w
dXRWaWV3Q29udHJvbGxlciBpc0tpbmRPZkNsYXNzOltXS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxl
ciBjbGFzc11dKQogICAgICAgICBbKFdLVGltZVBpY2tlclZpZXdDb250cm9sbGVyICopX3ByZXNl
bnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVyLmdldCgpIHNldEhvdXI6aG91ciBtaW51
dGU6bWludXRlXTsKICNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKFtfaW5wdXRQ
ZXJpcGhlcmFsIGlzS2luZE9mQ2xhc3M6W1dLRm9ybUlucHV0Q29udHJvbCBjbGFzc11dKQotICAg
ICAgICBbKFdLRm9ybUlucHV0Q29udHJvbCAqKV9pbnB1dFBlcmlwaGVyYWwuZ2V0KCkgc2V0VGlt
ZVBpY2tlckhvdXI6aG91ciBtaW51dGU6bWludXRlXTsKKyAgICBpZiAoW19pbnB1dFBlcmlwaGVy
YWwgaXNLaW5kT2ZDbGFzczpbV0tEYXRlVGltZUlucHV0Q29udHJvbCBjbGFzc11dKQorICAgICAg
ICBbKFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wgKilfaW5wdXRQZXJpcGhlcmFsLmdldCgpIHNldFRp
bWVQaWNrZXJIb3VyOmhvdXIgbWludXRlOm1pbnV0ZV07CiAjZW5kaWYKIH0KIAogLSAoZG91Ymxl
KXRpbWVQaWNrZXJWYWx1ZUhvdXIKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlm
IChbX2lucHV0UGVyaXBoZXJhbCBpc0tpbmRPZkNsYXNzOltXS0Zvcm1JbnB1dENvbnRyb2wgY2xh
c3NdXSkKLSAgICAgICAgcmV0dXJuIFsoV0tGb3JtSW5wdXRDb250cm9sICopX2lucHV0UGVyaXBo
ZXJhbC5nZXQoKSB0aW1lUGlja2VyVmFsdWVIb3VyXTsKKyAgICBpZiAoW19pbnB1dFBlcmlwaGVy
YWwgaXNLaW5kT2ZDbGFzczpbV0tEYXRlVGltZUlucHV0Q29udHJvbCBjbGFzc11dKQorICAgICAg
ICByZXR1cm4gWyhXS0RhdGVUaW1lSW5wdXRDb250cm9sICopX2lucHV0UGVyaXBoZXJhbC5nZXQo
KSB0aW1lUGlja2VyVmFsdWVIb3VyXTsKICNlbmRpZgogICAgIHJldHVybiAtMTsKIH0KQEAgLTg2
OTgsOCArODcxMSw4IEBAIC0gKGRvdWJsZSl0aW1lUGlja2VyVmFsdWVIb3VyCiAtIChkb3VibGUp
dGltZVBpY2tlclZhbHVlTWludXRlCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBp
ZiAoW19pbnB1dFBlcmlwaGVyYWwgaXNLaW5kT2ZDbGFzczpbV0tGb3JtSW5wdXRDb250cm9sIGNs
YXNzXV0pCi0gICAgICAgIHJldHVybiBbKFdLRm9ybUlucHV0Q29udHJvbCAqKV9pbnB1dFBlcmlw
aGVyYWwuZ2V0KCkgdGltZVBpY2tlclZhbHVlTWludXRlXTsKKyAgICBpZiAoW19pbnB1dFBlcmlw
aGVyYWwgaXNLaW5kT2ZDbGFzczpbV0tEYXRlVGltZUlucHV0Q29udHJvbCBjbGFzc11dKQorICAg
ICAgICByZXR1cm4gWyhXS0RhdGVUaW1lSW5wdXRDb250cm9sICopX2lucHV0UGVyaXBoZXJhbC5n
ZXQoKSB0aW1lUGlja2VyVmFsdWVNaW51dGVdOwogI2VuZGlmCiAgICAgcmV0dXJuIC0xOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJ
bnB1dENvbnRyb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVU
aW1lSW5wdXRDb250cm9sLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODRiYzE0ODg1YjI1NjBhYjRiODQwOTc1NWY0
M2VmMDU4MzdlYWIzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLmgKQEAgLTAsMCArMSw0MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0ICJXS0Zvcm1QZXJp
cGhlcmFsQmFzZS5oIgorCitAY2xhc3MgV0tDb250ZW50VmlldzsKKworQGludGVyZmFjZSBXS0Rh
dGVUaW1lSW5wdXRDb250cm9sIDogV0tGb3JtUGVyaXBoZXJhbEJhc2UKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3OworQGVuZAorCitAaW50ZXJmYWNl
IFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wgKFdLVGVzdGluZykKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgTlNTdHJpbmcgKmRhdGVUaW1lUGlja2VyQ2FsZW5kYXJUeXBlOworQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBkb3VibGUgdGltZVBpY2tlclZhbHVlSG91cjsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgZG91YmxlIHRpbWVQaWNrZXJWYWx1ZU1pbnV0
ZTsKKy0gKHZvaWQpc2V0VGltZVBpY2tlckhvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJ
bnRlZ2VyKW1pbnV0ZTsKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlu
cHV0Q29udHJvbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVU
aW1lSW5wdXRDb250cm9sLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhYTdkMGExNGY1MzhiZjkxZjJjMmVlZWI3
NWE5NzdkMDE1Njg5ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbQpAQCAtMCwwICsxLDQ2OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tEYXRlVGltZUlucHV0
Q29udHJvbC5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCAiVXNlcklu
dGVyZmFjZUlkaW9tLmgiCisjaW1wb3J0ICJXS0NvbnRlbnRWaWV3LmgiCisjaW1wb3J0ICJXS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9y
dCA8VUlLaXQvVUlCYXJCdXR0b25JdGVtLmg+CisjaW1wb3J0IDxVSUtpdC9VSURhdGVQaWNrZXIu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitAaW50ZXJmYWNlIFdLRGF0
ZVRpbWVDb250ZXh0TWVudVZpZXdDb250cm9sbGVyIDogVUlWaWV3Q29udHJvbGxlciB7Cit9Cist
IChpZClpbml0OworQGVuZAorCitAaW50ZXJmYWNlIFdLRGF0ZVRpbWVQaWNrZXIgOiBOU09iamVj
dDxXS0Zvcm1Db250cm9sCisjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCissIFVJQ29udGV4dE1lbnVJ
bnRlcmFjdGlvbkRlbGVnYXRlCisjZW5kaWYKKz4geworICAgIFJldGFpblB0cjxVSURhdGVQaWNr
ZXI+IF9kYXRlUGlja2VyOworICAgIE5TU3RyaW5nICpfZm9ybWF0U3RyaW5nOworICAgIE5TU3Ry
aW5nICpfaW5pdGlhbFZhbHVlOworICAgIE5TVGltZUludGVydmFsIF9pbml0aWFsVmFsdWVBc051
bWJlcjsKKyAgICBCT09MIF9zaG91bGRSZW1vdmVUaW1lWm9uZUluZm9ybWF0aW9uOworICAgIEJP
T0wgX2lzVGltZUlucHV0OworICAgIFdLQ29udGVudFZpZXcqIF92aWV3OworICAgIENHUG9pbnQg
X2ludGVyYWN0aW9uUG9pbnQ7CisgICAgUmV0YWluUHRyPFdLRGF0ZVRpbWVDb250ZXh0TWVudVZp
ZXdDb250cm9sbGVyPiBfdmlld0NvbnRyb2xsZXI7CisjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCisg
ICAgUmV0YWluUHRyPFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbj4gX2RhdGVUaW1lQ29udGV4dE1l
bnVJbnRlcmFjdGlvbjsKKyNlbmRpZgorICAgIEJPT0wgX3ByZXNlbnRpbmc7CisgICAgQk9PTCBf
cHJlc2VydmluZ0ZvY3VzOworfQorLSAoaWQpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICop
dmlldyBkYXRlUGlja2VyTW9kZTooVUlEYXRlUGlja2VyTW9kZSltb2RlOworLSAoV0tEYXRlVGlt
ZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlcjsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmNhbGVuZGFyVHlwZTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgZG91YmxlIGhvdXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIGRvdWJsZSBtaW51dGU7CistICh2b2lkKXNldEhvdXI6KE5TSW50ZWdlcilob3Vy
IG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZTsKK0BlbmQKKworI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV0tGb3JtSW5wdXRDb250cm9sQWRkaXRp
b25zLm1tPgorI2VuZGlmCisKKworQGltcGxlbWVudGF0aW9uIFdLRGF0ZVRpbWVDb250ZXh0TWVu
dVZpZXdDb250cm9sbGVyCisKKy0gKGlkKWluaXQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAo
Q0dTaXplKXByZWZlcnJlZENvbnRlbnRTaXplCit7CisgICAgcmV0dXJuIFtzZWxmLnZpZXcgc3lz
dGVtTGF5b3V0U2l6ZUZpdHRpbmdTaXplOlVJTGF5b3V0Rml0dGluZ0NvbXByZXNzZWRTaXplXTsK
K30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tEYXRlVGltZVBpY2tlcgorCitzdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCBrRGF0ZUZvcm1hdFN0cmluZyA9IEAieXl5eS1NTS1kZCI7IC8vICIy
MDExLTAxLTI3Ii4KK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGtNb250aEZvcm1hdFN0cmluZyA9
IEAieXl5eS1NTSI7IC8vICIyMDExLTAxIi4KK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGtUaW1l
Rm9ybWF0U3RyaW5nID0gQCJISDptbSI7IC8vICIxMzo0NSIuCitzdGF0aWMgY29uc3QgTlNUaW1l
SW50ZXJ2YWwga01pbGxpc2Vjb25kc1BlclNlY29uZCA9IDEwMDA7CisKKyNpZiAhVVNFKEFQUExF
X0lOVEVSTkFMX1NESykgJiYgSEFWRShVSURBVEVQSUNLRVJfU1RZTEUpCistIChVSURhdGVQaWNr
ZXJTdHlsZSlkYXRlUGlja2VyU3R5bGUKK3sKKyAgICByZXR1cm4gVUlEYXRlUGlja2VyU3R5bGVB
dXRvbWF0aWM7Cit9CisjZW5kaWYKKworLSAoaWQpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3
ICopdmlldyBkYXRlUGlja2VyTW9kZTooVUlEYXRlUGlja2VyTW9kZSltb2RlCit7CisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgX3ZpZXcg
PSB2aWV3OworICAgIF9pbnRlcmFjdGlvblBvaW50ID0gW192aWV3IGxhc3RJbnRlcmFjdGlvbkxv
Y2F0aW9uXTsKKyAgICBfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbiA9IE5POworICAg
IF9pc1RpbWVJbnB1dCA9IE5POworICAgIHN3aXRjaCAodmlldy5mb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uLmVsZW1lbnRUeXBlKSB7CisgICAgY2FzZSBJbnB1dFR5cGU6OkRhdGU6CisgICAgICAg
IF9mb3JtYXRTdHJpbmcgPSBrRGF0ZUZvcm1hdFN0cmluZzsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBJbnB1dFR5cGU6Ok1vbnRoOgorICAgICAgICBfZm9ybWF0U3RyaW5nID0ga01vbnRoRm9y
bWF0U3RyaW5nOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElucHV0VHlwZTo6VGltZToKKyAg
ICAgICAgX2Zvcm1hdFN0cmluZyA9IGtUaW1lRm9ybWF0U3RyaW5nOworICAgICAgICBfaXNUaW1l
SW5wdXQgPSBZRVM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlVGlt
ZUxvY2FsOgorICAgICAgICBfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbiA9IFlFUzsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IAorICAgIF9kYXRlUGlja2VyID0gYWRvcHROUyhbW1VJRGF0ZVBpY2tlciBhbGxvY10gaW5pdF0p
OworCisgICAgW19kYXRlUGlja2VyIHNldERhdGVQaWNrZXJNb2RlOm1vZGVdOworICAgIFtfZGF0
ZVBpY2tlciBzZXRIaWRkZW46Tk9dOworICAgIAorI2lmIEhBVkUoVUlEQVRFUElDS0VSX1NUWUxF
KQorICAgIFtfZGF0ZVBpY2tlciBzZXRQcmVmZXJyZWREYXRlUGlja2VyU3R5bGU6W3NlbGYgZGF0
ZVBpY2tlclN0eWxlXV07CisjZW5kaWYKKyAgICBpZiAoW3NlbGYgc2hvdWxkUHJlc2VudEdyZWdv
cmlhbkNhbGVuZGFyOnZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbl0pCisgICAgICAgIF9k
YXRlUGlja2VyLmdldCgpLmNhbGVuZGFyID0gW05TQ2FsZW5kYXIgY2FsZW5kYXJXaXRoSWRlbnRp
ZmllcjpOU0NhbGVuZGFySWRlbnRpZmllckdyZWdvcmlhbl07CisgICAgCisgICAgW19kYXRlUGlj
a2VyIGFkZFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX2RhdGVDaGFuZ2VIYW5kbGVyOikg
Zm9yQ29udHJvbEV2ZW50czpVSUNvbnRyb2xFdmVudFZhbHVlQ2hhbmdlZF07CisgICAgCisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKyNpZiBVU0UoVUlDT05URVhUTUVOVSkKKworLSAoVUlUYXJnZXRl
ZFByZXZpZXcgKiljb250ZXh0TWVudUludGVyYWN0aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rp
b24gKilpbnRlcmFjdGlvbiBwcmV2aWV3Rm9ySGlnaGxpZ2h0aW5nTWVudVdpdGhDb25maWd1cmF0
aW9uOihVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KK3sKKyAgICBy
ZXR1cm4gW192aWV3IF9jcmVhdGVUYXJnZXRlZENvbnRleHRNZW51SGludFByZXZpZXdJZlBvc3Np
YmxlXTsKK30KKworLSAoX1VJQ29udGV4dE1lbnVTdHlsZSAqKV9jb250ZXh0TWVudUludGVyYWN0
aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBzdHlsZUZvck1lbnVX
aXRoQ29uZmlndXJhdGlvbjooVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0
aW9uCit7CisgICAgX1VJQ29udGV4dE1lbnVTdHlsZSAqc3R5bGUgPSBbX1VJQ29udGV4dE1lbnVT
dHlsZSBkZWZhdWx0U3R5bGVdOworICAgIHN0eWxlLmhhc0ludGVyYWN0aXZlUHJldmlldyA9IFlF
UzsKKyAgICBzdHlsZS5wcmVmZXJyZWRMYXlvdXQgPSBfVUlDb250ZXh0TWVudUxheW91dEF1dG9t
YXRpYzsKKyAgICByZXR1cm4gc3R5bGU7Cit9CisKKy0gKFVJQ29udGV4dE1lbnVDb25maWd1cmF0
aW9uICopY29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICop
aW50ZXJhY3Rpb24gY29uZmlndXJhdGlvbkZvck1lbnVBdExvY2F0aW9uOihDR1BvaW50KWxvY2F0
aW9uCit7CisgICAgcmV0dXJuIFtVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiBjb25maWd1cmF0
aW9uV2l0aElkZW50aWZpZXI6QCJfVUlEYXRlUGlja2VyQ29tcGFjdEVkaXRvciIgcHJldmlld1By
b3ZpZGVyOl57CisKKyAgICAgICAgX3ZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1dLRGF0ZVRp
bWVDb250ZXh0TWVudVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFJldGFp
blB0cjxVSU5hdmlnYXRpb25Db250cm9sbGVyPiBuYXZpZ2F0aW9uQ29udHJvbGxlciA9IGFkb3B0
TlMoW1tVSU5hdmlnYXRpb25Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFJvb3RWaWV3Q29udHJv
bGxlcjpfdmlld0NvbnRyb2xsZXIuZ2V0KCldKTsKKyAgICAgICAgTlNTdHJpbmcgKnJlc2V0U3Ry
aW5nID0gV0VCX1VJX1NUUklOR19LRVkoIlJlc2V0IiwgIlJlc2V0IEJ1dHRvbiBEYXRlL1RpbWUg
Q29udGV4dCBNZW51IiwgIlJlc2V0IGJ1dHRvbiBpbiBkYXRlIGlucHV0IGNvbnRleHQgbWVudSIp
OworCisgICAgICAgIFtfdmlld0NvbnRyb2xsZXIgc2V0VG9vbGJhckl0ZW1zOkBbIFtbVUlCYXJC
dXR0b25JdGVtIGFsbG9jXSBpbml0V2l0aEJhckJ1dHRvblN5c3RlbUl0ZW06VUlCYXJCdXR0b25T
eXN0ZW1JdGVtRmxleGlibGVTcGFjZSBwcmltYXJ5QWN0aW9uOm5pbF0sIFtbVUlCYXJCdXR0b25J
dGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOnJlc2V0U3RyaW5nIHN0eWxlOlVJQmFyQnV0dG9uSXRl
bVN0eWxlUGxhaW4gdGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihyZXNldDopXSBdXTsKKyAg
ICAgICAgW25hdmlnYXRpb25Db250cm9sbGVyIHNldFRvb2xiYXJIaWRkZW46Tk9dOworCisgICAg
ICAgIFtfdmlld0NvbnRyb2xsZXIgc2V0VmlldzpfZGF0ZVBpY2tlci5nZXQoKV07CisKKyAgICAg
ICAgTlNTdHJpbmcgKnRpdGxlVGV4dCA9IF92aWV3LmlucHV0TGFiZWxUZXh0OworICAgICAgICBp
ZiAoIVt0aXRsZVRleHQgaXNFcXVhbDpAIiJdKSB7CisgICAgICAgICAgICBVSUxhYmVsICp0aXRs
ZSA9IFtbVUlMYWJlbCBhbGxvY10gaW5pdF07CisgICAgICAgICAgICB0aXRsZS5mb250ID0gW1VJ
Rm9udCBwcmVmZXJyZWRGb250Rm9yVGV4dFN0eWxlOlVJRm9udFRleHRTdHlsZUZvb3Rub3RlXTsK
KyAgICAgICAgICAgIHRpdGxlLnRleHQgPSB0aXRsZVRleHQ7CisgICAgICAgICAgICB0aXRsZS50
ZXh0Q29sb3IgPSBbVUlDb2xvciBzZWNvbmRhcnlMYWJlbENvbG9yXTsKKyAgICAgICAgICAgIHRp
dGxlLnRleHRBbGlnbm1lbnQgPSBOU1RleHRBbGlnbm1lbnROYXR1cmFsOworICAgICAgICAgICAg
X3ZpZXdDb250cm9sbGVyLmdldCgpLm5hdmlnYXRpb25JdGVtLmxlZnRCYXJCdXR0b25JdGVtID0g
W1tVSUJhckJ1dHRvbkl0ZW0gYWxsb2NdIGluaXRXaXRoQ3VzdG9tVmlldzp0aXRsZV07CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgW25hdmlnYXRpb25Db250cm9sbGVyIHNldE5hdmlnYXRp
b25CYXJIaWRkZW46WUVTIGFuaW1hdGVkOk5PXTsKKyAgICAgICAgCisgICAgICAgIG5hdmlnYXRp
b25Db250cm9sbGVyLmdldCgpLm5hdmlnYXRpb25CYXIuYmFja2dyb3VuZENvbG9yID0gVUlDb2xv
ci5jbGVhckNvbG9yOworICAgICAgICBuYXZpZ2F0aW9uQ29udHJvbGxlci5nZXQoKS5uYXZpZ2F0
aW9uQmFyLnRyYW5zbHVjZW50ID0gTk87CisgICAgICAgIG5hdmlnYXRpb25Db250cm9sbGVyLmdl
dCgpLnRvb2xiYXIuYmFja2dyb3VuZENvbG9yID0gVUlDb2xvci5jbGVhckNvbG9yOworICAgICAg
ICBuYXZpZ2F0aW9uQ29udHJvbGxlci5nZXQoKS50b29sYmFyLnRyYW5zbHVjZW50ID0gTk87Cisg
ICAgICAgIHJldHVybiBuYXZpZ2F0aW9uQ29udHJvbGxlci5nZXQoKTsKKyAgICB9IGFjdGlvblBy
b3ZpZGVyOm5pbF07Cit9CisKKy0gKHZvaWQpY29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlDb250
ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gd2lsbEVuZEZvckNvbmZpZ3VyYXRpb246
KFVJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBhbmltYXRvcjooaWQ8
VUlDb250ZXh0TWVudUludGVyYWN0aW9uQW5pbWF0aW5nPilhbmltYXRvcgoreworICAgIFthbmlt
YXRvciBhZGRDb21wbGV0aW9uOl57CisgICAgICAgIFtfdmlldyBhY2Nlc3NvcnlEb25lXTsKKyAg
ICB9XTsKK30KKworLSAodm9pZClyZW1vdmVDb250ZXh0TWVudUludGVyYWN0aW9uCit7CisgICAg
aWYgKF9kYXRlVGltZUNvbnRleHRNZW51SW50ZXJhY3Rpb24pIHsKKyAgICAgICAgW192aWV3IHJl
bW92ZUludGVyYWN0aW9uOl9kYXRlVGltZUNvbnRleHRNZW51SW50ZXJhY3Rpb24uZ2V0KCldOwor
ICAgICAgICBfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uID0gbmlsOworICAgICAgICBb
X3ZpZXcgX3JlbW92ZUNvbnRleHRNZW51Vmlld0lmUG9zc2libGVdOworICAgIH0KK30KKworLSAo
dm9pZCllbnN1cmVDb250ZXh0TWVudUludGVyYWN0aW9uCit7CisgICAgaWYgKCFfZGF0ZVRpbWVD
b250ZXh0TWVudUludGVyYWN0aW9uKSB7CisgICAgICAgIF9kYXRlVGltZUNvbnRleHRNZW51SW50
ZXJhY3Rpb24gPSBhZG9wdE5TKFtbVUlDb250ZXh0TWVudUludGVyYWN0aW9uIGFsbG9jXSBpbml0
V2l0aERlbGVnYXRlOnNlbGZdKTsKKyAgICAgICAgW192aWV3IGFkZEludGVyYWN0aW9uOl9kYXRl
VGltZUNvbnRleHRNZW51SW50ZXJhY3Rpb24uZ2V0KCldOworICAgIH0KK30KKworLSAodm9pZClz
aG93RGF0ZVRpbWVQaWNrZXIKK3sKKyNpZiBIQVZFKFVJQ09OVEVYVE1FTlVfTE9DQVRJT04pCisg
ICAgW3NlbGYgZW5zdXJlQ29udGV4dE1lbnVJbnRlcmFjdGlvbl07CisgICAgW19kYXRlVGltZUNv
bnRleHRNZW51SW50ZXJhY3Rpb24gX3ByZXNlbnRNZW51QXRMb2NhdGlvbjpfaW50ZXJhY3Rpb25Q
b2ludF07CisjZW5kaWYKK30KKworI2VuZGlmCisKKy0gKHZvaWQpcmVzZXQ6KGlkKXNlbmRlcgor
eworICAgIFtzZWxmIHNldERhdGVUaW1lUGlja2VyVG9Jbml0aWFsVmFsdWVdOworICAgIFtfdmll
dyBwYWdlXS0+c2V0Rm9jdXNlZEVsZW1lbnRWYWx1ZShTdHJpbmcoKSk7Cit9CisKKy0gKE5TU3Ry
aW5nICopY2FsZW5kYXJUeXBlCit7CisgICAgcmV0dXJuIFtfZGF0ZVBpY2tlciBjYWxlbmRhcl0u
Y2FsZW5kYXJJZGVudGlmaWVyOworfQorCistIChkb3VibGUpaG91cgoreworICAgIE5TQ2FsZW5k
YXIgKmNhbGVuZGFyID0gW05TQ2FsZW5kYXIgY3VycmVudENhbGVuZGFyXTsKKyAgICBOU0RhdGVD
b21wb25lbnRzICpjb21wb25lbnRzID0gW2NhbGVuZGFyIGNvbXBvbmVudHM6TlNDYWxlbmRhclVu
aXRIb3VyIGZyb21EYXRlOltfZGF0ZVBpY2tlciBkYXRlXV07CisKKyAgICByZXR1cm4gW2NvbXBv
bmVudHMgaG91cl07Cit9CisKKy0gKGRvdWJsZSltaW51dGUKK3sKKyAgICBOU0NhbGVuZGFyICpj
YWxlbmRhciA9IFtOU0NhbGVuZGFyIGN1cnJlbnRDYWxlbmRhcl07CisgICAgTlNEYXRlQ29tcG9u
ZW50cyAqY29tcG9uZW50cyA9IFtjYWxlbmRhciBjb21wb25lbnRzOk5TQ2FsZW5kYXJVbml0TWlu
dXRlIGZyb21EYXRlOltfZGF0ZVBpY2tlciBkYXRlXV07CisKKyAgICByZXR1cm4gW2NvbXBvbmVu
dHMgbWludXRlXTsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgW19kYXRlUGlja2VyIHJl
bW92ZVRhcmdldDpzZWxmIGFjdGlvbjpOVUxMIGZvckNvbnRyb2xFdmVudHM6VUlDb250cm9sRXZl
bnRWYWx1ZUNoYW5nZWRdOworICAgIFtzZWxmIHJlbW92ZUNvbnRleHRNZW51SW50ZXJhY3Rpb25d
OworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAoQk9PTClzaG91bGRQcmVzZW50R3JlZ29y
aWFuQ2FsZW5kYXI6KGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mKW5vZGVJbmZvCit7
CisgICAgcmV0dXJuIG5vZGVJbmZvLmF1dG9maWxsRmllbGROYW1lID09IFdlYkNvcmU6OkF1dG9m
aWxsRmllbGROYW1lOjpDY0V4cE1vbnRoCisgICAgICAgIHx8IG5vZGVJbmZvLmF1dG9maWxsRmll
bGROYW1lID09IFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1lOjpDY0V4cAorICAgICAgICB8fCBu
b2RlSW5mby5hdXRvZmlsbEZpZWxkTmFtZSA9PSBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6
Q2NFeHBZZWFyOworfQorCistIChVSVZpZXcgKiljb250cm9sVmlldworeworICAgIHJldHVybiBf
ZGF0ZVBpY2tlci5nZXQoKTsKK30KKworLSAoTlNJbnRlZ2VyKV90aW1lWm9uZU9mZnNldEZyb21H
TVQ6KE5TRGF0ZSAqKWRhdGUKK3sKKyAgICBpZiAoIV9zaG91bGRSZW1vdmVUaW1lWm9uZUluZm9y
bWF0aW9uKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBbX2RhdGVQaWNrZXIuZ2V0
KCkudGltZVpvbmUgc2Vjb25kc0Zyb21HTVRGb3JEYXRlOmRhdGVdOworfQorCistIChOU1N0cmlu
ZyAqKV9zYW5pdGl6ZUlucHV0VmFsdWVGb3JGb3JtYXR0ZXI6KE5TU3RyaW5nICopdmFsdWUKK3sK
KyAgICAvLyBUaGUgInRpbWUiIGlucHV0IHR5cGUgbWF5IGhhdmUgc2Vjb25kcyBhbmQgbWlsbGlz
ZWNvbmRzIGluZm9ybWF0aW9uIHdoaWNoIHdlCisgICAgLy8ganVzdCBpZ25vcmUuIEZvciBleGFt
cGxlOiAiMDE6NTY6MjAuMzkxIiBpcyBzaG9ydGVuZWQgdG8ganVzdCAiMDE6NTYiLgorICAgIGlm
IChfaXNUaW1lSW5wdXQpCisgICAgICAgIHJldHVybiBbdmFsdWUgc3Vic3RyaW5nVG9JbmRleDpb
a1RpbWVGb3JtYXRTdHJpbmcgbGVuZ3RoXV07CisKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKKy0g
KHZvaWQpX2RhdGVDaGFuZ2VkU2V0QXNOdW1iZXIKK3sKKyAgICBOU0RhdGUgKmRhdGUgPSBbX2Rh
dGVQaWNrZXIgZGF0ZV07CisgICAgW192aWV3IHVwZGF0ZUZvY3VzZWRFbGVtZW50VmFsdWVBc051
bWJlcjooW2RhdGUgdGltZUludGVydmFsU2luY2UxOTcwXSArIFtzZWxmIF90aW1lWm9uZU9mZnNl
dEZyb21HTVQ6ZGF0ZV0pICoga01pbGxpc2Vjb25kc1BlclNlY29uZF07Cit9CisKKy0gKFJldGFp
blB0cjxOU0RhdGVGb3JtYXR0ZXI+KWRhdGVGb3JtYXR0ZXJGb3JQaWNrZXIKK3sKKyAgICBSZXRh
aW5QdHI8TlNMb2NhbGU+IGVuZ2xpc2hMb2NhbGUgPSBhZG9wdE5TKFtbTlNMb2NhbGUgYWxsb2Nd
IGluaXRXaXRoTG9jYWxlSWRlbnRpZmllcjpAImVuX1VTX1BPU0lYIl0pOworICAgIFJldGFpblB0
cjxOU0RhdGVGb3JtYXR0ZXI+IGRhdGVGb3JtYXR0ZXIgPSBhZG9wdE5TKFtbTlNEYXRlRm9ybWF0
dGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2RhdGVGb3JtYXR0ZXIgc2V0VGltZVpvbmU6X2RhdGVQ
aWNrZXIuZ2V0KCkudGltZVpvbmVdOworICAgIFtkYXRlRm9ybWF0dGVyIHNldERhdGVGb3JtYXQ6
X2Zvcm1hdFN0cmluZ107CisgICAgW2RhdGVGb3JtYXR0ZXIgc2V0TG9jYWxlOmVuZ2xpc2hMb2Nh
bGUuZ2V0KCldOworICAgIHJldHVybiBkYXRlRm9ybWF0dGVyOworfQorCistICh2b2lkKV9kYXRl
Q2hhbmdlZFNldEFzU3RyaW5nCit7CisgICAgLy8gRm9yY2UgRW5nbGlzaCBsb2NhbGUgYmVjYXVz
ZSB0aGF0IGlzIHdoYXQgSFRNTDUgdmFsdWUgcGFyc2luZyBleHBlY3RzLgorICAgIFJldGFpblB0
cjxOU0RhdGVGb3JtYXR0ZXI+IGRhdGVGb3JtYXR0ZXIgPSBbc2VsZiBkYXRlRm9ybWF0dGVyRm9y
UGlja2VyXTsKKyAgICBbX3ZpZXcgdXBkYXRlRm9jdXNlZEVsZW1lbnRWYWx1ZTpbZGF0ZUZvcm1h
dHRlciBzdHJpbmdGcm9tRGF0ZTpbX2RhdGVQaWNrZXIgZGF0ZV1dXTsKK30KKworLSAodm9pZClf
ZGF0ZUNoYW5nZWQKK3sKKyAgICAvLyBJbnRlcm5hbGx5LCBET01IVE1MSW5wdXRFbGVtZW50IHNl
dFZhbHVlQXMqIGVhY2ggdGFrZSBkaWZmZXJlbnQgdmFsdWVzIGZvcgorICAgIC8vIGRpZmZlcmVu
dCBkYXRlIHR5cGVzLiBJdCBpcyBzb21ldGltZXMgZWFzaWVyIHRvIHNldCB0aGUgZGF0ZSBpbiBk
aWZmZXJlbnQgd2F5czoKKyAgICAvLyAgIC0gdXNlIHNldFZhbHVlQXNTdHJpbmcgZm9yICJkYXRl
IiwgIm1vbnRoIiwgYW5kICJ0aW1lIi4KKyAgICAvLyAgIC0gdXNlIHNldFZhbHVlQXNOdW1iZXIg
Zm9yICJkYXRldGltZS1sb2NhbCIuCisgICAgaWYgKF9mb3JtYXRTdHJpbmcpCisgICAgICAgIFtz
ZWxmIF9kYXRlQ2hhbmdlZFNldEFzU3RyaW5nXTsKKyAgICBlbHNlCisgICAgICAgIFtzZWxmIF9k
YXRlQ2hhbmdlZFNldEFzTnVtYmVyXTsKK30KKworLSAodm9pZClfZGF0ZUNoYW5nZUhhbmRsZXI6
KGlkKXNlbmRlcgoreworICAgIFtzZWxmIF9kYXRlQ2hhbmdlZF07Cit9CisKKy0gKHZvaWQpc2V0
RGF0ZVRpbWVQaWNrZXJUb0luaXRpYWxWYWx1ZQoreworICAgIGlmIChbX2luaXRpYWxWYWx1ZSBp
c0VxdWFsOiBAIiJdKSB7CisgICAgICAgIFtfZGF0ZVBpY2tlciBzZXREYXRlOltOU0RhdGUgZGF0
ZV1dOworICAgICAgICBbc2VsZiBfZGF0ZUNoYW5nZWRdOworICAgIH0gZWxzZSBpZiAoX2Zvcm1h
dFN0cmluZykgeworICAgICAgICAvLyBDb252ZXJ0IHRoZSBzdHJpbmcgdmFsdWUgdG8gYSBkYXRl
IG9iamVjdCBmb3IgdGhlIGZpZWxkcyB3aGVyZSB3ZSBoYXZlIGEgZm9ybWF0IHN0cmluZy4KKyAg
ICAgICAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gZGF0ZUZvcm1hdHRlciA9IFtzZWxmIGRh
dGVGb3JtYXR0ZXJGb3JQaWNrZXJdOworICAgICAgICBOU0RhdGUgKnBhcnNlZERhdGUgPSBbZGF0
ZUZvcm1hdHRlciBkYXRlRnJvbVN0cmluZzpbc2VsZiBfc2FuaXRpemVJbnB1dFZhbHVlRm9yRm9y
bWF0dGVyOl9pbml0aWFsVmFsdWVdXTsKKyAgICAgICAgW19kYXRlUGlja2VyIHNldERhdGU6cGFy
c2VkRGF0ZSA/IHBhcnNlZERhdGUgOiBbTlNEYXRlIGRhdGVdXTsKKyAgICB9IGVsc2UgeworICAg
ICAgICAvLyBDb252ZXJ0IHRoZSBudW1iZXIgdmFsdWUgdG8gYSBkYXRlIG9iamVjdCBmb3IgdGhl
IGZpZWxkcyBhZmZlY3RlZCBieSB0aW1lem9uZXMuCisgICAgICAgIE5TVGltZUludGVydmFsIHNl
Y29uZHNTaW5jZTE5NzAgPSBfaW5pdGlhbFZhbHVlQXNOdW1iZXIgLyBrTWlsbGlzZWNvbmRzUGVy
U2Vjb25kOworICAgICAgICBOU0ludGVnZXIgdGltZVpvbmVPZmZzZXQgPSBbc2VsZiBfdGltZVpv
bmVPZmZzZXRGcm9tR01UOltOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6c2Vj
b25kc1NpbmNlMTk3MF1dOworICAgICAgICBOU1RpbWVJbnRlcnZhbCBhZGp1c3RlZFNlY29uZHNT
aW5jZTE5NzAgPSBzZWNvbmRzU2luY2UxOTcwIC0gdGltZVpvbmVPZmZzZXQ7CisgICAgICAgIFtf
ZGF0ZVBpY2tlciBzZXREYXRlOltOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6
YWRqdXN0ZWRTZWNvbmRzU2luY2UxOTcwXV07CisgICAgfQorfQorCistICh2b2lkKWNvbnRyb2xC
ZWdpbkVkaXRpbmcKK3sKKyAgICAKKyAgICBpZiAoX3ByZXNlbnRpbmcpCisgICAgICAgIHJldHVy
bjsKKyAgICBfcHJlc2VudGluZyA9IFlFUzsKKworICAgIGlmICghX3ByZXNlcnZpbmdGb2N1cyAm
JiAoX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9PSBJbnB1dFR5
cGU6OlRpbWUgfHwgX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9
PSBJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWwpKSB7CisgICAgICAgIFtfdmlldyBwcmVzZXJ2ZUZv
Y3VzXTsKKyAgICAgICAgX3ByZXNlcnZpbmdGb2N1cyA9IFlFUzsKKyAgICB9CisgICAgCisgICAg
Ly8gU2V0IHRoZSB0aW1lIHpvbmUgaW4gY2FzZSBpdCBjaGFuZ2VkLgorICAgIF9kYXRlUGlja2Vy
LmdldCgpLnRpbWVab25lID0gW05TVGltZVpvbmUgbG9jYWxUaW1lWm9uZV07CisKKyAgICAvLyBD
dXJyZW50bHkgbm8gdmFsdWUgZm9yIHRoZSA8aW5wdXQ+LiBTdGFydCB0aGUgcGlja2VyIHdpdGgg
dGhlIGN1cnJlbnQgdGltZS4KKyAgICAvLyBBbHNvLCB1cGRhdGUgdGhlIGFjdHVhbCA8aW5wdXQ+
IHZhbHVlLgorICAgIF9pbml0aWFsVmFsdWUgPSBfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uLnZhbHVlOworICAgIF9pbml0aWFsVmFsdWVBc051bWJlciA9IF92aWV3LmZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24udmFsdWVBc051bWJlcjsKKyAgICBbc2VsZiBzZXREYXRlVGltZVBpY2tl
clRvSW5pdGlhbFZhbHVlXTsKKyAgICAKKyAgICBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0IHBvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHsgV2ViQ29yZTo6SW50UG9pbnQo
X3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbikg
fTsKKyAgICBbX3ZpZXcgZG9BZnRlclBvc2l0aW9uSW5mb3JtYXRpb25VcGRhdGU6XihXZWJLaXQ6
OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGludGVyYWN0aW9uSW5mb3JtYXRpb24p
IHsKKyAgICAgICAgW3NlbGYgc2hvd0RhdGVUaW1lUGlja2VyXTsKKyAgICB9IGZvclJlcXVlc3Q6
cG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3RdOworCit9CisKKy0gKHZvaWQpc2V0SG91cjooTlNJ
bnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlCit7CisgICAgTlNTdHJpbmcgKnRp
bWVTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiUuMmxkOiUuMmxkIiwgKGxv
bmcpaG91ciwgKGxvbmcpbWludXRlXTsKKyAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpbW3NlbGYg
ZGF0ZUZvcm1hdHRlckZvclBpY2tlcl0gZGF0ZUZyb21TdHJpbmc6dGltZVN0cmluZ11dOworICAg
IFtzZWxmIF9kYXRlQ2hhbmdlZF07Cit9CisKKy0gKFdLRGF0ZVRpbWVDb250ZXh0TWVudVZpZXdD
b250cm9sbGVyICopdmlld0NvbnRyb2xsZXIKK3sKKyAgICByZXR1cm4gX3ZpZXdDb250cm9sbGVy
LmdldCgpOworfQorCistICh2b2lkKWNvbnRyb2xFbmRFZGl0aW5nCit7CisgICAgX3ByZXNlbnRp
bmcgPSBOTzsKKyAgICBpZiAoX3ByZXNlcnZpbmdGb2N1cykgeworICAgICAgICBbX3ZpZXcgcmVs
ZWFzZUZvY3VzXTsKKyAgICAgICAgX3ByZXNlcnZpbmdGb2N1cyA9IE5POworICAgIH0KKyAgICBb
c2VsZiByZW1vdmVDb250ZXh0TWVudUludGVyYWN0aW9uXTsKK30KK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
VmlldzooV0tDb250ZW50VmlldyAqKXZpZXcKK3sKKyAgICBVSURhdGVQaWNrZXJNb2RlIG1vZGU7
CisKKyAgICBzd2l0Y2ggKHZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlw
ZSkgeworICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlOgorICAgICAgICBtb2RlID0gVUlEYXRlUGlj
a2VyTW9kZURhdGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlVGlt
ZUxvY2FsOgorICAgICAgICBtb2RlID0gVUlEYXRlUGlja2VyTW9kZURhdGVBbmRUaW1lOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIElucHV0VHlwZTo6VGltZToKKyAgICAgICAgbW9kZSA9IFVJ
RGF0ZVBpY2tlck1vZGVUaW1lOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElucHV0VHlwZTo6
TW9udGg6CisgICAgICAgIG1vZGUgPSAoVUlEYXRlUGlja2VyTW9kZSlVSURhdGVQaWNrZXJNb2Rl
WWVhckFuZE1vbnRoOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBbc2Vs
ZiByZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8
TlNPYmplY3QgPFdLRm9ybUNvbnRyb2w+PiBjb250cm9sOworICAgIGNvbnRyb2wgPSBhZG9wdE5T
KFtbV0tEYXRlVGltZVBpY2tlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXcgZGF0ZVBpY2tlck1v
ZGU6bW9kZV0pOworICAgIHJldHVybiBbc3VwZXIgaW5pdFdpdGhWaWV3OnZpZXcgY29udHJvbDpX
VEZNb3ZlKGNvbnRyb2wpXTsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tEYXRlVGlt
ZUlucHV0Q29udHJvbCAoV0tUZXN0aW5nKQorCistICh2b2lkKXNldFRpbWVQaWNrZXJIb3VyOihO
U0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51dGUKK3sKKyAgICBpZiAoW3NlbGYu
Y29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQaWNrZXIuY2xhc3NdKQorICAgICAgICBb
KFdLRGF0ZVRpbWVQaWNrZXIgKilzZWxmLmNvbnRyb2wgc2V0SG91cjpob3VyIG1pbnV0ZTptaW51
dGVdOworfQorCistIChOU1N0cmluZyAqKWRhdGVUaW1lUGlja2VyQ2FsZW5kYXJUeXBlCit7Cisg
ICAgaWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lUGlja2VyLmNsYXNz
XSkKKyAgICAgICAgcmV0dXJuIFsoV0tEYXRlVGltZVBpY2tlciAqKXNlbGYuY29udHJvbCBjYWxl
bmRhclR5cGVdOworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKGRvdWJsZSl0aW1lUGlja2VyVmFs
dWVIb3VyCit7CisgICAgaWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1l
UGlja2VyLmNsYXNzXSkKKyAgICAgICAgcmV0dXJuIFsoV0tEYXRlVGltZVBpY2tlciAqKXNlbGYu
Y29udHJvbCBob3VyXTsKKyAgICByZXR1cm4gLTE7Cit9CisKKy0gKGRvdWJsZSl0aW1lUGlja2Vy
VmFsdWVNaW51dGUKK3sKKyAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0
ZVRpbWVQaWNrZXIuY2xhc3NdKQorICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUGlja2VyICop
c2VsZi5jb250cm9sIG1pbnV0ZV07CisgICAgcmV0dXJuIC0xOworfQorCitAZW5kCisKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2NzVhMTI0YjllZjM5NmMwODBmMzhiZTY1OTZmYTczOGE3Y2M4NWIwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQot
I2ltcG9ydCAiV0tGb3JtUGVyaXBoZXJhbEJhc2UuaCIKLQotQGNsYXNzIFdLQ29udGVudFZpZXc7
Ci0KLUBpbnRlcmZhY2UgV0tGb3JtSW5wdXRDb250cm9sIDogV0tGb3JtUGVyaXBoZXJhbEJhc2UK
LS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3OwotQGVu
ZAotCi1AaW50ZXJmYWNlIFdLRm9ybUlucHV0Q29udHJvbCAoV0tUZXN0aW5nKQotQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqZGF0ZVRpbWVQaWNrZXJDYWxlbmRhclR5
cGU7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGRvdWJsZSB0aW1lUGlja2VyVmFs
dWVIb3VyOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBkb3VibGUgdGltZVBpY2tl
clZhbHVlTWludXRlOwotLSAodm9pZClzZXRUaW1lUGlja2VySG91cjooTlNJbnRlZ2VyKWhvdXIg
bWludXRlOihOU0ludGVnZXIpbWludXRlOwotQGVuZAotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0Zvcm1JbnB1dENvbnRyb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGb3JtSW5wdXRDb250cm9sLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTEw
MDlhOTRhMjNlZjA1YmVlNDM1MDM1MTk0MTg5MGZlZjFiMzY0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wubW0KKysrIC9kZXYvbnVsbApAQCAtMSw1MDIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV0tGb3JtSW5wdXRD
b250cm9sLmgiCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0jaW1wb3J0ICJVc2VySW50
ZXJmYWNlSWRpb20uaCIKLSNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIKLSNpbXBvcnQgIldLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5oIgotI2ltcG9ydCAiV0tGb3JtUG9wb3Zlci5oIgotI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0IDxVSUtpdC9VSUJhckJ1dHRvbkl0ZW0uaD4KLSNp
bXBvcnQgPFVJS2l0L1VJRGF0ZVBpY2tlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRT
dHJpbmdzLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7Ci0KLUBpbnRlcmZhY2UgV0tEYXRlVGltZVBvcG92ZXJWaWV3Q29udHJvbGxlciA6IFVJ
Vmlld0NvbnRyb2xsZXIgewotICAgIFJldGFpblB0cjxOU09iamVjdDxXS0Zvcm1Db250cm9sPj4g
X2lubmVyQ29udHJvbDsKLX0KLS0gKGlkKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZp
ZXcgZGF0ZVBpY2tlck1vZGU6KFVJRGF0ZVBpY2tlck1vZGUpZGF0ZVBpY2tlck1vZGU7Ci0tIChO
U09iamVjdDxXS0Zvcm1Db250cm9sPiAqKWlubmVyQ29udHJvbDsKLUBlbmQKLQotQGludGVyZmFj
ZSBXS0RhdGVUaW1lUG9wb3ZlciA6IFdLRm9ybVJvdGF0aW5nQWNjZXNzb3J5UG9wb3ZlcjxXS0Zv
cm1Db250cm9sPiB7Ci0gICAgUmV0YWluUHRyPFdLRGF0ZVRpbWVQb3BvdmVyVmlld0NvbnRyb2xs
ZXI+IF92aWV3Q29udHJvbGxlcjsKLSAgICBXS0NvbnRlbnRWaWV3ICpfdmlldzsKLSAgICBCT09M
IF9wcmVzZW50aW5nOwotICAgIEJPT0wgX3ByZXNlcnZpbmdGb2N1czsKLX0KLS0gKGlkKWluaXRX
aXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgZGF0ZVBpY2tlck1vZGU6KFVJRGF0ZVBpY2tl
ck1vZGUpbW9kZTsKLS0gKFdLRGF0ZVRpbWVQb3BvdmVyVmlld0NvbnRyb2xsZXIgKil2aWV3Q29u
dHJvbGxlcjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmNhbGVu
ZGFyVHlwZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgZG91YmxlIGhvdXI7Ci1A
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGRvdWJsZSBtaW51dGU7Ci0tICh2b2lkKXNl
dEhvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZTsKLUBlbmQKLQot
QGludGVyZmFjZSBXS0RhdGVUaW1lUGlja2VyIDogTlNPYmplY3Q8V0tGb3JtQ29udHJvbD4gewot
ICAgIFJldGFpblB0cjxVSURhdGVQaWNrZXI+IF9kYXRlUGlja2VyOwotICAgIE5TU3RyaW5nICpf
Zm9ybWF0U3RyaW5nOwotICAgIEJPT0wgX3Nob3VsZFJlbW92ZVRpbWVab25lSW5mb3JtYXRpb247
Ci0gICAgQk9PTCBfaXNUaW1lSW5wdXQ7Ci0gICAgV0tDb250ZW50VmlldyogX3ZpZXc7Ci19Ci0t
IChpZClpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3IGRhdGVQaWNrZXJNb2RlOihV
SURhdGVQaWNrZXJNb2RlKW1vZGU7Ci0tIChVSURhdGVQaWNrZXIgKilkYXRlUGlja2VyOwotCi1A
ZW5kCi0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRp
b25zL1dLRm9ybUlucHV0Q29udHJvbEFkZGl0aW9ucy5tbT4KLSNlbmRpZgotCi1AaW1wbGVtZW50
YXRpb24gV0tEYXRlVGltZVBpY2tlcgotCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBrRGF0ZUZv
cm1hdFN0cmluZyA9IEAieXl5eS1NTS1kZCI7IC8vICIyMDExLTAxLTI3Ii4KLXN0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IGtNb250aEZvcm1hdFN0cmluZyA9IEAieXl5eS1NTSI7IC8vICIyMDExLTAx
Ii4KLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGtUaW1lRm9ybWF0U3RyaW5nID0gQCJISDptbSI7
IC8vICIxMzo0NSIuCi1zdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwga01pbGxpc2Vjb25kc1Bl
clNlY29uZCA9IDEwMDA7Ci0KLS0gKFVJRGF0ZVBpY2tlciAqKWRhdGVQaWNrZXIKLXsKLSAgICBy
ZXR1cm4gX2RhdGVQaWNrZXIuZ2V0KCk7Ci19Ci0KLSNpZiAhVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykgJiYgSEFWRShVSURBVEVQSUNLRVJfU1RZTEUpCi0tIChVSURhdGVQaWNrZXJTdHlsZSlkYXRl
UGlja2VyU3R5bGUKLXsKLSAgICByZXR1cm4gVUlEYXRlUGlja2VyU3R5bGVBdXRvbWF0aWM7Ci19
Ci0jZW5kaWYKLQotLSAoaWQpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBkYXRl
UGlja2VyTW9kZTooVUlEYXRlUGlja2VyTW9kZSltb2RlCi17Ci0gICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfdmlldyA9IHZpZXc7Ci0g
ICAgX3Nob3VsZFJlbW92ZVRpbWVab25lSW5mb3JtYXRpb24gPSBOTzsKLSAgICBfaXNUaW1lSW5w
dXQgPSBOTzsKLSAgICBzd2l0Y2ggKHZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVt
ZW50VHlwZSkgewotICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlOgotICAgICAgICBfZm9ybWF0U3Ry
aW5nID0ga0RhdGVGb3JtYXRTdHJpbmc7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5wdXRU
eXBlOjpNb250aDoKLSAgICAgICAgX2Zvcm1hdFN0cmluZyA9IGtNb250aEZvcm1hdFN0cmluZzsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnB1dFR5cGU6OlRpbWU6Ci0gICAgICAgIF9mb3Jt
YXRTdHJpbmcgPSBrVGltZUZvcm1hdFN0cmluZzsKLSAgICAgICAgX2lzVGltZUlucHV0ID0gWUVT
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIElucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKLSAg
ICAgICAgX3Nob3VsZFJlbW92ZVRpbWVab25lSW5mb3JtYXRpb24gPSBZRVM7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAKLSAgICBfZGF0
ZVBpY2tlciA9IGFkb3B0TlMoW1tVSURhdGVQaWNrZXIgYWxsb2NdIGluaXRdKTsKLQotICAgIFtf
ZGF0ZVBpY2tlciBzZXREYXRlUGlja2VyTW9kZTptb2RlXTsKLSAgICBbX2RhdGVQaWNrZXIgc2V0
SGlkZGVuOk5PXTsKLSAgICAKLSNpZiBIQVZFKFVJREFURVBJQ0tFUl9TVFlMRSkKLSAgICBbX2Rh
dGVQaWNrZXIgc2V0UHJlZmVycmVkRGF0ZVBpY2tlclN0eWxlOltzZWxmIGRhdGVQaWNrZXJTdHls
ZV1dOwotI2VuZGlmCi0gICAgCi0gICAgYXV0byBzaXplID0gW19kYXRlUGlja2VyIHNpemVUaGF0
Rml0czpDR1NpemVNYWtlKHZpZXcuZnJhbWUuc2l6ZS53aWR0aCwgMCldOwotICAgIFtfZGF0ZVBp
Y2tlciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0KV07
Ci0gICAgCi0gICAgaWYgKFtzZWxmIHNob3VsZFByZXNlbnRHcmVnb3JpYW5DYWxlbmRhcjp2aWV3
LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb25dKQotICAgICAgICBfZGF0ZVBpY2tlci5nZXQoKS5j
YWxlbmRhciA9IFtOU0NhbGVuZGFyIGNhbGVuZGFyV2l0aElkZW50aWZpZXI6TlNDYWxlbmRhcklk
ZW50aWZpZXJHcmVnb3JpYW5dOwotICAgIAotICAgIFtfZGF0ZVBpY2tlciBhZGRUYXJnZXQ6c2Vs
ZiBhY3Rpb246QHNlbGVjdG9yKF9kYXRlQ2hhbmdlSGFuZGxlcjopIGZvckNvbnRyb2xFdmVudHM6
VUlDb250cm9sRXZlbnRWYWx1ZUNoYW5nZWRdOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0g
KE5TU3RyaW5nICopY2FsZW5kYXJUeXBlCi17Ci0gICAgcmV0dXJuIF9kYXRlUGlja2VyLmdldCgp
LmNhbGVuZGFyLmNhbGVuZGFySWRlbnRpZmllcjsKLX0KLQotLSAoZG91YmxlKWhvdXIKLXsKLSAg
ICBOU0NhbGVuZGFyICpjYWxlbmRhciA9IFtOU0NhbGVuZGFyIGN1cnJlbnRDYWxlbmRhcl07Ci0g
ICAgTlNEYXRlQ29tcG9uZW50cyAqY29tcG9uZW50cyA9IFtjYWxlbmRhciBjb21wb25lbnRzOk5T
Q2FsZW5kYXJVbml0SG91ciBmcm9tRGF0ZTpbX2RhdGVQaWNrZXIgZGF0ZV1dOwotCi0gICAgcmV0
dXJuIFtjb21wb25lbnRzIGhvdXJdOwotfQotCi0tIChkb3VibGUpbWludXRlCi17Ci0gICAgTlND
YWxlbmRhciAqY2FsZW5kYXIgPSBbTlNDYWxlbmRhciBjdXJyZW50Q2FsZW5kYXJdOwotICAgIE5T
RGF0ZUNvbXBvbmVudHMgKmNvbXBvbmVudHMgPSBbY2FsZW5kYXIgY29tcG9uZW50czpOU0NhbGVu
ZGFyVW5pdE1pbnV0ZSBmcm9tRGF0ZTpbX2RhdGVQaWNrZXIgZGF0ZV1dOwotCi0gICAgcmV0dXJu
IFtjb21wb25lbnRzIG1pbnV0ZV07Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtfZGF0
ZVBpY2tlciByZW1vdmVUYXJnZXQ6c2VsZiBhY3Rpb246TlVMTCBmb3JDb250cm9sRXZlbnRzOlVJ
Q29udHJvbEV2ZW50VmFsdWVDaGFuZ2VkXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0g
KEJPT0wpc2hvdWxkUHJlc2VudEdyZWdvcmlhbkNhbGVuZGFyOihjb25zdCBGb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uJilub2RlSW5mbwotewotICAgIHJldHVybiBub2RlSW5mby5hdXRvZmlsbEZp
ZWxkTmFtZSA9PSBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Q2NFeHBNb250aAotICAgICAg
ICB8fCBub2RlSW5mby5hdXRvZmlsbEZpZWxkTmFtZSA9PSBXZWJDb3JlOjpBdXRvZmlsbEZpZWxk
TmFtZTo6Q2NFeHAKLSAgICAgICAgfHwgbm9kZUluZm8uYXV0b2ZpbGxGaWVsZE5hbWUgPT0gV2Vi
Q29yZTo6QXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwWWVhcjsKLX0KLQotLSAoVUlWaWV3ICopY29u
dHJvbFZpZXcKLXsKLSAgICByZXR1cm4gX2RhdGVQaWNrZXIuZ2V0KCk7Ci19Ci0KLS0gKE5TSW50
ZWdlcilfdGltZVpvbmVPZmZzZXRGcm9tR01UOihOU0RhdGUgKilkYXRlCi17Ci0gICAgaWYgKCFf
c2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICByZXR1cm4gW19kYXRlUGlja2VyLmdldCgpLnRpbWVab25lIHNlY29uZHNGcm9tR01URm9yRGF0
ZTpkYXRlXTsKLX0KLQotLSAoTlNTdHJpbmcgKilfc2FuaXRpemVJbnB1dFZhbHVlRm9yRm9ybWF0
dGVyOihOU1N0cmluZyAqKXZhbHVlCi17Ci0gICAgLy8gVGhlICJ0aW1lIiBpbnB1dCB0eXBlIG1h
eSBoYXZlIHNlY29uZHMgYW5kIG1pbGxpc2Vjb25kcyBpbmZvcm1hdGlvbiB3aGljaCB3ZQotICAg
IC8vIGp1c3QgaWdub3JlLiBGb3IgZXhhbXBsZTogIjAxOjU2OjIwLjM5MSIgaXMgc2hvcnRlbmVk
IHRvIGp1c3QgIjAxOjU2Ii4KLSAgICBpZiAoX2lzVGltZUlucHV0KQotICAgICAgICByZXR1cm4g
W3ZhbHVlIHN1YnN0cmluZ1RvSW5kZXg6W2tUaW1lRm9ybWF0U3RyaW5nIGxlbmd0aF1dOwotCi0g
ICAgcmV0dXJuIHZhbHVlOwotfQotCi0tICh2b2lkKV9kYXRlQ2hhbmdlZFNldEFzTnVtYmVyCi17
Ci0gICAgTlNEYXRlICpkYXRlID0gW19kYXRlUGlja2VyIGRhdGVdOwotICAgIFtfdmlldyB1cGRh
dGVGb2N1c2VkRWxlbWVudFZhbHVlQXNOdW1iZXI6KFtkYXRlIHRpbWVJbnRlcnZhbFNpbmNlMTk3
MF0gKyBbc2VsZiBfdGltZVpvbmVPZmZzZXRGcm9tR01UOmRhdGVdKSAqIGtNaWxsaXNlY29uZHNQ
ZXJTZWNvbmRdOwotfQotCi0tIChSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPilkYXRlRm9ybWF0
dGVyRm9yUGlja2VyCi17Ci0gICAgUmV0YWluUHRyPE5TTG9jYWxlPiBlbmdsaXNoTG9jYWxlID0g
YWRvcHROUyhbW05TTG9jYWxlIGFsbG9jXSBpbml0V2l0aExvY2FsZUlkZW50aWZpZXI6QCJlbl9V
U19QT1NJWCJdKTsKLSAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBkYXRlRm9ybWF0dGVy
ID0gYWRvcHROUyhbW05TRGF0ZUZvcm1hdHRlciBhbGxvY10gaW5pdF0pOwotICAgIFtkYXRlRm9y
bWF0dGVyIHNldFRpbWVab25lOl9kYXRlUGlja2VyLmdldCgpLnRpbWVab25lXTsKLSAgICBbZGF0
ZUZvcm1hdHRlciBzZXREYXRlRm9ybWF0Ol9mb3JtYXRTdHJpbmddOwotICAgIFtkYXRlRm9ybWF0
dGVyIHNldExvY2FsZTplbmdsaXNoTG9jYWxlLmdldCgpXTsKLSAgICByZXR1cm4gZGF0ZUZvcm1h
dHRlcjsKLX0KLQotLSAodm9pZClfZGF0ZUNoYW5nZWRTZXRBc1N0cmluZwotewotICAgIC8vIEZv
cmNlIEVuZ2xpc2ggbG9jYWxlIGJlY2F1c2UgdGhhdCBpcyB3aGF0IEhUTUw1IHZhbHVlIHBhcnNp
bmcgZXhwZWN0cy4KLSAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBkYXRlRm9ybWF0dGVy
ID0gW3NlbGYgZGF0ZUZvcm1hdHRlckZvclBpY2tlcl07Ci0gICAgW192aWV3IHVwZGF0ZUZvY3Vz
ZWRFbGVtZW50VmFsdWU6W2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6W19kYXRlUGlja2Vy
IGRhdGVdXV07Ci19Ci0KLS0gKHZvaWQpX2RhdGVDaGFuZ2VkCi17Ci0gICAgLy8gSW50ZXJuYWxs
eSwgRE9NSFRNTElucHV0RWxlbWVudCBzZXRWYWx1ZUFzKiBlYWNoIHRha2UgZGlmZmVyZW50IHZh
bHVlcyBmb3IKLSAgICAvLyBkaWZmZXJlbnQgZGF0ZSB0eXBlcy4gSXQgaXMgc29tZXRpbWVzIGVh
c2llciB0byBzZXQgdGhlIGRhdGUgaW4gZGlmZmVyZW50IHdheXM6Ci0gICAgLy8gICAtIHVzZSBz
ZXRWYWx1ZUFzU3RyaW5nIGZvciAiZGF0ZSIsICJtb250aCIsIGFuZCAidGltZSIuCi0gICAgLy8g
ICAtIHVzZSBzZXRWYWx1ZUFzTnVtYmVyIGZvciAiZGF0ZXRpbWUtbG9jYWwiLgotICAgIGlmIChf
Zm9ybWF0U3RyaW5nKQotICAgICAgICBbc2VsZiBfZGF0ZUNoYW5nZWRTZXRBc1N0cmluZ107Ci0g
ICAgZWxzZQotICAgICAgICBbc2VsZiBfZGF0ZUNoYW5nZWRTZXRBc051bWJlcl07Ci19Ci0KLS0g
KHZvaWQpX2RhdGVDaGFuZ2VIYW5kbGVyOihpZClzZW5kZXIKLXsKLSAgICBbc2VsZiBfZGF0ZUNo
YW5nZWRdOwotfQotCi0tICh2b2lkKWNvbnRyb2xCZWdpbkVkaXRpbmcKLXsKLSAgICAvLyBTZXQg
dGhlIHRpbWUgem9uZSBpbiBjYXNlIGl0IGNoYW5nZWQuCi0gICAgX2RhdGVQaWNrZXIuZ2V0KCku
dGltZVpvbmUgPSBbTlNUaW1lWm9uZSBsb2NhbFRpbWVab25lXTsKLQotICAgIC8vIEN1cnJlbnRs
eSBubyB2YWx1ZSBmb3IgdGhlIDxpbnB1dD4uIFN0YXJ0IHRoZSBwaWNrZXIgd2l0aCB0aGUgY3Vy
cmVudCB0aW1lLgotICAgIC8vIEFsc28sIHVwZGF0ZSB0aGUgYWN0dWFsIDxpbnB1dD4gdmFsdWUu
Ci0gICAgTlNTdHJpbmcgKnZhbHVlID0gX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi52
YWx1ZTsKLSAgICBpZiAoX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi52YWx1ZS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgW19kYXRlUGlja2VyIHNldERhdGU6W05TRGF0ZSBkYXRlXV07Ci0g
ICAgICAgIFtzZWxmIF9kYXRlQ2hhbmdlZF07Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICAvLyBDb252ZXJ0IHRoZSBzdHJpbmcgdmFsdWUgdG8gYSBkYXRlIG9iamVjdCBmb3IgdGhlIGZp
ZWxkcyB3aGVyZSB3ZSBoYXZlIGEgZm9ybWF0IHN0cmluZy4KLSAgICBpZiAoX2Zvcm1hdFN0cmlu
ZykgewotICAgICAgICB2YWx1ZSA9IFtzZWxmIF9zYW5pdGl6ZUlucHV0VmFsdWVGb3JGb3JtYXR0
ZXI6dmFsdWVdOwotICAgICAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBkYXRlRm9ybWF0
dGVyID0gW3NlbGYgZGF0ZUZvcm1hdHRlckZvclBpY2tlcl07Ci0gICAgICAgIE5TRGF0ZSAqcGFy
c2VkRGF0ZSA9IFtkYXRlRm9ybWF0dGVyIGRhdGVGcm9tU3RyaW5nOnZhbHVlXTsKLSAgICAgICAg
W19kYXRlUGlja2VyIHNldERhdGU6cGFyc2VkRGF0ZSA/IHBhcnNlZERhdGUgOiBbTlNEYXRlIGRh
dGVdXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIENvbnZlcnQgdGhlIG51bWJl
ciB2YWx1ZSB0byBhIGRhdGUgb2JqZWN0IGZvciB0aGUgZmllbGRzIGFmZmVjdGVkIGJ5IHRpbWV6
b25lcy4KLSAgICBOU1RpbWVJbnRlcnZhbCBzZWNvbmRzU2luY2UxOTcwID0gX3ZpZXcuZm9jdXNl
ZEVsZW1lbnRJbmZvcm1hdGlvbi52YWx1ZUFzTnVtYmVyIC8ga01pbGxpc2Vjb25kc1BlclNlY29u
ZDsKLSAgICBOU0ludGVnZXIgdGltZVpvbmVPZmZzZXQgPSBbc2VsZiBfdGltZVpvbmVPZmZzZXRG
cm9tR01UOltOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6c2Vjb25kc1NpbmNl
MTk3MF1dOwotICAgIE5TVGltZUludGVydmFsIGFkanVzdGVkU2Vjb25kc1NpbmNlMTk3MCA9IHNl
Y29uZHNTaW5jZTE5NzAgLSB0aW1lWm9uZU9mZnNldDsKLSAgICBbX2RhdGVQaWNrZXIgc2V0RGF0
ZTpbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOmFkanVzdGVkU2Vjb25kc1Np
bmNlMTk3MF1dOwotfQotCi0tICh2b2lkKWNvbnRyb2xFbmRFZGl0aW5nCi17Ci19Ci0KLS0gKHZv
aWQpc2V0SG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlCi17Ci0g
ICAgTlNTdHJpbmcgKnRpbWVTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiUu
MmxkOiUuMmxkIiwgKGxvbmcpaG91ciwgKGxvbmcpbWludXRlXTsKLSAgICBbX2RhdGVQaWNrZXIg
c2V0RGF0ZTpbW3NlbGYgZGF0ZUZvcm1hdHRlckZvclBpY2tlcl0gZGF0ZUZyb21TdHJpbmc6dGlt
ZVN0cmluZ11dOwotICAgIFtzZWxmIF9kYXRlQ2hhbmdlZF07Ci19Ci0KLUBlbmQKLQotLy8gV0tG
b3JtSW5wdXRDb250cm9sCi1AaW1wbGVtZW50YXRpb24gV0tGb3JtSW5wdXRDb250cm9sCi0KLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3Ci17Ci0gICAg
VUlEYXRlUGlja2VyTW9kZSBtb2RlOwotCi0gICAgc3dpdGNoICh2aWV3LmZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKLSAgICBjYXNlIElucHV0VHlwZTo6RGF0ZToKLSAg
ICAgICAgbW9kZSA9IFVJRGF0ZVBpY2tlck1vZGVEYXRlOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIElucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKLSAgICAgICAgbW9kZSA9IFVJRGF0ZVBpY2tl
ck1vZGVEYXRlQW5kVGltZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnB1dFR5cGU6OlRp
bWU6Ci0gICAgICAgIG1vZGUgPSBVSURhdGVQaWNrZXJNb2RlVGltZTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJbnB1dFR5cGU6Ok1vbnRoOgotICAgICAgICBtb2RlID0gKFVJRGF0ZVBpY2tl
ck1vZGUpVUlEYXRlUGlja2VyTW9kZVllYXJBbmRNb250aDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgW3NlbGYgcmVsZWFzZV07Ci0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgfQotCi0gICAgUmV0YWluUHRyPE5TT2JqZWN0IDxXS0Zvcm1Db250cm9sPj4gY29udHJvbDsK
LSAgICBpZiAoY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkpCi0gICAgICAgIGNvbnRy
b2wgPSBhZG9wdE5TKFtbV0tEYXRlVGltZVBvcG92ZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3
IGRhdGVQaWNrZXJNb2RlOm1vZGVdKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRyb2wgPSBhZG9w
dE5TKFtbV0tEYXRlVGltZVBpY2tlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXcgZGF0ZVBpY2tl
ck1vZGU6bW9kZV0pOwotICAgIHJldHVybiBbc3VwZXIgaW5pdFdpdGhWaWV3OnZpZXcgY29udHJv
bDpXVEZNb3ZlKGNvbnRyb2wpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tGb3Jt
SW5wdXRDb250cm9sIChXS1Rlc3RpbmcpCi0KLS0gKHZvaWQpc2V0VGltZVBpY2tlckhvdXI6KE5T
SW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZQotewotICAgIGlmIChbc2VsZi5j
b250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBpY2tlci5jbGFzc10pCi0gICAgICAgIFso
V0tEYXRlVGltZVBpY2tlciAqKXNlbGYuY29udHJvbCBzZXRIb3VyOmhvdXIgbWludXRlOm1pbnV0
ZV07Ci0gICAgaWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lUG9wb3Zl
ci5jbGFzc10pCi0gICAgICAgIFsoV0tEYXRlVGltZVBvcG92ZXIgKilzZWxmLmNvbnRyb2wgc2V0
SG91cjpob3VyIG1pbnV0ZTptaW51dGVdOwotfQotCi0tIChOU1N0cmluZyAqKWRhdGVUaW1lUGlj
a2VyQ2FsZW5kYXJUeXBlCi17Ci0gICAgaWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpX
S0RhdGVUaW1lUGlja2VyLmNsYXNzXSkKLSAgICAgICAgcmV0dXJuIFsoV0tEYXRlVGltZVBpY2tl
ciAqKXNlbGYuY29udHJvbCBjYWxlbmRhclR5cGVdOwotICAgIGlmIChbc2VsZi5jb250cm9sIGlz
S2luZE9mQ2xhc3M6V0tEYXRlVGltZVBvcG92ZXIuY2xhc3NdKQotICAgICAgICByZXR1cm4gWyhX
S0RhdGVUaW1lUG9wb3ZlciAqKXNlbGYuY29udHJvbCBjYWxlbmRhclR5cGVdOwotICAgIHJldHVy
biBuaWw7Ci19Ci0KLS0gKGRvdWJsZSl0aW1lUGlja2VyVmFsdWVIb3VyCi17Ci0gICAgaWYgKFtz
ZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lUGlja2VyLmNsYXNzXSkKLSAgICAg
ICAgcmV0dXJuIFsoV0tEYXRlVGltZVBpY2tlciAqKXNlbGYuY29udHJvbCBob3VyXTsKLSAgICBp
ZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQb3BvdmVyLmNsYXNzXSkK
LSAgICAgICAgcmV0dXJuIFsoV0tEYXRlVGltZVBvcG92ZXIgKilzZWxmLmNvbnRyb2wgaG91cl07
Ci0gICAgcmV0dXJuIC0xOwotfQotCi0tIChkb3VibGUpdGltZVBpY2tlclZhbHVlTWludXRlCi17
Ci0gICAgaWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lUGlja2VyLmNs
YXNzXSkKLSAgICAgICAgcmV0dXJuIFsoV0tEYXRlVGltZVBpY2tlciAqKXNlbGYuY29udHJvbCBt
aW51dGVdOwotICAgIGlmIChbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBv
cG92ZXIuY2xhc3NdKQotICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUG9wb3ZlciAqKXNlbGYu
Y29udHJvbCBtaW51dGVdOwotICAgIHJldHVybiAtMTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gV0tEYXRlVGltZVBvcG92ZXJWaWV3Q29udHJvbGxlcgotCi0tIChpZClpbml0V2l0aFZp
ZXc6KFdLQ29udGVudFZpZXcgKil2aWV3IGRhdGVQaWNrZXJNb2RlOihVSURhdGVQaWNrZXJNb2Rl
KWRhdGVQaWNrZXJNb2RlCi17Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0KLSAgICBfaW5uZXJDb250cm9sID0gYWRvcHROUyhbW1dLRGF0ZVRp
bWVQaWNrZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3IGRhdGVQaWNrZXJNb2RlOmRhdGVQaWNr
ZXJNb2RlXSk7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoTlNPYmplY3Q8V0tGb3JtQ29u
dHJvbD4gKilpbm5lckNvbnRyb2wKLXsKLSAgICByZXR1cm4gX2lubmVyQ29udHJvbC5nZXQoKTsK
LX0KLQotLSAodm9pZClsb2FkVmlldwotewotICAgIHNlbGYudmlldyA9IFtfaW5uZXJDb250cm9s
IGNvbnRyb2xWaWV3XTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tEYXRlVGltZVBv
cG92ZXIKLQotLSAodm9pZCljbGVhcjooaWQpc2VuZGVyCi17Ci0gICAgW192aWV3IHBhZ2VdLT5z
ZXRGb2N1c2VkRWxlbWVudFZhbHVlKFN0cmluZygpKTsKLX0KLQotLSAodm9pZClwb3BvdmVyV2Fz
RGlzbWlzc2VkOihXS1JvdGF0aW5nUG9wb3ZlciAqKXBvcG92ZXIKLXsKLSAgICBbc3VwZXIgcG9w
b3Zlcldhc0Rpc21pc3NlZDpwb3BvdmVyXTsKLSAgICAKLSAgICBpZiAocG9wb3ZlciA9PSBzZWxm
KSB7Ci0gICAgICAgIGlmIChfcHJlc2VydmluZ0ZvY3VzKSB7Ci0gICAgICAgICAgICBbX3ZpZXcg
cmVsZWFzZUZvY3VzXTsKLSAgICAgICAgICAgIF9wcmVzZXJ2aW5nRm9jdXMgPSBOTzsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotLSAoaWQpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmll
dyBkYXRlUGlja2VyTW9kZTooVUlEYXRlUGlja2VyTW9kZSltb2RlCi17Ci0gICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0V2l0aFZpZXc6dmlld10pKQotICAgICAgICByZXR1cm4gbmlsOwotCi0g
ICAgX3ZpZXcgPSB2aWV3OwotICAgIF92aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXS0RhdGVU
aW1lUG9wb3ZlclZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlldyBkYXRlUGlj
a2VyTW9kZTptb2RlXSk7Ci0gICAgVUlEYXRlUGlja2VyICpkYXRlUGlja2VyID0gWyhXS0RhdGVU
aW1lUGlja2VyICopX3ZpZXdDb250cm9sbGVyLmdldCgpLmlubmVyQ29udHJvbCBkYXRlUGlja2Vy
XTsKLQotICAgIGlmICh2aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUg
PT0gSW5wdXRUeXBlOjpNb250aCkgewotICAgICAgICBDR0Zsb2F0IHBvcG92ZXJXaWR0aCA9IFtk
YXRlUGlja2VyIF9jb250ZW50V2lkdGhdOwotICAgICAgICBDR0Zsb2F0IHBvcG92ZXJIZWlnaHQg
PSBfdmlld0NvbnRyb2xsZXIuZ2V0KCkudmlldy5mcmFtZS5zaXplLmhlaWdodDsKLSAgICAgICAg
W192aWV3Q29udHJvbGxlciBzZXRQcmVmZXJyZWRDb250ZW50U2l6ZTpDR1NpemVNYWtlKHBvcG92
ZXJXaWR0aCwgcG9wb3ZlckhlaWdodCldOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFtfdmlld0Nv
bnRyb2xsZXIgc2V0UHJlZmVycmVkQ29udGVudFNpemU6Q0dTaXplTWFrZShkYXRlUGlja2VyLmZy
YW1lLnNpemUud2lkdGgrMTYsIGRhdGVQaWNrZXIuZnJhbWUuc2l6ZS5oZWlnaHQpXTsKLSAgICB9
Ci0gICAgCi0gICAgW192aWV3Q29udHJvbGxlciBzZXRFZGdlc0ZvckV4dGVuZGVkTGF5b3V0OlVJ
UmVjdEVkZ2VOb25lXTsKLSAgICBbX3ZpZXdDb250cm9sbGVyIHNldFRpdGxlOl92aWV3LmZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24udGl0bGVdOwotCi0gICAgLy8gQWx3YXlzIGhhdmUgYSBuYXZp
Z2F0aW9uIGNvbnRyb2xsZXIgd2l0aCBhIGNsZWFyIGJ1dHRvbiwgYW5kIGEgdGl0bGUgaWYgdGhl
IGlucHV0IGVsZW1lbnQgaGFzIGEgdGl0bGUuCi0gICAgUmV0YWluUHRyPFVJTmF2aWdhdGlvbkNv
bnRyb2xsZXI+IG5hdmlnYXRpb25Db250cm9sbGVyID0gYWRvcHROUyhbW1VJTmF2aWdhdGlvbkNv
bnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoUm9vdFZpZXdDb250cm9sbGVyOl92aWV3Q29udHJvbGxl
ci5nZXQoKV0pOwotICAgIFVJTmF2aWdhdGlvbkl0ZW0gKm5hdmlnYXRpb25JdGVtID0gbmF2aWdh
dGlvbkNvbnRyb2xsZXIuZ2V0KCkubmF2aWdhdGlvbkJhci50b3BJdGVtOwotICAgIE5TU3RyaW5n
ICpjbGVhclN0cmluZyA9IFdFQl9VSV9TVFJJTkdfS0VZKCJDbGVhciIsICJDbGVhciBCdXR0b24g
RGF0ZSBQb3BvdmVyIiwgIkNsZWFyIGJ1dHRvbiBpbiBkYXRlIGlucHV0IHBvcG92ZXIiKTsKLSAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIFVJQmFyQnV0dG9uSXRl
bSAqY2xlYXJCdXR0b24gPSBbW1tVSUJhckJ1dHRvbkl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6
Y2xlYXJTdHJpbmcgc3R5bGU6VUlCYXJCdXR0b25JdGVtU3R5bGVCb3JkZXJlZCB0YXJnZXQ6c2Vs
ZiBhY3Rpb246QHNlbGVjdG9yKGNsZWFyOildIGF1dG9yZWxlYXNlXTsKLSAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICBbbmF2aWdhdGlvbkl0ZW0gc2V0UmlnaHRCYXJC
dXR0b25JdGVtOmNsZWFyQnV0dG9uXTsKLQotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCi0gICAgUmV0YWluUHRyPFVJUG9wb3ZlckNvbnRyb2xsZXI+IGNvbnRyb2xsZXIg
PSBhZG9wdE5TKFtbVUlQb3BvdmVyQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDb250ZW50Vmll
d0NvbnRyb2xsZXI6bmF2aWdhdGlvbkNvbnRyb2xsZXIuZ2V0KCldKTsKLSAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICBbc2VsZiBzZXRQb3BvdmVyQ29udHJvbGxlcjpj
b250cm9sbGVyLmdldCgpXTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChXS0RhdGVUaW1l
UG9wb3ZlclZpZXdDb250cm9sbGVyICopdmlld0NvbnRyb2xsZXIKLXsKLSAgICByZXR1cm4gX3Zp
ZXdDb250cm9sbGVyLmdldCgpOwotfQotCi0tICh2b2lkKWNvbnRyb2xCZWdpbkVkaXRpbmcKLXsK
LSAgICBpZiAoIV9wcmVzZW50aW5nKSB7Ci0gICAgICAgIF9wcmVzZW50aW5nID0gWUVTOwotICAg
ICAgICBbc2VsZiBwcmVzZW50UG9wb3ZlckFuaW1hdGVkOk5PXTsKLSAgICAgICAgW192aWV3Q29u
dHJvbGxlci5nZXQoKS5pbm5lckNvbnRyb2wgY29udHJvbEJlZ2luRWRpdGluZ107Ci0gICAgICAg
IAotICAgICAgICBpZiAoX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlw
ZSA9PSBJbnB1dFR5cGU6OlRpbWUgfHwgX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5l
bGVtZW50VHlwZSA9PSBJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWwpIHsKLSAgICAgICAgICAgIF9w
cmVzZXJ2aW5nRm9jdXMgPSBZRVM7Ci0gICAgICAgICAgICBbX3ZpZXcgcHJlc2VydmVGb2N1c107
Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS0gKHZvaWQpY29udHJvbEVuZEVkaXRpbmcKLXsKLSAg
ICBfcHJlc2VudGluZyA9IE5POwotICAgIFtzZWxmIGRpc21pc3NQb3BvdmVyQW5pbWF0ZWQ6Tk9d
OwotICAgIFtfdmlld0NvbnRyb2xsZXIuZ2V0KCkuaW5uZXJDb250cm9sIGNvbnRyb2xFbmRFZGl0
aW5nXTsKLX0KLQotLSAoVUlWaWV3ICopY29udHJvbFZpZXcKLXsKLSAgICByZXR1cm4gbmlsOwot
fQotCi0tICh2b2lkKXNldEhvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1p
bnV0ZQotewotICAgIFdLRGF0ZVRpbWVQaWNrZXIgKmRhdGVUaW1lUGlja2VyID0gKFdLRGF0ZVRp
bWVQaWNrZXIgKilzZWxmLnZpZXdDb250cm9sbGVyLmlubmVyQ29udHJvbDsKLSAgICBbZGF0ZVRp
bWVQaWNrZXIgc2V0SG91cjpob3VyIG1pbnV0ZTptaW51dGVdOwotfQotCi0tIChOU1N0cmluZyAq
KWNhbGVuZGFyVHlwZQotewotICAgIFdLRGF0ZVRpbWVQaWNrZXIgKmRhdGVUaW1lUGlja2VyID0g
KFdLRGF0ZVRpbWVQaWNrZXIgKilzZWxmLnZpZXdDb250cm9sbGVyLmlubmVyQ29udHJvbDsKLSAg
ICByZXR1cm4gZGF0ZVRpbWVQaWNrZXIuZGF0ZVBpY2tlci5jYWxlbmRhci5jYWxlbmRhcklkZW50
aWZpZXI7Ci19Ci0KLS0gKGRvdWJsZSlob3VyCi17Ci0gICAgV0tEYXRlVGltZVBpY2tlciAqZGF0
ZVRpbWVQaWNrZXIgPSAoV0tEYXRlVGltZVBpY2tlciAqKXNlbGYudmlld0NvbnRyb2xsZXIuaW5u
ZXJDb250cm9sOwotICAgIE5TQ2FsZW5kYXIgKmNhbGVuZGFyID0gW05TQ2FsZW5kYXIgY3VycmVu
dENhbGVuZGFyXTsKLSAgICBOU0RhdGVDb21wb25lbnRzICpjb21wb25lbnRzID0gW2NhbGVuZGFy
IGNvbXBvbmVudHM6KE5TQ2FsZW5kYXJVbml0SG91cikgZnJvbURhdGU6ZGF0ZVRpbWVQaWNrZXIu
ZGF0ZVBpY2tlci5kYXRlXTsKLQotICAgIHJldHVybiBbY29tcG9uZW50cyBob3VyXTsKLX0KLQot
LSAoZG91YmxlKW1pbnV0ZQotewotICAgIFdLRGF0ZVRpbWVQaWNrZXIgKmRhdGVUaW1lUGlja2Vy
ID0gKFdLRGF0ZVRpbWVQaWNrZXIgKilzZWxmLnZpZXdDb250cm9sbGVyLmlubmVyQ29udHJvbDsK
LSAgICBOU0NhbGVuZGFyICpjYWxlbmRhciA9IFtOU0NhbGVuZGFyIGN1cnJlbnRDYWxlbmRhcl07
Ci0gICAgTlNEYXRlQ29tcG9uZW50cyAqY29tcG9uZW50cyA9IFtjYWxlbmRhciBjb21wb25lbnRz
OihOU0NhbGVuZGFyVW5pdE1pbnV0ZSkgZnJvbURhdGU6ZGF0ZVRpbWVQaWNrZXIuZGF0ZVBpY2tl
ci5kYXRlXTsKLQotICAgIHJldHVybiBbY29tcG9uZW50cyBtaW51dGVdOwotfQotCi1AZW5kCi0K
LSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTcwYzZkZjljNThmZTA2OWJlZWI3NWU2
N2VmNDNhZGFkNDFiNjg3ZC4uZDRkMzY2YTI5MzliNTdlZWZiMGQ2ZWZlZTBlZWRhOGRkMGU3ZDhh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNjg4LDcgKzE2ODgsNyBAQAogCQlDMTgxNzM2MTIwNTg0MjQ3MDBERkRBNjUgLyogRGlz
cGxheUxpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMxODE3MzYwMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oICovOyB9OwogCQlDMUUx
MjNCQTIwQTExNTczMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRTEyM0I5MjBBMTE1NzIwMDI2NDZGNCAv
KiBQREZDb250ZXh0TWVudS5oICovOyB9OwogCQlDNTE3Mzg4MTEyREY4RjRGMDBFRTNGNDcgLyog
RHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM1MTczODgwMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFj
dGlvbi5oICovOyB9OwotCQlDNTQyNTZCNTE4QkVDMThDMDBERTQxNzkgLyogV0tGb3JtSW5wdXRD
b250cm9sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
NTQyNTZBRjE4QkVDMThCMDBERTQxNzkgLyogV0tGb3JtSW5wdXRDb250cm9sLmggKi87IH07CisJ
CUM1NDI1NkI1MThCRUMxOEMwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTQyNTZBRjE4QkVD
MThCMDBERTQxNzkgLyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5oICovOyB9OwogCQlDNTQyNTZC
NzE4QkVDMThDMDBERTQxNzkgLyogV0tGb3JtUGVyaXBoZXJhbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU0MjU2QjExOEJFQzE4QjAwREU0MTc5IC8q
IFdLRm9ybVBlcmlwaGVyYWwuaCAqLzsgfTsKIAkJQzU0MjU2QjgxOEJFQzE4QzAwREU0MTc5IC8q
IFdLRm9ybVBvcG92ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM1NDI1NkIyMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1Qb3BvdmVyLmggKi87IH07
CiAJCUM1NDI1NkJBMThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1TZWxlY3RDb250cm9sLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTQyNTZCNDE4QkVD
MThDMDBERTQxNzkgLyogV0tGb3JtU2VsZWN0Q29udHJvbC5oICovOyB9OwpAQCAtNTAyMyw4ICs1
MDIzLDggQEAKIAkJQzFFMTIzQjkyMEExMTU3MjAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBERkNvbnRleHRNZW51Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MTczODgwMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFn
Q29udHJvbGxlckFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmFn
Q29udHJvbGxlckFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTIzN0Y1
RjEyNDQxQ0EzMDA3ODA0NzIgLyogV2ViRWRpdG9yQ2xpZW50TWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRWRpdG9yQ2xpZW50TWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDNTQyNTZBRjE4QkVDMThCMDBERTQxNzkgLyogV0tGb3Jt
SW5wdXRDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRm9ybUlu
cHV0Q29udHJvbC5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDNTQyNTZCMDE4QkVDMThCMDBERTQxNzkgLyogV0tG
b3JtSW5wdXRDb250cm9sLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gV0tGb3JtSW5wdXRDb250cm9sLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29u
dHJvbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzU0MjU2QUYxOEJFQzE4QjAw
REU0MTc5IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV0tEYXRlVGltZUlucHV0Q29udHJvbC5oOyBwYXRoID0gaW9zL2Zvcm1zL1dL
RGF0ZVRpbWVJbnB1dENvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzU0
MjU2QjAxOEJFQzE4QjAwREU0MTc5IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0RhdGVUaW1lSW5wdXRDb250cm9s
Lm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NDI1NkIxMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1Q
ZXJpcGhlcmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRm9ybVBlcmlw
aGVyYWwuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1QZXJpcGhlcmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM1NDI1NkIyMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1Qb3Bv
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRm9ybVBvcG92ZXIuaDsg
cGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1Qb3BvdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUM1NDI1NkIzMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1Qb3BvdmVyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tGb3JtUG9wb3Zlci5tbTsgcGF0
aCA9IGlvcy9mb3Jtcy9XS0Zvcm1Qb3BvdmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODM3MywxNCArODM3MywxNCBAQAogCQk3QzZFNzBGODE4QjJENDdFMDBGMjRFMkUgLyog
Y29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQx
Njg0QzRGMjQ2NDNEM0YwMDFDRThFRCAvKiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAg
Ki8sCi0JCQkJNDE2ODRDNEUyNDY0M0M4MTAwMUNFOEVEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVN
YW5hZ2VyLmggKi8sCi0JCQkJNDE2ODRDNEQyNDY0M0JGQTAwMUNFOEVEIC8qIFJlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluICovLAogCQkJCUNENDU3MENCMjQ0MEZCMkEwMEEz
RENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAgKi8sCiAJCQkJQ0Q0NTcw
Q0EyNDQwRkIyQTAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmggKi8s
CiAJCQkJQ0RBMjlBMTkxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIu
aCAqLywKIAkJCQlDREEyOUExQzFDQkRCRjVCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQlDREEyOUExODFDQkRCRjQxMDA5MDFDQ0YgLyogUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5tbSAqLywKKwkJCQk0MTY4NEM0RjI0NjQzRDNGMDAxQ0U4RUQg
LyogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwICovLAorCQkJCTQxNjg0QzRFMjQ2NDND
ODEwMDFDRThFRCAvKiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oICovLAorCQkJCTQxNjg0
QzREMjQ2NDNCRkEwMDFDRThFRCAvKiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdl
cy5pbiAqLywKIAkJCQk0MTY4NEM1MDI0NjQ1MEZEMDAxQ0U4RUQgLyogUmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAgKi8sCiAJCQkJNDE2ODRDNTEyNDY0NTBGRDAwMUNFOEVEIC8qIFJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLywKIAkJCQlDRDQ5MUIwNTFFNzBEMDVGMDAwMDkwNjYg
LyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwICovLApAQCAtOTk3Miw3ICs5OTcyLDYgQEAK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMkQ3REVCRTIyMTI2OUU0
QjAwQjlGNzNDIC8qIHVuaWZpZWQtc291cmNlcyAqLywKLQkJCQkwRkYyNEEyQjE4NzlFNEJDMDAz
QUJGMEQgLyogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICov
LAogCQkJCUNENDU3MEQwMjQ0MTAxNEEwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJi
aXRyYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlDRDQ1NzBEMTI0NDEwMTRC
MDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eU1lc3NhZ2VzLmgg
Ki8sCiAJCQkJQ0Q0NTcwRDIyNDQxMDE0QjAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdB
cmJpdHJhdG9yUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKQEAgLTEwMDU0LDYgKzEwMDUzLDcg
QEAKIAkJCQlDREQ1MzU3MTI0MERERTA2MDBGN0I4QzQgLyogUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUNERDUzNTcyMjQwRERFMDYwMEY3QjhDNCAv
KiBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJQ0RENTM1NzcyNDBE
REUwNzAwRjdCOEM0IC8qIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmgg
Ki8sCisJCQkJMEZGMjRBMkIxODc5RTRCQzAwM0FCRjBEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlDREFDMjBGMjIzRkMzODNBMDAyMURF
RTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlD
REFDMjBGMzIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMu
aCAqLywKIAkJCQlDREFDMjBFRTIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCkBAIC0xMDI1NSw2ICsxMDI1NSw4IEBACiAJCQkJQzVG
QTFFRDIxOEUxMDYyMjAwQjNGNDAyIC8qIFdLQWlyUGxheVJvdXRlUGlja2VyLm1tICovLAogCQkJ
CTJFOTRGQzE0MjAzNTFBNkQwMDk3NEJBMCAvKiBXS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5o
ICovLAogCQkJCTJFOTRGQzE1MjAzNTFBNkQwMDk3NEJBMCAvKiBXS0RhdGVQaWNrZXJWaWV3Q29u
dHJvbGxlci5tbSAqLywKKwkJCQlDNTQyNTZBRjE4QkVDMThCMDBERTQxNzkgLyogV0tEYXRlVGlt
ZUlucHV0Q29udHJvbC5oICovLAorCQkJCUM1NDI1NkIwMThCRUMxOEIwMERFNDE3OSAvKiBXS0Rh
dGVUaW1lSW5wdXRDb250cm9sLm1tICovLAogCQkJCUE1OEI2RjA2MThGQ0E3MzMwMDhDQkE1MyAv
KiBXS0ZpbGVVcGxvYWRQYW5lbC5oICovLAogCQkJCUE1OEI2RjA3MThGQ0E3MzMwMDhDQkE1MyAv
KiBXS0ZpbGVVcGxvYWRQYW5lbC5tbSAqLywKIAkJCQkyRTE2QjZDRDIwMTdCN0FDMDA4OTk2RDYg
LyogV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3LmggKi8sCkBAIC0xMDI2Myw4ICsxMDI2NSw2IEBA
CiAJCQkJRTVDQjA3REIyMEUxNjc4RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5tbSAq
LywKIAkJCQlFNTQ4RUJDRjIxMDE1RjBFMDBCRTNDMzIgLyogV0tGb3JtQ29sb3JQaWNrZXIuaCAq
LywKIAkJCQlFNTQ4RUJEMDIxMDE1RjBFMDBCRTNDMzIgLyogV0tGb3JtQ29sb3JQaWNrZXIubW0g
Ki8sCi0JCQkJQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybUlucHV0Q29udHJvbC5o
ICovLAotCQkJCUM1NDI1NkIwMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wu
bW0gKi8sCiAJCQkJQzU0MjU2QjExOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybVBlcmlwaGVyYWwu
aCAqLywKIAkJCQlDRTcwRUU1QzIyNDQyQkQwMDBFMEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJh
c2UuaCAqLywKIAkJCQlDRTcwRUU1QTIyNDQyQkIzMDBFMEFGMEYgLyogV0tGb3JtUGVyaXBoZXJh
bEJhc2UubW0gKi8sCkBAIC0xMTUxNSw2ICsxMTUxNSw3IEBACiAJCQkJMzdBNzA5QTcxRTNFQTBG
RDAwQ0E1OTY5IC8qIFdLRGF0YURldGVjdG9yVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
QTcwOUE5MUUzRUE0MEMwMENBNTk2OSAvKiBXS0RhdGFEZXRlY3RvclR5cGVzSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTJFOTRGQzE2MjAzNTFBNkQwMDk3NEJBMCAvKiBXS0RhdGVQaWNr
ZXJWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzU0MjU2QjUxOEJFQzE4QzAw
REU0MTc5IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
N0VBRDQ1MTdFMkM1MUEwMDJEMTkzRCAvKiBXS0RlY2xhcmF0aW9uU3BlY2lmaWVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjQ0ODE1NjQyMzg3ODIwMDAwOTgyNjU3IC8qIFdLRGVmZXJyaW5nR2Vz
dHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMzU5QzBEMjE1NDczOUYwMDlF
Nzk0OCAvKiBXS0RlcHJlY2F0ZWQuaCBpbiBIZWFkZXJzICovLApAQCAtMTE1NDcsNyArMTE1NDgs
NiBAQAogCQkJCTJFMTZCNkNGMjAxN0I3QUQwMDg5OTZENiAvKiBXS0ZvY3VzZWRGb3JtQ29udHJv
bFZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1Q0IwN0RDMjBFMTY3OEYwMDIyQzE4MyAvKiBX
S0Zvcm1Db2xvckNvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1NDhFQkQxMjEwMTVGMEUw
MEJFM0MzMiAvKiBXS0Zvcm1Db2xvclBpY2tlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzU0MjU2
QjUxOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybUlucHV0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzU0MjU2QjcxOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybVBlcmlwaGVyYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNFNzBFRTVEMjI0NDJCRDAwMEUwQUYwRiAvKiBXS0Zvcm1QZXJpcGhl
cmFsQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU0MjU2QjgxOEJFQzE4QzAwREU0MTc5IC8q
IFdLRm9ybVBvcG92ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTI2ODUsNyArMTI2ODUsNiBAQAog
CQkJCTJEOTJBNzdCMjEyQjZBNzEwMEY0OTNGRCAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyREVCMUQyRTIxMjc0NzM2MDA5MzM5MDYgLyogQXJndW1lbnRDb2RlcnND
Ri5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3QzIxMkI2QTcxMDBGNDkzRkQgLyogQXR0
YWNobWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRkYyNEEyRDE4NzlFNEJDMDAzQUJGMEQg
LyogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0Q0NTcwRDQyNDQxMUQwRjAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lvblJvdXRp
bmdBcmJpdHJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEN0NGMzYxMjQ0NENDQTYwMDNC
QzRENSAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Q29jb2EubW0gaW4gU291
cmNlcyAqLywKIAkJCQlDRDQ1NzBEMzI0NDExM0I1MDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91
dGluZ0FyYml0cmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTEyNzc0LDYgKzEyNzczLDcgQEAKIAkJCQkxQTBDMjI3RjI0NTExMzBBMDBFRDYxNEQgLyogUXVp
Y2tMb29rVGh1bWJuYWlsaW5nU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTBDMjI1
RTI0MzU3NUNEMDBFRDYxNEQgLyogUXVpY2tMb29rVGh1bWJuYWlsTG9hZGVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOUIxMjI5Q0UyM0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjI0QTJEMTg3OUU0QkMwMDNB
QkYwRCAvKiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDREFDMjBGNzIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNRmFj
dG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQUMyMEY4
MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENDY2MTgzMjQwMTBBNjcwMDQ3Q0EzNSAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399239</attachid>
            <date>2020-05-12 21:56:45 -0700</date>
            <delta_ts>2020-05-13 14:34:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211825-20200512215628.patch</filename>
            <type>text/plain</type>
            <size>63329</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiNjRkMjljZmRhYWQ3ZTUy
MGIwM2FkYjg3NWRhNjE1ZGYzYjJiYWYuLmRiNDk4MzNlYTIzYTkwMTQyYjIzNmZlYzgwN2JmYzZj
ZGJkZDUyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjAtMDUtMTIgIE1lZ2FuIEdh
cmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgRGF0ZS9U
aW1lIHBvcG92ZXJzIHRvIGNvbnRleHRNZW51cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTgyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgRGF0ZS9UaW1lIHBpY2tlciB0byB1c2Ug
VUlDb250ZXh0TWVudXMgaW5zdGVhZCBvZiBwb3BvdmVycy4KKyAgICAgICAgUmVtb3ZlZCBhbGwg
dGhlIHVubmVkZWQgcG9wb3ZlciBjb2RlLgorICAgICAgICBSZW5hbWVkIFdLRm9ybUlucHV0Q29u
dHJvbCB0byBXS0RhdGVUaW1lSW5wdXRDb250cm9sIGJlY2F1c2UgaXQgd2FzIG9ubHkgdXNlZAor
ICAgICAgICBmb3IgZGF0ZSBhbmQgdGltZSBjb250cm9scywgdW5uZWNjZXNzYXJ5IGFic3RyYWN0
aW9uLgorICAgICAgICBXZSBuZWVkIHRvIGVuc3VyZSB0aGUgcG9pc2l0aW9uIGluZm9ybWF0aW9u
IGlzIHVwIHRvIGRhdGUgYmVmb3JlIHByZXNlbnRpbmcKKyAgICAgICAgdGhlIGNvbnRleHQgbWVu
dSwgb3IgdGhlIHBvc2l0aW9uIGl0IHdpbGwgYmUgcHJlc2VudGVkIGZyb20gY2FuIGJlIHN0YWxl
LgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG91
bGRTaG93QXV0b21hdGljS2V5Ym9hcmRVSUlnbm9yaW5nSW5wdXRNb2RlXSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgcmVxdWlyZXNBY2Nlc3NvcnlWaWV3XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX3VwZGF0ZUFjY2Vzc29yeV0pOgorICAgICAgICAobWF5Q29udGFpblNlbGVjdGFi
bGVUZXh0KToKKyAgICAgICAgKGNyZWF0ZUlucHV0UGVyaXBoZXJhbFdpdGhWaWV3KToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBpbnB1dExhYmVsVGV4dF0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9yZW1vdmVDb250ZXh0TWVudVZpZXdJZlBvc3NpYmxlXSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgaW5wdXRMYWJlbFRleHRGb3JWaWV3Q29udHJvbGxlcjpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBmb3JtSW5wdXRDb250cm9sXSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgc2V0VGltZVBpY2tlclZhbHVlVG9Ib3VyOm1pbnV0ZTpdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyB0aW1lUGlja2VyVmFsdWVIb3VyXSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgdGltZVBpY2tlclZhbHVlTWludXRlXSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmguCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLm1tOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5tbS4KKyAg
ICAgICAgKC1bV0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXIgaW5pdF0pOgorICAg
ICAgICAoLVtXS0RhdGVUaW1lQ29udGV4dE1lbnVWaWV3Q29udHJvbGxlciBwcmVmZXJyZWRDb250
ZW50U2l6ZV0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGluaXRXaXRoVmlldzpkYXRl
UGlja2VyTW9kZTpdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBjb250ZXh0TWVudUlu
dGVyYWN0aW9uOnByZXZpZXdGb3JIaWdobGlnaHRpbmdNZW51V2l0aENvbmZpZ3VyYXRpb246XSk6
CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgX2NvbnRleHRNZW51SW50ZXJhY3Rpb246c3R5
bGVGb3JNZW51V2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNr
ZXIgY29udGV4dE1lbnVJbnRlcmFjdGlvbjpjb25maWd1cmF0aW9uRm9yTWVudUF0TG9jYXRpb246
XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgY29udGV4dE1lbnVJbnRlcmFjdGlvbjp3
aWxsRW5kRm9yQ29uZmlndXJhdGlvbjphbmltYXRvcjpdKToKKyAgICAgICAgKC1bV0tEYXRlVGlt
ZVBpY2tlciByZW1vdmVDb250ZXh0TWVudUludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLRGF0
ZVRpbWVQaWNrZXIgZW5zdXJlQ29udGV4dE1lbnVJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtX
S0RhdGVUaW1lUGlja2VyIHNob3dEYXRlVGltZVBpY2tlcl0pOgorICAgICAgICAoLVtXS0RhdGVU
aW1lUGlja2VyIHJlc2V0Ol0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGNhbGVuZGFy
VHlwZV0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV0tEYXRlVGltZVBpY2tlciBzZXREYXRlVGltZVBpY2tlclRvSW5pdGlhbFZhbHVlXSk6Cisg
ICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgY29udHJvbEJlZ2luRWRpdGluZ10pOgorICAgICAg
ICAoLVtXS0RhdGVUaW1lUGlja2VyIHZpZXdDb250cm9sbGVyXSk6CisgICAgICAgICgtW1dLRGF0
ZVRpbWVQaWNrZXIgY29udHJvbEVuZEVkaXRpbmddKToKKyAgICAgICAgKC1bV0tEYXRlVGltZUlu
cHV0Q29udHJvbCBpbml0V2l0aFZpZXc6XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVJbnB1dENv
bnRyb2wgc2V0VGltZVBpY2tlckhvdXI6bWludXRlOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1l
SW5wdXRDb250cm9sIGRhdGVUaW1lUGlja2VyQ2FsZW5kYXJUeXBlXSk6CisgICAgICAgICgtW1dL
RGF0ZVRpbWVJbnB1dENvbnRyb2wgdGltZVBpY2tlclZhbHVlSG91cl0pOgorICAgICAgICAoLVtX
S0RhdGVUaW1lSW5wdXRDb250cm9sIHRpbWVQaWNrZXJWYWx1ZU1pbnV0ZV0pOgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTA1LTExICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1MgXSBzY3Jv
bGxpbmdjb29yZGluYXRvci9tYWMvbGF0Y2hpbmcvc2Nyb2xsaW5nLXNlbGVjdC1zaG91bGQtbm90
LWxhdGNoLW1haW5mcmFtZS5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncyBiL1NvdXJjZS9XZWJDb3Jl
L2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKaW5kZXggNzg0MTlkNTFlYWNkYTg4NTA3NzFi
ZTc5MzJlNmYyNWM4N2VmNDY2MC4uZjI1NDFmN2FlNjI1YTU4ZDFhNTA0ODViODFiNDg2OTc3YTkz
NjQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5ncworKysgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBA
IC0yMTEsOSArMjExLDYgQEAKIC8qIFRpdGxlIGZvciBmaWxlIGJ1dHRvbiB1c2VkIGluIEhUTUwg
Zm9ybXMgZm9yIG1lZGlhIGZpbGVzICovCiAiQ2hvb3NlIE1lZGlhIChTaW5nbGUpIiA9ICJDaG9v
c2UgTWVkaWEgKFNpbmdsZSkiOwogCi0vKiBDbGVhciBidXR0b24gaW4gZGF0ZSBpbnB1dCBwb3Bv
dmVyICovCi0iQ2xlYXIgQnV0dG9uIERhdGUgUG9wb3ZlciIgPSAiQ2xlYXIiOwotCiAvKiBtZW51
IGl0ZW0gaW4gUmVjZW50IFNlYXJjaGVzIG1lbnUgdGhhdCBlbXB0aWVzIG1lbnUncyBjb250ZW50
cyAqLwogIkNsZWFyIFJlY2VudCBTZWFyY2hlcyIgPSAiQ2xlYXIgUmVjZW50IFNlYXJjaGVzIjsK
IApAQCAtMTMyNyw2ICsxMzI0LDkgQEAKIC8qIEhUVFAgcmVzdWx0IGNvZGUgc3RyaW5nICovCiAi
cmVxdWVzdGVkIHJhbmdlIG5vdCBzYXRpc2ZpYWJsZSIgPSAicmVxdWVzdGVkIHJhbmdlIG5vdCBz
YXRpc2ZpYWJsZSI7CiAKKy8qIFJlc2V0IGJ1dHRvbiBpbiBkYXRlIGlucHV0IHBvcG92ZXIgKi8K
KyJSZXNldCBCdXR0b24gRGF0ZS9UaW1lIENvbnRleHQgTWVudSIgPSAiUmVzZXQiOworCiAvKiBI
VFRQIHJlc3VsdCBjb2RlIHN0cmluZyAqLwogInJlc2V0IGNvbnRlbnQiID0gInJlc2V0IGNvbnRl
bnQiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRT
UEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IGRk
NDc0MzQ4Y2Q4ZTVhZTQwMjQ3Y2MzZjg3MWFiNDUxMGY3OTAwMjMuLmJjMWMyNTA1MWQ0YWJkOWE4
MDk5NjI3YzA5NjFhYjk0M2JiYjcxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lv
cy9VSUtpdFNQSS5oCkBAIC0xMTUyLDEwICsxMTUyLDEyIEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhO
U0ludGVnZXIsIFVJV0tEb2N1bWVudFJlcXVlc3RGbGFncykgewogdHlwZWRlZiBOU19FTlVNKE5T
VUludGVnZXIsIF9VSUNvbnRleHRNZW51TGF5b3V0KSB7CiAgICAgX1VJQ29udGV4dE1lbnVMYXlv
dXRBY3Rpb25zT25seSA9IDEsCiAgICAgX1VJQ29udGV4dE1lbnVMYXlvdXRDb21wYWN0TWVudSA9
IDMsCisgICAgX1VJQ29udGV4dE1lbnVMYXlvdXRBdXRvbWF0aWMgPSAxMDAsCiB9OwogCiBAaW50
ZXJmYWNlIF9VSUNvbnRleHRNZW51U3R5bGUgOiBOU09iamVjdCA8TlNDb3B5aW5nPgogQHByb3Bl
cnR5IChub25hdG9taWMpIF9VSUNvbnRleHRNZW51TGF5b3V0IHByZWZlcnJlZExheW91dDsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGhhc0ludGVyYWN0aXZlUHJldmlldzsKICsgKGluc3Rh
bmNldHlwZSlkZWZhdWx0U3R5bGU7CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCAx
NjhmMWRiMTA2ZDU0YzI1MGQ3MDc0NWE0MmZhYjk0MGExOWJhZmRjLi5jNjkyNzlhNWZkNDM2NDA3
NDUwZmQwNDQwOTc3MjI1MGY1MWI3MWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MTUs
MTEgKzQxNSwxMSBAQCBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvcldLV2ViVmll
dy5tbQogCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLm1tCiBVSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCitVSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGaWxlVXBsb2FkUGFuZWwubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1c2VkRm9ybUNv
bnRyb2xWaWV3Lm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5tbQog
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvclBpY2tlci5tbQotVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUGVy
aXBoZXJhbEJhc2UubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtUG9wb3Zlci5tbQogVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RDb250cm9sLm1tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXgg
ZGRiOWViMDI0YmRiMDBjYTI5MmRkZGI4MDBkYzQwNGRkOTk2ZjgwYi4uMmIzOWIxMGZhZDA0YTJh
NzQxY2QwMzFjMTJiMGJiMDRjZDIxYjhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMTAxLDcgKzEwMSw3
IEBAIHN0cnVjdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ7CiBAY2xhc3MgV0tDb250ZXh0TWVu
dUVsZW1lbnRJbmZvOwogQGNsYXNzIFdLRHJhd2luZ0Nvb3JkaW5hdG9yOwogQGNsYXNzIFdLRm9j
dXNlZEZvcm1Db250cm9sVmlldzsKLUBjbGFzcyBXS0Zvcm1JbnB1dENvbnRyb2w7CitAY2xhc3Mg
V0tEYXRlVGltZUlucHV0Q29udHJvbDsKIEBjbGFzcyBXS0Zvcm1JbnB1dFNlc3Npb247CiBAY2xh
c3MgV0tIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcjsKIEBjbGFzcyBXS01vdXNl
R2VzdHVyZVJlY29nbml6ZXI7CkBAIC01MzksNiArNTM5LDggQEAgRk9SX0VBQ0hfUFJJVkFURV9X
S0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJf
VklFVykKIC0gKEJPT0wpaGFzSGlkZGVuQ29udGVudEVkaXRhYmxlOwogLSAodm9pZClnZW5lcmF0
ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kOihXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZSljb21tYW5kOwogCistIChOU1N0cmluZyopaW5wdXRMYWJlbFRleHQ7CisKIC0gKHZvaWQp
cHJlc2VydmVGb2N1czsKIC0gKHZvaWQpcmVsZWFzZUZvY3VzOwogCkBAIC02MTUsNyArNjE3LDcg
QEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVO
VFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNTdHJpbmcgKnRleHRDb250ZW50VHlwZUZvclRlc3Rpbmc7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpzZWxlY3RGb3JtUG9wb3ZlclRpdGxlOwogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqZm9ybUlucHV0TGFiZWw7Ci1AcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLRm9ybUlucHV0Q29udHJvbCAqZm9ybUlucHV0
Q29udHJvbDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tEYXRlVGltZUlucHV0
Q29udHJvbCAqZm9ybUlucHV0Q29udHJvbDsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA0
YWRiZjhhYWE5NWQ2MGRlNWI3OTA4NGNlYjI5ODkyMmM2NDQ5NGRhLi4xYzY5N2JiYjk1MmIwZDZj
YTI4NzliNWE3ZGI5ZTU2YjcwZTYzYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTUwLDEwICs1MCwx
MCBAQAogI2ltcG9ydCAiV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLQ29udGV4dE1lbnVFbGVtZW50SW5mb1ByaXZhdGUuaCIKICNpbXBvcnQgIldLRGF0ZVBp
Y2tlclZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS0RhdGVUaW1lSW5wdXRDb250cm9sLmgi
CiAjaW1wb3J0ICJXS0RyYXdpbmdDb29yZGluYXRvci5oIgogI2ltcG9ydCAiV0tFcnJvci5oIgog
I2ltcG9ydCAiV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3LmgiCi0jaW1wb3J0ICJXS0Zvcm1JbnB1
dENvbnRyb2wuaCIKICNpbXBvcnQgIldLRm9ybVNlbGVjdENvbnRyb2wuaCIKICNpbXBvcnQgIldL
RnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVy
ZVJlY29nbml6ZXIuaCIKQEAgLTE5MDIsMTYgKzE5MDIsMTUgQEAgLSAoQk9PTClfc2hvdWxkU2hv
d0F1dG9tYXRpY0tleWJvYXJkVUlJZ25vcmluZ0lucHV0TW9kZQogICAgIHN3aXRjaCAoX2ZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKICAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpOb25lOgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRyYXdpbmc6CisgICAg
Y2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZToKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBl
OjpNb250aDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgorICAg
IGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6CiAgICAgICAgIHJldHVybiBOTzsKICAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpTZWxlY3Q6CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29sb3I6CiAjZW5kaWYKLSAgICBjYXNl
IFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1v
bnRoOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw6Ci0gICAgY2Fz
ZSBXZWJLaXQ6OklucHV0VHlwZTo6VGltZToKLSAgICAgICAgcmV0dXJuICFXZWJLaXQ6OmN1cnJl
bnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biAhX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uaXNSZWFkT25seTsKICAgICB9CkBAIC0yOTE0
LDYgKzI5MTMsMTAgQEAgLSAoQk9PTClyZXF1aXJlc0FjY2Vzc29yeVZpZXcKICAgICBzd2l0Y2gg
KF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlKSB7CiAgICAgY2FzZSBXZWJL
aXQ6OklucHV0VHlwZTo6Tm9uZToKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEcmF3aW5n
OgorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGU6CisgICAgY2FzZSBXZWJLaXQ6Oklu
cHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpNb250
aDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lOgogICAgICAgICByZXR1cm4gTk87
CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGV4dDoKICAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpQYXNzd29yZDoKQEAgLTI5MjYsMTIgKzI5MjksOCBAQCAtIChCT09MKXJlcXVpcmVz
QWNjZXNzb3J5VmlldwogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbnRlbnRFZGl0YWJs
ZToKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0QXJlYToKICAgICBjYXNlIFdlYktp
dDo6SW5wdXRUeXBlOjpTZWxlY3Q6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZToK
ICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZToKLSAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1v
bnRoOgotICAgIGNhc2UgV2ViS2l0OjogSW5wdXRUeXBlOjpXZWVrOgotICAgIGNhc2UgV2ViS2l0
OjpJbnB1dFR5cGU6OlRpbWU6CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6V2VlazoKICNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpD
b2xvcjoKICNlbmRpZgpAQCAtNDQwMiw4ICs0NDAxLDggQEAgLSAodm9pZClfdXBkYXRlQWNjZXNz
b3J5CiAKICAgICBzd2l0Y2ggKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBl
KSB7CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZToKLSAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpNb250aDoKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxv
Y2FsOgorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1vbnRoOgogICAgIGNhc2UgV2ViS2l0
OjpJbnB1dFR5cGU6OlRpbWU6CiAgICAgICAgIFthY2Nlc3NvcnlWaWV3IHNldENsZWFyVmlzaWJs
ZTpZRVNdOwogICAgICAgICByZXR1cm47CkBAIC01NzI5LDcgKzU3MjgsNiBAQCBzdGF0aWMgYm9v
bCBtYXlDb250YWluU2VsZWN0YWJsZVRleHQoV2ViS2l0OjpJbnB1dFR5cGUgdHlwZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIFRoZSBmb2xsb3dpbmcgdHlwZXMgbG9vayBhbmQgYmVo
YXZlIGxpa2UgYSB0ZXh0IGZpZWxkLgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbnRl
bnRFZGl0YWJsZToKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZToKICAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpFbWFpbDoKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBl
OjpOdW1iZXI6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TnVtYmVyUGFkOgpAQCAtNTcz
OSw2ICs1NzM3LDcgQEAgc3RhdGljIGJvb2wgbWF5Q29udGFpblNlbGVjdGFibGVUZXh0KFdlYktp
dDo6SW5wdXRUeXBlIHR5cGUpCiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGV4dDoKICAg
ICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0QXJlYToKICAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpVUkw6CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWU6CiAgICAg
Y2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6V2VlazoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtNTgwMSw4ICs1ODAwLDEzIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9y
bVBlcmlwaGVyYWw+PiBjcmVhdGVJbnB1dFBlcmlwaGVyYWxXaXRoVmlldyhXZWJLCiAgICAgY2Fz
ZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29sb3I6CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tG
b3JtQ29sb3JDb250cm9sIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlld10pOwogI2VuZGlmIC8vIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGU6
CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICBjYXNlIFdl
YktpdDo6SW5wdXRUeXBlOjpNb250aDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1l
OgorICAgICAgICByZXR1cm4gYWRvcHROUyhbW1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wgYWxsb2Nd
IGluaXRXaXRoVmlldzp2aWV3XSk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGFkb3B0
TlMoW1tXS0Zvcm1JbnB1dENvbnRyb2wgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3XSk7CisgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgfQogI2VuZGlmCiB9CkBAIC02NzUxLDYgKzY3NTUsMjAgQEAg
LSAodm9pZClzaGFyZVNoZWV0RGlkRGlzbWlzczooV0tTaGFyZVNoZWV0ICopc2hhcmVTaGVldAog
fQogI2VuZGlmCiAKKy0gKE5TU3RyaW5nICopaW5wdXRMYWJlbFRleHQKK3sKKyAgICBpZiAoIV9m
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmxhYmVsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmxhYmVsOworCisgICAgaWYgKCFfZm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbi5hcmlhTGFiZWwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gX2Zv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24uYXJpYUxhYmVsOworCisgICAgaWYgKCFfZm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbi50aXRsZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBfZm9jdXNl
ZEVsZW1lbnRJbmZvcm1hdGlvbi50aXRsZTsKKworICAgIHJldHVybiBfZm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbi5wbGFjZWhvbGRlcjsKK30KKwogI3ByYWdtYSBtYXJrIC0gVUlUZXh0SW5wdXRN
dWx0aURvY3VtZW50CiAKIC0gKEJPT0wpX3Jlc3RvcmVGb2N1c1dpdGhUb2tlbjooaWQgPE5TQ29w
eWluZywgTlNTZWN1cmVDb2Rpbmc+KXRva2VuCkBAIC03NjkyLDEwICs3NzEwLDE0IEBAIC0gKHZv
aWQpX3JlbW92ZUNvbnRleHRNZW51Vmlld0lmUG9zc2libGUKICAgICBpZiAoW19hY3Rpb25TaGVl
dEFzc2lzdGFudCBoYXNDb250ZXh0TWVudUludGVyYWN0aW9uXSkKICAgICAgICAgcmV0dXJuOwog
I2VuZGlmCi0gICAgLy8gYW5kIGZvciB0aGUgZmlsZSB1cGxvYWQgcGFuZWwuCisgICAgLy8gYW5k
IGZvciB0aGUgZmlsZSB1cGxvYWQgcGFuZWwuLi4KICAgICBpZiAoX2ZpbGVVcGxvYWRQYW5lbCkK
ICAgICAgICAgcmV0dXJuOwogICAgIAorICAgIC8vIGFuZCBmb3IgdGhlIGRhdGUvdGltZSBwaWNr
ZXIuCisgICAgaWYgKFtzZWxmIGZvcm1JbnB1dENvbnRyb2xdKQorICAgICAgICByZXR1cm47Cisg
ICAgCiAgICAgW3N0ZDo6ZXhjaGFuZ2UoX2NvbnRleHRNZW51SGludENvbnRhaW5lclZpZXcsIG5p
bCkgcmVtb3ZlRnJvbVN1cGVydmlld107CiB9CiAKQEAgLTgzMTEsMTYgKzgzMzMsNyBAQCAtIChV
SVZpZXcgKilpbnB1dENvbnRleHRWaWV3Rm9yVmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJk
Vmlld0NvbnRyb2xsZXIgKiljbwogCiAtIChOU1N0cmluZyAqKWlucHV0TGFiZWxUZXh0Rm9yVmll
d0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCiB7
Ci0gICAgaWYgKCFfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5sYWJlbC5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5sYWJlbDsKLQotICAgIGlm
ICghX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uYXJpYUxhYmVsLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmFyaWFMYWJlbDsKLQotICAgIGlm
ICghX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24udGl0bGUuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24udGl0bGU7Ci0KLSAgICByZXR1cm4gX2Zv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24ucGxhY2Vob2xkZXI7CisgICAgcmV0dXJuIFtzZWxmIGlu
cHV0TGFiZWxUZXh0XTsKIH0KIAogLSAoTlNTdHJpbmcgKilpbml0aWFsVmFsdWVGb3JWaWV3Q29u
dHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKQEAgLTg2
MTIsMTAgKzg2MjUsMTAgQEAgLSAodm9pZClfZG9BZnRlclJlY2VpdmluZ0VkaXREcmFnU25hcHNo
b3RGb3JUZXN0aW5nOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbgogICAgIGFjdGlvbigpOwogfQog
Ci0tIChXS0Zvcm1JbnB1dENvbnRyb2wgKilmb3JtSW5wdXRDb250cm9sCistIChXS0RhdGVUaW1l
SW5wdXRDb250cm9sICopZm9ybUlucHV0Q29udHJvbAogewotICAgIGlmIChbX2lucHV0UGVyaXBo
ZXJhbCBpc0tpbmRPZkNsYXNzOldLRm9ybUlucHV0Q29udHJvbC5jbGFzc10pCi0gICAgICAgIHJl
dHVybiAoV0tGb3JtSW5wdXRDb250cm9sICopX2lucHV0UGVyaXBoZXJhbC5nZXQoKTsKKyAgICBp
ZiAoW19pbnB1dFBlcmlwaGVyYWwgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lSW5wdXRDb250cm9s
LmNsYXNzXSkKKyAgICAgICAgcmV0dXJuIChXS0RhdGVUaW1lSW5wdXRDb250cm9sICopX2lucHV0
UGVyaXBoZXJhbC5nZXQoKTsKICAgICByZXR1cm4gbmlsOwogfQogCkBAIC04NjgxLDE2ICs4Njk0
LDE2IEBAIC0gKHZvaWQpc2V0VGltZVBpY2tlclZhbHVlVG9Ib3VyOihOU0ludGVnZXIpaG91ciBt
aW51dGU6KE5TSW50ZWdlciltaW51dGUKICAgICBpZiAoW19wcmVzZW50ZWRGdWxsU2NyZWVuSW5w
dXRWaWV3Q29udHJvbGxlciBpc0tpbmRPZkNsYXNzOltXS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxl
ciBjbGFzc11dKQogICAgICAgICBbKFdLVGltZVBpY2tlclZpZXdDb250cm9sbGVyICopX3ByZXNl
bnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVyLmdldCgpIHNldEhvdXI6aG91ciBtaW51
dGU6bWludXRlXTsKICNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKFtfaW5wdXRQ
ZXJpcGhlcmFsIGlzS2luZE9mQ2xhc3M6W1dLRm9ybUlucHV0Q29udHJvbCBjbGFzc11dKQotICAg
ICAgICBbKFdLRm9ybUlucHV0Q29udHJvbCAqKV9pbnB1dFBlcmlwaGVyYWwuZ2V0KCkgc2V0VGlt
ZVBpY2tlckhvdXI6aG91ciBtaW51dGU6bWludXRlXTsKKyAgICBpZiAoW19pbnB1dFBlcmlwaGVy
YWwgaXNLaW5kT2ZDbGFzczpbV0tEYXRlVGltZUlucHV0Q29udHJvbCBjbGFzc11dKQorICAgICAg
ICBbKFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wgKilfaW5wdXRQZXJpcGhlcmFsLmdldCgpIHNldFRp
bWVQaWNrZXJIb3VyOmhvdXIgbWludXRlOm1pbnV0ZV07CiAjZW5kaWYKIH0KIAogLSAoZG91Ymxl
KXRpbWVQaWNrZXJWYWx1ZUhvdXIKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlm
IChbX2lucHV0UGVyaXBoZXJhbCBpc0tpbmRPZkNsYXNzOltXS0Zvcm1JbnB1dENvbnRyb2wgY2xh
c3NdXSkKLSAgICAgICAgcmV0dXJuIFsoV0tGb3JtSW5wdXRDb250cm9sICopX2lucHV0UGVyaXBo
ZXJhbC5nZXQoKSB0aW1lUGlja2VyVmFsdWVIb3VyXTsKKyAgICBpZiAoW19pbnB1dFBlcmlwaGVy
YWwgaXNLaW5kT2ZDbGFzczpbV0tEYXRlVGltZUlucHV0Q29udHJvbCBjbGFzc11dKQorICAgICAg
ICByZXR1cm4gWyhXS0RhdGVUaW1lSW5wdXRDb250cm9sICopX2lucHV0UGVyaXBoZXJhbC5nZXQo
KSB0aW1lUGlja2VyVmFsdWVIb3VyXTsKICNlbmRpZgogICAgIHJldHVybiAtMTsKIH0KQEAgLTg2
OTgsOCArODcxMSw4IEBAIC0gKGRvdWJsZSl0aW1lUGlja2VyVmFsdWVIb3VyCiAtIChkb3VibGUp
dGltZVBpY2tlclZhbHVlTWludXRlCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBp
ZiAoW19pbnB1dFBlcmlwaGVyYWwgaXNLaW5kT2ZDbGFzczpbV0tGb3JtSW5wdXRDb250cm9sIGNs
YXNzXV0pCi0gICAgICAgIHJldHVybiBbKFdLRm9ybUlucHV0Q29udHJvbCAqKV9pbnB1dFBlcmlw
aGVyYWwuZ2V0KCkgdGltZVBpY2tlclZhbHVlTWludXRlXTsKKyAgICBpZiAoW19pbnB1dFBlcmlw
aGVyYWwgaXNLaW5kT2ZDbGFzczpbV0tEYXRlVGltZUlucHV0Q29udHJvbCBjbGFzc11dKQorICAg
ICAgICByZXR1cm4gWyhXS0RhdGVUaW1lSW5wdXRDb250cm9sICopX2lucHV0UGVyaXBoZXJhbC5n
ZXQoKSB0aW1lUGlja2VyVmFsdWVNaW51dGVdOwogI2VuZGlmCiAgICAgcmV0dXJuIC0xOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJ
bnB1dENvbnRyb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVU
aW1lSW5wdXRDb250cm9sLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODRiYzE0ODg1YjI1NjBhYjRiODQwOTc1NWY0
M2VmMDU4MzdlYWIzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLmgKQEAgLTAsMCArMSw0MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0ICJXS0Zvcm1QZXJp
cGhlcmFsQmFzZS5oIgorCitAY2xhc3MgV0tDb250ZW50VmlldzsKKworQGludGVyZmFjZSBXS0Rh
dGVUaW1lSW5wdXRDb250cm9sIDogV0tGb3JtUGVyaXBoZXJhbEJhc2UKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3OworQGVuZAorCitAaW50ZXJmYWNl
IFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wgKFdLVGVzdGluZykKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgTlNTdHJpbmcgKmRhdGVUaW1lUGlja2VyQ2FsZW5kYXJUeXBlOworQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBkb3VibGUgdGltZVBpY2tlclZhbHVlSG91cjsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgZG91YmxlIHRpbWVQaWNrZXJWYWx1ZU1pbnV0
ZTsKKy0gKHZvaWQpc2V0VGltZVBpY2tlckhvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJ
bnRlZ2VyKW1pbnV0ZTsKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlu
cHV0Q29udHJvbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVU
aW1lSW5wdXRDb250cm9sLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjM2EwYTk2NjU2NDg5MzNjYjU1YjFmMTY1
YzRmNzM5ZWJiYzczMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbQpAQCAtMCwwICsxLDQ2OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tEYXRlVGltZUlucHV0
Q29udHJvbC5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCAiVXNlcklu
dGVyZmFjZUlkaW9tLmgiCisjaW1wb3J0ICJXS0NvbnRlbnRWaWV3LmgiCisjaW1wb3J0ICJXS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9y
dCA8VUlLaXQvVUlCYXJCdXR0b25JdGVtLmg+CisjaW1wb3J0IDxVSUtpdC9VSURhdGVQaWNrZXIu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitAaW50ZXJmYWNlIFdLRGF0
ZVRpbWVDb250ZXh0TWVudVZpZXdDb250cm9sbGVyIDogVUlWaWV3Q29udHJvbGxlciB7Cit9Cist
IChpZClpbml0OworQGVuZAorCitAaW50ZXJmYWNlIFdLRGF0ZVRpbWVQaWNrZXIgOiBOU09iamVj
dDxXS0Zvcm1Db250cm9sCisjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCissIFVJQ29udGV4dE1lbnVJ
bnRlcmFjdGlvbkRlbGVnYXRlCisjZW5kaWYKKz4geworICAgIFJldGFpblB0cjxVSURhdGVQaWNr
ZXI+IF9kYXRlUGlja2VyOworICAgIE5TU3RyaW5nICpfZm9ybWF0U3RyaW5nOworICAgIE5TU3Ry
aW5nICpfaW5pdGlhbFZhbHVlOworICAgIE5TVGltZUludGVydmFsIF9pbml0aWFsVmFsdWVBc051
bWJlcjsKKyAgICBCT09MIF9zaG91bGRSZW1vdmVUaW1lWm9uZUluZm9ybWF0aW9uOworICAgIEJP
T0wgX2lzVGltZUlucHV0OworICAgIFdLQ29udGVudFZpZXcqIF92aWV3OworICAgIENHUG9pbnQg
X2ludGVyYWN0aW9uUG9pbnQ7CisgICAgUmV0YWluUHRyPFdLRGF0ZVRpbWVDb250ZXh0TWVudVZp
ZXdDb250cm9sbGVyPiBfdmlld0NvbnRyb2xsZXI7CisjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCisg
ICAgUmV0YWluUHRyPFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbj4gX2RhdGVUaW1lQ29udGV4dE1l
bnVJbnRlcmFjdGlvbjsKKyNlbmRpZgorICAgIEJPT0wgX3ByZXNlbnRpbmc7CisgICAgQk9PTCBf
cHJlc2VydmluZ0ZvY3VzOworfQorLSAoaWQpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICop
dmlldyBkYXRlUGlja2VyTW9kZTooVUlEYXRlUGlja2VyTW9kZSltb2RlOworLSAoV0tEYXRlVGlt
ZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlcjsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmNhbGVuZGFyVHlwZTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgZG91YmxlIGhvdXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIGRvdWJsZSBtaW51dGU7CistICh2b2lkKXNldEhvdXI6KE5TSW50ZWdlcilob3Vy
IG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZTsKK0BlbmQKKworI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV0tGb3JtSW5wdXRDb250cm9sQWRkaXRp
b25zLm1tPgorI2VuZGlmCisKKworQGltcGxlbWVudGF0aW9uIFdLRGF0ZVRpbWVDb250ZXh0TWVu
dVZpZXdDb250cm9sbGVyCisKKy0gKGlkKWluaXQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAo
Q0dTaXplKXByZWZlcnJlZENvbnRlbnRTaXplCit7CisgICAgcmV0dXJuIFtzZWxmLnZpZXcgc3lz
dGVtTGF5b3V0U2l6ZUZpdHRpbmdTaXplOlVJTGF5b3V0Rml0dGluZ0NvbXByZXNzZWRTaXplXTsK
K30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tEYXRlVGltZVBpY2tlcgorCitzdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCBrRGF0ZUZvcm1hdFN0cmluZyA9IEAieXl5eS1NTS1kZCI7IC8vICIy
MDExLTAxLTI3Ii4KK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGtNb250aEZvcm1hdFN0cmluZyA9
IEAieXl5eS1NTSI7IC8vICIyMDExLTAxIi4KK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGtUaW1l
Rm9ybWF0U3RyaW5nID0gQCJISDptbSI7IC8vICIxMzo0NSIuCitzdGF0aWMgY29uc3QgTlNUaW1l
SW50ZXJ2YWwga01pbGxpc2Vjb25kc1BlclNlY29uZCA9IDEwMDA7CisKKyNpZiAhVVNFKEFQUExF
X0lOVEVSTkFMX1NESykgJiYgSEFWRShVSURBVEVQSUNLRVJfU1RZTEUpCistIChVSURhdGVQaWNr
ZXJTdHlsZSlkYXRlUGlja2VyU3R5bGUKK3sKKyAgICByZXR1cm4gVUlEYXRlUGlja2VyU3R5bGVB
dXRvbWF0aWM7Cit9CisjZW5kaWYKKworLSAoaWQpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3
ICopdmlldyBkYXRlUGlja2VyTW9kZTooVUlEYXRlUGlja2VyTW9kZSltb2RlCit7CisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgX3ZpZXcg
PSB2aWV3OworICAgIF9pbnRlcmFjdGlvblBvaW50ID0gW192aWV3IGxhc3RJbnRlcmFjdGlvbkxv
Y2F0aW9uXTsKKyAgICBfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbiA9IE5POworICAg
IF9pc1RpbWVJbnB1dCA9IE5POworICAgIHN3aXRjaCAodmlldy5mb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uLmVsZW1lbnRUeXBlKSB7CisgICAgY2FzZSBJbnB1dFR5cGU6OkRhdGU6CisgICAgICAg
IF9mb3JtYXRTdHJpbmcgPSBrRGF0ZUZvcm1hdFN0cmluZzsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBJbnB1dFR5cGU6Ok1vbnRoOgorICAgICAgICBfZm9ybWF0U3RyaW5nID0ga01vbnRoRm9y
bWF0U3RyaW5nOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElucHV0VHlwZTo6VGltZToKKyAg
ICAgICAgX2Zvcm1hdFN0cmluZyA9IGtUaW1lRm9ybWF0U3RyaW5nOworICAgICAgICBfaXNUaW1l
SW5wdXQgPSBZRVM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlVGlt
ZUxvY2FsOgorICAgICAgICBfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbiA9IFlFUzsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IAorICAgIF9kYXRlUGlja2VyID0gYWRvcHROUyhbW1VJRGF0ZVBpY2tlciBhbGxvY10gaW5pdF0p
OworCisgICAgW19kYXRlUGlja2VyIHNldERhdGVQaWNrZXJNb2RlOm1vZGVdOworICAgIFtfZGF0
ZVBpY2tlciBzZXRIaWRkZW46Tk9dOworICAgIAorI2lmIEhBVkUoVUlEQVRFUElDS0VSX1NUWUxF
KQorICAgIFtfZGF0ZVBpY2tlciBzZXRQcmVmZXJyZWREYXRlUGlja2VyU3R5bGU6W3NlbGYgZGF0
ZVBpY2tlclN0eWxlXV07CisjZW5kaWYKKyAgICBpZiAoW3NlbGYgc2hvdWxkUHJlc2VudEdyZWdv
cmlhbkNhbGVuZGFyOnZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbl0pCisgICAgICAgIF9k
YXRlUGlja2VyLmdldCgpLmNhbGVuZGFyID0gW05TQ2FsZW5kYXIgY2FsZW5kYXJXaXRoSWRlbnRp
ZmllcjpOU0NhbGVuZGFySWRlbnRpZmllckdyZWdvcmlhbl07CisgICAgCisgICAgW19kYXRlUGlj
a2VyIGFkZFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX2RhdGVDaGFuZ2VIYW5kbGVyOikg
Zm9yQ29udHJvbEV2ZW50czpVSUNvbnRyb2xFdmVudFZhbHVlQ2hhbmdlZF07CisgICAgCisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKyNpZiBVU0UoVUlDT05URVhUTUVOVSkKKworLSAoVUlUYXJnZXRl
ZFByZXZpZXcgKiljb250ZXh0TWVudUludGVyYWN0aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rp
b24gKilpbnRlcmFjdGlvbiBwcmV2aWV3Rm9ySGlnaGxpZ2h0aW5nTWVudVdpdGhDb25maWd1cmF0
aW9uOihVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KK3sKKyAgICBy
ZXR1cm4gW192aWV3IF9jcmVhdGVUYXJnZXRlZENvbnRleHRNZW51SGludFByZXZpZXdJZlBvc3Np
YmxlXTsKK30KKworLSAoX1VJQ29udGV4dE1lbnVTdHlsZSAqKV9jb250ZXh0TWVudUludGVyYWN0
aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBzdHlsZUZvck1lbnVX
aXRoQ29uZmlndXJhdGlvbjooVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0
aW9uCit7CisgICAgX1VJQ29udGV4dE1lbnVTdHlsZSAqc3R5bGUgPSBbX1VJQ29udGV4dE1lbnVT
dHlsZSBkZWZhdWx0U3R5bGVdOworICAgIHN0eWxlLmhhc0ludGVyYWN0aXZlUHJldmlldyA9IFlF
UzsKKyAgICBzdHlsZS5wcmVmZXJyZWRMYXlvdXQgPSBfVUlDb250ZXh0TWVudUxheW91dEF1dG9t
YXRpYzsKKyAgICByZXR1cm4gc3R5bGU7Cit9CisKKy0gKFVJQ29udGV4dE1lbnVDb25maWd1cmF0
aW9uICopY29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICop
aW50ZXJhY3Rpb24gY29uZmlndXJhdGlvbkZvck1lbnVBdExvY2F0aW9uOihDR1BvaW50KWxvY2F0
aW9uCit7CisgICAgcmV0dXJuIFtVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiBjb25maWd1cmF0
aW9uV2l0aElkZW50aWZpZXI6QCJfVUlEYXRlUGlja2VyQ29tcGFjdEVkaXRvciIgcHJldmlld1By
b3ZpZGVyOl57CisKKyAgICAgICAgX3ZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1dLRGF0ZVRp
bWVDb250ZXh0TWVudVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFJldGFp
blB0cjxVSU5hdmlnYXRpb25Db250cm9sbGVyPiBuYXZpZ2F0aW9uQ29udHJvbGxlciA9IGFkb3B0
TlMoW1tVSU5hdmlnYXRpb25Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFJvb3RWaWV3Q29udHJv
bGxlcjpfdmlld0NvbnRyb2xsZXIuZ2V0KCldKTsKKyAgICAgICAgTlNTdHJpbmcgKnJlc2V0U3Ry
aW5nID0gV0VCX1VJX1NUUklOR19LRVkoIlJlc2V0IiwgIlJlc2V0IEJ1dHRvbiBEYXRlL1RpbWUg
Q29udGV4dCBNZW51IiwgIlJlc2V0IGJ1dHRvbiBpbiBkYXRlIGlucHV0IGNvbnRleHQgbWVudSIp
OworCisgICAgICAgIFtfdmlld0NvbnRyb2xsZXIgc2V0VG9vbGJhckl0ZW1zOkBbIFtbVUlCYXJC
dXR0b25JdGVtIGFsbG9jXSBpbml0V2l0aEJhckJ1dHRvblN5c3RlbUl0ZW06VUlCYXJCdXR0b25T
eXN0ZW1JdGVtRmxleGlibGVTcGFjZSB0YXJnZXQ6bmlsIGFjdGlvbjpuaWxdLCBbW1VJQmFyQnV0
dG9uSXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpyZXNldFN0cmluZyBzdHlsZTpVSUJhckJ1dHRv
bkl0ZW1TdHlsZVBsYWluIHRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IocmVzZXQ6KV0gXV07
CisgICAgICAgIFtuYXZpZ2F0aW9uQ29udHJvbGxlciBzZXRUb29sYmFySGlkZGVuOk5PXTsKKwor
ICAgICAgICBbX3ZpZXdDb250cm9sbGVyIHNldFZpZXc6X2RhdGVQaWNrZXIuZ2V0KCldOworCisg
ICAgICAgIE5TU3RyaW5nICp0aXRsZVRleHQgPSBfdmlldy5pbnB1dExhYmVsVGV4dDsKKyAgICAg
ICAgaWYgKCFbdGl0bGVUZXh0IGlzRXF1YWw6QCIiXSkgeworICAgICAgICAgICAgVUlMYWJlbCAq
dGl0bGUgPSBbW1VJTGFiZWwgYWxsb2NdIGluaXRdOworICAgICAgICAgICAgdGl0bGUuZm9udCA9
IFtVSUZvbnQgcHJlZmVycmVkRm9udEZvclRleHRTdHlsZTpVSUZvbnRUZXh0U3R5bGVGb290bm90
ZV07CisgICAgICAgICAgICB0aXRsZS50ZXh0ID0gdGl0bGVUZXh0OworICAgICAgICAgICAgdGl0
bGUudGV4dENvbG9yID0gW1VJQ29sb3Igc2Vjb25kYXJ5TGFiZWxDb2xvcl07CisgICAgICAgICAg
ICB0aXRsZS50ZXh0QWxpZ25tZW50ID0gTlNUZXh0QWxpZ25tZW50TmF0dXJhbDsKKyAgICAgICAg
ICAgIF92aWV3Q29udHJvbGxlci5nZXQoKS5uYXZpZ2F0aW9uSXRlbS5sZWZ0QmFyQnV0dG9uSXRl
bSA9IFtbVUlCYXJCdXR0b25JdGVtIGFsbG9jXSBpbml0V2l0aEN1c3RvbVZpZXc6dGl0bGVdOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFtuYXZpZ2F0aW9uQ29udHJvbGxlciBzZXROYXZp
Z2F0aW9uQmFySGlkZGVuOllFUyBhbmltYXRlZDpOT107CisgICAgICAgIAorICAgICAgICBuYXZp
Z2F0aW9uQ29udHJvbGxlci5nZXQoKS5uYXZpZ2F0aW9uQmFyLmJhY2tncm91bmRDb2xvciA9IFVJ
Q29sb3IuY2xlYXJDb2xvcjsKKyAgICAgICAgbmF2aWdhdGlvbkNvbnRyb2xsZXIuZ2V0KCkubmF2
aWdhdGlvbkJhci50cmFuc2x1Y2VudCA9IE5POworICAgICAgICBuYXZpZ2F0aW9uQ29udHJvbGxl
ci5nZXQoKS50b29sYmFyLmJhY2tncm91bmRDb2xvciA9IFVJQ29sb3IuY2xlYXJDb2xvcjsKKyAg
ICAgICAgbmF2aWdhdGlvbkNvbnRyb2xsZXIuZ2V0KCkudG9vbGJhci50cmFuc2x1Y2VudCA9IE5P
OworICAgICAgICByZXR1cm4gbmF2aWdhdGlvbkNvbnRyb2xsZXIuZ2V0KCk7CisgICAgfSBhY3Rp
b25Qcm92aWRlcjpuaWxdOworfQorCistICh2b2lkKWNvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJ
Q29udGV4dE1lbnVJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHdpbGxFbmRGb3JDb25maWd1cmF0
aW9uOihVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gYW5pbWF0b3I6
KGlkPFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbkFuaW1hdGluZz4pYW5pbWF0b3IKK3sKKyAgICBb
YW5pbWF0b3IgYWRkQ29tcGxldGlvbjpeeworICAgICAgICBbX3ZpZXcgYWNjZXNzb3J5RG9uZV07
CisgICAgfV07Cit9CisKKy0gKHZvaWQpcmVtb3ZlQ29udGV4dE1lbnVJbnRlcmFjdGlvbgorewor
ICAgIGlmIChfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uKSB7CisgICAgICAgIFtfdmll
dyByZW1vdmVJbnRlcmFjdGlvbjpfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uLmdldCgp
XTsKKyAgICAgICAgX2RhdGVUaW1lQ29udGV4dE1lbnVJbnRlcmFjdGlvbiA9IG5pbDsKKyAgICAg
ICAgW192aWV3IF9yZW1vdmVDb250ZXh0TWVudVZpZXdJZlBvc3NpYmxlXTsKKyAgICB9Cit9CisK
Ky0gKHZvaWQpZW5zdXJlQ29udGV4dE1lbnVJbnRlcmFjdGlvbgoreworICAgIGlmICghX2RhdGVU
aW1lQ29udGV4dE1lbnVJbnRlcmFjdGlvbikgeworICAgICAgICBfZGF0ZVRpbWVDb250ZXh0TWVu
dUludGVyYWN0aW9uID0gYWRvcHROUyhbW1VJQ29udGV4dE1lbnVJbnRlcmFjdGlvbiBhbGxvY10g
aW5pdFdpdGhEZWxlZ2F0ZTpzZWxmXSk7CisgICAgICAgIFtfdmlldyBhZGRJbnRlcmFjdGlvbjpf
ZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uLmdldCgpXTsKKyAgICB9Cit9CisKKy0gKHZv
aWQpc2hvd0RhdGVUaW1lUGlja2VyCit7CisjaWYgSEFWRShVSUNPTlRFWFRNRU5VX0xPQ0FUSU9O
KQorICAgIFtzZWxmIGVuc3VyZUNvbnRleHRNZW51SW50ZXJhY3Rpb25dOworICAgIFtfZGF0ZVRp
bWVDb250ZXh0TWVudUludGVyYWN0aW9uIF9wcmVzZW50TWVudUF0TG9jYXRpb246X2ludGVyYWN0
aW9uUG9pbnRdOworI2VuZGlmCit9CisKKyNlbmRpZgorCistICh2b2lkKXJlc2V0OihpZClzZW5k
ZXIKK3sKKyAgICBbc2VsZiBzZXREYXRlVGltZVBpY2tlclRvSW5pdGlhbFZhbHVlXTsKKyAgICBb
X3ZpZXcgcGFnZV0tPnNldEZvY3VzZWRFbGVtZW50VmFsdWUoU3RyaW5nKCkpOworfQorCistIChO
U1N0cmluZyAqKWNhbGVuZGFyVHlwZQoreworICAgIHJldHVybiBbX2RhdGVQaWNrZXIgY2FsZW5k
YXJdLmNhbGVuZGFySWRlbnRpZmllcjsKK30KKworLSAoZG91YmxlKWhvdXIKK3sKKyAgICBOU0Nh
bGVuZGFyICpjYWxlbmRhciA9IFtOU0NhbGVuZGFyIGN1cnJlbnRDYWxlbmRhcl07CisgICAgTlNE
YXRlQ29tcG9uZW50cyAqY29tcG9uZW50cyA9IFtjYWxlbmRhciBjb21wb25lbnRzOk5TQ2FsZW5k
YXJVbml0SG91ciBmcm9tRGF0ZTpbX2RhdGVQaWNrZXIgZGF0ZV1dOworCisgICAgcmV0dXJuIFtj
b21wb25lbnRzIGhvdXJdOworfQorCistIChkb3VibGUpbWludXRlCit7CisgICAgTlNDYWxlbmRh
ciAqY2FsZW5kYXIgPSBbTlNDYWxlbmRhciBjdXJyZW50Q2FsZW5kYXJdOworICAgIE5TRGF0ZUNv
bXBvbmVudHMgKmNvbXBvbmVudHMgPSBbY2FsZW5kYXIgY29tcG9uZW50czpOU0NhbGVuZGFyVW5p
dE1pbnV0ZSBmcm9tRGF0ZTpbX2RhdGVQaWNrZXIgZGF0ZV1dOworCisgICAgcmV0dXJuIFtjb21w
b25lbnRzIG1pbnV0ZV07Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtfZGF0ZVBpY2tl
ciByZW1vdmVUYXJnZXQ6c2VsZiBhY3Rpb246TlVMTCBmb3JDb250cm9sRXZlbnRzOlVJQ29udHJv
bEV2ZW50VmFsdWVDaGFuZ2VkXTsKKyAgICBbc2VsZiByZW1vdmVDb250ZXh0TWVudUludGVyYWN0
aW9uXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKEJPT0wpc2hvdWxkUHJlc2VudEdy
ZWdvcmlhbkNhbGVuZGFyOihjb25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJilub2RlSW5m
bworeworICAgIHJldHVybiBub2RlSW5mby5hdXRvZmlsbEZpZWxkTmFtZSA9PSBXZWJDb3JlOjpB
dXRvZmlsbEZpZWxkTmFtZTo6Q2NFeHBNb250aAorICAgICAgICB8fCBub2RlSW5mby5hdXRvZmls
bEZpZWxkTmFtZSA9PSBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Q2NFeHAKKyAgICAgICAg
fHwgbm9kZUluZm8uYXV0b2ZpbGxGaWVsZE5hbWUgPT0gV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5h
bWU6OkNjRXhwWWVhcjsKK30KKworLSAoVUlWaWV3ICopY29udHJvbFZpZXcKK3sKKyAgICByZXR1
cm4gX2RhdGVQaWNrZXIuZ2V0KCk7Cit9CisKKy0gKE5TSW50ZWdlcilfdGltZVpvbmVPZmZzZXRG
cm9tR01UOihOU0RhdGUgKilkYXRlCit7CisgICAgaWYgKCFfc2hvdWxkUmVtb3ZlVGltZVpvbmVJ
bmZvcm1hdGlvbikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gW19kYXRlUGlja2Vy
LmdldCgpLnRpbWVab25lIHNlY29uZHNGcm9tR01URm9yRGF0ZTpkYXRlXTsKK30KKworLSAoTlNT
dHJpbmcgKilfc2FuaXRpemVJbnB1dFZhbHVlRm9yRm9ybWF0dGVyOihOU1N0cmluZyAqKXZhbHVl
Cit7CisgICAgLy8gVGhlICJ0aW1lIiBpbnB1dCB0eXBlIG1heSBoYXZlIHNlY29uZHMgYW5kIG1p
bGxpc2Vjb25kcyBpbmZvcm1hdGlvbiB3aGljaCB3ZQorICAgIC8vIGp1c3QgaWdub3JlLiBGb3Ig
ZXhhbXBsZTogIjAxOjU2OjIwLjM5MSIgaXMgc2hvcnRlbmVkIHRvIGp1c3QgIjAxOjU2Ii4KKyAg
ICBpZiAoX2lzVGltZUlucHV0KQorICAgICAgICByZXR1cm4gW3ZhbHVlIHN1YnN0cmluZ1RvSW5k
ZXg6W2tUaW1lRm9ybWF0U3RyaW5nIGxlbmd0aF1dOworCisgICAgcmV0dXJuIHZhbHVlOworfQor
CistICh2b2lkKV9kYXRlQ2hhbmdlZFNldEFzTnVtYmVyCit7CisgICAgTlNEYXRlICpkYXRlID0g
W19kYXRlUGlja2VyIGRhdGVdOworICAgIFtfdmlldyB1cGRhdGVGb2N1c2VkRWxlbWVudFZhbHVl
QXNOdW1iZXI6KFtkYXRlIHRpbWVJbnRlcnZhbFNpbmNlMTk3MF0gKyBbc2VsZiBfdGltZVpvbmVP
ZmZzZXRGcm9tR01UOmRhdGVdKSAqIGtNaWxsaXNlY29uZHNQZXJTZWNvbmRdOworfQorCistIChS
ZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPilkYXRlRm9ybWF0dGVyRm9yUGlja2VyCit7CisgICAg
UmV0YWluUHRyPE5TTG9jYWxlPiBlbmdsaXNoTG9jYWxlID0gYWRvcHROUyhbW05TTG9jYWxlIGFs
bG9jXSBpbml0V2l0aExvY2FsZUlkZW50aWZpZXI6QCJlbl9VU19QT1NJWCJdKTsKKyAgICBSZXRh
aW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBkYXRlRm9ybWF0dGVyID0gYWRvcHROUyhbW05TRGF0ZUZv
cm1hdHRlciBhbGxvY10gaW5pdF0pOworICAgIFtkYXRlRm9ybWF0dGVyIHNldFRpbWVab25lOl9k
YXRlUGlja2VyLmdldCgpLnRpbWVab25lXTsKKyAgICBbZGF0ZUZvcm1hdHRlciBzZXREYXRlRm9y
bWF0Ol9mb3JtYXRTdHJpbmddOworICAgIFtkYXRlRm9ybWF0dGVyIHNldExvY2FsZTplbmdsaXNo
TG9jYWxlLmdldCgpXTsKKyAgICByZXR1cm4gZGF0ZUZvcm1hdHRlcjsKK30KKworLSAodm9pZClf
ZGF0ZUNoYW5nZWRTZXRBc1N0cmluZworeworICAgIC8vIEZvcmNlIEVuZ2xpc2ggbG9jYWxlIGJl
Y2F1c2UgdGhhdCBpcyB3aGF0IEhUTUw1IHZhbHVlIHBhcnNpbmcgZXhwZWN0cy4KKyAgICBSZXRh
aW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBkYXRlRm9ybWF0dGVyID0gW3NlbGYgZGF0ZUZvcm1hdHRl
ckZvclBpY2tlcl07CisgICAgW192aWV3IHVwZGF0ZUZvY3VzZWRFbGVtZW50VmFsdWU6W2RhdGVG
b3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6W19kYXRlUGlja2VyIGRhdGVdXV07Cit9CisKKy0gKHZv
aWQpX2RhdGVDaGFuZ2VkCit7CisgICAgLy8gSW50ZXJuYWxseSwgRE9NSFRNTElucHV0RWxlbWVu
dCBzZXRWYWx1ZUFzKiBlYWNoIHRha2UgZGlmZmVyZW50IHZhbHVlcyBmb3IKKyAgICAvLyBkaWZm
ZXJlbnQgZGF0ZSB0eXBlcy4gSXQgaXMgc29tZXRpbWVzIGVhc2llciB0byBzZXQgdGhlIGRhdGUg
aW4gZGlmZmVyZW50IHdheXM6CisgICAgLy8gICAtIHVzZSBzZXRWYWx1ZUFzU3RyaW5nIGZvciAi
ZGF0ZSIsICJtb250aCIsIGFuZCAidGltZSIuCisgICAgLy8gICAtIHVzZSBzZXRWYWx1ZUFzTnVt
YmVyIGZvciAiZGF0ZXRpbWUtbG9jYWwiLgorICAgIGlmIChfZm9ybWF0U3RyaW5nKQorICAgICAg
ICBbc2VsZiBfZGF0ZUNoYW5nZWRTZXRBc1N0cmluZ107CisgICAgZWxzZQorICAgICAgICBbc2Vs
ZiBfZGF0ZUNoYW5nZWRTZXRBc051bWJlcl07Cit9CisKKy0gKHZvaWQpX2RhdGVDaGFuZ2VIYW5k
bGVyOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBfZGF0ZUNoYW5nZWRdOworfQorCistICh2b2lk
KXNldERhdGVUaW1lUGlja2VyVG9Jbml0aWFsVmFsdWUKK3sKKyAgICBpZiAoW19pbml0aWFsVmFs
dWUgaXNFcXVhbDogQCIiXSkgeworICAgICAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpbTlNEYXRl
IGRhdGVdXTsKKyAgICAgICAgW3NlbGYgX2RhdGVDaGFuZ2VkXTsKKyAgICB9IGVsc2UgaWYgKF9m
b3JtYXRTdHJpbmcpIHsKKyAgICAgICAgLy8gQ29udmVydCB0aGUgc3RyaW5nIHZhbHVlIHRvIGEg
ZGF0ZSBvYmplY3QgZm9yIHRoZSBmaWVsZHMgd2hlcmUgd2UgaGF2ZSBhIGZvcm1hdCBzdHJpbmcu
CisgICAgICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGRhdGVGb3JtYXR0ZXIgPSBbc2Vs
ZiBkYXRlRm9ybWF0dGVyRm9yUGlja2VyXTsKKyAgICAgICAgTlNEYXRlICpwYXJzZWREYXRlID0g
W2RhdGVGb3JtYXR0ZXIgZGF0ZUZyb21TdHJpbmc6W3NlbGYgX3Nhbml0aXplSW5wdXRWYWx1ZUZv
ckZvcm1hdHRlcjpfaW5pdGlhbFZhbHVlXV07CisgICAgICAgIFtfZGF0ZVBpY2tlciBzZXREYXRl
OnBhcnNlZERhdGUgPyBwYXJzZWREYXRlIDogW05TRGF0ZSBkYXRlXV07CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gQ29udmVydCB0aGUgbnVtYmVyIHZhbHVlIHRvIGEgZGF0ZSBvYmplY3QgZm9y
IHRoZSBmaWVsZHMgYWZmZWN0ZWQgYnkgdGltZXpvbmVzLgorICAgICAgICBOU1RpbWVJbnRlcnZh
bCBzZWNvbmRzU2luY2UxOTcwID0gX2luaXRpYWxWYWx1ZUFzTnVtYmVyIC8ga01pbGxpc2Vjb25k
c1BlclNlY29uZDsKKyAgICAgICAgTlNJbnRlZ2VyIHRpbWVab25lT2Zmc2V0ID0gW3NlbGYgX3Rp
bWVab25lT2Zmc2V0RnJvbUdNVDpbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcw
OnNlY29uZHNTaW5jZTE5NzBdXTsKKyAgICAgICAgTlNUaW1lSW50ZXJ2YWwgYWRqdXN0ZWRTZWNv
bmRzU2luY2UxOTcwID0gc2Vjb25kc1NpbmNlMTk3MCAtIHRpbWVab25lT2Zmc2V0OworICAgICAg
ICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2Ux
OTcwOmFkanVzdGVkU2Vjb25kc1NpbmNlMTk3MF1dOworICAgIH0KK30KKworLSAodm9pZCljb250
cm9sQmVnaW5FZGl0aW5nCit7CisgICAgCisgICAgaWYgKF9wcmVzZW50aW5nKQorICAgICAgICBy
ZXR1cm47CisgICAgX3ByZXNlbnRpbmcgPSBZRVM7CisKKyAgICBpZiAoIV9wcmVzZXJ2aW5nRm9j
dXMgJiYgKF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gSW5w
dXRUeXBlOjpUaW1lIHx8IF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5
cGUgPT0gSW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsKSkgeworICAgICAgICBbX3ZpZXcgcHJlc2Vy
dmVGb2N1c107CisgICAgICAgIF9wcmVzZXJ2aW5nRm9jdXMgPSBZRVM7CisgICAgfQorICAgIAor
ICAgIC8vIFNldCB0aGUgdGltZSB6b25lIGluIGNhc2UgaXQgY2hhbmdlZC4KKyAgICBfZGF0ZVBp
Y2tlci5nZXQoKS50aW1lWm9uZSA9IFtOU1RpbWVab25lIGxvY2FsVGltZVpvbmVdOworCisgICAg
Ly8gQ3VycmVudGx5IG5vIHZhbHVlIGZvciB0aGUgPGlucHV0Pi4gU3RhcnQgdGhlIHBpY2tlciB3
aXRoIHRoZSBjdXJyZW50IHRpbWUuCisgICAgLy8gQWxzbywgdXBkYXRlIHRoZSBhY3R1YWwgPGlu
cHV0PiB2YWx1ZS4KKyAgICBfaW5pdGlhbFZhbHVlID0gX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbi52YWx1ZTsKKyAgICBfaW5pdGlhbFZhbHVlQXNOdW1iZXIgPSBfdmlldy5mb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uLnZhbHVlQXNOdW1iZXI7CisgICAgW3NlbGYgc2V0RGF0ZVRpbWVQ
aWNrZXJUb0luaXRpYWxWYWx1ZV07CisgICAgCisgICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9y
bWF0aW9uUmVxdWVzdCBwb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdCB7IFdlYkNvcmU6OkludFBv
aW50KF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24ubGFzdEludGVyYWN0aW9uTG9jYXRp
b24pIH07CisgICAgW192aWV3IGRvQWZ0ZXJQb3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlOl4oV2Vi
S2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBpbnRlcmFjdGlvbkluZm9ybWF0
aW9uKSB7CisgICAgICAgIFtzZWxmIHNob3dEYXRlVGltZVBpY2tlcl07CisgICAgfSBmb3JSZXF1
ZXN0OnBvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0XTsKKworfQorCistICh2b2lkKXNldEhvdXI6
KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZQoreworICAgIE5TU3RyaW5n
ICp0aW1lU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlLjJsZDolLjJsZCIs
IChsb25nKWhvdXIsIChsb25nKW1pbnV0ZV07CisgICAgW19kYXRlUGlja2VyIHNldERhdGU6W1tz
ZWxmIGRhdGVGb3JtYXR0ZXJGb3JQaWNrZXJdIGRhdGVGcm9tU3RyaW5nOnRpbWVTdHJpbmddXTsK
KyAgICBbc2VsZiBfZGF0ZUNoYW5nZWRdOworfQorCistIChXS0RhdGVUaW1lQ29udGV4dE1lbnVW
aWV3Q29udHJvbGxlciAqKXZpZXdDb250cm9sbGVyCit7CisgICAgcmV0dXJuIF92aWV3Q29udHJv
bGxlci5nZXQoKTsKK30KKworLSAodm9pZCljb250cm9sRW5kRWRpdGluZworeworICAgIF9wcmVz
ZW50aW5nID0gTk87CisgICAgaWYgKF9wcmVzZXJ2aW5nRm9jdXMpIHsKKyAgICAgICAgW192aWV3
IHJlbGVhc2VGb2N1c107CisgICAgICAgIF9wcmVzZXJ2aW5nRm9jdXMgPSBOTzsKKyAgICB9Cisg
ICAgW3NlbGYgcmVtb3ZlQ29udGV4dE1lbnVJbnRlcmFjdGlvbl07Cit9CitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBXS0RhdGVUaW1lSW5wdXRDb250cm9sCisKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3Cit7CisgICAgVUlEYXRlUGlja2VyTW9kZSBt
b2RlOworCisgICAgc3dpdGNoICh2aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVu
dFR5cGUpIHsKKyAgICBjYXNlIElucHV0VHlwZTo6RGF0ZToKKyAgICAgICAgbW9kZSA9IFVJRGF0
ZVBpY2tlck1vZGVEYXRlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElucHV0VHlwZTo6RGF0
ZVRpbWVMb2NhbDoKKyAgICAgICAgbW9kZSA9IFVJRGF0ZVBpY2tlck1vZGVEYXRlQW5kVGltZTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnB1dFR5cGU6OlRpbWU6CisgICAgICAgIG1vZGUg
PSBVSURhdGVQaWNrZXJNb2RlVGltZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnB1dFR5
cGU6Ok1vbnRoOgorICAgICAgICBtb2RlID0gKFVJRGF0ZVBpY2tlck1vZGUpVUlEYXRlUGlja2Vy
TW9kZVllYXJBbmRNb250aDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
W3NlbGYgcmVsZWFzZV07CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgUmV0YWlu
UHRyPE5TT2JqZWN0IDxXS0Zvcm1Db250cm9sPj4gY29udHJvbDsKKyAgICBjb250cm9sID0gYWRv
cHROUyhbW1dLRGF0ZVRpbWVQaWNrZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3IGRhdGVQaWNr
ZXJNb2RlOm1vZGVdKTsKKyAgICByZXR1cm4gW3N1cGVyIGluaXRXaXRoVmlldzp2aWV3IGNvbnRy
b2w6V1RGTW92ZShjb250cm9sKV07Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLRGF0
ZVRpbWVJbnB1dENvbnRyb2wgKFdLVGVzdGluZykKKworLSAodm9pZClzZXRUaW1lUGlja2VySG91
cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlCit7CisgICAgaWYgKFtz
ZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lUGlja2VyLmNsYXNzXSkKKyAgICAg
ICAgWyhXS0RhdGVUaW1lUGlja2VyICopc2VsZi5jb250cm9sIHNldEhvdXI6aG91ciBtaW51dGU6
bWludXRlXTsKK30KKworLSAoTlNTdHJpbmcgKilkYXRlVGltZVBpY2tlckNhbGVuZGFyVHlwZQor
eworICAgIGlmIChbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBpY2tlci5j
bGFzc10pCisgICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVQaWNrZXIgKilzZWxmLmNvbnRyb2wg
Y2FsZW5kYXJUeXBlXTsKKyAgICByZXR1cm4gbmlsOworfQorCistIChkb3VibGUpdGltZVBpY2tl
clZhbHVlSG91cgoreworICAgIGlmIChbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRl
VGltZVBpY2tlci5jbGFzc10pCisgICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVQaWNrZXIgKilz
ZWxmLmNvbnRyb2wgaG91cl07CisgICAgcmV0dXJuIC0xOworfQorCistIChkb3VibGUpdGltZVBp
Y2tlclZhbHVlTWludXRlCit7CisgICAgaWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpX
S0RhdGVUaW1lUGlja2VyLmNsYXNzXSkKKyAgICAgICAgcmV0dXJuIFsoV0tEYXRlVGltZVBpY2tl
ciAqKXNlbGYuY29udHJvbCBtaW51dGVdOworICAgIHJldHVybiAtMTsKK30KKworQGVuZAorCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNjc1YTEyNGI5ZWYzOTZjMDgwZjM4YmU2NTk2ZmE3MzhhN2NjODViMC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0KLSNpbXBvcnQgIldLRm9ybVBlcmlwaGVyYWxCYXNlLmgiCi0KLUBjbGFzcyBXS0NvbnRlbnRW
aWV3OwotCi1AaW50ZXJmYWNlIFdLRm9ybUlucHV0Q29udHJvbCA6IFdLRm9ybVBlcmlwaGVyYWxC
YXNlCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldzsK
LUBlbmQKLQotQGludGVyZmFjZSBXS0Zvcm1JbnB1dENvbnRyb2wgKFdLVGVzdGluZykKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmRhdGVUaW1lUGlja2VyQ2FsZW5k
YXJUeXBlOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBkb3VibGUgdGltZVBpY2tl
clZhbHVlSG91cjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgZG91YmxlIHRpbWVQ
aWNrZXJWYWx1ZU1pbnV0ZTsKLS0gKHZvaWQpc2V0VGltZVBpY2tlckhvdXI6KE5TSW50ZWdlcilo
b3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZTsKLUBlbmQKLQotI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGb3JtSW5wdXRDb250cm9sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRm9ybUlucHV0Q29udHJvbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZDUxMDA5YTk0YTIzZWYwNWJlZTQzNTAzNTE5NDE4OTBmZWYxYjM2NC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTAyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldLRm9ybUlu
cHV0Q29udHJvbC5oIgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQotI2ltcG9ydCAiVXNl
ckludGVyZmFjZUlkaW9tLmgiCi0jaW1wb3J0ICJXS0NvbnRlbnRWaWV3LmgiCi0jaW1wb3J0ICJX
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCIKLSNpbXBvcnQgIldLRm9ybVBvcG92ZXIuaCIKLSNp
bXBvcnQgIldlYlBhZ2VQcm94eS5oIgotI2ltcG9ydCA8VUlLaXQvVUlCYXJCdXR0b25JdGVtLmg+
Ci0jaW1wb3J0IDxVSUtpdC9VSURhdGVQaWNrZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTG9jYWxp
emVkU3RyaW5ncy5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwotCi1AaW50ZXJmYWNlIFdLRGF0ZVRpbWVQb3BvdmVyVmlld0NvbnRyb2xsZXIg
OiBVSVZpZXdDb250cm9sbGVyIHsKLSAgICBSZXRhaW5QdHI8TlNPYmplY3Q8V0tGb3JtQ29udHJv
bD4+IF9pbm5lckNvbnRyb2w7Ci19Ci0tIChpZClpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcg
Kil2aWV3IGRhdGVQaWNrZXJNb2RlOihVSURhdGVQaWNrZXJNb2RlKWRhdGVQaWNrZXJNb2RlOwot
LSAoTlNPYmplY3Q8V0tGb3JtQ29udHJvbD4gKilpbm5lckNvbnRyb2w7Ci1AZW5kCi0KLUBpbnRl
cmZhY2UgV0tEYXRlVGltZVBvcG92ZXIgOiBXS0Zvcm1Sb3RhdGluZ0FjY2Vzc29yeVBvcG92ZXI8
V0tGb3JtQ29udHJvbD4gewotICAgIFJldGFpblB0cjxXS0RhdGVUaW1lUG9wb3ZlclZpZXdDb250
cm9sbGVyPiBfdmlld0NvbnRyb2xsZXI7Ci0gICAgV0tDb250ZW50VmlldyAqX3ZpZXc7Ci0gICAg
Qk9PTCBfcHJlc2VudGluZzsKLSAgICBCT09MIF9wcmVzZXJ2aW5nRm9jdXM7Ci19Ci0tIChpZClp
bml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3IGRhdGVQaWNrZXJNb2RlOihVSURhdGVQ
aWNrZXJNb2RlKW1vZGU7Ci0tIChXS0RhdGVUaW1lUG9wb3ZlclZpZXdDb250cm9sbGVyICopdmll
d0NvbnRyb2xsZXI7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpj
YWxlbmRhclR5cGU7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGRvdWJsZSBob3Vy
OwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBkb3VibGUgbWludXRlOwotLSAodm9p
ZClzZXRIb3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51dGU7Ci1AZW5k
Ci0KLUBpbnRlcmZhY2UgV0tEYXRlVGltZVBpY2tlciA6IE5TT2JqZWN0PFdLRm9ybUNvbnRyb2w+
IHsKLSAgICBSZXRhaW5QdHI8VUlEYXRlUGlja2VyPiBfZGF0ZVBpY2tlcjsKLSAgICBOU1N0cmlu
ZyAqX2Zvcm1hdFN0cmluZzsKLSAgICBCT09MIF9zaG91bGRSZW1vdmVUaW1lWm9uZUluZm9ybWF0
aW9uOwotICAgIEJPT0wgX2lzVGltZUlucHV0OwotICAgIFdLQ29udGVudFZpZXcqIF92aWV3Owot
fQotLSAoaWQpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBkYXRlUGlja2VyTW9k
ZTooVUlEYXRlUGlja2VyTW9kZSltb2RlOwotLSAoVUlEYXRlUGlja2VyICopZGF0ZVBpY2tlcjsK
LQotQGVuZAotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFk
ZGl0aW9ucy9XS0Zvcm1JbnB1dENvbnRyb2xBZGRpdGlvbnMubW0+Ci0jZW5kaWYKLQotQGltcGxl
bWVudGF0aW9uIFdLRGF0ZVRpbWVQaWNrZXIKLQotc3RhdGljIE5TU3RyaW5nICogY29uc3Qga0Rh
dGVGb3JtYXRTdHJpbmcgPSBAInl5eXktTU0tZGQiOyAvLyAiMjAxMS0wMS0yNyIuCi1zdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCBrTW9udGhGb3JtYXRTdHJpbmcgPSBAInl5eXktTU0iOyAvLyAiMjAx
MS0wMSIuCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBrVGltZUZvcm1hdFN0cmluZyA9IEAiSEg6
bW0iOyAvLyAiMTM6NDUiLgotc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGtNaWxsaXNlY29u
ZHNQZXJTZWNvbmQgPSAxMDAwOwotCi0tIChVSURhdGVQaWNrZXIgKilkYXRlUGlja2VyCi17Ci0g
ICAgcmV0dXJuIF9kYXRlUGlja2VyLmdldCgpOwotfQotCi0jaWYgIVVTRShBUFBMRV9JTlRFUk5B
TF9TREspICYmIEhBVkUoVUlEQVRFUElDS0VSX1NUWUxFKQotLSAoVUlEYXRlUGlja2VyU3R5bGUp
ZGF0ZVBpY2tlclN0eWxlCi17Ci0gICAgcmV0dXJuIFVJRGF0ZVBpY2tlclN0eWxlQXV0b21hdGlj
OwotfQotI2VuZGlmCi0KLS0gKGlkKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcg
ZGF0ZVBpY2tlck1vZGU6KFVJRGF0ZVBpY2tlck1vZGUpbW9kZQotewotICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX3ZpZXcgPSB2aWV3
OwotICAgIF9zaG91bGRSZW1vdmVUaW1lWm9uZUluZm9ybWF0aW9uID0gTk87Ci0gICAgX2lzVGlt
ZUlucHV0ID0gTk87Ci0gICAgc3dpdGNoICh2aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24u
ZWxlbWVudFR5cGUpIHsKLSAgICBjYXNlIElucHV0VHlwZTo6RGF0ZToKLSAgICAgICAgX2Zvcm1h
dFN0cmluZyA9IGtEYXRlRm9ybWF0U3RyaW5nOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIElu
cHV0VHlwZTo6TW9udGg6Ci0gICAgICAgIF9mb3JtYXRTdHJpbmcgPSBrTW9udGhGb3JtYXRTdHJp
bmc7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5wdXRUeXBlOjpUaW1lOgotICAgICAgICBf
Zm9ybWF0U3RyaW5nID0ga1RpbWVGb3JtYXRTdHJpbmc7Ci0gICAgICAgIF9pc1RpbWVJbnB1dCA9
IFlFUzsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw6
Ci0gICAgICAgIF9zaG91bGRSZW1vdmVUaW1lWm9uZUluZm9ybWF0aW9uID0gWUVTOwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgCi0gICAg
X2RhdGVQaWNrZXIgPSBhZG9wdE5TKFtbVUlEYXRlUGlja2VyIGFsbG9jXSBpbml0XSk7Ci0KLSAg
ICBbX2RhdGVQaWNrZXIgc2V0RGF0ZVBpY2tlck1vZGU6bW9kZV07Ci0gICAgW19kYXRlUGlja2Vy
IHNldEhpZGRlbjpOT107Ci0gICAgCi0jaWYgSEFWRShVSURBVEVQSUNLRVJfU1RZTEUpCi0gICAg
W19kYXRlUGlja2VyIHNldFByZWZlcnJlZERhdGVQaWNrZXJTdHlsZTpbc2VsZiBkYXRlUGlja2Vy
U3R5bGVdXTsKLSNlbmRpZgotICAgIAotICAgIGF1dG8gc2l6ZSA9IFtfZGF0ZVBpY2tlciBzaXpl
VGhhdEZpdHM6Q0dTaXplTWFrZSh2aWV3LmZyYW1lLnNpemUud2lkdGgsIDApXTsKLSAgICBbX2Rh
dGVQaWNrZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoLCBzaXplLmhlaWdo
dCldOwotICAgIAotICAgIGlmIChbc2VsZiBzaG91bGRQcmVzZW50R3JlZ29yaWFuQ2FsZW5kYXI6
dmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uXSkKLSAgICAgICAgX2RhdGVQaWNrZXIuZ2V0
KCkuY2FsZW5kYXIgPSBbTlNDYWxlbmRhciBjYWxlbmRhcldpdGhJZGVudGlmaWVyOk5TQ2FsZW5k
YXJJZGVudGlmaWVyR3JlZ29yaWFuXTsKLSAgICAKLSAgICBbX2RhdGVQaWNrZXIgYWRkVGFyZ2V0
OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihfZGF0ZUNoYW5nZUhhbmRsZXI6KSBmb3JDb250cm9sRXZl
bnRzOlVJQ29udHJvbEV2ZW50VmFsdWVDaGFuZ2VkXTsKLQotICAgIHJldHVybiBzZWxmOwotfQot
Ci0tIChOU1N0cmluZyAqKWNhbGVuZGFyVHlwZQotewotICAgIHJldHVybiBfZGF0ZVBpY2tlci5n
ZXQoKS5jYWxlbmRhci5jYWxlbmRhcklkZW50aWZpZXI7Ci19Ci0KLS0gKGRvdWJsZSlob3VyCi17
Ci0gICAgTlNDYWxlbmRhciAqY2FsZW5kYXIgPSBbTlNDYWxlbmRhciBjdXJyZW50Q2FsZW5kYXJd
OwotICAgIE5TRGF0ZUNvbXBvbmVudHMgKmNvbXBvbmVudHMgPSBbY2FsZW5kYXIgY29tcG9uZW50
czpOU0NhbGVuZGFyVW5pdEhvdXIgZnJvbURhdGU6W19kYXRlUGlja2VyIGRhdGVdXTsKLQotICAg
IHJldHVybiBbY29tcG9uZW50cyBob3VyXTsKLX0KLQotLSAoZG91YmxlKW1pbnV0ZQotewotICAg
IE5TQ2FsZW5kYXIgKmNhbGVuZGFyID0gW05TQ2FsZW5kYXIgY3VycmVudENhbGVuZGFyXTsKLSAg
ICBOU0RhdGVDb21wb25lbnRzICpjb21wb25lbnRzID0gW2NhbGVuZGFyIGNvbXBvbmVudHM6TlND
YWxlbmRhclVuaXRNaW51dGUgZnJvbURhdGU6W19kYXRlUGlja2VyIGRhdGVdXTsKLQotICAgIHJl
dHVybiBbY29tcG9uZW50cyBtaW51dGVdOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBb
X2RhdGVQaWNrZXIgcmVtb3ZlVGFyZ2V0OnNlbGYgYWN0aW9uOk5VTEwgZm9yQ29udHJvbEV2ZW50
czpVSUNvbnRyb2xFdmVudFZhbHVlQ2hhbmdlZF07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQot
Ci0tIChCT09MKXNob3VsZFByZXNlbnRHcmVnb3JpYW5DYWxlbmRhcjooY29uc3QgRm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbiYpbm9kZUluZm8KLXsKLSAgICByZXR1cm4gbm9kZUluZm8uYXV0b2Zp
bGxGaWVsZE5hbWUgPT0gV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwTW9udGgKLSAg
ICAgICAgfHwgbm9kZUluZm8uYXV0b2ZpbGxGaWVsZE5hbWUgPT0gV2ViQ29yZTo6QXV0b2ZpbGxG
aWVsZE5hbWU6OkNjRXhwCi0gICAgICAgIHx8IG5vZGVJbmZvLmF1dG9maWxsRmllbGROYW1lID09
IFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1lOjpDY0V4cFllYXI7Ci19Ci0KLS0gKFVJVmlldyAq
KWNvbnRyb2xWaWV3Ci17Ci0gICAgcmV0dXJuIF9kYXRlUGlja2VyLmdldCgpOwotfQotCi0tIChO
U0ludGVnZXIpX3RpbWVab25lT2Zmc2V0RnJvbUdNVDooTlNEYXRlICopZGF0ZQotewotICAgIGlm
ICghX3Nob3VsZFJlbW92ZVRpbWVab25lSW5mb3JtYXRpb24pCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgcmV0dXJuIFtfZGF0ZVBpY2tlci5nZXQoKS50aW1lWm9uZSBzZWNvbmRzRnJvbUdNVEZv
ckRhdGU6ZGF0ZV07Ci19Ci0KLS0gKE5TU3RyaW5nICopX3Nhbml0aXplSW5wdXRWYWx1ZUZvckZv
cm1hdHRlcjooTlNTdHJpbmcgKil2YWx1ZQotewotICAgIC8vIFRoZSAidGltZSIgaW5wdXQgdHlw
ZSBtYXkgaGF2ZSBzZWNvbmRzIGFuZCBtaWxsaXNlY29uZHMgaW5mb3JtYXRpb24gd2hpY2ggd2UK
LSAgICAvLyBqdXN0IGlnbm9yZS4gRm9yIGV4YW1wbGU6ICIwMTo1NjoyMC4zOTEiIGlzIHNob3J0
ZW5lZCB0byBqdXN0ICIwMTo1NiIuCi0gICAgaWYgKF9pc1RpbWVJbnB1dCkKLSAgICAgICAgcmV0
dXJuIFt2YWx1ZSBzdWJzdHJpbmdUb0luZGV4OltrVGltZUZvcm1hdFN0cmluZyBsZW5ndGhdXTsK
LQotICAgIHJldHVybiB2YWx1ZTsKLX0KLQotLSAodm9pZClfZGF0ZUNoYW5nZWRTZXRBc051bWJl
cgotewotICAgIE5TRGF0ZSAqZGF0ZSA9IFtfZGF0ZVBpY2tlciBkYXRlXTsKLSAgICBbX3ZpZXcg
dXBkYXRlRm9jdXNlZEVsZW1lbnRWYWx1ZUFzTnVtYmVyOihbZGF0ZSB0aW1lSW50ZXJ2YWxTaW5j
ZTE5NzBdICsgW3NlbGYgX3RpbWVab25lT2Zmc2V0RnJvbUdNVDpkYXRlXSkgKiBrTWlsbGlzZWNv
bmRzUGVyU2Vjb25kXTsKLX0KLQotLSAoUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4pZGF0ZUZv
cm1hdHRlckZvclBpY2tlcgotewotICAgIFJldGFpblB0cjxOU0xvY2FsZT4gZW5nbGlzaExvY2Fs
ZSA9IGFkb3B0TlMoW1tOU0xvY2FsZSBhbGxvY10gaW5pdFdpdGhMb2NhbGVJZGVudGlmaWVyOkAi
ZW5fVVNfUE9TSVgiXSk7Ci0gICAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gZGF0ZUZvcm1h
dHRlciA9IGFkb3B0TlMoW1tOU0RhdGVGb3JtYXR0ZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbZGF0
ZUZvcm1hdHRlciBzZXRUaW1lWm9uZTpfZGF0ZVBpY2tlci5nZXQoKS50aW1lWm9uZV07Ci0gICAg
W2RhdGVGb3JtYXR0ZXIgc2V0RGF0ZUZvcm1hdDpfZm9ybWF0U3RyaW5nXTsKLSAgICBbZGF0ZUZv
cm1hdHRlciBzZXRMb2NhbGU6ZW5nbGlzaExvY2FsZS5nZXQoKV07Ci0gICAgcmV0dXJuIGRhdGVG
b3JtYXR0ZXI7Ci19Ci0KLS0gKHZvaWQpX2RhdGVDaGFuZ2VkU2V0QXNTdHJpbmcKLXsKLSAgICAv
LyBGb3JjZSBFbmdsaXNoIGxvY2FsZSBiZWNhdXNlIHRoYXQgaXMgd2hhdCBIVE1MNSB2YWx1ZSBw
YXJzaW5nIGV4cGVjdHMuCi0gICAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gZGF0ZUZvcm1h
dHRlciA9IFtzZWxmIGRhdGVGb3JtYXR0ZXJGb3JQaWNrZXJdOwotICAgIFtfdmlldyB1cGRhdGVG
b2N1c2VkRWxlbWVudFZhbHVlOltkYXRlRm9ybWF0dGVyIHN0cmluZ0Zyb21EYXRlOltfZGF0ZVBp
Y2tlciBkYXRlXV1dOwotfQotCi0tICh2b2lkKV9kYXRlQ2hhbmdlZAotewotICAgIC8vIEludGVy
bmFsbHksIERPTUhUTUxJbnB1dEVsZW1lbnQgc2V0VmFsdWVBcyogZWFjaCB0YWtlIGRpZmZlcmVu
dCB2YWx1ZXMgZm9yCi0gICAgLy8gZGlmZmVyZW50IGRhdGUgdHlwZXMuIEl0IGlzIHNvbWV0aW1l
cyBlYXNpZXIgdG8gc2V0IHRoZSBkYXRlIGluIGRpZmZlcmVudCB3YXlzOgotICAgIC8vICAgLSB1
c2Ugc2V0VmFsdWVBc1N0cmluZyBmb3IgImRhdGUiLCAibW9udGgiLCBhbmQgInRpbWUiLgotICAg
IC8vICAgLSB1c2Ugc2V0VmFsdWVBc051bWJlciBmb3IgImRhdGV0aW1lLWxvY2FsIi4KLSAgICBp
ZiAoX2Zvcm1hdFN0cmluZykKLSAgICAgICAgW3NlbGYgX2RhdGVDaGFuZ2VkU2V0QXNTdHJpbmdd
OwotICAgIGVsc2UKLSAgICAgICAgW3NlbGYgX2RhdGVDaGFuZ2VkU2V0QXNOdW1iZXJdOwotfQot
Ci0tICh2b2lkKV9kYXRlQ2hhbmdlSGFuZGxlcjooaWQpc2VuZGVyCi17Ci0gICAgW3NlbGYgX2Rh
dGVDaGFuZ2VkXTsKLX0KLQotLSAodm9pZCljb250cm9sQmVnaW5FZGl0aW5nCi17Ci0gICAgLy8g
U2V0IHRoZSB0aW1lIHpvbmUgaW4gY2FzZSBpdCBjaGFuZ2VkLgotICAgIF9kYXRlUGlja2VyLmdl
dCgpLnRpbWVab25lID0gW05TVGltZVpvbmUgbG9jYWxUaW1lWm9uZV07Ci0KLSAgICAvLyBDdXJy
ZW50bHkgbm8gdmFsdWUgZm9yIHRoZSA8aW5wdXQ+LiBTdGFydCB0aGUgcGlja2VyIHdpdGggdGhl
IGN1cnJlbnQgdGltZS4KLSAgICAvLyBBbHNvLCB1cGRhdGUgdGhlIGFjdHVhbCA8aW5wdXQ+IHZh
bHVlLgotICAgIE5TU3RyaW5nICp2YWx1ZSA9IF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b24udmFsdWU7Ci0gICAgaWYgKF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24udmFsdWUu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIFtfZGF0ZVBpY2tlciBzZXREYXRlOltOU0RhdGUgZGF0ZV1d
OwotICAgICAgICBbc2VsZiBfZGF0ZUNoYW5nZWRdOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgLy8gQ29udmVydCB0aGUgc3RyaW5nIHZhbHVlIHRvIGEgZGF0ZSBvYmplY3QgZm9yIHRo
ZSBmaWVsZHMgd2hlcmUgd2UgaGF2ZSBhIGZvcm1hdCBzdHJpbmcuCi0gICAgaWYgKF9mb3JtYXRT
dHJpbmcpIHsKLSAgICAgICAgdmFsdWUgPSBbc2VsZiBfc2FuaXRpemVJbnB1dFZhbHVlRm9yRm9y
bWF0dGVyOnZhbHVlXTsKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gZGF0ZUZv
cm1hdHRlciA9IFtzZWxmIGRhdGVGb3JtYXR0ZXJGb3JQaWNrZXJdOwotICAgICAgICBOU0RhdGUg
KnBhcnNlZERhdGUgPSBbZGF0ZUZvcm1hdHRlciBkYXRlRnJvbVN0cmluZzp2YWx1ZV07Ci0gICAg
ICAgIFtfZGF0ZVBpY2tlciBzZXREYXRlOnBhcnNlZERhdGUgPyBwYXJzZWREYXRlIDogW05TRGF0
ZSBkYXRlXV07Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBDb252ZXJ0IHRoZSBu
dW1iZXIgdmFsdWUgdG8gYSBkYXRlIG9iamVjdCBmb3IgdGhlIGZpZWxkcyBhZmZlY3RlZCBieSB0
aW1lem9uZXMuCi0gICAgTlNUaW1lSW50ZXJ2YWwgc2Vjb25kc1NpbmNlMTk3MCA9IF92aWV3LmZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24udmFsdWVBc051bWJlciAvIGtNaWxsaXNlY29uZHNQZXJT
ZWNvbmQ7Ci0gICAgTlNJbnRlZ2VyIHRpbWVab25lT2Zmc2V0ID0gW3NlbGYgX3RpbWVab25lT2Zm
c2V0RnJvbUdNVDpbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOnNlY29uZHNT
aW5jZTE5NzBdXTsKLSAgICBOU1RpbWVJbnRlcnZhbCBhZGp1c3RlZFNlY29uZHNTaW5jZTE5NzAg
PSBzZWNvbmRzU2luY2UxOTcwIC0gdGltZVpvbmVPZmZzZXQ7Ci0gICAgW19kYXRlUGlja2VyIHNl
dERhdGU6W05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDphZGp1c3RlZFNlY29u
ZHNTaW5jZTE5NzBdXTsKLX0KLQotLSAodm9pZCljb250cm9sRW5kRWRpdGluZwotewotfQotCi0t
ICh2b2lkKXNldEhvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZQot
ewotICAgIE5TU3RyaW5nICp0aW1lU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCIlLjJsZDolLjJsZCIsIChsb25nKWhvdXIsIChsb25nKW1pbnV0ZV07Ci0gICAgW19kYXRlUGlj
a2VyIHNldERhdGU6W1tzZWxmIGRhdGVGb3JtYXR0ZXJGb3JQaWNrZXJdIGRhdGVGcm9tU3RyaW5n
OnRpbWVTdHJpbmddXTsKLSAgICBbc2VsZiBfZGF0ZUNoYW5nZWRdOwotfQotCi1AZW5kCi0KLS8v
IFdLRm9ybUlucHV0Q29udHJvbAotQGltcGxlbWVudGF0aW9uIFdLRm9ybUlucHV0Q29udHJvbAot
Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldwotewot
ICAgIFVJRGF0ZVBpY2tlck1vZGUgbW9kZTsKLQotICAgIHN3aXRjaCAodmlldy5mb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlKSB7Ci0gICAgY2FzZSBJbnB1dFR5cGU6OkRhdGU6
Ci0gICAgICAgIG1vZGUgPSBVSURhdGVQaWNrZXJNb2RlRGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw6Ci0gICAgICAgIG1vZGUgPSBVSURhdGVQ
aWNrZXJNb2RlRGF0ZUFuZFRpbWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5wdXRUeXBl
OjpUaW1lOgotICAgICAgICBtb2RlID0gVUlEYXRlUGlja2VyTW9kZVRpbWU7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSW5wdXRUeXBlOjpNb250aDoKLSAgICAgICAgbW9kZSA9IChVSURhdGVQ
aWNrZXJNb2RlKVVJRGF0ZVBpY2tlck1vZGVZZWFyQW5kTW9udGg7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIFtzZWxmIHJlbGVhc2VdOwotICAgICAgICByZXR1cm4gbmls
OwotICAgIH0KLQotICAgIFJldGFpblB0cjxOU09iamVjdCA8V0tGb3JtQ29udHJvbD4+IGNvbnRy
b2w7Ci0gICAgaWYgKGN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpKQotICAgICAgICBj
b250cm9sID0gYWRvcHROUyhbW1dLRGF0ZVRpbWVQb3BvdmVyIGFsbG9jXSBpbml0V2l0aFZpZXc6
dmlldyBkYXRlUGlja2VyTW9kZTptb2RlXSk7Ci0gICAgZWxzZQotICAgICAgICBjb250cm9sID0g
YWRvcHROUyhbW1dLRGF0ZVRpbWVQaWNrZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3IGRhdGVQ
aWNrZXJNb2RlOm1vZGVdKTsKLSAgICByZXR1cm4gW3N1cGVyIGluaXRXaXRoVmlldzp2aWV3IGNv
bnRyb2w6V1RGTW92ZShjb250cm9sKV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdL
Rm9ybUlucHV0Q29udHJvbCAoV0tUZXN0aW5nKQotCi0tICh2b2lkKXNldFRpbWVQaWNrZXJIb3Vy
OihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51dGUKLXsKLSAgICBpZiAoW3Nl
bGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQaWNrZXIuY2xhc3NdKQotICAgICAg
ICBbKFdLRGF0ZVRpbWVQaWNrZXIgKilzZWxmLmNvbnRyb2wgc2V0SG91cjpob3VyIG1pbnV0ZTpt
aW51dGVdOwotICAgIGlmIChbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBv
cG92ZXIuY2xhc3NdKQotICAgICAgICBbKFdLRGF0ZVRpbWVQb3BvdmVyICopc2VsZi5jb250cm9s
IHNldEhvdXI6aG91ciBtaW51dGU6bWludXRlXTsKLX0KLQotLSAoTlNTdHJpbmcgKilkYXRlVGlt
ZVBpY2tlckNhbGVuZGFyVHlwZQotewotICAgIGlmIChbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xh
c3M6V0tEYXRlVGltZVBpY2tlci5jbGFzc10pCi0gICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVQ
aWNrZXIgKilzZWxmLmNvbnRyb2wgY2FsZW5kYXJUeXBlXTsKLSAgICBpZiAoW3NlbGYuY29udHJv
bCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQb3BvdmVyLmNsYXNzXSkKLSAgICAgICAgcmV0dXJu
IFsoV0tEYXRlVGltZVBvcG92ZXIgKilzZWxmLmNvbnRyb2wgY2FsZW5kYXJUeXBlXTsKLSAgICBy
ZXR1cm4gbmlsOwotfQotCi0tIChkb3VibGUpdGltZVBpY2tlclZhbHVlSG91cgotewotICAgIGlm
IChbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBpY2tlci5jbGFzc10pCi0g
ICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVQaWNrZXIgKilzZWxmLmNvbnRyb2wgaG91cl07Ci0g
ICAgaWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lUG9wb3Zlci5jbGFz
c10pCi0gICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVQb3BvdmVyICopc2VsZi5jb250cm9sIGhv
dXJdOwotICAgIHJldHVybiAtMTsKLX0KLQotLSAoZG91YmxlKXRpbWVQaWNrZXJWYWx1ZU1pbnV0
ZQotewotICAgIGlmIChbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBpY2tl
ci5jbGFzc10pCi0gICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVQaWNrZXIgKilzZWxmLmNvbnRy
b2wgbWludXRlXTsKLSAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRp
bWVQb3BvdmVyLmNsYXNzXSkKLSAgICAgICAgcmV0dXJuIFsoV0tEYXRlVGltZVBvcG92ZXIgKilz
ZWxmLmNvbnRyb2wgbWludXRlXTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLUBlbmQKLQotQGltcGxl
bWVudGF0aW9uIFdLRGF0ZVRpbWVQb3BvdmVyVmlld0NvbnRyb2xsZXIKLQotLSAoaWQpaW5pdFdp
dGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBkYXRlUGlja2VyTW9kZTooVUlEYXRlUGlja2Vy
TW9kZSlkYXRlUGlja2VyTW9kZQotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQot
ICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX2lubmVyQ29udHJvbCA9IGFkb3B0TlMoW1tXS0Rh
dGVUaW1lUGlja2VyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlldyBkYXRlUGlja2VyTW9kZTpkYXRl
UGlja2VyTW9kZV0pOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKE5TT2JqZWN0PFdLRm9y
bUNvbnRyb2w+ICopaW5uZXJDb250cm9sCi17Ci0gICAgcmV0dXJuIF9pbm5lckNvbnRyb2wuZ2V0
KCk7Ci19Ci0KLS0gKHZvaWQpbG9hZFZpZXcKLXsKLSAgICBzZWxmLnZpZXcgPSBbX2lubmVyQ29u
dHJvbCBjb250cm9sVmlld107Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLRGF0ZVRp
bWVQb3BvdmVyCi0KLS0gKHZvaWQpY2xlYXI6KGlkKXNlbmRlcgotewotICAgIFtfdmlldyBwYWdl
XS0+c2V0Rm9jdXNlZEVsZW1lbnRWYWx1ZShTdHJpbmcoKSk7Ci19Ci0KLS0gKHZvaWQpcG9wb3Zl
cldhc0Rpc21pc3NlZDooV0tSb3RhdGluZ1BvcG92ZXIgKilwb3BvdmVyCi17Ci0gICAgW3N1cGVy
IHBvcG92ZXJXYXNEaXNtaXNzZWQ6cG9wb3Zlcl07Ci0gICAgCi0gICAgaWYgKHBvcG92ZXIgPT0g
c2VsZikgewotICAgICAgICBpZiAoX3ByZXNlcnZpbmdGb2N1cykgewotICAgICAgICAgICAgW192
aWV3IHJlbGVhc2VGb2N1c107Ci0gICAgICAgICAgICBfcHJlc2VydmluZ0ZvY3VzID0gTk87Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLS0gKGlkKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAq
KXZpZXcgZGF0ZVBpY2tlck1vZGU6KFVJRGF0ZVBpY2tlck1vZGUpbW9kZQotewotICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhWaWV3OnZpZXddKSkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LQotICAgIF92aWV3ID0gdmlldzsKLSAgICBfdmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tE
YXRlVGltZVBvcG92ZXJWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXcgZGF0
ZVBpY2tlck1vZGU6bW9kZV0pOwotICAgIFVJRGF0ZVBpY2tlciAqZGF0ZVBpY2tlciA9IFsoV0tE
YXRlVGltZVBpY2tlciAqKV92aWV3Q29udHJvbGxlci5nZXQoKS5pbm5lckNvbnRyb2wgZGF0ZVBp
Y2tlcl07Ci0KLSAgICBpZiAodmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRU
eXBlID09IElucHV0VHlwZTo6TW9udGgpIHsKLSAgICAgICAgQ0dGbG9hdCBwb3BvdmVyV2lkdGgg
PSBbZGF0ZVBpY2tlciBfY29udGVudFdpZHRoXTsKLSAgICAgICAgQ0dGbG9hdCBwb3BvdmVySGVp
Z2h0ID0gX3ZpZXdDb250cm9sbGVyLmdldCgpLnZpZXcuZnJhbWUuc2l6ZS5oZWlnaHQ7Ci0gICAg
ICAgIFtfdmlld0NvbnRyb2xsZXIgc2V0UHJlZmVycmVkQ29udGVudFNpemU6Q0dTaXplTWFrZShw
b3BvdmVyV2lkdGgsIHBvcG92ZXJIZWlnaHQpXTsKLSAgICB9IGVsc2UgewotICAgICAgICBbX3Zp
ZXdDb250cm9sbGVyIHNldFByZWZlcnJlZENvbnRlbnRTaXplOkNHU2l6ZU1ha2UoZGF0ZVBpY2tl
ci5mcmFtZS5zaXplLndpZHRoKzE2LCBkYXRlUGlja2VyLmZyYW1lLnNpemUuaGVpZ2h0KV07Ci0g
ICAgfQotICAgIAotICAgIFtfdmlld0NvbnRyb2xsZXIgc2V0RWRnZXNGb3JFeHRlbmRlZExheW91
dDpVSVJlY3RFZGdlTm9uZV07Ci0gICAgW192aWV3Q29udHJvbGxlciBzZXRUaXRsZTpfdmlldy5m
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnRpdGxlXTsKLQotICAgIC8vIEFsd2F5cyBoYXZlIGEg
bmF2aWdhdGlvbiBjb250cm9sbGVyIHdpdGggYSBjbGVhciBidXR0b24sIGFuZCBhIHRpdGxlIGlm
IHRoZSBpbnB1dCBlbGVtZW50IGhhcyBhIHRpdGxlLgotICAgIFJldGFpblB0cjxVSU5hdmlnYXRp
b25Db250cm9sbGVyPiBuYXZpZ2F0aW9uQ29udHJvbGxlciA9IGFkb3B0TlMoW1tVSU5hdmlnYXRp
b25Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFJvb3RWaWV3Q29udHJvbGxlcjpfdmlld0NvbnRy
b2xsZXIuZ2V0KCldKTsKLSAgICBVSU5hdmlnYXRpb25JdGVtICpuYXZpZ2F0aW9uSXRlbSA9IG5h
dmlnYXRpb25Db250cm9sbGVyLmdldCgpLm5hdmlnYXRpb25CYXIudG9wSXRlbTsKLSAgICBOU1N0
cmluZyAqY2xlYXJTdHJpbmcgPSBXRUJfVUlfU1RSSU5HX0tFWSgiQ2xlYXIiLCAiQ2xlYXIgQnV0
dG9uIERhdGUgUG9wb3ZlciIsICJDbGVhciBidXR0b24gaW4gZGF0ZSBpbnB1dCBwb3BvdmVyIik7
Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBVSUJhckJ1dHRv
bkl0ZW0gKmNsZWFyQnV0dG9uID0gW1tbVUlCYXJCdXR0b25JdGVtIGFsbG9jXSBpbml0V2l0aFRp
dGxlOmNsZWFyU3RyaW5nIHN0eWxlOlVJQmFyQnV0dG9uSXRlbVN0eWxlQm9yZGVyZWQgdGFyZ2V0
OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihjbGVhcjopXSBhdXRvcmVsZWFzZV07Ci0gICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgW25hdmlnYXRpb25JdGVtIHNldFJpZ2h0
QmFyQnV0dG9uSXRlbTpjbGVhckJ1dHRvbl07Ci0KLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgotICAgIFJldGFpblB0cjxVSVBvcG92ZXJDb250cm9sbGVyPiBjb250cm9s
bGVyID0gYWRvcHROUyhbW1VJUG9wb3ZlckNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQ29udGVu
dFZpZXdDb250cm9sbGVyOm5hdmlnYXRpb25Db250cm9sbGVyLmdldCgpXSk7Ci0gICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgW3NlbGYgc2V0UG9wb3ZlckNvbnRyb2xs
ZXI6Y29udHJvbGxlci5nZXQoKV07Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoV0tEYXRl
VGltZVBvcG92ZXJWaWV3Q29udHJvbGxlciAqKXZpZXdDb250cm9sbGVyCi17Ci0gICAgcmV0dXJu
IF92aWV3Q29udHJvbGxlci5nZXQoKTsKLX0KLQotLSAodm9pZCljb250cm9sQmVnaW5FZGl0aW5n
Ci17Ci0gICAgaWYgKCFfcHJlc2VudGluZykgewotICAgICAgICBfcHJlc2VudGluZyA9IFlFUzsK
LSAgICAgICAgW3NlbGYgcHJlc2VudFBvcG92ZXJBbmltYXRlZDpOT107Ci0gICAgICAgIFtfdmll
d0NvbnRyb2xsZXIuZ2V0KCkuaW5uZXJDb250cm9sIGNvbnRyb2xCZWdpbkVkaXRpbmddOwotICAg
ICAgICAKLSAgICAgICAgaWYgKF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVu
dFR5cGUgPT0gSW5wdXRUeXBlOjpUaW1lIHx8IF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b24uZWxlbWVudFR5cGUgPT0gSW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsKSB7Ci0gICAgICAgICAg
ICBfcHJlc2VydmluZ0ZvY3VzID0gWUVTOwotICAgICAgICAgICAgW192aWV3IHByZXNlcnZlRm9j
dXNdOwotICAgICAgICB9Ci0gICAgfQotfQotCi0tICh2b2lkKWNvbnRyb2xFbmRFZGl0aW5nCi17
Ci0gICAgX3ByZXNlbnRpbmcgPSBOTzsKLSAgICBbc2VsZiBkaXNtaXNzUG9wb3ZlckFuaW1hdGVk
Ok5PXTsKLSAgICBbX3ZpZXdDb250cm9sbGVyLmdldCgpLmlubmVyQ29udHJvbCBjb250cm9sRW5k
RWRpdGluZ107Ci19Ci0KLS0gKFVJVmlldyAqKWNvbnRyb2xWaWV3Ci17Ci0gICAgcmV0dXJuIG5p
bDsKLX0KLQotLSAodm9pZClzZXRIb3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdl
ciltaW51dGUKLXsKLSAgICBXS0RhdGVUaW1lUGlja2VyICpkYXRlVGltZVBpY2tlciA9IChXS0Rh
dGVUaW1lUGlja2VyICopc2VsZi52aWV3Q29udHJvbGxlci5pbm5lckNvbnRyb2w7Ci0gICAgW2Rh
dGVUaW1lUGlja2VyIHNldEhvdXI6aG91ciBtaW51dGU6bWludXRlXTsKLX0KLQotLSAoTlNTdHJp
bmcgKiljYWxlbmRhclR5cGUKLXsKLSAgICBXS0RhdGVUaW1lUGlja2VyICpkYXRlVGltZVBpY2tl
ciA9IChXS0RhdGVUaW1lUGlja2VyICopc2VsZi52aWV3Q29udHJvbGxlci5pbm5lckNvbnRyb2w7
Ci0gICAgcmV0dXJuIGRhdGVUaW1lUGlja2VyLmRhdGVQaWNrZXIuY2FsZW5kYXIuY2FsZW5kYXJJ
ZGVudGlmaWVyOwotfQotCi0tIChkb3VibGUpaG91cgotewotICAgIFdLRGF0ZVRpbWVQaWNrZXIg
KmRhdGVUaW1lUGlja2VyID0gKFdLRGF0ZVRpbWVQaWNrZXIgKilzZWxmLnZpZXdDb250cm9sbGVy
LmlubmVyQ29udHJvbDsKLSAgICBOU0NhbGVuZGFyICpjYWxlbmRhciA9IFtOU0NhbGVuZGFyIGN1
cnJlbnRDYWxlbmRhcl07Ci0gICAgTlNEYXRlQ29tcG9uZW50cyAqY29tcG9uZW50cyA9IFtjYWxl
bmRhciBjb21wb25lbnRzOihOU0NhbGVuZGFyVW5pdEhvdXIpIGZyb21EYXRlOmRhdGVUaW1lUGlj
a2VyLmRhdGVQaWNrZXIuZGF0ZV07Ci0KLSAgICByZXR1cm4gW2NvbXBvbmVudHMgaG91cl07Ci19
Ci0KLS0gKGRvdWJsZSltaW51dGUKLXsKLSAgICBXS0RhdGVUaW1lUGlja2VyICpkYXRlVGltZVBp
Y2tlciA9IChXS0RhdGVUaW1lUGlja2VyICopc2VsZi52aWV3Q29udHJvbGxlci5pbm5lckNvbnRy
b2w7Ci0gICAgTlNDYWxlbmRhciAqY2FsZW5kYXIgPSBbTlNDYWxlbmRhciBjdXJyZW50Q2FsZW5k
YXJdOwotICAgIE5TRGF0ZUNvbXBvbmVudHMgKmNvbXBvbmVudHMgPSBbY2FsZW5kYXIgY29tcG9u
ZW50czooTlNDYWxlbmRhclVuaXRNaW51dGUpIGZyb21EYXRlOmRhdGVUaW1lUGlja2VyLmRhdGVQ
aWNrZXIuZGF0ZV07Ci0KLSAgICByZXR1cm4gW2NvbXBvbmVudHMgbWludXRlXTsKLX0KLQotQGVu
ZAotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk3MGM2ZGY5YzU4ZmUwNjliZWVi
NzVlNjdlZjQzYWRhZDQxYjY4N2QuLmQ0ZDM2NmEyOTM5YjU3ZWVmYjBkNmVmZWUwZWVkYThkZDBl
N2Q4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTY4OCw3ICsxNjg4LDcgQEAKIAkJQzE4MTczNjEyMDU4NDI0NzAwREZEQTY1IC8q
IERpc3BsYXlMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMTgxNzM2MDIwNTg0MjQ3MDBERkRBNjUgLyogRGlzcGxheUxpbmsuaCAqLzsgfTsKIAkJ
QzFFMTIzQkEyMEExMTU3MzAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUUxMjNCOTIwQTExNTcyMDAyNjQ2
RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLzsgfTsKIAkJQzUxNzM4ODExMkRGOEY0RjAwRUUzRjQ3
IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24uaCAqLzsgfTsKLQkJQzU0MjU2QjUxOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybUlu
cHV0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybUlucHV0Q29udHJvbC5oICovOyB9
OworCQlDNTQyNTZCNTE4QkVDMThDMDBERTQxNzkgLyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU0MjU2QUYx
OEJFQzE4QjAwREU0MTc5IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaCAqLzsgfTsKIAkJQzU0
MjU2QjcxOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybVBlcmlwaGVyYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDI1NkIxMThCRUMxOEIwMERFNDE3
OSAvKiBXS0Zvcm1QZXJpcGhlcmFsLmggKi87IH07CiAJCUM1NDI1NkI4MThCRUMxOEMwMERFNDE3
OSAvKiBXS0Zvcm1Qb3BvdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDNTQyNTZCMjE4QkVDMThCMDBERTQxNzkgLyogV0tGb3JtUG9wb3Zlci5oICov
OyB9OwogCQlDNTQyNTZCQTE4QkVDMThDMDBERTQxNzkgLyogV0tGb3JtU2VsZWN0Q29udHJvbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU0MjU2QjQx
OEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybVNlbGVjdENvbnRyb2wuaCAqLzsgfTsKQEAgLTUwMjMs
OCArNTAyMyw4IEBACiAJCUMxRTEyM0I5MjBBMTE1NzIwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVu
dS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQREZDb250ZXh0TWVudS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyog
RHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RHJhZ0NvbnRyb2xsZXJBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUy
MzdGNUYxMjQ0MUNBMzAwNzgwNDcyIC8qIFdlYkVkaXRvckNsaWVudE1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkVkaXRvckNsaWVudE1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdL
Rm9ybUlucHV0Q29udHJvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Zv
cm1JbnB1dENvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzU0MjU2QjAxOEJFQzE4QjAwREU0MTc5IC8q
IFdLRm9ybUlucHV0Q29udHJvbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFdLRm9ybUlucHV0Q29udHJvbC5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1JbnB1
dENvbnRyb2wubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM1NDI1NkFGMThCRUMx
OEIwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jt
cy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUM1NDI1NkIwMThCRUMxOEIwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9sLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tEYXRlVGltZUlucHV0Q29u
dHJvbC5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTQyNTZCMTE4QkVDMThCMDBERTQxNzkgLyogV0tG
b3JtUGVyaXBoZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Zvcm1Q
ZXJpcGhlcmFsLmg7IHBhdGggPSBpb3MvZm9ybXMvV0tGb3JtUGVyaXBoZXJhbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDNTQyNTZCMjE4QkVDMThCMDBERTQxNzkgLyogV0tGb3Jt
UG9wb3Zlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Zvcm1Qb3BvdmVy
Lmg7IHBhdGggPSBpb3MvZm9ybXMvV0tGb3JtUG9wb3Zlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDNTQyNTZCMzE4QkVDMThCMDBERTQxNzkgLyogV0tGb3JtUG9wb3Zlci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRm9ybVBvcG92ZXIubW07
IHBhdGggPSBpb3MvZm9ybXMvV0tGb3JtUG9wb3Zlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTgzNzMsMTQgKzgzNzMsMTQgQEAKIAkJN0M2RTcwRjgxOEIyRDQ3RTAwRjI0RTJF
IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJ
CQk0MTY4NEM0RjI0NjQzRDNGMDAxQ0U4RUQgLyogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIu
Y3BwICovLAotCQkJCTQxNjg0QzRFMjQ2NDNDODEwMDFDRThFRCAvKiBSZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlci5oICovLAotCQkJCTQxNjg0QzREMjQ2NDNCRkEwMDFDRThFRCAvKiBSZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQlDRDQ1NzBDQjI0NDBGQjJB
MDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwICovLAogCQkJCUNE
NDU3MENBMjQ0MEZCMkEwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5o
ICovLAogCQkJCUNEQTI5QTE5MUNCREJGNDEwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyLmggKi8sCiAJCQkJQ0RBMjlBMUMxQ0JEQkY1QjAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJQ0RBMjlBMTgxQ0JEQkY0MTAwOTAxQ0NGIC8q
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gKi8sCisJCQkJNDE2ODRDNEYyNDY0M0QzRjAwMUNF
OEVEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcCAqLywKKwkJCQk0MTY4NEM0RTI0
NjQzQzgxMDAxQ0U4RUQgLyogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaCAqLywKKwkJCQk0
MTY4NEM0RDI0NjQzQkZBMDAxQ0U4RUQgLyogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVz
c2FnZXMuaW4gKi8sCiAJCQkJNDE2ODRDNTAyNDY0NTBGRDAwMUNFOEVEIC8qIFJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwICovLAogCQkJCTQxNjg0QzUxMjQ2NDUwRkQwMDFDRThFRCAvKiBS
ZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmggKi8sCiAJCQkJQ0Q0OTFCMDUxRTcwRDA1RjAwMDA5
MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCAqLywKQEAgLTk5NzIsNyArOTk3Miw2
IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTJEN0RFQkUyMjEy
NjlFNEIwMEI5RjczQyAvKiB1bmlmaWVkLXNvdXJjZXMgKi8sCi0JCQkJMEZGMjRBMkIxODc5RTRC
QzAwM0FCRjBEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLywKIAkJCQlDRDQ1NzBEMDI0NDEwMTRBMDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGlu
Z0FyYml0cmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJQ0Q0NTcwRDEyNDQx
MDE0QjAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHlNZXNzYWdl
cy5oICovLAogCQkJCUNENDU3MEQyMjQ0MTAxNEIwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0
aW5nQXJiaXRyYXRvclByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCkBAIC0xMDA1NCw2ICsxMDA1
Myw3IEBACiAJCQkJQ0RENTM1NzEyNDBEREUwNjAwRjdCOEM0IC8qIFJlbW90ZUF1ZGlvU2Vzc2lv
blByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlDREQ1MzU3MjI0MERERTA2MDBGN0I4
QzQgLyogUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNZXNzYWdlcy5oICovLAogCQkJCUNERDUzNTc3
MjQwRERFMDcwMEY3QjhDNCAvKiBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGll
cy5oICovLAorCQkJCTBGRjI0QTJCMTg3OUU0QkMwMDNBQkYwRCAvKiBSZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJQ0RBQzIwRjIyM0ZDMzgzQTAw
MjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJ
CQkJQ0RBQzIwRjMyM0ZDMzgzQTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3RvcnlQcm94eU1lc3Nh
Z2VzLmggKi8sCiAJCQkJQ0RBQzIwRUUyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETUZhY3Rv
cnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLApAQCAtMTAyNTUsNiArMTAyNTUsOCBAQAogCQkJ
CUM1RkExRUQyMThFMTA2MjIwMEIzRjQwMiAvKiBXS0FpclBsYXlSb3V0ZVBpY2tlci5tbSAqLywK
IAkJCQkyRTk0RkMxNDIwMzUxQTZEMDA5NzRCQTAgLyogV0tEYXRlUGlja2VyVmlld0NvbnRyb2xs
ZXIuaCAqLywKIAkJCQkyRTk0RkMxNTIwMzUxQTZEMDA5NzRCQTAgLyogV0tEYXRlUGlja2VyVmll
d0NvbnRyb2xsZXIubW0gKi8sCisJCQkJQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdLRGF0
ZVRpbWVJbnB1dENvbnRyb2wuaCAqLywKKwkJCQlDNTQyNTZCMDE4QkVDMThCMDBERTQxNzkgLyog
V0tEYXRlVGltZUlucHV0Q29udHJvbC5tbSAqLywKIAkJCQlBNThCNkYwNjE4RkNBNzMzMDA4Q0JB
NTMgLyogV0tGaWxlVXBsb2FkUGFuZWwuaCAqLywKIAkJCQlBNThCNkYwNzE4RkNBNzMzMDA4Q0JB
NTMgLyogV0tGaWxlVXBsb2FkUGFuZWwubW0gKi8sCiAJCQkJMkUxNkI2Q0QyMDE3QjdBQzAwODk5
NkQ2IC8qIFdLRm9jdXNlZEZvcm1Db250cm9sVmlldy5oICovLApAQCAtMTAyNjMsOCArMTAyNjUs
NiBAQAogCQkJCUU1Q0IwN0RCMjBFMTY3OEYwMDIyQzE4MyAvKiBXS0Zvcm1Db2xvckNvbnRyb2wu
bW0gKi8sCiAJCQkJRTU0OEVCQ0YyMTAxNUYwRTAwQkUzQzMyIC8qIFdLRm9ybUNvbG9yUGlja2Vy
LmggKi8sCiAJCQkJRTU0OEVCRDAyMTAxNUYwRTAwQkUzQzMyIC8qIFdLRm9ybUNvbG9yUGlja2Vy
Lm1tICovLAotCQkJCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRy
b2wuaCAqLywKLQkJCQlDNTQyNTZCMDE4QkVDMThCMDBERTQxNzkgLyogV0tGb3JtSW5wdXRDb250
cm9sLm1tICovLAogCQkJCUM1NDI1NkIxMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1QZXJpcGhl
cmFsLmggKi8sCiAJCQkJQ0U3MEVFNUMyMjQ0MkJEMDAwRTBBRjBGIC8qIFdLRm9ybVBlcmlwaGVy
YWxCYXNlLmggKi8sCiAJCQkJQ0U3MEVFNUEyMjQ0MkJCMzAwRTBBRjBGIC8qIFdLRm9ybVBlcmlw
aGVyYWxCYXNlLm1tICovLApAQCAtMTE1MTUsNiArMTE1MTUsNyBAQAogCQkJCTM3QTcwOUE3MUUz
RUEwRkQwMENBNTk2OSAvKiBXS0RhdGFEZXRlY3RvclR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzN0E3MDlBOTFFM0VBNDBDMDBDQTU5NjkgLyogV0tEYXRhRGV0ZWN0b3JUeXBlc0ludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTk0RkMxNjIwMzUxQTZEMDA5NzRCQTAgLyogV0tEYXRl
UGlja2VyVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUM1NDI1NkI1MThCRUMx
OEMwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzNzdFQUQ0NTE3RTJDNTFBMDAyRDE5M0QgLyogV0tEZWNsYXJhdGlvblNwZWNpZmllcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCUY0NDgxNTY0MjM4NzgyMDAwMDk4MjY1NyAvKiBXS0RlZmVycmlu
Z0dlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzM1OUMwRDIxNTQ3MzlG
MDA5RTc5NDggLyogV0tEZXByZWNhdGVkLmggaW4gSGVhZGVycyAqLywKQEAgLTExNTQ3LDcgKzEx
NTQ4LDYgQEAKIAkJCQkyRTE2QjZDRjIwMTdCN0FEMDA4OTk2RDYgLyogV0tGb2N1c2VkRm9ybUNv
bnRyb2xWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNUNCMDdEQzIwRTE2NzhGMDAyMkMxODMg
LyogV0tGb3JtQ29sb3JDb250cm9sLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTQ4RUJEMTIxMDE1
RjBFMDBCRTNDMzIgLyogV0tGb3JtQ29sb3JQaWNrZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUM1
NDI1NkI1MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUM1NDI1NkI3MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1QZXJpcGhlcmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRTcwRUU1RDIyNDQyQkQwMDBFMEFGMEYgLyogV0tGb3JtUGVy
aXBoZXJhbEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NDI1NkI4MThCRUMxOEMwMERFNDE3
OSAvKiBXS0Zvcm1Qb3BvdmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEyNjg1LDcgKzEyNjg1LDYg
QEAKIAkJCQkyRDkyQTc3QjIxMkI2QTcxMDBGNDkzRkQgLyogQXJndW1lbnRDb2RlcnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkRFQjFEMkUyMTI3NDczNjAwOTMzOTA2IC8qIEFyZ3VtZW50Q29k
ZXJzQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3N0MyMTJCNkE3MTAwRjQ5M0ZEIC8q
IEF0dGFjaG1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZGMjRBMkQxODc5RTRCQzAwM0FC
RjBEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNENDU3MEQ0MjQ0MTFEMEYwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDdDRjM2MTI0NDRDQ0E2
MDAzQkM0RDUgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eUNvY29hLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0Q0NTcwRDMyNDQxMTNCNTAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lv
blJvdXRpbmdBcmJpdHJhdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0xMjc3NCw2ICsxMjc3Myw3IEBACiAJCQkJMUEwQzIyN0YyNDUxMTMwQTAwRUQ2MTREIC8q
IFF1aWNrTG9va1RodW1ibmFpbGluZ1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEw
QzIyNUUyNDM1NzVDRDAwRUQ2MTREIC8qIFF1aWNrTG9va1RodW1ibmFpbExvYWRlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTlCMTIyOUNFMjNGRjI1RjIwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkYyNEEyRDE4NzlFNEJD
MDAzQUJGMEQgLyogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBQzIwRjcyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNE
TUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREFD
MjBGODIzRkM3MjZDMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDQ2NjE4MzI0MDEwQTY3MDA0N0NBMzUgLyog
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399267</attachid>
            <date>2020-05-13 09:06:58 -0700</date>
            <delta_ts>2020-05-13 09:23:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211825-20200513090640.patch</filename>
            <type>text/plain</type>
            <size>64447</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiNjRkMjljZmRhYWQ3ZTUy
MGIwM2FkYjg3NWRhNjE1ZGYzYjJiYWYuLmEyMDE5ZTEzNzI0OTQ3ZGUzZTUzMGUxN2Y1MjVhYmVh
OWE4OTA2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjAtMDUtMTIgIE1lZ2FuIEdh
cmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgRGF0ZS9U
aW1lIHBvcG92ZXJzIHRvIGNvbnRleHRNZW51cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTgyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgRGF0ZS9UaW1lIHBpY2tlciB0byB1c2Ug
VUlDb250ZXh0TWVudXMgaW5zdGVhZCBvZiBwb3BvdmVycy4KKyAgICAgICAgUmVtb3ZlZCBhbGwg
dGhlIHVubmVlZGVkIHBvcG92ZXIgY29kZS4KKyAgICAgICAgUmVuYW1lZCBXS0Zvcm1JbnB1dENv
bnRyb2wgdG8gV0tEYXRlVGltZUlucHV0Q29udHJvbCBiZWNhdXNlIGl0IHdhcyBvbmx5IHVzZWQK
KyAgICAgICAgZm9yIGRhdGUgYW5kIHRpbWUgY29udHJvbHMsIHVubmVjY2Vzc2FyeSBhYnN0cmFj
dGlvbi4KKyAgICAgICAgV2UgbmVlZCB0byBlbnN1cmUgdGhlIHBvaXNpdGlvbiBpbmZvcm1hdGlv
biBpcyB1cCB0byBkYXRlIGJlZm9yZSBwcmVzZW50aW5nCisgICAgICAgIHRoZSBjb250ZXh0IG1l
bnUsIG9yIHRoZSBwb3NpdGlvbiBpdCB3aWxsIGJlIHByZXNlbnRlZCBmcm9tIGNhbiBiZSBzdGFs
ZS4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2hv
dWxkU2hvd0F1dG9tYXRpY0tleWJvYXJkVUlJZ25vcmluZ0lucHV0TW9kZV0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IHJlcXVpcmVzQWNjZXNzb3J5Vmlld10pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF91cGRhdGVBY2Nlc3NvcnldKToKKyAgICAgICAgKG1heUNvbnRhaW5TZWxlY3Rh
YmxlVGV4dCk6CisgICAgICAgIChjcmVhdGVJbnB1dFBlcmlwaGVyYWxXaXRoVmlldyk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgaW5wdXRMYWJlbFRleHRdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfcmVtb3ZlQ29udGV4dE1lbnVWaWV3SWZQb3NzaWJsZV0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IGlucHV0TGFiZWxUZXh0Rm9yVmlld0NvbnRyb2xsZXI6XSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgZm9ybUlucHV0Q29udHJvbF0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IHNldFRpbWVQaWNrZXJWYWx1ZVRvSG91cjptaW51dGU6XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgdGltZVBpY2tlclZhbHVlSG91cl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IHRpbWVQaWNrZXJWYWx1ZU1pbnV0ZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5oLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbTogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wubW0uCisg
ICAgICAgICgtW1dLRGF0ZVRpbWVDb250ZXh0TWVudVZpZXdDb250cm9sbGVyIGluaXRdKToKKyAg
ICAgICAgKC1bV0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXIgcHJlZmVycmVkQ29u
dGVudFNpemVdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBpbml0V2l0aFZpZXc6ZGF0
ZVBpY2tlck1vZGU6XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgY29udGV4dE1lbnVJ
bnRlcmFjdGlvbjpwcmV2aWV3Rm9ySGlnaGxpZ2h0aW5nTWVudVdpdGhDb25maWd1cmF0aW9uOl0p
OgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIF9jb250ZXh0TWVudUludGVyYWN0aW9uOnN0
eWxlRm9yTWVudVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlj
a2VyIGNvbnRleHRNZW51SW50ZXJhY3Rpb246Y29uZmlndXJhdGlvbkZvck1lbnVBdExvY2F0aW9u
Ol0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGNvbnRleHRNZW51SW50ZXJhY3Rpb246
d2lsbEVuZEZvckNvbmZpZ3VyYXRpb246YW5pbWF0b3I6XSk6CisgICAgICAgICgtW1dLRGF0ZVRp
bWVQaWNrZXIgcmVtb3ZlQ29udGV4dE1lbnVJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtXS0Rh
dGVUaW1lUGlja2VyIGVuc3VyZUNvbnRleHRNZW51SW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1b
V0tEYXRlVGltZVBpY2tlciBzaG93RGF0ZVRpbWVQaWNrZXJdKToKKyAgICAgICAgKC1bV0tEYXRl
VGltZVBpY2tlciByZXNldDpdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBjYWxlbmRh
clR5cGVdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1dLRGF0ZVRpbWVQaWNrZXIgc2V0RGF0ZVRpbWVQaWNrZXJUb0luaXRpYWxWYWx1ZV0pOgor
ICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGNvbnRyb2xCZWdpbkVkaXRpbmddKToKKyAgICAg
ICAgKC1bV0tEYXRlVGltZVBpY2tlciB2aWV3Q29udHJvbGxlcl0pOgorICAgICAgICAoLVtXS0Rh
dGVUaW1lUGlja2VyIGNvbnRyb2xFbmRFZGl0aW5nXSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVJ
bnB1dENvbnRyb2wgaW5pdFdpdGhWaWV3Ol0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lSW5wdXRD
b250cm9sIHNldFRpbWVQaWNrZXJIb3VyOm1pbnV0ZTpdKToKKyAgICAgICAgKC1bV0tEYXRlVGlt
ZUlucHV0Q29udHJvbCBkYXRlVGltZVBpY2tlckNhbGVuZGFyVHlwZV0pOgorICAgICAgICAoLVtX
S0RhdGVUaW1lSW5wdXRDb250cm9sIHRpbWVQaWNrZXJWYWx1ZUhvdXJdKToKKyAgICAgICAgKC1b
V0tEYXRlVGltZUlucHV0Q29udHJvbCB0aW1lUGlja2VyVmFsdWVNaW51dGVdKToKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNS0xMSAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbIG1hY09TIF0gc2Ny
b2xsaW5nY29vcmRpbmF0b3IvbWFjL2xhdGNoaW5nL3Njcm9sbGluZy1zZWxlY3Qtc2hvdWxkLW5v
dC1sYXRjaC1tYWluZnJhbWUuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MgYi9Tb3VyY2UvV2ViQ29y
ZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCmluZGV4IDc4NDE5ZDUxZWFjZGE4ODUwNzcx
YmU3OTMyZTZmMjVjODdlZjQ2NjAuLmYyNTQxZjdhZTYyNWE1OGQxYTUwNDg1YjgxYjQ4Njk3N2E5
MzY0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0
cmluZ3MKKysrIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpA
QCAtMjExLDkgKzIxMSw2IEBACiAvKiBUaXRsZSBmb3IgZmlsZSBidXR0b24gdXNlZCBpbiBIVE1M
IGZvcm1zIGZvciBtZWRpYSBmaWxlcyAqLwogIkNob29zZSBNZWRpYSAoU2luZ2xlKSIgPSAiQ2hv
b3NlIE1lZGlhIChTaW5nbGUpIjsKIAotLyogQ2xlYXIgYnV0dG9uIGluIGRhdGUgaW5wdXQgcG9w
b3ZlciAqLwotIkNsZWFyIEJ1dHRvbiBEYXRlIFBvcG92ZXIiID0gIkNsZWFyIjsKLQogLyogbWVu
dSBpdGVtIGluIFJlY2VudCBTZWFyY2hlcyBtZW51IHRoYXQgZW1wdGllcyBtZW51J3MgY29udGVu
dHMgKi8KICJDbGVhciBSZWNlbnQgU2VhcmNoZXMiID0gIkNsZWFyIFJlY2VudCBTZWFyY2hlcyI7
CiAKQEAgLTEzMjcsNiArMTMyNCw5IEBACiAvKiBIVFRQIHJlc3VsdCBjb2RlIHN0cmluZyAqLwog
InJlcXVlc3RlZCByYW5nZSBub3Qgc2F0aXNmaWFibGUiID0gInJlcXVlc3RlZCByYW5nZSBub3Qg
c2F0aXNmaWFibGUiOwogCisvKiBSZXNldCBidXR0b24gaW4gZGF0ZSBpbnB1dCBwb3BvdmVyICov
CisiUmVzZXQgQnV0dG9uIERhdGUvVGltZSBDb250ZXh0IE1lbnUiID0gIlJlc2V0IjsKKwogLyog
SFRUUCByZXN1bHQgY29kZSBzdHJpbmcgKi8KICJyZXNldCBjb250ZW50IiA9ICJyZXNldCBjb250
ZW50IjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0
U1BJLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCBk
ZDQ3NDM0OGNkOGU1YWU0MDI0N2NjM2Y4NzFhYjQ1MTBmNzkwMDIzLi5iYzFjMjUwNTFkNGFiZDlh
ODA5OTYyN2MwOTYxYWI5NDNiYmI3MTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL3NwaS9pb3MvVUlLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9p
b3MvVUlLaXRTUEkuaApAQCAtMTE1MiwxMCArMTE1MiwxMiBAQCB0eXBlZGVmIE5TX09QVElPTlMo
TlNJbnRlZ2VyLCBVSVdLRG9jdW1lbnRSZXF1ZXN0RmxhZ3MpIHsKIHR5cGVkZWYgTlNfRU5VTShO
U1VJbnRlZ2VyLCBfVUlDb250ZXh0TWVudUxheW91dCkgewogICAgIF9VSUNvbnRleHRNZW51TGF5
b3V0QWN0aW9uc09ubHkgPSAxLAogICAgIF9VSUNvbnRleHRNZW51TGF5b3V0Q29tcGFjdE1lbnUg
PSAzLAorICAgIF9VSUNvbnRleHRNZW51TGF5b3V0QXV0b21hdGljID0gMTAwLAogfTsKIAogQGlu
dGVyZmFjZSBfVUlDb250ZXh0TWVudVN0eWxlIDogTlNPYmplY3QgPE5TQ29weWluZz4KIEBwcm9w
ZXJ0eSAobm9uYXRvbWljKSBfVUlDb250ZXh0TWVudUxheW91dCBwcmVmZXJyZWRMYXlvdXQ7CitA
cHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBoYXNJbnRlcmFjdGl2ZVByZXZpZXc7CiArIChpbnN0
YW5jZXR5cGUpZGVmYXVsdFN0eWxlOwogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
MTY4ZjFkYjEwNmQ1NGMyNTBkNzA3NDVhNDJmYWI5NDBhMTliYWZkYy4uYzY5Mjc5YTVmZDQzNjQw
NzQ1MGZkMDQ0MDk3NzIyNTBmNTFiNzFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDE1
LDExICs0MTUsMTEgQEAgVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JXS1dlYlZp
ZXcubW0KIAogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5tbQogVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQorVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRmlsZVVwbG9hZFBhbmVsLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1D
b250cm9sVmlldy5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wubW0K
IFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JQaWNrZXIubW0KLVVJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBl
cmlwaGVyYWxCYXNlLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBvcG92ZXIubW0KIFVJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4
IGRkYjllYjAyNGJkYjAwY2EyOTJkZGRiODAwZGM0MDRkZDk5NmY4MGIuLjViMjdhNTBiMmZiZjI2
ZTkxMTAxMWEyM2I2NWQwMmYyNDNjMWVlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTk5LDkgKzk5LDkg
QEAgc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDsKIEBjbGFzcyBXZWJFdmVudDsKIEBj
bGFzcyBXS0FjdGlvblNoZWV0QXNzaXN0YW50OwogQGNsYXNzIFdLQ29udGV4dE1lbnVFbGVtZW50
SW5mbzsKK0BjbGFzcyBXS0RhdGVUaW1lSW5wdXRDb250cm9sOwogQGNsYXNzIFdLRHJhd2luZ0Nv
b3JkaW5hdG9yOwogQGNsYXNzIFdLRm9jdXNlZEZvcm1Db250cm9sVmlldzsKLUBjbGFzcyBXS0Zv
cm1JbnB1dENvbnRyb2w7CiBAY2xhc3MgV0tGb3JtSW5wdXRTZXNzaW9uOwogQGNsYXNzIFdLSGln
aGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI7CiBAY2xhc3MgV0tNb3VzZUdlc3R1cmVS
ZWNvZ25pemVyOwpAQCAtNTM5LDYgKzUzOSw4IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5U
VklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAt
IChCT09MKWhhc0hpZGRlbkNvbnRlbnRFZGl0YWJsZTsKIC0gKHZvaWQpZ2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZDooV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUpY29t
bWFuZDsKIAorLSAoTlNTdHJpbmcgKilpbnB1dExhYmVsVGV4dDsKKwogLSAodm9pZClwcmVzZXJ2
ZUZvY3VzOwogLSAodm9pZClyZWxlYXNlRm9jdXM7CiAKQEAgLTYxNSw3ICs2MTcsNyBAQCBGT1Jf
RUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19B
Q1RJT05fRk9SX1dFQl9WSUVXKQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0
cmluZyAqdGV4dENvbnRlbnRUeXBlRm9yVGVzdGluZzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgTlNTdHJpbmcgKnNlbGVjdEZvcm1Qb3BvdmVyVGl0bGU7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpmb3JtSW5wdXRMYWJlbDsKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgV0tGb3JtSW5wdXRDb250cm9sICpmb3JtSW5wdXRDb250cm9s
OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0RhdGVUaW1lSW5wdXRDb250cm9s
ICpkYXRlVGltZUlucHV0Q29udHJvbDsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA0YWRi
ZjhhYWE5NWQ2MGRlNWI3OTA4NGNlYjI5ODkyMmM2NDQ5NGRhLi5jOTliNDkzM2I4ZThmN2U3ZDAy
NDRmMDY1YzYwZWYzZmM0MDdkNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTUwLDEwICs1MCwxMCBA
QAogI2ltcG9ydCAiV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLQ29udGV4dE1lbnVFbGVtZW50SW5mb1ByaXZhdGUuaCIKICNpbXBvcnQgIldLRGF0ZVBpY2tl
clZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS0RhdGVUaW1lSW5wdXRDb250cm9sLmgiCiAj
aW1wb3J0ICJXS0RyYXdpbmdDb29yZGluYXRvci5oIgogI2ltcG9ydCAiV0tFcnJvci5oIgogI2lt
cG9ydCAiV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3LmgiCi0jaW1wb3J0ICJXS0Zvcm1JbnB1dENv
bnRyb2wuaCIKICNpbXBvcnQgIldLRm9ybVNlbGVjdENvbnRyb2wuaCIKICNpbXBvcnQgIldLRnJh
bWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJl
Y29nbml6ZXIuaCIKQEAgLTE5MDIsMTYgKzE5MDIsMTUgQEAgLSAoQk9PTClfc2hvdWxkU2hvd0F1
dG9tYXRpY0tleWJvYXJkVUlJZ25vcmluZ0lucHV0TW9kZQogICAgIHN3aXRjaCAoX2ZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKICAgICBjYXNlIFdlYktpdDo6SW5wdXRU
eXBlOjpOb25lOgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRyYXdpbmc6CisgICAgY2Fz
ZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZToKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpN
b250aDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgorICAgIGNh
c2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6CiAgICAgICAgIHJldHVybiBOTzsKICAgICBjYXNl
IFdlYktpdDo6SW5wdXRUeXBlOjpTZWxlY3Q6CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29sb3I6CiAjZW5kaWYKLSAgICBjYXNlIFdl
YktpdDo6SW5wdXRUeXBlOjpEYXRlOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1vbnRo
OgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw6Ci0gICAgY2FzZSBX
ZWJLaXQ6OklucHV0VHlwZTo6VGltZToKLSAgICAgICAgcmV0dXJuICFXZWJLaXQ6OmN1cnJlbnRV
c2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiAh
X2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uaXNSZWFkT25seTsKICAgICB9CkBAIC0yOTE0LDYg
KzI5MTMsMTAgQEAgLSAoQk9PTClyZXF1aXJlc0FjY2Vzc29yeVZpZXcKICAgICBzd2l0Y2ggKF9m
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlKSB7CiAgICAgY2FzZSBXZWJLaXQ6
OklucHV0VHlwZTo6Tm9uZToKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEcmF3aW5nOgor
ICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGU6CisgICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpNb250aDoK
KyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lOgogICAgICAgICByZXR1cm4gTk87CiAg
ICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGV4dDoKICAgICBjYXNlIFdlYktpdDo6SW5wdXRU
eXBlOjpQYXNzd29yZDoKQEAgLTI5MjYsMTIgKzI5MjksOCBAQCAtIChCT09MKXJlcXVpcmVzQWNj
ZXNzb3J5VmlldwogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbnRlbnRFZGl0YWJsZToK
ICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0QXJlYToKICAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpTZWxlY3Q6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZToKICAg
ICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZToKLSAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpEYXRlVGltZUxvY2FsOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1vbnRo
OgotICAgIGNhc2UgV2ViS2l0OjogSW5wdXRUeXBlOjpXZWVrOgotICAgIGNhc2UgV2ViS2l0OjpJ
bnB1dFR5cGU6OlRpbWU6CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6V2VlazoKICNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpDb2xv
cjoKICNlbmRpZgpAQCAtNDQwMiw4ICs0NDAxLDggQEAgLSAodm9pZClfdXBkYXRlQWNjZXNzb3J5
CiAKICAgICBzd2l0Y2ggKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlKSB7
CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZToKLSAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpNb250aDoKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxvY2Fs
OgorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1vbnRoOgogICAgIGNhc2UgV2ViS2l0OjpJ
bnB1dFR5cGU6OlRpbWU6CiAgICAgICAgIFthY2Nlc3NvcnlWaWV3IHNldENsZWFyVmlzaWJsZTpZ
RVNdOwogICAgICAgICByZXR1cm47CkBAIC01NzI5LDcgKzU3MjgsNiBAQCBzdGF0aWMgYm9vbCBt
YXlDb250YWluU2VsZWN0YWJsZVRleHQoV2ViS2l0OjpJbnB1dFR5cGUgdHlwZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIC8vIFRoZSBmb2xsb3dpbmcgdHlwZXMgbG9vayBhbmQgYmVoYXZl
IGxpa2UgYSB0ZXh0IGZpZWxkLgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbnRlbnRF
ZGl0YWJsZToKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZToKICAgICBjYXNl
IFdlYktpdDo6SW5wdXRUeXBlOjpFbWFpbDoKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpO
dW1iZXI6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TnVtYmVyUGFkOgpAQCAtNTczOSw2
ICs1NzM3LDcgQEAgc3RhdGljIGJvb2wgbWF5Q29udGFpblNlbGVjdGFibGVUZXh0KFdlYktpdDo6
SW5wdXRUeXBlIHR5cGUpCiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGV4dDoKICAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0QXJlYToKICAgICBjYXNlIFdlYktpdDo6SW5wdXRU
eXBlOjpVUkw6CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWU6CiAgICAgY2Fz
ZSBXZWJLaXQ6OklucHV0VHlwZTo6V2VlazoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtNTgwMSw4ICs1ODAwLDEzIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9ybVBl
cmlwaGVyYWw+PiBjcmVhdGVJbnB1dFBlcmlwaGVyYWxXaXRoVmlldyhXZWJLCiAgICAgY2FzZSBX
ZWJLaXQ6OklucHV0VHlwZTo6Q29sb3I6CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tGb3Jt
Q29sb3JDb250cm9sIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlld10pOwogI2VuZGlmIC8vIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGU6Cisg
ICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICBjYXNlIFdlYktp
dDo6SW5wdXRUeXBlOjpNb250aDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lOgor
ICAgICAgICByZXR1cm4gYWRvcHROUyhbW1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wgYWxsb2NdIGlu
aXRXaXRoVmlldzp2aWV3XSk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGFkb3B0TlMo
W1tXS0Zvcm1JbnB1dENvbnRyb2wgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3XSk7CisgICAgICAg
IHJldHVybiBuaWw7CiAgICAgfQogI2VuZGlmCiB9CkBAIC02NzUxLDYgKzY3NTUsMjAgQEAgLSAo
dm9pZClzaGFyZVNoZWV0RGlkRGlzbWlzczooV0tTaGFyZVNoZWV0ICopc2hhcmVTaGVldAogfQog
I2VuZGlmCiAKKy0gKE5TU3RyaW5nICopaW5wdXRMYWJlbFRleHQKK3sKKyAgICBpZiAoIV9mb2N1
c2VkRWxlbWVudEluZm9ybWF0aW9uLmxhYmVsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIF9m
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmxhYmVsOworCisgICAgaWYgKCFfZm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbi5hcmlhTGFiZWwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gX2ZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24uYXJpYUxhYmVsOworCisgICAgaWYgKCFfZm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbi50aXRsZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBfZm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbi50aXRsZTsKKworICAgIHJldHVybiBfZm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbi5wbGFjZWhvbGRlcjsKK30KKwogI3ByYWdtYSBtYXJrIC0gVUlUZXh0SW5wdXRNdWx0
aURvY3VtZW50CiAKIC0gKEJPT0wpX3Jlc3RvcmVGb2N1c1dpdGhUb2tlbjooaWQgPE5TQ29weWlu
ZywgTlNTZWN1cmVDb2Rpbmc+KXRva2VuCkBAIC03NjkyLDEwICs3NzEwLDE0IEBAIC0gKHZvaWQp
X3JlbW92ZUNvbnRleHRNZW51Vmlld0lmUG9zc2libGUKICAgICBpZiAoW19hY3Rpb25TaGVldEFz
c2lzdGFudCBoYXNDb250ZXh0TWVudUludGVyYWN0aW9uXSkKICAgICAgICAgcmV0dXJuOwogI2Vu
ZGlmCi0gICAgLy8gYW5kIGZvciB0aGUgZmlsZSB1cGxvYWQgcGFuZWwuCisgICAgLy8gYW5kIGZv
ciB0aGUgZmlsZSB1cGxvYWQgcGFuZWwuLi4KICAgICBpZiAoX2ZpbGVVcGxvYWRQYW5lbCkKICAg
ICAgICAgcmV0dXJuOwogICAgIAorICAgIC8vIGFuZCBmb3IgdGhlIGRhdGUvdGltZSBwaWNrZXIu
CisgICAgaWYgKFtzZWxmIGRhdGVUaW1lSW5wdXRDb250cm9sXSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAogICAgIFtzdGQ6OmV4Y2hhbmdlKF9jb250ZXh0TWVudUhpbnRDb250YWluZXJWaWV3LCBu
aWwpIHJlbW92ZUZyb21TdXBlcnZpZXddOwogfQogCkBAIC04MzExLDE2ICs4MzMzLDcgQEAgLSAo
VUlWaWV3ICopaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2Fy
ZFZpZXdDb250cm9sbGVyICopY28KIAogLSAoTlNTdHJpbmcgKilpbnB1dExhYmVsVGV4dEZvclZp
ZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgog
ewotICAgIGlmICghX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24ubGFiZWwuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24ubGFiZWw7Ci0KLSAgICBp
ZiAoIV9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmFyaWFMYWJlbC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5hcmlhTGFiZWw7Ci0KLSAgICBp
ZiAoIV9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnRpdGxlLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnRpdGxlOwotCi0gICAgcmV0dXJuIF9m
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnBsYWNlaG9sZGVyOworICAgIHJldHVybiBbc2VsZiBp
bnB1dExhYmVsVGV4dF07CiB9CiAKIC0gKE5TU3RyaW5nICopaW5pdGlhbFZhbHVlRm9yVmlld0Nv
bnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCkBAIC04
NjEyLDEwICs4NjI1LDEwIEBAIC0gKHZvaWQpX2RvQWZ0ZXJSZWNlaXZpbmdFZGl0RHJhZ1NuYXBz
aG90Rm9yVGVzdGluZzooZGlzcGF0Y2hfYmxvY2tfdClhY3Rpb24KICAgICBhY3Rpb24oKTsKIH0K
IAotLSAoV0tGb3JtSW5wdXRDb250cm9sICopZm9ybUlucHV0Q29udHJvbAorLSAoV0tEYXRlVGlt
ZUlucHV0Q29udHJvbCAqKWRhdGVUaW1lSW5wdXRDb250cm9sCiB7Ci0gICAgaWYgKFtfaW5wdXRQ
ZXJpcGhlcmFsIGlzS2luZE9mQ2xhc3M6V0tGb3JtSW5wdXRDb250cm9sLmNsYXNzXSkKLSAgICAg
ICAgcmV0dXJuIChXS0Zvcm1JbnB1dENvbnRyb2wgKilfaW5wdXRQZXJpcGhlcmFsLmdldCgpOwor
ICAgIGlmIChbX2lucHV0UGVyaXBoZXJhbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVJbnB1dENv
bnRyb2wuY2xhc3NdKQorICAgICAgICByZXR1cm4gKFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wgKilf
aW5wdXRQZXJpcGhlcmFsLmdldCgpOwogICAgIHJldHVybiBuaWw7CiB9CiAKQEAgLTg2ODEsMTYg
Kzg2OTQsMTYgQEAgLSAodm9pZClzZXRUaW1lUGlja2VyVmFsdWVUb0hvdXI6KE5TSW50ZWdlcilo
b3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZQogICAgIGlmIChbX3ByZXNlbnRlZEZ1bGxTY3Jl
ZW5JbnB1dFZpZXdDb250cm9sbGVyIGlzS2luZE9mQ2xhc3M6W1dLVGltZVBpY2tlclZpZXdDb250
cm9sbGVyIGNsYXNzXV0pCiAgICAgICAgIFsoV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgKilf
cHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIuZ2V0KCkgc2V0SG91cjpob3Vy
IG1pbnV0ZTptaW51dGVdOwogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoW19p
bnB1dFBlcmlwaGVyYWwgaXNLaW5kT2ZDbGFzczpbV0tGb3JtSW5wdXRDb250cm9sIGNsYXNzXV0p
Ci0gICAgICAgIFsoV0tGb3JtSW5wdXRDb250cm9sICopX2lucHV0UGVyaXBoZXJhbC5nZXQoKSBz
ZXRUaW1lUGlja2VySG91cjpob3VyIG1pbnV0ZTptaW51dGVdOworICAgIGlmIChbX2lucHV0UGVy
aXBoZXJhbCBpc0tpbmRPZkNsYXNzOltXS0RhdGVUaW1lSW5wdXRDb250cm9sIGNsYXNzXV0pCisg
ICAgICAgIFsoV0tEYXRlVGltZUlucHV0Q29udHJvbCAqKV9pbnB1dFBlcmlwaGVyYWwuZ2V0KCkg
c2V0VGltZVBpY2tlckhvdXI6aG91ciBtaW51dGU6bWludXRlXTsKICNlbmRpZgogfQogCiAtIChk
b3VibGUpdGltZVBpY2tlclZhbHVlSG91cgogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgaWYgKFtfaW5wdXRQZXJpcGhlcmFsIGlzS2luZE9mQ2xhc3M6W1dLRm9ybUlucHV0Q29udHJv
bCBjbGFzc11dKQotICAgICAgICByZXR1cm4gWyhXS0Zvcm1JbnB1dENvbnRyb2wgKilfaW5wdXRQ
ZXJpcGhlcmFsLmdldCgpIHRpbWVQaWNrZXJWYWx1ZUhvdXJdOworICAgIGlmIChbX2lucHV0UGVy
aXBoZXJhbCBpc0tpbmRPZkNsYXNzOltXS0RhdGVUaW1lSW5wdXRDb250cm9sIGNsYXNzXV0pCisg
ICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wgKilfaW5wdXRQZXJpcGhlcmFs
LmdldCgpIHRpbWVQaWNrZXJWYWx1ZUhvdXJdOwogI2VuZGlmCiAgICAgcmV0dXJuIC0xOwogfQpA
QCAtODY5OCw4ICs4NzExLDggQEAgLSAoZG91YmxlKXRpbWVQaWNrZXJWYWx1ZUhvdXIKIC0gKGRv
dWJsZSl0aW1lUGlja2VyVmFsdWVNaW51dGUKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgIGlmIChbX2lucHV0UGVyaXBoZXJhbCBpc0tpbmRPZkNsYXNzOltXS0Zvcm1JbnB1dENvbnRy
b2wgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFsoV0tGb3JtSW5wdXRDb250cm9sICopX2lucHV0
UGVyaXBoZXJhbC5nZXQoKSB0aW1lUGlja2VyVmFsdWVNaW51dGVdOworICAgIGlmIChbX2lucHV0
UGVyaXBoZXJhbCBpc0tpbmRPZkNsYXNzOltXS0RhdGVUaW1lSW5wdXRDb250cm9sIGNsYXNzXV0p
CisgICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wgKilfaW5wdXRQZXJpcGhl
cmFsLmdldCgpIHRpbWVQaWNrZXJWYWx1ZU1pbnV0ZV07CiAjZW5kaWYKICAgICByZXR1cm4gLTE7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRl
VGltZUlucHV0Q29udHJvbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
RGF0ZVRpbWVJbnB1dENvbnRyb2wuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NGJjMTQ4ODViMjU2MGFiNGI4NDA5
NzU1ZjQzZWYwNTgzN2VhYjM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaApAQCAtMCwwICsxLDQzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgIldLRm9y
bVBlcmlwaGVyYWxCYXNlLmgiCisKK0BjbGFzcyBXS0NvbnRlbnRWaWV3OworCitAaW50ZXJmYWNl
IFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wgOiBXS0Zvcm1QZXJpcGhlcmFsQmFzZQorLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXc7CitAZW5kCisKK0BpbnRl
cmZhY2UgV0tEYXRlVGltZUlucHV0Q29udHJvbCAoV0tUZXN0aW5nKQorQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqZGF0ZVRpbWVQaWNrZXJDYWxlbmRhclR5cGU7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGRvdWJsZSB0aW1lUGlja2VyVmFsdWVIb3Vy
OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBkb3VibGUgdGltZVBpY2tlclZhbHVl
TWludXRlOworLSAodm9pZClzZXRUaW1lUGlja2VySG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRl
OihOU0ludGVnZXIpbWludXRlOworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVU
aW1lSW5wdXRDb250cm9sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
RGF0ZVRpbWVJbnB1dENvbnRyb2wubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc0ODU1Y2VlYjdjMzhlYjNlZGI0
MjY1MzU2NWM3YWEwNWQwMTUzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLm1tCkBAIC0wLDAgKzEsNDYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0RhdGVUaW1l
SW5wdXRDb250cm9sLmgiCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0ICJV
c2VySW50ZXJmYWNlSWRpb20uaCIKKyNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIKKyNpbXBvcnQg
IldLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisj
aW1wb3J0IDxVSUtpdC9VSUJhckJ1dHRvbkl0ZW0uaD4KKyNpbXBvcnQgPFVJS2l0L1VJRGF0ZVBp
Y2tlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0BpbnRlcmZhY2Ug
V0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXIgOiBVSVZpZXdDb250cm9sbGVyCitA
ZW5kCisKK0BpbnRlcmZhY2UgV0tEYXRlVGltZVBpY2tlciA6IE5TT2JqZWN0PFdLRm9ybUNvbnRy
b2wKKyNpZiBVU0UoVUlDT05URVhUTUVOVSkKKywgVUlDb250ZXh0TWVudUludGVyYWN0aW9uRGVs
ZWdhdGUKKyNlbmRpZgorPiB7CisgICAgUmV0YWluUHRyPFVJRGF0ZVBpY2tlcj4gX2RhdGVQaWNr
ZXI7CisgICAgTlNTdHJpbmcgKl9mb3JtYXRTdHJpbmc7CisgICAgTlNTdHJpbmcgKl9pbml0aWFs
VmFsdWU7CisgICAgTlNUaW1lSW50ZXJ2YWwgX2luaXRpYWxWYWx1ZUFzTnVtYmVyOworICAgIEJP
T0wgX3Nob3VsZFJlbW92ZVRpbWVab25lSW5mb3JtYXRpb247CisgICAgQk9PTCBfaXNUaW1lSW5w
dXQ7CisgICAgV0tDb250ZW50VmlldyAqX3ZpZXc7CisgICAgQ0dQb2ludCBfaW50ZXJhY3Rpb25Q
b2ludDsKKyAgICBSZXRhaW5QdHI8V0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXI+
IF92aWV3Q29udHJvbGxlcjsKKyNpZiBVU0UoVUlDT05URVhUTUVOVSkKKyAgICBSZXRhaW5QdHI8
VUlDb250ZXh0TWVudUludGVyYWN0aW9uPiBfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9u
OworI2VuZGlmCisgICAgQk9PTCBfcHJlc2VudGluZzsKKyAgICBCT09MIF9wcmVzZXJ2aW5nRm9j
dXM7Cit9CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmll
dyBkYXRlUGlja2VyTW9kZTooVUlEYXRlUGlja2VyTW9kZSltb2RlOworLSAoV0tEYXRlVGltZUNv
bnRleHRNZW51Vmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlcjsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmNhbGVuZGFyVHlwZTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgZG91YmxlIGhvdXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIGRvdWJsZSBtaW51dGU7CistICh2b2lkKXNldEhvdXI6KE5TSW50ZWdlcilob3VyIG1p
bnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZTsKK0BlbmQKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV0tGb3JtSW5wdXRDb250cm9sQWRkaXRpb25z
Lm1tPgorI2VuZGlmCisKKworQGltcGxlbWVudGF0aW9uIFdLRGF0ZVRpbWVDb250ZXh0TWVudVZp
ZXdDb250cm9sbGVyCisKKy0gKENHU2l6ZSlwcmVmZXJyZWRDb250ZW50U2l6ZQoreworICAgIHJl
dHVybiBbc2VsZi52aWV3IHN5c3RlbUxheW91dFNpemVGaXR0aW5nU2l6ZTpVSUxheW91dEZpdHRp
bmdDb21wcmVzc2VkU2l6ZV07Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLRGF0ZVRp
bWVQaWNrZXIKKworc3RhdGljIE5TU3RyaW5nICogY29uc3Qga0RhdGVGb3JtYXRTdHJpbmcgPSBA
Inl5eXktTU0tZGQiOyAvLyAiMjAxMS0wMS0yNyIuCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBr
TW9udGhGb3JtYXRTdHJpbmcgPSBAInl5eXktTU0iOyAvLyAiMjAxMS0wMSIuCitzdGF0aWMgTlNT
dHJpbmcgKiBjb25zdCBrVGltZUZvcm1hdFN0cmluZyA9IEAiSEg6bW0iOyAvLyAiMTM6NDUiLgor
c3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGtNaWxsaXNlY29uZHNQZXJTZWNvbmQgPSAxMDAw
OworCisjaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIEhBVkUoVUlEQVRFUElDS0VSX1NU
WUxFKQorLSAoVUlEYXRlUGlja2VyU3R5bGUpZGF0ZVBpY2tlclN0eWxlCit7CisgICAgcmV0dXJu
IFVJRGF0ZVBpY2tlclN0eWxlQXV0b21hdGljOworfQorI2VuZGlmCisKKy0gKGlkKWluaXRXaXRo
VmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgZGF0ZVBpY2tlck1vZGU6KFVJRGF0ZVBpY2tlck1v
ZGUpbW9kZQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1
cm4gbmlsOworICAgIF92aWV3ID0gdmlldzsKKyAgICBfaW50ZXJhY3Rpb25Qb2ludCA9IFtfdmll
dyBsYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbl07CisgICAgX3Nob3VsZFJlbW92ZVRpbWVab25lSW5m
b3JtYXRpb24gPSBOTzsKKyAgICBfaXNUaW1lSW5wdXQgPSBOTzsKKyAgICBzd2l0Y2ggKHZpZXcu
Zm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgeworICAgIGNhc2UgSW5wdXRU
eXBlOjpEYXRlOgorICAgICAgICBfZm9ybWF0U3RyaW5nID0ga0RhdGVGb3JtYXRTdHJpbmc7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5wdXRUeXBlOjpNb250aDoKKyAgICAgICAgX2Zvcm1h
dFN0cmluZyA9IGtNb250aEZvcm1hdFN0cmluZzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJ
bnB1dFR5cGU6OlRpbWU6CisgICAgICAgIF9mb3JtYXRTdHJpbmcgPSBrVGltZUZvcm1hdFN0cmlu
ZzsKKyAgICAgICAgX2lzVGltZUlucHV0ID0gWUVTOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IElucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICAgICAgX3Nob3VsZFJlbW92ZVRpbWVab25l
SW5mb3JtYXRpb24gPSBZRVM7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICAKKyAgICBfZGF0ZVBpY2tlciA9IGFkb3B0TlMoW1tVSURhdGVQ
aWNrZXIgYWxsb2NdIGluaXRdKTsKKworICAgIFtfZGF0ZVBpY2tlciBzZXREYXRlUGlja2VyTW9k
ZTptb2RlXTsKKyAgICBbX2RhdGVQaWNrZXIgc2V0SGlkZGVuOk5PXTsKKyAgICAKKyNpZiBIQVZF
KFVJREFURVBJQ0tFUl9TVFlMRSkKKyAgICBbX2RhdGVQaWNrZXIgc2V0UHJlZmVycmVkRGF0ZVBp
Y2tlclN0eWxlOltzZWxmIGRhdGVQaWNrZXJTdHlsZV1dOworI2VuZGlmCisgICAgaWYgKFtzZWxm
IHNob3VsZFByZXNlbnRHcmVnb3JpYW5DYWxlbmRhcjp2aWV3LmZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb25dKQorICAgICAgICBfZGF0ZVBpY2tlci5nZXQoKS5jYWxlbmRhciA9IFtOU0NhbGVuZGFy
IGNhbGVuZGFyV2l0aElkZW50aWZpZXI6TlNDYWxlbmRhcklkZW50aWZpZXJHcmVnb3JpYW5dOwor
ICAgIAorICAgIFtfZGF0ZVBpY2tlciBhZGRUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF9k
YXRlQ2hhbmdlSGFuZGxlcjopIGZvckNvbnRyb2xFdmVudHM6VUlDb250cm9sRXZlbnRWYWx1ZUNo
YW5nZWRdOworICAgIAorICAgIHJldHVybiBzZWxmOworfQorCisjaWYgVVNFKFVJQ09OVEVYVE1F
TlUpCisKKy0gKFVJVGFyZ2V0ZWRQcmV2aWV3ICopY29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlD
b250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJldmlld0ZvckhpZ2hsaWdodGlu
Z01lbnVXaXRoQ29uZmlndXJhdGlvbjooVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uCit7CisgICAgcmV0dXJuIFtfdmlldyBfY3JlYXRlVGFyZ2V0ZWRDb250ZXh0TWVu
dUhpbnRQcmV2aWV3SWZQb3NzaWJsZV07Cit9CisKKy0gKF9VSUNvbnRleHRNZW51U3R5bGUgKilf
Y29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJh
Y3Rpb24gc3R5bGVGb3JNZW51V2l0aENvbmZpZ3VyYXRpb246KFVJQ29udGV4dE1lbnVDb25maWd1
cmF0aW9uICopY29uZmlndXJhdGlvbgoreworICAgIF9VSUNvbnRleHRNZW51U3R5bGUgKnN0eWxl
ID0gW19VSUNvbnRleHRNZW51U3R5bGUgZGVmYXVsdFN0eWxlXTsKKyAgICBzdHlsZS5oYXNJbnRl
cmFjdGl2ZVByZXZpZXcgPSBZRVM7CisgICAgc3R5bGUucHJlZmVycmVkTGF5b3V0ID0gX1VJQ29u
dGV4dE1lbnVMYXlvdXRBdXRvbWF0aWM7CisgICAgcmV0dXJuIHN0eWxlOworfQorCistIChVSUNv
bnRleHRNZW51Q29uZmlndXJhdGlvbiAqKWNvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4
dE1lbnVJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIGNvbmZpZ3VyYXRpb25Gb3JNZW51QXRMb2Nh
dGlvbjooQ0dQb2ludClsb2NhdGlvbgoreworICAgIHJldHVybiBbVUlDb250ZXh0TWVudUNvbmZp
Z3VyYXRpb24gY29uZmlndXJhdGlvbldpdGhJZGVudGlmaWVyOkAiX1VJRGF0ZVBpY2tlckNvbXBh
Y3RFZGl0b3IiIHByZXZpZXdQcm92aWRlcjpeeworCisgICAgICAgIF92aWV3Q29udHJvbGxlciA9
IGFkb3B0TlMoW1tXS0RhdGVUaW1lQ29udGV4dE1lbnVWaWV3Q29udHJvbGxlciBhbGxvY10gaW5p
dF0pOworICAgICAgICBSZXRhaW5QdHI8VUlOYXZpZ2F0aW9uQ29udHJvbGxlcj4gbmF2aWdhdGlv
bkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlOYXZpZ2F0aW9uQ29udHJvbGxlciBhbGxvY10gaW5p
dFdpdGhSb290Vmlld0NvbnRyb2xsZXI6X3ZpZXdDb250cm9sbGVyLmdldCgpXSk7CisgICAgICAg
IE5TU3RyaW5nICpyZXNldFN0cmluZyA9IFdFQl9VSV9TVFJJTkdfS0VZKCJSZXNldCIsICJSZXNl
dCBCdXR0b24gRGF0ZS9UaW1lIENvbnRleHQgTWVudSIsICJSZXNldCBidXR0b24gaW4gZGF0ZSBp
bnB1dCBjb250ZXh0IG1lbnUiKTsKKworICAgICAgICBSZXRhaW5QdHI8VUlCYXJCdXR0b25JdGVt
PiBibGFua0JhckJ1dHRvbiA9IFtbVUlCYXJCdXR0b25JdGVtIGFsbG9jXSBpbml0V2l0aEJhckJ1
dHRvblN5c3RlbUl0ZW06VUlCYXJCdXR0b25TeXN0ZW1JdGVtRmxleGlibGVTcGFjZSB0YXJnZXQ6
bmlsIGFjdGlvbjpuaWxdOworICAgICAgICBSZXRhaW5QdHI8VUlCYXJCdXR0b25JdGVtPiByZXNl
dEJhckJ1dHRvbiA9IFtbVUlCYXJCdXR0b25JdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOnJlc2V0
U3RyaW5nIHN0eWxlOlVJQmFyQnV0dG9uSXRlbVN0eWxlUGxhaW4gdGFyZ2V0OnNlbGYgYWN0aW9u
OkBzZWxlY3RvcihyZXNldDopXTsKKyAgICAgICAgCisgICAgICAgIFtfdmlld0NvbnRyb2xsZXIg
c2V0VG9vbGJhckl0ZW1zOkBbYmxhbmtCYXJCdXR0b24uZ2V0KCksIHJlc2V0QmFyQnV0dG9uLmdl
dCgpXV07CisgICAgICAgIFtuYXZpZ2F0aW9uQ29udHJvbGxlciBzZXRUb29sYmFySGlkZGVuOk5P
XTsKKworICAgICAgICBbX3ZpZXdDb250cm9sbGVyIHNldFZpZXc6X2RhdGVQaWNrZXIuZ2V0KCld
OworCisgICAgICAgIE5TU3RyaW5nICp0aXRsZVRleHQgPSBfdmlldy5pbnB1dExhYmVsVGV4dDsK
KyAgICAgICAgaWYgKCFbdGl0bGVUZXh0IGlzRXF1YWw6QCIiXSkgeworICAgICAgICAgICAgUmV0
YWluUHRyPFVJTGFiZWw+IHRpdGxlID0gW1tVSUxhYmVsIGFsbG9jXSBpbml0XTsKKyAgICAgICAg
ICAgIFt0aXRsZSBzZXRGb250OltVSUZvbnQgcHJlZmVycmVkRm9udEZvclRleHRTdHlsZTpVSUZv
bnRUZXh0U3R5bGVGb290bm90ZV1dOworICAgICAgICAgICAgW3RpdGxlIHNldFRleHQ6dGl0bGVU
ZXh0XTsKKyAgICAgICAgICAgIFt0aXRsZSBzZXRUZXh0Q29sb3I6W1VJQ29sb3Igc2Vjb25kYXJ5
TGFiZWxDb2xvcl1dOworICAgICAgICAgICAgW3RpdGxlIHNldFRleHRBbGlnbm1lbnQ6TlNUZXh0
QWxpZ25tZW50TmF0dXJhbF07CisgICAgICAgICAgICBSZXRhaW5QdHI8VUlCYXJCdXR0b25JdGVt
PiB0aXRsZUJ1dHRvbiA9IFtbVUlCYXJCdXR0b25JdGVtIGFsbG9jXSBpbml0V2l0aEN1c3RvbVZp
ZXc6dGl0bGUuZ2V0KCldOworICAgICAgICAgICAgW192aWV3Q29udHJvbGxlciBuYXZpZ2F0aW9u
SXRlbV0ubGVmdEJhckJ1dHRvbkl0ZW0gPSB0aXRsZUJ1dHRvbi5nZXQoKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBbbmF2aWdhdGlvbkNvbnRyb2xsZXIgc2V0TmF2aWdhdGlvbkJhckhp
ZGRlbjpZRVMgYW5pbWF0ZWQ6Tk9dOworICAgICAgICAKKyAgICAgICAgW25hdmlnYXRpb25Db250
cm9sbGVyIG5hdmlnYXRpb25CYXJdLmJhY2tncm91bmRDb2xvciA9IFVJQ29sb3IuY2xlYXJDb2xv
cjsKKyAgICAgICAgW25hdmlnYXRpb25Db250cm9sbGVyIG5hdmlnYXRpb25CYXJdLnRyYW5zbHVj
ZW50ID0gTk87CisgICAgICAgIFtuYXZpZ2F0aW9uQ29udHJvbGxlciB0b29sYmFyXS5iYWNrZ3Jv
dW5kQ29sb3IgPSBVSUNvbG9yLmNsZWFyQ29sb3I7CisgICAgICAgIFtuYXZpZ2F0aW9uQ29udHJv
bGxlciB0b29sYmFyXS50cmFuc2x1Y2VudCA9IE5POworICAgICAgICByZXR1cm4gbmF2aWdhdGlv
bkNvbnRyb2xsZXIuZ2V0KCk7CisgICAgfSBhY3Rpb25Qcm92aWRlcjpuaWxdOworfQorCistICh2
b2lkKWNvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbiAqKWlu
dGVyYWN0aW9uIHdpbGxFbmRGb3JDb25maWd1cmF0aW9uOihVSUNvbnRleHRNZW51Q29uZmlndXJh
dGlvbiAqKWNvbmZpZ3VyYXRpb24gYW5pbWF0b3I6KGlkPFVJQ29udGV4dE1lbnVJbnRlcmFjdGlv
bkFuaW1hdGluZz4pYW5pbWF0b3IKK3sKKyAgICBbYW5pbWF0b3IgYWRkQ29tcGxldGlvbjpeewor
ICAgICAgICBbX3ZpZXcgYWNjZXNzb3J5RG9uZV07CisgICAgfV07Cit9CisKKy0gKHZvaWQpcmVt
b3ZlQ29udGV4dE1lbnVJbnRlcmFjdGlvbgoreworICAgIGlmIChfZGF0ZVRpbWVDb250ZXh0TWVu
dUludGVyYWN0aW9uKSB7CisgICAgICAgIFtfdmlldyByZW1vdmVJbnRlcmFjdGlvbjpfZGF0ZVRp
bWVDb250ZXh0TWVudUludGVyYWN0aW9uLmdldCgpXTsKKyAgICAgICAgX2RhdGVUaW1lQ29udGV4
dE1lbnVJbnRlcmFjdGlvbiA9IG5pbDsKKyAgICAgICAgW192aWV3IF9yZW1vdmVDb250ZXh0TWVu
dVZpZXdJZlBvc3NpYmxlXTsKKyAgICB9Cit9CisKKy0gKHZvaWQpZW5zdXJlQ29udGV4dE1lbnVJ
bnRlcmFjdGlvbgoreworICAgIGlmICghX2RhdGVUaW1lQ29udGV4dE1lbnVJbnRlcmFjdGlvbikg
eworICAgICAgICBfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uID0gYWRvcHROUyhbW1VJ
Q29udGV4dE1lbnVJbnRlcmFjdGlvbiBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZTpzZWxmXSk7Cisg
ICAgICAgIFtfdmlldyBhZGRJbnRlcmFjdGlvbjpfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0
aW9uLmdldCgpXTsKKyAgICB9Cit9CisKKy0gKHZvaWQpc2hvd0RhdGVUaW1lUGlja2VyCit7Cisj
aWYgSEFWRShVSUNPTlRFWFRNRU5VX0xPQ0FUSU9OKQorICAgIFtzZWxmIGVuc3VyZUNvbnRleHRN
ZW51SW50ZXJhY3Rpb25dOworICAgIFtfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uIF9w
cmVzZW50TWVudUF0TG9jYXRpb246X2ludGVyYWN0aW9uUG9pbnRdOworI2VuZGlmCit9CisKKyNl
bmRpZgorCistICh2b2lkKXJlc2V0OihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBzZXREYXRlVGlt
ZVBpY2tlclRvSW5pdGlhbFZhbHVlXTsKKyAgICBbX3ZpZXcgcGFnZV0tPnNldEZvY3VzZWRFbGVt
ZW50VmFsdWUoU3RyaW5nKCkpOworfQorCistIChOU1N0cmluZyAqKWNhbGVuZGFyVHlwZQorewor
ICAgIHJldHVybiBbX2RhdGVQaWNrZXIgY2FsZW5kYXJdLmNhbGVuZGFySWRlbnRpZmllcjsKK30K
KworLSAoZG91YmxlKWhvdXIKK3sKKyAgICBOU0NhbGVuZGFyICpjYWxlbmRhciA9IFtOU0NhbGVu
ZGFyIGN1cnJlbnRDYWxlbmRhcl07CisgICAgTlNEYXRlQ29tcG9uZW50cyAqY29tcG9uZW50cyA9
IFtjYWxlbmRhciBjb21wb25lbnRzOk5TQ2FsZW5kYXJVbml0SG91ciBmcm9tRGF0ZTpbX2RhdGVQ
aWNrZXIgZGF0ZV1dOworCisgICAgcmV0dXJuIFtjb21wb25lbnRzIGhvdXJdOworfQorCistIChk
b3VibGUpbWludXRlCit7CisgICAgTlNDYWxlbmRhciAqY2FsZW5kYXIgPSBbTlNDYWxlbmRhciBj
dXJyZW50Q2FsZW5kYXJdOworICAgIE5TRGF0ZUNvbXBvbmVudHMgKmNvbXBvbmVudHMgPSBbY2Fs
ZW5kYXIgY29tcG9uZW50czpOU0NhbGVuZGFyVW5pdE1pbnV0ZSBmcm9tRGF0ZTpbX2RhdGVQaWNr
ZXIgZGF0ZV1dOworCisgICAgcmV0dXJuIFtjb21wb25lbnRzIG1pbnV0ZV07Cit9CisKKy0gKHZv
aWQpZGVhbGxvYworeworICAgIFtfZGF0ZVBpY2tlciByZW1vdmVUYXJnZXQ6c2VsZiBhY3Rpb246
TlVMTCBmb3JDb250cm9sRXZlbnRzOlVJQ29udHJvbEV2ZW50VmFsdWVDaGFuZ2VkXTsKKyAgICBb
c2VsZiByZW1vdmVDb250ZXh0TWVudUludGVyYWN0aW9uXTsKKyAgICBbc3VwZXIgZGVhbGxvY107
Cit9CisKKy0gKEJPT0wpc2hvdWxkUHJlc2VudEdyZWdvcmlhbkNhbGVuZGFyOihjb25zdCBGb2N1
c2VkRWxlbWVudEluZm9ybWF0aW9uJilub2RlSW5mbworeworICAgIHJldHVybiBub2RlSW5mby5h
dXRvZmlsbEZpZWxkTmFtZSA9PSBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Q2NFeHBNb250
aAorICAgICAgICB8fCBub2RlSW5mby5hdXRvZmlsbEZpZWxkTmFtZSA9PSBXZWJDb3JlOjpBdXRv
ZmlsbEZpZWxkTmFtZTo6Q2NFeHAKKyAgICAgICAgfHwgbm9kZUluZm8uYXV0b2ZpbGxGaWVsZE5h
bWUgPT0gV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwWWVhcjsKK30KKworLSAoVUlW
aWV3ICopY29udHJvbFZpZXcKK3sKKyAgICByZXR1cm4gX2RhdGVQaWNrZXIuZ2V0KCk7Cit9CisK
Ky0gKE5TSW50ZWdlcilfdGltZVpvbmVPZmZzZXRGcm9tR01UOihOU0RhdGUgKilkYXRlCit7Cisg
ICAgaWYgKCFfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbikKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICByZXR1cm4gW19kYXRlUGlja2VyLmdldCgpLnRpbWVab25lIHNlY29uZHNGcm9t
R01URm9yRGF0ZTpkYXRlXTsKK30KKworLSAoTlNTdHJpbmcgKilfc2FuaXRpemVJbnB1dFZhbHVl
Rm9yRm9ybWF0dGVyOihOU1N0cmluZyAqKXZhbHVlCit7CisgICAgLy8gVGhlICJ0aW1lIiBpbnB1
dCB0eXBlIG1heSBoYXZlIHNlY29uZHMgYW5kIG1pbGxpc2Vjb25kcyBpbmZvcm1hdGlvbiB3aGlj
aCB3ZQorICAgIC8vIGp1c3QgaWdub3JlLiBGb3IgZXhhbXBsZTogIjAxOjU2OjIwLjM5MSIgaXMg
c2hvcnRlbmVkIHRvIGp1c3QgIjAxOjU2Ii4KKyAgICBpZiAoX2lzVGltZUlucHV0KQorICAgICAg
ICByZXR1cm4gW3ZhbHVlIHN1YnN0cmluZ1RvSW5kZXg6W2tUaW1lRm9ybWF0U3RyaW5nIGxlbmd0
aF1dOworCisgICAgcmV0dXJuIHZhbHVlOworfQorCistICh2b2lkKV9kYXRlQ2hhbmdlZFNldEFz
TnVtYmVyCit7CisgICAgTlNEYXRlICpkYXRlID0gW19kYXRlUGlja2VyIGRhdGVdOworICAgIFtf
dmlldyB1cGRhdGVGb2N1c2VkRWxlbWVudFZhbHVlQXNOdW1iZXI6KFtkYXRlIHRpbWVJbnRlcnZh
bFNpbmNlMTk3MF0gKyBbc2VsZiBfdGltZVpvbmVPZmZzZXRGcm9tR01UOmRhdGVdKSAqIGtNaWxs
aXNlY29uZHNQZXJTZWNvbmRdOworfQorCistIChSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPilk
YXRlRm9ybWF0dGVyRm9yUGlja2VyCit7CisgICAgUmV0YWluUHRyPE5TTG9jYWxlPiBlbmdsaXNo
TG9jYWxlID0gYWRvcHROUyhbW05TTG9jYWxlIGFsbG9jXSBpbml0V2l0aExvY2FsZUlkZW50aWZp
ZXI6QCJlbl9VU19QT1NJWCJdKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBkYXRl
Rm9ybWF0dGVyID0gYWRvcHROUyhbW05TRGF0ZUZvcm1hdHRlciBhbGxvY10gaW5pdF0pOworICAg
IFtkYXRlRm9ybWF0dGVyIHNldFRpbWVab25lOl9kYXRlUGlja2VyLmdldCgpLnRpbWVab25lXTsK
KyAgICBbZGF0ZUZvcm1hdHRlciBzZXREYXRlRm9ybWF0Ol9mb3JtYXRTdHJpbmddOworICAgIFtk
YXRlRm9ybWF0dGVyIHNldExvY2FsZTplbmdsaXNoTG9jYWxlLmdldCgpXTsKKyAgICByZXR1cm4g
ZGF0ZUZvcm1hdHRlcjsKK30KKworLSAodm9pZClfZGF0ZUNoYW5nZWRTZXRBc1N0cmluZworewor
ICAgIC8vIEZvcmNlIEVuZ2xpc2ggbG9jYWxlIGJlY2F1c2UgdGhhdCBpcyB3aGF0IEhUTUw1IHZh
bHVlIHBhcnNpbmcgZXhwZWN0cy4KKyAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBkYXRl
Rm9ybWF0dGVyID0gW3NlbGYgZGF0ZUZvcm1hdHRlckZvclBpY2tlcl07CisgICAgW192aWV3IHVw
ZGF0ZUZvY3VzZWRFbGVtZW50VmFsdWU6W2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6W19k
YXRlUGlja2VyIGRhdGVdXV07Cit9CisKKy0gKHZvaWQpX2RhdGVDaGFuZ2VkCit7CisgICAgLy8g
SW50ZXJuYWxseSwgRE9NSFRNTElucHV0RWxlbWVudCBzZXRWYWx1ZUFzKiBlYWNoIHRha2UgZGlm
ZmVyZW50IHZhbHVlcyBmb3IKKyAgICAvLyBkaWZmZXJlbnQgZGF0ZSB0eXBlcy4gSXQgaXMgc29t
ZXRpbWVzIGVhc2llciB0byBzZXQgdGhlIGRhdGUgaW4gZGlmZmVyZW50IHdheXM6CisgICAgLy8g
ICAtIHVzZSBzZXRWYWx1ZUFzU3RyaW5nIGZvciAiZGF0ZSIsICJtb250aCIsIGFuZCAidGltZSIu
CisgICAgLy8gICAtIHVzZSBzZXRWYWx1ZUFzTnVtYmVyIGZvciAiZGF0ZXRpbWUtbG9jYWwiLgor
ICAgIGlmIChfZm9ybWF0U3RyaW5nKQorICAgICAgICBbc2VsZiBfZGF0ZUNoYW5nZWRTZXRBc1N0
cmluZ107CisgICAgZWxzZQorICAgICAgICBbc2VsZiBfZGF0ZUNoYW5nZWRTZXRBc051bWJlcl07
Cit9CisKKy0gKHZvaWQpX2RhdGVDaGFuZ2VIYW5kbGVyOihpZClzZW5kZXIKK3sKKyAgICBbc2Vs
ZiBfZGF0ZUNoYW5nZWRdOworfQorCistICh2b2lkKXNldERhdGVUaW1lUGlja2VyVG9Jbml0aWFs
VmFsdWUKK3sKKyAgICBpZiAoW19pbml0aWFsVmFsdWUgaXNFcXVhbDogQCIiXSkgeworICAgICAg
ICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpbTlNEYXRlIGRhdGVdXTsKKyAgICAgICAgW3NlbGYgX2Rh
dGVDaGFuZ2VkXTsKKyAgICB9IGVsc2UgaWYgKF9mb3JtYXRTdHJpbmcpIHsKKyAgICAgICAgLy8g
Q29udmVydCB0aGUgc3RyaW5nIHZhbHVlIHRvIGEgZGF0ZSBvYmplY3QgZm9yIHRoZSBmaWVsZHMg
d2hlcmUgd2UgaGF2ZSBhIGZvcm1hdCBzdHJpbmcuCisgICAgICAgIFJldGFpblB0cjxOU0RhdGVG
b3JtYXR0ZXI+IGRhdGVGb3JtYXR0ZXIgPSBbc2VsZiBkYXRlRm9ybWF0dGVyRm9yUGlja2VyXTsK
KyAgICAgICAgTlNEYXRlICpwYXJzZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgZGF0ZUZyb21TdHJp
bmc6W3NlbGYgX3Nhbml0aXplSW5wdXRWYWx1ZUZvckZvcm1hdHRlcjpfaW5pdGlhbFZhbHVlXV07
CisgICAgICAgIFtfZGF0ZVBpY2tlciBzZXREYXRlOnBhcnNlZERhdGUgPyBwYXJzZWREYXRlIDog
W05TRGF0ZSBkYXRlXV07CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gQ29udmVydCB0aGUgbnVt
YmVyIHZhbHVlIHRvIGEgZGF0ZSBvYmplY3QgZm9yIHRoZSBmaWVsZHMgYWZmZWN0ZWQgYnkgdGlt
ZXpvbmVzLgorICAgICAgICBOU1RpbWVJbnRlcnZhbCBzZWNvbmRzU2luY2UxOTcwID0gX2luaXRp
YWxWYWx1ZUFzTnVtYmVyIC8ga01pbGxpc2Vjb25kc1BlclNlY29uZDsKKyAgICAgICAgTlNJbnRl
Z2VyIHRpbWVab25lT2Zmc2V0ID0gW3NlbGYgX3RpbWVab25lT2Zmc2V0RnJvbUdNVDpbTlNEYXRl
IGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOnNlY29uZHNTaW5jZTE5NzBdXTsKKyAgICAg
ICAgTlNUaW1lSW50ZXJ2YWwgYWRqdXN0ZWRTZWNvbmRzU2luY2UxOTcwID0gc2Vjb25kc1NpbmNl
MTk3MCAtIHRpbWVab25lT2Zmc2V0OworICAgICAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpbTlNE
YXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOmFkanVzdGVkU2Vjb25kc1NpbmNlMTk3
MF1dOworICAgIH0KK30KKworLSAodm9pZCljb250cm9sQmVnaW5FZGl0aW5nCit7CisgICAgCisg
ICAgaWYgKF9wcmVzZW50aW5nKQorICAgICAgICByZXR1cm47CisgICAgX3ByZXNlbnRpbmcgPSBZ
RVM7CisKKyAgICBpZiAoIV9wcmVzZXJ2aW5nRm9jdXMgJiYgKF92aWV3LmZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gSW5wdXRUeXBlOjpUaW1lIHx8IF92aWV3LmZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gSW5wdXRUeXBlOjpEYXRlVGltZUxv
Y2FsKSkgeworICAgICAgICBbX3ZpZXcgcHJlc2VydmVGb2N1c107CisgICAgICAgIF9wcmVzZXJ2
aW5nRm9jdXMgPSBZRVM7CisgICAgfQorICAgIAorICAgIC8vIFNldCB0aGUgdGltZSB6b25lIGlu
IGNhc2UgaXQgY2hhbmdlZC4KKyAgICBfZGF0ZVBpY2tlci5nZXQoKS50aW1lWm9uZSA9IFtOU1Rp
bWVab25lIGxvY2FsVGltZVpvbmVdOworCisgICAgLy8gQ3VycmVudGx5IG5vIHZhbHVlIGZvciB0
aGUgPGlucHV0Pi4gU3RhcnQgdGhlIHBpY2tlciB3aXRoIHRoZSBjdXJyZW50IHRpbWUuCisgICAg
Ly8gQWxzbywgdXBkYXRlIHRoZSBhY3R1YWwgPGlucHV0PiB2YWx1ZS4KKyAgICBfaW5pdGlhbFZh
bHVlID0gX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi52YWx1ZTsKKyAgICBfaW5pdGlh
bFZhbHVlQXNOdW1iZXIgPSBfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnZhbHVlQXNO
dW1iZXI7CisgICAgW3NlbGYgc2V0RGF0ZVRpbWVQaWNrZXJUb0luaXRpYWxWYWx1ZV07CisgICAg
CisgICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCBwb3NpdGlvbkluZm9y
bWF0aW9uUmVxdWVzdCB7IFdlYkNvcmU6OkludFBvaW50KF92aWV3LmZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24ubGFzdEludGVyYWN0aW9uTG9jYXRpb24pIH07CisgICAgW192aWV3IGRvQWZ0ZXJQ
b3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlOl4oV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbiBpbnRlcmFjdGlvbkluZm9ybWF0aW9uKSB7CisgICAgICAgIFtzZWxmIHNob3dE
YXRlVGltZVBpY2tlcl07CisgICAgfSBmb3JSZXF1ZXN0OnBvc2l0aW9uSW5mb3JtYXRpb25SZXF1
ZXN0XTsKKworfQorCistICh2b2lkKXNldEhvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJ
bnRlZ2VyKW1pbnV0ZQoreworICAgIE5TU3RyaW5nICp0aW1lU3RyaW5nID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCIlLjJsZDolLjJsZCIsIChsb25nKWhvdXIsIChsb25nKW1pbnV0ZV07
CisgICAgW19kYXRlUGlja2VyIHNldERhdGU6W1tzZWxmIGRhdGVGb3JtYXR0ZXJGb3JQaWNrZXJd
IGRhdGVGcm9tU3RyaW5nOnRpbWVTdHJpbmddXTsKKyAgICBbc2VsZiBfZGF0ZUNoYW5nZWRdOwor
fQorCistIChXS0RhdGVUaW1lQ29udGV4dE1lbnVWaWV3Q29udHJvbGxlciAqKXZpZXdDb250cm9s
bGVyCit7CisgICAgcmV0dXJuIF92aWV3Q29udHJvbGxlci5nZXQoKTsKK30KKworLSAodm9pZClj
b250cm9sRW5kRWRpdGluZworeworICAgIF9wcmVzZW50aW5nID0gTk87CisgICAgaWYgKF9wcmVz
ZXJ2aW5nRm9jdXMpIHsKKyAgICAgICAgW192aWV3IHJlbGVhc2VGb2N1c107CisgICAgICAgIF9w
cmVzZXJ2aW5nRm9jdXMgPSBOTzsKKyAgICB9CisgICAgW3NlbGYgcmVtb3ZlQ29udGV4dE1lbnVJ
bnRlcmFjdGlvbl07Cit9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0RhdGVUaW1lSW5wdXRD
b250cm9sCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2
aWV3Cit7CisgICAgVUlEYXRlUGlja2VyTW9kZSBtb2RlOworCisgICAgc3dpdGNoICh2aWV3LmZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKKyAgICBjYXNlIElucHV0VHlw
ZTo6RGF0ZToKKyAgICAgICAgbW9kZSA9IFVJRGF0ZVBpY2tlck1vZGVEYXRlOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIElucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICAgICAgbW9kZSA9
IFVJRGF0ZVBpY2tlck1vZGVEYXRlQW5kVGltZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJ
bnB1dFR5cGU6OlRpbWU6CisgICAgICAgIG1vZGUgPSBVSURhdGVQaWNrZXJNb2RlVGltZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnB1dFR5cGU6Ok1vbnRoOgorICAgICAgICBtb2RlID0g
KFVJRGF0ZVBpY2tlck1vZGUpVUlEYXRlUGlja2VyTW9kZVllYXJBbmRNb250aDsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgW3NlbGYgcmVsZWFzZV07CisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgfQorCisgICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aFZpZXc6dmlldyBj
b250cm9sOmFkb3B0TlMoW1tXS0RhdGVUaW1lUGlja2VyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmll
dyBkYXRlUGlja2VyTW9kZTptb2RlXSldOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBX
S0RhdGVUaW1lSW5wdXRDb250cm9sIChXS1Rlc3RpbmcpCisKKy0gKHZvaWQpc2V0VGltZVBpY2tl
ckhvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZQoreworICAgIGlm
IChbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBpY2tlci5jbGFzc10pCisg
ICAgICAgIFsoV0tEYXRlVGltZVBpY2tlciAqKXNlbGYuY29udHJvbCBzZXRIb3VyOmhvdXIgbWlu
dXRlOm1pbnV0ZV07Cit9CisKKy0gKE5TU3RyaW5nICopZGF0ZVRpbWVQaWNrZXJDYWxlbmRhclR5
cGUKK3sKKyAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQaWNr
ZXIuY2xhc3NdKQorICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUGlja2VyICopc2VsZi5jb250
cm9sIGNhbGVuZGFyVHlwZV07CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoZG91YmxlKXRpbWVQ
aWNrZXJWYWx1ZUhvdXIKK3sKKyAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldL
RGF0ZVRpbWVQaWNrZXIuY2xhc3NdKQorICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUGlja2Vy
ICopc2VsZi5jb250cm9sIGhvdXJdOworICAgIHJldHVybiAtMTsKK30KKworLSAoZG91YmxlKXRp
bWVQaWNrZXJWYWx1ZU1pbnV0ZQoreworICAgIGlmIChbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xh
c3M6V0tEYXRlVGltZVBpY2tlci5jbGFzc10pCisgICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVQ
aWNrZXIgKilzZWxmLmNvbnRyb2wgbWludXRlXTsKKyAgICByZXR1cm4gLTE7Cit9CisKK0BlbmQK
KworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDY3NWExMjRiOWVmMzk2YzA4MGYzOGJlNjU5NmZhNzM4YTdjYzg1
YjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotCi0jaW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oIgotCi1AY2xhc3MgV0tDb250
ZW50VmlldzsKLQotQGludGVyZmFjZSBXS0Zvcm1JbnB1dENvbnRyb2wgOiBXS0Zvcm1QZXJpcGhl
cmFsQmFzZQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZp
ZXc7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgV0tGb3JtSW5wdXRDb250cm9sIChXS1Rlc3RpbmcpCi1A
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpkYXRlVGltZVBpY2tlckNh
bGVuZGFyVHlwZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgZG91YmxlIHRpbWVQ
aWNrZXJWYWx1ZUhvdXI7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGRvdWJsZSB0
aW1lUGlja2VyVmFsdWVNaW51dGU7Ci0tICh2b2lkKXNldFRpbWVQaWNrZXJIb3VyOihOU0ludGVn
ZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51dGU7Ci1AZW5kCi0KLSNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQ1MTAwOWE5NGEyM2VmMDViZWU0MzUwMzUxOTQxODkwZmVmMWIzNjQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDUw
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXS0Zv
cm1JbnB1dENvbnRyb2wuaCIKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLSNpbXBvcnQg
IlVzZXJJbnRlcmZhY2VJZGlvbS5oIgotI2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgotI2ltcG9y
dCAiV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCi0jaW1wb3J0ICJXS0Zvcm1Qb3BvdmVyLmgi
Ci0jaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNpbXBvcnQgPFVJS2l0L1VJQmFyQnV0dG9uSXRl
bS5oPgotI2ltcG9ydCA8VUlLaXQvVUlEYXRlUGlja2VyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0xv
Y2FsaXplZFN0cmluZ3MuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKLQotQGludGVyZmFjZSBXS0RhdGVUaW1lUG9wb3ZlclZpZXdDb250cm9s
bGVyIDogVUlWaWV3Q29udHJvbGxlciB7Ci0gICAgUmV0YWluUHRyPE5TT2JqZWN0PFdLRm9ybUNv
bnRyb2w+PiBfaW5uZXJDb250cm9sOwotfQotLSAoaWQpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRW
aWV3ICopdmlldyBkYXRlUGlja2VyTW9kZTooVUlEYXRlUGlja2VyTW9kZSlkYXRlUGlja2VyTW9k
ZTsKLS0gKE5TT2JqZWN0PFdLRm9ybUNvbnRyb2w+ICopaW5uZXJDb250cm9sOwotQGVuZAotCi1A
aW50ZXJmYWNlIFdLRGF0ZVRpbWVQb3BvdmVyIDogV0tGb3JtUm90YXRpbmdBY2Nlc3NvcnlQb3Bv
dmVyPFdLRm9ybUNvbnRyb2w+IHsKLSAgICBSZXRhaW5QdHI8V0tEYXRlVGltZVBvcG92ZXJWaWV3
Q29udHJvbGxlcj4gX3ZpZXdDb250cm9sbGVyOwotICAgIFdLQ29udGVudFZpZXcgKl92aWV3Owot
ICAgIEJPT0wgX3ByZXNlbnRpbmc7Ci0gICAgQk9PTCBfcHJlc2VydmluZ0ZvY3VzOwotfQotLSAo
aWQpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBkYXRlUGlja2VyTW9kZTooVUlE
YXRlUGlja2VyTW9kZSltb2RlOwotLSAoV0tEYXRlVGltZVBvcG92ZXJWaWV3Q29udHJvbGxlciAq
KXZpZXdDb250cm9sbGVyOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmlu
ZyAqY2FsZW5kYXJUeXBlOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBkb3VibGUg
aG91cjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgZG91YmxlIG1pbnV0ZTsKLS0g
KHZvaWQpc2V0SG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlOwot
QGVuZAotCi1AaW50ZXJmYWNlIFdLRGF0ZVRpbWVQaWNrZXIgOiBOU09iamVjdDxXS0Zvcm1Db250
cm9sPiB7Ci0gICAgUmV0YWluUHRyPFVJRGF0ZVBpY2tlcj4gX2RhdGVQaWNrZXI7Ci0gICAgTlNT
dHJpbmcgKl9mb3JtYXRTdHJpbmc7Ci0gICAgQk9PTCBfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZv
cm1hdGlvbjsKLSAgICBCT09MIF9pc1RpbWVJbnB1dDsKLSAgICBXS0NvbnRlbnRWaWV3KiBfdmll
dzsKLX0KLS0gKGlkKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgZGF0ZVBpY2tl
ck1vZGU6KFVJRGF0ZVBpY2tlck1vZGUpbW9kZTsKLS0gKFVJRGF0ZVBpY2tlciAqKWRhdGVQaWNr
ZXI7Ci0KLUBlbmQKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJL
aXRBZGRpdGlvbnMvV0tGb3JtSW5wdXRDb250cm9sQWRkaXRpb25zLm1tPgotI2VuZGlmCi0KLUBp
bXBsZW1lbnRhdGlvbiBXS0RhdGVUaW1lUGlja2VyCi0KLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0
IGtEYXRlRm9ybWF0U3RyaW5nID0gQCJ5eXl5LU1NLWRkIjsgLy8gIjIwMTEtMDEtMjciLgotc3Rh
dGljIE5TU3RyaW5nICogY29uc3Qga01vbnRoRm9ybWF0U3RyaW5nID0gQCJ5eXl5LU1NIjsgLy8g
IjIwMTEtMDEiLgotc3RhdGljIE5TU3RyaW5nICogY29uc3Qga1RpbWVGb3JtYXRTdHJpbmcgPSBA
IkhIOm1tIjsgLy8gIjEzOjQ1Ii4KLXN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBrTWlsbGlz
ZWNvbmRzUGVyU2Vjb25kID0gMTAwMDsKLQotLSAoVUlEYXRlUGlja2VyICopZGF0ZVBpY2tlcgot
ewotICAgIHJldHVybiBfZGF0ZVBpY2tlci5nZXQoKTsKLX0KLQotI2lmICFVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKSAmJiBIQVZFKFVJREFURVBJQ0tFUl9TVFlMRSkKLS0gKFVJRGF0ZVBpY2tlclN0
eWxlKWRhdGVQaWNrZXJTdHlsZQotewotICAgIHJldHVybiBVSURhdGVQaWNrZXJTdHlsZUF1dG9t
YXRpYzsKLX0KLSNlbmRpZgotCi0tIChpZClpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2
aWV3IGRhdGVQaWNrZXJNb2RlOihVSURhdGVQaWNrZXJNb2RlKW1vZGUKLXsKLSAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF92aWV3ID0g
dmlldzsKLSAgICBfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbiA9IE5POwotICAgIF9p
c1RpbWVJbnB1dCA9IE5POwotICAgIHN3aXRjaCAodmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uLmVsZW1lbnRUeXBlKSB7Ci0gICAgY2FzZSBJbnB1dFR5cGU6OkRhdGU6Ci0gICAgICAgIF9m
b3JtYXRTdHJpbmcgPSBrRGF0ZUZvcm1hdFN0cmluZzsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJbnB1dFR5cGU6Ok1vbnRoOgotICAgICAgICBfZm9ybWF0U3RyaW5nID0ga01vbnRoRm9ybWF0
U3RyaW5nOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIElucHV0VHlwZTo6VGltZToKLSAgICAg
ICAgX2Zvcm1hdFN0cmluZyA9IGtUaW1lRm9ybWF0U3RyaW5nOwotICAgICAgICBfaXNUaW1lSW5w
dXQgPSBZRVM7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlVGltZUxv
Y2FsOgotICAgICAgICBfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbiA9IFlFUzsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIAot
ICAgIF9kYXRlUGlja2VyID0gYWRvcHROUyhbW1VJRGF0ZVBpY2tlciBhbGxvY10gaW5pdF0pOwot
Ci0gICAgW19kYXRlUGlja2VyIHNldERhdGVQaWNrZXJNb2RlOm1vZGVdOwotICAgIFtfZGF0ZVBp
Y2tlciBzZXRIaWRkZW46Tk9dOwotICAgIAotI2lmIEhBVkUoVUlEQVRFUElDS0VSX1NUWUxFKQot
ICAgIFtfZGF0ZVBpY2tlciBzZXRQcmVmZXJyZWREYXRlUGlja2VyU3R5bGU6W3NlbGYgZGF0ZVBp
Y2tlclN0eWxlXV07Ci0jZW5kaWYKLSAgICAKLSAgICBhdXRvIHNpemUgPSBbX2RhdGVQaWNrZXIg
c2l6ZVRoYXRGaXRzOkNHU2l6ZU1ha2Uodmlldy5mcmFtZS5zaXplLndpZHRoLCAwKV07Ci0gICAg
W19kYXRlUGlja2VyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0aCwgc2l6ZS5o
ZWlnaHQpXTsKLSAgICAKLSAgICBpZiAoW3NlbGYgc2hvdWxkUHJlc2VudEdyZWdvcmlhbkNhbGVu
ZGFyOnZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbl0pCi0gICAgICAgIF9kYXRlUGlja2Vy
LmdldCgpLmNhbGVuZGFyID0gW05TQ2FsZW5kYXIgY2FsZW5kYXJXaXRoSWRlbnRpZmllcjpOU0Nh
bGVuZGFySWRlbnRpZmllckdyZWdvcmlhbl07Ci0gICAgCi0gICAgW19kYXRlUGlja2VyIGFkZFRh
cmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX2RhdGVDaGFuZ2VIYW5kbGVyOikgZm9yQ29udHJv
bEV2ZW50czpVSUNvbnRyb2xFdmVudFZhbHVlQ2hhbmdlZF07Ci0KLSAgICByZXR1cm4gc2VsZjsK
LX0KLQotLSAoTlNTdHJpbmcgKiljYWxlbmRhclR5cGUKLXsKLSAgICByZXR1cm4gX2RhdGVQaWNr
ZXIuZ2V0KCkuY2FsZW5kYXIuY2FsZW5kYXJJZGVudGlmaWVyOwotfQotCi0tIChkb3VibGUpaG91
cgotewotICAgIE5TQ2FsZW5kYXIgKmNhbGVuZGFyID0gW05TQ2FsZW5kYXIgY3VycmVudENhbGVu
ZGFyXTsKLSAgICBOU0RhdGVDb21wb25lbnRzICpjb21wb25lbnRzID0gW2NhbGVuZGFyIGNvbXBv
bmVudHM6TlNDYWxlbmRhclVuaXRIb3VyIGZyb21EYXRlOltfZGF0ZVBpY2tlciBkYXRlXV07Ci0K
LSAgICByZXR1cm4gW2NvbXBvbmVudHMgaG91cl07Ci19Ci0KLS0gKGRvdWJsZSltaW51dGUKLXsK
LSAgICBOU0NhbGVuZGFyICpjYWxlbmRhciA9IFtOU0NhbGVuZGFyIGN1cnJlbnRDYWxlbmRhcl07
Ci0gICAgTlNEYXRlQ29tcG9uZW50cyAqY29tcG9uZW50cyA9IFtjYWxlbmRhciBjb21wb25lbnRz
Ok5TQ2FsZW5kYXJVbml0TWludXRlIGZyb21EYXRlOltfZGF0ZVBpY2tlciBkYXRlXV07Ci0KLSAg
ICByZXR1cm4gW2NvbXBvbmVudHMgbWludXRlXTsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0g
ICAgW19kYXRlUGlja2VyIHJlbW92ZVRhcmdldDpzZWxmIGFjdGlvbjpOVUxMIGZvckNvbnRyb2xF
dmVudHM6VUlDb250cm9sRXZlbnRWYWx1ZUNoYW5nZWRdOwotICAgIFtzdXBlciBkZWFsbG9jXTsK
LX0KLQotLSAoQk9PTClzaG91bGRQcmVzZW50R3JlZ29yaWFuQ2FsZW5kYXI6KGNvbnN0IEZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24mKW5vZGVJbmZvCi17Ci0gICAgcmV0dXJuIG5vZGVJbmZvLmF1
dG9maWxsRmllbGROYW1lID09IFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1lOjpDY0V4cE1vbnRo
Ci0gICAgICAgIHx8IG5vZGVJbmZvLmF1dG9maWxsRmllbGROYW1lID09IFdlYkNvcmU6OkF1dG9m
aWxsRmllbGROYW1lOjpDY0V4cAotICAgICAgICB8fCBub2RlSW5mby5hdXRvZmlsbEZpZWxkTmFt
ZSA9PSBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Q2NFeHBZZWFyOwotfQotCi0tIChVSVZp
ZXcgKiljb250cm9sVmlldwotewotICAgIHJldHVybiBfZGF0ZVBpY2tlci5nZXQoKTsKLX0KLQot
LSAoTlNJbnRlZ2VyKV90aW1lWm9uZU9mZnNldEZyb21HTVQ6KE5TRGF0ZSAqKWRhdGUKLXsKLSAg
ICBpZiAoIV9zaG91bGRSZW1vdmVUaW1lWm9uZUluZm9ybWF0aW9uKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIHJldHVybiBbX2RhdGVQaWNrZXIuZ2V0KCkudGltZVpvbmUgc2Vjb25kc0Zyb21H
TVRGb3JEYXRlOmRhdGVdOwotfQotCi0tIChOU1N0cmluZyAqKV9zYW5pdGl6ZUlucHV0VmFsdWVG
b3JGb3JtYXR0ZXI6KE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICAvLyBUaGUgInRpbWUiIGlucHV0
IHR5cGUgbWF5IGhhdmUgc2Vjb25kcyBhbmQgbWlsbGlzZWNvbmRzIGluZm9ybWF0aW9uIHdoaWNo
IHdlCi0gICAgLy8ganVzdCBpZ25vcmUuIEZvciBleGFtcGxlOiAiMDE6NTY6MjAuMzkxIiBpcyBz
aG9ydGVuZWQgdG8ganVzdCAiMDE6NTYiLgotICAgIGlmIChfaXNUaW1lSW5wdXQpCi0gICAgICAg
IHJldHVybiBbdmFsdWUgc3Vic3RyaW5nVG9JbmRleDpba1RpbWVGb3JtYXRTdHJpbmcgbGVuZ3Ro
XV07Ci0KLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KLS0gKHZvaWQpX2RhdGVDaGFuZ2VkU2V0QXNO
dW1iZXIKLXsKLSAgICBOU0RhdGUgKmRhdGUgPSBbX2RhdGVQaWNrZXIgZGF0ZV07Ci0gICAgW192
aWV3IHVwZGF0ZUZvY3VzZWRFbGVtZW50VmFsdWVBc051bWJlcjooW2RhdGUgdGltZUludGVydmFs
U2luY2UxOTcwXSArIFtzZWxmIF90aW1lWm9uZU9mZnNldEZyb21HTVQ6ZGF0ZV0pICoga01pbGxp
c2Vjb25kc1BlclNlY29uZF07Ci19Ci0KLS0gKFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+KWRh
dGVGb3JtYXR0ZXJGb3JQaWNrZXIKLXsKLSAgICBSZXRhaW5QdHI8TlNMb2NhbGU+IGVuZ2xpc2hM
b2NhbGUgPSBhZG9wdE5TKFtbTlNMb2NhbGUgYWxsb2NdIGluaXRXaXRoTG9jYWxlSWRlbnRpZmll
cjpAImVuX1VTX1BPU0lYIl0pOwotICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGRhdGVG
b3JtYXR0ZXIgPSBhZG9wdE5TKFtbTlNEYXRlRm9ybWF0dGVyIGFsbG9jXSBpbml0XSk7Ci0gICAg
W2RhdGVGb3JtYXR0ZXIgc2V0VGltZVpvbmU6X2RhdGVQaWNrZXIuZ2V0KCkudGltZVpvbmVdOwot
ICAgIFtkYXRlRm9ybWF0dGVyIHNldERhdGVGb3JtYXQ6X2Zvcm1hdFN0cmluZ107Ci0gICAgW2Rh
dGVGb3JtYXR0ZXIgc2V0TG9jYWxlOmVuZ2xpc2hMb2NhbGUuZ2V0KCldOwotICAgIHJldHVybiBk
YXRlRm9ybWF0dGVyOwotfQotCi0tICh2b2lkKV9kYXRlQ2hhbmdlZFNldEFzU3RyaW5nCi17Ci0g
ICAgLy8gRm9yY2UgRW5nbGlzaCBsb2NhbGUgYmVjYXVzZSB0aGF0IGlzIHdoYXQgSFRNTDUgdmFs
dWUgcGFyc2luZyBleHBlY3RzLgotICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGRhdGVG
b3JtYXR0ZXIgPSBbc2VsZiBkYXRlRm9ybWF0dGVyRm9yUGlja2VyXTsKLSAgICBbX3ZpZXcgdXBk
YXRlRm9jdXNlZEVsZW1lbnRWYWx1ZTpbZGF0ZUZvcm1hdHRlciBzdHJpbmdGcm9tRGF0ZTpbX2Rh
dGVQaWNrZXIgZGF0ZV1dXTsKLX0KLQotLSAodm9pZClfZGF0ZUNoYW5nZWQKLXsKLSAgICAvLyBJ
bnRlcm5hbGx5LCBET01IVE1MSW5wdXRFbGVtZW50IHNldFZhbHVlQXMqIGVhY2ggdGFrZSBkaWZm
ZXJlbnQgdmFsdWVzIGZvcgotICAgIC8vIGRpZmZlcmVudCBkYXRlIHR5cGVzLiBJdCBpcyBzb21l
dGltZXMgZWFzaWVyIHRvIHNldCB0aGUgZGF0ZSBpbiBkaWZmZXJlbnQgd2F5czoKLSAgICAvLyAg
IC0gdXNlIHNldFZhbHVlQXNTdHJpbmcgZm9yICJkYXRlIiwgIm1vbnRoIiwgYW5kICJ0aW1lIi4K
LSAgICAvLyAgIC0gdXNlIHNldFZhbHVlQXNOdW1iZXIgZm9yICJkYXRldGltZS1sb2NhbCIuCi0g
ICAgaWYgKF9mb3JtYXRTdHJpbmcpCi0gICAgICAgIFtzZWxmIF9kYXRlQ2hhbmdlZFNldEFzU3Ry
aW5nXTsKLSAgICBlbHNlCi0gICAgICAgIFtzZWxmIF9kYXRlQ2hhbmdlZFNldEFzTnVtYmVyXTsK
LX0KLQotLSAodm9pZClfZGF0ZUNoYW5nZUhhbmRsZXI6KGlkKXNlbmRlcgotewotICAgIFtzZWxm
IF9kYXRlQ2hhbmdlZF07Ci19Ci0KLS0gKHZvaWQpY29udHJvbEJlZ2luRWRpdGluZwotewotICAg
IC8vIFNldCB0aGUgdGltZSB6b25lIGluIGNhc2UgaXQgY2hhbmdlZC4KLSAgICBfZGF0ZVBpY2tl
ci5nZXQoKS50aW1lWm9uZSA9IFtOU1RpbWVab25lIGxvY2FsVGltZVpvbmVdOwotCi0gICAgLy8g
Q3VycmVudGx5IG5vIHZhbHVlIGZvciB0aGUgPGlucHV0Pi4gU3RhcnQgdGhlIHBpY2tlciB3aXRo
IHRoZSBjdXJyZW50IHRpbWUuCi0gICAgLy8gQWxzbywgdXBkYXRlIHRoZSBhY3R1YWwgPGlucHV0
PiB2YWx1ZS4KLSAgICBOU1N0cmluZyAqdmFsdWUgPSBfdmlldy5mb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uLnZhbHVlOwotICAgIGlmIChfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnZh
bHVlLmlzRW1wdHkoKSkgewotICAgICAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpbTlNEYXRlIGRh
dGVdXTsKLSAgICAgICAgW3NlbGYgX2RhdGVDaGFuZ2VkXTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIC8vIENvbnZlcnQgdGhlIHN0cmluZyB2YWx1ZSB0byBhIGRhdGUgb2JqZWN0IGZv
ciB0aGUgZmllbGRzIHdoZXJlIHdlIGhhdmUgYSBmb3JtYXQgc3RyaW5nLgotICAgIGlmIChfZm9y
bWF0U3RyaW5nKSB7Ci0gICAgICAgIHZhbHVlID0gW3NlbGYgX3Nhbml0aXplSW5wdXRWYWx1ZUZv
ckZvcm1hdHRlcjp2YWx1ZV07Ci0gICAgICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGRh
dGVGb3JtYXR0ZXIgPSBbc2VsZiBkYXRlRm9ybWF0dGVyRm9yUGlja2VyXTsKLSAgICAgICAgTlNE
YXRlICpwYXJzZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgZGF0ZUZyb21TdHJpbmc6dmFsdWVdOwot
ICAgICAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpwYXJzZWREYXRlID8gcGFyc2VkRGF0ZSA6IFtO
U0RhdGUgZGF0ZV1dOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gQ29udmVydCB0
aGUgbnVtYmVyIHZhbHVlIHRvIGEgZGF0ZSBvYmplY3QgZm9yIHRoZSBmaWVsZHMgYWZmZWN0ZWQg
YnkgdGltZXpvbmVzLgotICAgIE5TVGltZUludGVydmFsIHNlY29uZHNTaW5jZTE5NzAgPSBfdmll
dy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnZhbHVlQXNOdW1iZXIgLyBrTWlsbGlzZWNvbmRz
UGVyU2Vjb25kOwotICAgIE5TSW50ZWdlciB0aW1lWm9uZU9mZnNldCA9IFtzZWxmIF90aW1lWm9u
ZU9mZnNldEZyb21HTVQ6W05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpzZWNv
bmRzU2luY2UxOTcwXV07Ci0gICAgTlNUaW1lSW50ZXJ2YWwgYWRqdXN0ZWRTZWNvbmRzU2luY2Ux
OTcwID0gc2Vjb25kc1NpbmNlMTk3MCAtIHRpbWVab25lT2Zmc2V0OwotICAgIFtfZGF0ZVBpY2tl
ciBzZXREYXRlOltOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6YWRqdXN0ZWRT
ZWNvbmRzU2luY2UxOTcwXV07Ci19Ci0KLS0gKHZvaWQpY29udHJvbEVuZEVkaXRpbmcKLXsKLX0K
LQotLSAodm9pZClzZXRIb3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51
dGUKLXsKLSAgICBOU1N0cmluZyAqdGltZVN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiJS4ybGQ6JS4ybGQiLCAobG9uZylob3VyLCAobG9uZyltaW51dGVdOwotICAgIFtfZGF0
ZVBpY2tlciBzZXREYXRlOltbc2VsZiBkYXRlRm9ybWF0dGVyRm9yUGlja2VyXSBkYXRlRnJvbVN0
cmluZzp0aW1lU3RyaW5nXV07Ci0gICAgW3NlbGYgX2RhdGVDaGFuZ2VkXTsKLX0KLQotQGVuZAot
Ci0vLyBXS0Zvcm1JbnB1dENvbnRyb2wKLUBpbXBsZW1lbnRhdGlvbiBXS0Zvcm1JbnB1dENvbnRy
b2wKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcK
LXsKLSAgICBVSURhdGVQaWNrZXJNb2RlIG1vZGU7Ci0KLSAgICBzd2l0Y2ggKHZpZXcuZm9jdXNl
ZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgewotICAgIGNhc2UgSW5wdXRUeXBlOjpE
YXRlOgotICAgICAgICBtb2RlID0gVUlEYXRlUGlja2VyTW9kZURhdGU7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgotICAgICAgICBtb2RlID0gVUlE
YXRlUGlja2VyTW9kZURhdGVBbmRUaW1lOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIElucHV0
VHlwZTo6VGltZToKLSAgICAgICAgbW9kZSA9IFVJRGF0ZVBpY2tlck1vZGVUaW1lOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIElucHV0VHlwZTo6TW9udGg6Ci0gICAgICAgIG1vZGUgPSAoVUlE
YXRlUGlja2VyTW9kZSlVSURhdGVQaWNrZXJNb2RlWWVhckFuZE1vbnRoOwotICAgICAgICBicmVh
azsKLSAgICBkZWZhdWx0OgotICAgICAgICBbc2VsZiByZWxlYXNlXTsKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9ybUNvbnRyb2w+PiBj
b250cm9sOwotICAgIGlmIChjdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWQoKSkKLSAgICAg
ICAgY29udHJvbCA9IGFkb3B0TlMoW1tXS0RhdGVUaW1lUG9wb3ZlciBhbGxvY10gaW5pdFdpdGhW
aWV3OnZpZXcgZGF0ZVBpY2tlck1vZGU6bW9kZV0pOwotICAgIGVsc2UKLSAgICAgICAgY29udHJv
bCA9IGFkb3B0TlMoW1tXS0RhdGVUaW1lUGlja2VyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlldyBk
YXRlUGlja2VyTW9kZTptb2RlXSk7Ci0gICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aFZpZXc6dmll
dyBjb250cm9sOldURk1vdmUoY29udHJvbCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBXS0Zvcm1JbnB1dENvbnRyb2wgKFdLVGVzdGluZykKLQotLSAodm9pZClzZXRUaW1lUGlja2Vy
SG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlCi17Ci0gICAgaWYg
KFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lUGlja2VyLmNsYXNzXSkKLSAg
ICAgICAgWyhXS0RhdGVUaW1lUGlja2VyICopc2VsZi5jb250cm9sIHNldEhvdXI6aG91ciBtaW51
dGU6bWludXRlXTsKLSAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRp
bWVQb3BvdmVyLmNsYXNzXSkKLSAgICAgICAgWyhXS0RhdGVUaW1lUG9wb3ZlciAqKXNlbGYuY29u
dHJvbCBzZXRIb3VyOmhvdXIgbWludXRlOm1pbnV0ZV07Ci19Ci0KLS0gKE5TU3RyaW5nICopZGF0
ZVRpbWVQaWNrZXJDYWxlbmRhclR5cGUKLXsKLSAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRP
ZkNsYXNzOldLRGF0ZVRpbWVQaWNrZXIuY2xhc3NdKQotICAgICAgICByZXR1cm4gWyhXS0RhdGVU
aW1lUGlja2VyICopc2VsZi5jb250cm9sIGNhbGVuZGFyVHlwZV07Ci0gICAgaWYgKFtzZWxmLmNv
bnRyb2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lUG9wb3Zlci5jbGFzc10pCi0gICAgICAgIHJl
dHVybiBbKFdLRGF0ZVRpbWVQb3BvdmVyICopc2VsZi5jb250cm9sIGNhbGVuZGFyVHlwZV07Ci0g
ICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoZG91YmxlKXRpbWVQaWNrZXJWYWx1ZUhvdXIKLXsKLSAg
ICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQaWNrZXIuY2xhc3Nd
KQotICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUGlja2VyICopc2VsZi5jb250cm9sIGhvdXJd
OwotICAgIGlmIChbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBvcG92ZXIu
Y2xhc3NdKQotICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUG9wb3ZlciAqKXNlbGYuY29udHJv
bCBob3VyXTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLS0gKGRvdWJsZSl0aW1lUGlja2VyVmFsdWVN
aW51dGUKLXsKLSAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQ
aWNrZXIuY2xhc3NdKQotICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUGlja2VyICopc2VsZi5j
b250cm9sIG1pbnV0ZV07Ci0gICAgaWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpXS0Rh
dGVUaW1lUG9wb3Zlci5jbGFzc10pCi0gICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVQb3BvdmVy
ICopc2VsZi5jb250cm9sIG1pbnV0ZV07Ci0gICAgcmV0dXJuIC0xOwotfQotCi1AZW5kCi0KLUBp
bXBsZW1lbnRhdGlvbiBXS0RhdGVUaW1lUG9wb3ZlclZpZXdDb250cm9sbGVyCi0KLS0gKGlkKWlu
aXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgZGF0ZVBpY2tlck1vZGU6KFVJRGF0ZVBp
Y2tlck1vZGUpZGF0ZVBpY2tlck1vZGUKLXsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRd
KSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9pbm5lckNvbnRyb2wgPSBhZG9wdE5TKFtb
V0tEYXRlVGltZVBpY2tlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXcgZGF0ZVBpY2tlck1vZGU6
ZGF0ZVBpY2tlck1vZGVdKTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChOU09iamVjdDxX
S0Zvcm1Db250cm9sPiAqKWlubmVyQ29udHJvbAotewotICAgIHJldHVybiBfaW5uZXJDb250cm9s
LmdldCgpOwotfQotCi0tICh2b2lkKWxvYWRWaWV3Ci17Ci0gICAgc2VsZi52aWV3ID0gW19pbm5l
ckNvbnRyb2wgY29udHJvbFZpZXddOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS0Rh
dGVUaW1lUG9wb3ZlcgotCi0tICh2b2lkKWNsZWFyOihpZClzZW5kZXIKLXsKLSAgICBbX3ZpZXcg
cGFnZV0tPnNldEZvY3VzZWRFbGVtZW50VmFsdWUoU3RyaW5nKCkpOwotfQotCi0tICh2b2lkKXBv
cG92ZXJXYXNEaXNtaXNzZWQ6KFdLUm90YXRpbmdQb3BvdmVyICopcG9wb3ZlcgotewotICAgIFtz
dXBlciBwb3BvdmVyV2FzRGlzbWlzc2VkOnBvcG92ZXJdOwotICAgIAotICAgIGlmIChwb3BvdmVy
ID09IHNlbGYpIHsKLSAgICAgICAgaWYgKF9wcmVzZXJ2aW5nRm9jdXMpIHsKLSAgICAgICAgICAg
IFtfdmlldyByZWxlYXNlRm9jdXNdOwotICAgICAgICAgICAgX3ByZXNlcnZpbmdGb2N1cyA9IE5P
OwotICAgICAgICB9Ci0gICAgfQotfQotCi0tIChpZClpbml0V2l0aFZpZXc6KFdLQ29udGVudFZp
ZXcgKil2aWV3IGRhdGVQaWNrZXJNb2RlOihVSURhdGVQaWNrZXJNb2RlKW1vZGUKLXsKLSAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoVmlldzp2aWV3XSkpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0KLSAgICBfdmlldyA9IHZpZXc7Ci0gICAgX3ZpZXdDb250cm9sbGVyID0gYWRvcHROUyhb
W1dLRGF0ZVRpbWVQb3BvdmVyVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3
IGRhdGVQaWNrZXJNb2RlOm1vZGVdKTsKLSAgICBVSURhdGVQaWNrZXIgKmRhdGVQaWNrZXIgPSBb
KFdLRGF0ZVRpbWVQaWNrZXIgKilfdmlld0NvbnRyb2xsZXIuZ2V0KCkuaW5uZXJDb250cm9sIGRh
dGVQaWNrZXJdOwotCi0gICAgaWYgKHZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVt
ZW50VHlwZSA9PSBJbnB1dFR5cGU6Ok1vbnRoKSB7Ci0gICAgICAgIENHRmxvYXQgcG9wb3Zlcldp
ZHRoID0gW2RhdGVQaWNrZXIgX2NvbnRlbnRXaWR0aF07Ci0gICAgICAgIENHRmxvYXQgcG9wb3Zl
ckhlaWdodCA9IF92aWV3Q29udHJvbGxlci5nZXQoKS52aWV3LmZyYW1lLnNpemUuaGVpZ2h0Owot
ICAgICAgICBbX3ZpZXdDb250cm9sbGVyIHNldFByZWZlcnJlZENvbnRlbnRTaXplOkNHU2l6ZU1h
a2UocG9wb3ZlcldpZHRoLCBwb3BvdmVySGVpZ2h0KV07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
W192aWV3Q29udHJvbGxlciBzZXRQcmVmZXJyZWRDb250ZW50U2l6ZTpDR1NpemVNYWtlKGRhdGVQ
aWNrZXIuZnJhbWUuc2l6ZS53aWR0aCsxNiwgZGF0ZVBpY2tlci5mcmFtZS5zaXplLmhlaWdodCld
OwotICAgIH0KLSAgICAKLSAgICBbX3ZpZXdDb250cm9sbGVyIHNldEVkZ2VzRm9yRXh0ZW5kZWRM
YXlvdXQ6VUlSZWN0RWRnZU5vbmVdOwotICAgIFtfdmlld0NvbnRyb2xsZXIgc2V0VGl0bGU6X3Zp
ZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi50aXRsZV07Ci0KLSAgICAvLyBBbHdheXMgaGF2
ZSBhIG5hdmlnYXRpb24gY29udHJvbGxlciB3aXRoIGEgY2xlYXIgYnV0dG9uLCBhbmQgYSB0aXRs
ZSBpZiB0aGUgaW5wdXQgZWxlbWVudCBoYXMgYSB0aXRsZS4KLSAgICBSZXRhaW5QdHI8VUlOYXZp
Z2F0aW9uQ29udHJvbGxlcj4gbmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlOYXZp
Z2F0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhSb290Vmlld0NvbnRyb2xsZXI6X3ZpZXdD
b250cm9sbGVyLmdldCgpXSk7Ci0gICAgVUlOYXZpZ2F0aW9uSXRlbSAqbmF2aWdhdGlvbkl0ZW0g
PSBuYXZpZ2F0aW9uQ29udHJvbGxlci5nZXQoKS5uYXZpZ2F0aW9uQmFyLnRvcEl0ZW07Ci0gICAg
TlNTdHJpbmcgKmNsZWFyU3RyaW5nID0gV0VCX1VJX1NUUklOR19LRVkoIkNsZWFyIiwgIkNsZWFy
IEJ1dHRvbiBEYXRlIFBvcG92ZXIiLCAiQ2xlYXIgYnV0dG9uIGluIGRhdGUgaW5wdXQgcG9wb3Zl
ciIpOwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgVUlCYXJC
dXR0b25JdGVtICpjbGVhckJ1dHRvbiA9IFtbW1VJQmFyQnV0dG9uSXRlbSBhbGxvY10gaW5pdFdp
dGhUaXRsZTpjbGVhclN0cmluZyBzdHlsZTpVSUJhckJ1dHRvbkl0ZW1TdHlsZUJvcmRlcmVkIHRh
cmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoY2xlYXI6KV0gYXV0b3JlbGVhc2VdOwotICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIFtuYXZpZ2F0aW9uSXRlbSBzZXRS
aWdodEJhckJ1dHRvbkl0ZW06Y2xlYXJCdXR0b25dOwotCi0gICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KLSAgICBSZXRhaW5QdHI8VUlQb3BvdmVyQ29udHJvbGxlcj4gY29u
dHJvbGxlciA9IGFkb3B0TlMoW1tVSVBvcG92ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENv
bnRlbnRWaWV3Q29udHJvbGxlcjpuYXZpZ2F0aW9uQ29udHJvbGxlci5nZXQoKV0pOwotICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIFtzZWxmIHNldFBvcG92ZXJDb250
cm9sbGVyOmNvbnRyb2xsZXIuZ2V0KCldOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKFdL
RGF0ZVRpbWVQb3BvdmVyVmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlcgotewotICAgIHJl
dHVybiBfdmlld0NvbnRyb2xsZXIuZ2V0KCk7Ci19Ci0KLS0gKHZvaWQpY29udHJvbEJlZ2luRWRp
dGluZwotewotICAgIGlmICghX3ByZXNlbnRpbmcpIHsKLSAgICAgICAgX3ByZXNlbnRpbmcgPSBZ
RVM7Ci0gICAgICAgIFtzZWxmIHByZXNlbnRQb3BvdmVyQW5pbWF0ZWQ6Tk9dOwotICAgICAgICBb
X3ZpZXdDb250cm9sbGVyLmdldCgpLmlubmVyQ29udHJvbCBjb250cm9sQmVnaW5FZGl0aW5nXTsK
LSAgICAgICAgCi0gICAgICAgIGlmIChfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVs
ZW1lbnRUeXBlID09IElucHV0VHlwZTo6VGltZSB8fCBfdmlldy5mb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uLmVsZW1lbnRUeXBlID09IElucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbCkgewotICAgICAg
ICAgICAgX3ByZXNlcnZpbmdGb2N1cyA9IFlFUzsKLSAgICAgICAgICAgIFtfdmlldyBwcmVzZXJ2
ZUZvY3VzXTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotLSAodm9pZCljb250cm9sRW5kRWRpdGlu
ZwotewotICAgIF9wcmVzZW50aW5nID0gTk87Ci0gICAgW3NlbGYgZGlzbWlzc1BvcG92ZXJBbmlt
YXRlZDpOT107Ci0gICAgW192aWV3Q29udHJvbGxlci5nZXQoKS5pbm5lckNvbnRyb2wgY29udHJv
bEVuZEVkaXRpbmddOwotfQotCi0tIChVSVZpZXcgKiljb250cm9sVmlldwotewotICAgIHJldHVy
biBuaWw7Ci19Ci0KLS0gKHZvaWQpc2V0SG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0lu
dGVnZXIpbWludXRlCi17Ci0gICAgV0tEYXRlVGltZVBpY2tlciAqZGF0ZVRpbWVQaWNrZXIgPSAo
V0tEYXRlVGltZVBpY2tlciAqKXNlbGYudmlld0NvbnRyb2xsZXIuaW5uZXJDb250cm9sOwotICAg
IFtkYXRlVGltZVBpY2tlciBzZXRIb3VyOmhvdXIgbWludXRlOm1pbnV0ZV07Ci19Ci0KLS0gKE5T
U3RyaW5nICopY2FsZW5kYXJUeXBlCi17Ci0gICAgV0tEYXRlVGltZVBpY2tlciAqZGF0ZVRpbWVQ
aWNrZXIgPSAoV0tEYXRlVGltZVBpY2tlciAqKXNlbGYudmlld0NvbnRyb2xsZXIuaW5uZXJDb250
cm9sOwotICAgIHJldHVybiBkYXRlVGltZVBpY2tlci5kYXRlUGlja2VyLmNhbGVuZGFyLmNhbGVu
ZGFySWRlbnRpZmllcjsKLX0KLQotLSAoZG91YmxlKWhvdXIKLXsKLSAgICBXS0RhdGVUaW1lUGlj
a2VyICpkYXRlVGltZVBpY2tlciA9IChXS0RhdGVUaW1lUGlja2VyICopc2VsZi52aWV3Q29udHJv
bGxlci5pbm5lckNvbnRyb2w7Ci0gICAgTlNDYWxlbmRhciAqY2FsZW5kYXIgPSBbTlNDYWxlbmRh
ciBjdXJyZW50Q2FsZW5kYXJdOwotICAgIE5TRGF0ZUNvbXBvbmVudHMgKmNvbXBvbmVudHMgPSBb
Y2FsZW5kYXIgY29tcG9uZW50czooTlNDYWxlbmRhclVuaXRIb3VyKSBmcm9tRGF0ZTpkYXRlVGlt
ZVBpY2tlci5kYXRlUGlja2VyLmRhdGVdOwotCi0gICAgcmV0dXJuIFtjb21wb25lbnRzIGhvdXJd
OwotfQotCi0tIChkb3VibGUpbWludXRlCi17Ci0gICAgV0tEYXRlVGltZVBpY2tlciAqZGF0ZVRp
bWVQaWNrZXIgPSAoV0tEYXRlVGltZVBpY2tlciAqKXNlbGYudmlld0NvbnRyb2xsZXIuaW5uZXJD
b250cm9sOwotICAgIE5TQ2FsZW5kYXIgKmNhbGVuZGFyID0gW05TQ2FsZW5kYXIgY3VycmVudENh
bGVuZGFyXTsKLSAgICBOU0RhdGVDb21wb25lbnRzICpjb21wb25lbnRzID0gW2NhbGVuZGFyIGNv
bXBvbmVudHM6KE5TQ2FsZW5kYXJVbml0TWludXRlKSBmcm9tRGF0ZTpkYXRlVGltZVBpY2tlci5k
YXRlUGlja2VyLmRhdGVdOwotCi0gICAgcmV0dXJuIFtjb21wb25lbnRzIG1pbnV0ZV07Ci19Ci0K
LUBlbmQKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NzBjNmRmOWM1OGZlMDY5
YmVlYjc1ZTY3ZWY0M2FkYWQ0MWI2ODdkLi5kNGQzNjZhMjkzOWI1N2VlZmIwZDZlZmVlMGVlZGE4
ZGQwZTdkOGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE2ODgsNyArMTY4OCw3IEBACiAJCUMxODE3MzYxMjA1ODQyNDcwMERGREE2
NSAvKiBEaXNwbGF5TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzE4MTczNjAyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggKi87IH07
CiAJCUMxRTEyM0JBMjBBMTE1NzMwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFFMTIzQjkyMEExMTU3MjAw
MjY0NkY0IC8qIFBERkNvbnRleHRNZW51LmggKi87IH07CiAJCUM1MTczODgxMTJERjhGNEYwMEVF
M0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250
cm9sbGVyQWN0aW9uLmggKi87IH07Ci0JCUM1NDI1NkI1MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zv
cm1JbnB1dENvbnRyb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wuaCAq
LzsgfTsKKwkJQzU0MjU2QjUxOEJFQzE4QzAwREU0MTc5IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRy
b2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDI1
NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmggKi87IH07CiAJ
CUM1NDI1NkI3MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1QZXJpcGhlcmFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTQyNTZCMTE4QkVDMThCMDBE
RTQxNzkgLyogV0tGb3JtUGVyaXBoZXJhbC5oICovOyB9OwogCQlDNTQyNTZCODE4QkVDMThDMDBE
RTQxNzkgLyogV0tGb3JtUG9wb3Zlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzU0MjU2QjIxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybVBvcG92ZXIu
aCAqLzsgfTsKIAkJQzU0MjU2QkExOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybVNlbGVjdENvbnRy
b2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDI1
NkI0MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1TZWxlY3RDb250cm9sLmggKi87IH07CkBAIC01
MDIzLDggKzUwMjMsOCBAQAogCQlDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4
dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUERGQ29udGV4dE1lbnUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3
IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERyYWdDb250cm9sbGVyQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUM1MjM3RjVGMTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFZGl0b3JDbGllbnRNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAv
KiBXS0Zvcm1JbnB1dENvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V0tGb3JtSW5wdXRDb250cm9sLmg7IHBhdGggPSBpb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9s
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM1NDI1NkIwMThCRUMxOEIwMERFNDE3
OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBXS0Zvcm1JbnB1dENvbnRyb2wubW07IHBhdGggPSBpb3MvZm9ybXMvV0tGb3Jt
SW5wdXRDb250cm9sLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNTQyNTZBRjE4
QkVDMThCMDBERTQxNzkgLyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmg7IHBhdGggPSBpb3Mv
Zm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDNTQyNTZCMDE4QkVDMThCMDBERTQxNzkgLyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRGF0ZVRpbWVJbnB1
dENvbnRyb2wubW07IHBhdGggPSBpb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MjU2QjExOEJFQzE4QjAwREU0MTc5IC8q
IFdLRm9ybVBlcmlwaGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tG
b3JtUGVyaXBoZXJhbC5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MjU2QjIxOEJFQzE4QjAwREU0MTc5IC8qIFdL
Rm9ybVBvcG92ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tGb3JtUG9w
b3Zlci5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLRm9ybVBvcG92ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzU0MjU2QjMxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybVBvcG92ZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Zvcm1Qb3BvdmVy
Lm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLRm9ybVBvcG92ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC04MzczLDE0ICs4MzczLDE0IEBACiAJCTdDNkU3MEY4MThCMkQ0N0UwMEYy
NEUyRSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJNDE2ODRDNEYyNDY0M0QzRjAwMUNFOEVEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5h
Z2VyLmNwcCAqLywKLQkJCQk0MTY4NEM0RTI0NjQzQzgxMDAxQ0U4RUQgLyogUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXIuaCAqLywKLQkJCQk0MTY4NEM0RDI0NjQzQkZBMDAxQ0U4RUQgLyogUmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJQ0Q0NTcwQ0IyNDQw
RkIyQTAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcCAqLywKIAkJ
CQlDRDQ1NzBDQTI0NDBGQjJBMDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0
b3IuaCAqLywKIAkJCQlDREEyOUExOTFDQkRCRjQxMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9u
TWFuYWdlci5oICovLAogCQkJCUNEQTI5QTFDMUNCREJGNUIwMDkwMUNDRiAvKiBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluICovLAogCQkJCUNEQTI5QTE4MUNCREJGNDEwMDkwMUND
RiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tICovLAorCQkJCTQxNjg0QzRGMjQ2NDNEM0Yw
MDFDRThFRCAvKiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAgKi8sCisJCQkJNDE2ODRD
NEUyNDY0M0M4MTAwMUNFOEVEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmggKi8sCisJ
CQkJNDE2ODRDNEQyNDY0M0JGQTAwMUNFOEVEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluICovLAogCQkJCTQxNjg0QzUwMjQ2NDUwRkQwMDFDRThFRCAvKiBSZW1vdGVS
ZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLywKIAkJCQk0MTY4NEM1MTI0NjQ1MEZEMDAxQ0U4RUQg
LyogUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5oICovLAogCQkJCUNENDkxQjA1MUU3MEQwNUYw
MDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgKi8sCkBAIC05OTcyLDcgKzk5
NzIsNiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyRDdERUJF
MjIxMjY5RTRCMDBCOUY3M0MgLyogdW5pZmllZC1zb3VyY2VzICovLAotCQkJCTBGRjI0QTJCMTg3
OUU0QkMwMDNBQkYwRCAvKiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCiAJCQkJQ0Q0NTcwRDAyNDQxMDE0QTAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUNENDU3MEQx
MjQ0MTAxNEIwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5TWVz
c2FnZXMuaCAqLywKIAkJCQlDRDQ1NzBEMjI0NDEwMTRCMDBBM0RDRUIgLyogQXVkaW9TZXNzaW9u
Um91dGluZ0FyYml0cmF0b3JQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLApAQCAtMTAwNTQsNiAr
MTAwNTMsNyBAQAogCQkJCUNERDUzNTcxMjQwRERFMDYwMEY3QjhDNCAvKiBSZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJQ0RENTM1NzIyNDBEREUwNjAw
RjdCOEM0IC8qIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQlDREQ1
MzU3NzI0MERERTA3MDBGN0I4QzQgLyogUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaCAqLywKKwkJCQkwRkYyNEEyQjE4NzlFNEJDMDAzQUJGMEQgLyogUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUNEQUMyMEYyMjNGQzM4
M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
LAogCQkJCUNEQUMyMEYzMjNGQzM4M0EwMDIxREVFMyAvKiBSZW1vdGVDRE1GYWN0b3J5UHJveHlN
ZXNzYWdlcy5oICovLAogCQkJCUNEQUMyMEVFMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1vdGVDRE1G
YWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKQEAgLTEwMjU1LDYgKzEwMjU1LDggQEAK
IAkJCQlDNUZBMUVEMjE4RTEwNjIyMDBCM0Y0MDIgLyogV0tBaXJQbGF5Um91dGVQaWNrZXIubW0g
Ki8sCiAJCQkJMkU5NEZDMTQyMDM1MUE2RDAwOTc0QkEwIC8qIFdLRGF0ZVBpY2tlclZpZXdDb250
cm9sbGVyLmggKi8sCiAJCQkJMkU5NEZDMTUyMDM1MUE2RDAwOTc0QkEwIC8qIFdLRGF0ZVBpY2tl
clZpZXdDb250cm9sbGVyLm1tICovLAorCQkJCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBX
S0RhdGVUaW1lSW5wdXRDb250cm9sLmggKi8sCisJCQkJQzU0MjU2QjAxOEJFQzE4QjAwREU0MTc5
IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wubW0gKi8sCiAJCQkJQTU4QjZGMDYxOEZDQTczMzAw
OENCQTUzIC8qIFdLRmlsZVVwbG9hZFBhbmVsLmggKi8sCiAJCQkJQTU4QjZGMDcxOEZDQTczMzAw
OENCQTUzIC8qIFdLRmlsZVVwbG9hZFBhbmVsLm1tICovLAogCQkJCTJFMTZCNkNEMjAxN0I3QUMw
MDg5OTZENiAvKiBXS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcuaCAqLywKQEAgLTEwMjYzLDggKzEw
MjY1LDYgQEAKIAkJCQlFNUNCMDdEQjIwRTE2NzhGMDAyMkMxODMgLyogV0tGb3JtQ29sb3JDb250
cm9sLm1tICovLAogCQkJCUU1NDhFQkNGMjEwMTVGMEUwMEJFM0MzMiAvKiBXS0Zvcm1Db2xvclBp
Y2tlci5oICovLAogCQkJCUU1NDhFQkQwMjEwMTVGMEUwMEJFM0MzMiAvKiBXS0Zvcm1Db2xvclBp
Y2tlci5tbSAqLywKLQkJCQlDNTQyNTZBRjE4QkVDMThCMDBERTQxNzkgLyogV0tGb3JtSW5wdXRD
b250cm9sLmggKi8sCi0JCQkJQzU0MjU2QjAxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybUlucHV0
Q29udHJvbC5tbSAqLywKIAkJCQlDNTQyNTZCMTE4QkVDMThCMDBERTQxNzkgLyogV0tGb3JtUGVy
aXBoZXJhbC5oICovLAogCQkJCUNFNzBFRTVDMjI0NDJCRDAwMEUwQUYwRiAvKiBXS0Zvcm1QZXJp
cGhlcmFsQmFzZS5oICovLAogCQkJCUNFNzBFRTVBMjI0NDJCQjMwMEUwQUYwRiAvKiBXS0Zvcm1Q
ZXJpcGhlcmFsQmFzZS5tbSAqLywKQEAgLTExNTE1LDYgKzExNTE1LDcgQEAKIAkJCQkzN0E3MDlB
NzFFM0VBMEZEMDBDQTU5NjkgLyogV0tEYXRhRGV0ZWN0b3JUeXBlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzdBNzA5QTkxRTNFQTQwQzAwQ0E1OTY5IC8qIFdLRGF0YURldGVjdG9yVHlwZXNJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU5NEZDMTYyMDM1MUE2RDAwOTc0QkEwIC8qIFdL
RGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDNTQyNTZCNTE4
QkVDMThDMDBERTQxNzkgLyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzc3RUFENDUxN0UyQzUxQTAwMkQxOTNEIC8qIFdLRGVjbGFyYXRpb25TcGVjaWZpZXJz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDQ4MTU2NDIzODc4MjAwMDA5ODI2NTcgLyogV0tEZWZl
cnJpbmdHZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMzNTlDMEQyMTU0
NzM5RjAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTU0Nyw3
ICsxMTU0OCw2IEBACiAJCQkJMkUxNkI2Q0YyMDE3QjdBRDAwODk5NkQ2IC8qIFdLRm9jdXNlZEZv
cm1Db250cm9sVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTVDQjA3REMyMEUxNjc4RjAwMjJD
MTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTU0OEVCRDEy
MTAxNUYwRTAwQkUzQzMyIC8qIFdLRm9ybUNvbG9yUGlja2VyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlDNTQyNTZCNTE4QkVDMThDMDBERTQxNzkgLyogV0tGb3JtSW5wdXRDb250cm9sLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDNTQyNTZCNzE4QkVDMThDMDBERTQxNzkgLyogV0tGb3JtUGVyaXBoZXJh
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U3MEVFNUQyMjQ0MkJEMDAwRTBBRjBGIC8qIFdLRm9y
bVBlcmlwaGVyYWxCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTQyNTZCODE4QkVDMThDMDBE
RTQxNzkgLyogV0tGb3JtUG9wb3Zlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjY4NSw3ICsxMjY4
NSw2IEBACiAJCQkJMkQ5MkE3N0IyMTJCNkE3MTAwRjQ5M0ZEIC8qIEFyZ3VtZW50Q29kZXJzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJERUIxRDJFMjEyNzQ3MzYwMDkzMzkwNiAvKiBBcmd1bWVu
dENvZGVyc0NGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdDMjEyQjZBNzEwMEY0OTNG
RCAvKiBBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGRjI0QTJEMTg3OUU0QkMw
MDNBQkYwRCAvKiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDRDQ1NzBENDI0NDExRDBGMDBBM0RDRUIgLyogQXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q3Q0YzNjEyNDQ0
Q0NBNjAwM0JDNEQ1IC8qIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHlDb2NvYS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUNENDU3MEQzMjQ0MTEzQjUwMEEzRENFQiAvKiBBdWRpb1Nl
c3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMTI3NzQsNiArMTI3NzMsNyBAQAogCQkJCTFBMEMyMjdGMjQ1MTEzMEEwMEVENjE0
RCAvKiBRdWlja0xvb2tUaHVtYm5haWxpbmdTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTFBMEMyMjVFMjQzNTc1Q0QwMEVENjE0RCAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIubW0g
aW4gU291cmNlcyAqLywKIAkJCQk5QjEyMjlDRTIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGMjRBMkQxODc5
RTRCQzAwM0FCRjBEIC8qIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQUMyMEY3MjNGQzcyNkMwMDIxREVFMyAvKiBSZW1v
dGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RBQzIwRjgyM0ZDNzI2QzAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q0NjYxODMyNDAxMEE2NzAwNDdDQTM1
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29u
dHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJv
bGxlcklPUy5tbQppbmRleCBkOWUwMjEzZjk5NDUxOGQ4Y2VhNWJjNGZlNDMyNmZhYTE3YWVjMWI0
Li4xNGU2ZGY4NzFiYWE2MWNlMmRkZmFjZDI2MTQyOWNmNzkzNmMxMmJjIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC0x
MjMwLDcgKzEyMzAsNyBAQCBVSVZpZXcgKlVJU2NyaXB0Q29udHJvbGxlcklPUzo6cGxhdGZvcm1D
b250ZW50VmlldygpIGNvbnN0CiBKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OmNh
bGVuZGFyVHlwZSgpIGNvbnN0CiB7CiAgICAgVUlWaWV3ICpjb250ZW50VmlldyA9IFt3ZWJWaWV3
KCkgdmFsdWVGb3JLZXlQYXRoOkAiX2N1cnJlbnRDb250ZW50VmlldyJdOwotICAgIE5TU3RyaW5n
ICpjYWxlbmRhclR5cGVTdHJpbmcgPSBbY29udGVudFZpZXcgdmFsdWVGb3JLZXlQYXRoOkAiZm9y
bUlucHV0Q29udHJvbC5kYXRlVGltZVBpY2tlckNhbGVuZGFyVHlwZSJdOworICAgIE5TU3RyaW5n
ICpjYWxlbmRhclR5cGVTdHJpbmcgPSBbY29udGVudFZpZXcgdmFsdWVGb3JLZXlQYXRoOkAiZGF0
ZVRpbWVJbnB1dENvbnRyb2wuZGF0ZVRpbWVQaWNrZXJDYWxlbmRhclR5cGUiXTsKICAgICBhdXRv
IGpzQ29udGV4dCA9IG1fY29udGV4dC0+anNDb250ZXh0KCk7CiAgICAgcmV0dXJuIEpTVmFsdWVU
b09iamVjdChqc0NvbnRleHQsIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpjYWxlbmRhclR5cGVT
dHJpbmcgaW5Db250ZXh0OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6
anNDb250ZXh0XV0uSlNWYWx1ZVJlZiwgbnVsbHB0cik7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399272</attachid>
            <date>2020-05-13 09:18:37 -0700</date>
            <delta_ts>2020-05-13 14:34:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211825-20200513091819.patch</filename>
            <type>text/plain</type>
            <size>61080</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJhMGE0NjY2N2Q1NzEyYjI1
NWUyODU1NTg4YzBmMGY5ZWQxZjRmNTMuLjBkMmFiOWU4MDE0NmFhMWRhMDFjNmE2ODI5NzUxYWQ0
NmVjOGRkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjAtMDUtMTIgIE1lZ2FuIEdh
cmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgRGF0ZS9U
aW1lIHBvcG92ZXJzIHRvIGNvbnRleHRNZW51cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTgyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgRGF0ZS9UaW1lIHBpY2tlciB0byB1c2Ug
VUlDb250ZXh0TWVudXMgaW5zdGVhZCBvZiBwb3BvdmVycy4KKyAgICAgICAgUmVtb3ZlZCBhbGwg
dGhlIHVubmVlZGVkIHBvcG92ZXIgY29kZS4KKyAgICAgICAgUmVuYW1lZCBXS0Zvcm1JbnB1dENv
bnRyb2wgdG8gV0tEYXRlVGltZUlucHV0Q29udHJvbCBiZWNhdXNlIGl0IHdhcyBvbmx5IHVzZWQK
KyAgICAgICAgZm9yIGRhdGUgYW5kIHRpbWUgY29udHJvbHMsIHVubmVjY2Vzc2FyeSBhYnN0cmFj
dGlvbi4KKyAgICAgICAgV2UgbmVlZCB0byBlbnN1cmUgdGhlIHBvaXNpdGlvbiBpbmZvcm1hdGlv
biBpcyB1cCB0byBkYXRlIGJlZm9yZSBwcmVzZW50aW5nCisgICAgICAgIHRoZSBjb250ZXh0IG1l
bnUsIG9yIHRoZSBwb3NpdGlvbiBpdCB3aWxsIGJlIHByZXNlbnRlZCBmcm9tIGNhbiBiZSBzdGFs
ZS4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2hv
dWxkU2hvd0F1dG9tYXRpY0tleWJvYXJkVUlJZ25vcmluZ0lucHV0TW9kZV0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IHJlcXVpcmVzQWNjZXNzb3J5Vmlld10pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF91cGRhdGVBY2Nlc3NvcnldKToKKyAgICAgICAgKG1heUNvbnRhaW5TZWxlY3Rh
YmxlVGV4dCk6CisgICAgICAgIChjcmVhdGVJbnB1dFBlcmlwaGVyYWxXaXRoVmlldyk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgaW5wdXRMYWJlbFRleHRdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfcmVtb3ZlQ29udGV4dE1lbnVWaWV3SWZQb3NzaWJsZV0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IGlucHV0TGFiZWxUZXh0Rm9yVmlld0NvbnRyb2xsZXI6XSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgZm9ybUlucHV0Q29udHJvbF0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IHNldFRpbWVQaWNrZXJWYWx1ZVRvSG91cjptaW51dGU6XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgdGltZVBpY2tlclZhbHVlSG91cl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IHRpbWVQaWNrZXJWYWx1ZU1pbnV0ZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5oLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbTogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wubW0uCisg
ICAgICAgICgtW1dLRGF0ZVRpbWVDb250ZXh0TWVudVZpZXdDb250cm9sbGVyIGluaXRdKToKKyAg
ICAgICAgKC1bV0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXIgcHJlZmVycmVkQ29u
dGVudFNpemVdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBpbml0V2l0aFZpZXc6ZGF0
ZVBpY2tlck1vZGU6XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgY29udGV4dE1lbnVJ
bnRlcmFjdGlvbjpwcmV2aWV3Rm9ySGlnaGxpZ2h0aW5nTWVudVdpdGhDb25maWd1cmF0aW9uOl0p
OgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIF9jb250ZXh0TWVudUludGVyYWN0aW9uOnN0
eWxlRm9yTWVudVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlj
a2VyIGNvbnRleHRNZW51SW50ZXJhY3Rpb246Y29uZmlndXJhdGlvbkZvck1lbnVBdExvY2F0aW9u
Ol0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGNvbnRleHRNZW51SW50ZXJhY3Rpb246
d2lsbEVuZEZvckNvbmZpZ3VyYXRpb246YW5pbWF0b3I6XSk6CisgICAgICAgICgtW1dLRGF0ZVRp
bWVQaWNrZXIgcmVtb3ZlQ29udGV4dE1lbnVJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtXS0Rh
dGVUaW1lUGlja2VyIGVuc3VyZUNvbnRleHRNZW51SW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1b
V0tEYXRlVGltZVBpY2tlciBzaG93RGF0ZVRpbWVQaWNrZXJdKToKKyAgICAgICAgKC1bV0tEYXRl
VGltZVBpY2tlciByZXNldDpdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBjYWxlbmRh
clR5cGVdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1dLRGF0ZVRpbWVQaWNrZXIgc2V0RGF0ZVRpbWVQaWNrZXJUb0luaXRpYWxWYWx1ZV0pOgor
ICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGNvbnRyb2xCZWdpbkVkaXRpbmddKToKKyAgICAg
ICAgKC1bV0tEYXRlVGltZVBpY2tlciB2aWV3Q29udHJvbGxlcl0pOgorICAgICAgICAoLVtXS0Rh
dGVUaW1lUGlja2VyIGNvbnRyb2xFbmRFZGl0aW5nXSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVJ
bnB1dENvbnRyb2wgaW5pdFdpdGhWaWV3Ol0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lSW5wdXRD
b250cm9sIHNldFRpbWVQaWNrZXJIb3VyOm1pbnV0ZTpdKToKKyAgICAgICAgKC1bV0tEYXRlVGlt
ZUlucHV0Q29udHJvbCBkYXRlVGltZVBpY2tlckNhbGVuZGFyVHlwZV0pOgorICAgICAgICAoLVtX
S0RhdGVUaW1lSW5wdXRDb250cm9sIHRpbWVQaWNrZXJWYWx1ZUhvdXJdKToKKyAgICAgICAgKC1b
V0tEYXRlVGltZUlucHV0Q29udHJvbCB0aW1lUGlja2VyVmFsdWVNaW51dGVdKToKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNS0xMyAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNjEyNTQp
OiBCcm9rZSBBcHBsZSBQYXkgb24gbWFjT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2Nh
bGl6YWJsZS5zdHJpbmdzCmluZGV4IDc4NDE5ZDUxZWFjZGE4ODUwNzcxYmU3OTMyZTZmMjVjODdl
ZjQ2NjAuLmYyNTQxZjdhZTYyNWE1OGQxYTUwNDg1YjgxYjQ4Njk3N2E5MzY0MTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291
cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpAQCAtMjExLDkgKzIxMSw2
IEBACiAvKiBUaXRsZSBmb3IgZmlsZSBidXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zIGZvciBtZWRp
YSBmaWxlcyAqLwogIkNob29zZSBNZWRpYSAoU2luZ2xlKSIgPSAiQ2hvb3NlIE1lZGlhIChTaW5n
bGUpIjsKIAotLyogQ2xlYXIgYnV0dG9uIGluIGRhdGUgaW5wdXQgcG9wb3ZlciAqLwotIkNsZWFy
IEJ1dHRvbiBEYXRlIFBvcG92ZXIiID0gIkNsZWFyIjsKLQogLyogbWVudSBpdGVtIGluIFJlY2Vu
dCBTZWFyY2hlcyBtZW51IHRoYXQgZW1wdGllcyBtZW51J3MgY29udGVudHMgKi8KICJDbGVhciBS
ZWNlbnQgU2VhcmNoZXMiID0gIkNsZWFyIFJlY2VudCBTZWFyY2hlcyI7CiAKQEAgLTEzMjcsNiAr
MTMyNCw5IEBACiAvKiBIVFRQIHJlc3VsdCBjb2RlIHN0cmluZyAqLwogInJlcXVlc3RlZCByYW5n
ZSBub3Qgc2F0aXNmaWFibGUiID0gInJlcXVlc3RlZCByYW5nZSBub3Qgc2F0aXNmaWFibGUiOwog
CisvKiBSZXNldCBidXR0b24gaW4gZGF0ZSBpbnB1dCBwb3BvdmVyICovCisiUmVzZXQgQnV0dG9u
IERhdGUvVGltZSBDb250ZXh0IE1lbnUiID0gIlJlc2V0IjsKKwogLyogSFRUUCByZXN1bHQgY29k
ZSBzdHJpbmcgKi8KICJyZXNldCBjb250ZW50IiA9ICJyZXNldCBjb250ZW50IjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCBkZDQ3NDM0OGNkOGU1YWU0
MDI0N2NjM2Y4NzFhYjQ1MTBmNzkwMDIzLi5iYzFjMjUwNTFkNGFiZDlhODA5OTYyN2MwOTYxYWI5
NDNiYmI3MTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlL
aXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApA
QCAtMTE1MiwxMCArMTE1MiwxMiBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNJbnRlZ2VyLCBVSVdL
RG9jdW1lbnRSZXF1ZXN0RmxhZ3MpIHsKIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBfVUlD
b250ZXh0TWVudUxheW91dCkgewogICAgIF9VSUNvbnRleHRNZW51TGF5b3V0QWN0aW9uc09ubHkg
PSAxLAogICAgIF9VSUNvbnRleHRNZW51TGF5b3V0Q29tcGFjdE1lbnUgPSAzLAorICAgIF9VSUNv
bnRleHRNZW51TGF5b3V0QXV0b21hdGljID0gMTAwLAogfTsKIAogQGludGVyZmFjZSBfVUlDb250
ZXh0TWVudVN0eWxlIDogTlNPYmplY3QgPE5TQ29weWluZz4KIEBwcm9wZXJ0eSAobm9uYXRvbWlj
KSBfVUlDb250ZXh0TWVudUxheW91dCBwcmVmZXJyZWRMYXlvdXQ7CitAcHJvcGVydHkgKG5vbmF0
b21pYykgQk9PTCBoYXNJbnRlcmFjdGl2ZVByZXZpZXc7CiArIChpbnN0YW5jZXR5cGUpZGVmYXVs
dFN0eWxlOwogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZWQ0Mjk2ZmFhMmE1NGRl
YjgxMmJmYmNmNzJiNmM1OTYzNTY2YzllZC4uYjcyYWM1MzBjMWQxOWQ0ODAzZGQ1NDgxODZhNGZi
ZmJmZjg5OWRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDE2LDExICs0MTYsMTEgQEAg
VUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JXS1dlYlZpZXcubW0KIAogVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQorVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Rh
dGVUaW1lSW5wdXRDb250cm9sLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBh
bmVsLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5tbQog
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wubW0KIFVJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tGb3JtQ29sb3JQaWNrZXIubW0KLVVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5w
dXRDb250cm9sLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWxCYXNlLm1t
CiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVBvcG92ZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGb3JtU2VsZWN0Q29udHJvbC5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IGRkYjllYjAyNGJkYjAw
Y2EyOTJkZGRiODAwZGM0MDRkZDk5NmY4MGIuLjViMjdhNTBiMmZiZjI2ZTkxMTAxMWEyM2I2NWQw
MmYyNDNjMWVlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTk5LDkgKzk5LDkgQEAgc3RydWN0IFdlYkF1
dG9jb3JyZWN0aW9uQ29udGV4dDsKIEBjbGFzcyBXZWJFdmVudDsKIEBjbGFzcyBXS0FjdGlvblNo
ZWV0QXNzaXN0YW50OwogQGNsYXNzIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mbzsKK0BjbGFzcyBX
S0RhdGVUaW1lSW5wdXRDb250cm9sOwogQGNsYXNzIFdLRHJhd2luZ0Nvb3JkaW5hdG9yOwogQGNs
YXNzIFdLRm9jdXNlZEZvcm1Db250cm9sVmlldzsKLUBjbGFzcyBXS0Zvcm1JbnB1dENvbnRyb2w7
CiBAY2xhc3MgV0tGb3JtSW5wdXRTZXNzaW9uOwogQGNsYXNzIFdLSGlnaGxpZ2h0TG9uZ1ByZXNz
R2VzdHVyZVJlY29nbml6ZXI7CiBAY2xhc3MgV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyOwpAQCAt
NTM5LDYgKzUzOSw4IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVD
TEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAtIChCT09MKWhhc0hpZGRl
bkNvbnRlbnRFZGl0YWJsZTsKIC0gKHZvaWQpZ2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZDooV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUpY29tbWFuZDsKIAorLSAoTlNT
dHJpbmcgKilpbnB1dExhYmVsVGV4dDsKKwogLSAodm9pZClwcmVzZXJ2ZUZvY3VzOwogLSAodm9p
ZClyZWxlYXNlRm9jdXM7CiAKQEAgLTYxNSw3ICs2MTcsNyBAQCBGT1JfRUFDSF9QUklWQVRFX1dL
Q09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9W
SUVXKQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqdGV4dENvbnRl
bnRUeXBlRm9yVGVzdGluZzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJp
bmcgKnNlbGVjdEZvcm1Qb3BvdmVyVGl0bGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIE5TU3RyaW5nICpmb3JtSW5wdXRMYWJlbDsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgV0tGb3JtSW5wdXRDb250cm9sICpmb3JtSW5wdXRDb250cm9sOworQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBXS0RhdGVUaW1lSW5wdXRDb250cm9sICpkYXRlVGltZUlucHV0
Q29udHJvbDsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA0YWRiZjhhYWE5NWQ2MGRlNWI3
OTA4NGNlYjI5ODkyMmM2NDQ5NGRhLi5jOTliNDkzM2I4ZThmN2U3ZDAyNDRmMDY1YzYwZWYzZmM0
MDdkNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTUwLDEwICs1MCwxMCBAQAogI2ltcG9ydCAiV0tD
b250ZXh0TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQ29udGV4dE1lbnVF
bGVtZW50SW5mb1ByaXZhdGUuaCIKICNpbXBvcnQgIldLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVy
LmgiCisjaW1wb3J0ICJXS0RhdGVUaW1lSW5wdXRDb250cm9sLmgiCiAjaW1wb3J0ICJXS0RyYXdp
bmdDb29yZGluYXRvci5oIgogI2ltcG9ydCAiV0tFcnJvci5oIgogI2ltcG9ydCAiV0tGb2N1c2Vk
Rm9ybUNvbnRyb2xWaWV3LmgiCi0jaW1wb3J0ICJXS0Zvcm1JbnB1dENvbnRyb2wuaCIKICNpbXBv
cnQgIldLRm9ybVNlbGVjdENvbnRyb2wuaCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCIKQEAg
LTE5MDIsMTYgKzE5MDIsMTUgQEAgLSAoQk9PTClfc2hvdWxkU2hvd0F1dG9tYXRpY0tleWJvYXJk
VUlJZ25vcmluZ0lucHV0TW9kZQogICAgIHN3aXRjaCAoX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b24uZWxlbWVudFR5cGUpIHsKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOb25lOgogICAg
IGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRyYXdpbmc6CisgICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6RGF0ZToKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpNb250aDoKKyAgICBjYXNl
IFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgorICAgIGNhc2UgV2ViS2l0OjpJbnB1
dFR5cGU6OlRpbWU6CiAgICAgICAgIHJldHVybiBOTzsKICAgICBjYXNlIFdlYktpdDo6SW5wdXRU
eXBlOjpTZWxlY3Q6CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgY2FzZSBXZWJL
aXQ6OklucHV0VHlwZTo6Q29sb3I6CiAjZW5kaWYKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBl
OjpEYXRlOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1vbnRoOgotICAgIGNhc2UgV2Vi
S2l0OjpJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlw
ZTo6VGltZToKLSAgICAgICAgcmV0dXJuICFXZWJLaXQ6OmN1cnJlbnRVc2VySW50ZXJmYWNlSWRp
b21Jc1BhZCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiAhX2ZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb24uaXNSZWFkT25seTsKICAgICB9CkBAIC0yOTE0LDYgKzI5MTMsMTAgQEAgLSAo
Qk9PTClyZXF1aXJlc0FjY2Vzc29yeVZpZXcKICAgICBzd2l0Y2ggKF9mb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uLmVsZW1lbnRUeXBlKSB7CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Tm9u
ZToKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEcmF3aW5nOgorICAgIGNhc2UgV2ViS2l0
OjpJbnB1dFR5cGU6OkRhdGU6CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWVM
b2NhbDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpNb250aDoKKyAgICBjYXNlIFdlYktp
dDo6SW5wdXRUeXBlOjpUaW1lOgogICAgICAgICByZXR1cm4gTk87CiAgICAgY2FzZSBXZWJLaXQ6
OklucHV0VHlwZTo6VGV4dDoKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpQYXNzd29yZDoK
QEAgLTI5MjYsMTIgKzI5MjksOCBAQCAtIChCT09MKXJlcXVpcmVzQWNjZXNzb3J5VmlldwogICAg
IGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbnRlbnRFZGl0YWJsZToKICAgICBjYXNlIFdlYktp
dDo6SW5wdXRUeXBlOjpUZXh0QXJlYToKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpTZWxl
Y3Q6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZToKICAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpEYXRlVGltZToKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGlt
ZUxvY2FsOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1vbnRoOgotICAgIGNhc2UgV2Vi
S2l0OjogSW5wdXRUeXBlOjpXZWVrOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6
CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6V2VlazoKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpDb2xvcjoKICNlbmRpZgpAQCAt
NDQwMiw4ICs0NDAxLDggQEAgLSAodm9pZClfdXBkYXRlQWNjZXNzb3J5CiAKICAgICBzd2l0Y2gg
KF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlKSB7CiAgICAgY2FzZSBXZWJL
aXQ6OklucHV0VHlwZTo6RGF0ZToKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpNb250aDoK
ICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgorICAgIGNhc2UgV2Vi
S2l0OjpJbnB1dFR5cGU6Ok1vbnRoOgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6
CiAgICAgICAgIFthY2Nlc3NvcnlWaWV3IHNldENsZWFyVmlzaWJsZTpZRVNdOwogICAgICAgICBy
ZXR1cm47CkBAIC01NzI5LDcgKzU3MjgsNiBAQCBzdGF0aWMgYm9vbCBtYXlDb250YWluU2VsZWN0
YWJsZVRleHQoV2ViS2l0OjpJbnB1dFR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIC8vIFRoZSBmb2xsb3dpbmcgdHlwZXMgbG9vayBhbmQgYmVoYXZlIGxpa2UgYSB0ZXh0IGZp
ZWxkLgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbnRlbnRFZGl0YWJsZToKLSAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZToKICAgICBjYXNlIFdlYktpdDo6SW5wdXRU
eXBlOjpFbWFpbDoKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOdW1iZXI6CiAgICAgY2Fz
ZSBXZWJLaXQ6OklucHV0VHlwZTo6TnVtYmVyUGFkOgpAQCAtNTczOSw2ICs1NzM3LDcgQEAgc3Rh
dGljIGJvb2wgbWF5Q29udGFpblNlbGVjdGFibGVUZXh0KFdlYktpdDo6SW5wdXRUeXBlIHR5cGUp
CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGV4dDoKICAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpUZXh0QXJlYToKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpVUkw6CisgICAg
Y2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWU6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6V2VlazoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNTgwMSw4ICs1ODAw
LDEzIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9ybVBlcmlwaGVyYWw+PiBjcmVh
dGVJbnB1dFBlcmlwaGVyYWxXaXRoVmlldyhXZWJLCiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlw
ZTo6Q29sb3I6CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tGb3JtQ29sb3JDb250cm9sIGFs
bG9jXSBpbml0V2l0aFZpZXc6dmlld10pOwogI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGU6CisgICAgY2FzZSBXZWJLaXQ6
OklucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpN
b250aDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lOgorICAgICAgICByZXR1cm4g
YWRvcHROUyhbW1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3
XSk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tXS0Zvcm1JbnB1dENv
bnRyb2wgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3XSk7CisgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgfQogI2VuZGlmCiB9CkBAIC02NzUxLDYgKzY3NTUsMjAgQEAgLSAodm9pZClzaGFyZVNoZWV0
RGlkRGlzbWlzczooV0tTaGFyZVNoZWV0ICopc2hhcmVTaGVldAogfQogI2VuZGlmCiAKKy0gKE5T
U3RyaW5nICopaW5wdXRMYWJlbFRleHQKK3sKKyAgICBpZiAoIV9mb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uLmxhYmVsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIF9mb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uLmxhYmVsOworCisgICAgaWYgKCFfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5h
cmlhTGFiZWwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gX2ZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24uYXJpYUxhYmVsOworCisgICAgaWYgKCFfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi50
aXRsZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
bi50aXRsZTsKKworICAgIHJldHVybiBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5wbGFjZWhv
bGRlcjsKK30KKwogI3ByYWdtYSBtYXJrIC0gVUlUZXh0SW5wdXRNdWx0aURvY3VtZW50CiAKIC0g
KEJPT0wpX3Jlc3RvcmVGb2N1c1dpdGhUb2tlbjooaWQgPE5TQ29weWluZywgTlNTZWN1cmVDb2Rp
bmc+KXRva2VuCkBAIC03NjkyLDEwICs3NzEwLDE0IEBAIC0gKHZvaWQpX3JlbW92ZUNvbnRleHRN
ZW51Vmlld0lmUG9zc2libGUKICAgICBpZiAoW19hY3Rpb25TaGVldEFzc2lzdGFudCBoYXNDb250
ZXh0TWVudUludGVyYWN0aW9uXSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgLy8gYW5k
IGZvciB0aGUgZmlsZSB1cGxvYWQgcGFuZWwuCisgICAgLy8gYW5kIGZvciB0aGUgZmlsZSB1cGxv
YWQgcGFuZWwuLi4KICAgICBpZiAoX2ZpbGVVcGxvYWRQYW5lbCkKICAgICAgICAgcmV0dXJuOwog
ICAgIAorICAgIC8vIGFuZCBmb3IgdGhlIGRhdGUvdGltZSBwaWNrZXIuCisgICAgaWYgKFtzZWxm
IGRhdGVUaW1lSW5wdXRDb250cm9sXSkKKyAgICAgICAgcmV0dXJuOworICAgIAogICAgIFtzdGQ6
OmV4Y2hhbmdlKF9jb250ZXh0TWVudUhpbnRDb250YWluZXJWaWV3LCBuaWwpIHJlbW92ZUZyb21T
dXBlcnZpZXddOwogfQogCkBAIC04MzExLDE2ICs4MzMzLDcgQEAgLSAoVUlWaWV3ICopaW5wdXRD
b250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVy
ICopY28KIAogLSAoTlNTdHJpbmcgKilpbnB1dExhYmVsVGV4dEZvclZpZXdDb250cm9sbGVyOihQ
VUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgogewotICAgIGlmICghX2Zv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24ubGFiZWwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
X2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24ubGFiZWw7Ci0KLSAgICBpZiAoIV9mb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uLmFyaWFMYWJlbC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBfZm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5hcmlhTGFiZWw7Ci0KLSAgICBpZiAoIV9mb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uLnRpdGxlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIF9mb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uLnRpdGxlOwotCi0gICAgcmV0dXJuIF9mb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uLnBsYWNlaG9sZGVyOworICAgIHJldHVybiBbc2VsZiBpbnB1dExhYmVsVGV4dF07
CiB9CiAKIC0gKE5TU3RyaW5nICopaW5pdGlhbFZhbHVlRm9yVmlld0NvbnRyb2xsZXI6KFBVSUNR
dWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCkBAIC04NjEyLDEwICs4NjI1LDEw
IEBAIC0gKHZvaWQpX2RvQWZ0ZXJSZWNlaXZpbmdFZGl0RHJhZ1NuYXBzaG90Rm9yVGVzdGluZzoo
ZGlzcGF0Y2hfYmxvY2tfdClhY3Rpb24KICAgICBhY3Rpb24oKTsKIH0KIAotLSAoV0tGb3JtSW5w
dXRDb250cm9sICopZm9ybUlucHV0Q29udHJvbAorLSAoV0tEYXRlVGltZUlucHV0Q29udHJvbCAq
KWRhdGVUaW1lSW5wdXRDb250cm9sCiB7Ci0gICAgaWYgKFtfaW5wdXRQZXJpcGhlcmFsIGlzS2lu
ZE9mQ2xhc3M6V0tGb3JtSW5wdXRDb250cm9sLmNsYXNzXSkKLSAgICAgICAgcmV0dXJuIChXS0Zv
cm1JbnB1dENvbnRyb2wgKilfaW5wdXRQZXJpcGhlcmFsLmdldCgpOworICAgIGlmIChbX2lucHV0
UGVyaXBoZXJhbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVJbnB1dENvbnRyb2wuY2xhc3NdKQor
ICAgICAgICByZXR1cm4gKFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wgKilfaW5wdXRQZXJpcGhlcmFs
LmdldCgpOwogICAgIHJldHVybiBuaWw7CiB9CiAKQEAgLTg2ODEsMTYgKzg2OTQsMTYgQEAgLSAo
dm9pZClzZXRUaW1lUGlja2VyVmFsdWVUb0hvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJ
bnRlZ2VyKW1pbnV0ZQogICAgIGlmIChbX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250
cm9sbGVyIGlzS2luZE9mQ2xhc3M6W1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyIGNsYXNzXV0p
CiAgICAgICAgIFsoV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIgKilfcHJlc2VudGVkRnVsbFNj
cmVlbklucHV0Vmlld0NvbnRyb2xsZXIuZ2V0KCkgc2V0SG91cjpob3VyIG1pbnV0ZTptaW51dGVd
OwogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoW19pbnB1dFBlcmlwaGVyYWwg
aXNLaW5kT2ZDbGFzczpbV0tGb3JtSW5wdXRDb250cm9sIGNsYXNzXV0pCi0gICAgICAgIFsoV0tG
b3JtSW5wdXRDb250cm9sICopX2lucHV0UGVyaXBoZXJhbC5nZXQoKSBzZXRUaW1lUGlja2VySG91
cjpob3VyIG1pbnV0ZTptaW51dGVdOworICAgIGlmIChbX2lucHV0UGVyaXBoZXJhbCBpc0tpbmRP
ZkNsYXNzOltXS0RhdGVUaW1lSW5wdXRDb250cm9sIGNsYXNzXV0pCisgICAgICAgIFsoV0tEYXRl
VGltZUlucHV0Q29udHJvbCAqKV9pbnB1dFBlcmlwaGVyYWwuZ2V0KCkgc2V0VGltZVBpY2tlckhv
dXI6aG91ciBtaW51dGU6bWludXRlXTsKICNlbmRpZgogfQogCiAtIChkb3VibGUpdGltZVBpY2tl
clZhbHVlSG91cgogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKFtfaW5wdXRQ
ZXJpcGhlcmFsIGlzS2luZE9mQ2xhc3M6W1dLRm9ybUlucHV0Q29udHJvbCBjbGFzc11dKQotICAg
ICAgICByZXR1cm4gWyhXS0Zvcm1JbnB1dENvbnRyb2wgKilfaW5wdXRQZXJpcGhlcmFsLmdldCgp
IHRpbWVQaWNrZXJWYWx1ZUhvdXJdOworICAgIGlmIChbX2lucHV0UGVyaXBoZXJhbCBpc0tpbmRP
ZkNsYXNzOltXS0RhdGVUaW1lSW5wdXRDb250cm9sIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBb
KFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wgKilfaW5wdXRQZXJpcGhlcmFsLmdldCgpIHRpbWVQaWNr
ZXJWYWx1ZUhvdXJdOwogI2VuZGlmCiAgICAgcmV0dXJuIC0xOwogfQpAQCAtODY5OCw4ICs4NzEx
LDggQEAgLSAoZG91YmxlKXRpbWVQaWNrZXJWYWx1ZUhvdXIKIC0gKGRvdWJsZSl0aW1lUGlja2Vy
VmFsdWVNaW51dGUKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmIChbX2lucHV0
UGVyaXBoZXJhbCBpc0tpbmRPZkNsYXNzOltXS0Zvcm1JbnB1dENvbnRyb2wgY2xhc3NdXSkKLSAg
ICAgICAgcmV0dXJuIFsoV0tGb3JtSW5wdXRDb250cm9sICopX2lucHV0UGVyaXBoZXJhbC5nZXQo
KSB0aW1lUGlja2VyVmFsdWVNaW51dGVdOworICAgIGlmIChbX2lucHV0UGVyaXBoZXJhbCBpc0tp
bmRPZkNsYXNzOltXS0RhdGVUaW1lSW5wdXRDb250cm9sIGNsYXNzXV0pCisgICAgICAgIHJldHVy
biBbKFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wgKilfaW5wdXRQZXJpcGhlcmFsLmdldCgpIHRpbWVQ
aWNrZXJWYWx1ZU1pbnV0ZV07CiAjZW5kaWYKICAgICByZXR1cm4gLTE7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJv
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENv
bnRyb2wuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44NGJjMTQ4ODViMjU2MGFiNGI4NDA5NzU1ZjQzZWYwNTgzN2Vh
YjM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgIldLRm9ybVBlcmlwaGVyYWxCYXNl
LmgiCisKK0BjbGFzcyBXS0NvbnRlbnRWaWV3OworCitAaW50ZXJmYWNlIFdLRGF0ZVRpbWVJbnB1
dENvbnRyb2wgOiBXS0Zvcm1QZXJpcGhlcmFsQmFzZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
VmlldzooV0tDb250ZW50VmlldyAqKXZpZXc7CitAZW5kCisKK0BpbnRlcmZhY2UgV0tEYXRlVGlt
ZUlucHV0Q29udHJvbCAoV0tUZXN0aW5nKQorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBOU1N0cmluZyAqZGF0ZVRpbWVQaWNrZXJDYWxlbmRhclR5cGU7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIGRvdWJsZSB0aW1lUGlja2VyVmFsdWVIb3VyOworQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBkb3VibGUgdGltZVBpY2tlclZhbHVlTWludXRlOworLSAodm9p
ZClzZXRUaW1lUGlja2VySG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWlu
dXRlOworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9s
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENv
bnRyb2wubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc0ODU1Y2VlYjdjMzhlYjNlZGI0MjY1MzU2NWM3YWEwNWQw
MTUzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLm1tCkBAIC0wLDAgKzEsNDYyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0RhdGVUaW1lSW5wdXRDb250cm9sLmgi
CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0ICJVc2VySW50ZXJmYWNlSWRp
b20uaCIKKyNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIKKyNpbXBvcnQgIldLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0IDxVSUtpdC9V
SUJhckJ1dHRvbkl0ZW0uaD4KKyNpbXBvcnQgPFVJS2l0L1VJRGF0ZVBpY2tlci5oPgorI2ltcG9y
dCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0BpbnRlcmZhY2UgV0tEYXRlVGltZUNvbnRl
eHRNZW51Vmlld0NvbnRyb2xsZXIgOiBVSVZpZXdDb250cm9sbGVyCitAZW5kCisKK0BpbnRlcmZh
Y2UgV0tEYXRlVGltZVBpY2tlciA6IE5TT2JqZWN0PFdLRm9ybUNvbnRyb2wKKyNpZiBVU0UoVUlD
T05URVhUTUVOVSkKKywgVUlDb250ZXh0TWVudUludGVyYWN0aW9uRGVsZWdhdGUKKyNlbmRpZgor
PiB7CisgICAgUmV0YWluUHRyPFVJRGF0ZVBpY2tlcj4gX2RhdGVQaWNrZXI7CisgICAgTlNTdHJp
bmcgKl9mb3JtYXRTdHJpbmc7CisgICAgTlNTdHJpbmcgKl9pbml0aWFsVmFsdWU7CisgICAgTlNU
aW1lSW50ZXJ2YWwgX2luaXRpYWxWYWx1ZUFzTnVtYmVyOworICAgIEJPT0wgX3Nob3VsZFJlbW92
ZVRpbWVab25lSW5mb3JtYXRpb247CisgICAgQk9PTCBfaXNUaW1lSW5wdXQ7CisgICAgV0tDb250
ZW50VmlldyAqX3ZpZXc7CisgICAgQ0dQb2ludCBfaW50ZXJhY3Rpb25Qb2ludDsKKyAgICBSZXRh
aW5QdHI8V0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXI+IF92aWV3Q29udHJvbGxl
cjsKKyNpZiBVU0UoVUlDT05URVhUTUVOVSkKKyAgICBSZXRhaW5QdHI8VUlDb250ZXh0TWVudUlu
dGVyYWN0aW9uPiBfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uOworI2VuZGlmCisgICAg
Qk9PTCBfcHJlc2VudGluZzsKKyAgICBCT09MIF9wcmVzZXJ2aW5nRm9jdXM7Cit9CistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBkYXRlUGlja2VyTW9k
ZTooVUlEYXRlUGlja2VyTW9kZSltb2RlOworLSAoV0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0Nv
bnRyb2xsZXIgKil2aWV3Q29udHJvbGxlcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNTdHJpbmcgKmNhbGVuZGFyVHlwZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgZG91YmxlIGhvdXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGRvdWJsZSBt
aW51dGU7CistICh2b2lkKXNldEhvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRlZ2Vy
KW1pbnV0ZTsKK0BlbmQKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxX
ZWJLaXRBZGRpdGlvbnMvV0tGb3JtSW5wdXRDb250cm9sQWRkaXRpb25zLm1tPgorI2VuZGlmCisK
KworQGltcGxlbWVudGF0aW9uIFdLRGF0ZVRpbWVDb250ZXh0TWVudVZpZXdDb250cm9sbGVyCisK
Ky0gKENHU2l6ZSlwcmVmZXJyZWRDb250ZW50U2l6ZQoreworICAgIHJldHVybiBbc2VsZi52aWV3
IHN5c3RlbUxheW91dFNpemVGaXR0aW5nU2l6ZTpVSUxheW91dEZpdHRpbmdDb21wcmVzc2VkU2l6
ZV07Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLRGF0ZVRpbWVQaWNrZXIKKworc3Rh
dGljIE5TU3RyaW5nICogY29uc3Qga0RhdGVGb3JtYXRTdHJpbmcgPSBAInl5eXktTU0tZGQiOyAv
LyAiMjAxMS0wMS0yNyIuCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBrTW9udGhGb3JtYXRTdHJp
bmcgPSBAInl5eXktTU0iOyAvLyAiMjAxMS0wMSIuCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBr
VGltZUZvcm1hdFN0cmluZyA9IEAiSEg6bW0iOyAvLyAiMTM6NDUiLgorc3RhdGljIGNvbnN0IE5T
VGltZUludGVydmFsIGtNaWxsaXNlY29uZHNQZXJTZWNvbmQgPSAxMDAwOworCisjaWYgIVVTRShB
UFBMRV9JTlRFUk5BTF9TREspICYmIEhBVkUoVUlEQVRFUElDS0VSX1NUWUxFKQorLSAoVUlEYXRl
UGlja2VyU3R5bGUpZGF0ZVBpY2tlclN0eWxlCit7CisgICAgcmV0dXJuIFVJRGF0ZVBpY2tlclN0
eWxlQXV0b21hdGljOworfQorI2VuZGlmCisKKy0gKGlkKWluaXRXaXRoVmlldzooV0tDb250ZW50
VmlldyAqKXZpZXcgZGF0ZVBpY2tlck1vZGU6KFVJRGF0ZVBpY2tlck1vZGUpbW9kZQoreworICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIF92
aWV3ID0gdmlldzsKKyAgICBfaW50ZXJhY3Rpb25Qb2ludCA9IFtfdmlldyBsYXN0SW50ZXJhY3Rp
b25Mb2NhdGlvbl07CisgICAgX3Nob3VsZFJlbW92ZVRpbWVab25lSW5mb3JtYXRpb24gPSBOTzsK
KyAgICBfaXNUaW1lSW5wdXQgPSBOTzsKKyAgICBzd2l0Y2ggKHZpZXcuZm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgeworICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlOgorICAg
ICAgICBfZm9ybWF0U3RyaW5nID0ga0RhdGVGb3JtYXRTdHJpbmc7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSW5wdXRUeXBlOjpNb250aDoKKyAgICAgICAgX2Zvcm1hdFN0cmluZyA9IGtNb250
aEZvcm1hdFN0cmluZzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnB1dFR5cGU6OlRpbWU6
CisgICAgICAgIF9mb3JtYXRTdHJpbmcgPSBrVGltZUZvcm1hdFN0cmluZzsKKyAgICAgICAgX2lz
VGltZUlucHV0ID0gWUVTOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElucHV0VHlwZTo6RGF0
ZVRpbWVMb2NhbDoKKyAgICAgICAgX3Nob3VsZFJlbW92ZVRpbWVab25lSW5mb3JtYXRpb24gPSBZ
RVM7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICAKKyAgICBfZGF0ZVBpY2tlciA9IGFkb3B0TlMoW1tVSURhdGVQaWNrZXIgYWxsb2NdIGlu
aXRdKTsKKworICAgIFtfZGF0ZVBpY2tlciBzZXREYXRlUGlja2VyTW9kZTptb2RlXTsKKyAgICBb
X2RhdGVQaWNrZXIgc2V0SGlkZGVuOk5PXTsKKyAgICAKKyNpZiBIQVZFKFVJREFURVBJQ0tFUl9T
VFlMRSkKKyAgICBbX2RhdGVQaWNrZXIgc2V0UHJlZmVycmVkRGF0ZVBpY2tlclN0eWxlOltzZWxm
IGRhdGVQaWNrZXJTdHlsZV1dOworI2VuZGlmCisgICAgaWYgKFtzZWxmIHNob3VsZFByZXNlbnRH
cmVnb3JpYW5DYWxlbmRhcjp2aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb25dKQorICAgICAg
ICBfZGF0ZVBpY2tlci5nZXQoKS5jYWxlbmRhciA9IFtOU0NhbGVuZGFyIGNhbGVuZGFyV2l0aElk
ZW50aWZpZXI6TlNDYWxlbmRhcklkZW50aWZpZXJHcmVnb3JpYW5dOworICAgIAorICAgIFtfZGF0
ZVBpY2tlciBhZGRUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF9kYXRlQ2hhbmdlSGFuZGxl
cjopIGZvckNvbnRyb2xFdmVudHM6VUlDb250cm9sRXZlbnRWYWx1ZUNoYW5nZWRdOworICAgIAor
ICAgIHJldHVybiBzZWxmOworfQorCisjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCisKKy0gKFVJVGFy
Z2V0ZWRQcmV2aWV3ICopY29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVy
YWN0aW9uICopaW50ZXJhY3Rpb24gcHJldmlld0ZvckhpZ2hsaWdodGluZ01lbnVXaXRoQ29uZmln
dXJhdGlvbjooVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCit7Cisg
ICAgcmV0dXJuIFtfdmlldyBfY3JlYXRlVGFyZ2V0ZWRDb250ZXh0TWVudUhpbnRQcmV2aWV3SWZQ
b3NzaWJsZV07Cit9CisKKy0gKF9VSUNvbnRleHRNZW51U3R5bGUgKilfY29udGV4dE1lbnVJbnRl
cmFjdGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gc3R5bGVGb3JN
ZW51V2l0aENvbmZpZ3VyYXRpb246KFVJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uICopY29uZmln
dXJhdGlvbgoreworICAgIF9VSUNvbnRleHRNZW51U3R5bGUgKnN0eWxlID0gW19VSUNvbnRleHRN
ZW51U3R5bGUgZGVmYXVsdFN0eWxlXTsKKyAgICBzdHlsZS5oYXNJbnRlcmFjdGl2ZVByZXZpZXcg
PSBZRVM7CisgICAgc3R5bGUucHJlZmVycmVkTGF5b3V0ID0gX1VJQ29udGV4dE1lbnVMYXlvdXRB
dXRvbWF0aWM7CisgICAgcmV0dXJuIHN0eWxlOworfQorCistIChVSUNvbnRleHRNZW51Q29uZmln
dXJhdGlvbiAqKWNvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlv
biAqKWludGVyYWN0aW9uIGNvbmZpZ3VyYXRpb25Gb3JNZW51QXRMb2NhdGlvbjooQ0dQb2ludCls
b2NhdGlvbgoreworICAgIHJldHVybiBbVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbldpdGhJZGVudGlmaWVyOkAiX1VJRGF0ZVBpY2tlckNvbXBhY3RFZGl0b3IiIHByZXZp
ZXdQcm92aWRlcjpeeworCisgICAgICAgIF92aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXS0Rh
dGVUaW1lQ29udGV4dE1lbnVWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgICAgICBS
ZXRhaW5QdHI8VUlOYXZpZ2F0aW9uQ29udHJvbGxlcj4gbmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBh
ZG9wdE5TKFtbVUlOYXZpZ2F0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhSb290Vmlld0Nv
bnRyb2xsZXI6X3ZpZXdDb250cm9sbGVyLmdldCgpXSk7CisgICAgICAgIE5TU3RyaW5nICpyZXNl
dFN0cmluZyA9IFdFQl9VSV9TVFJJTkdfS0VZKCJSZXNldCIsICJSZXNldCBCdXR0b24gRGF0ZS9U
aW1lIENvbnRleHQgTWVudSIsICJSZXNldCBidXR0b24gaW4gZGF0ZSBpbnB1dCBjb250ZXh0IG1l
bnUiKTsKKworICAgICAgICBSZXRhaW5QdHI8VUlCYXJCdXR0b25JdGVtPiBibGFua0JhckJ1dHRv
biA9IFtbVUlCYXJCdXR0b25JdGVtIGFsbG9jXSBpbml0V2l0aEJhckJ1dHRvblN5c3RlbUl0ZW06
VUlCYXJCdXR0b25TeXN0ZW1JdGVtRmxleGlibGVTcGFjZSB0YXJnZXQ6bmlsIGFjdGlvbjpuaWxd
OworICAgICAgICBSZXRhaW5QdHI8VUlCYXJCdXR0b25JdGVtPiByZXNldEJhckJ1dHRvbiA9IFtb
VUlCYXJCdXR0b25JdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOnJlc2V0U3RyaW5nIHN0eWxlOlVJ
QmFyQnV0dG9uSXRlbVN0eWxlUGxhaW4gdGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihyZXNl
dDopXTsKKyAgICAgICAgCisgICAgICAgIFtfdmlld0NvbnRyb2xsZXIgc2V0VG9vbGJhckl0ZW1z
OkBbYmxhbmtCYXJCdXR0b24uZ2V0KCksIHJlc2V0QmFyQnV0dG9uLmdldCgpXV07CisgICAgICAg
IFtuYXZpZ2F0aW9uQ29udHJvbGxlciBzZXRUb29sYmFySGlkZGVuOk5PXTsKKworICAgICAgICBb
X3ZpZXdDb250cm9sbGVyIHNldFZpZXc6X2RhdGVQaWNrZXIuZ2V0KCldOworCisgICAgICAgIE5T
U3RyaW5nICp0aXRsZVRleHQgPSBfdmlldy5pbnB1dExhYmVsVGV4dDsKKyAgICAgICAgaWYgKCFb
dGl0bGVUZXh0IGlzRXF1YWw6QCIiXSkgeworICAgICAgICAgICAgUmV0YWluUHRyPFVJTGFiZWw+
IHRpdGxlID0gW1tVSUxhYmVsIGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIFt0aXRsZSBzZXRG
b250OltVSUZvbnQgcHJlZmVycmVkRm9udEZvclRleHRTdHlsZTpVSUZvbnRUZXh0U3R5bGVGb290
bm90ZV1dOworICAgICAgICAgICAgW3RpdGxlIHNldFRleHQ6dGl0bGVUZXh0XTsKKyAgICAgICAg
ICAgIFt0aXRsZSBzZXRUZXh0Q29sb3I6W1VJQ29sb3Igc2Vjb25kYXJ5TGFiZWxDb2xvcl1dOwor
ICAgICAgICAgICAgW3RpdGxlIHNldFRleHRBbGlnbm1lbnQ6TlNUZXh0QWxpZ25tZW50TmF0dXJh
bF07CisgICAgICAgICAgICBSZXRhaW5QdHI8VUlCYXJCdXR0b25JdGVtPiB0aXRsZUJ1dHRvbiA9
IFtbVUlCYXJCdXR0b25JdGVtIGFsbG9jXSBpbml0V2l0aEN1c3RvbVZpZXc6dGl0bGUuZ2V0KCld
OworICAgICAgICAgICAgW192aWV3Q29udHJvbGxlciBuYXZpZ2F0aW9uSXRlbV0ubGVmdEJhckJ1
dHRvbkl0ZW0gPSB0aXRsZUJ1dHRvbi5nZXQoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBbbmF2aWdhdGlvbkNvbnRyb2xsZXIgc2V0TmF2aWdhdGlvbkJhckhpZGRlbjpZRVMgYW5pbWF0
ZWQ6Tk9dOworICAgICAgICAKKyAgICAgICAgW25hdmlnYXRpb25Db250cm9sbGVyIG5hdmlnYXRp
b25CYXJdLmJhY2tncm91bmRDb2xvciA9IFVJQ29sb3IuY2xlYXJDb2xvcjsKKyAgICAgICAgW25h
dmlnYXRpb25Db250cm9sbGVyIG5hdmlnYXRpb25CYXJdLnRyYW5zbHVjZW50ID0gTk87CisgICAg
ICAgIFtuYXZpZ2F0aW9uQ29udHJvbGxlciB0b29sYmFyXS5iYWNrZ3JvdW5kQ29sb3IgPSBVSUNv
bG9yLmNsZWFyQ29sb3I7CisgICAgICAgIFtuYXZpZ2F0aW9uQ29udHJvbGxlciB0b29sYmFyXS50
cmFuc2x1Y2VudCA9IE5POworICAgICAgICByZXR1cm4gbmF2aWdhdGlvbkNvbnRyb2xsZXIuZ2V0
KCk7CisgICAgfSBhY3Rpb25Qcm92aWRlcjpuaWxdOworfQorCistICh2b2lkKWNvbnRleHRNZW51
SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHdpbGxF
bmRGb3JDb25maWd1cmF0aW9uOihVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3Vy
YXRpb24gYW5pbWF0b3I6KGlkPFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbkFuaW1hdGluZz4pYW5p
bWF0b3IKK3sKKyAgICBbYW5pbWF0b3IgYWRkQ29tcGxldGlvbjpeeworICAgICAgICBbX3ZpZXcg
YWNjZXNzb3J5RG9uZV07CisgICAgfV07Cit9CisKKy0gKHZvaWQpcmVtb3ZlQ29udGV4dE1lbnVJ
bnRlcmFjdGlvbgoreworICAgIGlmIChfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uKSB7
CisgICAgICAgIFtfdmlldyByZW1vdmVJbnRlcmFjdGlvbjpfZGF0ZVRpbWVDb250ZXh0TWVudUlu
dGVyYWN0aW9uLmdldCgpXTsKKyAgICAgICAgX2RhdGVUaW1lQ29udGV4dE1lbnVJbnRlcmFjdGlv
biA9IG5pbDsKKyAgICAgICAgW192aWV3IF9yZW1vdmVDb250ZXh0TWVudVZpZXdJZlBvc3NpYmxl
XTsKKyAgICB9Cit9CisKKy0gKHZvaWQpZW5zdXJlQ29udGV4dE1lbnVJbnRlcmFjdGlvbgorewor
ICAgIGlmICghX2RhdGVUaW1lQ29udGV4dE1lbnVJbnRlcmFjdGlvbikgeworICAgICAgICBfZGF0
ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uID0gYWRvcHROUyhbW1VJQ29udGV4dE1lbnVJbnRl
cmFjdGlvbiBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZTpzZWxmXSk7CisgICAgICAgIFtfdmlldyBh
ZGRJbnRlcmFjdGlvbjpfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uLmdldCgpXTsKKyAg
ICB9Cit9CisKKy0gKHZvaWQpc2hvd0RhdGVUaW1lUGlja2VyCit7CisjaWYgSEFWRShVSUNPTlRF
WFRNRU5VX0xPQ0FUSU9OKQorICAgIFtzZWxmIGVuc3VyZUNvbnRleHRNZW51SW50ZXJhY3Rpb25d
OworICAgIFtfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uIF9wcmVzZW50TWVudUF0TG9j
YXRpb246X2ludGVyYWN0aW9uUG9pbnRdOworI2VuZGlmCit9CisKKyNlbmRpZgorCistICh2b2lk
KXJlc2V0OihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBzZXREYXRlVGltZVBpY2tlclRvSW5pdGlh
bFZhbHVlXTsKKyAgICBbX3ZpZXcgcGFnZV0tPnNldEZvY3VzZWRFbGVtZW50VmFsdWUoU3RyaW5n
KCkpOworfQorCistIChOU1N0cmluZyAqKWNhbGVuZGFyVHlwZQoreworICAgIHJldHVybiBbX2Rh
dGVQaWNrZXIgY2FsZW5kYXJdLmNhbGVuZGFySWRlbnRpZmllcjsKK30KKworLSAoZG91YmxlKWhv
dXIKK3sKKyAgICBOU0NhbGVuZGFyICpjYWxlbmRhciA9IFtOU0NhbGVuZGFyIGN1cnJlbnRDYWxl
bmRhcl07CisgICAgTlNEYXRlQ29tcG9uZW50cyAqY29tcG9uZW50cyA9IFtjYWxlbmRhciBjb21w
b25lbnRzOk5TQ2FsZW5kYXJVbml0SG91ciBmcm9tRGF0ZTpbX2RhdGVQaWNrZXIgZGF0ZV1dOwor
CisgICAgcmV0dXJuIFtjb21wb25lbnRzIGhvdXJdOworfQorCistIChkb3VibGUpbWludXRlCit7
CisgICAgTlNDYWxlbmRhciAqY2FsZW5kYXIgPSBbTlNDYWxlbmRhciBjdXJyZW50Q2FsZW5kYXJd
OworICAgIE5TRGF0ZUNvbXBvbmVudHMgKmNvbXBvbmVudHMgPSBbY2FsZW5kYXIgY29tcG9uZW50
czpOU0NhbGVuZGFyVW5pdE1pbnV0ZSBmcm9tRGF0ZTpbX2RhdGVQaWNrZXIgZGF0ZV1dOworCisg
ICAgcmV0dXJuIFtjb21wb25lbnRzIG1pbnV0ZV07Cit9CisKKy0gKHZvaWQpZGVhbGxvYworewor
ICAgIFtfZGF0ZVBpY2tlciByZW1vdmVUYXJnZXQ6c2VsZiBhY3Rpb246TlVMTCBmb3JDb250cm9s
RXZlbnRzOlVJQ29udHJvbEV2ZW50VmFsdWVDaGFuZ2VkXTsKKyAgICBbc2VsZiByZW1vdmVDb250
ZXh0TWVudUludGVyYWN0aW9uXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKEJPT0wp
c2hvdWxkUHJlc2VudEdyZWdvcmlhbkNhbGVuZGFyOihjb25zdCBGb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uJilub2RlSW5mbworeworICAgIHJldHVybiBub2RlSW5mby5hdXRvZmlsbEZpZWxkTmFt
ZSA9PSBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Q2NFeHBNb250aAorICAgICAgICB8fCBu
b2RlSW5mby5hdXRvZmlsbEZpZWxkTmFtZSA9PSBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6
Q2NFeHAKKyAgICAgICAgfHwgbm9kZUluZm8uYXV0b2ZpbGxGaWVsZE5hbWUgPT0gV2ViQ29yZTo6
QXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwWWVhcjsKK30KKworLSAoVUlWaWV3ICopY29udHJvbFZp
ZXcKK3sKKyAgICByZXR1cm4gX2RhdGVQaWNrZXIuZ2V0KCk7Cit9CisKKy0gKE5TSW50ZWdlcilf
dGltZVpvbmVPZmZzZXRGcm9tR01UOihOU0RhdGUgKilkYXRlCit7CisgICAgaWYgKCFfc2hvdWxk
UmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gW19kYXRlUGlja2VyLmdldCgpLnRpbWVab25lIHNlY29uZHNGcm9tR01URm9yRGF0ZTpkYXRl
XTsKK30KKworLSAoTlNTdHJpbmcgKilfc2FuaXRpemVJbnB1dFZhbHVlRm9yRm9ybWF0dGVyOihO
U1N0cmluZyAqKXZhbHVlCit7CisgICAgLy8gVGhlICJ0aW1lIiBpbnB1dCB0eXBlIG1heSBoYXZl
IHNlY29uZHMgYW5kIG1pbGxpc2Vjb25kcyBpbmZvcm1hdGlvbiB3aGljaCB3ZQorICAgIC8vIGp1
c3QgaWdub3JlLiBGb3IgZXhhbXBsZTogIjAxOjU2OjIwLjM5MSIgaXMgc2hvcnRlbmVkIHRvIGp1
c3QgIjAxOjU2Ii4KKyAgICBpZiAoX2lzVGltZUlucHV0KQorICAgICAgICByZXR1cm4gW3ZhbHVl
IHN1YnN0cmluZ1RvSW5kZXg6W2tUaW1lRm9ybWF0U3RyaW5nIGxlbmd0aF1dOworCisgICAgcmV0
dXJuIHZhbHVlOworfQorCistICh2b2lkKV9kYXRlQ2hhbmdlZFNldEFzTnVtYmVyCit7CisgICAg
TlNEYXRlICpkYXRlID0gW19kYXRlUGlja2VyIGRhdGVdOworICAgIFtfdmlldyB1cGRhdGVGb2N1
c2VkRWxlbWVudFZhbHVlQXNOdW1iZXI6KFtkYXRlIHRpbWVJbnRlcnZhbFNpbmNlMTk3MF0gKyBb
c2VsZiBfdGltZVpvbmVPZmZzZXRGcm9tR01UOmRhdGVdKSAqIGtNaWxsaXNlY29uZHNQZXJTZWNv
bmRdOworfQorCistIChSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPilkYXRlRm9ybWF0dGVyRm9y
UGlja2VyCit7CisgICAgUmV0YWluUHRyPE5TTG9jYWxlPiBlbmdsaXNoTG9jYWxlID0gYWRvcHRO
UyhbW05TTG9jYWxlIGFsbG9jXSBpbml0V2l0aExvY2FsZUlkZW50aWZpZXI6QCJlbl9VU19QT1NJ
WCJdKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBkYXRlRm9ybWF0dGVyID0gYWRv
cHROUyhbW05TRGF0ZUZvcm1hdHRlciBhbGxvY10gaW5pdF0pOworICAgIFtkYXRlRm9ybWF0dGVy
IHNldFRpbWVab25lOl9kYXRlUGlja2VyLmdldCgpLnRpbWVab25lXTsKKyAgICBbZGF0ZUZvcm1h
dHRlciBzZXREYXRlRm9ybWF0Ol9mb3JtYXRTdHJpbmddOworICAgIFtkYXRlRm9ybWF0dGVyIHNl
dExvY2FsZTplbmdsaXNoTG9jYWxlLmdldCgpXTsKKyAgICByZXR1cm4gZGF0ZUZvcm1hdHRlcjsK
K30KKworLSAodm9pZClfZGF0ZUNoYW5nZWRTZXRBc1N0cmluZworeworICAgIC8vIEZvcmNlIEVu
Z2xpc2ggbG9jYWxlIGJlY2F1c2UgdGhhdCBpcyB3aGF0IEhUTUw1IHZhbHVlIHBhcnNpbmcgZXhw
ZWN0cy4KKyAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBkYXRlRm9ybWF0dGVyID0gW3Nl
bGYgZGF0ZUZvcm1hdHRlckZvclBpY2tlcl07CisgICAgW192aWV3IHVwZGF0ZUZvY3VzZWRFbGVt
ZW50VmFsdWU6W2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6W19kYXRlUGlja2VyIGRhdGVd
XV07Cit9CisKKy0gKHZvaWQpX2RhdGVDaGFuZ2VkCit7CisgICAgLy8gSW50ZXJuYWxseSwgRE9N
SFRNTElucHV0RWxlbWVudCBzZXRWYWx1ZUFzKiBlYWNoIHRha2UgZGlmZmVyZW50IHZhbHVlcyBm
b3IKKyAgICAvLyBkaWZmZXJlbnQgZGF0ZSB0eXBlcy4gSXQgaXMgc29tZXRpbWVzIGVhc2llciB0
byBzZXQgdGhlIGRhdGUgaW4gZGlmZmVyZW50IHdheXM6CisgICAgLy8gICAtIHVzZSBzZXRWYWx1
ZUFzU3RyaW5nIGZvciAiZGF0ZSIsICJtb250aCIsIGFuZCAidGltZSIuCisgICAgLy8gICAtIHVz
ZSBzZXRWYWx1ZUFzTnVtYmVyIGZvciAiZGF0ZXRpbWUtbG9jYWwiLgorICAgIGlmIChfZm9ybWF0
U3RyaW5nKQorICAgICAgICBbc2VsZiBfZGF0ZUNoYW5nZWRTZXRBc1N0cmluZ107CisgICAgZWxz
ZQorICAgICAgICBbc2VsZiBfZGF0ZUNoYW5nZWRTZXRBc051bWJlcl07Cit9CisKKy0gKHZvaWQp
X2RhdGVDaGFuZ2VIYW5kbGVyOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBfZGF0ZUNoYW5nZWRd
OworfQorCistICh2b2lkKXNldERhdGVUaW1lUGlja2VyVG9Jbml0aWFsVmFsdWUKK3sKKyAgICBp
ZiAoW19pbml0aWFsVmFsdWUgaXNFcXVhbDogQCIiXSkgeworICAgICAgICBbX2RhdGVQaWNrZXIg
c2V0RGF0ZTpbTlNEYXRlIGRhdGVdXTsKKyAgICAgICAgW3NlbGYgX2RhdGVDaGFuZ2VkXTsKKyAg
ICB9IGVsc2UgaWYgKF9mb3JtYXRTdHJpbmcpIHsKKyAgICAgICAgLy8gQ29udmVydCB0aGUgc3Ry
aW5nIHZhbHVlIHRvIGEgZGF0ZSBvYmplY3QgZm9yIHRoZSBmaWVsZHMgd2hlcmUgd2UgaGF2ZSBh
IGZvcm1hdCBzdHJpbmcuCisgICAgICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGRhdGVG
b3JtYXR0ZXIgPSBbc2VsZiBkYXRlRm9ybWF0dGVyRm9yUGlja2VyXTsKKyAgICAgICAgTlNEYXRl
ICpwYXJzZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgZGF0ZUZyb21TdHJpbmc6W3NlbGYgX3Nhbml0
aXplSW5wdXRWYWx1ZUZvckZvcm1hdHRlcjpfaW5pdGlhbFZhbHVlXV07CisgICAgICAgIFtfZGF0
ZVBpY2tlciBzZXREYXRlOnBhcnNlZERhdGUgPyBwYXJzZWREYXRlIDogW05TRGF0ZSBkYXRlXV07
CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gQ29udmVydCB0aGUgbnVtYmVyIHZhbHVlIHRvIGEg
ZGF0ZSBvYmplY3QgZm9yIHRoZSBmaWVsZHMgYWZmZWN0ZWQgYnkgdGltZXpvbmVzLgorICAgICAg
ICBOU1RpbWVJbnRlcnZhbCBzZWNvbmRzU2luY2UxOTcwID0gX2luaXRpYWxWYWx1ZUFzTnVtYmVy
IC8ga01pbGxpc2Vjb25kc1BlclNlY29uZDsKKyAgICAgICAgTlNJbnRlZ2VyIHRpbWVab25lT2Zm
c2V0ID0gW3NlbGYgX3RpbWVab25lT2Zmc2V0RnJvbUdNVDpbTlNEYXRlIGRhdGVXaXRoVGltZUlu
dGVydmFsU2luY2UxOTcwOnNlY29uZHNTaW5jZTE5NzBdXTsKKyAgICAgICAgTlNUaW1lSW50ZXJ2
YWwgYWRqdXN0ZWRTZWNvbmRzU2luY2UxOTcwID0gc2Vjb25kc1NpbmNlMTk3MCAtIHRpbWVab25l
T2Zmc2V0OworICAgICAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpbTlNEYXRlIGRhdGVXaXRoVGlt
ZUludGVydmFsU2luY2UxOTcwOmFkanVzdGVkU2Vjb25kc1NpbmNlMTk3MF1dOworICAgIH0KK30K
KworLSAodm9pZCljb250cm9sQmVnaW5FZGl0aW5nCit7CisgICAgCisgICAgaWYgKF9wcmVzZW50
aW5nKQorICAgICAgICByZXR1cm47CisgICAgX3ByZXNlbnRpbmcgPSBZRVM7CisKKyAgICBpZiAo
IV9wcmVzZXJ2aW5nRm9jdXMgJiYgKF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxl
bWVudFR5cGUgPT0gSW5wdXRUeXBlOjpUaW1lIHx8IF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24uZWxlbWVudFR5cGUgPT0gSW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsKSkgeworICAgICAg
ICBbX3ZpZXcgcHJlc2VydmVGb2N1c107CisgICAgICAgIF9wcmVzZXJ2aW5nRm9jdXMgPSBZRVM7
CisgICAgfQorICAgIAorICAgIC8vIFNldCB0aGUgdGltZSB6b25lIGluIGNhc2UgaXQgY2hhbmdl
ZC4KKyAgICBfZGF0ZVBpY2tlci5nZXQoKS50aW1lWm9uZSA9IFtOU1RpbWVab25lIGxvY2FsVGlt
ZVpvbmVdOworCisgICAgLy8gQ3VycmVudGx5IG5vIHZhbHVlIGZvciB0aGUgPGlucHV0Pi4gU3Rh
cnQgdGhlIHBpY2tlciB3aXRoIHRoZSBjdXJyZW50IHRpbWUuCisgICAgLy8gQWxzbywgdXBkYXRl
IHRoZSBhY3R1YWwgPGlucHV0PiB2YWx1ZS4KKyAgICBfaW5pdGlhbFZhbHVlID0gX3ZpZXcuZm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbi52YWx1ZTsKKyAgICBfaW5pdGlhbFZhbHVlQXNOdW1iZXIg
PSBfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnZhbHVlQXNOdW1iZXI7CisgICAgW3Nl
bGYgc2V0RGF0ZVRpbWVQaWNrZXJUb0luaXRpYWxWYWx1ZV07CisgICAgCisgICAgV2ViS2l0OjpJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCBwb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdCB7
IFdlYkNvcmU6OkludFBvaW50KF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24ubGFzdElu
dGVyYWN0aW9uTG9jYXRpb24pIH07CisgICAgW192aWV3IGRvQWZ0ZXJQb3NpdGlvbkluZm9ybWF0
aW9uVXBkYXRlOl4oV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBpbnRl
cmFjdGlvbkluZm9ybWF0aW9uKSB7CisgICAgICAgIFtzZWxmIHNob3dEYXRlVGltZVBpY2tlcl07
CisgICAgfSBmb3JSZXF1ZXN0OnBvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0XTsKKworfQorCist
ICh2b2lkKXNldEhvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZQor
eworICAgIE5TU3RyaW5nICp0aW1lU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCIlLjJsZDolLjJsZCIsIChsb25nKWhvdXIsIChsb25nKW1pbnV0ZV07CisgICAgW19kYXRlUGlj
a2VyIHNldERhdGU6W1tzZWxmIGRhdGVGb3JtYXR0ZXJGb3JQaWNrZXJdIGRhdGVGcm9tU3RyaW5n
OnRpbWVTdHJpbmddXTsKKyAgICBbc2VsZiBfZGF0ZUNoYW5nZWRdOworfQorCistIChXS0RhdGVU
aW1lQ29udGV4dE1lbnVWaWV3Q29udHJvbGxlciAqKXZpZXdDb250cm9sbGVyCit7CisgICAgcmV0
dXJuIF92aWV3Q29udHJvbGxlci5nZXQoKTsKK30KKworLSAodm9pZCljb250cm9sRW5kRWRpdGlu
ZworeworICAgIF9wcmVzZW50aW5nID0gTk87CisgICAgaWYgKF9wcmVzZXJ2aW5nRm9jdXMpIHsK
KyAgICAgICAgW192aWV3IHJlbGVhc2VGb2N1c107CisgICAgICAgIF9wcmVzZXJ2aW5nRm9jdXMg
PSBOTzsKKyAgICB9CisgICAgW3NlbGYgcmVtb3ZlQ29udGV4dE1lbnVJbnRlcmFjdGlvbl07Cit9
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0RhdGVUaW1lSW5wdXRDb250cm9sCisKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3Cit7CisgICAgVUlE
YXRlUGlja2VyTW9kZSBtb2RlOworCisgICAgc3dpdGNoICh2aWV3LmZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24uZWxlbWVudFR5cGUpIHsKKyAgICBjYXNlIElucHV0VHlwZTo6RGF0ZToKKyAgICAg
ICAgbW9kZSA9IFVJRGF0ZVBpY2tlck1vZGVEYXRlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IElucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICAgICAgbW9kZSA9IFVJRGF0ZVBpY2tlck1v
ZGVEYXRlQW5kVGltZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnB1dFR5cGU6OlRpbWU6
CisgICAgICAgIG1vZGUgPSBVSURhdGVQaWNrZXJNb2RlVGltZTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJbnB1dFR5cGU6Ok1vbnRoOgorICAgICAgICBtb2RlID0gKFVJRGF0ZVBpY2tlck1v
ZGUpVUlEYXRlUGlja2VyTW9kZVllYXJBbmRNb250aDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgW3NlbGYgcmVsZWFzZV07CisgICAgICAgIHJldHVybiBuaWw7CisgICAg
fQorCisgICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aFZpZXc6dmlldyBjb250cm9sOmFkb3B0TlMo
W1tXS0RhdGVUaW1lUGlja2VyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlldyBkYXRlUGlja2VyTW9k
ZTptb2RlXSldOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0RhdGVUaW1lSW5wdXRD
b250cm9sIChXS1Rlc3RpbmcpCisKKy0gKHZvaWQpc2V0VGltZVBpY2tlckhvdXI6KE5TSW50ZWdl
cilob3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZQoreworICAgIGlmIChbc2VsZi5jb250cm9s
IGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBpY2tlci5jbGFzc10pCisgICAgICAgIFsoV0tEYXRl
VGltZVBpY2tlciAqKXNlbGYuY29udHJvbCBzZXRIb3VyOmhvdXIgbWludXRlOm1pbnV0ZV07Cit9
CisKKy0gKE5TU3RyaW5nICopZGF0ZVRpbWVQaWNrZXJDYWxlbmRhclR5cGUKK3sKKyAgICBpZiAo
W3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQaWNrZXIuY2xhc3NdKQorICAg
ICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUGlja2VyICopc2VsZi5jb250cm9sIGNhbGVuZGFyVHlw
ZV07CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoZG91YmxlKXRpbWVQaWNrZXJWYWx1ZUhvdXIK
K3sKKyAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQaWNrZXIu
Y2xhc3NdKQorICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUGlja2VyICopc2VsZi5jb250cm9s
IGhvdXJdOworICAgIHJldHVybiAtMTsKK30KKworLSAoZG91YmxlKXRpbWVQaWNrZXJWYWx1ZU1p
bnV0ZQoreworICAgIGlmIChbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBp
Y2tlci5jbGFzc10pCisgICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVQaWNrZXIgKilzZWxmLmNv
bnRyb2wgbWludXRlXTsKKyAgICByZXR1cm4gLTE7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDY3NWExMjRiOWVmMzk2YzA4MGYzOGJlNjU5NmZhNzM4YTdjYzg1YjAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0jaW1wb3J0
ICJXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oIgotCi1AY2xhc3MgV0tDb250ZW50VmlldzsKLQotQGlu
dGVyZmFjZSBXS0Zvcm1JbnB1dENvbnRyb2wgOiBXS0Zvcm1QZXJpcGhlcmFsQmFzZQotLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXc7Ci1AZW5kCi0KLUBp
bnRlcmZhY2UgV0tGb3JtSW5wdXRDb250cm9sIChXS1Rlc3RpbmcpCi1AcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpkYXRlVGltZVBpY2tlckNhbGVuZGFyVHlwZTsKLUBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgZG91YmxlIHRpbWVQaWNrZXJWYWx1ZUhvdXI7
Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGRvdWJsZSB0aW1lUGlja2VyVmFsdWVN
aW51dGU7Ci0tICh2b2lkKXNldFRpbWVQaWNrZXJIb3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6
KE5TSW50ZWdlciltaW51dGU7Ci1AZW5kCi0KLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlu
cHV0Q29udHJvbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1J
bnB1dENvbnRyb2wubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MTAwOWE5NGEy
M2VmMDViZWU0MzUwMzUxOTQxODkwZmVmMWIzNjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
Rm9ybUlucHV0Q29udHJvbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDUwMiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXS0Zvcm1JbnB1dENvbnRyb2wu
aCIKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLSNpbXBvcnQgIlVzZXJJbnRlcmZhY2VJ
ZGlvbS5oIgotI2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgotI2ltcG9ydCAiV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLmgiCi0jaW1wb3J0ICJXS0Zvcm1Qb3BvdmVyLmgiCi0jaW1wb3J0ICJXZWJQ
YWdlUHJveHkuaCIKLSNpbXBvcnQgPFVJS2l0L1VJQmFyQnV0dG9uSXRlbS5oPgotI2ltcG9ydCA8
VUlLaXQvVUlEYXRlUGlja2VyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3Mu
aD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
LQotQGludGVyZmFjZSBXS0RhdGVUaW1lUG9wb3ZlclZpZXdDb250cm9sbGVyIDogVUlWaWV3Q29u
dHJvbGxlciB7Ci0gICAgUmV0YWluUHRyPE5TT2JqZWN0PFdLRm9ybUNvbnRyb2w+PiBfaW5uZXJD
b250cm9sOwotfQotLSAoaWQpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBkYXRl
UGlja2VyTW9kZTooVUlEYXRlUGlja2VyTW9kZSlkYXRlUGlja2VyTW9kZTsKLS0gKE5TT2JqZWN0
PFdLRm9ybUNvbnRyb2w+ICopaW5uZXJDb250cm9sOwotQGVuZAotCi1AaW50ZXJmYWNlIFdLRGF0
ZVRpbWVQb3BvdmVyIDogV0tGb3JtUm90YXRpbmdBY2Nlc3NvcnlQb3BvdmVyPFdLRm9ybUNvbnRy
b2w+IHsKLSAgICBSZXRhaW5QdHI8V0tEYXRlVGltZVBvcG92ZXJWaWV3Q29udHJvbGxlcj4gX3Zp
ZXdDb250cm9sbGVyOwotICAgIFdLQ29udGVudFZpZXcgKl92aWV3OwotICAgIEJPT0wgX3ByZXNl
bnRpbmc7Ci0gICAgQk9PTCBfcHJlc2VydmluZ0ZvY3VzOwotfQotLSAoaWQpaW5pdFdpdGhWaWV3
OihXS0NvbnRlbnRWaWV3ICopdmlldyBkYXRlUGlja2VyTW9kZTooVUlEYXRlUGlja2VyTW9kZSlt
b2RlOwotLSAoV0tEYXRlVGltZVBvcG92ZXJWaWV3Q29udHJvbGxlciAqKXZpZXdDb250cm9sbGVy
OwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqY2FsZW5kYXJUeXBl
OwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBkb3VibGUgaG91cjsKLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgZG91YmxlIG1pbnV0ZTsKLS0gKHZvaWQpc2V0SG91cjoo
TlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlOwotQGVuZAotCi1AaW50ZXJm
YWNlIFdLRGF0ZVRpbWVQaWNrZXIgOiBOU09iamVjdDxXS0Zvcm1Db250cm9sPiB7Ci0gICAgUmV0
YWluUHRyPFVJRGF0ZVBpY2tlcj4gX2RhdGVQaWNrZXI7Ci0gICAgTlNTdHJpbmcgKl9mb3JtYXRT
dHJpbmc7Ci0gICAgQk9PTCBfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbjsKLSAgICBC
T09MIF9pc1RpbWVJbnB1dDsKLSAgICBXS0NvbnRlbnRWaWV3KiBfdmlldzsKLX0KLS0gKGlkKWlu
aXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgZGF0ZVBpY2tlck1vZGU6KFVJRGF0ZVBp
Y2tlck1vZGUpbW9kZTsKLS0gKFVJRGF0ZVBpY2tlciAqKWRhdGVQaWNrZXI7Ci0KLUBlbmQKLQot
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV0tG
b3JtSW5wdXRDb250cm9sQWRkaXRpb25zLm1tPgotI2VuZGlmCi0KLUBpbXBsZW1lbnRhdGlvbiBX
S0RhdGVUaW1lUGlja2VyCi0KLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGtEYXRlRm9ybWF0U3Ry
aW5nID0gQCJ5eXl5LU1NLWRkIjsgLy8gIjIwMTEtMDEtMjciLgotc3RhdGljIE5TU3RyaW5nICog
Y29uc3Qga01vbnRoRm9ybWF0U3RyaW5nID0gQCJ5eXl5LU1NIjsgLy8gIjIwMTEtMDEiLgotc3Rh
dGljIE5TU3RyaW5nICogY29uc3Qga1RpbWVGb3JtYXRTdHJpbmcgPSBAIkhIOm1tIjsgLy8gIjEz
OjQ1Ii4KLXN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBrTWlsbGlzZWNvbmRzUGVyU2Vjb25k
ID0gMTAwMDsKLQotLSAoVUlEYXRlUGlja2VyICopZGF0ZVBpY2tlcgotewotICAgIHJldHVybiBf
ZGF0ZVBpY2tlci5nZXQoKTsKLX0KLQotI2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiBI
QVZFKFVJREFURVBJQ0tFUl9TVFlMRSkKLS0gKFVJRGF0ZVBpY2tlclN0eWxlKWRhdGVQaWNrZXJT
dHlsZQotewotICAgIHJldHVybiBVSURhdGVQaWNrZXJTdHlsZUF1dG9tYXRpYzsKLX0KLSNlbmRp
ZgotCi0tIChpZClpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3IGRhdGVQaWNrZXJN
b2RlOihVSURhdGVQaWNrZXJNb2RlKW1vZGUKLXsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF92aWV3ID0gdmlldzsKLSAgICBfc2hv
dWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbiA9IE5POwotICAgIF9pc1RpbWVJbnB1dCA9IE5P
OwotICAgIHN3aXRjaCAodmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBl
KSB7Ci0gICAgY2FzZSBJbnB1dFR5cGU6OkRhdGU6Ci0gICAgICAgIF9mb3JtYXRTdHJpbmcgPSBr
RGF0ZUZvcm1hdFN0cmluZzsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnB1dFR5cGU6Ok1v
bnRoOgotICAgICAgICBfZm9ybWF0U3RyaW5nID0ga01vbnRoRm9ybWF0U3RyaW5nOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIElucHV0VHlwZTo6VGltZToKLSAgICAgICAgX2Zvcm1hdFN0cmlu
ZyA9IGtUaW1lRm9ybWF0U3RyaW5nOwotICAgICAgICBfaXNUaW1lSW5wdXQgPSBZRVM7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgotICAgICAgICBf
c2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbiA9IFlFUzsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIAotICAgIF9kYXRlUGlja2Vy
ID0gYWRvcHROUyhbW1VJRGF0ZVBpY2tlciBhbGxvY10gaW5pdF0pOwotCi0gICAgW19kYXRlUGlj
a2VyIHNldERhdGVQaWNrZXJNb2RlOm1vZGVdOwotICAgIFtfZGF0ZVBpY2tlciBzZXRIaWRkZW46
Tk9dOwotICAgIAotI2lmIEhBVkUoVUlEQVRFUElDS0VSX1NUWUxFKQotICAgIFtfZGF0ZVBpY2tl
ciBzZXRQcmVmZXJyZWREYXRlUGlja2VyU3R5bGU6W3NlbGYgZGF0ZVBpY2tlclN0eWxlXV07Ci0j
ZW5kaWYKLSAgICAKLSAgICBhdXRvIHNpemUgPSBbX2RhdGVQaWNrZXIgc2l6ZVRoYXRGaXRzOkNH
U2l6ZU1ha2Uodmlldy5mcmFtZS5zaXplLndpZHRoLCAwKV07Ci0gICAgW19kYXRlUGlja2VyIHNl
dEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpXTsKLSAgICAK
LSAgICBpZiAoW3NlbGYgc2hvdWxkUHJlc2VudEdyZWdvcmlhbkNhbGVuZGFyOnZpZXcuZm9jdXNl
ZEVsZW1lbnRJbmZvcm1hdGlvbl0pCi0gICAgICAgIF9kYXRlUGlja2VyLmdldCgpLmNhbGVuZGFy
ID0gW05TQ2FsZW5kYXIgY2FsZW5kYXJXaXRoSWRlbnRpZmllcjpOU0NhbGVuZGFySWRlbnRpZmll
ckdyZWdvcmlhbl07Ci0gICAgCi0gICAgW19kYXRlUGlja2VyIGFkZFRhcmdldDpzZWxmIGFjdGlv
bjpAc2VsZWN0b3IoX2RhdGVDaGFuZ2VIYW5kbGVyOikgZm9yQ29udHJvbEV2ZW50czpVSUNvbnRy
b2xFdmVudFZhbHVlQ2hhbmdlZF07Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoTlNTdHJp
bmcgKiljYWxlbmRhclR5cGUKLXsKLSAgICByZXR1cm4gX2RhdGVQaWNrZXIuZ2V0KCkuY2FsZW5k
YXIuY2FsZW5kYXJJZGVudGlmaWVyOwotfQotCi0tIChkb3VibGUpaG91cgotewotICAgIE5TQ2Fs
ZW5kYXIgKmNhbGVuZGFyID0gW05TQ2FsZW5kYXIgY3VycmVudENhbGVuZGFyXTsKLSAgICBOU0Rh
dGVDb21wb25lbnRzICpjb21wb25lbnRzID0gW2NhbGVuZGFyIGNvbXBvbmVudHM6TlNDYWxlbmRh
clVuaXRIb3VyIGZyb21EYXRlOltfZGF0ZVBpY2tlciBkYXRlXV07Ci0KLSAgICByZXR1cm4gW2Nv
bXBvbmVudHMgaG91cl07Ci19Ci0KLS0gKGRvdWJsZSltaW51dGUKLXsKLSAgICBOU0NhbGVuZGFy
ICpjYWxlbmRhciA9IFtOU0NhbGVuZGFyIGN1cnJlbnRDYWxlbmRhcl07Ci0gICAgTlNEYXRlQ29t
cG9uZW50cyAqY29tcG9uZW50cyA9IFtjYWxlbmRhciBjb21wb25lbnRzOk5TQ2FsZW5kYXJVbml0
TWludXRlIGZyb21EYXRlOltfZGF0ZVBpY2tlciBkYXRlXV07Ci0KLSAgICByZXR1cm4gW2NvbXBv
bmVudHMgbWludXRlXTsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW19kYXRlUGlja2Vy
IHJlbW92ZVRhcmdldDpzZWxmIGFjdGlvbjpOVUxMIGZvckNvbnRyb2xFdmVudHM6VUlDb250cm9s
RXZlbnRWYWx1ZUNoYW5nZWRdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAoQk9PTClz
aG91bGRQcmVzZW50R3JlZ29yaWFuQ2FsZW5kYXI6KGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24mKW5vZGVJbmZvCi17Ci0gICAgcmV0dXJuIG5vZGVJbmZvLmF1dG9maWxsRmllbGROYW1l
ID09IFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1lOjpDY0V4cE1vbnRoCi0gICAgICAgIHx8IG5v
ZGVJbmZvLmF1dG9maWxsRmllbGROYW1lID09IFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1lOjpD
Y0V4cAotICAgICAgICB8fCBub2RlSW5mby5hdXRvZmlsbEZpZWxkTmFtZSA9PSBXZWJDb3JlOjpB
dXRvZmlsbEZpZWxkTmFtZTo6Q2NFeHBZZWFyOwotfQotCi0tIChVSVZpZXcgKiljb250cm9sVmll
dwotewotICAgIHJldHVybiBfZGF0ZVBpY2tlci5nZXQoKTsKLX0KLQotLSAoTlNJbnRlZ2VyKV90
aW1lWm9uZU9mZnNldEZyb21HTVQ6KE5TRGF0ZSAqKWRhdGUKLXsKLSAgICBpZiAoIV9zaG91bGRS
ZW1vdmVUaW1lWm9uZUluZm9ybWF0aW9uKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVy
biBbX2RhdGVQaWNrZXIuZ2V0KCkudGltZVpvbmUgc2Vjb25kc0Zyb21HTVRGb3JEYXRlOmRhdGVd
OwotfQotCi0tIChOU1N0cmluZyAqKV9zYW5pdGl6ZUlucHV0VmFsdWVGb3JGb3JtYXR0ZXI6KE5T
U3RyaW5nICopdmFsdWUKLXsKLSAgICAvLyBUaGUgInRpbWUiIGlucHV0IHR5cGUgbWF5IGhhdmUg
c2Vjb25kcyBhbmQgbWlsbGlzZWNvbmRzIGluZm9ybWF0aW9uIHdoaWNoIHdlCi0gICAgLy8ganVz
dCBpZ25vcmUuIEZvciBleGFtcGxlOiAiMDE6NTY6MjAuMzkxIiBpcyBzaG9ydGVuZWQgdG8ganVz
dCAiMDE6NTYiLgotICAgIGlmIChfaXNUaW1lSW5wdXQpCi0gICAgICAgIHJldHVybiBbdmFsdWUg
c3Vic3RyaW5nVG9JbmRleDpba1RpbWVGb3JtYXRTdHJpbmcgbGVuZ3RoXV07Ci0KLSAgICByZXR1
cm4gdmFsdWU7Ci19Ci0KLS0gKHZvaWQpX2RhdGVDaGFuZ2VkU2V0QXNOdW1iZXIKLXsKLSAgICBO
U0RhdGUgKmRhdGUgPSBbX2RhdGVQaWNrZXIgZGF0ZV07Ci0gICAgW192aWV3IHVwZGF0ZUZvY3Vz
ZWRFbGVtZW50VmFsdWVBc051bWJlcjooW2RhdGUgdGltZUludGVydmFsU2luY2UxOTcwXSArIFtz
ZWxmIF90aW1lWm9uZU9mZnNldEZyb21HTVQ6ZGF0ZV0pICoga01pbGxpc2Vjb25kc1BlclNlY29u
ZF07Ci19Ci0KLS0gKFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+KWRhdGVGb3JtYXR0ZXJGb3JQ
aWNrZXIKLXsKLSAgICBSZXRhaW5QdHI8TlNMb2NhbGU+IGVuZ2xpc2hMb2NhbGUgPSBhZG9wdE5T
KFtbTlNMb2NhbGUgYWxsb2NdIGluaXRXaXRoTG9jYWxlSWRlbnRpZmllcjpAImVuX1VTX1BPU0lY
Il0pOwotICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGRhdGVGb3JtYXR0ZXIgPSBhZG9w
dE5TKFtbTlNEYXRlRm9ybWF0dGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW2RhdGVGb3JtYXR0ZXIg
c2V0VGltZVpvbmU6X2RhdGVQaWNrZXIuZ2V0KCkudGltZVpvbmVdOwotICAgIFtkYXRlRm9ybWF0
dGVyIHNldERhdGVGb3JtYXQ6X2Zvcm1hdFN0cmluZ107Ci0gICAgW2RhdGVGb3JtYXR0ZXIgc2V0
TG9jYWxlOmVuZ2xpc2hMb2NhbGUuZ2V0KCldOwotICAgIHJldHVybiBkYXRlRm9ybWF0dGVyOwot
fQotCi0tICh2b2lkKV9kYXRlQ2hhbmdlZFNldEFzU3RyaW5nCi17Ci0gICAgLy8gRm9yY2UgRW5n
bGlzaCBsb2NhbGUgYmVjYXVzZSB0aGF0IGlzIHdoYXQgSFRNTDUgdmFsdWUgcGFyc2luZyBleHBl
Y3RzLgotICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGRhdGVGb3JtYXR0ZXIgPSBbc2Vs
ZiBkYXRlRm9ybWF0dGVyRm9yUGlja2VyXTsKLSAgICBbX3ZpZXcgdXBkYXRlRm9jdXNlZEVsZW1l
bnRWYWx1ZTpbZGF0ZUZvcm1hdHRlciBzdHJpbmdGcm9tRGF0ZTpbX2RhdGVQaWNrZXIgZGF0ZV1d
XTsKLX0KLQotLSAodm9pZClfZGF0ZUNoYW5nZWQKLXsKLSAgICAvLyBJbnRlcm5hbGx5LCBET01I
VE1MSW5wdXRFbGVtZW50IHNldFZhbHVlQXMqIGVhY2ggdGFrZSBkaWZmZXJlbnQgdmFsdWVzIGZv
cgotICAgIC8vIGRpZmZlcmVudCBkYXRlIHR5cGVzLiBJdCBpcyBzb21ldGltZXMgZWFzaWVyIHRv
IHNldCB0aGUgZGF0ZSBpbiBkaWZmZXJlbnQgd2F5czoKLSAgICAvLyAgIC0gdXNlIHNldFZhbHVl
QXNTdHJpbmcgZm9yICJkYXRlIiwgIm1vbnRoIiwgYW5kICJ0aW1lIi4KLSAgICAvLyAgIC0gdXNl
IHNldFZhbHVlQXNOdW1iZXIgZm9yICJkYXRldGltZS1sb2NhbCIuCi0gICAgaWYgKF9mb3JtYXRT
dHJpbmcpCi0gICAgICAgIFtzZWxmIF9kYXRlQ2hhbmdlZFNldEFzU3RyaW5nXTsKLSAgICBlbHNl
Ci0gICAgICAgIFtzZWxmIF9kYXRlQ2hhbmdlZFNldEFzTnVtYmVyXTsKLX0KLQotLSAodm9pZClf
ZGF0ZUNoYW5nZUhhbmRsZXI6KGlkKXNlbmRlcgotewotICAgIFtzZWxmIF9kYXRlQ2hhbmdlZF07
Ci19Ci0KLS0gKHZvaWQpY29udHJvbEJlZ2luRWRpdGluZwotewotICAgIC8vIFNldCB0aGUgdGlt
ZSB6b25lIGluIGNhc2UgaXQgY2hhbmdlZC4KLSAgICBfZGF0ZVBpY2tlci5nZXQoKS50aW1lWm9u
ZSA9IFtOU1RpbWVab25lIGxvY2FsVGltZVpvbmVdOwotCi0gICAgLy8gQ3VycmVudGx5IG5vIHZh
bHVlIGZvciB0aGUgPGlucHV0Pi4gU3RhcnQgdGhlIHBpY2tlciB3aXRoIHRoZSBjdXJyZW50IHRp
bWUuCi0gICAgLy8gQWxzbywgdXBkYXRlIHRoZSBhY3R1YWwgPGlucHV0PiB2YWx1ZS4KLSAgICBO
U1N0cmluZyAqdmFsdWUgPSBfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnZhbHVlOwot
ICAgIGlmIChfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnZhbHVlLmlzRW1wdHkoKSkg
ewotICAgICAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpbTlNEYXRlIGRhdGVdXTsKLSAgICAgICAg
W3NlbGYgX2RhdGVDaGFuZ2VkXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIENv
bnZlcnQgdGhlIHN0cmluZyB2YWx1ZSB0byBhIGRhdGUgb2JqZWN0IGZvciB0aGUgZmllbGRzIHdo
ZXJlIHdlIGhhdmUgYSBmb3JtYXQgc3RyaW5nLgotICAgIGlmIChfZm9ybWF0U3RyaW5nKSB7Ci0g
ICAgICAgIHZhbHVlID0gW3NlbGYgX3Nhbml0aXplSW5wdXRWYWx1ZUZvckZvcm1hdHRlcjp2YWx1
ZV07Ci0gICAgICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGRhdGVGb3JtYXR0ZXIgPSBb
c2VsZiBkYXRlRm9ybWF0dGVyRm9yUGlja2VyXTsKLSAgICAgICAgTlNEYXRlICpwYXJzZWREYXRl
ID0gW2RhdGVGb3JtYXR0ZXIgZGF0ZUZyb21TdHJpbmc6dmFsdWVdOwotICAgICAgICBbX2RhdGVQ
aWNrZXIgc2V0RGF0ZTpwYXJzZWREYXRlID8gcGFyc2VkRGF0ZSA6IFtOU0RhdGUgZGF0ZV1dOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gQ29udmVydCB0aGUgbnVtYmVyIHZhbHVl
IHRvIGEgZGF0ZSBvYmplY3QgZm9yIHRoZSBmaWVsZHMgYWZmZWN0ZWQgYnkgdGltZXpvbmVzLgot
ICAgIE5TVGltZUludGVydmFsIHNlY29uZHNTaW5jZTE5NzAgPSBfdmlldy5mb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uLnZhbHVlQXNOdW1iZXIgLyBrTWlsbGlzZWNvbmRzUGVyU2Vjb25kOwotICAg
IE5TSW50ZWdlciB0aW1lWm9uZU9mZnNldCA9IFtzZWxmIF90aW1lWm9uZU9mZnNldEZyb21HTVQ6
W05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpzZWNvbmRzU2luY2UxOTcwXV07
Ci0gICAgTlNUaW1lSW50ZXJ2YWwgYWRqdXN0ZWRTZWNvbmRzU2luY2UxOTcwID0gc2Vjb25kc1Np
bmNlMTk3MCAtIHRpbWVab25lT2Zmc2V0OwotICAgIFtfZGF0ZVBpY2tlciBzZXREYXRlOltOU0Rh
dGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6YWRqdXN0ZWRTZWNvbmRzU2luY2UxOTcw
XV07Ci19Ci0KLS0gKHZvaWQpY29udHJvbEVuZEVkaXRpbmcKLXsKLX0KLQotLSAodm9pZClzZXRI
b3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51dGUKLXsKLSAgICBOU1N0
cmluZyAqdGltZVN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJS4ybGQ6JS4y
bGQiLCAobG9uZylob3VyLCAobG9uZyltaW51dGVdOwotICAgIFtfZGF0ZVBpY2tlciBzZXREYXRl
Oltbc2VsZiBkYXRlRm9ybWF0dGVyRm9yUGlja2VyXSBkYXRlRnJvbVN0cmluZzp0aW1lU3RyaW5n
XV07Ci0gICAgW3NlbGYgX2RhdGVDaGFuZ2VkXTsKLX0KLQotQGVuZAotCi0vLyBXS0Zvcm1JbnB1
dENvbnRyb2wKLUBpbXBsZW1lbnRhdGlvbiBXS0Zvcm1JbnB1dENvbnRyb2wKLQotLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcKLXsKLSAgICBVSURhdGVQ
aWNrZXJNb2RlIG1vZGU7Ci0KLSAgICBzd2l0Y2ggKHZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbi5lbGVtZW50VHlwZSkgewotICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlOgotICAgICAgICBt
b2RlID0gVUlEYXRlUGlja2VyTW9kZURhdGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5w
dXRUeXBlOjpEYXRlVGltZUxvY2FsOgotICAgICAgICBtb2RlID0gVUlEYXRlUGlja2VyTW9kZURh
dGVBbmRUaW1lOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIElucHV0VHlwZTo6VGltZToKLSAg
ICAgICAgbW9kZSA9IFVJRGF0ZVBpY2tlck1vZGVUaW1lOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIElucHV0VHlwZTo6TW9udGg6Ci0gICAgICAgIG1vZGUgPSAoVUlEYXRlUGlja2VyTW9kZSlV
SURhdGVQaWNrZXJNb2RlWWVhckFuZE1vbnRoOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0
OgotICAgICAgICBbc2VsZiByZWxlYXNlXTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0K
LSAgICBSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9ybUNvbnRyb2w+PiBjb250cm9sOwotICAgIGlm
IChjdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWQoKSkKLSAgICAgICAgY29udHJvbCA9IGFk
b3B0TlMoW1tXS0RhdGVUaW1lUG9wb3ZlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXcgZGF0ZVBp
Y2tlck1vZGU6bW9kZV0pOwotICAgIGVsc2UKLSAgICAgICAgY29udHJvbCA9IGFkb3B0TlMoW1tX
S0RhdGVUaW1lUGlja2VyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlldyBkYXRlUGlja2VyTW9kZTpt
b2RlXSk7Ci0gICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aFZpZXc6dmlldyBjb250cm9sOldURk1v
dmUoY29udHJvbCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS0Zvcm1JbnB1dENv
bnRyb2wgKFdLVGVzdGluZykKLQotLSAodm9pZClzZXRUaW1lUGlja2VySG91cjooTlNJbnRlZ2Vy
KWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlCi17Ci0gICAgaWYgKFtzZWxmLmNvbnRyb2wg
aXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lUGlja2VyLmNsYXNzXSkKLSAgICAgICAgWyhXS0RhdGVU
aW1lUGlja2VyICopc2VsZi5jb250cm9sIHNldEhvdXI6aG91ciBtaW51dGU6bWludXRlXTsKLSAg
ICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQb3BvdmVyLmNsYXNz
XSkKLSAgICAgICAgWyhXS0RhdGVUaW1lUG9wb3ZlciAqKXNlbGYuY29udHJvbCBzZXRIb3VyOmhv
dXIgbWludXRlOm1pbnV0ZV07Ci19Ci0KLS0gKE5TU3RyaW5nICopZGF0ZVRpbWVQaWNrZXJDYWxl
bmRhclR5cGUKLXsKLSAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRp
bWVQaWNrZXIuY2xhc3NdKQotICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUGlja2VyICopc2Vs
Zi5jb250cm9sIGNhbGVuZGFyVHlwZV07Ci0gICAgaWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZD
bGFzczpXS0RhdGVUaW1lUG9wb3Zlci5jbGFzc10pCi0gICAgICAgIHJldHVybiBbKFdLRGF0ZVRp
bWVQb3BvdmVyICopc2VsZi5jb250cm9sIGNhbGVuZGFyVHlwZV07Ci0gICAgcmV0dXJuIG5pbDsK
LX0KLQotLSAoZG91YmxlKXRpbWVQaWNrZXJWYWx1ZUhvdXIKLXsKLSAgICBpZiAoW3NlbGYuY29u
dHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQaWNrZXIuY2xhc3NdKQotICAgICAgICByZXR1
cm4gWyhXS0RhdGVUaW1lUGlja2VyICopc2VsZi5jb250cm9sIGhvdXJdOwotICAgIGlmIChbc2Vs
Zi5jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBvcG92ZXIuY2xhc3NdKQotICAgICAg
ICByZXR1cm4gWyhXS0RhdGVUaW1lUG9wb3ZlciAqKXNlbGYuY29udHJvbCBob3VyXTsKLSAgICBy
ZXR1cm4gLTE7Ci19Ci0KLS0gKGRvdWJsZSl0aW1lUGlja2VyVmFsdWVNaW51dGUKLXsKLSAgICBp
ZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQaWNrZXIuY2xhc3NdKQot
ICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUGlja2VyICopc2VsZi5jb250cm9sIG1pbnV0ZV07
Ci0gICAgaWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lUG9wb3Zlci5j
bGFzc10pCi0gICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVQb3BvdmVyICopc2VsZi5jb250cm9s
IG1pbnV0ZV07Ci0gICAgcmV0dXJuIC0xOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBX
S0RhdGVUaW1lUG9wb3ZlclZpZXdDb250cm9sbGVyCi0KLS0gKGlkKWluaXRXaXRoVmlldzooV0tD
b250ZW50VmlldyAqKXZpZXcgZGF0ZVBpY2tlck1vZGU6KFVJRGF0ZVBpY2tlck1vZGUpZGF0ZVBp
Y2tlck1vZGUKLXsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLQotICAgIF9pbm5lckNvbnRyb2wgPSBhZG9wdE5TKFtbV0tEYXRlVGltZVBpY2tl
ciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXcgZGF0ZVBpY2tlck1vZGU6ZGF0ZVBpY2tlck1vZGVd
KTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChOU09iamVjdDxXS0Zvcm1Db250cm9sPiAq
KWlubmVyQ29udHJvbAotewotICAgIHJldHVybiBfaW5uZXJDb250cm9sLmdldCgpOwotfQotCi0t
ICh2b2lkKWxvYWRWaWV3Ci17Ci0gICAgc2VsZi52aWV3ID0gW19pbm5lckNvbnRyb2wgY29udHJv
bFZpZXddOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS0RhdGVUaW1lUG9wb3Zlcgot
Ci0tICh2b2lkKWNsZWFyOihpZClzZW5kZXIKLXsKLSAgICBbX3ZpZXcgcGFnZV0tPnNldEZvY3Vz
ZWRFbGVtZW50VmFsdWUoU3RyaW5nKCkpOwotfQotCi0tICh2b2lkKXBvcG92ZXJXYXNEaXNtaXNz
ZWQ6KFdLUm90YXRpbmdQb3BvdmVyICopcG9wb3ZlcgotewotICAgIFtzdXBlciBwb3BvdmVyV2Fz
RGlzbWlzc2VkOnBvcG92ZXJdOwotICAgIAotICAgIGlmIChwb3BvdmVyID09IHNlbGYpIHsKLSAg
ICAgICAgaWYgKF9wcmVzZXJ2aW5nRm9jdXMpIHsKLSAgICAgICAgICAgIFtfdmlldyByZWxlYXNl
Rm9jdXNdOwotICAgICAgICAgICAgX3ByZXNlcnZpbmdGb2N1cyA9IE5POwotICAgICAgICB9Ci0g
ICAgfQotfQotCi0tIChpZClpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3IGRhdGVQ
aWNrZXJNb2RlOihVSURhdGVQaWNrZXJNb2RlKW1vZGUKLXsKLSAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRXaXRoVmlldzp2aWV3XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfdmll
dyA9IHZpZXc7Ci0gICAgX3ZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1dLRGF0ZVRpbWVQb3Bv
dmVyVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3IGRhdGVQaWNrZXJNb2Rl
Om1vZGVdKTsKLSAgICBVSURhdGVQaWNrZXIgKmRhdGVQaWNrZXIgPSBbKFdLRGF0ZVRpbWVQaWNr
ZXIgKilfdmlld0NvbnRyb2xsZXIuZ2V0KCkuaW5uZXJDb250cm9sIGRhdGVQaWNrZXJdOwotCi0g
ICAgaWYgKHZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9PSBJbnB1
dFR5cGU6Ok1vbnRoKSB7Ci0gICAgICAgIENHRmxvYXQgcG9wb3ZlcldpZHRoID0gW2RhdGVQaWNr
ZXIgX2NvbnRlbnRXaWR0aF07Ci0gICAgICAgIENHRmxvYXQgcG9wb3ZlckhlaWdodCA9IF92aWV3
Q29udHJvbGxlci5nZXQoKS52aWV3LmZyYW1lLnNpemUuaGVpZ2h0OwotICAgICAgICBbX3ZpZXdD
b250cm9sbGVyIHNldFByZWZlcnJlZENvbnRlbnRTaXplOkNHU2l6ZU1ha2UocG9wb3ZlcldpZHRo
LCBwb3BvdmVySGVpZ2h0KV07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgW192aWV3Q29udHJvbGxl
ciBzZXRQcmVmZXJyZWRDb250ZW50U2l6ZTpDR1NpemVNYWtlKGRhdGVQaWNrZXIuZnJhbWUuc2l6
ZS53aWR0aCsxNiwgZGF0ZVBpY2tlci5mcmFtZS5zaXplLmhlaWdodCldOwotICAgIH0KLSAgICAK
LSAgICBbX3ZpZXdDb250cm9sbGVyIHNldEVkZ2VzRm9yRXh0ZW5kZWRMYXlvdXQ6VUlSZWN0RWRn
ZU5vbmVdOwotICAgIFtfdmlld0NvbnRyb2xsZXIgc2V0VGl0bGU6X3ZpZXcuZm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbi50aXRsZV07Ci0KLSAgICAvLyBBbHdheXMgaGF2ZSBhIG5hdmlnYXRpb24g
Y29udHJvbGxlciB3aXRoIGEgY2xlYXIgYnV0dG9uLCBhbmQgYSB0aXRsZSBpZiB0aGUgaW5wdXQg
ZWxlbWVudCBoYXMgYSB0aXRsZS4KLSAgICBSZXRhaW5QdHI8VUlOYXZpZ2F0aW9uQ29udHJvbGxl
cj4gbmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlOYXZpZ2F0aW9uQ29udHJvbGxl
ciBhbGxvY10gaW5pdFdpdGhSb290Vmlld0NvbnRyb2xsZXI6X3ZpZXdDb250cm9sbGVyLmdldCgp
XSk7Ci0gICAgVUlOYXZpZ2F0aW9uSXRlbSAqbmF2aWdhdGlvbkl0ZW0gPSBuYXZpZ2F0aW9uQ29u
dHJvbGxlci5nZXQoKS5uYXZpZ2F0aW9uQmFyLnRvcEl0ZW07Ci0gICAgTlNTdHJpbmcgKmNsZWFy
U3RyaW5nID0gV0VCX1VJX1NUUklOR19LRVkoIkNsZWFyIiwgIkNsZWFyIEJ1dHRvbiBEYXRlIFBv
cG92ZXIiLCAiQ2xlYXIgYnV0dG9uIGluIGRhdGUgaW5wdXQgcG9wb3ZlciIpOwotICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgVUlCYXJCdXR0b25JdGVtICpjbGVh
ckJ1dHRvbiA9IFtbW1VJQmFyQnV0dG9uSXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpjbGVhclN0
cmluZyBzdHlsZTpVSUJhckJ1dHRvbkl0ZW1TdHlsZUJvcmRlcmVkIHRhcmdldDpzZWxmIGFjdGlv
bjpAc2VsZWN0b3IoY2xlYXI6KV0gYXV0b3JlbGVhc2VdOwotICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAotICAgIFtuYXZpZ2F0aW9uSXRlbSBzZXRSaWdodEJhckJ1dHRvbkl0
ZW06Y2xlYXJCdXR0b25dOwotCi0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KLSAgICBSZXRhaW5QdHI8VUlQb3BvdmVyQ29udHJvbGxlcj4gY29udHJvbGxlciA9IGFkb3B0
TlMoW1tVSVBvcG92ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbnRlbnRWaWV3Q29udHJv
bGxlcjpuYXZpZ2F0aW9uQ29udHJvbGxlci5nZXQoKV0pOwotICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAotICAgIFtzZWxmIHNldFBvcG92ZXJDb250cm9sbGVyOmNvbnRyb2xs
ZXIuZ2V0KCldOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKFdLRGF0ZVRpbWVQb3BvdmVy
Vmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlcgotewotICAgIHJldHVybiBfdmlld0NvbnRy
b2xsZXIuZ2V0KCk7Ci19Ci0KLS0gKHZvaWQpY29udHJvbEJlZ2luRWRpdGluZwotewotICAgIGlm
ICghX3ByZXNlbnRpbmcpIHsKLSAgICAgICAgX3ByZXNlbnRpbmcgPSBZRVM7Ci0gICAgICAgIFtz
ZWxmIHByZXNlbnRQb3BvdmVyQW5pbWF0ZWQ6Tk9dOwotICAgICAgICBbX3ZpZXdDb250cm9sbGVy
LmdldCgpLmlubmVyQ29udHJvbCBjb250cm9sQmVnaW5FZGl0aW5nXTsKLSAgICAgICAgCi0gICAg
ICAgIGlmIChfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IElu
cHV0VHlwZTo6VGltZSB8fCBfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRU
eXBlID09IElucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbCkgewotICAgICAgICAgICAgX3ByZXNlcnZp
bmdGb2N1cyA9IFlFUzsKLSAgICAgICAgICAgIFtfdmlldyBwcmVzZXJ2ZUZvY3VzXTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotLSAodm9pZCljb250cm9sRW5kRWRpdGluZwotewotICAgIF9wcmVz
ZW50aW5nID0gTk87Ci0gICAgW3NlbGYgZGlzbWlzc1BvcG92ZXJBbmltYXRlZDpOT107Ci0gICAg
W192aWV3Q29udHJvbGxlci5nZXQoKS5pbm5lckNvbnRyb2wgY29udHJvbEVuZEVkaXRpbmddOwot
fQotCi0tIChVSVZpZXcgKiljb250cm9sVmlldwotewotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0g
KHZvaWQpc2V0SG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlCi17
Ci0gICAgV0tEYXRlVGltZVBpY2tlciAqZGF0ZVRpbWVQaWNrZXIgPSAoV0tEYXRlVGltZVBpY2tl
ciAqKXNlbGYudmlld0NvbnRyb2xsZXIuaW5uZXJDb250cm9sOwotICAgIFtkYXRlVGltZVBpY2tl
ciBzZXRIb3VyOmhvdXIgbWludXRlOm1pbnV0ZV07Ci19Ci0KLS0gKE5TU3RyaW5nICopY2FsZW5k
YXJUeXBlCi17Ci0gICAgV0tEYXRlVGltZVBpY2tlciAqZGF0ZVRpbWVQaWNrZXIgPSAoV0tEYXRl
VGltZVBpY2tlciAqKXNlbGYudmlld0NvbnRyb2xsZXIuaW5uZXJDb250cm9sOwotICAgIHJldHVy
biBkYXRlVGltZVBpY2tlci5kYXRlUGlja2VyLmNhbGVuZGFyLmNhbGVuZGFySWRlbnRpZmllcjsK
LX0KLQotLSAoZG91YmxlKWhvdXIKLXsKLSAgICBXS0RhdGVUaW1lUGlja2VyICpkYXRlVGltZVBp
Y2tlciA9IChXS0RhdGVUaW1lUGlja2VyICopc2VsZi52aWV3Q29udHJvbGxlci5pbm5lckNvbnRy
b2w7Ci0gICAgTlNDYWxlbmRhciAqY2FsZW5kYXIgPSBbTlNDYWxlbmRhciBjdXJyZW50Q2FsZW5k
YXJdOwotICAgIE5TRGF0ZUNvbXBvbmVudHMgKmNvbXBvbmVudHMgPSBbY2FsZW5kYXIgY29tcG9u
ZW50czooTlNDYWxlbmRhclVuaXRIb3VyKSBmcm9tRGF0ZTpkYXRlVGltZVBpY2tlci5kYXRlUGlj
a2VyLmRhdGVdOwotCi0gICAgcmV0dXJuIFtjb21wb25lbnRzIGhvdXJdOwotfQotCi0tIChkb3Vi
bGUpbWludXRlCi17Ci0gICAgV0tEYXRlVGltZVBpY2tlciAqZGF0ZVRpbWVQaWNrZXIgPSAoV0tE
YXRlVGltZVBpY2tlciAqKXNlbGYudmlld0NvbnRyb2xsZXIuaW5uZXJDb250cm9sOwotICAgIE5T
Q2FsZW5kYXIgKmNhbGVuZGFyID0gW05TQ2FsZW5kYXIgY3VycmVudENhbGVuZGFyXTsKLSAgICBO
U0RhdGVDb21wb25lbnRzICpjb21wb25lbnRzID0gW2NhbGVuZGFyIGNvbXBvbmVudHM6KE5TQ2Fs
ZW5kYXJVbml0TWludXRlKSBmcm9tRGF0ZTpkYXRlVGltZVBpY2tlci5kYXRlUGlja2VyLmRhdGVd
OwotCi0gICAgcmV0dXJuIFtjb21wb25lbnRzIG1pbnV0ZV07Ci19Ci0KLUBlbmQKLQotI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1Yzg4YmIzNjc1MWUwNTZmNGMwODAxNjU2Nzg5YWU1
MjQ2MmJmNWU2Li4wMDZjMWU1ZjAxZjY3NGRmNGE2OGUyMzA4ODRjNmQxNDUwZjY4YzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2
ODgsNyArMTY4OCw3IEBACiAJCUMxODE3MzYxMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGlu
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE4MTcz
NjAyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggKi87IH07CiAJCUMxRTEyM0JBMjBB
MTE1NzMwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFFMTIzQjkyMEExMTU3MjAwMjY0NkY0IC8qIFBERkNv
bnRleHRNZW51LmggKi87IH07CiAJCUM1MTczODgxMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29u
dHJvbGxlckFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmgg
Ki87IH07Ci0JCUM1NDI1NkI1MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDI1NkFG
MThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wuaCAqLzsgfTsKKwkJQzU0MjU2
QjUxOEJFQzE4QzAwREU0MTc5IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDI1NkFGMThCRUMxOEIwMERF
NDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmggKi87IH07CiAJCUM1NDI1NkI3MThCRUMx
OEMwMERFNDE3OSAvKiBXS0Zvcm1QZXJpcGhlcmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTQyNTZCMTE4QkVDMThCMDBERTQxNzkgLyogV0tGb3Jt
UGVyaXBoZXJhbC5oICovOyB9OwogCQlDNTQyNTZCODE4QkVDMThDMDBERTQxNzkgLyogV0tGb3Jt
UG9wb3Zlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzU0MjU2QjIxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybVBvcG92ZXIuaCAqLzsgfTsKIAkJQzU0
MjU2QkExOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybVNlbGVjdENvbnRyb2wuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDI1NkI0MThCRUMxOEMwMERF
NDE3OSAvKiBXS0Zvcm1TZWxlY3RDb250cm9sLmggKi87IH07CkBAIC01MDI0LDggKzUwMjQsOCBA
QAogCQlDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUERGQ29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9s
bGVyQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdDb250cm9s
bGVyQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MjM3RjVGMTI0NDFD
QTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFZGl0b3JDbGllbnRNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENv
bnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tGb3JtSW5wdXRDb250
cm9sLmg7IHBhdGggPSBpb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUM1NDI1NkIwMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1JbnB1
dENvbnRyb2wubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Zv
cm1JbnB1dENvbnRyb2wubW07IHBhdGggPSBpb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNTQyNTZBRjE4QkVDMThCMDBERTQxNzkg
LyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmg7IHBhdGggPSBpb3MvZm9ybXMvV0tEYXRlVGlt
ZUlucHV0Q29udHJvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNTQyNTZCMDE4
QkVDMThCMDBERTQxNzkgLyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wubW07IHBh
dGggPSBpb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzU0MjU2QjExOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybVBlcmlwaGVy
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tGb3JtUGVyaXBoZXJhbC5o
OyBwYXRoID0gaW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzU0MjU2QjIxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybVBvcG92ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tGb3JtUG9wb3Zlci5oOyBwYXRoID0g
aW9zL2Zvcm1zL1dLRm9ybVBvcG92ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzU0MjU2QjMxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybVBvcG92ZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Zvcm1Qb3BvdmVyLm1tOyBwYXRoID0gaW9z
L2Zvcm1zL1dLRm9ybVBvcG92ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDI1Nyw2ICsxMDI1Nyw4IEBACiAJCQkJQzVGQTFFRDIxOEUxMDYyMjAwQjNGNDAyIC8qIFdLQWly
UGxheVJvdXRlUGlja2VyLm1tICovLAogCQkJCTJFOTRGQzE0MjAzNTFBNkQwMDk3NEJBMCAvKiBX
S0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5oICovLAogCQkJCTJFOTRGQzE1MjAzNTFBNkQwMDk3
NEJBMCAvKiBXS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbSAqLywKKwkJCQlDNTQyNTZBRjE4
QkVDMThCMDBERTQxNzkgLyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5oICovLAorCQkJCUM1NDI1
NkIwMThCRUMxOEIwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9sLm1tICovLAogCQkJ
CUE1OEI2RjA2MThGQ0E3MzMwMDhDQkE1MyAvKiBXS0ZpbGVVcGxvYWRQYW5lbC5oICovLAogCQkJ
CUE1OEI2RjA3MThGQ0E3MzMwMDhDQkE1MyAvKiBXS0ZpbGVVcGxvYWRQYW5lbC5tbSAqLywKIAkJ
CQkyRTE2QjZDRDIwMTdCN0FDMDA4OTk2RDYgLyogV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3Lmgg
Ki8sCkBAIC0xMDI2NSw4ICsxMDI2Nyw2IEBACiAJCQkJRTVDQjA3REIyMEUxNjc4RjAwMjJDMTgz
IC8qIFdLRm9ybUNvbG9yQ29udHJvbC5tbSAqLywKIAkJCQlFNTQ4RUJDRjIxMDE1RjBFMDBCRTND
MzIgLyogV0tGb3JtQ29sb3JQaWNrZXIuaCAqLywKIAkJCQlFNTQ4RUJEMDIxMDE1RjBFMDBCRTND
MzIgLyogV0tGb3JtQ29sb3JQaWNrZXIubW0gKi8sCi0JCQkJQzU0MjU2QUYxOEJFQzE4QjAwREU0
MTc5IC8qIFdLRm9ybUlucHV0Q29udHJvbC5oICovLAotCQkJCUM1NDI1NkIwMThCRUMxOEIwMERF
NDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wubW0gKi8sCiAJCQkJQzU0MjU2QjExOEJFQzE4QjAw
REU0MTc5IC8qIFdLRm9ybVBlcmlwaGVyYWwuaCAqLywKIAkJCQlDRTcwRUU1QzIyNDQyQkQwMDBF
MEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJhc2UuaCAqLywKIAkJCQlDRTcwRUU1QTIyNDQyQkIz
MDBFMEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJhc2UubW0gKi8sCkBAIC0xMTUxNyw2ICsxMTUx
Nyw3IEBACiAJCQkJMzdBNzA5QTcxRTNFQTBGRDAwQ0E1OTY5IC8qIFdLRGF0YURldGVjdG9yVHlw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QTcwOUE5MUUzRUE0MEMwMENBNTk2OSAvKiBXS0Rh
dGFEZXRlY3RvclR5cGVzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFOTRGQzE2MjAz
NTFBNkQwMDk3NEJBMCAvKiBXS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQzU0MjU2QjUxOEJFQzE4QzAwREU0MTc5IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRy
b2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3N0VBRDQ1MTdFMkM1MUEwMDJEMTkzRCAvKiBXS0Rl
Y2xhcmF0aW9uU3BlY2lmaWVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ0ODE1NjQyMzg3ODIw
MDAwOTgyNjU3IC8qIFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDMzU5QzBEMjE1NDczOUYwMDlFNzk0OCAvKiBXS0RlcHJlY2F0ZWQuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTE1NDksNyArMTE1NTAsNiBAQAogCQkJCTJFMTZCNkNGMjAxN0I3QUQwMDg5
OTZENiAvKiBXS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1
Q0IwN0RDMjBFMTY3OEYwMDIyQzE4MyAvKiBXS0Zvcm1Db2xvckNvbnRyb2wuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU1NDhFQkQxMjEwMTVGMEUwMEJFM0MzMiAvKiBXS0Zvcm1Db2xvclBpY2tlci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQzU0MjU2QjUxOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybUlu
cHV0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU0MjU2QjcxOEJFQzE4QzAwREU0MTc5
IC8qIFdLRm9ybVBlcmlwaGVyYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFNzBFRTVEMjI0NDJC
RDAwMEUwQUYwRiAvKiBXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzU0MjU2QjgxOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybVBvcG92ZXIuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9s
bGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVy
SU9TLm1tCmluZGV4IGQ5ZTAyMTNmOTk0NTE4ZDhjZWE1YmM0ZmU0MzI2ZmFhMTdhZWMxYjQuLjE0
ZTZkZjg3MWJhYTYxY2UyZGRmYWNkMjYxNDI5Y2Y3OTM2YzEyYmMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTEyMzAs
NyArMTIzMCw3IEBAIFVJVmlldyAqVUlTY3JpcHRDb250cm9sbGVySU9TOjpwbGF0Zm9ybUNvbnRl
bnRWaWV3KCkgY29uc3QKIEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6Y2FsZW5k
YXJUeXBlKCkgY29uc3QKIHsKICAgICBVSVZpZXcgKmNvbnRlbnRWaWV3ID0gW3dlYlZpZXcoKSB2
YWx1ZUZvcktleVBhdGg6QCJfY3VycmVudENvbnRlbnRWaWV3Il07Ci0gICAgTlNTdHJpbmcgKmNh
bGVuZGFyVHlwZVN0cmluZyA9IFtjb250ZW50VmlldyB2YWx1ZUZvcktleVBhdGg6QCJmb3JtSW5w
dXRDb250cm9sLmRhdGVUaW1lUGlja2VyQ2FsZW5kYXJUeXBlIl07CisgICAgTlNTdHJpbmcgKmNh
bGVuZGFyVHlwZVN0cmluZyA9IFtjb250ZW50VmlldyB2YWx1ZUZvcktleVBhdGg6QCJkYXRlVGlt
ZUlucHV0Q29udHJvbC5kYXRlVGltZVBpY2tlckNhbGVuZGFyVHlwZSJdOwogICAgIGF1dG8ganND
b250ZXh0ID0gbV9jb250ZXh0LT5qc0NvbnRleHQoKTsKICAgICByZXR1cm4gSlNWYWx1ZVRvT2Jq
ZWN0KGpzQ29udGV4dCwgW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmNhbGVuZGFyVHlwZVN0cmlu
ZyBpbkNvbnRleHQ6W0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjpqc0Nv
bnRleHRdXS5KU1ZhbHVlUmVmLCBudWxscHRyKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399301</attachid>
            <date>2020-05-13 14:34:22 -0700</date>
            <delta_ts>2020-05-13 14:54:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211825-20200513143403.patch</filename>
            <type>text/plain</type>
            <size>61149</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJhMGE0NjY2N2Q1NzEyYjI1
NWUyODU1NTg4YzBmMGY5ZWQxZjRmNTMuLjUxYTRkZjI2MGI0ZDQ0YzJkMWMxM2M3Y2NkOTI3Mjgx
Mjc0MDI0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjAtMDUtMTIgIE1lZ2FuIEdh
cmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgRGF0ZS9U
aW1lIHBvcG92ZXJzIHRvIGNvbnRleHRNZW51cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTgyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjMx
MDI1MjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIFVw
ZGF0ZSB0aGUgRGF0ZS9UaW1lIHBpY2tlciB0byB1c2UgVUlDb250ZXh0TWVudXMgaW5zdGVhZCBv
ZiBwb3BvdmVycy4KKyAgICAgICAgUmVtb3ZlZCBhbGwgdGhlIHVubmVlZGVkIHBvcG92ZXIgY29k
ZS4KKyAgICAgICAgUmVuYW1lZCBXS0Zvcm1JbnB1dENvbnRyb2wgdG8gV0tEYXRlVGltZUlucHV0
Q29udHJvbCBiZWNhdXNlIGl0IHdhcyBvbmx5IHVzZWQKKyAgICAgICAgZm9yIGRhdGUgYW5kIHRp
bWUgY29udHJvbHMsIHVubmVjY2Vzc2FyeSBhYnN0cmFjdGlvbi4KKyAgICAgICAgV2UgbmVlZCB0
byBlbnN1cmUgdGhlIHBvaXNpdGlvbiBpbmZvcm1hdGlvbiBpcyB1cCB0byBkYXRlIGJlZm9yZSBw
cmVzZW50aW5nCisgICAgICAgIHRoZSBjb250ZXh0IG1lbnUsIG9yIHRoZSBwb3NpdGlvbiBpdCB3
aWxsIGJlIHByZXNlbnRlZCBmcm9tIGNhbiBiZSBzdGFsZS4KKworICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2hvdWxkU2hvd0F1dG9tYXRpY0tleWJvYXJk
VUlJZ25vcmluZ0lucHV0TW9kZV0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlcXVpcmVz
QWNjZXNzb3J5Vmlld10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF91cGRhdGVBY2Nlc3Nv
cnldKToKKyAgICAgICAgKG1heUNvbnRhaW5TZWxlY3RhYmxlVGV4dCk6CisgICAgICAgIChjcmVh
dGVJbnB1dFBlcmlwaGVyYWxXaXRoVmlldyk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5w
dXRMYWJlbFRleHRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcmVtb3ZlQ29udGV4dE1l
bnVWaWV3SWZQb3NzaWJsZV0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGlucHV0TGFiZWxU
ZXh0Rm9yVmlld0NvbnRyb2xsZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZm9ybUlu
cHV0Q29udHJvbF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldFRpbWVQaWNrZXJWYWx1
ZVRvSG91cjptaW51dGU6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdGltZVBpY2tlclZh
bHVlSG91cl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRpbWVQaWNrZXJWYWx1ZU1pbnV0
ZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJv
bC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9y
bUlucHV0Q29udHJvbC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlVGlt
ZUlucHV0Q29udHJvbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wubW0uCisgICAgICAgICgtW1dLRGF0ZVRpbWVDb250
ZXh0TWVudVZpZXdDb250cm9sbGVyIGluaXRdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZUNvbnRl
eHRNZW51Vmlld0NvbnRyb2xsZXIgcHJlZmVycmVkQ29udGVudFNpemVdKToKKyAgICAgICAgKC1b
V0tEYXRlVGltZVBpY2tlciBpbml0V2l0aFZpZXc6ZGF0ZVBpY2tlck1vZGU6XSk6CisgICAgICAg
ICgtW1dLRGF0ZVRpbWVQaWNrZXIgY29udGV4dE1lbnVJbnRlcmFjdGlvbjpwcmV2aWV3Rm9ySGln
aGxpZ2h0aW5nTWVudVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1l
UGlja2VyIF9jb250ZXh0TWVudUludGVyYWN0aW9uOnN0eWxlRm9yTWVudVdpdGhDb25maWd1cmF0
aW9uOl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGNvbnRleHRNZW51SW50ZXJhY3Rp
b246Y29uZmlndXJhdGlvbkZvck1lbnVBdExvY2F0aW9uOl0pOgorICAgICAgICAoLVtXS0RhdGVU
aW1lUGlja2VyIGNvbnRleHRNZW51SW50ZXJhY3Rpb246d2lsbEVuZEZvckNvbmZpZ3VyYXRpb246
YW5pbWF0b3I6XSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgcmVtb3ZlQ29udGV4dE1l
bnVJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGVuc3VyZUNvbnRl
eHRNZW51SW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBzaG93RGF0
ZVRpbWVQaWNrZXJdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciByZXNldDpdKToKKyAg
ICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciBjYWxlbmRhclR5cGVdKToKKyAgICAgICAgKC1bV0tE
YXRlVGltZVBpY2tlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVQaWNrZXIgc2V0
RGF0ZVRpbWVQaWNrZXJUb0luaXRpYWxWYWx1ZV0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlj
a2VyIGNvbnRyb2xCZWdpbkVkaXRpbmddKToKKyAgICAgICAgKC1bV0tEYXRlVGltZVBpY2tlciB2
aWV3Q29udHJvbGxlcl0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lUGlja2VyIGNvbnRyb2xFbmRF
ZGl0aW5nXSk6CisgICAgICAgICgtW1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wgaW5pdFdpdGhWaWV3
Ol0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lSW5wdXRDb250cm9sIHNldFRpbWVQaWNrZXJIb3Vy
Om1pbnV0ZTpdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZUlucHV0Q29udHJvbCBkYXRlVGltZVBp
Y2tlckNhbGVuZGFyVHlwZV0pOgorICAgICAgICAoLVtXS0RhdGVUaW1lSW5wdXRDb250cm9sIHRp
bWVQaWNrZXJWYWx1ZUhvdXJdKToKKyAgICAgICAgKC1bV0tEYXRlVGltZUlucHV0Q29udHJvbCB0
aW1lUGlja2VyVmFsdWVNaW51dGVdKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAyMC0wNS0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNjEyNTQpOiBCcm9rZSBBcHBsZSBQYXkgb24gbWFj
T1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmlu
Z3MgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCmluZGV4IDc4
NDE5ZDUxZWFjZGE4ODUwNzcxYmU3OTMyZTZmMjVjODdlZjQ2NjAuLmYyNTQxZjdhZTYyNWE1OGQx
YTUwNDg1YjgxYjQ4Njk3N2E5MzY0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VuLmxw
cm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9j
YWxpemFibGUuc3RyaW5ncwpAQCAtMjExLDkgKzIxMSw2IEBACiAvKiBUaXRsZSBmb3IgZmlsZSBi
dXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zIGZvciBtZWRpYSBmaWxlcyAqLwogIkNob29zZSBNZWRp
YSAoU2luZ2xlKSIgPSAiQ2hvb3NlIE1lZGlhIChTaW5nbGUpIjsKIAotLyogQ2xlYXIgYnV0dG9u
IGluIGRhdGUgaW5wdXQgcG9wb3ZlciAqLwotIkNsZWFyIEJ1dHRvbiBEYXRlIFBvcG92ZXIiID0g
IkNsZWFyIjsKLQogLyogbWVudSBpdGVtIGluIFJlY2VudCBTZWFyY2hlcyBtZW51IHRoYXQgZW1w
dGllcyBtZW51J3MgY29udGVudHMgKi8KICJDbGVhciBSZWNlbnQgU2VhcmNoZXMiID0gIkNsZWFy
IFJlY2VudCBTZWFyY2hlcyI7CiAKQEAgLTEzMjcsNiArMTMyNCw5IEBACiAvKiBIVFRQIHJlc3Vs
dCBjb2RlIHN0cmluZyAqLwogInJlcXVlc3RlZCByYW5nZSBub3Qgc2F0aXNmaWFibGUiID0gInJl
cXVlc3RlZCByYW5nZSBub3Qgc2F0aXNmaWFibGUiOwogCisvKiBSZXNldCBidXR0b24gaW4gZGF0
ZSBpbnB1dCBwb3BvdmVyICovCisiUmVzZXQgQnV0dG9uIERhdGUvVGltZSBDb250ZXh0IE1lbnUi
ID0gIlJlc2V0IjsKKwogLyogSFRUUCByZXN1bHQgY29kZSBzdHJpbmcgKi8KICJyZXNldCBjb250
ZW50IiA9ICJyZXNldCBjb250ZW50IjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3Mv
VUlLaXRTUEkuaAppbmRleCBkZDQ3NDM0OGNkOGU1YWU0MDI0N2NjM2Y4NzFhYjQ1MTBmNzkwMDIz
Li5iYzFjMjUwNTFkNGFiZDlhODA5OTYyN2MwOTYxYWI5NDNiYmI3MTZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApAQCAtMTE1MiwxMCArMTE1MiwxMiBAQCB0
eXBlZGVmIE5TX09QVElPTlMoTlNJbnRlZ2VyLCBVSVdLRG9jdW1lbnRSZXF1ZXN0RmxhZ3MpIHsK
IHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBfVUlDb250ZXh0TWVudUxheW91dCkgewogICAg
IF9VSUNvbnRleHRNZW51TGF5b3V0QWN0aW9uc09ubHkgPSAxLAogICAgIF9VSUNvbnRleHRNZW51
TGF5b3V0Q29tcGFjdE1lbnUgPSAzLAorICAgIF9VSUNvbnRleHRNZW51TGF5b3V0QXV0b21hdGlj
ID0gMTAwLAogfTsKIAogQGludGVyZmFjZSBfVUlDb250ZXh0TWVudVN0eWxlIDogTlNPYmplY3Qg
PE5TQ29weWluZz4KIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBfVUlDb250ZXh0TWVudUxheW91dCBw
cmVmZXJyZWRMYXlvdXQ7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBoYXNJbnRlcmFjdGl2
ZVByZXZpZXc7CiArIChpbnN0YW5jZXR5cGUpZGVmYXVsdFN0eWxlOwogQGVuZAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggZWQ0Mjk2ZmFhMmE1NGRlYjgxMmJmYmNmNzJiNmM1OTYzNTY2Yzll
ZC4uYjcyYWM1MzBjMWQxOWQ0ODAzZGQ1NDgxODZhNGZiZmJmZjg5OWRkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dApAQCAtNDE2LDExICs0MTYsMTEgQEAgVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V0tJbnNwZWN0b3JXS1dlYlZpZXcubW0KIAogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0FpclBsYXlS
b3V0ZVBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJv
bGxlci5tbQorVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLm1tCiBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCiBVSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zv
cm1Db2xvckNvbnRyb2wubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JQaWNrZXIu
bW0KLVVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLm1tCiBVSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWxCYXNlLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
Rm9ybVBvcG92ZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5t
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oCmluZGV4IGRkYjllYjAyNGJkYjAwY2EyOTJkZGRiODAwZGM0MDRkZDk5NmY4
MGIuLjViMjdhNTBiMmZiZjI2ZTkxMTAxMWEyM2I2NWQwMmYyNDNjMWVlZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmgKQEAgLTk5LDkgKzk5LDkgQEAgc3RydWN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dDsKIEBj
bGFzcyBXZWJFdmVudDsKIEBjbGFzcyBXS0FjdGlvblNoZWV0QXNzaXN0YW50OwogQGNsYXNzIFdL
Q29udGV4dE1lbnVFbGVtZW50SW5mbzsKK0BjbGFzcyBXS0RhdGVUaW1lSW5wdXRDb250cm9sOwog
QGNsYXNzIFdLRHJhd2luZ0Nvb3JkaW5hdG9yOwogQGNsYXNzIFdLRm9jdXNlZEZvcm1Db250cm9s
VmlldzsKLUBjbGFzcyBXS0Zvcm1JbnB1dENvbnRyb2w7CiBAY2xhc3MgV0tGb3JtSW5wdXRTZXNz
aW9uOwogQGNsYXNzIFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI7CiBAY2xh
c3MgV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyOwpAQCAtNTM5LDYgKzUzOSw4IEBAIEZPUl9FQUNI
X1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElP
Tl9GT1JfV0VCX1ZJRVcpCiAtIChCT09MKWhhc0hpZGRlbkNvbnRlbnRFZGl0YWJsZTsKIC0gKHZv
aWQpZ2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZDooV2ViS2l0OjpTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGUpY29tbWFuZDsKIAorLSAoTlNTdHJpbmcgKilpbnB1dExhYmVsVGV4dDsK
KwogLSAodm9pZClwcmVzZXJ2ZUZvY3VzOwogLSAodm9pZClyZWxlYXNlRm9jdXM7CiAKQEAgLTYx
NSw3ICs2MTcsNyBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xB
UkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqdGV4dENvbnRlbnRUeXBlRm9yVGVzdGluZzsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKnNlbGVjdEZvcm1Qb3BvdmVyVGl0
bGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpmb3JtSW5wdXRM
YWJlbDsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tGb3JtSW5wdXRDb250cm9s
ICpmb3JtSW5wdXRDb250cm9sOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0Rh
dGVUaW1lSW5wdXRDb250cm9sICpkYXRlVGltZUlucHV0Q29udHJvbDsKIAogQGVuZAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQppbmRleCA0YWRiZjhhYWE5NWQ2MGRlNWI3OTA4NGNlYjI5ODkyMmM2NDQ5NGRhLi5j
OTliNDkzM2I4ZThmN2U3ZDAyNDRmMDY1YzYwZWYzZmM0MDdkNjk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTUwLDEwICs1MCwxMCBAQAogI2ltcG9ydCAiV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvSW50
ZXJuYWwuaCIKICNpbXBvcnQgIldLQ29udGV4dE1lbnVFbGVtZW50SW5mb1ByaXZhdGUuaCIKICNp
bXBvcnQgIldLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS0RhdGVUaW1l
SW5wdXRDb250cm9sLmgiCiAjaW1wb3J0ICJXS0RyYXdpbmdDb29yZGluYXRvci5oIgogI2ltcG9y
dCAiV0tFcnJvci5oIgogI2ltcG9ydCAiV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3LmgiCi0jaW1w
b3J0ICJXS0Zvcm1JbnB1dENvbnRyb2wuaCIKICNpbXBvcnQgIldLRm9ybVNlbGVjdENvbnRyb2wu
aCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLSGlnaGxpZ2h0
TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCIKQEAgLTE5MDIsMTYgKzE5MDIsMTUgQEAgLSAo
Qk9PTClfc2hvdWxkU2hvd0F1dG9tYXRpY0tleWJvYXJkVUlJZ25vcmluZ0lucHV0TW9kZQogICAg
IHN3aXRjaCAoX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKICAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOb25lOgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6
OkRyYXdpbmc6CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZToKKyAgICBjYXNlIFdl
YktpdDo6SW5wdXRUeXBlOjpNb250aDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRl
VGltZUxvY2FsOgorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6CiAgICAgICAgIHJl
dHVybiBOTzsKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpTZWxlY3Q6CiAjaWYgRU5BQkxF
KElOUFVUX1RZUEVfQ09MT1IpCiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29sb3I6CiAj
ZW5kaWYKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlOgotICAgIGNhc2UgV2ViS2l0
OjpJbnB1dFR5cGU6Ok1vbnRoOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGVUaW1l
TG9jYWw6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGltZToKLSAgICAgICAgcmV0dXJu
ICFXZWJLaXQ6OmN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHJldHVybiAhX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uaXNSZWFkT25seTsK
ICAgICB9CkBAIC0yOTE0LDYgKzI5MTMsMTAgQEAgLSAoQk9PTClyZXF1aXJlc0FjY2Vzc29yeVZp
ZXcKICAgICBzd2l0Y2ggKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlKSB7
CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Tm9uZToKICAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpEcmF3aW5nOgorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGU6CisgICAg
Y2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpNb250aDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lOgogICAg
ICAgICByZXR1cm4gTk87CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGV4dDoKICAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpQYXNzd29yZDoKQEAgLTI5MjYsMTIgKzI5MjksOCBAQCAt
IChCT09MKXJlcXVpcmVzQWNjZXNzb3J5VmlldwogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6
OkNvbnRlbnRFZGl0YWJsZToKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0QXJlYToK
ICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpTZWxlY3Q6Ci0gICAgY2FzZSBXZWJLaXQ6Oklu
cHV0VHlwZTo6RGF0ZToKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZToKLSAg
ICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgotICAgIGNhc2UgV2ViS2l0
OjpJbnB1dFR5cGU6Ok1vbnRoOgotICAgIGNhc2UgV2ViS2l0OjogSW5wdXRUeXBlOjpXZWVrOgot
ICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6CisgICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6V2VlazoKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICBjYXNlIFdlYktp
dDo6SW5wdXRUeXBlOjpDb2xvcjoKICNlbmRpZgpAQCAtNDQwMiw4ICs0NDAxLDggQEAgLSAodm9p
ZClfdXBkYXRlQWNjZXNzb3J5CiAKICAgICBzd2l0Y2ggKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uLmVsZW1lbnRUeXBlKSB7CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZToKLSAg
ICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpNb250aDoKICAgICBjYXNlIFdlYktpdDo6SW5wdXRU
eXBlOjpEYXRlVGltZUxvY2FsOgorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1vbnRoOgog
ICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6CiAgICAgICAgIFthY2Nlc3NvcnlWaWV3
IHNldENsZWFyVmlzaWJsZTpZRVNdOwogICAgICAgICByZXR1cm47CkBAIC01NzI5LDcgKzU3Mjgs
NiBAQCBzdGF0aWMgYm9vbCBtYXlDb250YWluU2VsZWN0YWJsZVRleHQoV2ViS2l0OjpJbnB1dFR5
cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIFRoZSBmb2xsb3dpbmcgdHlw
ZXMgbG9vayBhbmQgYmVoYXZlIGxpa2UgYSB0ZXh0IGZpZWxkLgogICAgIGNhc2UgV2ViS2l0OjpJ
bnB1dFR5cGU6OkNvbnRlbnRFZGl0YWJsZToKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpE
YXRlVGltZToKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpFbWFpbDoKICAgICBjYXNlIFdl
YktpdDo6SW5wdXRUeXBlOjpOdW1iZXI6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TnVt
YmVyUGFkOgpAQCAtNTczOSw2ICs1NzM3LDcgQEAgc3RhdGljIGJvb2wgbWF5Q29udGFpblNlbGVj
dGFibGVUZXh0KFdlYktpdDo6SW5wdXRUeXBlIHR5cGUpCiAgICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6VGV4dDoKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0QXJlYToKICAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpVUkw6CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6
RGF0ZVRpbWU6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6V2VlazoKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtNTgwMSw4ICs1ODAwLDEzIEBAIHN0YXRpYyBSZXRhaW5QdHI8
TlNPYmplY3QgPFdLRm9ybVBlcmlwaGVyYWw+PiBjcmVhdGVJbnB1dFBlcmlwaGVyYWxXaXRoVmll
dyhXZWJLCiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29sb3I6CiAgICAgICAgIHJldHVy
biBhZG9wdE5TKFtbV0tGb3JtQ29sb3JDb250cm9sIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlld10p
OwogI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIGNhc2UgV2ViS2l0OjpJ
bnB1dFR5cGU6OkRhdGU6CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWVMb2Nh
bDoKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpNb250aDoKKyAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpUaW1lOgorICAgICAgICByZXR1cm4gYWRvcHROUyhbW1dLRGF0ZVRpbWVJbnB1
dENvbnRyb2wgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3XSk7CiAgICAgZGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuIGFkb3B0TlMoW1tXS0Zvcm1JbnB1dENvbnRyb2wgYWxsb2NdIGluaXRXaXRoVmll
dzp2aWV3XSk7CisgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogI2VuZGlmCiB9CkBAIC02NzUx
LDYgKzY3NTUsMjAgQEAgLSAodm9pZClzaGFyZVNoZWV0RGlkRGlzbWlzczooV0tTaGFyZVNoZWV0
ICopc2hhcmVTaGVldAogfQogI2VuZGlmCiAKKy0gKE5TU3RyaW5nICopaW5wdXRMYWJlbFRleHQK
K3sKKyAgICBpZiAoIV9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmxhYmVsLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmxhYmVsOworCisgICAg
aWYgKCFfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5hcmlhTGFiZWwuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uYXJpYUxhYmVsOworCisgICAg
aWYgKCFfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi50aXRsZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi50aXRsZTsKKworICAgIHJldHVybiBf
Zm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5wbGFjZWhvbGRlcjsKK30KKwogI3ByYWdtYSBtYXJr
IC0gVUlUZXh0SW5wdXRNdWx0aURvY3VtZW50CiAKIC0gKEJPT0wpX3Jlc3RvcmVGb2N1c1dpdGhU
b2tlbjooaWQgPE5TQ29weWluZywgTlNTZWN1cmVDb2Rpbmc+KXRva2VuCkBAIC03NjkyLDEwICs3
NzEwLDE0IEBAIC0gKHZvaWQpX3JlbW92ZUNvbnRleHRNZW51Vmlld0lmUG9zc2libGUKICAgICBp
ZiAoW19hY3Rpb25TaGVldEFzc2lzdGFudCBoYXNDb250ZXh0TWVudUludGVyYWN0aW9uXSkKICAg
ICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgLy8gYW5kIGZvciB0aGUgZmlsZSB1cGxvYWQgcGFu
ZWwuCisgICAgLy8gYW5kIGZvciB0aGUgZmlsZSB1cGxvYWQgcGFuZWwuLi4KICAgICBpZiAoX2Zp
bGVVcGxvYWRQYW5lbCkKICAgICAgICAgcmV0dXJuOwogICAgIAorICAgIC8vIGFuZCBmb3IgdGhl
IGRhdGUvdGltZSBwaWNrZXIuCisgICAgaWYgKFtzZWxmIGRhdGVUaW1lSW5wdXRDb250cm9sXSkK
KyAgICAgICAgcmV0dXJuOworICAgIAogICAgIFtzdGQ6OmV4Y2hhbmdlKF9jb250ZXh0TWVudUhp
bnRDb250YWluZXJWaWV3LCBuaWwpIHJlbW92ZUZyb21TdXBlcnZpZXddOwogfQogCkBAIC04MzEx
LDE2ICs4MzMzLDcgQEAgLSAoVUlWaWV3ICopaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9s
bGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY28KIAogLSAoTlNTdHJpbmcgKilp
bnB1dExhYmVsVGV4dEZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9s
bGVyICopY29udHJvbGxlcgogewotICAgIGlmICghX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24u
bGFiZWwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b24ubGFiZWw7Ci0KLSAgICBpZiAoIV9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmFyaWFMYWJl
bC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5h
cmlhTGFiZWw7Ci0KLSAgICBpZiAoIV9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnRpdGxlLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnRpdGxl
OwotCi0gICAgcmV0dXJuIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnBsYWNlaG9sZGVyOwor
ICAgIHJldHVybiBbc2VsZiBpbnB1dExhYmVsVGV4dF07CiB9CiAKIC0gKE5TU3RyaW5nICopaW5p
dGlhbFZhbHVlRm9yVmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIg
Kiljb250cm9sbGVyCkBAIC04NjEyLDEwICs4NjI1LDEwIEBAIC0gKHZvaWQpX2RvQWZ0ZXJSZWNl
aXZpbmdFZGl0RHJhZ1NuYXBzaG90Rm9yVGVzdGluZzooZGlzcGF0Y2hfYmxvY2tfdClhY3Rpb24K
ICAgICBhY3Rpb24oKTsKIH0KIAotLSAoV0tGb3JtSW5wdXRDb250cm9sICopZm9ybUlucHV0Q29u
dHJvbAorLSAoV0tEYXRlVGltZUlucHV0Q29udHJvbCAqKWRhdGVUaW1lSW5wdXRDb250cm9sCiB7
Ci0gICAgaWYgKFtfaW5wdXRQZXJpcGhlcmFsIGlzS2luZE9mQ2xhc3M6V0tGb3JtSW5wdXRDb250
cm9sLmNsYXNzXSkKLSAgICAgICAgcmV0dXJuIChXS0Zvcm1JbnB1dENvbnRyb2wgKilfaW5wdXRQ
ZXJpcGhlcmFsLmdldCgpOworICAgIGlmIChbX2lucHV0UGVyaXBoZXJhbCBpc0tpbmRPZkNsYXNz
OldLRGF0ZVRpbWVJbnB1dENvbnRyb2wuY2xhc3NdKQorICAgICAgICByZXR1cm4gKFdLRGF0ZVRp
bWVJbnB1dENvbnRyb2wgKilfaW5wdXRQZXJpcGhlcmFsLmdldCgpOwogICAgIHJldHVybiBuaWw7
CiB9CiAKQEAgLTg2ODEsMTYgKzg2OTQsMTYgQEAgLSAodm9pZClzZXRUaW1lUGlja2VyVmFsdWVU
b0hvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZQogICAgIGlmIChb
X3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVyIGlzS2luZE9mQ2xhc3M6W1dL
VGltZVBpY2tlclZpZXdDb250cm9sbGVyIGNsYXNzXV0pCiAgICAgICAgIFsoV0tUaW1lUGlja2Vy
Vmlld0NvbnRyb2xsZXIgKilfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIu
Z2V0KCkgc2V0SG91cjpob3VyIG1pbnV0ZTptaW51dGVdOwogI2VsaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBpZiAoW19pbnB1dFBlcmlwaGVyYWwgaXNLaW5kT2ZDbGFzczpbV0tGb3JtSW5w
dXRDb250cm9sIGNsYXNzXV0pCi0gICAgICAgIFsoV0tGb3JtSW5wdXRDb250cm9sICopX2lucHV0
UGVyaXBoZXJhbC5nZXQoKSBzZXRUaW1lUGlja2VySG91cjpob3VyIG1pbnV0ZTptaW51dGVdOwor
ICAgIGlmIChbX2lucHV0UGVyaXBoZXJhbCBpc0tpbmRPZkNsYXNzOltXS0RhdGVUaW1lSW5wdXRD
b250cm9sIGNsYXNzXV0pCisgICAgICAgIFsoV0tEYXRlVGltZUlucHV0Q29udHJvbCAqKV9pbnB1
dFBlcmlwaGVyYWwuZ2V0KCkgc2V0VGltZVBpY2tlckhvdXI6aG91ciBtaW51dGU6bWludXRlXTsK
ICNlbmRpZgogfQogCiAtIChkb3VibGUpdGltZVBpY2tlclZhbHVlSG91cgogewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgaWYgKFtfaW5wdXRQZXJpcGhlcmFsIGlzS2luZE9mQ2xhc3M6
W1dLRm9ybUlucHV0Q29udHJvbCBjbGFzc11dKQotICAgICAgICByZXR1cm4gWyhXS0Zvcm1JbnB1
dENvbnRyb2wgKilfaW5wdXRQZXJpcGhlcmFsLmdldCgpIHRpbWVQaWNrZXJWYWx1ZUhvdXJdOwor
ICAgIGlmIChbX2lucHV0UGVyaXBoZXJhbCBpc0tpbmRPZkNsYXNzOltXS0RhdGVUaW1lSW5wdXRD
b250cm9sIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wg
KilfaW5wdXRQZXJpcGhlcmFsLmdldCgpIHRpbWVQaWNrZXJWYWx1ZUhvdXJdOwogI2VuZGlmCiAg
ICAgcmV0dXJuIC0xOwogfQpAQCAtODY5OCw4ICs4NzExLDggQEAgLSAoZG91YmxlKXRpbWVQaWNr
ZXJWYWx1ZUhvdXIKIC0gKGRvdWJsZSl0aW1lUGlja2VyVmFsdWVNaW51dGUKIHsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIGlmIChbX2lucHV0UGVyaXBoZXJhbCBpc0tpbmRPZkNsYXNz
OltXS0Zvcm1JbnB1dENvbnRyb2wgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFsoV0tGb3JtSW5w
dXRDb250cm9sICopX2lucHV0UGVyaXBoZXJhbC5nZXQoKSB0aW1lUGlja2VyVmFsdWVNaW51dGVd
OworICAgIGlmIChbX2lucHV0UGVyaXBoZXJhbCBpc0tpbmRPZkNsYXNzOltXS0RhdGVUaW1lSW5w
dXRDb250cm9sIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVJbnB1dENvbnRy
b2wgKilfaW5wdXRQZXJpcGhlcmFsLmdldCgpIHRpbWVQaWNrZXJWYWx1ZU1pbnV0ZV07CiAjZW5k
aWYKICAgICByZXR1cm4gLTE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NGJj
MTQ4ODViMjU2MGFiNGI4NDA5NzU1ZjQzZWYwNTgzN2VhYjM3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wu
aApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisKKyNpbXBvcnQgIldLRm9ybVBlcmlwaGVyYWxCYXNlLmgiCisKK0BjbGFzcyBXS0NvbnRlbnRW
aWV3OworCitAaW50ZXJmYWNlIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wgOiBXS0Zvcm1QZXJpcGhl
cmFsQmFzZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZp
ZXc7CitAZW5kCisKK0BpbnRlcmZhY2UgV0tEYXRlVGltZUlucHV0Q29udHJvbCAoV0tUZXN0aW5n
KQorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqZGF0ZVRpbWVQaWNr
ZXJDYWxlbmRhclR5cGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGRvdWJsZSB0
aW1lUGlja2VyVmFsdWVIb3VyOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBkb3Vi
bGUgdGltZVBpY2tlclZhbHVlTWludXRlOworLSAodm9pZClzZXRUaW1lUGlja2VySG91cjooTlNJ
bnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlOworQGVuZAorCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9sLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVRpbWVJbnB1dENvbnRyb2wubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI4
MTRjZmFjMmM2Y2Y5Y2QzZjE0MmYyNzhkMDYyZmI1ZmJlOTdmMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVUaW1lSW5wdXRDb250cm9s
Lm1tCkBAIC0wLDAgKzEsNDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJXS0RhdGVUaW1lSW5wdXRDb250cm9sLmgiCisKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorCisjaW1wb3J0ICJVc2VySW50ZXJmYWNlSWRpb20uaCIKKyNpbXBvcnQgIldLQ29udGVu
dFZpZXcuaCIKKyNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIgorI2ltcG9ydCAi
V2ViUGFnZVByb3h5LmgiCisjaW1wb3J0IDxVSUtpdC9VSUJhckJ1dHRvbkl0ZW0uaD4KKyNpbXBv
cnQgPFVJS2l0L1VJRGF0ZVBpY2tlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJp
bmdzLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CisKK0BpbnRlcmZhY2UgV0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXIgOiBV
SVZpZXdDb250cm9sbGVyCitAZW5kCisKK0BpbnRlcmZhY2UgV0tEYXRlVGltZVBpY2tlciA6IE5T
T2JqZWN0PFdLRm9ybUNvbnRyb2wKKyNpZiBVU0UoVUlDT05URVhUTUVOVSkKKywgVUlDb250ZXh0
TWVudUludGVyYWN0aW9uRGVsZWdhdGUKKyNlbmRpZgorPiB7CisgICAgUmV0YWluUHRyPFVJRGF0
ZVBpY2tlcj4gX2RhdGVQaWNrZXI7CisgICAgTlNTdHJpbmcgKl9mb3JtYXRTdHJpbmc7CisgICAg
TlNTdHJpbmcgKl9pbml0aWFsVmFsdWU7CisgICAgTlNUaW1lSW50ZXJ2YWwgX2luaXRpYWxWYWx1
ZUFzTnVtYmVyOworICAgIEJPT0wgX3Nob3VsZFJlbW92ZVRpbWVab25lSW5mb3JtYXRpb247Cisg
ICAgQk9PTCBfaXNUaW1lSW5wdXQ7CisgICAgV0tDb250ZW50VmlldyAqX3ZpZXc7CisgICAgQ0dQ
b2ludCBfaW50ZXJhY3Rpb25Qb2ludDsKKyAgICBSZXRhaW5QdHI8V0tEYXRlVGltZUNvbnRleHRN
ZW51Vmlld0NvbnRyb2xsZXI+IF92aWV3Q29udHJvbGxlcjsKKyNpZiBVU0UoVUlDT05URVhUTUVO
VSkKKyAgICBSZXRhaW5QdHI8VUlDb250ZXh0TWVudUludGVyYWN0aW9uPiBfZGF0ZVRpbWVDb250
ZXh0TWVudUludGVyYWN0aW9uOworI2VuZGlmCisgICAgQk9PTCBfcHJlc2VudGluZzsKKyAgICBC
T09MIF9wcmVzZXJ2aW5nRm9jdXM7Cit9CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihX
S0NvbnRlbnRWaWV3ICopdmlldyBkYXRlUGlja2VyTW9kZTooVUlEYXRlUGlja2VyTW9kZSltb2Rl
OworLSAoV0tEYXRlVGltZUNvbnRleHRNZW51Vmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxl
cjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmNhbGVuZGFyVHlw
ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgZG91YmxlIGhvdXI7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGRvdWJsZSBtaW51dGU7CistICh2b2lkKXNldEhvdXI6
KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZTsKK0BlbmQKKworI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV0tGb3JtSW5w
dXRDb250cm9sQWRkaXRpb25zLm1tPgorI2VuZGlmCisKKworQGltcGxlbWVudGF0aW9uIFdLRGF0
ZVRpbWVDb250ZXh0TWVudVZpZXdDb250cm9sbGVyCisKKy0gKENHU2l6ZSlwcmVmZXJyZWRDb250
ZW50U2l6ZQoreworICAgIHJldHVybiBbc2VsZi52aWV3IHN5c3RlbUxheW91dFNpemVGaXR0aW5n
U2l6ZTpVSUxheW91dEZpdHRpbmdDb21wcmVzc2VkU2l6ZV07Cit9CisKK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFdLRGF0ZVRpbWVQaWNrZXIKKworc3RhdGljIE5TU3RyaW5nICogY29uc3Qga0Rh
dGVGb3JtYXRTdHJpbmcgPSBAInl5eXktTU0tZGQiOyAvLyAiMjAxMS0wMS0yNyIuCitzdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCBrTW9udGhGb3JtYXRTdHJpbmcgPSBAInl5eXktTU0iOyAvLyAiMjAx
MS0wMSIuCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBrVGltZUZvcm1hdFN0cmluZyA9IEAiSEg6
bW0iOyAvLyAiMTM6NDUiLgorc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGtNaWxsaXNlY29u
ZHNQZXJTZWNvbmQgPSAxMDAwOworCisjaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIEhB
VkUoVUlEQVRFUElDS0VSX1NUWUxFKQorLSAoVUlEYXRlUGlja2VyU3R5bGUpZGF0ZVBpY2tlclN0
eWxlCit7CisgICAgcmV0dXJuIFVJRGF0ZVBpY2tlclN0eWxlQXV0b21hdGljOworfQorI2VuZGlm
CisKKy0gKGlkKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgZGF0ZVBpY2tlck1v
ZGU6KFVJRGF0ZVBpY2tlck1vZGUpbW9kZQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIF92aWV3ID0gdmlldzsKKyAgICBfaW50ZXJh
Y3Rpb25Qb2ludCA9IFtfdmlldyBsYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbl07CisgICAgX3Nob3Vs
ZFJlbW92ZVRpbWVab25lSW5mb3JtYXRpb24gPSBOTzsKKyAgICBfaXNUaW1lSW5wdXQgPSBOTzsK
KyAgICBzd2l0Y2ggKHZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkg
eworICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlOgorICAgICAgICBfZm9ybWF0U3RyaW5nID0ga0Rh
dGVGb3JtYXRTdHJpbmc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5wdXRUeXBlOjpNb250
aDoKKyAgICAgICAgX2Zvcm1hdFN0cmluZyA9IGtNb250aEZvcm1hdFN0cmluZzsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBJbnB1dFR5cGU6OlRpbWU6CisgICAgICAgIF9mb3JtYXRTdHJpbmcg
PSBrVGltZUZvcm1hdFN0cmluZzsKKyAgICAgICAgX2lzVGltZUlucHV0ID0gWUVTOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIElucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICAgICAgX3No
b3VsZFJlbW92ZVRpbWVab25lSW5mb3JtYXRpb24gPSBZRVM7CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBfZGF0ZVBpY2tlciA9
IGFkb3B0TlMoW1tVSURhdGVQaWNrZXIgYWxsb2NdIGluaXRdKTsKKworICAgIFtfZGF0ZVBpY2tl
ciBzZXREYXRlUGlja2VyTW9kZTptb2RlXTsKKyAgICBbX2RhdGVQaWNrZXIgc2V0SGlkZGVuOk5P
XTsKKyAgICAKKyNpZiBIQVZFKFVJREFURVBJQ0tFUl9TVFlMRSkKKyAgICBbX2RhdGVQaWNrZXIg
c2V0UHJlZmVycmVkRGF0ZVBpY2tlclN0eWxlOltzZWxmIGRhdGVQaWNrZXJTdHlsZV1dOworI2Vu
ZGlmCisgICAgaWYgKFtzZWxmIHNob3VsZFByZXNlbnRHcmVnb3JpYW5DYWxlbmRhcjp2aWV3LmZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb25dKQorICAgICAgICBfZGF0ZVBpY2tlci5nZXQoKS5jYWxl
bmRhciA9IFtOU0NhbGVuZGFyIGNhbGVuZGFyV2l0aElkZW50aWZpZXI6TlNDYWxlbmRhcklkZW50
aWZpZXJHcmVnb3JpYW5dOworICAgIAorICAgIFtfZGF0ZVBpY2tlciBhZGRUYXJnZXQ6c2VsZiBh
Y3Rpb246QHNlbGVjdG9yKF9kYXRlQ2hhbmdlSGFuZGxlcjopIGZvckNvbnRyb2xFdmVudHM6VUlD
b250cm9sRXZlbnRWYWx1ZUNoYW5nZWRdOworICAgIAorICAgIHJldHVybiBzZWxmOworfQorCisj
aWYgVVNFKFVJQ09OVEVYVE1FTlUpCisKKy0gKFVJVGFyZ2V0ZWRQcmV2aWV3ICopY29udGV4dE1l
bnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJl
dmlld0ZvckhpZ2hsaWdodGluZ01lbnVXaXRoQ29uZmlndXJhdGlvbjooVUlDb250ZXh0TWVudUNv
bmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCit7CisgICAgcmV0dXJuIFtfdmlldyBfY3JlYXRl
VGFyZ2V0ZWRDb250ZXh0TWVudUhpbnRQcmV2aWV3SWZQb3NzaWJsZV07Cit9CisKKy0gKF9VSUNv
bnRleHRNZW51U3R5bGUgKilfY29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUlu
dGVyYWN0aW9uICopaW50ZXJhY3Rpb24gc3R5bGVGb3JNZW51V2l0aENvbmZpZ3VyYXRpb246KFVJ
Q29udGV4dE1lbnVDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgoreworICAgIF9VSUNvbnRl
eHRNZW51U3R5bGUgKnN0eWxlID0gW19VSUNvbnRleHRNZW51U3R5bGUgZGVmYXVsdFN0eWxlXTsK
KyAgICBzdHlsZS5oYXNJbnRlcmFjdGl2ZVByZXZpZXcgPSBZRVM7CisgICAgc3R5bGUucHJlZmVy
cmVkTGF5b3V0ID0gX1VJQ29udGV4dE1lbnVMYXlvdXRBdXRvbWF0aWM7CisgICAgcmV0dXJuIHN0
eWxlOworfQorCistIChVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiAqKWNvbnRleHRNZW51SW50
ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIGNvbmZpZ3Vy
YXRpb25Gb3JNZW51QXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbgoreworICAgIHJldHVybiBb
VUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbldpdGhJZGVudGlmaWVyOkAi
X1VJRGF0ZVBpY2tlckNvbXBhY3RFZGl0b3IiIHByZXZpZXdQcm92aWRlcjpeeworCisgICAgICAg
IF92aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXS0RhdGVUaW1lQ29udGV4dE1lbnVWaWV3Q29u
dHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgICAgICBSZXRhaW5QdHI8VUlOYXZpZ2F0aW9uQ29u
dHJvbGxlcj4gbmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlOYXZpZ2F0aW9uQ29u
dHJvbGxlciBhbGxvY10gaW5pdFdpdGhSb290Vmlld0NvbnRyb2xsZXI6X3ZpZXdDb250cm9sbGVy
LmdldCgpXSk7CisgICAgICAgIE5TU3RyaW5nICpyZXNldFN0cmluZyA9IFdFQl9VSV9TVFJJTkdf
S0VZKCJSZXNldCIsICJSZXNldCBCdXR0b24gRGF0ZS9UaW1lIENvbnRleHQgTWVudSIsICJSZXNl
dCBidXR0b24gaW4gZGF0ZSBpbnB1dCBjb250ZXh0IG1lbnUiKTsKKworICAgICAgICBSZXRhaW5Q
dHI8VUlCYXJCdXR0b25JdGVtPiBibGFua0JhckJ1dHRvbiA9IGFkb3B0TlMoW1tVSUJhckJ1dHRv
bkl0ZW0gYWxsb2NdIGluaXRXaXRoQmFyQnV0dG9uU3lzdGVtSXRlbTpVSUJhckJ1dHRvblN5c3Rl
bUl0ZW1GbGV4aWJsZVNwYWNlIHRhcmdldDpuaWwgYWN0aW9uOm5pbF0pOworICAgICAgICBSZXRh
aW5QdHI8VUlCYXJCdXR0b25JdGVtPiByZXNldEJhckJ1dHRvbiA9IGFkb3B0TlMoW1tVSUJhckJ1
dHRvbkl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6cmVzZXRTdHJpbmcgc3R5bGU6VUlCYXJCdXR0
b25JdGVtU3R5bGVQbGFpbiB0YXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKHJlc2V0OildKTsK
KyAgICAgICAgCisgICAgICAgIFtfdmlld0NvbnRyb2xsZXIgc2V0VG9vbGJhckl0ZW1zOkBbYmxh
bmtCYXJCdXR0b24uZ2V0KCksIHJlc2V0QmFyQnV0dG9uLmdldCgpXV07CisgICAgICAgIFtuYXZp
Z2F0aW9uQ29udHJvbGxlciBzZXRUb29sYmFySGlkZGVuOk5PXTsKKworICAgICAgICBbX3ZpZXdD
b250cm9sbGVyIHNldFZpZXc6X2RhdGVQaWNrZXIuZ2V0KCldOworCisgICAgICAgIE5TU3RyaW5n
ICp0aXRsZVRleHQgPSBfdmlldy5pbnB1dExhYmVsVGV4dDsKKyAgICAgICAgaWYgKCFbdGl0bGVU
ZXh0IGlzRXF1YWw6QCIiXSkgeworICAgICAgICAgICAgUmV0YWluUHRyPFVJTGFiZWw+IHRpdGxl
ID0gYWRvcHROUyhbW1VJTGFiZWwgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgICAgIFt0aXRsZSBz
ZXRGb250OltVSUZvbnQgcHJlZmVycmVkRm9udEZvclRleHRTdHlsZTpVSUZvbnRUZXh0U3R5bGVG
b290bm90ZV1dOworICAgICAgICAgICAgW3RpdGxlIHNldFRleHQ6dGl0bGVUZXh0XTsKKyAgICAg
ICAgICAgIFt0aXRsZSBzZXRUZXh0Q29sb3I6W1VJQ29sb3Igc2Vjb25kYXJ5TGFiZWxDb2xvcl1d
OworICAgICAgICAgICAgW3RpdGxlIHNldFRleHRBbGlnbm1lbnQ6TlNUZXh0QWxpZ25tZW50TmF0
dXJhbF07CisgICAgICAgICAgICBSZXRhaW5QdHI8VUlCYXJCdXR0b25JdGVtPiB0aXRsZUJ1dHRv
biA9IGFkb3B0TlMoW1tVSUJhckJ1dHRvbkl0ZW0gYWxsb2NdIGluaXRXaXRoQ3VzdG9tVmlldzp0
aXRsZS5nZXQoKV0pOworICAgICAgICAgICAgW192aWV3Q29udHJvbGxlciBuYXZpZ2F0aW9uSXRl
bV0ubGVmdEJhckJ1dHRvbkl0ZW0gPSB0aXRsZUJ1dHRvbi5nZXQoKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBbbmF2aWdhdGlvbkNvbnRyb2xsZXIgc2V0TmF2aWdhdGlvbkJhckhpZGRl
bjpZRVMgYW5pbWF0ZWQ6Tk9dOworICAgICAgICAKKyAgICAgICAgW25hdmlnYXRpb25Db250cm9s
bGVyIG5hdmlnYXRpb25CYXJdLmJhY2tncm91bmRDb2xvciA9IFVJQ29sb3IuY2xlYXJDb2xvcjsK
KyAgICAgICAgW25hdmlnYXRpb25Db250cm9sbGVyIG5hdmlnYXRpb25CYXJdLnRyYW5zbHVjZW50
ID0gTk87CisgICAgICAgIFtuYXZpZ2F0aW9uQ29udHJvbGxlciB0b29sYmFyXS5iYWNrZ3JvdW5k
Q29sb3IgPSBVSUNvbG9yLmNsZWFyQ29sb3I7CisgICAgICAgIFtuYXZpZ2F0aW9uQ29udHJvbGxl
ciB0b29sYmFyXS50cmFuc2x1Y2VudCA9IE5POworICAgICAgICByZXR1cm4gbmF2aWdhdGlvbkNv
bnRyb2xsZXIuZ2V0KCk7CisgICAgfSBhY3Rpb25Qcm92aWRlcjpuaWxdOworfQorCistICh2b2lk
KWNvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbiAqKWludGVy
YWN0aW9uIHdpbGxFbmRGb3JDb25maWd1cmF0aW9uOihVSUNvbnRleHRNZW51Q29uZmlndXJhdGlv
biAqKWNvbmZpZ3VyYXRpb24gYW5pbWF0b3I6KGlkPFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbkFu
aW1hdGluZz4pYW5pbWF0b3IKK3sKKyAgICBbYW5pbWF0b3IgYWRkQ29tcGxldGlvbjpeeworICAg
ICAgICBbX3ZpZXcgYWNjZXNzb3J5RG9uZV07CisgICAgfV07Cit9CisKKy0gKHZvaWQpcmVtb3Zl
Q29udGV4dE1lbnVJbnRlcmFjdGlvbgoreworICAgIGlmIChfZGF0ZVRpbWVDb250ZXh0TWVudUlu
dGVyYWN0aW9uKSB7CisgICAgICAgIFtfdmlldyByZW1vdmVJbnRlcmFjdGlvbjpfZGF0ZVRpbWVD
b250ZXh0TWVudUludGVyYWN0aW9uLmdldCgpXTsKKyAgICAgICAgX2RhdGVUaW1lQ29udGV4dE1l
bnVJbnRlcmFjdGlvbiA9IG5pbDsKKyAgICAgICAgW192aWV3IF9yZW1vdmVDb250ZXh0TWVudVZp
ZXdJZlBvc3NpYmxlXTsKKyAgICB9Cit9CisKKy0gKHZvaWQpZW5zdXJlQ29udGV4dE1lbnVJbnRl
cmFjdGlvbgoreworICAgIGlmICghX2RhdGVUaW1lQ29udGV4dE1lbnVJbnRlcmFjdGlvbikgewor
ICAgICAgICBfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uID0gYWRvcHROUyhbW1VJQ29u
dGV4dE1lbnVJbnRlcmFjdGlvbiBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZTpzZWxmXSk7CisgICAg
ICAgIFtfdmlldyBhZGRJbnRlcmFjdGlvbjpfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9u
LmdldCgpXTsKKyAgICB9Cit9CisKKy0gKHZvaWQpc2hvd0RhdGVUaW1lUGlja2VyCit7CisjaWYg
SEFWRShVSUNPTlRFWFRNRU5VX0xPQ0FUSU9OKQorICAgIFtzZWxmIGVuc3VyZUNvbnRleHRNZW51
SW50ZXJhY3Rpb25dOworICAgIFtfZGF0ZVRpbWVDb250ZXh0TWVudUludGVyYWN0aW9uIF9wcmVz
ZW50TWVudUF0TG9jYXRpb246X2ludGVyYWN0aW9uUG9pbnRdOworI2VuZGlmCit9CisKKyNlbmRp
ZgorCistICh2b2lkKXJlc2V0OihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBzZXREYXRlVGltZVBp
Y2tlclRvSW5pdGlhbFZhbHVlXTsKKyAgICBbX3ZpZXcgcGFnZV0tPnNldEZvY3VzZWRFbGVtZW50
VmFsdWUoU3RyaW5nKCkpOworfQorCistIChOU1N0cmluZyAqKWNhbGVuZGFyVHlwZQoreworICAg
IHJldHVybiBbX2RhdGVQaWNrZXIgY2FsZW5kYXJdLmNhbGVuZGFySWRlbnRpZmllcjsKK30KKwor
LSAoZG91YmxlKWhvdXIKK3sKKyAgICBOU0NhbGVuZGFyICpjYWxlbmRhciA9IFtOU0NhbGVuZGFy
IGN1cnJlbnRDYWxlbmRhcl07CisgICAgTlNEYXRlQ29tcG9uZW50cyAqY29tcG9uZW50cyA9IFtj
YWxlbmRhciBjb21wb25lbnRzOk5TQ2FsZW5kYXJVbml0SG91ciBmcm9tRGF0ZTpbX2RhdGVQaWNr
ZXIgZGF0ZV1dOworCisgICAgcmV0dXJuIFtjb21wb25lbnRzIGhvdXJdOworfQorCistIChkb3Vi
bGUpbWludXRlCit7CisgICAgTlNDYWxlbmRhciAqY2FsZW5kYXIgPSBbTlNDYWxlbmRhciBjdXJy
ZW50Q2FsZW5kYXJdOworICAgIE5TRGF0ZUNvbXBvbmVudHMgKmNvbXBvbmVudHMgPSBbY2FsZW5k
YXIgY29tcG9uZW50czpOU0NhbGVuZGFyVW5pdE1pbnV0ZSBmcm9tRGF0ZTpbX2RhdGVQaWNrZXIg
ZGF0ZV1dOworCisgICAgcmV0dXJuIFtjb21wb25lbnRzIG1pbnV0ZV07Cit9CisKKy0gKHZvaWQp
ZGVhbGxvYworeworICAgIFtfZGF0ZVBpY2tlciByZW1vdmVUYXJnZXQ6c2VsZiBhY3Rpb246TlVM
TCBmb3JDb250cm9sRXZlbnRzOlVJQ29udHJvbEV2ZW50VmFsdWVDaGFuZ2VkXTsKKyAgICBbc2Vs
ZiByZW1vdmVDb250ZXh0TWVudUludGVyYWN0aW9uXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9
CisKKy0gKEJPT0wpc2hvdWxkUHJlc2VudEdyZWdvcmlhbkNhbGVuZGFyOihjb25zdCBGb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uJilub2RlSW5mbworeworICAgIHJldHVybiBub2RlSW5mby5hdXRv
ZmlsbEZpZWxkTmFtZSA9PSBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Q2NFeHBNb250aAor
ICAgICAgICB8fCBub2RlSW5mby5hdXRvZmlsbEZpZWxkTmFtZSA9PSBXZWJDb3JlOjpBdXRvZmls
bEZpZWxkTmFtZTo6Q2NFeHAKKyAgICAgICAgfHwgbm9kZUluZm8uYXV0b2ZpbGxGaWVsZE5hbWUg
PT0gV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwWWVhcjsKK30KKworLSAoVUlWaWV3
ICopY29udHJvbFZpZXcKK3sKKyAgICByZXR1cm4gX2RhdGVQaWNrZXIuZ2V0KCk7Cit9CisKKy0g
KE5TSW50ZWdlcilfdGltZVpvbmVPZmZzZXRGcm9tR01UOihOU0RhdGUgKilkYXRlCit7CisgICAg
aWYgKCFfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbikKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICByZXR1cm4gW19kYXRlUGlja2VyLmdldCgpLnRpbWVab25lIHNlY29uZHNGcm9tR01U
Rm9yRGF0ZTpkYXRlXTsKK30KKworLSAoTlNTdHJpbmcgKilfc2FuaXRpemVJbnB1dFZhbHVlRm9y
Rm9ybWF0dGVyOihOU1N0cmluZyAqKXZhbHVlCit7CisgICAgLy8gVGhlICJ0aW1lIiBpbnB1dCB0
eXBlIG1heSBoYXZlIHNlY29uZHMgYW5kIG1pbGxpc2Vjb25kcyBpbmZvcm1hdGlvbiB3aGljaCB3
ZQorICAgIC8vIGp1c3QgaWdub3JlLiBGb3IgZXhhbXBsZTogIjAxOjU2OjIwLjM5MSIgaXMgc2hv
cnRlbmVkIHRvIGp1c3QgIjAxOjU2Ii4KKyAgICBpZiAoX2lzVGltZUlucHV0KQorICAgICAgICBy
ZXR1cm4gW3ZhbHVlIHN1YnN0cmluZ1RvSW5kZXg6W2tUaW1lRm9ybWF0U3RyaW5nIGxlbmd0aF1d
OworCisgICAgcmV0dXJuIHZhbHVlOworfQorCistICh2b2lkKV9kYXRlQ2hhbmdlZFNldEFzTnVt
YmVyCit7CisgICAgTlNEYXRlICpkYXRlID0gW19kYXRlUGlja2VyIGRhdGVdOworICAgIFtfdmll
dyB1cGRhdGVGb2N1c2VkRWxlbWVudFZhbHVlQXNOdW1iZXI6KFtkYXRlIHRpbWVJbnRlcnZhbFNp
bmNlMTk3MF0gKyBbc2VsZiBfdGltZVpvbmVPZmZzZXRGcm9tR01UOmRhdGVdKSAqIGtNaWxsaXNl
Y29uZHNQZXJTZWNvbmRdOworfQorCistIChSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPilkYXRl
Rm9ybWF0dGVyRm9yUGlja2VyCit7CisgICAgUmV0YWluUHRyPE5TTG9jYWxlPiBlbmdsaXNoTG9j
YWxlID0gYWRvcHROUyhbW05TTG9jYWxlIGFsbG9jXSBpbml0V2l0aExvY2FsZUlkZW50aWZpZXI6
QCJlbl9VU19QT1NJWCJdKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBkYXRlRm9y
bWF0dGVyID0gYWRvcHROUyhbW05TRGF0ZUZvcm1hdHRlciBhbGxvY10gaW5pdF0pOworICAgIFtk
YXRlRm9ybWF0dGVyIHNldFRpbWVab25lOl9kYXRlUGlja2VyLmdldCgpLnRpbWVab25lXTsKKyAg
ICBbZGF0ZUZvcm1hdHRlciBzZXREYXRlRm9ybWF0Ol9mb3JtYXRTdHJpbmddOworICAgIFtkYXRl
Rm9ybWF0dGVyIHNldExvY2FsZTplbmdsaXNoTG9jYWxlLmdldCgpXTsKKyAgICByZXR1cm4gZGF0
ZUZvcm1hdHRlcjsKK30KKworLSAodm9pZClfZGF0ZUNoYW5nZWRTZXRBc1N0cmluZworeworICAg
IC8vIEZvcmNlIEVuZ2xpc2ggbG9jYWxlIGJlY2F1c2UgdGhhdCBpcyB3aGF0IEhUTUw1IHZhbHVl
IHBhcnNpbmcgZXhwZWN0cy4KKyAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBkYXRlRm9y
bWF0dGVyID0gW3NlbGYgZGF0ZUZvcm1hdHRlckZvclBpY2tlcl07CisgICAgW192aWV3IHVwZGF0
ZUZvY3VzZWRFbGVtZW50VmFsdWU6W2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6W19kYXRl
UGlja2VyIGRhdGVdXV07Cit9CisKKy0gKHZvaWQpX2RhdGVDaGFuZ2VkCit7CisgICAgLy8gSW50
ZXJuYWxseSwgRE9NSFRNTElucHV0RWxlbWVudCBzZXRWYWx1ZUFzKiBlYWNoIHRha2UgZGlmZmVy
ZW50IHZhbHVlcyBmb3IKKyAgICAvLyBkaWZmZXJlbnQgZGF0ZSB0eXBlcy4gSXQgaXMgc29tZXRp
bWVzIGVhc2llciB0byBzZXQgdGhlIGRhdGUgaW4gZGlmZmVyZW50IHdheXM6CisgICAgLy8gICAt
IHVzZSBzZXRWYWx1ZUFzU3RyaW5nIGZvciAiZGF0ZSIsICJtb250aCIsIGFuZCAidGltZSIuCisg
ICAgLy8gICAtIHVzZSBzZXRWYWx1ZUFzTnVtYmVyIGZvciAiZGF0ZXRpbWUtbG9jYWwiLgorICAg
IGlmIChfZm9ybWF0U3RyaW5nKQorICAgICAgICBbc2VsZiBfZGF0ZUNoYW5nZWRTZXRBc1N0cmlu
Z107CisgICAgZWxzZQorICAgICAgICBbc2VsZiBfZGF0ZUNoYW5nZWRTZXRBc051bWJlcl07Cit9
CisKKy0gKHZvaWQpX2RhdGVDaGFuZ2VIYW5kbGVyOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBf
ZGF0ZUNoYW5nZWRdOworfQorCistICh2b2lkKXNldERhdGVUaW1lUGlja2VyVG9Jbml0aWFsVmFs
dWUKK3sKKyAgICBpZiAoW19pbml0aWFsVmFsdWUgaXNFcXVhbDogQCIiXSkgeworICAgICAgICBb
X2RhdGVQaWNrZXIgc2V0RGF0ZTpbTlNEYXRlIGRhdGVdXTsKKyAgICAgICAgW3NlbGYgX2RhdGVD
aGFuZ2VkXTsKKyAgICB9IGVsc2UgaWYgKF9mb3JtYXRTdHJpbmcpIHsKKyAgICAgICAgLy8gQ29u
dmVydCB0aGUgc3RyaW5nIHZhbHVlIHRvIGEgZGF0ZSBvYmplY3QgZm9yIHRoZSBmaWVsZHMgd2hl
cmUgd2UgaGF2ZSBhIGZvcm1hdCBzdHJpbmcuCisgICAgICAgIFJldGFpblB0cjxOU0RhdGVGb3Jt
YXR0ZXI+IGRhdGVGb3JtYXR0ZXIgPSBbc2VsZiBkYXRlRm9ybWF0dGVyRm9yUGlja2VyXTsKKyAg
ICAgICAgTlNEYXRlICpwYXJzZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgZGF0ZUZyb21TdHJpbmc6
W3NlbGYgX3Nhbml0aXplSW5wdXRWYWx1ZUZvckZvcm1hdHRlcjpfaW5pdGlhbFZhbHVlXV07Cisg
ICAgICAgIFtfZGF0ZVBpY2tlciBzZXREYXRlOnBhcnNlZERhdGUgPyBwYXJzZWREYXRlIDogW05T
RGF0ZSBkYXRlXV07CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gQ29udmVydCB0aGUgbnVtYmVy
IHZhbHVlIHRvIGEgZGF0ZSBvYmplY3QgZm9yIHRoZSBmaWVsZHMgYWZmZWN0ZWQgYnkgdGltZXpv
bmVzLgorICAgICAgICBOU1RpbWVJbnRlcnZhbCBzZWNvbmRzU2luY2UxOTcwID0gX2luaXRpYWxW
YWx1ZUFzTnVtYmVyIC8ga01pbGxpc2Vjb25kc1BlclNlY29uZDsKKyAgICAgICAgTlNJbnRlZ2Vy
IHRpbWVab25lT2Zmc2V0ID0gW3NlbGYgX3RpbWVab25lT2Zmc2V0RnJvbUdNVDpbTlNEYXRlIGRh
dGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOnNlY29uZHNTaW5jZTE5NzBdXTsKKyAgICAgICAg
TlNUaW1lSW50ZXJ2YWwgYWRqdXN0ZWRTZWNvbmRzU2luY2UxOTcwID0gc2Vjb25kc1NpbmNlMTk3
MCAtIHRpbWVab25lT2Zmc2V0OworICAgICAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpbTlNEYXRl
IGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOmFkanVzdGVkU2Vjb25kc1NpbmNlMTk3MF1d
OworICAgIH0KK30KKworLSAodm9pZCljb250cm9sQmVnaW5FZGl0aW5nCit7CisgICAgCisgICAg
aWYgKF9wcmVzZW50aW5nKQorICAgICAgICByZXR1cm47CisgICAgX3ByZXNlbnRpbmcgPSBZRVM7
CisKKyAgICBpZiAoIV9wcmVzZXJ2aW5nRm9jdXMgJiYgKF92aWV3LmZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24uZWxlbWVudFR5cGUgPT0gSW5wdXRUeXBlOjpUaW1lIHx8IF92aWV3LmZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gSW5wdXRUeXBlOjpEYXRlVGltZUxvY2Fs
KSkgeworICAgICAgICBbX3ZpZXcgcHJlc2VydmVGb2N1c107CisgICAgICAgIF9wcmVzZXJ2aW5n
Rm9jdXMgPSBZRVM7CisgICAgfQorICAgIAorICAgIC8vIFNldCB0aGUgdGltZSB6b25lIGluIGNh
c2UgaXQgY2hhbmdlZC4KKyAgICBfZGF0ZVBpY2tlci5nZXQoKS50aW1lWm9uZSA9IFtOU1RpbWVa
b25lIGxvY2FsVGltZVpvbmVdOworCisgICAgLy8gQ3VycmVudGx5IG5vIHZhbHVlIGZvciB0aGUg
PGlucHV0Pi4gU3RhcnQgdGhlIHBpY2tlciB3aXRoIHRoZSBjdXJyZW50IHRpbWUuCisgICAgLy8g
QWxzbywgdXBkYXRlIHRoZSBhY3R1YWwgPGlucHV0PiB2YWx1ZS4KKyAgICBfaW5pdGlhbFZhbHVl
ID0gX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi52YWx1ZTsKKyAgICBfaW5pdGlhbFZh
bHVlQXNOdW1iZXIgPSBfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnZhbHVlQXNOdW1i
ZXI7CisgICAgW3NlbGYgc2V0RGF0ZVRpbWVQaWNrZXJUb0luaXRpYWxWYWx1ZV07CisgICAgCisg
ICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCBwb3NpdGlvbkluZm9ybWF0
aW9uUmVxdWVzdCB7IFdlYkNvcmU6OkludFBvaW50KF92aWV3LmZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24ubGFzdEludGVyYWN0aW9uTG9jYXRpb24pIH07CisgICAgW192aWV3IGRvQWZ0ZXJQb3Np
dGlvbkluZm9ybWF0aW9uVXBkYXRlOl4oV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbiBpbnRlcmFjdGlvbkluZm9ybWF0aW9uKSB7CisgICAgICAgIFtzZWxmIHNob3dEYXRl
VGltZVBpY2tlcl07CisgICAgfSBmb3JSZXF1ZXN0OnBvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
XTsKKworfQorCistICh2b2lkKXNldEhvdXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRl
Z2VyKW1pbnV0ZQoreworICAgIE5TU3RyaW5nICp0aW1lU3RyaW5nID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCIlLjJsZDolLjJsZCIsIChsb25nKWhvdXIsIChsb25nKW1pbnV0ZV07Cisg
ICAgW19kYXRlUGlja2VyIHNldERhdGU6W1tzZWxmIGRhdGVGb3JtYXR0ZXJGb3JQaWNrZXJdIGRh
dGVGcm9tU3RyaW5nOnRpbWVTdHJpbmddXTsKKyAgICBbc2VsZiBfZGF0ZUNoYW5nZWRdOworfQor
CistIChXS0RhdGVUaW1lQ29udGV4dE1lbnVWaWV3Q29udHJvbGxlciAqKXZpZXdDb250cm9sbGVy
Cit7CisgICAgcmV0dXJuIF92aWV3Q29udHJvbGxlci5nZXQoKTsKK30KKworLSAodm9pZCljb250
cm9sRW5kRWRpdGluZworeworICAgIF9wcmVzZW50aW5nID0gTk87CisgICAgaWYgKF9wcmVzZXJ2
aW5nRm9jdXMpIHsKKyAgICAgICAgW192aWV3IHJlbGVhc2VGb2N1c107CisgICAgICAgIF9wcmVz
ZXJ2aW5nRm9jdXMgPSBOTzsKKyAgICB9CisgICAgW3NlbGYgcmVtb3ZlQ29udGV4dE1lbnVJbnRl
cmFjdGlvbl07Cit9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0RhdGVUaW1lSW5wdXRDb250
cm9sCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3
Cit7CisgICAgVUlEYXRlUGlja2VyTW9kZSBtb2RlOworCisgICAgc3dpdGNoICh2aWV3LmZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKKyAgICBjYXNlIElucHV0VHlwZTo6
RGF0ZToKKyAgICAgICAgbW9kZSA9IFVJRGF0ZVBpY2tlck1vZGVEYXRlOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIElucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICAgICAgbW9kZSA9IFVJ
RGF0ZVBpY2tlck1vZGVEYXRlQW5kVGltZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnB1
dFR5cGU6OlRpbWU6CisgICAgICAgIG1vZGUgPSBVSURhdGVQaWNrZXJNb2RlVGltZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBJbnB1dFR5cGU6Ok1vbnRoOgorICAgICAgICBtb2RlID0gKFVJ
RGF0ZVBpY2tlck1vZGUpVUlEYXRlUGlja2VyTW9kZVllYXJBbmRNb250aDsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgW3NlbGYgcmVsZWFzZV07CisgICAgICAgIHJldHVy
biBuaWw7CisgICAgfQorCisgICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aFZpZXc6dmlldyBjb250
cm9sOmFkb3B0TlMoW1tXS0RhdGVUaW1lUGlja2VyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlldyBk
YXRlUGlja2VyTW9kZTptb2RlXSldOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0Rh
dGVUaW1lSW5wdXRDb250cm9sIChXS1Rlc3RpbmcpCisKKy0gKHZvaWQpc2V0VGltZVBpY2tlckhv
dXI6KE5TSW50ZWdlcilob3VyIG1pbnV0ZTooTlNJbnRlZ2VyKW1pbnV0ZQoreworICAgIGlmIChb
c2VsZi5jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBpY2tlci5jbGFzc10pCisgICAg
ICAgIFsoV0tEYXRlVGltZVBpY2tlciAqKXNlbGYuY29udHJvbCBzZXRIb3VyOmhvdXIgbWludXRl
Om1pbnV0ZV07Cit9CisKKy0gKE5TU3RyaW5nICopZGF0ZVRpbWVQaWNrZXJDYWxlbmRhclR5cGUK
K3sKKyAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQaWNrZXIu
Y2xhc3NdKQorICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUGlja2VyICopc2VsZi5jb250cm9s
IGNhbGVuZGFyVHlwZV07CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoZG91YmxlKXRpbWVQaWNr
ZXJWYWx1ZUhvdXIKK3sKKyAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0
ZVRpbWVQaWNrZXIuY2xhc3NdKQorICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUGlja2VyICop
c2VsZi5jb250cm9sIGhvdXJdOworICAgIHJldHVybiAtMTsKK30KKworLSAoZG91YmxlKXRpbWVQ
aWNrZXJWYWx1ZU1pbnV0ZQoreworICAgIGlmIChbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xhc3M6
V0tEYXRlVGltZVBpY2tlci5jbGFzc10pCisgICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVQaWNr
ZXIgKilzZWxmLmNvbnRyb2wgbWludXRlXTsKKyAgICByZXR1cm4gLTE7Cit9CisKK0BlbmQKKwor
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDY3NWExMjRiOWVmMzk2YzA4MGYzOGJlNjU5NmZhNzM4YTdjYzg1YjAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotCi0jaW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oIgotCi1AY2xhc3MgV0tDb250ZW50
VmlldzsKLQotQGludGVyZmFjZSBXS0Zvcm1JbnB1dENvbnRyb2wgOiBXS0Zvcm1QZXJpcGhlcmFs
QmFzZQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXc7
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgV0tGb3JtSW5wdXRDb250cm9sIChXS1Rlc3RpbmcpCi1AcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpkYXRlVGltZVBpY2tlckNhbGVu
ZGFyVHlwZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgZG91YmxlIHRpbWVQaWNr
ZXJWYWx1ZUhvdXI7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGRvdWJsZSB0aW1l
UGlja2VyVmFsdWVNaW51dGU7Ci0tICh2b2lkKXNldFRpbWVQaWNrZXJIb3VyOihOU0ludGVnZXIp
aG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51dGU7Ci1AZW5kCi0KLSNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRm9ybUlucHV0Q29udHJvbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQ1MTAwOWE5NGEyM2VmMDViZWU0MzUwMzUxOTQxODkwZmVmMWIzNjQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRm9ybUlucHV0Q29udHJvbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDUwMiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXS0Zvcm1J
bnB1dENvbnRyb2wuaCIKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLSNpbXBvcnQgIlVz
ZXJJbnRlcmZhY2VJZGlvbS5oIgotI2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgotI2ltcG9ydCAi
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCi0jaW1wb3J0ICJXS0Zvcm1Qb3BvdmVyLmgiCi0j
aW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNpbXBvcnQgPFVJS2l0L1VJQmFyQnV0dG9uSXRlbS5o
PgotI2ltcG9ydCA8VUlLaXQvVUlEYXRlUGlja2VyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0xvY2Fs
aXplZFN0cmluZ3MuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKLQotQGludGVyZmFjZSBXS0RhdGVUaW1lUG9wb3ZlclZpZXdDb250cm9sbGVy
IDogVUlWaWV3Q29udHJvbGxlciB7Ci0gICAgUmV0YWluUHRyPE5TT2JqZWN0PFdLRm9ybUNvbnRy
b2w+PiBfaW5uZXJDb250cm9sOwotfQotLSAoaWQpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3
ICopdmlldyBkYXRlUGlja2VyTW9kZTooVUlEYXRlUGlja2VyTW9kZSlkYXRlUGlja2VyTW9kZTsK
LS0gKE5TT2JqZWN0PFdLRm9ybUNvbnRyb2w+ICopaW5uZXJDb250cm9sOwotQGVuZAotCi1AaW50
ZXJmYWNlIFdLRGF0ZVRpbWVQb3BvdmVyIDogV0tGb3JtUm90YXRpbmdBY2Nlc3NvcnlQb3BvdmVy
PFdLRm9ybUNvbnRyb2w+IHsKLSAgICBSZXRhaW5QdHI8V0tEYXRlVGltZVBvcG92ZXJWaWV3Q29u
dHJvbGxlcj4gX3ZpZXdDb250cm9sbGVyOwotICAgIFdLQ29udGVudFZpZXcgKl92aWV3OwotICAg
IEJPT0wgX3ByZXNlbnRpbmc7Ci0gICAgQk9PTCBfcHJlc2VydmluZ0ZvY3VzOwotfQotLSAoaWQp
aW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldyBkYXRlUGlja2VyTW9kZTooVUlEYXRl
UGlja2VyTW9kZSltb2RlOwotLSAoV0tEYXRlVGltZVBvcG92ZXJWaWV3Q29udHJvbGxlciAqKXZp
ZXdDb250cm9sbGVyOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAq
Y2FsZW5kYXJUeXBlOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBkb3VibGUgaG91
cjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgZG91YmxlIG1pbnV0ZTsKLS0gKHZv
aWQpc2V0SG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlOwotQGVu
ZAotCi1AaW50ZXJmYWNlIFdLRGF0ZVRpbWVQaWNrZXIgOiBOU09iamVjdDxXS0Zvcm1Db250cm9s
PiB7Ci0gICAgUmV0YWluUHRyPFVJRGF0ZVBpY2tlcj4gX2RhdGVQaWNrZXI7Ci0gICAgTlNTdHJp
bmcgKl9mb3JtYXRTdHJpbmc7Ci0gICAgQk9PTCBfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1h
dGlvbjsKLSAgICBCT09MIF9pc1RpbWVJbnB1dDsKLSAgICBXS0NvbnRlbnRWaWV3KiBfdmlldzsK
LX0KLS0gKGlkKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgZGF0ZVBpY2tlck1v
ZGU6KFVJRGF0ZVBpY2tlck1vZGUpbW9kZTsKLS0gKFVJRGF0ZVBpY2tlciAqKWRhdGVQaWNrZXI7
Ci0KLUBlbmQKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRB
ZGRpdGlvbnMvV0tGb3JtSW5wdXRDb250cm9sQWRkaXRpb25zLm1tPgotI2VuZGlmCi0KLUBpbXBs
ZW1lbnRhdGlvbiBXS0RhdGVUaW1lUGlja2VyCi0KLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGtE
YXRlRm9ybWF0U3RyaW5nID0gQCJ5eXl5LU1NLWRkIjsgLy8gIjIwMTEtMDEtMjciLgotc3RhdGlj
IE5TU3RyaW5nICogY29uc3Qga01vbnRoRm9ybWF0U3RyaW5nID0gQCJ5eXl5LU1NIjsgLy8gIjIw
MTEtMDEiLgotc3RhdGljIE5TU3RyaW5nICogY29uc3Qga1RpbWVGb3JtYXRTdHJpbmcgPSBAIkhI
Om1tIjsgLy8gIjEzOjQ1Ii4KLXN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBrTWlsbGlzZWNv
bmRzUGVyU2Vjb25kID0gMTAwMDsKLQotLSAoVUlEYXRlUGlja2VyICopZGF0ZVBpY2tlcgotewot
ICAgIHJldHVybiBfZGF0ZVBpY2tlci5nZXQoKTsKLX0KLQotI2lmICFVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKSAmJiBIQVZFKFVJREFURVBJQ0tFUl9TVFlMRSkKLS0gKFVJRGF0ZVBpY2tlclN0eWxl
KWRhdGVQaWNrZXJTdHlsZQotewotICAgIHJldHVybiBVSURhdGVQaWNrZXJTdHlsZUF1dG9tYXRp
YzsKLX0KLSNlbmRpZgotCi0tIChpZClpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3
IGRhdGVQaWNrZXJNb2RlOihVSURhdGVQaWNrZXJNb2RlKW1vZGUKLXsKLSAgICBpZiAoIShzZWxm
ID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF92aWV3ID0gdmll
dzsKLSAgICBfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbiA9IE5POwotICAgIF9pc1Rp
bWVJbnB1dCA9IE5POwotICAgIHN3aXRjaCAodmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
LmVsZW1lbnRUeXBlKSB7Ci0gICAgY2FzZSBJbnB1dFR5cGU6OkRhdGU6Ci0gICAgICAgIF9mb3Jt
YXRTdHJpbmcgPSBrRGF0ZUZvcm1hdFN0cmluZzsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
bnB1dFR5cGU6Ok1vbnRoOgotICAgICAgICBfZm9ybWF0U3RyaW5nID0ga01vbnRoRm9ybWF0U3Ry
aW5nOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIElucHV0VHlwZTo6VGltZToKLSAgICAgICAg
X2Zvcm1hdFN0cmluZyA9IGtUaW1lRm9ybWF0U3RyaW5nOwotICAgICAgICBfaXNUaW1lSW5wdXQg
PSBZRVM7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlVGltZUxvY2Fs
OgotICAgICAgICBfc2hvdWxkUmVtb3ZlVGltZVpvbmVJbmZvcm1hdGlvbiA9IFlFUzsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIAotICAg
IF9kYXRlUGlja2VyID0gYWRvcHROUyhbW1VJRGF0ZVBpY2tlciBhbGxvY10gaW5pdF0pOwotCi0g
ICAgW19kYXRlUGlja2VyIHNldERhdGVQaWNrZXJNb2RlOm1vZGVdOwotICAgIFtfZGF0ZVBpY2tl
ciBzZXRIaWRkZW46Tk9dOwotICAgIAotI2lmIEhBVkUoVUlEQVRFUElDS0VSX1NUWUxFKQotICAg
IFtfZGF0ZVBpY2tlciBzZXRQcmVmZXJyZWREYXRlUGlja2VyU3R5bGU6W3NlbGYgZGF0ZVBpY2tl
clN0eWxlXV07Ci0jZW5kaWYKLSAgICAKLSAgICBhdXRvIHNpemUgPSBbX2RhdGVQaWNrZXIgc2l6
ZVRoYXRGaXRzOkNHU2l6ZU1ha2Uodmlldy5mcmFtZS5zaXplLndpZHRoLCAwKV07Ci0gICAgW19k
YXRlUGlja2VyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0aCwgc2l6ZS5oZWln
aHQpXTsKLSAgICAKLSAgICBpZiAoW3NlbGYgc2hvdWxkUHJlc2VudEdyZWdvcmlhbkNhbGVuZGFy
OnZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbl0pCi0gICAgICAgIF9kYXRlUGlja2VyLmdl
dCgpLmNhbGVuZGFyID0gW05TQ2FsZW5kYXIgY2FsZW5kYXJXaXRoSWRlbnRpZmllcjpOU0NhbGVu
ZGFySWRlbnRpZmllckdyZWdvcmlhbl07Ci0gICAgCi0gICAgW19kYXRlUGlja2VyIGFkZFRhcmdl
dDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX2RhdGVDaGFuZ2VIYW5kbGVyOikgZm9yQ29udHJvbEV2
ZW50czpVSUNvbnRyb2xFdmVudFZhbHVlQ2hhbmdlZF07Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0K
LQotLSAoTlNTdHJpbmcgKiljYWxlbmRhclR5cGUKLXsKLSAgICByZXR1cm4gX2RhdGVQaWNrZXIu
Z2V0KCkuY2FsZW5kYXIuY2FsZW5kYXJJZGVudGlmaWVyOwotfQotCi0tIChkb3VibGUpaG91cgot
ewotICAgIE5TQ2FsZW5kYXIgKmNhbGVuZGFyID0gW05TQ2FsZW5kYXIgY3VycmVudENhbGVuZGFy
XTsKLSAgICBOU0RhdGVDb21wb25lbnRzICpjb21wb25lbnRzID0gW2NhbGVuZGFyIGNvbXBvbmVu
dHM6TlNDYWxlbmRhclVuaXRIb3VyIGZyb21EYXRlOltfZGF0ZVBpY2tlciBkYXRlXV07Ci0KLSAg
ICByZXR1cm4gW2NvbXBvbmVudHMgaG91cl07Ci19Ci0KLS0gKGRvdWJsZSltaW51dGUKLXsKLSAg
ICBOU0NhbGVuZGFyICpjYWxlbmRhciA9IFtOU0NhbGVuZGFyIGN1cnJlbnRDYWxlbmRhcl07Ci0g
ICAgTlNEYXRlQ29tcG9uZW50cyAqY29tcG9uZW50cyA9IFtjYWxlbmRhciBjb21wb25lbnRzOk5T
Q2FsZW5kYXJVbml0TWludXRlIGZyb21EYXRlOltfZGF0ZVBpY2tlciBkYXRlXV07Ci0KLSAgICBy
ZXR1cm4gW2NvbXBvbmVudHMgbWludXRlXTsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAg
W19kYXRlUGlja2VyIHJlbW92ZVRhcmdldDpzZWxmIGFjdGlvbjpOVUxMIGZvckNvbnRyb2xFdmVu
dHM6VUlDb250cm9sRXZlbnRWYWx1ZUNoYW5nZWRdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0K
LQotLSAoQk9PTClzaG91bGRQcmVzZW50R3JlZ29yaWFuQ2FsZW5kYXI6KGNvbnN0IEZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24mKW5vZGVJbmZvCi17Ci0gICAgcmV0dXJuIG5vZGVJbmZvLmF1dG9m
aWxsRmllbGROYW1lID09IFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1lOjpDY0V4cE1vbnRoCi0g
ICAgICAgIHx8IG5vZGVJbmZvLmF1dG9maWxsRmllbGROYW1lID09IFdlYkNvcmU6OkF1dG9maWxs
RmllbGROYW1lOjpDY0V4cAotICAgICAgICB8fCBub2RlSW5mby5hdXRvZmlsbEZpZWxkTmFtZSA9
PSBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Q2NFeHBZZWFyOwotfQotCi0tIChVSVZpZXcg
Kiljb250cm9sVmlldwotewotICAgIHJldHVybiBfZGF0ZVBpY2tlci5nZXQoKTsKLX0KLQotLSAo
TlNJbnRlZ2VyKV90aW1lWm9uZU9mZnNldEZyb21HTVQ6KE5TRGF0ZSAqKWRhdGUKLXsKLSAgICBp
ZiAoIV9zaG91bGRSZW1vdmVUaW1lWm9uZUluZm9ybWF0aW9uKQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIHJldHVybiBbX2RhdGVQaWNrZXIuZ2V0KCkudGltZVpvbmUgc2Vjb25kc0Zyb21HTVRG
b3JEYXRlOmRhdGVdOwotfQotCi0tIChOU1N0cmluZyAqKV9zYW5pdGl6ZUlucHV0VmFsdWVGb3JG
b3JtYXR0ZXI6KE5TU3RyaW5nICopdmFsdWUKLXsKLSAgICAvLyBUaGUgInRpbWUiIGlucHV0IHR5
cGUgbWF5IGhhdmUgc2Vjb25kcyBhbmQgbWlsbGlzZWNvbmRzIGluZm9ybWF0aW9uIHdoaWNoIHdl
Ci0gICAgLy8ganVzdCBpZ25vcmUuIEZvciBleGFtcGxlOiAiMDE6NTY6MjAuMzkxIiBpcyBzaG9y
dGVuZWQgdG8ganVzdCAiMDE6NTYiLgotICAgIGlmIChfaXNUaW1lSW5wdXQpCi0gICAgICAgIHJl
dHVybiBbdmFsdWUgc3Vic3RyaW5nVG9JbmRleDpba1RpbWVGb3JtYXRTdHJpbmcgbGVuZ3RoXV07
Ci0KLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KLS0gKHZvaWQpX2RhdGVDaGFuZ2VkU2V0QXNOdW1i
ZXIKLXsKLSAgICBOU0RhdGUgKmRhdGUgPSBbX2RhdGVQaWNrZXIgZGF0ZV07Ci0gICAgW192aWV3
IHVwZGF0ZUZvY3VzZWRFbGVtZW50VmFsdWVBc051bWJlcjooW2RhdGUgdGltZUludGVydmFsU2lu
Y2UxOTcwXSArIFtzZWxmIF90aW1lWm9uZU9mZnNldEZyb21HTVQ6ZGF0ZV0pICoga01pbGxpc2Vj
b25kc1BlclNlY29uZF07Ci19Ci0KLS0gKFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+KWRhdGVG
b3JtYXR0ZXJGb3JQaWNrZXIKLXsKLSAgICBSZXRhaW5QdHI8TlNMb2NhbGU+IGVuZ2xpc2hMb2Nh
bGUgPSBhZG9wdE5TKFtbTlNMb2NhbGUgYWxsb2NdIGluaXRXaXRoTG9jYWxlSWRlbnRpZmllcjpA
ImVuX1VTX1BPU0lYIl0pOwotICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGRhdGVGb3Jt
YXR0ZXIgPSBhZG9wdE5TKFtbTlNEYXRlRm9ybWF0dGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW2Rh
dGVGb3JtYXR0ZXIgc2V0VGltZVpvbmU6X2RhdGVQaWNrZXIuZ2V0KCkudGltZVpvbmVdOwotICAg
IFtkYXRlRm9ybWF0dGVyIHNldERhdGVGb3JtYXQ6X2Zvcm1hdFN0cmluZ107Ci0gICAgW2RhdGVG
b3JtYXR0ZXIgc2V0TG9jYWxlOmVuZ2xpc2hMb2NhbGUuZ2V0KCldOwotICAgIHJldHVybiBkYXRl
Rm9ybWF0dGVyOwotfQotCi0tICh2b2lkKV9kYXRlQ2hhbmdlZFNldEFzU3RyaW5nCi17Ci0gICAg
Ly8gRm9yY2UgRW5nbGlzaCBsb2NhbGUgYmVjYXVzZSB0aGF0IGlzIHdoYXQgSFRNTDUgdmFsdWUg
cGFyc2luZyBleHBlY3RzLgotICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGRhdGVGb3Jt
YXR0ZXIgPSBbc2VsZiBkYXRlRm9ybWF0dGVyRm9yUGlja2VyXTsKLSAgICBbX3ZpZXcgdXBkYXRl
Rm9jdXNlZEVsZW1lbnRWYWx1ZTpbZGF0ZUZvcm1hdHRlciBzdHJpbmdGcm9tRGF0ZTpbX2RhdGVQ
aWNrZXIgZGF0ZV1dXTsKLX0KLQotLSAodm9pZClfZGF0ZUNoYW5nZWQKLXsKLSAgICAvLyBJbnRl
cm5hbGx5LCBET01IVE1MSW5wdXRFbGVtZW50IHNldFZhbHVlQXMqIGVhY2ggdGFrZSBkaWZmZXJl
bnQgdmFsdWVzIGZvcgotICAgIC8vIGRpZmZlcmVudCBkYXRlIHR5cGVzLiBJdCBpcyBzb21ldGlt
ZXMgZWFzaWVyIHRvIHNldCB0aGUgZGF0ZSBpbiBkaWZmZXJlbnQgd2F5czoKLSAgICAvLyAgIC0g
dXNlIHNldFZhbHVlQXNTdHJpbmcgZm9yICJkYXRlIiwgIm1vbnRoIiwgYW5kICJ0aW1lIi4KLSAg
ICAvLyAgIC0gdXNlIHNldFZhbHVlQXNOdW1iZXIgZm9yICJkYXRldGltZS1sb2NhbCIuCi0gICAg
aWYgKF9mb3JtYXRTdHJpbmcpCi0gICAgICAgIFtzZWxmIF9kYXRlQ2hhbmdlZFNldEFzU3RyaW5n
XTsKLSAgICBlbHNlCi0gICAgICAgIFtzZWxmIF9kYXRlQ2hhbmdlZFNldEFzTnVtYmVyXTsKLX0K
LQotLSAodm9pZClfZGF0ZUNoYW5nZUhhbmRsZXI6KGlkKXNlbmRlcgotewotICAgIFtzZWxmIF9k
YXRlQ2hhbmdlZF07Ci19Ci0KLS0gKHZvaWQpY29udHJvbEJlZ2luRWRpdGluZwotewotICAgIC8v
IFNldCB0aGUgdGltZSB6b25lIGluIGNhc2UgaXQgY2hhbmdlZC4KLSAgICBfZGF0ZVBpY2tlci5n
ZXQoKS50aW1lWm9uZSA9IFtOU1RpbWVab25lIGxvY2FsVGltZVpvbmVdOwotCi0gICAgLy8gQ3Vy
cmVudGx5IG5vIHZhbHVlIGZvciB0aGUgPGlucHV0Pi4gU3RhcnQgdGhlIHBpY2tlciB3aXRoIHRo
ZSBjdXJyZW50IHRpbWUuCi0gICAgLy8gQWxzbywgdXBkYXRlIHRoZSBhY3R1YWwgPGlucHV0PiB2
YWx1ZS4KLSAgICBOU1N0cmluZyAqdmFsdWUgPSBfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uLnZhbHVlOwotICAgIGlmIChfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnZhbHVl
LmlzRW1wdHkoKSkgewotICAgICAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpbTlNEYXRlIGRhdGVd
XTsKLSAgICAgICAgW3NlbGYgX2RhdGVDaGFuZ2VkXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIC8vIENvbnZlcnQgdGhlIHN0cmluZyB2YWx1ZSB0byBhIGRhdGUgb2JqZWN0IGZvciB0
aGUgZmllbGRzIHdoZXJlIHdlIGhhdmUgYSBmb3JtYXQgc3RyaW5nLgotICAgIGlmIChfZm9ybWF0
U3RyaW5nKSB7Ci0gICAgICAgIHZhbHVlID0gW3NlbGYgX3Nhbml0aXplSW5wdXRWYWx1ZUZvckZv
cm1hdHRlcjp2YWx1ZV07Ci0gICAgICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGRhdGVG
b3JtYXR0ZXIgPSBbc2VsZiBkYXRlRm9ybWF0dGVyRm9yUGlja2VyXTsKLSAgICAgICAgTlNEYXRl
ICpwYXJzZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgZGF0ZUZyb21TdHJpbmc6dmFsdWVdOwotICAg
ICAgICBbX2RhdGVQaWNrZXIgc2V0RGF0ZTpwYXJzZWREYXRlID8gcGFyc2VkRGF0ZSA6IFtOU0Rh
dGUgZGF0ZV1dOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gQ29udmVydCB0aGUg
bnVtYmVyIHZhbHVlIHRvIGEgZGF0ZSBvYmplY3QgZm9yIHRoZSBmaWVsZHMgYWZmZWN0ZWQgYnkg
dGltZXpvbmVzLgotICAgIE5TVGltZUludGVydmFsIHNlY29uZHNTaW5jZTE5NzAgPSBfdmlldy5m
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnZhbHVlQXNOdW1iZXIgLyBrTWlsbGlzZWNvbmRzUGVy
U2Vjb25kOwotICAgIE5TSW50ZWdlciB0aW1lWm9uZU9mZnNldCA9IFtzZWxmIF90aW1lWm9uZU9m
ZnNldEZyb21HTVQ6W05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpzZWNvbmRz
U2luY2UxOTcwXV07Ci0gICAgTlNUaW1lSW50ZXJ2YWwgYWRqdXN0ZWRTZWNvbmRzU2luY2UxOTcw
ID0gc2Vjb25kc1NpbmNlMTk3MCAtIHRpbWVab25lT2Zmc2V0OwotICAgIFtfZGF0ZVBpY2tlciBz
ZXREYXRlOltOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6YWRqdXN0ZWRTZWNv
bmRzU2luY2UxOTcwXV07Ci19Ci0KLS0gKHZvaWQpY29udHJvbEVuZEVkaXRpbmcKLXsKLX0KLQot
LSAodm9pZClzZXRIb3VyOihOU0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51dGUK
LXsKLSAgICBOU1N0cmluZyAqdGltZVN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiJS4ybGQ6JS4ybGQiLCAobG9uZylob3VyLCAobG9uZyltaW51dGVdOwotICAgIFtfZGF0ZVBp
Y2tlciBzZXREYXRlOltbc2VsZiBkYXRlRm9ybWF0dGVyRm9yUGlja2VyXSBkYXRlRnJvbVN0cmlu
Zzp0aW1lU3RyaW5nXV07Ci0gICAgW3NlbGYgX2RhdGVDaGFuZ2VkXTsKLX0KLQotQGVuZAotCi0v
LyBXS0Zvcm1JbnB1dENvbnRyb2wKLUBpbXBsZW1lbnRhdGlvbiBXS0Zvcm1JbnB1dENvbnRyb2wK
LQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcKLXsK
LSAgICBVSURhdGVQaWNrZXJNb2RlIG1vZGU7Ci0KLSAgICBzd2l0Y2ggKHZpZXcuZm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgewotICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRl
OgotICAgICAgICBtb2RlID0gVUlEYXRlUGlja2VyTW9kZURhdGU7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgotICAgICAgICBtb2RlID0gVUlEYXRl
UGlja2VyTW9kZURhdGVBbmRUaW1lOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIElucHV0VHlw
ZTo6VGltZToKLSAgICAgICAgbW9kZSA9IFVJRGF0ZVBpY2tlck1vZGVUaW1lOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIElucHV0VHlwZTo6TW9udGg6Ci0gICAgICAgIG1vZGUgPSAoVUlEYXRl
UGlja2VyTW9kZSlVSURhdGVQaWNrZXJNb2RlWWVhckFuZE1vbnRoOwotICAgICAgICBicmVhazsK
LSAgICBkZWZhdWx0OgotICAgICAgICBbc2VsZiByZWxlYXNlXTsKLSAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9ybUNvbnRyb2w+PiBjb250
cm9sOwotICAgIGlmIChjdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWQoKSkKLSAgICAgICAg
Y29udHJvbCA9IGFkb3B0TlMoW1tXS0RhdGVUaW1lUG9wb3ZlciBhbGxvY10gaW5pdFdpdGhWaWV3
OnZpZXcgZGF0ZVBpY2tlck1vZGU6bW9kZV0pOwotICAgIGVsc2UKLSAgICAgICAgY29udHJvbCA9
IGFkb3B0TlMoW1tXS0RhdGVUaW1lUGlja2VyIGFsbG9jXSBpbml0V2l0aFZpZXc6dmlldyBkYXRl
UGlja2VyTW9kZTptb2RlXSk7Ci0gICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aFZpZXc6dmlldyBj
b250cm9sOldURk1vdmUoY29udHJvbCldOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBX
S0Zvcm1JbnB1dENvbnRyb2wgKFdLVGVzdGluZykKLQotLSAodm9pZClzZXRUaW1lUGlja2VySG91
cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVnZXIpbWludXRlCi17Ci0gICAgaWYgKFtz
ZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lUGlja2VyLmNsYXNzXSkKLSAgICAg
ICAgWyhXS0RhdGVUaW1lUGlja2VyICopc2VsZi5jb250cm9sIHNldEhvdXI6aG91ciBtaW51dGU6
bWludXRlXTsKLSAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQ
b3BvdmVyLmNsYXNzXSkKLSAgICAgICAgWyhXS0RhdGVUaW1lUG9wb3ZlciAqKXNlbGYuY29udHJv
bCBzZXRIb3VyOmhvdXIgbWludXRlOm1pbnV0ZV07Ci19Ci0KLS0gKE5TU3RyaW5nICopZGF0ZVRp
bWVQaWNrZXJDYWxlbmRhclR5cGUKLXsKLSAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNs
YXNzOldLRGF0ZVRpbWVQaWNrZXIuY2xhc3NdKQotICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1l
UGlja2VyICopc2VsZi5jb250cm9sIGNhbGVuZGFyVHlwZV07Ci0gICAgaWYgKFtzZWxmLmNvbnRy
b2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVUaW1lUG9wb3Zlci5jbGFzc10pCi0gICAgICAgIHJldHVy
biBbKFdLRGF0ZVRpbWVQb3BvdmVyICopc2VsZi5jb250cm9sIGNhbGVuZGFyVHlwZV07Ci0gICAg
cmV0dXJuIG5pbDsKLX0KLQotLSAoZG91YmxlKXRpbWVQaWNrZXJWYWx1ZUhvdXIKLXsKLSAgICBp
ZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQaWNrZXIuY2xhc3NdKQot
ICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUGlja2VyICopc2VsZi5jb250cm9sIGhvdXJdOwot
ICAgIGlmIChbc2VsZi5jb250cm9sIGlzS2luZE9mQ2xhc3M6V0tEYXRlVGltZVBvcG92ZXIuY2xh
c3NdKQotICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUG9wb3ZlciAqKXNlbGYuY29udHJvbCBo
b3VyXTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLS0gKGRvdWJsZSl0aW1lUGlja2VyVmFsdWVNaW51
dGUKLXsKLSAgICBpZiAoW3NlbGYuY29udHJvbCBpc0tpbmRPZkNsYXNzOldLRGF0ZVRpbWVQaWNr
ZXIuY2xhc3NdKQotICAgICAgICByZXR1cm4gWyhXS0RhdGVUaW1lUGlja2VyICopc2VsZi5jb250
cm9sIG1pbnV0ZV07Ci0gICAgaWYgKFtzZWxmLmNvbnRyb2wgaXNLaW5kT2ZDbGFzczpXS0RhdGVU
aW1lUG9wb3Zlci5jbGFzc10pCi0gICAgICAgIHJldHVybiBbKFdLRGF0ZVRpbWVQb3BvdmVyICop
c2VsZi5jb250cm9sIG1pbnV0ZV07Ci0gICAgcmV0dXJuIC0xOwotfQotCi1AZW5kCi0KLUBpbXBs
ZW1lbnRhdGlvbiBXS0RhdGVUaW1lUG9wb3ZlclZpZXdDb250cm9sbGVyCi0KLS0gKGlkKWluaXRX
aXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcgZGF0ZVBpY2tlck1vZGU6KFVJRGF0ZVBpY2tl
ck1vZGUpZGF0ZVBpY2tlck1vZGUKLXsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9pbm5lckNvbnRyb2wgPSBhZG9wdE5TKFtbV0tE
YXRlVGltZVBpY2tlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXcgZGF0ZVBpY2tlck1vZGU6ZGF0
ZVBpY2tlck1vZGVdKTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChOU09iamVjdDxXS0Zv
cm1Db250cm9sPiAqKWlubmVyQ29udHJvbAotewotICAgIHJldHVybiBfaW5uZXJDb250cm9sLmdl
dCgpOwotfQotCi0tICh2b2lkKWxvYWRWaWV3Ci17Ci0gICAgc2VsZi52aWV3ID0gW19pbm5lckNv
bnRyb2wgY29udHJvbFZpZXddOwotfQotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS0RhdGVU
aW1lUG9wb3ZlcgotCi0tICh2b2lkKWNsZWFyOihpZClzZW5kZXIKLXsKLSAgICBbX3ZpZXcgcGFn
ZV0tPnNldEZvY3VzZWRFbGVtZW50VmFsdWUoU3RyaW5nKCkpOwotfQotCi0tICh2b2lkKXBvcG92
ZXJXYXNEaXNtaXNzZWQ6KFdLUm90YXRpbmdQb3BvdmVyICopcG9wb3ZlcgotewotICAgIFtzdXBl
ciBwb3BvdmVyV2FzRGlzbWlzc2VkOnBvcG92ZXJdOwotICAgIAotICAgIGlmIChwb3BvdmVyID09
IHNlbGYpIHsKLSAgICAgICAgaWYgKF9wcmVzZXJ2aW5nRm9jdXMpIHsKLSAgICAgICAgICAgIFtf
dmlldyByZWxlYXNlRm9jdXNdOwotICAgICAgICAgICAgX3ByZXNlcnZpbmdGb2N1cyA9IE5POwot
ICAgICAgICB9Ci0gICAgfQotfQotCi0tIChpZClpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcg
Kil2aWV3IGRhdGVQaWNrZXJNb2RlOihVSURhdGVQaWNrZXJNb2RlKW1vZGUKLXsKLSAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRXaXRoVmlldzp2aWV3XSkpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0KLSAgICBfdmlldyA9IHZpZXc7Ci0gICAgX3ZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1dL
RGF0ZVRpbWVQb3BvdmVyVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2aWV3IGRh
dGVQaWNrZXJNb2RlOm1vZGVdKTsKLSAgICBVSURhdGVQaWNrZXIgKmRhdGVQaWNrZXIgPSBbKFdL
RGF0ZVRpbWVQaWNrZXIgKilfdmlld0NvbnRyb2xsZXIuZ2V0KCkuaW5uZXJDb250cm9sIGRhdGVQ
aWNrZXJdOwotCi0gICAgaWYgKHZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50
VHlwZSA9PSBJbnB1dFR5cGU6Ok1vbnRoKSB7Ci0gICAgICAgIENHRmxvYXQgcG9wb3ZlcldpZHRo
ID0gW2RhdGVQaWNrZXIgX2NvbnRlbnRXaWR0aF07Ci0gICAgICAgIENHRmxvYXQgcG9wb3Zlckhl
aWdodCA9IF92aWV3Q29udHJvbGxlci5nZXQoKS52aWV3LmZyYW1lLnNpemUuaGVpZ2h0OwotICAg
ICAgICBbX3ZpZXdDb250cm9sbGVyIHNldFByZWZlcnJlZENvbnRlbnRTaXplOkNHU2l6ZU1ha2Uo
cG9wb3ZlcldpZHRoLCBwb3BvdmVySGVpZ2h0KV07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgW192
aWV3Q29udHJvbGxlciBzZXRQcmVmZXJyZWRDb250ZW50U2l6ZTpDR1NpemVNYWtlKGRhdGVQaWNr
ZXIuZnJhbWUuc2l6ZS53aWR0aCsxNiwgZGF0ZVBpY2tlci5mcmFtZS5zaXplLmhlaWdodCldOwot
ICAgIH0KLSAgICAKLSAgICBbX3ZpZXdDb250cm9sbGVyIHNldEVkZ2VzRm9yRXh0ZW5kZWRMYXlv
dXQ6VUlSZWN0RWRnZU5vbmVdOwotICAgIFtfdmlld0NvbnRyb2xsZXIgc2V0VGl0bGU6X3ZpZXcu
Zm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi50aXRsZV07Ci0KLSAgICAvLyBBbHdheXMgaGF2ZSBh
IG5hdmlnYXRpb24gY29udHJvbGxlciB3aXRoIGEgY2xlYXIgYnV0dG9uLCBhbmQgYSB0aXRsZSBp
ZiB0aGUgaW5wdXQgZWxlbWVudCBoYXMgYSB0aXRsZS4KLSAgICBSZXRhaW5QdHI8VUlOYXZpZ2F0
aW9uQ29udHJvbGxlcj4gbmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlOYXZpZ2F0
aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhSb290Vmlld0NvbnRyb2xsZXI6X3ZpZXdDb250
cm9sbGVyLmdldCgpXSk7Ci0gICAgVUlOYXZpZ2F0aW9uSXRlbSAqbmF2aWdhdGlvbkl0ZW0gPSBu
YXZpZ2F0aW9uQ29udHJvbGxlci5nZXQoKS5uYXZpZ2F0aW9uQmFyLnRvcEl0ZW07Ci0gICAgTlNT
dHJpbmcgKmNsZWFyU3RyaW5nID0gV0VCX1VJX1NUUklOR19LRVkoIkNsZWFyIiwgIkNsZWFyIEJ1
dHRvbiBEYXRlIFBvcG92ZXIiLCAiQ2xlYXIgYnV0dG9uIGluIGRhdGUgaW5wdXQgcG9wb3ZlciIp
OwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgVUlCYXJCdXR0
b25JdGVtICpjbGVhckJ1dHRvbiA9IFtbW1VJQmFyQnV0dG9uSXRlbSBhbGxvY10gaW5pdFdpdGhU
aXRsZTpjbGVhclN0cmluZyBzdHlsZTpVSUJhckJ1dHRvbkl0ZW1TdHlsZUJvcmRlcmVkIHRhcmdl
dDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoY2xlYXI6KV0gYXV0b3JlbGVhc2VdOwotICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIFtuYXZpZ2F0aW9uSXRlbSBzZXRSaWdo
dEJhckJ1dHRvbkl0ZW06Y2xlYXJCdXR0b25dOwotCi0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KLSAgICBSZXRhaW5QdHI8VUlQb3BvdmVyQ29udHJvbGxlcj4gY29udHJv
bGxlciA9IGFkb3B0TlMoW1tVSVBvcG92ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbnRl
bnRWaWV3Q29udHJvbGxlcjpuYXZpZ2F0aW9uQ29udHJvbGxlci5nZXQoKV0pOwotICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIFtzZWxmIHNldFBvcG92ZXJDb250cm9s
bGVyOmNvbnRyb2xsZXIuZ2V0KCldOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKFdLRGF0
ZVRpbWVQb3BvdmVyVmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlcgotewotICAgIHJldHVy
biBfdmlld0NvbnRyb2xsZXIuZ2V0KCk7Ci19Ci0KLS0gKHZvaWQpY29udHJvbEJlZ2luRWRpdGlu
ZwotewotICAgIGlmICghX3ByZXNlbnRpbmcpIHsKLSAgICAgICAgX3ByZXNlbnRpbmcgPSBZRVM7
Ci0gICAgICAgIFtzZWxmIHByZXNlbnRQb3BvdmVyQW5pbWF0ZWQ6Tk9dOwotICAgICAgICBbX3Zp
ZXdDb250cm9sbGVyLmdldCgpLmlubmVyQ29udHJvbCBjb250cm9sQmVnaW5FZGl0aW5nXTsKLSAg
ICAgICAgCi0gICAgICAgIGlmIChfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1l
bnRUeXBlID09IElucHV0VHlwZTo6VGltZSB8fCBfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uLmVsZW1lbnRUeXBlID09IElucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbCkgewotICAgICAgICAg
ICAgX3ByZXNlcnZpbmdGb2N1cyA9IFlFUzsKLSAgICAgICAgICAgIFtfdmlldyBwcmVzZXJ2ZUZv
Y3VzXTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotLSAodm9pZCljb250cm9sRW5kRWRpdGluZwot
ewotICAgIF9wcmVzZW50aW5nID0gTk87Ci0gICAgW3NlbGYgZGlzbWlzc1BvcG92ZXJBbmltYXRl
ZDpOT107Ci0gICAgW192aWV3Q29udHJvbGxlci5nZXQoKS5pbm5lckNvbnRyb2wgY29udHJvbEVu
ZEVkaXRpbmddOwotfQotCi0tIChVSVZpZXcgKiljb250cm9sVmlldwotewotICAgIHJldHVybiBu
aWw7Ci19Ci0KLS0gKHZvaWQpc2V0SG91cjooTlNJbnRlZ2VyKWhvdXIgbWludXRlOihOU0ludGVn
ZXIpbWludXRlCi17Ci0gICAgV0tEYXRlVGltZVBpY2tlciAqZGF0ZVRpbWVQaWNrZXIgPSAoV0tE
YXRlVGltZVBpY2tlciAqKXNlbGYudmlld0NvbnRyb2xsZXIuaW5uZXJDb250cm9sOwotICAgIFtk
YXRlVGltZVBpY2tlciBzZXRIb3VyOmhvdXIgbWludXRlOm1pbnV0ZV07Ci19Ci0KLS0gKE5TU3Ry
aW5nICopY2FsZW5kYXJUeXBlCi17Ci0gICAgV0tEYXRlVGltZVBpY2tlciAqZGF0ZVRpbWVQaWNr
ZXIgPSAoV0tEYXRlVGltZVBpY2tlciAqKXNlbGYudmlld0NvbnRyb2xsZXIuaW5uZXJDb250cm9s
OwotICAgIHJldHVybiBkYXRlVGltZVBpY2tlci5kYXRlUGlja2VyLmNhbGVuZGFyLmNhbGVuZGFy
SWRlbnRpZmllcjsKLX0KLQotLSAoZG91YmxlKWhvdXIKLXsKLSAgICBXS0RhdGVUaW1lUGlja2Vy
ICpkYXRlVGltZVBpY2tlciA9IChXS0RhdGVUaW1lUGlja2VyICopc2VsZi52aWV3Q29udHJvbGxl
ci5pbm5lckNvbnRyb2w7Ci0gICAgTlNDYWxlbmRhciAqY2FsZW5kYXIgPSBbTlNDYWxlbmRhciBj
dXJyZW50Q2FsZW5kYXJdOwotICAgIE5TRGF0ZUNvbXBvbmVudHMgKmNvbXBvbmVudHMgPSBbY2Fs
ZW5kYXIgY29tcG9uZW50czooTlNDYWxlbmRhclVuaXRIb3VyKSBmcm9tRGF0ZTpkYXRlVGltZVBp
Y2tlci5kYXRlUGlja2VyLmRhdGVdOwotCi0gICAgcmV0dXJuIFtjb21wb25lbnRzIGhvdXJdOwot
fQotCi0tIChkb3VibGUpbWludXRlCi17Ci0gICAgV0tEYXRlVGltZVBpY2tlciAqZGF0ZVRpbWVQ
aWNrZXIgPSAoV0tEYXRlVGltZVBpY2tlciAqKXNlbGYudmlld0NvbnRyb2xsZXIuaW5uZXJDb250
cm9sOwotICAgIE5TQ2FsZW5kYXIgKmNhbGVuZGFyID0gW05TQ2FsZW5kYXIgY3VycmVudENhbGVu
ZGFyXTsKLSAgICBOU0RhdGVDb21wb25lbnRzICpjb21wb25lbnRzID0gW2NhbGVuZGFyIGNvbXBv
bmVudHM6KE5TQ2FsZW5kYXJVbml0TWludXRlKSBmcm9tRGF0ZTpkYXRlVGltZVBpY2tlci5kYXRl
UGlja2VyLmRhdGVdOwotCi0gICAgcmV0dXJuIFtjb21wb25lbnRzIG1pbnV0ZV07Ci19Ci0KLUBl
bmQKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1Yzg4YmIzNjc1MWUwNTZmNGMw
ODAxNjU2Nzg5YWU1MjQ2MmJmNWU2Li4wMDZjMWU1ZjAxZjY3NGRmNGE2OGUyMzA4ODRjNmQxNDUw
ZjY4YzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTE2ODgsNyArMTY4OCw3IEBACiAJCUMxODE3MzYxMjA1ODQyNDcwMERGREE2NSAv
KiBEaXNwbGF5TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzE4MTczNjAyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggKi87IH07CiAJ
CUMxRTEyM0JBMjBBMTE1NzMwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFFMTIzQjkyMEExMTU3MjAwMjY0
NkY0IC8qIFBERkNvbnRleHRNZW51LmggKi87IH07CiAJCUM1MTczODgxMTJERjhGNEYwMEVFM0Y0
NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9s
bGVyQWN0aW9uLmggKi87IH07Ci0JCUM1NDI1NkI1MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1J
bnB1dENvbnRyb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wuaCAqLzsg
fTsKKwkJQzU0MjU2QjUxOEJFQzE4QzAwREU0MTc5IC8qIFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDI1NkFG
MThCRUMxOEIwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmggKi87IH07CiAJCUM1
NDI1NkI3MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1QZXJpcGhlcmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTQyNTZCMTE4QkVDMThCMDBERTQx
NzkgLyogV0tGb3JtUGVyaXBoZXJhbC5oICovOyB9OwogCQlDNTQyNTZCODE4QkVDMThDMDBERTQx
NzkgLyogV0tGb3JtUG9wb3Zlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzU0MjU2QjIxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybVBvcG92ZXIuaCAq
LzsgfTsKIAkJQzU0MjU2QkExOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybVNlbGVjdENvbnRyb2wu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDI1NkI0
MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1TZWxlY3RDb250cm9sLmggKi87IH07CkBAIC01MDI0
LDggKzUwMjQsOCBAQAogCQlDMUUxMjNCOTIwQTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1l
bnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUERGQ29udGV4dE1lbnUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8q
IERyYWdDb250cm9sbGVyQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERyYWdDb250cm9sbGVyQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1
MjM3RjVGMTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFZGl0b3JDbGllbnRNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBX
S0Zvcm1JbnB1dENvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tG
b3JtSW5wdXRDb250cm9sLmg7IHBhdGggPSBpb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM1NDI1NkIwMThCRUMxOEIwMERFNDE3OSAv
KiBXS0Zvcm1JbnB1dENvbnRyb2wubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBXS0Zvcm1JbnB1dENvbnRyb2wubW07IHBhdGggPSBpb3MvZm9ybXMvV0tGb3JtSW5w
dXRDb250cm9sLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNTQyNTZBRjE4QkVD
MThCMDBERTQxNzkgLyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXS0RhdGVUaW1lSW5wdXRDb250cm9sLmg7IHBhdGggPSBpb3MvZm9y
bXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDNTQyNTZCMDE4QkVDMThCMDBERTQxNzkgLyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRGF0ZVRpbWVJbnB1dENv
bnRyb2wubW07IHBhdGggPSBpb3MvZm9ybXMvV0tEYXRlVGltZUlucHV0Q29udHJvbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MjU2QjExOEJFQzE4QjAwREU0MTc5IC8qIFdL
Rm9ybVBlcmlwaGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tGb3Jt
UGVyaXBoZXJhbC5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLRm9ybVBlcmlwaGVyYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MjU2QjIxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9y
bVBvcG92ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tGb3JtUG9wb3Zl
ci5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLRm9ybVBvcG92ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzU0MjU2QjMxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybVBvcG92ZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Zvcm1Qb3BvdmVyLm1t
OyBwYXRoID0gaW9zL2Zvcm1zL1dLRm9ybVBvcG92ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMDI1Nyw2ICsxMDI1Nyw4IEBACiAJCQkJQzVGQTFFRDIxOEUxMDYyMjAwQjNG
NDAyIC8qIFdLQWlyUGxheVJvdXRlUGlja2VyLm1tICovLAogCQkJCTJFOTRGQzE0MjAzNTFBNkQw
MDk3NEJBMCAvKiBXS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5oICovLAogCQkJCTJFOTRGQzE1
MjAzNTFBNkQwMDk3NEJBMCAvKiBXS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbSAqLywKKwkJ
CQlDNTQyNTZBRjE4QkVDMThCMDBERTQxNzkgLyogV0tEYXRlVGltZUlucHV0Q29udHJvbC5oICov
LAorCQkJCUM1NDI1NkIwMThCRUMxOEIwMERFNDE3OSAvKiBXS0RhdGVUaW1lSW5wdXRDb250cm9s
Lm1tICovLAogCQkJCUE1OEI2RjA2MThGQ0E3MzMwMDhDQkE1MyAvKiBXS0ZpbGVVcGxvYWRQYW5l
bC5oICovLAogCQkJCUE1OEI2RjA3MThGQ0E3MzMwMDhDQkE1MyAvKiBXS0ZpbGVVcGxvYWRQYW5l
bC5tbSAqLywKIAkJCQkyRTE2QjZDRDIwMTdCN0FDMDA4OTk2RDYgLyogV0tGb2N1c2VkRm9ybUNv
bnRyb2xWaWV3LmggKi8sCkBAIC0xMDI2NSw4ICsxMDI2Nyw2IEBACiAJCQkJRTVDQjA3REIyMEUx
Njc4RjAwMjJDMTgzIC8qIFdLRm9ybUNvbG9yQ29udHJvbC5tbSAqLywKIAkJCQlFNTQ4RUJDRjIx
MDE1RjBFMDBCRTNDMzIgLyogV0tGb3JtQ29sb3JQaWNrZXIuaCAqLywKIAkJCQlFNTQ4RUJEMDIx
MDE1RjBFMDBCRTNDMzIgLyogV0tGb3JtQ29sb3JQaWNrZXIubW0gKi8sCi0JCQkJQzU0MjU2QUYx
OEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybUlucHV0Q29udHJvbC5oICovLAotCQkJCUM1NDI1NkIw
MThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wubW0gKi8sCiAJCQkJQzU0MjU2
QjExOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybVBlcmlwaGVyYWwuaCAqLywKIAkJCQlDRTcwRUU1
QzIyNDQyQkQwMDBFMEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJhc2UuaCAqLywKIAkJCQlDRTcw
RUU1QTIyNDQyQkIzMDBFMEFGMEYgLyogV0tGb3JtUGVyaXBoZXJhbEJhc2UubW0gKi8sCkBAIC0x
MTUxNyw2ICsxMTUxNyw3IEBACiAJCQkJMzdBNzA5QTcxRTNFQTBGRDAwQ0E1OTY5IC8qIFdLRGF0
YURldGVjdG9yVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QTcwOUE5MUUzRUE0MEMwMENB
NTk2OSAvKiBXS0RhdGFEZXRlY3RvclR5cGVzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJFOTRGQzE2MjAzNTFBNkQwMDk3NEJBMCAvKiBXS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQzU0MjU2QjUxOEJFQzE4QzAwREU0MTc5IC8qIFdLRGF0ZVRp
bWVJbnB1dENvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3N0VBRDQ1MTdFMkM1MUEwMDJE
MTkzRCAvKiBXS0RlY2xhcmF0aW9uU3BlY2lmaWVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ0
ODE1NjQyMzg3ODIwMDAwOTgyNjU3IC8qIFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDMzU5QzBEMjE1NDczOUYwMDlFNzk0OCAvKiBXS0RlcHJlY2F0
ZWQuaCBpbiBIZWFkZXJzICovLApAQCAtMTE1NDksNyArMTE1NTAsNiBAQAogCQkJCTJFMTZCNkNG
MjAxN0I3QUQwMDg5OTZENiAvKiBXS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU1Q0IwN0RDMjBFMTY3OEYwMDIyQzE4MyAvKiBXS0Zvcm1Db2xvckNvbnRyb2wu
aCBpbiBIZWFkZXJzICovLAogCQkJCUU1NDhFQkQxMjEwMTVGMEUwMEJFM0MzMiAvKiBXS0Zvcm1D
b2xvclBpY2tlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzU0MjU2QjUxOEJFQzE4QzAwREU0MTc5
IC8qIFdLRm9ybUlucHV0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU0MjU2QjcxOEJF
QzE4QzAwREU0MTc5IC8qIFdLRm9ybVBlcmlwaGVyYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUNF
NzBFRTVEMjI0NDJCRDAwMEUwQUYwRiAvKiBXS0Zvcm1QZXJpcGhlcmFsQmFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzU0MjU2QjgxOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybVBvcG92ZXIuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlT
Y3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3Jp
cHRDb250cm9sbGVySU9TLm1tCmluZGV4IGQ5ZTAyMTNmOTk0NTE4ZDhjZWE1YmM0ZmU0MzI2ZmFh
MTdhZWMxYjQuLjE0ZTZkZjg3MWJhYTYxY2UyZGRmYWNkMjYxNDI5Y2Y3OTM2YzEyYmMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW0KQEAgLTEyMzAsNyArMTIzMCw3IEBAIFVJVmlldyAqVUlTY3JpcHRDb250cm9sbGVySU9TOjpw
bGF0Zm9ybUNvbnRlbnRWaWV3KCkgY29uc3QKIEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxl
cklPUzo6Y2FsZW5kYXJUeXBlKCkgY29uc3QKIHsKICAgICBVSVZpZXcgKmNvbnRlbnRWaWV3ID0g
W3dlYlZpZXcoKSB2YWx1ZUZvcktleVBhdGg6QCJfY3VycmVudENvbnRlbnRWaWV3Il07Ci0gICAg
TlNTdHJpbmcgKmNhbGVuZGFyVHlwZVN0cmluZyA9IFtjb250ZW50VmlldyB2YWx1ZUZvcktleVBh
dGg6QCJmb3JtSW5wdXRDb250cm9sLmRhdGVUaW1lUGlja2VyQ2FsZW5kYXJUeXBlIl07CisgICAg
TlNTdHJpbmcgKmNhbGVuZGFyVHlwZVN0cmluZyA9IFtjb250ZW50VmlldyB2YWx1ZUZvcktleVBh
dGg6QCJkYXRlVGltZUlucHV0Q29udHJvbC5kYXRlVGltZVBpY2tlckNhbGVuZGFyVHlwZSJdOwog
ICAgIGF1dG8ganNDb250ZXh0ID0gbV9jb250ZXh0LT5qc0NvbnRleHQoKTsKICAgICByZXR1cm4g
SlNWYWx1ZVRvT2JqZWN0KGpzQ29udGV4dCwgW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmNhbGVu
ZGFyVHlwZVN0cmluZyBpbkNvbnRleHQ6W0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29u
dGV4dFJlZjpqc0NvbnRleHRdXS5KU1ZhbHVlUmVmLCBudWxscHRyKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>