<?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>100634</bug_id>
          
          <creation_ts>2012-10-29 00:05:02 -0700</creation_ts>
          <short_desc>Rename Localizer to Locale</short_desc>
          <delta_ts>2012-10-29 01:51:33 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>100329</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>haraken</cc>
    
    <cc>mifenton</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>753099</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-29 00:05:02 -0700</bug_when>
    <thetext>- Rename Localizer class to Locale
- Rename localizer with locale in variable names
- Rename localizer with locale in function names</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753107</commentid>
    <comment_count>1</comment_count>
      <attachid>171167</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-29 00:23:06 -0700</bug_when>
    <thetext>Created attachment 171167
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753131</commentid>
    <comment_count>2</comment_count>
      <attachid>171172</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-29 01:10:12 -0700</bug_when>
    <thetext>Created attachment 171172
Patch 2

Fix Chromium-Linux build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753161</commentid>
    <comment_count>3</comment_count>
      <attachid>171172</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-29 01:45:20 -0700</bug_when>
    <thetext>Comment on attachment 171172
Patch 2

Looks OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753166</commentid>
    <comment_count>4</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-29 01:51:33 -0700</bug_when>
    <thetext>Committed r132774: &lt;http://trac.webkit.org/changeset/132774&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171167</attachid>
            <date>2012-10-29 00:23:06 -0700</date>
            <delta_ts>2012-10-29 01:10:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100634-20121029162133.patch</filename>
            <type>text/plain</type>
            <size>51737</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ2Y2Q0ODlmYTUyYWIx
NjQxOGY1MjYzYjYyY2QyYTU2MTRhMDQ2Mi4uNTcxNDc2Y2FmYjVmNWE1ZmExOWQxMDRhY2ZkYzNi
ZWVhZDdhZTU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTEwLTI5ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgTG9jYWxpemVy
IHRvIExvY2FsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwNjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBSZW5hbWUgTG9jYWxpemVyIGNsYXNzIHRvIExvY2FsZQorICAgICAgICAtIFJlbmFtZSBs
b2NhbGl6ZXIgd2l0aCBsb2NhbGUgaW4gdmFyaWFibGUgbmFtZXMKKyAgICAgICAgLSBSZW5hbWUg
bG9jYWxpemVyIHdpdGggbG9jYWxlIGluIGZ1bmN0aW9uIG5hbWVzCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiBUaGlzIGRvZXNuJ3QgbWFrZSBhbnkgYmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6IERlY2xhcmUgTG9jYWxlIGlu
c3RlYWQgb2YgTG9jYWxpemVyLgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAtIFJlbmFt
ZSBnZXRDYWNoZWRMb2NhbGl6ZXIgdG8gZ2V0Q2FjaGVkTG9jYWxlLgorICAgICAgICAtIFJlbmFt
ZSBMb2NhbGVUb0xvY2FsaXplck1hcCB0byBMb2NhbGVJZGVudGlmaWVyVG9Mb2NhbGVNYXAuCisg
ICAgICAgIC0gUmVuYW1lIG1fbG9jYWxpemVyQ2FjaGUgdG8gbV9sb2NhbGVDYWNoZS4KKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldENh
Y2hlZExvY2FsZSk6IEZvbGxvdyByZW5hbWluZ3MuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmUpOiBEZWNsYXJlIExvY2FsZSBpbnN0ZWFkIG9mIExvY2FsaXplci4K
KyAgICAgICAgKEVsZW1lbnQpOiBSZW5hbWUgbG9jYWxpemVyKCkgdG8gbG9jYWxlKCkuCisgICAg
ICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6bG9jYWxl
KTogRm9sbG93IHJlbmFtaW5ncy4KKworICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6
bG9jYWxpemVWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2libGVWYWx1ZSk6IERpdHRvLgorICAgICAgICAqIGh0
bWwvQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlu
bmVyVGV4dFZhbHVlKTogRGl0dG8uCisgICAgICAgICogaHRtbC9EYXRlSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGVJbnB1dFR5cGU6OmZpeGVkUGxhY2Vob2xkZXIpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGVJbnB1dFR5cGU6OnNldHVwTGF5b3V0UGFyYW1ldGVy
cyk6IERpdHRvLgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0ZVRpbWVJbnB1dFR5cGU6OnNldHVwTGF5b3V0UGFyYW1ldGVycyk6IERp
dHRvLgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFtZXRlcnMp
OiBEaXR0by4KKyAgICAgICAgKiBodG1sL01vbnRoSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vbnRoSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFtZXRlcnMpOiBEaXR0by4KKyAg
ICAgICAgKiBodG1sL051bWJlcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdW1i
ZXJJbnB1dFR5cGU6OmxvY2FsaXplVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok51
bWJlcklucHV0VHlwZTo6Y29udmVydEZyb21WaXNpYmxlVmFsdWUpOiBEaXR0by4KKyAgICAgICAg
KiBodG1sL1RpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlw
ZTo6bG9jYWxpemVWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlw
ZTo6c2V0dXBMYXlvdXRQYXJhbWV0ZXJzKTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9EYXRlVGltZUVkaXRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlKTogRGVjbGFyZSBMb2Nh
bGUgaW5zdGVhZCBvZiBMb2NhbGl6ZXIuCisgICAgICAgIChMYXlvdXRQYXJhbWV0ZXJzKTogUmVu
YW1lIGxvY2FsaXplciBkYXRhIG1lbWJlciB0byBsb2NhbGUuCisgICAgICAgIChXZWJDb3JlOjpE
YXRlVGltZUVkaXRFbGVtZW50OjpMYXlvdXRQYXJhbWV0ZXJzOjpMYXlvdXRQYXJhbWV0ZXJzKTog
Rm9sbG93IHJlbmFtaW5ncy4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lRWRpdEJ1aWxkZXI6OnZpc2l0Rmll
bGQpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVs
ZW1lbnQuaDoKKyAgICAgICAgKERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudCk6IFJlbmFtZSBs
b2NhbGl6ZXJGb3JPd25lciB0byBsb2NhbGVGb3JPd25lci4KKyAgICAgICAgKiBodG1sL3NoYWRv
dy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50Ojpmb3JtYXRWYWx1ZSk6IEZvbGxvdyByZW5hbWluZ3Mu
CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQ6OmhhbmRsZUtl
eWJvYXJkRXZlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lTnVtZXJpY0Zp
ZWxkRWxlbWVudDo6bG9jYWxlRm9yT3duZXIpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL1BhZ2VQ
b3B1cENsaWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6IERlY2xhcmUgTG9jYWxlIGluc3RlYWQg
b2YgTG9jYWxpemVyLgorICAgICAgICAoUGFnZVBvcHVwQ2xpZW50KTogUmVuYW1lIGxvY2FsaXpl
ciBtZW1iZXIgZnVuY3Rpb24gdG8gbG9jYWxlLgorICAgICAgICAqIHBhZ2UvUGFnZVBvcHVwQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBDb250cm9sbGVyOjpsb2Nh
bGl6ZU51bWJlclN0cmluZyk6IEZvbGxvdyByZW5hbWluZ3MuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS90ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcDogUmVuYW1lIHRoZSBMb2NhbGl6ZXIgY2xhc3MgdG8g
TG9jYWxlLgorICAgICAgICAoRGF0ZVRpbWVTdHJpbmdCdWlsZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGVUaW1lU3RyaW5nQnVpbGRlcjo6RGF0ZVRpbWVTdHJpbmdCdWlsZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsZTo6fkxvY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6
OnNldExvY2FsZURhdGEpOiBSZW5hbWVkIGZyb20gc2V0TG9jYWxpemVyRGF0YS4KKyAgICAgICAg
KFdlYkNvcmU6OkxvY2FsZTo6Y29udmVydFRvTG9jYWxpemVkTnVtYmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2FsZTo6ZGV0ZWN0U2lnbkFuZEdldERpZ2l0UmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TG9jYWxlOjptYXRjaGVkRGVjaW1hbFN5bWJvbEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2FsZTo6Y29udmVydEZyb21Mb2NhbGl6ZWROdW1iZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9jYWxlOjpsb2NhbGl6ZWREZWNpbWFsU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkxvY2FsZTo6ZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kcyk6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbGU6OmRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHMpOgorICAgICAgICAoV2ViQ29yZTo6
TG9jYWxlOjpmb3JtYXREYXRlVGltZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9y
bUxvY2FsZS5oOiBVcGRhdGUgdGhlIGlmbmRlZiBtYWNyby4KKyAgICAgICAgKExvY2FsZSk6IFJl
bmFtZWQgZnJvbSBMb2NhbGl6ZXIuIEFsc28sIHJlbmFtZWQgdGhlIGZvbGxvd2luZ3M6CisgICAg
ICAgICAtIGluaXRpYWxpemVMb2NhbGl6ZXJEYXRhIC0+IGluaXRpYWxpemVMb2NhbGVEYXRhCisg
ICAgICAgICAtIHNldExvY2FsaXplckRhdGEgLT4gc2V0TG9jYWxlRGF0YQorICAgICAgICAgLSBt
X2hhc0xvY2FsaXplckRhdGEgLT4gbV9oYXNMb2NhbGVEYXRhCisgICAgICAgIChXZWJDb3JlOjpM
b2NhbGU6OkxvY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZURlZmF1bHQp
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcDogRm9sbG93IHJlbmFtaW5n
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS90ZXh0L0xvY2FsZVdpbi5jcHA6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9j
YWxlV2luLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5o
OiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW06IERpdHRv
LgorCiAyMDEyLTEwLTI4ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZW5hbWUgTG9jYWxpemVyLntjcHAsaH0gdG8gUGxhdGZvcm1Mb2NhbGUue2NwcCxofQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmY2U3MzdkNWQ0YjUzZWUzNjFhYmZlNGQwNzhk
Njg4OGIxODkzNTg2Li43ZWU5MzU0YjBkZjJjZTcwZmJjNjFlM2U4ZDZiM2YwOWM3ODEwMzNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTEwLTI5ICBL
ZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgTG9jYWxp
emVyIHRvIExvY2FsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAwNjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBzcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmg6CisgICAgICAgIChDb2xvckNo
b29zZXJVSUNvbnRyb2xsZXIpOgorICAgICAgICBSZW5hbWUgbV9sb2NhbGl6ZXIgdG8gbV9sb2Nh
bGUsIGFuZCBmb2xsb3cgb3RoZXIgcmVuYW1pbmdzLgorICAgICAgICAqIHNyYy9Db2xvckNob29z
ZXJVSUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb2xvckNob29zZXJVSUNvbnRy
b2xsZXI6OkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlcik6IEZvbGxvdyByZW5hbWluZ3MuCisgICAg
ICAgIChXZWJLaXQ6OkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6bG9jYWxlKTogRGl0dG8uCisg
ICAgICAgICogc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuaDoKKyAgICAgICAgKERhdGVUaW1lQ2hv
b3NlckltcGwpOgorICAgICAgICBSZW5hbWUgbV9sb2NhbGl6ZXIgdG8gbV9sb2NhbGUsIGFuZCBm
b2xsb3cgb3RoZXIgcmVuYW1pbmdzLgorICAgICAgICAqIHNyYy9EYXRlVGltZUNob29zZXJJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0ZVRpbWVDaG9vc2VySW1wbDo6RGF0ZVRpbWVDaG9v
c2VySW1wbCk6IEZvbGxvdyByZW5hbWluZ3MuCisgICAgICAgIChXZWJLaXQ6OkRhdGVUaW1lQ2hv
b3NlckltcGw6OndyaXRlRG9jdW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6RGF0ZVRp
bWVDaG9vc2VySW1wbDo6bG9jYWxlKTogRGl0dG8uCisgICAgICAgICogdGVzdHMvTG9jYWxlTWFj
VGVzdC5jcHA6CisgICAgICAgIChMb2NhbGVNYWNUZXN0Ojpmb3JtYXRUaW1lKTogRGl0dG8uCisg
ICAgICAgICh0ZXN0TnVtYmVySXNSZXZlcnNpYmxlKTogRGl0dG8uCisKIDIwMTItMTAtMjggIEtl
bnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbmFtZSBMb2NhbGl6
ZXIue2NwcCxofSB0byBQbGF0Zm9ybUxvY2FsZS57Y3BwLGh9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCAzNWRmYzJiZGY1ZjViYjBlODM0YmVmNjRhMzU3YjA2ZWU2MGRhM2MyLi43ZjBlOWQz
YmE1ODBlYzMwYjRiNDFjOTY4ZTE3YTdmNTBmMTY0MTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTYwMzUsMTQgKzYwMzUsMTQgQEAgYm9vbCBEb2N1bWVudDo6aGF2ZVN0eWxlc2hlZXRz
TG9hZGVkKCkgY29uc3QKICAgICByZXR1cm4gIW1fc3R5bGVTaGVldENvbGxlY3Rpb24tPmhhc1Bl
bmRpbmdTaGVldHMoKSB8fCBtX2lnbm9yZVBlbmRpbmdTdHlsZXNoZWV0czsKIH0KIAotTG9jYWxp
emVyJiBEb2N1bWVudDo6Z2V0Q2FjaGVkTG9jYWxpemVyKGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxlKQorTG9jYWxlJiBEb2N1bWVudDo6Z2V0Q2FjaGVkTG9jYWxlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxlKQogewogICAgIEF0b21pY1N0cmluZyBsb2NhbGVLZXkgPSBsb2NhbGU7CiAgICAg
aWYgKGxvY2FsZS5pc0VtcHR5KCkgfHwgIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxhbmdBdHRy
aWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKCkpCiAgICAgICAgIGxvY2FsZUtleSA9IGRl
ZmF1bHRMYW5ndWFnZSgpOwotICAgIExvY2FsZVRvTG9jYWxpemVyTWFwOjpBZGRSZXN1bHQgcmVz
dWx0ID0gbV9sb2NhbGl6ZXJDYWNoZS5hZGQobG9jYWxlS2V5LCBudWxscHRyKTsKKyAgICBMb2Nh
bGVJZGVudGlmaWVyVG9Mb2NhbGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2xvY2FsZUNhY2hl
LmFkZChsb2NhbGVLZXksIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IExvY2FsaXplcjo6Y3JlYXRlKGxvY2FsZUtl
eSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBMb2NhbGU6OmNyZWF0ZShsb2Nh
bGVLZXkpOwogICAgIHJldHVybiAqKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCmluZGV4IDNlZWEwZjBkZGE4MThkMzYxZDBhZTFiZjgwZjE4ODVmMzBlYTUy
NzQuLjM2MmMxOWZmNTQxYTYxZGUyYWI5MzFjMTkzOTk4ZjhmYTY1ZDIzOGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCkBAIC0xMDgsNyArMTA4LDcgQEAgY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNz
IEludFBvaW50OwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgSlNOb2RlOwotY2xhc3Mg
TG9jYWxpemVyOworY2xhc3MgTG9jYWxlOwogY2xhc3MgTWVkaWFDYW5TdGFydExpc3RlbmVyOwog
Y2xhc3MgTWVkaWFRdWVyeUxpc3Q7CiBjbGFzcyBNZWRpYVF1ZXJ5TWF0Y2hlcjsKQEAgLTExNTYs
OCArMTE1Niw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaW5TdHlsZVJlY2FsYygpIHsgcmV0dXJu
IG1faW5TdHlsZVJlY2FsYzsgfQogCi0gICAgLy8gUmV0dXJuIGEgTG9jYWxpemVyIGZvciB0aGUg
ZGVmYXVsdCBsb2NhbGUgaWYgdGhlIGFyZ3VtZW50IGlzIG51bGwgb3IgZW1wdHkuCi0gICAgTG9j
YWxpemVyJiBnZXRDYWNoZWRMb2NhbGl6ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUgPSBu
dWxsQXRvbSk7CisgICAgLy8gUmV0dXJuIGEgTG9jYWxlIGZvciB0aGUgZGVmYXVsdCBsb2NhbGUg
aWYgdGhlIGFyZ3VtZW50IGlzIG51bGwgb3IgZW1wdHkuCisgICAgTG9jYWxlJiBnZXRDYWNoZWRM
b2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUgPSBudWxsQXRvbSk7CiAKIHByb3RlY3Rl
ZDoKICAgICBEb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmLCBib29sIGlzWEhUTUwsIGJvb2wg
aXNIVE1MKTsKQEAgLTE1MTMsOCArMTUxMyw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RpZERp
c3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzQ2hhbmdlZDsKICNlbmRpZgogCi0gICAgdHlwZWRlZiBI
YXNoTWFwPEF0b21pY1N0cmluZywgT3duUHRyPExvY2FsaXplcj4gPiBMb2NhbGVUb0xvY2FsaXpl
ck1hcDsKLSAgICBMb2NhbGVUb0xvY2FsaXplck1hcCBtX2xvY2FsaXplckNhY2hlOworICAgIHR5
cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxMb2NhbGU+ID4gTG9jYWxlSWRlbnRp
ZmllclRvTG9jYWxlTWFwOworICAgIExvY2FsZUlkZW50aWZpZXJUb0xvY2FsZU1hcCBtX2xvY2Fs
ZUNhY2hlOwogfTsKIAogaW5saW5lIHZvaWQgRG9jdW1lbnQ6Om5vdGlmeVJlbW92ZVBlbmRpbmdT
aGVldElmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA0Y2M0NzBlMDg4YTQ2ZjY5
NTk4MDQyNWY5NTNlNTlkNTc4NjRjMDE0Li44OTljMzM0N2E3MDQ1YjA1NzA0NDhmNjcwODQzNTJl
YmY3OTJjYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xNzg5LDkgKzE3ODksOSBAQCBB
dG9taWNTdHJpbmcgRWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkgY29uc3QKICAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKLUxvY2FsaXplciYgRWxlbWVudDo6bG9jYWxpemVyKCkgY29u
c3QKK0xvY2FsZSYgRWxlbWVudDo6bG9jYWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG9jdW1l
bnQoKS0+Z2V0Q2FjaGVkTG9jYWxpemVyKGNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpKTsKKyAg
ICByZXR1cm4gZG9jdW1lbnQoKS0+Z2V0Q2FjaGVkTG9jYWxlKGNvbXB1dGVJbmhlcml0ZWRMYW5n
dWFnZSgpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpjYW5jZWxGb2N1c0FwcGVhcmFuY2VVcGRhdGUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKaW5kZXggODkzYmJlZWYwNjcxZGQ1MzJmYWYxOGNiNzA0OGQ5M2Iy
N2FkNzgxZS4uMTQ4NTcwMzNiODY1OWIxNGQ5MzA1Y2E4Y2ExYWU4YTQ0ODhmMGQ0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIERPTVRva2VuTGlzdDsKIGNsYXNz
IEVsZW1lbnRSYXJlRGF0YTsKIGNsYXNzIEVsZW1lbnRTaGFkb3c7CiBjbGFzcyBJbnRTaXplOwot
Y2xhc3MgTG9jYWxpemVyOworY2xhc3MgTG9jYWxlOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xh
c3MgU2hhZG93Um9vdDsKIGNsYXNzIFdlYktpdEFuaW1hdGlvbkxpc3Q7CkBAIC0yOTEsNyArMjkx
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNJbkNhbnZhc1N1YnRyZWUoKSBjb25zdDsKIAogICAg
IEF0b21pY1N0cmluZyBjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdDsKLSAgICBMb2Nh
bGl6ZXImIGxvY2FsaXplcigpIGNvbnN0OworICAgIExvY2FsZSYgbG9jYWxlKCkgY29uc3Q7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgLypzZW5kVG9BbnlFdmVudCov
KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuY3BwCmluZGV4IDA5ZTQ2OTRhNzI2YjA4MDkzN2QzNGVkN2ViNmRlOGE2OTg3NWVjYzMuLjgz
MGMxOTgwNjcyMzA3ODM0NmE0NDZhZWJjOWMyZWVkZjExYTczYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTE1Niw3ICsxNTYs
NyBAQCBTdHJpbmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpsb2NhbGl6ZVZhbHVlKGNvbnN0
IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkgY29ucwogICAgIGlmICghcGFyc2VUb0RhdGVDb21wb25l
bnRzKHByb3Bvc2VkVmFsdWUsICZkYXRlKSkKICAgICAgICAgcmV0dXJuIHByb3Bvc2VkVmFsdWU7
CiAKLSAgICBTdHJpbmcgbG9jYWxpemVkID0gZWxlbWVudCgpLT5sb2NhbGl6ZXIoKS5mb3JtYXRE
YXRlVGltZShkYXRlKTsKKyAgICBTdHJpbmcgbG9jYWxpemVkID0gZWxlbWVudCgpLT5sb2NhbGUo
KS5mb3JtYXREYXRlVGltZShkYXRlKTsKICAgICByZXR1cm4gbG9jYWxpemVkLmlzRW1wdHkoKSA/
IHByb3Bvc2VkVmFsdWUgOiBsb2NhbGl6ZWQ7CiB9CiAKQEAgLTE3MCw3ICsxNzAsNyBAQCBTdHJp
bmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2libGVWYWx1ZShjb25z
dCBTdHJpbmcmIHZpc2libGVWYQogICAgIGlmICh2aXNpYmxlVmFsdWUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gdmlzaWJsZVZhbHVlOwogCi0gICAgZG91YmxlIHBhcnNlZFZhbHVlID0gZWxl
bWVudCgpLT5sb2NhbGl6ZXIoKS5wYXJzZURhdGVUaW1lKHZpc2libGVWYWx1ZSwgZGF0ZVR5cGUo
KSk7CisgICAgZG91YmxlIHBhcnNlZFZhbHVlID0gZWxlbWVudCgpLT5sb2NhbGUoKS5wYXJzZURh
dGVUaW1lKHZpc2libGVWYWx1ZSwgZGF0ZVR5cGUoKSk7CiAgICAgaWYgKCFpc2Zpbml0ZShwYXJz
ZWRWYWx1ZSkpCiAgICAgICAgIHJldHVybiB2aXNpYmxlVmFsdWU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlu
cHV0VHlwZS5jcHAKaW5kZXggNzFlZGQ1OWY2NmUzNDhjYmE2YTcxMTc3Zjk4YmMwNjJhYzVlNzRm
NS4uZTFmNzA2ODhlYWZlM2QyODY3MzgyNjI1YTVkOWNmNjg1ODI1Mjg2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5k
VGltZUlucHV0VHlwZS5jcHAKQEAgLTMyMiwxMSArMzIyLDExIEBAIHZvaWQgQmFzZU11bHRpcGxl
RmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKCkKICAgICBp
ZiAoIW1fZGF0ZVRpbWVFZGl0RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQXRvbWlj
U3RyaW5nIGRpcmVjdGlvbiA9IGVsZW1lbnQoKS0+bG9jYWxpemVyKCkuaXNSVEwoKSA/IEF0b21p
Y1N0cmluZygicnRsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkgOiBBdG9t
aWNTdHJpbmcoImx0ciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IEF0b21pY1N0cmluZyBkaXJlY3Rpb24gPSBlbGVtZW50KCktPmxvY2FsZSgpLmlzUlRMKCkgPyBB
dG9taWNTdHJpbmcoInJ0bCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpIDog
QXRvbWljU3RyaW5nKCJsdHIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICBpZiAoRWxlbWVudCogY29udGFpbmVyID0gZmlyc3RFbGVtZW50Q2hpbGQoZWxlbWVudCgp
LT51c2VyQWdlbnRTaGFkb3dSb290KCkpKQogICAgICAgICBjb250YWluZXItPnNldEF0dHJpYnV0
ZShIVE1MTmFtZXM6OmRpckF0dHIsIGRpcmVjdGlvbik7CiAKLSAgICBEYXRlVGltZUVkaXRFbGVt
ZW50OjpMYXlvdXRQYXJhbWV0ZXJzIGxheW91dFBhcmFtZXRlcnMoZWxlbWVudCgpLT5sb2NhbGl6
ZXIoKSwgY3JlYXRlU3RlcFJhbmdlKEFueUlzRGVmYXVsdFN0ZXApKTsKKyAgICBEYXRlVGltZUVk
aXRFbGVtZW50OjpMYXlvdXRQYXJhbWV0ZXJzIGxheW91dFBhcmFtZXRlcnMoZWxlbWVudCgpLT5s
b2NhbGUoKSwgY3JlYXRlU3RlcFJhbmdlKEFueUlzRGVmYXVsdFN0ZXApKTsKIAogICAgIERhdGVD
b21wb25lbnRzIGRhdGU7CiAgICAgY29uc3QgYm9vbCBoYXNWYWx1ZSA9IHBhcnNlVG9EYXRlQ29t
cG9uZW50cyhlbGVtZW50KCktPnZhbHVlKCksICZkYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJ
bnB1dFR5cGUuY3BwCmluZGV4IDgzY2Q2NGNlNWI1MzNiZDk2NmM4NzViMmIxOWI3M2MzYzVkNTEx
NjUuLjk4OWIzMGQ0Yzk4ZWFkYjdiM2VmMTA4ZjU4YWJjMjZkZGVhZTJkOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIGJvb2wgRGF0ZUlu
cHV0VHlwZTo6dXNlc0ZpeGVkUGxhY2Vob2xkZXIoKSBjb25zdAogCiBTdHJpbmcgRGF0ZUlucHV0
VHlwZTo6Zml4ZWRQbGFjZWhvbGRlcigpCiB7Ci0gICAgcmV0dXJuIGVsZW1lbnQoKS0+bG9jYWxp
emVyKCkuZGF0ZUZvcm1hdFRleHQoKTsKKyAgICByZXR1cm4gZWxlbWVudCgpLT5sb2NhbGUoKS5k
YXRlRm9ybWF0VGV4dCgpOwogfQogI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVfTEVH
QUNZX1VJKQogCkBAIC0xODAsNyArMTgwLDcgQEAgU3RyaW5nIERhdGVJbnB1dFR5cGU6OmZvcm1h
dERhdGVUaW1lRmllbGRzU3RhdGUoY29uc3QgRGF0ZVRpbWVGaWVsZHNTdGF0ZSYgZGF0ZVQKIAog
dm9pZCBEYXRlSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFtZXRlcnMoRGF0ZVRpbWVFZGl0RWxl
bWVudDo6TGF5b3V0UGFyYW1ldGVycyYgbGF5b3V0UGFyYW1ldGVycywgY29uc3QgRGF0ZUNvbXBv
bmVudHMmIGRhdGUpIGNvbnN0CiB7Ci0gICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1h
dCA9IGxheW91dFBhcmFtZXRlcnMubG9jYWxpemVyLmRhdGVGb3JtYXQoKTsKKyAgICBsYXlvdXRQ
YXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5b3V0UGFyYW1ldGVycy5sb2NhbGUuZGF0ZUZv
cm1hdCgpOwogICAgIGxheW91dFBhcmFtZXRlcnMuZmFsbGJhY2tEYXRlVGltZUZvcm1hdCA9IEFT
Q0lJTGl0ZXJhbCgieXl5eS1NTS1kZCIpOwogICAgIGxheW91dFBhcmFtZXRlcnMubWluaW11bVll
YXIgPSBmdWxsWWVhcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0cikpOwogICAg
IGxheW91dFBhcmFtZXRlcnMubWF4aW11bVllYXIgPSBmdWxsWWVhcihlbGVtZW50KCktPmZhc3RH
ZXRBdHRyaWJ1dGUobWF4QXR0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9E
YXRlVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRU
eXBlLmNwcAppbmRleCBlOTRiOWYyYWE0Y2ZkNzdhZjRlMTlmMTcwYjQwOGYzN2UwNDBkOTBlLi4w
ZWNhYjZlNmZhNDlhYzBiZGVkNGQ0ZTViZmFmZTRiMzhlZWIxZjljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcApAQCAtMTQ2LDEwICsxNDYsMTAgQEAgU3RyaW5n
IERhdGVUaW1lSW5wdXRUeXBlOjpmb3JtYXREYXRlVGltZUZpZWxkc1N0YXRlKGNvbnN0IERhdGVU
aW1lRmllbGRzU3RhdGUmIGQKIHZvaWQgRGF0ZVRpbWVJbnB1dFR5cGU6OnNldHVwTGF5b3V0UGFy
YW1ldGVycyhEYXRlVGltZUVkaXRFbGVtZW50OjpMYXlvdXRQYXJhbWV0ZXJzJiBsYXlvdXRQYXJh
bWV0ZXJzLCBjb25zdCBEYXRlQ29tcG9uZW50cyYgZGF0ZSkgY29uc3QKIHsKICAgICBpZiAoc2hv
dWxkSGF2ZVNlY29uZEZpZWxkKGRhdGUpKSB7Ci0gICAgICAgIGxheW91dFBhcmFtZXRlcnMuZGF0
ZVRpbWVGb3JtYXQgPSBsYXlvdXRQYXJhbWV0ZXJzLmxvY2FsaXplci5kYXRlVGltZUZvcm1hdFdp
dGhTZWNvbmRzKCk7CisgICAgICAgIGxheW91dFBhcmFtZXRlcnMuZGF0ZVRpbWVGb3JtYXQgPSBs
YXlvdXRQYXJhbWV0ZXJzLmxvY2FsZS5kYXRlVGltZUZvcm1hdFdpdGhTZWNvbmRzKCk7CiAgICAg
ICAgIGxheW91dFBhcmFtZXRlcnMuZmFsbGJhY2tEYXRlVGltZUZvcm1hdCA9ICJkZC9NTS95eXl5
IEhIOm1tOnNzIjsKICAgICB9IGVsc2UgewotICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVU
aW1lRm9ybWF0ID0gbGF5b3V0UGFyYW1ldGVycy5sb2NhbGl6ZXIuZGF0ZVRpbWVGb3JtYXRXaXRo
b3V0U2Vjb25kcygpOworICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0g
bGF5b3V0UGFyYW1ldGVycy5sb2NhbGUuZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kcygpOwog
ICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmZhbGxiYWNrRGF0ZVRpbWVGb3JtYXQgPSAiZGQvTU0v
eXl5eSBISDptbSI7CiAgICAgfQogICAgIGxheW91dFBhcmFtZXRlcnMubWluaW11bVllYXIgPSBm
dWxsWWVhcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0cikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKaW5kZXggZDc5YzEwMzJk
YTJlZTA4NDc4MzNhMzY2YzgxZGJhNDI0Y2I1ZDcxNS4uOTM3M2NiZWMyOGQ5NDE5ZjRjZGZjYjdj
ODY5Nzc1M2Y0ODlhZTg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGlt
ZUxvY2FsSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9j
YWxJbnB1dFR5cGUuY3BwCkBAIC0xNTIsMTAgKzE1MiwxMCBAQCBTdHJpbmcgRGF0ZVRpbWVMb2Nh
bElucHV0VHlwZTo6Zm9ybWF0RGF0ZVRpbWVGaWVsZHNTdGF0ZShjb25zdCBEYXRlVGltZUZpZWxk
c1N0YQogdm9pZCBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFtZXRlcnMo
RGF0ZVRpbWVFZGl0RWxlbWVudDo6TGF5b3V0UGFyYW1ldGVycyYgbGF5b3V0UGFyYW1ldGVycywg
Y29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGUpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEhhdmVT
ZWNvbmRGaWVsZChkYXRlKSkgewotICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9y
bWF0ID0gbGF5b3V0UGFyYW1ldGVycy5sb2NhbGl6ZXIuZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25k
cygpOworICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5b3V0UGFy
YW1ldGVycy5sb2NhbGUuZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kcygpOwogICAgICAgICBsYXlv
dXRQYXJhbWV0ZXJzLmZhbGxiYWNrRGF0ZVRpbWVGb3JtYXQgPSAiZGQvTU0veXl5eSBISDptbTpz
cyI7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1h
dCA9IGxheW91dFBhcmFtZXRlcnMubG9jYWxpemVyLmRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29u
ZHMoKTsKKyAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBh
cmFtZXRlcnMubG9jYWxlLmRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHMoKTsKICAgICAgICAg
bGF5b3V0UGFyYW1ldGVycy5mYWxsYmFja0RhdGVUaW1lRm9ybWF0ID0gImRkL01NL3l5eXkgSEg6
bW0iOwogICAgIH0KICAgICBsYXlvdXRQYXJhbWV0ZXJzLm1pbmltdW1ZZWFyID0gZnVsbFllYXIo
ZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
b250aElucHV0VHlwZS5jcHAKaW5kZXggYTZjNTZhMzc3ZGJhYzZhMmY5MmI5NzkzZTNmNzk3N2Q2
ZGRjMzVjYy4uNTI3NWU1NGI1NjQ3Yjc1ODU0ZDVhNGI0M2JmMDk5NTFiOTdlMzcwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBTdHJp
bmcgTW9udGhJbnB1dFR5cGU6OmZvcm1hdERhdGVUaW1lRmllbGRzU3RhdGUoY29uc3QgRGF0ZVRp
bWVGaWVsZHNTdGF0ZSYgZGF0ZQogCiB2b2lkIE1vbnRoSW5wdXRUeXBlOjpzZXR1cExheW91dFBh
cmFtZXRlcnMoRGF0ZVRpbWVFZGl0RWxlbWVudDo6TGF5b3V0UGFyYW1ldGVycyYgbGF5b3V0UGFy
YW1ldGVycywgY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGUpIGNvbnN0CiB7Ci0gICAgbGF5b3V0
UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFtZXRlcnMubG9jYWxpemVyLm1v
bnRoRm9ybWF0KCk7CisgICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91
dFBhcmFtZXRlcnMubG9jYWxlLm1vbnRoRm9ybWF0KCk7CiAgICAgbGF5b3V0UGFyYW1ldGVycy5m
YWxsYmFja0RhdGVUaW1lRm9ybWF0ID0gIk1NL3l5eXkiOwogICAgIGxheW91dFBhcmFtZXRlcnMu
bWluaW11bVllYXIgPSBmdWxsWWVhcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0
cikpOwogICAgIGxheW91dFBhcmFtZXRlcnMubWF4aW11bVllYXIgPSBmdWxsWWVhcihlbGVtZW50
KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJ
bnB1dFR5cGUuY3BwCmluZGV4IDkxY2ZhNDA5ZjEyY2ZjNjZkZTQ1NGRkMDEwMDlhNTU4MmRkOWU2
NTUuLmNlODMzNTEyZDEyOTJmYzdlZGJlYmY4YzBlZmFhMzZjNjEzZDhiMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBTdHJpbmcg
TnVtYmVySW5wdXRUeXBlOjpsb2NhbGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1
ZSkgY29uc3QKICAgICAvLyBXZSBkb24ndCBsb2NhbGl6ZSBzY2llbnRpZmljIG5vdGF0aW9ucy4K
ICAgICBpZiAocHJvcG9zZWRWYWx1ZS5maW5kKGlzRSkgIT0gbm90Rm91bmQpCiAgICAgICAgIHJl
dHVybiBwcm9wb3NlZFZhbHVlOwotICAgIHJldHVybiBlbGVtZW50KCktPmxvY2FsaXplcigpLmNv
bnZlcnRUb0xvY2FsaXplZE51bWJlcihwcm9wb3NlZFZhbHVlKTsKKyAgICByZXR1cm4gZWxlbWVu
dCgpLT5sb2NhbGUoKS5jb252ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIocHJvcG9zZWRWYWx1ZSk7CiB9
CiAKIFN0cmluZyBOdW1iZXJJbnB1dFR5cGU6OnZpc2libGVWYWx1ZSgpIGNvbnN0CkBAIC0yNTAs
NyArMjUwLDcgQEAgU3RyaW5nIE51bWJlcklucHV0VHlwZTo6Y29udmVydEZyb21WaXNpYmxlVmFs
dWUoY29uc3QgU3RyaW5nJiB2aXNpYmxlVmFsdWUpIGNvbnMKICAgICAvLyBXZSBkb24ndCBsb2Nh
bGl6ZSBzY2llbnRpZmljIG5vdGF0aW9ucy4KICAgICBpZiAodmlzaWJsZVZhbHVlLmZpbmQoaXNF
KSAhPSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIHZpc2libGVWYWx1ZTsKLSAgICByZXR1cm4g
ZWxlbWVudCgpLT5sb2NhbGl6ZXIoKS5jb252ZXJ0RnJvbUxvY2FsaXplZE51bWJlcih2aXNpYmxl
VmFsdWUpOworICAgIHJldHVybiBlbGVtZW50KCktPmxvY2FsZSgpLmNvbnZlcnRGcm9tTG9jYWxp
emVkTnVtYmVyKHZpc2libGVWYWx1ZSk7CiB9CiAKIGJvb2wgTnVtYmVySW5wdXRUeXBlOjppc0Fj
Y2VwdGFibGVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UaW1lSW5wdXRUeXBlLmNwcAppbmRleCBlODYzM2ZlYmI2NjNlMWQxOWI4NzJhYzJkMjY4Yzgz
Nzg2MWJhN2YyLi41ZjUyMjc5NzdlMGVhMDcwMTg4NTNkYjUwYzE5ZGQ1N2Q4NmVkNGYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKQEAgLTEyOCw5ICsxMjgsOSBAQCBTdHJp
bmcgVGltZUlucHV0VHlwZTo6bG9jYWxpemVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFs
dWUpIGNvbnN0CiAgICAgaWYgKCFwYXJzZVRvRGF0ZUNvbXBvbmVudHMocHJvcG9zZWRWYWx1ZSwg
JmRhdGUpKQogICAgICAgICByZXR1cm4gcHJvcG9zZWRWYWx1ZTsKIAotICAgIExvY2FsaXplcjo6
Rm9ybWF0VHlwZSBmb3JtYXRUeXBlID0gc2hvdWxkSGF2ZVNlY29uZEZpZWxkKGRhdGUpID8gTG9j
YWxpemVyOjpGb3JtYXRUeXBlTWVkaXVtIDogTG9jYWxpemVyOjpGb3JtYXRUeXBlU2hvcnQ7Cisg
ICAgTG9jYWxlOjpGb3JtYXRUeXBlIGZvcm1hdFR5cGUgPSBzaG91bGRIYXZlU2Vjb25kRmllbGQo
ZGF0ZSkgPyBMb2NhbGU6OkZvcm1hdFR5cGVNZWRpdW0gOiBMb2NhbGU6OkZvcm1hdFR5cGVTaG9y
dDsKIAotICAgIFN0cmluZyBsb2NhbGl6ZWQgPSBlbGVtZW50KCktPmxvY2FsaXplcigpLmZvcm1h
dERhdGVUaW1lKGRhdGUsIGZvcm1hdFR5cGUpOworICAgIFN0cmluZyBsb2NhbGl6ZWQgPSBlbGVt
ZW50KCktPmxvY2FsZSgpLmZvcm1hdERhdGVUaW1lKGRhdGUsIGZvcm1hdFR5cGUpOwogICAgIHJl
dHVybiBsb2NhbGl6ZWQuaXNFbXB0eSgpID8gcHJvcG9zZWRWYWx1ZSA6IGxvY2FsaXplZDsKIH0K
IApAQCAtMTU1LDEwICsxNTUsMTAgQEAgU3RyaW5nIFRpbWVJbnB1dFR5cGU6OmZvcm1hdERhdGVU
aW1lRmllbGRzU3RhdGUoY29uc3QgRGF0ZVRpbWVGaWVsZHNTdGF0ZSYgZGF0ZVQKIHZvaWQgVGlt
ZUlucHV0VHlwZTo6c2V0dXBMYXlvdXRQYXJhbWV0ZXJzKERhdGVUaW1lRWRpdEVsZW1lbnQ6Okxh
eW91dFBhcmFtZXRlcnMmIGxheW91dFBhcmFtZXRlcnMsIGNvbnN0IERhdGVDb21wb25lbnRzJiBk
YXRlKSBjb25zdAogewogICAgIGlmIChzaG91bGRIYXZlU2Vjb25kRmllbGQoZGF0ZSkpIHsKLSAg
ICAgICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFtZXRlcnMu
bG9jYWxpemVyLnRpbWVGb3JtYXQoKTsKKyAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGlt
ZUZvcm1hdCA9IGxheW91dFBhcmFtZXRlcnMubG9jYWxlLnRpbWVGb3JtYXQoKTsKICAgICAgICAg
bGF5b3V0UGFyYW1ldGVycy5mYWxsYmFja0RhdGVUaW1lRm9ybWF0ID0gIkhIOm1tOnNzIjsKICAg
ICB9IGVsc2UgewotICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5
b3V0UGFyYW1ldGVycy5sb2NhbGl6ZXIuc2hvcnRUaW1lRm9ybWF0KCk7CisgICAgICAgIGxheW91
dFBhcmFtZXRlcnMuZGF0ZVRpbWVGb3JtYXQgPSBsYXlvdXRQYXJhbWV0ZXJzLmxvY2FsZS5zaG9y
dFRpbWVGb3JtYXQoKTsKICAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5mYWxsYmFja0RhdGVUaW1l
Rm9ybWF0ID0gIkhIOm1tIjsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQuY3BwCmluZGV4IDkyNzU4YWU1OTU1ZWFmZDYxYjdk
YzZlZGNiMjdiNjBjMTJlYjUzNGEuLjlhZTNlNzM5ZmFkN2YxZjUzNDBjZjZjOWEwZTFjZWVlMWVk
MzczOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRWRp
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRWRp
dEVsZW1lbnQuY3BwCkBAIC0xMzAsMTAgKzEzMCwxMCBAQCB2b2lkIERhdGVUaW1lRWRpdEJ1aWxk
ZXI6OnZpc2l0RmllbGQoRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZSBmaWVsZFR5cGUsIGludCBj
bwogICAgICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgIGNhc2UgY291bnRGb3JOYXJyb3dN
b250aDogLy8gRmFsbHRocm91Z2guCiAgICAgICAgIGNhc2UgY291bnRGb3JBYmJyZXZpYXRlZE1v
bnRoOgotICAgICAgICAgICAgbV9lZGl0RWxlbWVudC5hZGRGaWVsZChEYXRlVGltZVN5bWJvbGlj
TW9udGhGaWVsZEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgbV9lZGl0RWxlbWVudCwgbV9wYXJh
bWV0ZXJzLmxvY2FsaXplci5zaG9ydE1vbnRoTGFiZWxzKCkpKTsKKyAgICAgICAgICAgIG1fZWRp
dEVsZW1lbnQuYWRkRmllbGQoRGF0ZVRpbWVTeW1ib2xpY01vbnRoRmllbGRFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQsIG1fZWRpdEVsZW1lbnQsIG1fcGFyYW1ldGVycy5sb2NhbGUuc2hvcnRNb250
aExhYmVscygpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBjb3VudEZvckZ1
bGxNb250aDoKLSAgICAgICAgICAgIG1fZWRpdEVsZW1lbnQuYWRkRmllbGQoRGF0ZVRpbWVTeW1i
b2xpY01vbnRoRmllbGRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIG1fZWRpdEVsZW1lbnQsIG1f
cGFyYW1ldGVycy5sb2NhbGl6ZXIubW9udGhMYWJlbHMoKSkpOworICAgICAgICAgICAgbV9lZGl0
RWxlbWVudC5hZGRGaWVsZChEYXRlVGltZVN5bWJvbGljTW9udGhGaWVsZEVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCwgbV9lZGl0RWxlbWVudCwgbV9wYXJhbWV0ZXJzLmxvY2FsZS5tb250aExhYmVs
cygpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IG1fZWRpdEVsZW1lbnQuYWRkRmllbGQoRGF0ZVRpbWVNb250aEZpZWxkRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50LCBtX2VkaXRFbGVtZW50LCBtX3BhcmFtZXRlcnMucGxhY2Vob2xkZXJGb3JNb250
aCkpOwpAQCAtMTQ1LDEwICsxNDUsMTAgQEAgdm9pZCBEYXRlVGltZUVkaXRCdWlsZGVyOjp2aXNp
dEZpZWxkKERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGUgZmllbGRUeXBlLCBpbnQgY28KICAgICAg
ICAgc3dpdGNoIChjb3VudCkgewogICAgICAgICBjYXNlIGNvdW50Rm9yTmFycm93TW9udGg6IC8v
IEZhbGx0aHJvdWdoLgogICAgICAgICBjYXNlIGNvdW50Rm9yQWJicmV2aWF0ZWRNb250aDoKLSAg
ICAgICAgICAgIG1fZWRpdEVsZW1lbnQuYWRkRmllbGQoRGF0ZVRpbWVTeW1ib2xpY01vbnRoRmll
bGRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIG1fZWRpdEVsZW1lbnQsIG1fcGFyYW1ldGVycy5s
b2NhbGl6ZXIuc2hvcnRTdGFuZEFsb25lTW9udGhMYWJlbHMoKSkpOworICAgICAgICAgICAgbV9l
ZGl0RWxlbWVudC5hZGRGaWVsZChEYXRlVGltZVN5bWJvbGljTW9udGhGaWVsZEVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCwgbV9lZGl0RWxlbWVudCwgbV9wYXJhbWV0ZXJzLmxvY2FsZS5zaG9ydFN0
YW5kQWxvbmVNb250aExhYmVscygpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBjb3VudEZvckZ1bGxNb250aDoKLSAgICAgICAgICAgIG1fZWRpdEVsZW1lbnQuYWRkRmllbGQo
RGF0ZVRpbWVTeW1ib2xpY01vbnRoRmllbGRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIG1fZWRp
dEVsZW1lbnQsIG1fcGFyYW1ldGVycy5sb2NhbGl6ZXIuc3RhbmRBbG9uZU1vbnRoTGFiZWxzKCkp
KTsKKyAgICAgICAgICAgIG1fZWRpdEVsZW1lbnQuYWRkRmllbGQoRGF0ZVRpbWVTeW1ib2xpY01v
bnRoRmllbGRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIG1fZWRpdEVsZW1lbnQsIG1fcGFyYW1l
dGVycy5sb2NhbGUuc3RhbmRBbG9uZU1vbnRoTGFiZWxzKCkpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgbV9lZGl0RWxlbWVudC5hZGRGaWVsZChE
YXRlVGltZU1vbnRoRmllbGRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIG1fZWRpdEVsZW1lbnQs
IG1fcGFyYW1ldGVycy5wbGFjZWhvbGRlckZvck1vbnRoKSk7CkBAIC0xNTcsNyArMTU3LDcgQEAg
dm9pZCBEYXRlVGltZUVkaXRCdWlsZGVyOjp2aXNpdEZpZWxkKERhdGVUaW1lRm9ybWF0OjpGaWVs
ZFR5cGUgZmllbGRUeXBlLCBpbnQgY28KICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBEYXRl
VGltZUZvcm1hdDo6RmllbGRUeXBlUGVyaW9kOgotICAgICAgICBtX2VkaXRFbGVtZW50LmFkZEZp
ZWxkKERhdGVUaW1lQU1QTUZpZWxkRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBtX2VkaXRFbGVt
ZW50LCBtX3BhcmFtZXRlcnMubG9jYWxpemVyLnRpbWVBTVBNTGFiZWxzKCkpKTsKKyAgICAgICAg
bV9lZGl0RWxlbWVudC5hZGRGaWVsZChEYXRlVGltZUFNUE1GaWVsZEVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCwgbV9lZGl0RWxlbWVudCwgbV9wYXJhbWV0ZXJzLmxvY2FsZS50aW1lQU1QTUxhYmVs
cygpKSk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxk
VHlwZVNlY29uZDogewpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgRGF0ZVRpbWVFZGl0QnVpbGRl
cjo6dmlzaXRGaWVsZChEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlIGZpZWxkVHlwZSwgaW50IGNv
CiAgICAgICAgICAgICBmaWVsZC0+c2V0UmVhZE9ubHkoKTsKIAogICAgICAgICBpZiAobmVlZE1p
bGxpc2Vjb25kRmllbGQoKSkgewotICAgICAgICAgICAgdmlzaXRMaXRlcmFsKG1fcGFyYW1ldGVy
cy5sb2NhbGl6ZXIubG9jYWxpemVkRGVjaW1hbFNlcGFyYXRvcigpKTsKKyAgICAgICAgICAgIHZp
c2l0TGl0ZXJhbChtX3BhcmFtZXRlcnMubG9jYWxlLmxvY2FsaXplZERlY2ltYWxTZXBhcmF0b3Io
KSk7CiAgICAgICAgICAgICB2aXNpdEZpZWxkKERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVGcmFj
dGlvbmFsU2Vjb25kLCAzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmgKaW5kZXggODk4YjYy
ZGY4ODQ0YzU3NTY3Yzk4YjFiNzUyM2ZjZjEwOTNlZTc0ZC4uMzVjNWJjN2U4ZWYyZGM4M2ExZTRm
ZTcyZjkxYzhmYzRlMTE2YmI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvRGF0ZVRpbWVFZGl0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0RhdGVUaW1lRWRpdEVsZW1lbnQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIERhdGVUaW1lRmllbGRzU3RhdGU7CiBjbGFzcyBLZXlib2FyZEV2ZW50Owot
Y2xhc3MgTG9jYWxpemVyOworY2xhc3MgTG9jYWxlOwogY2xhc3MgTW91c2VFdmVudDsKIGNsYXNz
IFN0ZXBSYW5nZTsKIApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IExheW91
dFBhcmFtZXRlcnMgewogICAgICAgICBTdHJpbmcgZGF0ZVRpbWVGb3JtYXQ7CiAgICAgICAgIFN0
cmluZyBmYWxsYmFja0RhdGVUaW1lRm9ybWF0OwotICAgICAgICBMb2NhbGl6ZXImIGxvY2FsaXpl
cjsKKyAgICAgICAgTG9jYWxlJiBsb2NhbGU7CiAgICAgICAgIGNvbnN0IFN0ZXBSYW5nZSBzdGVw
UmFuZ2U7CiAgICAgICAgIGludCBtaW5pbXVtWWVhcjsKICAgICAgICAgaW50IG1heGltdW1ZZWFy
OwpAQCAtNzEsOCArNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBwbGFjZWhvbGRlckZv
ck1vbnRoOwogICAgICAgICBTdHJpbmcgcGxhY2Vob2xkZXJGb3JZZWFyOwogCi0gICAgICAgIExh
eW91dFBhcmFtZXRlcnMoTG9jYWxpemVyJiBsb2NhbGl6ZXIsIGNvbnN0IFN0ZXBSYW5nZSYgc3Rl
cFJhbmdlKQotICAgICAgICAgICAgOiBsb2NhbGl6ZXIobG9jYWxpemVyKQorICAgICAgICBMYXlv
dXRQYXJhbWV0ZXJzKExvY2FsZSYgbG9jYWxlLCBjb25zdCBTdGVwUmFuZ2UmIHN0ZXBSYW5nZSkK
KyAgICAgICAgICAgIDogbG9jYWxlKGxvY2FsZSkKICAgICAgICAgICAgICwgc3RlcFJhbmdlKHN0
ZXBSYW5nZSkKICAgICAgICAgICAgICwgbWluaW11bVllYXIodW5kZWZpbmVkWWVhcigpKQogICAg
ICAgICAgICAgLCBtYXhpbXVtWWVhcih1bmRlZmluZWRZZWFyKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNw
cAppbmRleCBlOTQyYjQwNjBlYjQ1NjYzNmVlYmE2ZjdkMDFkODZhZDA3ZjFiYzI2Li5hOTJmZTgy
MmVhYzNmYWE3MTk4NTk3ZTZiNTlmZDk2NTVlMWEzYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAK
QEAgLTEwNCwxMiArMTA0LDEyIEBAIHZvaWQgRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50Ojpk
aWRCbHVyKCkKIAogU3RyaW5nIERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6Zm9ybWF0VmFs
dWUoaW50IHZhbHVlKSBjb25zdAogewotICAgIExvY2FsaXplciYgbG9jYWxpemVyID0gbG9jYWxp
emVyRm9yT3duZXIoKTsKKyAgICBMb2NhbGUmIGxvY2FsZSA9IGxvY2FsZUZvck93bmVyKCk7CiAg
ICAgaWYgKG1fcmFuZ2UubWF4aW11bSA+IDk5OSkKLSAgICAgICAgcmV0dXJuIGxvY2FsaXplci5j
b252ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIoU3RyaW5nOjpmb3JtYXQoIiUwNGQiLCB2YWx1ZSkpOwor
ICAgICAgICByZXR1cm4gbG9jYWxlLmNvbnZlcnRUb0xvY2FsaXplZE51bWJlcihTdHJpbmc6OmZv
cm1hdCgiJTA0ZCIsIHZhbHVlKSk7CiAgICAgaWYgKG1fcmFuZ2UubWF4aW11bSA+IDk5KQotICAg
ICAgICByZXR1cm4gbG9jYWxpemVyLmNvbnZlcnRUb0xvY2FsaXplZE51bWJlcihTdHJpbmc6OmZv
cm1hdCgiJTAzZCIsIHZhbHVlKSk7Ci0gICAgcmV0dXJuIGxvY2FsaXplci5jb252ZXJ0VG9Mb2Nh
bGl6ZWROdW1iZXIoU3RyaW5nOjpmb3JtYXQoIiUwMmQiLCB2YWx1ZSkpOworICAgICAgICByZXR1
cm4gbG9jYWxlLmNvbnZlcnRUb0xvY2FsaXplZE51bWJlcihTdHJpbmc6OmZvcm1hdCgiJTAzZCIs
IHZhbHVlKSk7CisgICAgcmV0dXJuIGxvY2FsZS5jb252ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIoU3Ry
aW5nOjpmb3JtYXQoIiUwMmQiLCB2YWx1ZSkpOwogfQogCiB2b2lkIERhdGVUaW1lTnVtZXJpY0Zp
ZWxkRWxlbWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBrZXlib2FyZEV2
ZW50KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50
OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGtleWJvYXJkRXZlCiAgICAgRE9N
VGltZVN0YW1wIGRlbHRhID0ga2V5Ym9hcmRFdmVudC0+dGltZVN0YW1wKCkgLSBtX2xhc3REaWdp
dENoYXJUaW1lOwogICAgIG1fbGFzdERpZ2l0Q2hhclRpbWUgPSAwOwogCi0gICAgU3RyaW5nIG51
bWJlciA9IGxvY2FsaXplckZvck93bmVyKCkuY29udmVydEZyb21Mb2NhbGl6ZWROdW1iZXIoU3Ry
aW5nKCZjaGFyQ29kZSwgMSkpOworICAgIFN0cmluZyBudW1iZXIgPSBsb2NhbGVGb3JPd25lcigp
LmNvbnZlcnRGcm9tTG9jYWxpemVkTnVtYmVyKFN0cmluZygmY2hhckNvZGUsIDEpKTsKICAgICBj
b25zdCBpbnQgZGlnaXQgPSBudW1iZXJbMF0gLSAnMCc7CiAgICAgaWYgKGRpZ2l0IDwgMCB8fCBk
aWdpdCA+IDkpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NSw5ICsxNDUsOSBAQCBib29sIERhdGVU
aW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6aGFzVmFsdWUoKSBjb25zdAogICAgIHJldHVybiBtX2hh
c1ZhbHVlOwogfQogCi1Mb2NhbGl6ZXImIERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6bG9j
YWxpemVyRm9yT3duZXIoKSBjb25zdAorTG9jYWxlJiBEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1l
bnQ6OmxvY2FsZUZvck93bmVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQoKS0+Z2V0
Q2FjaGVkTG9jYWxpemVyKGxvY2FsZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIGRvY3VtZW50
KCktPmdldENhY2hlZExvY2FsZShsb2NhbGVJZGVudGlmaWVyKCkpOwogfQogCiBpbnQgRGF0ZVRp
bWVOdW1lcmljRmllbGRFbGVtZW50OjptYXhpbXVtKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmgKaW5k
ZXggMDBlZWVmMDI0OWY5Mjc5ZWVlMjAzOTYyMjUyN2U3MmM0ZjcyOWU0ZC4uNzgxMWViYWRjZmU0
ZTJiYzkyNzY3N2E2MTgxZWY2NjE4ZjA5NjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmgKQEAgLTgwLDcg
KzgwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0IE9WRVJS
SURFIEZJTkFMOwogCiAgICAgU3RyaW5nIGZvcm1hdFZhbHVlKGludCkgY29uc3Q7Ci0gICAgTG9j
YWxpemVyJiBsb2NhbGl6ZXJGb3JPd25lcigpIGNvbnN0OworICAgIExvY2FsZSYgbG9jYWxlRm9y
T3duZXIoKSBjb25zdDsKIAogICAgIERPTVRpbWVTdGFtcCBtX2xhc3REaWdpdENoYXJUaW1lOwog
ICAgIGNvbnN0IFN0cmluZyBtX3BsYWNlaG9sZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVw
Q2xpZW50LmgKaW5kZXggZDBmYjRiYjU2ZjA0ODU1NDVhNGQ1NmQzZjIzYjhjYzNmYTBhOGMyNi4u
MzkxYzhmODNlN2NiYWY1MjhhMDUwMjI0NzI2ZThmMzMyMDQxOWY2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VQb3B1cENsaWVudC5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIERvY3VtZW50V3JpdGVyOwotY2xhc3MgTG9jYWxpemVyOworY2xhc3MgTG9j
YWxlOwogCiBjbGFzcyBQYWdlUG9wdXBDbGllbnQgewogcHVibGljOgpAQCAtNTMsOCArNTMsOCBA
QCBwdWJsaWM6CiAgICAgLy8gIC0gd2luZG93LnNldFZhbHVlQW5kQ2xvc2VQb3B1cChudW1iZXIs
IHN0cmluZykuCiAgICAgdmlydHVhbCB2b2lkIHdyaXRlRG9jdW1lbnQoRG9jdW1lbnRXcml0ZXIm
KSA9IDA7CiAKLSAgICAvLyBSZXR1cm5zIGEgTG9jYWxpemVyIG9iamVjdCBhc3NvY2lhdGVkIHRv
IHRoZSBjbGllbnQuCi0gICAgdmlydHVhbCBMb2NhbGl6ZXImIGxvY2FsaXplcigpID0gMDsKKyAg
ICAvLyBSZXR1cm5zIGEgTG9jYWxlIG9iamVjdCBhc3NvY2lhdGVkIHRvIHRoZSBjbGllbnQuCisg
ICAgdmlydHVhbCBMb2NhbGUmIGxvY2FsZSgpID0gMDsKIAogICAgIC8vIFRoaXMgaXMgY2FsbGVk
IGJ5IHRoZSBjb250ZW50IEhUTUwgb2YgYSBQYWdlUG9wdXAuCiAgICAgLy8gQW4gaW1wbGVtZW50
YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBzaG91bGQgY2FsbCBDaHJvbWVDbGllbnQ6OmNsb3NlUGFn
ZVBvcHVwKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDb250cm9sbGVyLmNwcApp
bmRleCA5MTNhMmY4YjRjZDIwODZiZTQ5NjhmM2MzNTgxODI2YTRhMGM1MjIzLi5kYWNlNzQyMDMw
MTlkNWFiM2QzNjA4YzVkYmQ4NDI1NDM2ZjAyODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VQb3B1cENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVBvcHVwQ29udHJvbGxlci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBQYWdlUG9wdXBD
b250cm9sbGVyOjpzZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW50IG51bVZhbHVlLCBjb25zdCBTdHJp
bmcmIHN0cmkKIFN0cmluZyBQYWdlUG9wdXBDb250cm9sbGVyOjpsb2NhbGl6ZU51bWJlclN0cmlu
Zyhjb25zdCBTdHJpbmcmIG51bWJlclN0cmluZykKIHsKICAgICBpZiAobV9wb3B1cENsaWVudCkK
LSAgICAgICAgcmV0dXJuIG1fcG9wdXBDbGllbnQtPmxvY2FsaXplcigpLmNvbnZlcnRUb0xvY2Fs
aXplZE51bWJlcihudW1iZXJTdHJpbmcpOworICAgICAgICByZXR1cm4gbV9wb3B1cENsaWVudC0+
bG9jYWxlKCkuY29udmVydFRvTG9jYWxpemVkTnVtYmVyKG51bWJlclN0cmluZyk7CiAgICAgcmV0
dXJuIG51bWJlclN0cmluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Mb2NhbGVJQ1UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2Nh
bGVJQ1UuY3BwCmluZGV4IGU1MTRjOTE4YzRiN2I3YmUxMDVkOGE5YzNmZTU5N2EwMDg0ODIxMGYu
LjlhNGYyMTk5YzE2YmQ5MmM3OTFmMzkzNDliM2IzZjA5MTNkNjNmOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPExvY2Fs
aXplcj4gTG9jYWxpemVyOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCitQYXNz
T3duUHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUp
CiB7CiAgICAgcmV0dXJuIExvY2FsZUlDVTo6Y3JlYXRlKGxvY2FsZS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKIH0KQEAgLTExMiw3ICsxMTIsNyBAQCBTdHJpbmcgTG9jYWxlSUNVOjpkZWNpbWFs
VGV4dEF0dHJpYnV0ZShVTnVtYmVyRm9ybWF0VGV4dEF0dHJpYnV0ZSB0YWcpCiAgICAgcmV0dXJu
IFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKIH0KIAotdm9pZCBMb2NhbGVJQ1U6OmluaXRpYWxpemVM
b2NhbGl6ZXJEYXRhKCkKK3ZvaWQgTG9jYWxlSUNVOjppbml0aWFsaXplTG9jYWxlRGF0YSgpCiB7
CiAgICAgaWYgKG1fZGlkQ3JlYXRlRGVjaW1hbEZvcm1hdCkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTM2LDcgKzEzNiw3IEBAIHZvaWQgTG9jYWxlSUNVOjppbml0aWFsaXplTG9jYWxpemVyRGF0YSgp
CiAgICAgc3ltYm9scy5hcHBlbmQoZGVjaW1hbFN5bWJvbChVTlVNX0RFQ0lNQUxfU0VQQVJBVE9S
X1NZTUJPTCkpOwogICAgIHN5bWJvbHMuYXBwZW5kKGRlY2ltYWxTeW1ib2woVU5VTV9HUk9VUElO
R19TRVBBUkFUT1JfU1lNQk9MKSk7CiAgICAgQVNTRVJUKHN5bWJvbHMuc2l6ZSgpID09IERlY2lt
YWxTeW1ib2xzU2l6ZSk7Ci0gICAgc2V0TG9jYWxpemVyRGF0YShzeW1ib2xzLCBkZWNpbWFsVGV4
dEF0dHJpYnV0ZShVTlVNX1BPU0lUSVZFX1BSRUZJWCksIGRlY2ltYWxUZXh0QXR0cmlidXRlKFVO
VU1fUE9TSVRJVkVfU1VGRklYKSwgZGVjaW1hbFRleHRBdHRyaWJ1dGUoVU5VTV9ORUdBVElWRV9Q
UkVGSVgpLCBkZWNpbWFsVGV4dEF0dHJpYnV0ZShVTlVNX05FR0FUSVZFX1NVRkZJWCkpOworICAg
IHNldExvY2FsZURhdGEoc3ltYm9scywgZGVjaW1hbFRleHRBdHRyaWJ1dGUoVU5VTV9QT1NJVElW
RV9QUkVGSVgpLCBkZWNpbWFsVGV4dEF0dHJpYnV0ZShVTlVNX1BPU0lUSVZFX1NVRkZJWCksIGRl
Y2ltYWxUZXh0QXR0cmlidXRlKFVOVU1fTkVHQVRJVkVfUFJFRklYKSwgZGVjaW1hbFRleHRBdHRy
aWJ1dGUoVU5VTV9ORUdBVElWRV9TVUZGSVgpKTsKIH0KIAogYm9vbCBMb2NhbGVJQ1U6OmluaXRp
YWxpemVTaG9ydERhdGVGb3JtYXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Mb2NhbGVJQ1UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxl
SUNVLmgKaW5kZXggOWY0OGQ5Njc5ZTkwMzg3OWU2ZTRiNTVjNjZiOTQ4MDg5MGM1NjM2NS4uYTVh
NGZlZWNkYjMyNTYxYTQ5MGUzNzY1M2I1ZmZlOGZhOWY3NThjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogLy8gV2Ugc2hvdWxkIHVzZSB0aGlzIGNsYXNzIG9ubHkgZm9yIExvY2FsaXplZE51
bWJlcklDVS5jcHAsIExvY2FsaXplZERhdGVJQ1UuY3BwLAogLy8gYW5kIExvY2FsaXplZE51bWJl
cklDVVRlc3QuY3BwLgotY2xhc3MgTG9jYWxlSUNVIDogcHVibGljIExvY2FsaXplciB7CitjbGFz
cyBMb2NhbGVJQ1UgOiBwdWJsaWMgTG9jYWxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093
blB0cjxMb2NhbGVJQ1U+IGNyZWF0ZShjb25zdCBjaGFyKiBsb2NhbGVTdHJpbmcpOwogICAgIHZp
cnR1YWwgfkxvY2FsZUlDVSgpOwpAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IExvY2FsZUlDVShjb25zdCBjaGFyKik7CiAgICAgU3RyaW5nIGRlY2ltYWxTeW1ib2woVU51
bWJlckZvcm1hdFN5bWJvbCk7CiAgICAgU3RyaW5nIGRlY2ltYWxUZXh0QXR0cmlidXRlKFVOdW1i
ZXJGb3JtYXRUZXh0QXR0cmlidXRlKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUxvY2Fs
aXplckRhdGEoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUxvY2FsZURh
dGEoKSBPVkVSUklERTsKIAogICAgIGJvb2wgZGV0ZWN0U2lnbkFuZEdldERpZ2l0UmFuZ2UoY29u
c3QgU3RyaW5nJiBpbnB1dCwgYm9vbCYgaXNOZWdhdGl2ZSwgdW5zaWduZWQmIHN0YXJ0SW5kZXgs
IHVuc2lnbmVkJiBlbmRJbmRleCk7CiAgICAgdW5zaWduZWQgbWF0Y2hlZERlY2ltYWxTeW1ib2xJ
bmRleChjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCYgcG9zaXRpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKaW5kZXggNTU0NWIzYmM1Y2Q3ZDRj
ODdhOGFiMjBkZWFmOTViNTY4ZjUyYjJiYy4uMzVhZmNmN2IxMDVkOTFkZGM2ZWM1NjAwNWQ4ZTdl
NTYxM2FjMGIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2Nh
bGVOb25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUu
Y3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBM
b2NhbGVOb25lIDogcHVibGljIExvY2FsaXplciB7CitjbGFzcyBMb2NhbGVOb25lIDogcHVibGlj
IExvY2FsZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TG9jYWxlTm9uZSgpOwogCiBwcml2YXRl
OgotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplTG9jYWxpemVyRGF0YSgpIE9WRVJSSURFIEZJ
TkFMOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplTG9jYWxlRGF0YSgpIE9WRVJSSURFIEZJ
TkFMOwogICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlRGF0ZVRpbWUoY29uc3QgU3RyaW5nJiwgRGF0
ZUNvbXBvbmVudHM6OlR5cGUpIE9WRVJSSURFOwogI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIp
CiAgICAgdmlydHVhbCBTdHJpbmcgZGF0ZUZvcm1hdFRleHQoKSBPVkVSUklERTsKQEAgLTYyLDcg
KzYyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotUGFzc093blB0cjxMb2NhbGl6ZXI+IExv
Y2FsaXplcjo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYpCitQYXNzT3duUHRyPExvY2FsZT4g
TG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJikKIHsKICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IExvY2FsZU5vbmUoKSk7CiB9CkBAIC03MSw3ICs3MSw3IEBAIExvY2FsZU5vbmU6On5M
b2NhbGVOb25lKCkKIHsKIH0KIAotdm9pZCBMb2NhbGVOb25lOjppbml0aWFsaXplTG9jYWxpemVy
RGF0YSgpCit2b2lkIExvY2FsZU5vbmU6OmluaXRpYWxpemVMb2NhbGVEYXRhKCkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVXaW4uY3BwCmluZGV4IGJiMWNlYTdm
NWVlMTlkNDI1MjljN2Y2N2U3MjcwYWE0ZjQyMzBiZDQuLjY2ZWZjMjU3ODA1OTY0NDk2ZGRmNDQy
MmIwZTU4MWM5MGFjOThiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvTG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2Fs
ZVdpbi5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIExDSUQgTENJREZyb21Mb2NhbGUoY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiAgICAgcmV0dXJuIGxjaWQ7CiB9CiAKLVBhc3NPd25Q
dHI8TG9jYWxpemVyPiBMb2NhbGl6ZXI6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
ZSkKK1Bhc3NPd25QdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZSkKIHsKICAgICByZXR1cm4gTG9jYWxlV2luOjpjcmVhdGUoTENJREZyb21Mb2NhbGUo
bG9jYWxlKSk7CiB9CkBAIC03NTEsNyArNzUxLDcgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIExv
Y2FsZVdpbjo6dGltZUFNUE1MYWJlbHMoKQogfQogI2VuZGlmCiAKLXZvaWQgTG9jYWxlV2luOjpp
bml0aWFsaXplTG9jYWxpemVyRGF0YSgpCit2b2lkIExvY2FsZVdpbjo6aW5pdGlhbGl6ZUxvY2Fs
ZURhdGEoKQogewogICAgIGlmIChtX2RpZEluaXRpYWxpemVOdW1iZXJEYXRhKQogICAgICAgICBy
ZXR1cm47CkBAIC04MTksNyArODE5LDcgQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVMb2Nh
bGl6ZXJEYXRhKCkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIG1fZGlkSW5pdGlhbGl6ZU51
bWJlckRhdGEgPSB0cnVlOwotICAgIHNldExvY2FsaXplckRhdGEoc3ltYm9scywgZW1wdHlTdHJp
bmcoKSwgZW1wdHlTdHJpbmcoKSwgbmVnYXRpdmVQcmVmaXgsIG5lZ2F0aXZlU3VmZml4KTsKKyAg
ICBzZXRMb2NhbGVEYXRhKHN5bWJvbHMsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIG5l
Z2F0aXZlUHJlZml4LCBuZWdhdGl2ZVN1ZmZpeCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xvY2FsZVdpbi5oCmluZGV4IDE4ODkyOTZhYjIzYmI5YmZmNWRjOTA5N2QxZGI5
ODIzYzg0MTBhOTcuLjQ2NzE0NDUyYTFjNGI0NjgwYzQ2ZmRlOTg3MGQzYmZlYWZhNTY3OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlV2luLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVXaW4uaApAQCAtNDIsNyArNDIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEYXRlQ29tcG9uZW50czsKIHN0cnVjdCBEYXRl
Rm9ybWF0VG9rZW47CiAKLWNsYXNzIExvY2FsZVdpbiA6IHB1YmxpYyBMb2NhbGl6ZXIgeworY2xh
c3MgTG9jYWxlV2luIDogcHVibGljIExvY2FsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8TG9jYWxlV2luPiBjcmVhdGUoTENJRCk7CiAgICAgfkxvY2FsZVdpbigpOwpAQCAtOTMs
OCArOTMsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCiAgICAgdm9p
ZCBlbnN1cmVXZWVrRGF5U2hvcnRMYWJlbHMoKTsKICNlbmRpZgotICAgIC8vIExvY2FsaXplciBm
dW5jdGlvbjoKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUxvY2FsaXplckRhdGEoKSBPVkVS
UklERTsKKyAgICAvLyBMb2NhbGUgZnVuY3Rpb246CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxp
emVMb2NhbGVEYXRhKCkgT1ZFUlJJREU7CiAKICAgICBMQ0lEIG1fbGNpZDsKICAgICBpbnQgbV9i
YXNlWWVhcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZv
cm1Mb2NhbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2Fs
ZS5jcHAKaW5kZXggMmQ5NDVjMzdkMGE5NzI3OTY1ZWNhZjhiYmFiMmIwZjViMjRkZWQ3YS4uYmRm
NjQ1YjcyZGI5YTZlZTc3YWQyYzk0YTBiMmQ1YTg5MjRjOTY0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAg
Y2xhc3MgRGF0ZVRpbWVTdHJpbmdCdWlsZGVyIDogcHJpdmF0ZSBEYXRlVGltZUZvcm1hdDo6VG9r
ZW5IYW5kbGVyIHsKIAogcHVibGljOgogICAgIC8vIFRoZSBhcmd1bWVudCBvYmplY3RzIG11c3Qg
YmUgYWxpdmUgdW50aWwgdGhpcyBvYmplY3QgZGllcy4KLSAgICBEYXRlVGltZVN0cmluZ0J1aWxk
ZXIoTG9jYWxpemVyJiwgY29uc3QgRGF0ZUNvbXBvbmVudHMmKTsKKyAgICBEYXRlVGltZVN0cmlu
Z0J1aWxkZXIoTG9jYWxlJiwgY29uc3QgRGF0ZUNvbXBvbmVudHMmKTsKIAogICAgIGJvb2wgYnVp
bGQoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIHRvU3RyaW5nKCk7CkBAIC01NywxMSArNTcs
MTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGVuZE51bWJlcihpbnQgbnVtYmVyLCBzaXplX3Qg
d2lkdGgpOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX2J1aWxkZXI7Ci0gICAgTG9jYWxpemVyJiBt
X2xvY2FsaXplcjsKKyAgICBMb2NhbGUmIG1fbG9jYWxpemVyOwogICAgIGNvbnN0IERhdGVDb21w
b25lbnRzJiBtX2RhdGU7CiB9OwogCi1EYXRlVGltZVN0cmluZ0J1aWxkZXI6OkRhdGVUaW1lU3Ry
aW5nQnVpbGRlcihMb2NhbGl6ZXImIGxvY2FsaXplciwgY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRh
dGUpCitEYXRlVGltZVN0cmluZ0J1aWxkZXI6OkRhdGVUaW1lU3RyaW5nQnVpbGRlcihMb2NhbGUm
IGxvY2FsaXplciwgY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGUpCiAgICAgOiBtX2xvY2FsaXpl
cihsb2NhbGl6ZXIpCiAgICAgLCBtX2RhdGUoZGF0ZSkKIHsKQEAgLTE1OSwxMSArMTU5LDExIEBA
IFN0cmluZyBEYXRlVGltZVN0cmluZ0J1aWxkZXI6OnRvU3RyaW5nKCkKIAogI2VuZGlmCiAKLUxv
Y2FsaXplcjo6fkxvY2FsaXplcigpCitMb2NhbGU6On5Mb2NhbGUoKQogewogfQogCi12b2lkIExv
Y2FsaXplcjo6c2V0TG9jYWxpemVyRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nLCBEZWNpbWFsU3lt
Ym9sc1NpemU+JiBzeW1ib2xzLCBjb25zdCBTdHJpbmcmIHBvc2l0aXZlUHJlZml4LCBjb25zdCBT
dHJpbmcmIHBvc2l0aXZlU3VmZml4LCBjb25zdCBTdHJpbmcmIG5lZ2F0aXZlUHJlZml4LCBjb25z
dCBTdHJpbmcmIG5lZ2F0aXZlU3VmZml4KQordm9pZCBMb2NhbGU6OnNldExvY2FsZURhdGEoY29u
c3QgVmVjdG9yPFN0cmluZywgRGVjaW1hbFN5bWJvbHNTaXplPiYgc3ltYm9scywgY29uc3QgU3Ry
aW5nJiBwb3NpdGl2ZVByZWZpeCwgY29uc3QgU3RyaW5nJiBwb3NpdGl2ZVN1ZmZpeCwgY29uc3Qg
U3RyaW5nJiBuZWdhdGl2ZVByZWZpeCwgY29uc3QgU3RyaW5nJiBuZWdhdGl2ZVN1ZmZpeCkKIHsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN5bWJvbHMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgQVNTRVJUKCFzeW1ib2xzW2ldLmlzRW1wdHkoKSk7CkBAIC0xNzQsMTMgKzE3NCwxMyBAQCB2
b2lkIExvY2FsaXplcjo6c2V0TG9jYWxpemVyRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nLCBEZWNp
bWFsU3ltYm9sc1NpemU+JiBzeW1ibwogICAgIG1fbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2ZVBy
ZWZpeDsKICAgICBtX25lZ2F0aXZlU3VmZml4ID0gbmVnYXRpdmVTdWZmaXg7CiAgICAgQVNTRVJU
KCFtX3Bvc2l0aXZlUHJlZml4LmlzRW1wdHkoKSB8fCAhbV9wb3NpdGl2ZVN1ZmZpeC5pc0VtcHR5
KCkgfHwgIW1fbmVnYXRpdmVQcmVmaXguaXNFbXB0eSgpIHx8ICFtX25lZ2F0aXZlU3VmZml4Lmlz
RW1wdHkoKSk7Ci0gICAgbV9oYXNMb2NhbGl6ZXJEYXRhID0gdHJ1ZTsKKyAgICBtX2hhc0xvY2Fs
ZURhdGEgPSB0cnVlOwogfQogCi1TdHJpbmcgTG9jYWxpemVyOjpjb252ZXJ0VG9Mb2NhbGl6ZWRO
dW1iZXIoY29uc3QgU3RyaW5nJiBpbnB1dCkKK1N0cmluZyBMb2NhbGU6OmNvbnZlcnRUb0xvY2Fs
aXplZE51bWJlcihjb25zdCBTdHJpbmcmIGlucHV0KQogewotICAgIGluaXRpYWxpemVMb2NhbGl6
ZXJEYXRhKCk7Ci0gICAgaWYgKCFtX2hhc0xvY2FsaXplckRhdGEgfHwgaW5wdXQuaXNFbXB0eSgp
KQorICAgIGluaXRpYWxpemVMb2NhbGVEYXRhKCk7CisgICAgaWYgKCFtX2hhc0xvY2FsZURhdGEg
fHwgaW5wdXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gaW5wdXQ7CiAKICAgICB1bnNpZ25l
ZCBpID0gMDsKQEAgLTIzNSw3ICsyMzUsNyBAQCBzdGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0
cmluZyYgdGV4dCwgdW5zaWduZWQgcG9zaXRpb24sIGNvbnN0IFN0cmluZyYgcGFydCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBMb2NhbGl6ZXI6OmRldGVjdFNpZ25BbmRHZXREaWdpdFJh
bmdlKGNvbnN0IFN0cmluZyYgaW5wdXQsIGJvb2wmIGlzTmVnYXRpdmUsIHVuc2lnbmVkJiBzdGFy
dEluZGV4LCB1bnNpZ25lZCYgZW5kSW5kZXgpCitib29sIExvY2FsZTo6ZGV0ZWN0U2lnbkFuZEdl
dERpZ2l0UmFuZ2UoY29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCYgaXNOZWdhdGl2ZSwgdW5zaWdu
ZWQmIHN0YXJ0SW5kZXgsIHVuc2lnbmVkJiBlbmRJbmRleCkKIHsKICAgICBzdGFydEluZGV4ID0g
MDsKICAgICBlbmRJbmRleCA9IGlucHV0Lmxlbmd0aCgpOwpAQCAtMjYzLDcgKzI2Myw3IEBAIGJv
b2wgTG9jYWxpemVyOjpkZXRlY3RTaWduQW5kR2V0RGlnaXRSYW5nZShjb25zdCBTdHJpbmcmIGlu
cHV0LCBib29sJiBpc05lZ2F0aXZlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXVuc2lnbmVkIExv
Y2FsaXplcjo6bWF0Y2hlZERlY2ltYWxTeW1ib2xJbmRleChjb25zdCBTdHJpbmcmIGlucHV0LCB1
bnNpZ25lZCYgcG9zaXRpb24pCit1bnNpZ25lZCBMb2NhbGU6Om1hdGNoZWREZWNpbWFsU3ltYm9s
SW5kZXgoY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQmIHBvc2l0aW9uKQogewogICAgIGZv
ciAodW5zaWduZWQgc3ltYm9sSW5kZXggPSAwOyBzeW1ib2xJbmRleCA8IERlY2ltYWxTeW1ib2xz
U2l6ZTsgKytzeW1ib2xJbmRleCkgewogICAgICAgICBpZiAobV9kZWNpbWFsU3ltYm9sc1tzeW1i
b2xJbmRleF0ubGVuZ3RoKCkgJiYgbWF0Y2hlcyhpbnB1dCwgcG9zaXRpb24sIG1fZGVjaW1hbFN5
bWJvbHNbc3ltYm9sSW5kZXhdKSkgewpAQCAtMjc0LDExICsyNzQsMTEgQEAgdW5zaWduZWQgTG9j
YWxpemVyOjptYXRjaGVkRGVjaW1hbFN5bWJvbEluZGV4KGNvbnN0IFN0cmluZyYgaW5wdXQsIHVu
c2lnbmVkJiBwb3MKICAgICByZXR1cm4gRGVjaW1hbFN5bWJvbHNTaXplOwogfQogCi1TdHJpbmcg
TG9jYWxpemVyOjpjb252ZXJ0RnJvbUxvY2FsaXplZE51bWJlcihjb25zdCBTdHJpbmcmIGxvY2Fs
aXplZCkKK1N0cmluZyBMb2NhbGU6OmNvbnZlcnRGcm9tTG9jYWxpemVkTnVtYmVyKGNvbnN0IFN0
cmluZyYgbG9jYWxpemVkKQogewotICAgIGluaXRpYWxpemVMb2NhbGl6ZXJEYXRhKCk7CisgICAg
aW5pdGlhbGl6ZUxvY2FsZURhdGEoKTsKICAgICBTdHJpbmcgaW5wdXQgPSBsb2NhbGl6ZWQuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgaWYgKCFtX2hhc0xvY2FsaXplckRhdGEgfHwgaW5wdXQuaXNF
bXB0eSgpKQorICAgIGlmICghbV9oYXNMb2NhbGVEYXRhIHx8IGlucHV0LmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGlucHV0OwogCiAgICAgYm9vbCBpc05lZ2F0aXZlOwpAQCAtMzA5LDEzICsz
MDksMTMgQEAgU3RyaW5nIExvY2FsaXplcjo6Y29udmVydEZyb21Mb2NhbGl6ZWROdW1iZXIoY29u
c3QgU3RyaW5nJiBsb2NhbGl6ZWQpCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfTVVMVElQTEVfRklF
TERTX1VJKQotU3RyaW5nIExvY2FsaXplcjo6bG9jYWxpemVkRGVjaW1hbFNlcGFyYXRvcigpCitT
dHJpbmcgTG9jYWxlOjpsb2NhbGl6ZWREZWNpbWFsU2VwYXJhdG9yKCkKIHsKLSAgICBpbml0aWFs
aXplTG9jYWxpemVyRGF0YSgpOworICAgIGluaXRpYWxpemVMb2NhbGVEYXRhKCk7CiAgICAgcmV0
dXJuIG1fZGVjaW1hbFN5bWJvbHNbRGVjaW1hbFNlcGFyYXRvckluZGV4XTsKIH0KIAotU3RyaW5n
IExvY2FsaXplcjo6ZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kcygpCitTdHJpbmcgTG9jYWxlOjpk
YXRlVGltZUZvcm1hdFdpdGhTZWNvbmRzKCkKIHsKICAgICBpZiAoIW1fZGF0ZVRpbWVGb3JtYXRX
aXRoU2Vjb25kcy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG1fZGF0ZVRpbWVGb3JtYXRXaXRo
U2Vjb25kczsKQEAgLTMyOCw3ICszMjgsNyBAQCBTdHJpbmcgTG9jYWxpemVyOjpkYXRlVGltZUZv
cm1hdFdpdGhTZWNvbmRzKCkKICAgICByZXR1cm4gbV9kYXRlVGltZUZvcm1hdFdpdGhTZWNvbmRz
OwogfQogCi1TdHJpbmcgTG9jYWxpemVyOjpkYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzKCkK
K1N0cmluZyBMb2NhbGU6OmRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHMoKQogewogICAgIGlm
ICghbV9kYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gbV9kYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzOwpAQCAtMzQyLDcgKzM0Miw3IEBAIFN0
cmluZyBMb2NhbGl6ZXI6OmRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHMoKQogfQogI2VuZGlm
CiAKLVN0cmluZyBMb2NhbGl6ZXI6OmZvcm1hdERhdGVUaW1lKGNvbnN0IERhdGVDb21wb25lbnRz
JiBkYXRlLCBGb3JtYXRUeXBlIGZvcm1hdFR5cGUpCitTdHJpbmcgTG9jYWxlOjpmb3JtYXREYXRl
VGltZShjb25zdCBEYXRlQ29tcG9uZW50cyYgZGF0ZSwgRm9ybWF0VHlwZSBmb3JtYXRUeXBlKQog
ewogI2lmIEVOQUJMRShJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUkpCiAgICAgaWYgKGRhdGUudHlw
ZSgpICE9IERhdGVDb21wb25lbnRzOjpUaW1lICYmIGRhdGUudHlwZSgpICE9IERhdGVDb21wb25l
bnRzOjpEYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0
Zm9ybUxvY2FsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2Fs
ZS5oCmluZGV4IDUzNWYwMWYxYTcxNTI0MzBiMmM3NmE1MTU3ZDMyZDkzMmEyYjAxZWIuLmM2ZWE5
YmM4YWIzNmU3YTJjOWY4MzkzMTU5ODY4ZGIyMGU3OTNlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmgKQEAgLTIzLDggKzIzLDggQEAKICAqIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIExvY2FsaXplcl9oCi0jZGVmaW5lIExvY2FsaXplcl9oCisj
aWZuZGVmIFBsYXRmb3JtTG9jYWxlX2gKKyNkZWZpbmUgUGxhdGZvcm1Mb2NhbGVfaAogCiAjaW5j
bHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgpAQCAtMzMsMTUg
KzMzLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTG9jYWxpemVyIHsKLSAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbGl6ZXIpOworY2xhc3MgTG9jYWxlIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbGUpOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NP
d25QdHI8TG9jYWxpemVyPiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlm
aWVyKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbGl6ZXI+IGNyZWF0ZURlZmF1bHQoKTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbGU+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZUlkZW50aWZpZXIpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPExvY2FsZT4gY3JlYXRl
RGVmYXVsdCgpOwogCiAgICAgLy8gQ29udmVydHMgdGhlIHNwZWNpZmllZCBudW1iZXIgc3RyaW5n
IHRvIGFub3RoZXIgbnVtYmVyIHN0cmluZyBsb2NhbGl6ZWQKLSAgICAvLyBmb3IgdGhpcyBMb2Nh
bGl6ZXIgbG9jYWxlLiBUaGUgaW5wdXQgc3RyaW5nIG11c3QgY29uZm9ybSB0byBIVE1MCisgICAg
Ly8gZm9yIHRoaXMgTG9jYWxlIGxvY2FsZS4gVGhlIGlucHV0IHN0cmluZyBtdXN0IGNvbmZvcm0g
dG8gSFRNTAogICAgIC8vIGZsb2F0aW5nLXBvaW50IG51bWJlcnMsIGFuZCBpcyBub3QgZW1wdHku
CiAgICAgU3RyaW5nIGNvbnZlcnRUb0xvY2FsaXplZE51bWJlcihjb25zdCBTdHJpbmcmKTsKIApA
QCAtMTI1LDcgKzEyNSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gUGFyc2VzIGEgc3Ry
aW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgZGF0ZS90aW1lIHN0cmluZyBsb2NhbGl6ZWQKLSAgICAv
LyBmb3IgdGhpcyBMb2NhbGl6ZXIgbG9jYWxlLiBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIG5vdCB2
YWxpZCBvcgorICAgIC8vIGZvciB0aGlzIExvY2FsZSBsb2NhbGUuIElmIHRoZSBpbnB1dCBzdHJp
bmcgaXMgbm90IHZhbGlkIG9yCiAgICAgLy8gYW4gaW1wbGVtZW50YXRpb24gZG9lc24ndCBzdXBw
b3J0IGxvY2FsaXplZCBkYXRlcywgdGhpcwogICAgIC8vIGZ1bmN0aW9uIHJldHVybnMgTmFOLiBJ
ZiB0aGUgaW5wdXQgc3RyaW5nIGlzIHZhbGlkIHRoaXMKICAgICAvLyBmdW5jdGlvbiByZXR1cm5z
IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEKQEAgLTEzOSw3ICsx
MzksNyBAQCBwdWJsaWM6CiAgICAgLy8gbG9jYWxpemVkIGRhdGVzIHRoZSBmdW5jdGlvbiBzaG91
bGQgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy4KICAgICBTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29u
c3QgRGF0ZUNvbXBvbmVudHMmLCBGb3JtYXRUeXBlID0gRm9ybWF0VHlwZVVuc3BlY2lmaWVkKTsK
IAotICAgIHZpcnR1YWwgfkxvY2FsaXplcigpOworICAgIHZpcnR1YWwgfkxvY2FsZSgpOwogCiBw
cm90ZWN0ZWQ6CiAgICAgZW51bSB7CkBAIC0xNTQsOSArMTU0LDkgQEAgcHJvdGVjdGVkOgogICAg
IFN0cmluZyBtX2RhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHM7CiAjZW5kaWYKIAotICAgIExv
Y2FsaXplcigpIDogbV9oYXNMb2NhbGl6ZXJEYXRhKGZhbHNlKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgaW5pdGlhbGl6ZUxvY2FsaXplckRhdGEoKSA9IDA7Ci0gICAgdm9pZCBzZXRMb2NhbGl6ZXJE
YXRhKGNvbnN0IFZlY3RvcjxTdHJpbmcsIERlY2ltYWxTeW1ib2xzU2l6ZT4mLCBjb25zdCBTdHJp
bmcmIHBvc2l0aXZlUHJlZml4LCBjb25zdCBTdHJpbmcmIHBvc2l0aXZlU3VmZml4LCBjb25zdCBT
dHJpbmcmIG5lZ2F0aXZlUHJlZml4LCBjb25zdCBTdHJpbmcmIG5lZ2F0aXZlU3VmZml4KTsKKyAg
ICBMb2NhbGUoKSA6IG1faGFzTG9jYWxlRGF0YShmYWxzZSkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGluaXRpYWxpemVMb2NhbGVEYXRhKCkgPSAwOworICAgIHZvaWQgc2V0TG9jYWxlRGF0YShjb25z
dCBWZWN0b3I8U3RyaW5nLCBEZWNpbWFsU3ltYm9sc1NpemU+JiwgY29uc3QgU3RyaW5nJiBwb3Np
dGl2ZVByZWZpeCwgY29uc3QgU3RyaW5nJiBwb3NpdGl2ZVN1ZmZpeCwgY29uc3QgU3RyaW5nJiBu
ZWdhdGl2ZVByZWZpeCwgY29uc3QgU3RyaW5nJiBuZWdhdGl2ZVN1ZmZpeCk7CiAKIHByaXZhdGU6
CiAgICAgYm9vbCBkZXRlY3RTaWduQW5kR2V0RGlnaXRSYW5nZShjb25zdCBTdHJpbmcmIGlucHV0
LCBib29sJiBpc05lZ2F0aXZlLCB1bnNpZ25lZCYgc3RhcnRJbmRleCwgdW5zaWduZWQmIGVuZElu
ZGV4KTsKQEAgLTE2NywxMiArMTY3LDEyIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcG9zaXRp
dmVTdWZmaXg7CiAgICAgU3RyaW5nIG1fbmVnYXRpdmVQcmVmaXg7CiAgICAgU3RyaW5nIG1fbmVn
YXRpdmVTdWZmaXg7Ci0gICAgYm9vbCBtX2hhc0xvY2FsaXplckRhdGE7CisgICAgYm9vbCBtX2hh
c0xvY2FsZURhdGE7CiB9OwogCi1pbmxpbmUgUGFzc093blB0cjxMb2NhbGl6ZXI+IExvY2FsaXpl
cjo6Y3JlYXRlRGVmYXVsdCgpCitpbmxpbmUgUGFzc093blB0cjxMb2NhbGU+IExvY2FsZTo6Y3Jl
YXRlRGVmYXVsdCgpCiB7Ci0gICAgcmV0dXJuIExvY2FsaXplcjo6Y3JlYXRlKGRlZmF1bHRMYW5n
dWFnZSgpKTsKKyAgICByZXR1cm4gTG9jYWxlOjpjcmVhdGUoZGVmYXVsdExhbmd1YWdlKCkpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2Nh
bGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oCmlu
ZGV4IGQ4ZGM3ZThhMzFjMThmOTIwMGY4YWQyN2MxYmU0NGJhNjExYmQ5ODMuLmY5MzRlZjExYjUx
ZWU3NDNiMDk0NDZlNTE0NDgxNzJiNzk1M2ZkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRGF0ZUNvbXBvbmVudHM7CiAKLWNsYXNzIExvY2FsZU1hYyA6IHB1Ymxp
YyBMb2NhbGl6ZXIgeworY2xhc3MgTG9jYWxlTWFjIDogcHVibGljIExvY2FsZSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TG9jYWxlTWFjPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TG9jYWxlTWFjPiBjcmVhdGUoTlNMb2NhbGUqKTsKQEAg
LTc2LDcgKzc2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBMb2NhbGVNYWMo
TlNMb2NhbGUqKTsKICAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBzaG9ydERhdGVGb3Jt
YXR0ZXIoKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUxvY2FsaXplckRhdGEoKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUxvY2FsZURhdGEoKSBPVkVSUklERTsK
IAogICAgIFJldGFpblB0cjxOU0xvY2FsZT4gbV9sb2NhbGU7CiAgICAgUmV0YWluUHRyPE5TQ2Fs
ZW5kYXI+IG1fZ3JlZ29yaWFuQ2FsZW5kYXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L21hYy9Mb2NhbGVNYWMubW0KaW5kZXggYzBhZjg1ZGE0ZDkzYmI4YzY0ZjEyZGU4N2ExMzRk
Y2I2ZmY3NjMyNS4uOWY5YWE4ZmRiMjFhOTlkOTZkMWJhNmM5ZjM2YzI5NmUyZGM3NDE0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQpAQCAtNjUs
NyArNjUsNyBAQCBzdGF0aWMgTlNMb2NhbGUqIGRldGVybWluZUxvY2FsZShjb25zdCBTdHJpbmcm
IGxvY2FsZSkKICAgICByZXR1cm4gW1tOU0xvY2FsZSBhbGxvY10gaW5pdFdpdGhMb2NhbGVJZGVu
dGlmaWVyOmxvY2FsZV07CiB9CiAKLVBhc3NPd25QdHI8TG9jYWxpemVyPiBMb2NhbGl6ZXI6OmNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKK1Bhc3NPd25QdHI8TG9jYWxlPiBMb2Nh
bGU6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKIHsKICAgICByZXR1cm4gTG9j
YWxlTWFjOjpjcmVhdGUoZGV0ZXJtaW5lTG9jYWxlKGxvY2FsZS5zdHJpbmcoKSkpOwogfQpAQCAt
MzM0LDcgKzMzNCw3IEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVNYWM6OnRpbWVBTVBN
TGFiZWxzKCkKIH0KICNlbmRpZgogCi12b2lkIExvY2FsZU1hYzo6aW5pdGlhbGl6ZUxvY2FsaXpl
ckRhdGEoKQordm9pZCBMb2NhbGVNYWM6OmluaXRpYWxpemVMb2NhbGVEYXRhKCkKIHsKICAgICBp
ZiAobV9kaWRJbml0aWFsaXplTnVtYmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzYyLDcg
KzM2Miw3IEBAIHZvaWQgTG9jYWxlTWFjOjppbml0aWFsaXplTG9jYWxpemVyRGF0YSgpCiAgICAg
U3RyaW5nIHBvc2l0aXZlU3VmZml4KFtmb3JtYXR0ZXIuZ2V0KCkgcG9zaXRpdmVTdWZmaXhdKTsK
ICAgICBTdHJpbmcgbmVnYXRpdmVQcmVmaXgoW2Zvcm1hdHRlci5nZXQoKSBuZWdhdGl2ZVByZWZp
eF0pOwogICAgIFN0cmluZyBuZWdhdGl2ZVN1ZmZpeChbZm9ybWF0dGVyLmdldCgpIG5lZ2F0aXZl
U3VmZml4XSk7Ci0gICAgc2V0TG9jYWxpemVyRGF0YShzeW1ib2xzLCBwb3NpdGl2ZVByZWZpeCwg
cG9zaXRpdmVTdWZmaXgsIG5lZ2F0aXZlUHJlZml4LCBuZWdhdGl2ZVN1ZmZpeCk7CisgICAgc2V0
TG9jYWxlRGF0YShzeW1ib2xzLCBwb3NpdGl2ZVByZWZpeCwgcG9zaXRpdmVTdWZmaXgsIG5lZ2F0
aXZlUHJlZml4LCBuZWdhdGl2ZVN1ZmZpeCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuY3BwCmluZGV4IDMz
MGY1OWNlMjRmY2NiNzc5YjU5NTk2NTYzYjg4M2MyODI3YjE1NGMuLjU3ODk2OTFlOGQ3NTFiYWEw
OGZhZTI4NWMwYWViMTE1OGQ0YTgzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmNwcApAQCAtNTcsNyArNTcsNyBA
QCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlcihDaHJv
bWVDbGllbnRJbXBsKiBjaHJvbWVDbGllbgogICAgIDogbV9jaHJvbWVDbGllbnQoY2hyb21lQ2xp
ZW50KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9wb3B1cCgwKQotICAgICwgbV9s
b2NhbGl6ZXIoTG9jYWxpemVyOjpjcmVhdGVEZWZhdWx0KCkpCisgICAgLCBtX2xvY2FsZShMb2Nh
bGU6OmNyZWF0ZURlZmF1bHQoKSkKIHsKICAgICBpZiAobV9jbGllbnQtPnNob3VsZFNob3dTdWdn
ZXN0aW9ucygpKQogICAgICAgICBvcGVuUG9wdXAoKTsKQEAgLTEzMiw5ICsxMzIsOSBAQCB2b2lk
IENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6d3JpdGVEb2N1bWVudChEb2N1bWVudFdyaXRlciYg
d3JpdGVyKQogICAgIFBhZ2VQb3B1cENsaWVudDo6YWRkU3RyaW5nKCI8L3NjcmlwdD48L2JvZHk+
XG4iLCB3cml0ZXIpOwogfQogCi1Mb2NhbGl6ZXImIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6
bG9jYWxpemVyKCkKK0xvY2FsZSYgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpsb2NhbGUoKQog
ewotICAgIHJldHVybiAqbV9sb2NhbGl6ZXI7CisgICAgcmV0dXJuICptX2xvY2FsZTsKIH0KIAog
dm9pZCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQg
bnVtVmFsdWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oCmluZGV4IDg5Y2Qx
YTZiN2I0MTA3MWZkYWFjNzc1YzQ0YjQ4NGQ0MDhjNTVkZTQuLjYwY2VjZmUxOGYyOTcxNmI1OTdh
ZTAyNTM5NzcxNTg4MjEzNzk4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oCkBAIC02MSw3ICs2MSw3IEBAIHB1Ymxp
YzoKICAgICAvLyBQYWdlUG9wdXBDbGllbnQgZnVuY3Rpb25zOgogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6SW50U2l6ZSBjb250ZW50U2l6ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3cml0
ZURvY3VtZW50KFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyJikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBXZWJDb3JlOjpMb2NhbGl6ZXImIGxvY2FsaXplcigpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
V2ViQ29yZTo6TG9jYWxlJiBsb2NhbGUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
VmFsdWVBbmRDbG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGRpZENsb3NlUG9wdXAoKSBPVkVSUklERTsKIApAQCAtNzQsNyArNzQsNyBAQCBw
cml2YXRlOgogICAgIFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVudCogbV9jbGllbnQ7CiAgICAg
T3duUHRyPFdlYkNvbG9yQ2hvb3Nlcj4gbV9jaG9vc2VyOwogICAgIFdlYkNvcmU6OlBhZ2VQb3B1
cCogbV9wb3B1cDsKLSAgICBPd25QdHI8V2ViQ29yZTo6TG9jYWxpemVyPiBtX2xvY2FsaXplcjsK
KyAgICBPd25QdHI8V2ViQ29yZTo6TG9jYWxlPiBtX2xvY2FsZTsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5jcHAKaW5kZXgg
MTNiYTYyZWI0NTM3OTQwNGJjNmYwMzI2ZWI2MDQ4ZDAzODk4ODc3Ny4uMGY2N2M1ZTQyYmI1ZDEy
OTJlMjg0NGNiMmFmNGYxMzhhZGI2NTE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgRGF0ZVRp
bWVDaG9vc2VySW1wbDo6RGF0ZVRpbWVDaG9vc2VySW1wbChDaHJvbWVDbGllbnRJbXBsKiBjaHJv
bWVDbGllbnQsIFdlYkNvcmUKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fcG9wdXAo
MCkKICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQotICAgICwgbV9sb2NhbGl6ZXIoV2Vi
Q29yZTo6TG9jYWxpemVyOjpjcmVhdGVEZWZhdWx0KCkpCisgICAgLCBtX2xvY2FsZShXZWJDb3Jl
OjpMb2NhbGU6OmNyZWF0ZURlZmF1bHQoKSkKIHsKICAgICBBU1NFUlQobV9jaHJvbWVDbGllbnQp
OwogICAgIEFTU0VSVChtX2NsaWVudCk7CkBAIC0xMTksMTAgKzExOSwxMCBAQCB2b2lkIERhdGVU
aW1lQ2hvb3NlckltcGw6OndyaXRlRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXImIHdy
aXRlcikKICAgICBhZGRQcm9wZXJ0eSgibG9jYWxlIiwgV2ViQ29yZTo6ZGVmYXVsdExhbmd1YWdl
KCksIHdyaXRlcik7CiAgICAgYWRkUHJvcGVydHkoInRvZGF5TGFiZWwiLCBQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT5xdWVyeUxvY2FsaXplZFN0cmluZyhXZWJMb2NhbGl6ZWRTdHJpbmc6OkNhbGVuZGFy
VG9kYXkpLCB3cml0ZXIpOwogICAgIGFkZFByb3BlcnR5KCJjbGVhckxhYmVsIiwgUGxhdGZvcm06
OmN1cnJlbnQoKS0+cXVlcnlMb2NhbGl6ZWRTdHJpbmcoV2ViTG9jYWxpemVkU3RyaW5nOjpDYWxl
bmRhckNsZWFyKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgid2Vla1N0YXJ0RGF5IiwgbV9s
b2NhbGl6ZXItPmZpcnN0RGF5T2ZXZWVrKCksIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoIm1v
bnRoTGFiZWxzIiwgbV9sb2NhbGl6ZXItPm1vbnRoTGFiZWxzKCksIHdyaXRlcik7Ci0gICAgYWRk
UHJvcGVydHkoImRheUxhYmVscyIsIG1fbG9jYWxpemVyLT53ZWVrRGF5U2hvcnRMYWJlbHMoKSwg
d3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgiaXNDYWxlbmRhclJUTCIsIG1fbG9jYWxpemVyLT5p
c1JUTCgpLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJ3ZWVrU3RhcnREYXkiLCBtX2xvY2Fs
ZS0+Zmlyc3REYXlPZldlZWsoKSwgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgibW9udGhMYWJl
bHMiLCBtX2xvY2FsZS0+bW9udGhMYWJlbHMoKSwgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgi
ZGF5TGFiZWxzIiwgbV9sb2NhbGUtPndlZWtEYXlTaG9ydExhYmVscygpLCB3cml0ZXIpOworICAg
IGFkZFByb3BlcnR5KCJpc0NhbGVuZGFyUlRMIiwgbV9sb2NhbGUtPmlzUlRMKCksIHdyaXRlcik7
CiAgICAgYWRkUHJvcGVydHkoImlzUlRMIiwgbV9wYXJhbWV0ZXJzLmlzQW5jaG9yRWxlbWVudFJU
TCwgd3JpdGVyKTsKICAgICBpZiAobV9wYXJhbWV0ZXJzLnN1Z2dlc3Rpb25WYWx1ZXMuc2l6ZSgp
KSB7CiAgICAgICAgIGFkZFByb3BlcnR5KCJpbnB1dFdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fcGFyYW1ldGVycy5hbmNob3JSZWN0SW5Sb290Vmlldy53aWR0aCgpKSwgd3JpdGVyKTsK
QEAgLTE0Miw5ICsxNDIsOSBAQCB2b2lkIERhdGVUaW1lQ2hvb3NlckltcGw6OndyaXRlRG9jdW1l
bnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXImIHdyaXRlcikKICAgICBhZGRTdHJpbmcoIjwvc2Ny
aXB0PjwvYm9keT5cbiIsIHdyaXRlcik7CiB9CiAKLVdlYkNvcmU6OkxvY2FsaXplciYgRGF0ZVRp
bWVDaG9vc2VySW1wbDo6bG9jYWxpemVyKCkKK1dlYkNvcmU6OkxvY2FsZSYgRGF0ZVRpbWVDaG9v
c2VySW1wbDo6bG9jYWxlKCkKIHsKLSAgICByZXR1cm4gKm1fbG9jYWxpemVyOworICAgIHJldHVy
biAqbV9sb2NhbGU7CiB9CiAKIHZvaWQgRGF0ZVRpbWVDaG9vc2VySW1wbDo6c2V0VmFsdWVBbmRD
bG9zZVBvcHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuaAppbmRleCA0
MDE5NWNlNTNmZTg5NjA3ZDY4ZWU0ZWI0MTA5MDM4YjUxZjc2YzVlLi5jNGQ1MTRhZTg3MGJmYzQ0
YzVmNTY3ZTJlODE4ODJhMDFmNzQxNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9EYXRlVGltZUNob29zZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gUGFnZVBvcHVwQ2xpZW50IGZ1bmN0aW9uczoKICAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFNpemUgY29udGVudFNpemUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVEb2N1
bWVudChXZWJDb3JlOjpEb2N1bWVudFdyaXRlciYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6TG9jYWxpemVyJiBsb2NhbGl6ZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OkxvY2FsZSYgbG9jYWxlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVl
QW5kQ2xvc2VQb3B1cChpbnQsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRDbG9zZVBvcHVwKCkgT1ZFUlJJREU7CiAKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0
ZToKICAgICBXZWJDb3JlOjpEYXRlVGltZUNob29zZXJDbGllbnQqIG1fY2xpZW50OwogICAgIFdl
YkNvcmU6OlBhZ2VQb3B1cCogbV9wb3B1cDsKICAgICBXZWJDb3JlOjpEYXRlVGltZUNob29zZXJQ
YXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKLSAgICBPd25QdHI8V2ViQ29yZTo6TG9jYWxpemVyPiBt
X2xvY2FsaXplcjsKKyAgICBPd25QdHI8V2ViQ29yZTo6TG9jYWxlPiBtX2xvY2FsZTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTG9jYWxlTWFjVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xvY2FsZU1hY1Rlc3QuY3BwCmlu
ZGV4IGU5ZTU1ZDgxYzhmMDJlODUzZGIyYzZhMTQ4MjhhMzA1NGY0ZDFhODguLjE3YjJlOTE4MGRk
ODQwOTE0MDcyYmY1ZjM5Y2FmNTgwNmFjOGFiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTG9jYWxlTWFjVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9Mb2NhbGVNYWNUZXN0LmNwcApAQCAtNzgsNyArNzgsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgU3RyaW5nIGZvcm1hdFRpbWUoY29uc3QgU3RyaW5nJiBsb2NhbGVTdHJpbmcsIGludCBo
b3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kLCBpbnQgbWlsbGlzZWNvbmQsIGJvb2wgdXNlU2hv
cnRGb3JtYXQpCiAgICAgewogICAgICAgICBPd25QdHI8TG9jYWxlTWFjPiBsb2NhbGUgPSBMb2Nh
bGVNYWM6OmNyZWF0ZShsb2NhbGVTdHJpbmcpOwotICAgICAgICByZXR1cm4gbG9jYWxlLT5mb3Jt
YXREYXRlVGltZSh0aW1lQ29tcG9uZW50cyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNv
bmQpLCAodXNlU2hvcnRGb3JtYXQgPyBMb2NhbGl6ZXI6OkZvcm1hdFR5cGVTaG9ydCA6IExvY2Fs
aXplcjo6Rm9ybWF0VHlwZU1lZGl1bSkpOworICAgICAgICByZXR1cm4gbG9jYWxlLT5mb3JtYXRE
YXRlVGltZSh0aW1lQ29tcG9uZW50cyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQp
LCAodXNlU2hvcnRGb3JtYXQgPyBMb2NhbGU6OkZvcm1hdFR5cGVTaG9ydCA6IExvY2FsZTo6Rm9y
bWF0VHlwZU1lZGl1bSkpOwogICAgIH0KIAogICAgIGRvdWJsZSBwYXJzZURhdGUoY29uc3QgU3Ry
aW5nJiBsb2NhbGVTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGF0ZVN0cmluZykKQEAgLTM1MCw3ICsz
NTAsNyBAQCBURVNUX0YoTG9jYWxlTWFjVGVzdCwgaW52YWxpZExvY2FsZSkKIAogc3RhdGljIHZv
aWQgdGVzdE51bWJlcklzUmV2ZXJzaWJsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZVN0cmlu
ZywgY29uc3QgY2hhciogb3JpZ2luYWwsIGNvbnN0IGNoYXIqIHNob3VsZEhhdmUgPSAwKQogewot
ICAgIE93blB0cjxMb2NhbGl6ZXI+IGxvY2FsZSA9IExvY2FsaXplcjo6Y3JlYXRlKGxvY2FsZVN0
cmluZyk7CisgICAgT3duUHRyPExvY2FsZT4gbG9jYWxlID0gTG9jYWxlOjpjcmVhdGUobG9jYWxl
U3RyaW5nKTsKICAgICBTdHJpbmcgbG9jYWxpemVkID0gbG9jYWxlLT5jb252ZXJ0VG9Mb2NhbGl6
ZWROdW1iZXIob3JpZ2luYWwpOwogICAgIGlmIChzaG91bGRIYXZlKQogICAgICAgICBFWFBFQ1Rf
VFJVRShsb2NhbGl6ZWQuY29udGFpbnMoc2hvdWxkSGF2ZSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171172</attachid>
            <date>2012-10-29 01:10:12 -0700</date>
            <delta_ts>2012-10-29 01:45:20 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-100634-20121029170838.patch</filename>
            <type>text/plain</type>
            <size>53328</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWIzNzU0NDk4OWQ2MDY3
ZWQ5MDk4MWE1MTcxMDA1NDlhM2JmYzdhZC4uYjA3NGRjYjhlMDllYjcwYWViODQzYWJkMzU3ZWJi
NTAwN2QyNTNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTEwLTI5ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgTG9jYWxpemVy
IHRvIExvY2FsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwNjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBSZW5hbWUgTG9jYWxpemVyIGNsYXNzIHRvIExvY2FsZQorICAgICAgICAtIFJlbmFtZSBs
b2NhbGl6ZXIgd2l0aCBsb2NhbGUgaW4gdmFyaWFibGUgbmFtZXMKKyAgICAgICAgLSBSZW5hbWUg
bG9jYWxpemVyIHdpdGggbG9jYWxlIGluIGZ1bmN0aW9uIG5hbWVzCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiBUaGlzIGRvZXNuJ3QgbWFrZSBhbnkgYmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6IERlY2xhcmUgTG9jYWxlIGlu
c3RlYWQgb2YgTG9jYWxpemVyLgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAtIFJlbmFt
ZSBnZXRDYWNoZWRMb2NhbGl6ZXIgdG8gZ2V0Q2FjaGVkTG9jYWxlLgorICAgICAgICAtIFJlbmFt
ZSBMb2NhbGVUb0xvY2FsaXplck1hcCB0byBMb2NhbGVJZGVudGlmaWVyVG9Mb2NhbGVNYXAuCisg
ICAgICAgIC0gUmVuYW1lIG1fbG9jYWxpemVyQ2FjaGUgdG8gbV9sb2NhbGVDYWNoZS4KKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldENh
Y2hlZExvY2FsZSk6IEZvbGxvdyByZW5hbWluZ3MuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmUpOiBEZWNsYXJlIExvY2FsZSBpbnN0ZWFkIG9mIExvY2FsaXplci4K
KyAgICAgICAgKEVsZW1lbnQpOiBSZW5hbWUgbG9jYWxpemVyKCkgdG8gbG9jYWxlKCkuCisgICAg
ICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6bG9jYWxl
KTogRm9sbG93IHJlbmFtaW5ncy4KKworICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6
bG9jYWxpemVWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2libGVWYWx1ZSk6IERpdHRvLgorICAgICAgICAqIGh0
bWwvQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlu
bmVyVGV4dFZhbHVlKTogRGl0dG8uCisgICAgICAgICogaHRtbC9EYXRlSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGVJbnB1dFR5cGU6OmZpeGVkUGxhY2Vob2xkZXIpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGVJbnB1dFR5cGU6OnNldHVwTGF5b3V0UGFyYW1ldGVy
cyk6IERpdHRvLgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0ZVRpbWVJbnB1dFR5cGU6OnNldHVwTGF5b3V0UGFyYW1ldGVycyk6IERp
dHRvLgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFtZXRlcnMp
OiBEaXR0by4KKyAgICAgICAgKiBodG1sL01vbnRoSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vbnRoSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFtZXRlcnMpOiBEaXR0by4KKyAg
ICAgICAgKiBodG1sL051bWJlcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdW1i
ZXJJbnB1dFR5cGU6OmxvY2FsaXplVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok51
bWJlcklucHV0VHlwZTo6Y29udmVydEZyb21WaXNpYmxlVmFsdWUpOiBEaXR0by4KKyAgICAgICAg
KiBodG1sL1RpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlw
ZTo6bG9jYWxpemVWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlw
ZTo6c2V0dXBMYXlvdXRQYXJhbWV0ZXJzKTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9EYXRlVGltZUVkaXRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlKTogRGVjbGFyZSBMb2Nh
bGUgaW5zdGVhZCBvZiBMb2NhbGl6ZXIuCisgICAgICAgIChMYXlvdXRQYXJhbWV0ZXJzKTogUmVu
YW1lIGxvY2FsaXplciBkYXRhIG1lbWJlciB0byBsb2NhbGUuCisgICAgICAgIChXZWJDb3JlOjpE
YXRlVGltZUVkaXRFbGVtZW50OjpMYXlvdXRQYXJhbWV0ZXJzOjpMYXlvdXRQYXJhbWV0ZXJzKTog
Rm9sbG93IHJlbmFtaW5ncy4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lRWRpdEJ1aWxkZXI6OnZpc2l0Rmll
bGQpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVs
ZW1lbnQuaDoKKyAgICAgICAgKERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudCk6IFJlbmFtZSBs
b2NhbGl6ZXJGb3JPd25lciB0byBsb2NhbGVGb3JPd25lci4KKyAgICAgICAgKiBodG1sL3NoYWRv
dy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50Ojpmb3JtYXRWYWx1ZSk6IEZvbGxvdyByZW5hbWluZ3Mu
CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQ6OmhhbmRsZUtl
eWJvYXJkRXZlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lTnVtZXJpY0Zp
ZWxkRWxlbWVudDo6bG9jYWxlRm9yT3duZXIpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL1BhZ2VQ
b3B1cENsaWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6IERlY2xhcmUgTG9jYWxlIGluc3RlYWQg
b2YgTG9jYWxpemVyLgorICAgICAgICAoUGFnZVBvcHVwQ2xpZW50KTogUmVuYW1lIGxvY2FsaXpl
ciBtZW1iZXIgZnVuY3Rpb24gdG8gbG9jYWxlLgorICAgICAgICAqIHBhZ2UvUGFnZVBvcHVwQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBDb250cm9sbGVyOjpsb2Nh
bGl6ZU51bWJlclN0cmluZyk6IEZvbGxvdyByZW5hbWluZ3MuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS90ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcDogUmVuYW1lIHRoZSBMb2NhbGl6ZXIgY2xhc3MgdG8g
TG9jYWxlLgorICAgICAgICAoRGF0ZVRpbWVTdHJpbmdCdWlsZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGVUaW1lU3RyaW5nQnVpbGRlcjo6RGF0ZVRpbWVTdHJpbmdCdWlsZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsZTo6fkxvY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6
OnNldExvY2FsZURhdGEpOiBSZW5hbWVkIGZyb20gc2V0TG9jYWxpemVyRGF0YS4KKyAgICAgICAg
KFdlYkNvcmU6OkxvY2FsZTo6Y29udmVydFRvTG9jYWxpemVkTnVtYmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2FsZTo6ZGV0ZWN0U2lnbkFuZEdldERpZ2l0UmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TG9jYWxlOjptYXRjaGVkRGVjaW1hbFN5bWJvbEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2FsZTo6Y29udmVydEZyb21Mb2NhbGl6ZWROdW1iZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9jYWxlOjpsb2NhbGl6ZWREZWNpbWFsU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkxvY2FsZTo6ZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kcyk6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbGU6OmRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHMpOgorICAgICAgICAoV2ViQ29yZTo6
TG9jYWxlOjpmb3JtYXREYXRlVGltZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9y
bUxvY2FsZS5oOiBVcGRhdGUgdGhlIGlmbmRlZiBtYWNyby4KKyAgICAgICAgKExvY2FsZSk6IFJl
bmFtZWQgZnJvbSBMb2NhbGl6ZXIuIEFsc28sIHJlbmFtZWQgdGhlIGZvbGxvd2luZ3M6CisgICAg
ICAgICAtIGluaXRpYWxpemVMb2NhbGl6ZXJEYXRhIC0+IGluaXRpYWxpemVMb2NhbGVEYXRhCisg
ICAgICAgICAtIHNldExvY2FsaXplckRhdGEgLT4gc2V0TG9jYWxlRGF0YQorICAgICAgICAgLSBt
X2hhc0xvY2FsaXplckRhdGEgLT4gbV9oYXNMb2NhbGVEYXRhCisgICAgICAgIChXZWJDb3JlOjpM
b2NhbGU6OkxvY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZURlZmF1bHQp
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcDogRm9sbG93IHJlbmFtaW5n
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS90ZXh0L0xvY2FsZVdpbi5jcHA6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9j
YWxlV2luLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5o
OiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW06IERpdHRv
LgorCiAyMDEyLTEwLTI5ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBNYWtlIHJlbmRlcmluZyB0YWJsZXMgd2l0aCA8Y29sZ3JvdXBzPiB0d2ljZSBhcyBmYXN0IGJ5
IGF2b2lkaW5nIHdhbGtpbmcgdGhlIERPTSBmb3IgY29sZ3JvdXBzIDQgdGltZXMgZm9yIGVhY2gg
Y2VsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBlMzE0YTZiMThmYTUzNGQ2MWM3OTM3
YjYzYTIyYjAwNGJlZWFhZTEzLi43YjU5YWMyOTYwOGJkMjBiMzgwNTY2OTMyYjNlNjI4ZDM2YTRm
OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEw
LTI4ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUg
TG9jYWxpemVyIHRvIExvY2FsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAwNjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBzcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmg6CisgICAgICAgIChD
b2xvckNob29zZXJVSUNvbnRyb2xsZXIpOgorICAgICAgICBSZW5hbWUgbV9sb2NhbGl6ZXIgdG8g
bV9sb2NhbGUsIGFuZCBmb2xsb3cgb3RoZXIgcmVuYW1pbmdzLgorICAgICAgICAqIHNyYy9Db2xv
ckNob29zZXJVSUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb2xvckNob29zZXJV
SUNvbnRyb2xsZXI6OkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlcik6IEZvbGxvdyByZW5hbWluZ3Mu
CisgICAgICAgIChXZWJLaXQ6OkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6bG9jYWxlKTogRGl0
dG8uCisgICAgICAgICogc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuaDoKKyAgICAgICAgKERhdGVU
aW1lQ2hvb3NlckltcGwpOgorICAgICAgICBSZW5hbWUgbV9sb2NhbGl6ZXIgdG8gbV9sb2NhbGUs
IGFuZCBmb2xsb3cgb3RoZXIgcmVuYW1pbmdzLgorICAgICAgICAqIHNyYy9EYXRlVGltZUNob29z
ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0ZVRpbWVDaG9vc2VySW1wbDo6RGF0ZVRp
bWVDaG9vc2VySW1wbCk6IEZvbGxvdyByZW5hbWluZ3MuCisgICAgICAgIChXZWJLaXQ6OkRhdGVU
aW1lQ2hvb3NlckltcGw6OndyaXRlRG9jdW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
RGF0ZVRpbWVDaG9vc2VySW1wbDo6bG9jYWxlKTogRGl0dG8uCisgICAgICAgICogdGVzdHMvTG9j
YWxlTWFjVGVzdC5jcHA6CisgICAgICAgIChMb2NhbGVNYWNUZXN0Ojpmb3JtYXRUaW1lKTogRGl0
dG8uCisgICAgICAgICh0ZXN0TnVtYmVySXNSZXZlcnNpYmxlKTogRGl0dG8uCisgICAgICAgICog
dGVzdHMvTG9jYWxpemVkTnVtYmVySUNVVGVzdC5jcHA6CisgICAgICAgICh0ZXN0TnVtYmVySXNS
ZXZlcnNpYmxlKTogRGl0dG8uCisgICAgICAgICh0ZXN0RGVjaW1hbFNlcGFyYXRvcik6IERpdHRv
LgorCiAyMDEyLTEwLTI5ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLiAgUm9sbGVkIERFUFMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCAzNWRmYzJiZGY1ZjViYjBlODM0YmVmNjRhMzU3YjA2ZWU2MGRhM2MyLi43ZjBlOWQzYmE1ODBl
YzMwYjRiNDFjOTY4ZTE3YTdmNTBmMTY0MTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTYwMzUsMTQgKzYwMzUsMTQgQEAgYm9vbCBEb2N1bWVudDo6aGF2ZVN0eWxlc2hlZXRzTG9hZGVk
KCkgY29uc3QKICAgICByZXR1cm4gIW1fc3R5bGVTaGVldENvbGxlY3Rpb24tPmhhc1BlbmRpbmdT
aGVldHMoKSB8fCBtX2lnbm9yZVBlbmRpbmdTdHlsZXNoZWV0czsKIH0KIAotTG9jYWxpemVyJiBE
b2N1bWVudDo6Z2V0Q2FjaGVkTG9jYWxpemVyKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQor
TG9jYWxlJiBEb2N1bWVudDo6Z2V0Q2FjaGVkTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxlKQogewogICAgIEF0b21pY1N0cmluZyBsb2NhbGVLZXkgPSBsb2NhbGU7CiAgICAgaWYgKGxv
Y2FsZS5pc0VtcHR5KCkgfHwgIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxhbmdBdHRyaWJ1dGVB
d2FyZUZvcm1Db250cm9sVUlFbmFibGVkKCkpCiAgICAgICAgIGxvY2FsZUtleSA9IGRlZmF1bHRM
YW5ndWFnZSgpOwotICAgIExvY2FsZVRvTG9jYWxpemVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0g
bV9sb2NhbGl6ZXJDYWNoZS5hZGQobG9jYWxlS2V5LCBudWxscHRyKTsKKyAgICBMb2NhbGVJZGVu
dGlmaWVyVG9Mb2NhbGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2xvY2FsZUNhY2hlLmFkZChs
b2NhbGVLZXksIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IExvY2FsaXplcjo6Y3JlYXRlKGxvY2FsZUtleSk7Cisg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBMb2NhbGU6OmNyZWF0ZShsb2NhbGVLZXkp
OwogICAgIHJldHVybiAqKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCmluZGV4IDNlZWEwZjBkZGE4MThkMzYxZDBhZTFiZjgwZjE4ODVmMzBlYTUyNzQuLjM2
MmMxOWZmNTQxYTYxZGUyYWI5MzFjMTkzOTk4ZjhmYTY1ZDIzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCkBAIC0xMDgsNyArMTA4LDcgQEAgY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEludFBv
aW50OwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgSlNOb2RlOwotY2xhc3MgTG9jYWxp
emVyOworY2xhc3MgTG9jYWxlOwogY2xhc3MgTWVkaWFDYW5TdGFydExpc3RlbmVyOwogY2xhc3Mg
TWVkaWFRdWVyeUxpc3Q7CiBjbGFzcyBNZWRpYVF1ZXJ5TWF0Y2hlcjsKQEAgLTExNTYsOCArMTE1
Niw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaW5TdHlsZVJlY2FsYygpIHsgcmV0dXJuIG1faW5T
dHlsZVJlY2FsYzsgfQogCi0gICAgLy8gUmV0dXJuIGEgTG9jYWxpemVyIGZvciB0aGUgZGVmYXVs
dCBsb2NhbGUgaWYgdGhlIGFyZ3VtZW50IGlzIG51bGwgb3IgZW1wdHkuCi0gICAgTG9jYWxpemVy
JiBnZXRDYWNoZWRMb2NhbGl6ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUgPSBudWxsQXRv
bSk7CisgICAgLy8gUmV0dXJuIGEgTG9jYWxlIGZvciB0aGUgZGVmYXVsdCBsb2NhbGUgaWYgdGhl
IGFyZ3VtZW50IGlzIG51bGwgb3IgZW1wdHkuCisgICAgTG9jYWxlJiBnZXRDYWNoZWRMb2NhbGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUgPSBudWxsQXRvbSk7CiAKIHByb3RlY3RlZDoKICAg
ICBEb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1M
KTsKQEAgLTE1MTMsOCArMTUxMyw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RpZERpc3BhdGNo
Vmlld3BvcnRQcm9wZXJ0aWVzQ2hhbmdlZDsKICNlbmRpZgogCi0gICAgdHlwZWRlZiBIYXNoTWFw
PEF0b21pY1N0cmluZywgT3duUHRyPExvY2FsaXplcj4gPiBMb2NhbGVUb0xvY2FsaXplck1hcDsK
LSAgICBMb2NhbGVUb0xvY2FsaXplck1hcCBtX2xvY2FsaXplckNhY2hlOworICAgIHR5cGVkZWYg
SGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxMb2NhbGU+ID4gTG9jYWxlSWRlbnRpZmllclRv
TG9jYWxlTWFwOworICAgIExvY2FsZUlkZW50aWZpZXJUb0xvY2FsZU1hcCBtX2xvY2FsZUNhY2hl
OwogfTsKIAogaW5saW5lIHZvaWQgRG9jdW1lbnQ6Om5vdGlmeVJlbW92ZVBlbmRpbmdTaGVldElm
TmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA0Y2M0NzBlMDg4YTQ2ZjY5NTk4MDQy
NWY5NTNlNTlkNTc4NjRjMDE0Li44OTljMzM0N2E3MDQ1YjA1NzA0NDhmNjcwODQzNTJlYmY3OTJj
YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xNzg5LDkgKzE3ODksOSBAQCBBdG9taWNT
dHJpbmcgRWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkgY29uc3QKICAgICByZXR1
cm4gdmFsdWU7CiB9CiAKLUxvY2FsaXplciYgRWxlbWVudDo6bG9jYWxpemVyKCkgY29uc3QKK0xv
Y2FsZSYgRWxlbWVudDo6bG9jYWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQoKS0+
Z2V0Q2FjaGVkTG9jYWxpemVyKGNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpKTsKKyAgICByZXR1
cm4gZG9jdW1lbnQoKS0+Z2V0Q2FjaGVkTG9jYWxlKGNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgp
KTsKIH0KIAogdm9pZCBFbGVtZW50OjpjYW5jZWxGb2N1c0FwcGVhcmFuY2VVcGRhdGUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKaW5kZXggODkzYmJlZWYwNjcxZGQ1MzJmYWYxOGNiNzA0OGQ5M2IyN2FkNzgx
ZS4uMTQ4NTcwMzNiODY1OWIxNGQ5MzA1Y2E4Y2ExYWU4YTQ0ODhmMGQ0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIERPTVRva2VuTGlzdDsKIGNsYXNzIEVsZW1l
bnRSYXJlRGF0YTsKIGNsYXNzIEVsZW1lbnRTaGFkb3c7CiBjbGFzcyBJbnRTaXplOwotY2xhc3Mg
TG9jYWxpemVyOworY2xhc3MgTG9jYWxlOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgU2hh
ZG93Um9vdDsKIGNsYXNzIFdlYktpdEFuaW1hdGlvbkxpc3Q7CkBAIC0yOTEsNyArMjkxLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaXNJbkNhbnZhc1N1YnRyZWUoKSBjb25zdDsKIAogICAgIEF0b21p
Y1N0cmluZyBjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdDsKLSAgICBMb2NhbGl6ZXIm
IGxvY2FsaXplcigpIGNvbnN0OworICAgIExvY2FsZSYgbG9jYWxlKCkgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgLypzZW5kVG9BbnlFdmVudCovKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3Bw
CmluZGV4IDA5ZTQ2OTRhNzI2YjA4MDkzN2QzNGVkN2ViNmRlOGE2OTg3NWVjYzMuLjgzMGMxOTgw
NjcyMzA3ODM0NmE0NDZhZWJjOWMyZWVkZjExYTczYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCBT
dHJpbmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpsb2NhbGl6ZVZhbHVlKGNvbnN0IFN0cmlu
ZyYgcHJvcG9zZWRWYWx1ZSkgY29ucwogICAgIGlmICghcGFyc2VUb0RhdGVDb21wb25lbnRzKHBy
b3Bvc2VkVmFsdWUsICZkYXRlKSkKICAgICAgICAgcmV0dXJuIHByb3Bvc2VkVmFsdWU7CiAKLSAg
ICBTdHJpbmcgbG9jYWxpemVkID0gZWxlbWVudCgpLT5sb2NhbGl6ZXIoKS5mb3JtYXREYXRlVGlt
ZShkYXRlKTsKKyAgICBTdHJpbmcgbG9jYWxpemVkID0gZWxlbWVudCgpLT5sb2NhbGUoKS5mb3Jt
YXREYXRlVGltZShkYXRlKTsKICAgICByZXR1cm4gbG9jYWxpemVkLmlzRW1wdHkoKSA/IHByb3Bv
c2VkVmFsdWUgOiBsb2NhbGl6ZWQ7CiB9CiAKQEAgLTE3MCw3ICsxNzAsNyBAQCBTdHJpbmcgQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2libGVWYWx1ZShjb25zdCBTdHJp
bmcmIHZpc2libGVWYQogICAgIGlmICh2aXNpYmxlVmFsdWUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gdmlzaWJsZVZhbHVlOwogCi0gICAgZG91YmxlIHBhcnNlZFZhbHVlID0gZWxlbWVudCgp
LT5sb2NhbGl6ZXIoKS5wYXJzZURhdGVUaW1lKHZpc2libGVWYWx1ZSwgZGF0ZVR5cGUoKSk7Cisg
ICAgZG91YmxlIHBhcnNlZFZhbHVlID0gZWxlbWVudCgpLT5sb2NhbGUoKS5wYXJzZURhdGVUaW1l
KHZpc2libGVWYWx1ZSwgZGF0ZVR5cGUoKSk7CiAgICAgaWYgKCFpc2Zpbml0ZShwYXJzZWRWYWx1
ZSkpCiAgICAgICAgIHJldHVybiB2aXNpYmxlVmFsdWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlw
ZS5jcHAKaW5kZXggNzFlZGQ1OWY2NmUzNDhjYmE2YTcxMTc3Zjk4YmMwNjJhYzVlNzRmNS4uZTFm
NzA2ODhlYWZlM2QyODY3MzgyNjI1YTVkOWNmNjg1ODI1Mjg2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlu
cHV0VHlwZS5jcHAKQEAgLTMyMiwxMSArMzIyLDExIEBAIHZvaWQgQmFzZU11bHRpcGxlRmllbGRz
RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKCkKICAgICBpZiAoIW1f
ZGF0ZVRpbWVFZGl0RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQXRvbWljU3RyaW5n
IGRpcmVjdGlvbiA9IGVsZW1lbnQoKS0+bG9jYWxpemVyKCkuaXNSVEwoKSA/IEF0b21pY1N0cmlu
ZygicnRsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkgOiBBdG9taWNTdHJp
bmcoImx0ciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIEF0b21p
Y1N0cmluZyBkaXJlY3Rpb24gPSBlbGVtZW50KCktPmxvY2FsZSgpLmlzUlRMKCkgPyBBdG9taWNT
dHJpbmcoInJ0bCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpIDogQXRvbWlj
U3RyaW5nKCJsdHIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBp
ZiAoRWxlbWVudCogY29udGFpbmVyID0gZmlyc3RFbGVtZW50Q2hpbGQoZWxlbWVudCgpLT51c2Vy
QWdlbnRTaGFkb3dSb290KCkpKQogICAgICAgICBjb250YWluZXItPnNldEF0dHJpYnV0ZShIVE1M
TmFtZXM6OmRpckF0dHIsIGRpcmVjdGlvbik7CiAKLSAgICBEYXRlVGltZUVkaXRFbGVtZW50OjpM
YXlvdXRQYXJhbWV0ZXJzIGxheW91dFBhcmFtZXRlcnMoZWxlbWVudCgpLT5sb2NhbGl6ZXIoKSwg
Y3JlYXRlU3RlcFJhbmdlKEFueUlzRGVmYXVsdFN0ZXApKTsKKyAgICBEYXRlVGltZUVkaXRFbGVt
ZW50OjpMYXlvdXRQYXJhbWV0ZXJzIGxheW91dFBhcmFtZXRlcnMoZWxlbWVudCgpLT5sb2NhbGUo
KSwgY3JlYXRlU3RlcFJhbmdlKEFueUlzRGVmYXVsdFN0ZXApKTsKIAogICAgIERhdGVDb21wb25l
bnRzIGRhdGU7CiAgICAgY29uc3QgYm9vbCBoYXNWYWx1ZSA9IHBhcnNlVG9EYXRlQ29tcG9uZW50
cyhlbGVtZW50KCktPnZhbHVlKCksICZkYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5
cGUuY3BwCmluZGV4IDgzY2Q2NGNlNWI1MzNiZDk2NmM4NzViMmIxOWI3M2MzYzVkNTExNjUuLjk4
OWIzMGQ0Yzk4ZWFkYjdiM2VmMTA4ZjU4YWJjMjZkZGVhZTJkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9EYXRlSW5wdXRUeXBlLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIGJvb2wgRGF0ZUlucHV0VHlw
ZTo6dXNlc0ZpeGVkUGxhY2Vob2xkZXIoKSBjb25zdAogCiBTdHJpbmcgRGF0ZUlucHV0VHlwZTo6
Zml4ZWRQbGFjZWhvbGRlcigpCiB7Ci0gICAgcmV0dXJuIGVsZW1lbnQoKS0+bG9jYWxpemVyKCku
ZGF0ZUZvcm1hdFRleHQoKTsKKyAgICByZXR1cm4gZWxlbWVudCgpLT5sb2NhbGUoKS5kYXRlRm9y
bWF0VGV4dCgpOwogfQogI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVfTEVHQUNZX1VJ
KQogCkBAIC0xODAsNyArMTgwLDcgQEAgU3RyaW5nIERhdGVJbnB1dFR5cGU6OmZvcm1hdERhdGVU
aW1lRmllbGRzU3RhdGUoY29uc3QgRGF0ZVRpbWVGaWVsZHNTdGF0ZSYgZGF0ZVQKIAogdm9pZCBE
YXRlSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFtZXRlcnMoRGF0ZVRpbWVFZGl0RWxlbWVudDo6
TGF5b3V0UGFyYW1ldGVycyYgbGF5b3V0UGFyYW1ldGVycywgY29uc3QgRGF0ZUNvbXBvbmVudHMm
IGRhdGUpIGNvbnN0CiB7Ci0gICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxh
eW91dFBhcmFtZXRlcnMubG9jYWxpemVyLmRhdGVGb3JtYXQoKTsKKyAgICBsYXlvdXRQYXJhbWV0
ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5b3V0UGFyYW1ldGVycy5sb2NhbGUuZGF0ZUZvcm1hdCgp
OwogICAgIGxheW91dFBhcmFtZXRlcnMuZmFsbGJhY2tEYXRlVGltZUZvcm1hdCA9IEFTQ0lJTGl0
ZXJhbCgieXl5eS1NTS1kZCIpOwogICAgIGxheW91dFBhcmFtZXRlcnMubWluaW11bVllYXIgPSBm
dWxsWWVhcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0cikpOwogICAgIGxheW91
dFBhcmFtZXRlcnMubWF4aW11bVllYXIgPSBmdWxsWWVhcihlbGVtZW50KCktPmZhc3RHZXRBdHRy
aWJ1dGUobWF4QXR0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGlt
ZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNw
cAppbmRleCBlOTRiOWYyYWE0Y2ZkNzdhZjRlMTlmMTcwYjQwOGYzN2UwNDBkOTBlLi4wZWNhYjZl
NmZhNDlhYzBiZGVkNGQ0ZTViZmFmZTRiMzhlZWIxZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RhdGVUaW1lSW5wdXRUeXBlLmNwcApAQCAtMTQ2LDEwICsxNDYsMTAgQEAgU3RyaW5nIERhdGVU
aW1lSW5wdXRUeXBlOjpmb3JtYXREYXRlVGltZUZpZWxkc1N0YXRlKGNvbnN0IERhdGVUaW1lRmll
bGRzU3RhdGUmIGQKIHZvaWQgRGF0ZVRpbWVJbnB1dFR5cGU6OnNldHVwTGF5b3V0UGFyYW1ldGVy
cyhEYXRlVGltZUVkaXRFbGVtZW50OjpMYXlvdXRQYXJhbWV0ZXJzJiBsYXlvdXRQYXJhbWV0ZXJz
LCBjb25zdCBEYXRlQ29tcG9uZW50cyYgZGF0ZSkgY29uc3QKIHsKICAgICBpZiAoc2hvdWxkSGF2
ZVNlY29uZEZpZWxkKGRhdGUpKSB7Ci0gICAgICAgIGxheW91dFBhcmFtZXRlcnMuZGF0ZVRpbWVG
b3JtYXQgPSBsYXlvdXRQYXJhbWV0ZXJzLmxvY2FsaXplci5kYXRlVGltZUZvcm1hdFdpdGhTZWNv
bmRzKCk7CisgICAgICAgIGxheW91dFBhcmFtZXRlcnMuZGF0ZVRpbWVGb3JtYXQgPSBsYXlvdXRQ
YXJhbWV0ZXJzLmxvY2FsZS5kYXRlVGltZUZvcm1hdFdpdGhTZWNvbmRzKCk7CiAgICAgICAgIGxh
eW91dFBhcmFtZXRlcnMuZmFsbGJhY2tEYXRlVGltZUZvcm1hdCA9ICJkZC9NTS95eXl5IEhIOm1t
OnNzIjsKICAgICB9IGVsc2UgewotICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9y
bWF0ID0gbGF5b3V0UGFyYW1ldGVycy5sb2NhbGl6ZXIuZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vj
b25kcygpOworICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5b3V0
UGFyYW1ldGVycy5sb2NhbGUuZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kcygpOwogICAgICAg
ICBsYXlvdXRQYXJhbWV0ZXJzLmZhbGxiYWNrRGF0ZVRpbWVGb3JtYXQgPSAiZGQvTU0veXl5eSBI
SDptbSI7CiAgICAgfQogICAgIGxheW91dFBhcmFtZXRlcnMubWluaW11bVllYXIgPSBmdWxsWWVh
cihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0cikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKaW5kZXggZDc5YzEwMzJkYTJlZTA4
NDc4MzNhMzY2YzgxZGJhNDI0Y2I1ZDcxNS4uOTM3M2NiZWMyOGQ5NDE5ZjRjZGZjYjdjODY5Nzc1
M2Y0ODlhZTg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2Fs
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1
dFR5cGUuY3BwCkBAIC0xNTIsMTAgKzE1MiwxMCBAQCBTdHJpbmcgRGF0ZVRpbWVMb2NhbElucHV0
VHlwZTo6Zm9ybWF0RGF0ZVRpbWVGaWVsZHNTdGF0ZShjb25zdCBEYXRlVGltZUZpZWxkc1N0YQog
dm9pZCBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFtZXRlcnMoRGF0ZVRp
bWVFZGl0RWxlbWVudDo6TGF5b3V0UGFyYW1ldGVycyYgbGF5b3V0UGFyYW1ldGVycywgY29uc3Qg
RGF0ZUNvbXBvbmVudHMmIGRhdGUpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEhhdmVTZWNvbmRG
aWVsZChkYXRlKSkgewotICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0g
bGF5b3V0UGFyYW1ldGVycy5sb2NhbGl6ZXIuZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kcygpOwor
ICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5b3V0UGFyYW1ldGVy
cy5sb2NhbGUuZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kcygpOwogICAgICAgICBsYXlvdXRQYXJh
bWV0ZXJzLmZhbGxiYWNrRGF0ZVRpbWVGb3JtYXQgPSAiZGQvTU0veXl5eSBISDptbTpzcyI7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxh
eW91dFBhcmFtZXRlcnMubG9jYWxpemVyLmRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHMoKTsK
KyAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFtZXRl
cnMubG9jYWxlLmRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHMoKTsKICAgICAgICAgbGF5b3V0
UGFyYW1ldGVycy5mYWxsYmFja0RhdGVUaW1lRm9ybWF0ID0gImRkL01NL3l5eXkgSEg6bW0iOwog
ICAgIH0KICAgICBsYXlvdXRQYXJhbWV0ZXJzLm1pbmltdW1ZZWFyID0gZnVsbFllYXIoZWxlbWVu
dCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElu
cHV0VHlwZS5jcHAKaW5kZXggYTZjNTZhMzc3ZGJhYzZhMmY5MmI5NzkzZTNmNzk3N2Q2ZGRjMzVj
Yy4uNTI3NWU1NGI1NjQ3Yjc1ODU0ZDVhNGI0M2JmMDk5NTFiOTdlMzcwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBTdHJpbmcgTW9u
dGhJbnB1dFR5cGU6OmZvcm1hdERhdGVUaW1lRmllbGRzU3RhdGUoY29uc3QgRGF0ZVRpbWVGaWVs
ZHNTdGF0ZSYgZGF0ZQogCiB2b2lkIE1vbnRoSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFtZXRl
cnMoRGF0ZVRpbWVFZGl0RWxlbWVudDo6TGF5b3V0UGFyYW1ldGVycyYgbGF5b3V0UGFyYW1ldGVy
cywgY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGUpIGNvbnN0CiB7Ci0gICAgbGF5b3V0UGFyYW1l
dGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFtZXRlcnMubG9jYWxpemVyLm1vbnRoRm9y
bWF0KCk7CisgICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFt
ZXRlcnMubG9jYWxlLm1vbnRoRm9ybWF0KCk7CiAgICAgbGF5b3V0UGFyYW1ldGVycy5mYWxsYmFj
a0RhdGVUaW1lRm9ybWF0ID0gIk1NL3l5eXkiOwogICAgIGxheW91dFBhcmFtZXRlcnMubWluaW11
bVllYXIgPSBmdWxsWWVhcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0cikpOwog
ICAgIGxheW91dFBhcmFtZXRlcnMubWF4aW11bVllYXIgPSBmdWxsWWVhcihlbGVtZW50KCktPmZh
c3RHZXRBdHRyaWJ1dGUobWF4QXR0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9OdW1iZXJJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5
cGUuY3BwCmluZGV4IDkxY2ZhNDA5ZjEyY2ZjNjZkZTQ1NGRkMDEwMDlhNTU4MmRkOWU2NTUuLmNl
ODMzNTEyZDEyOTJmYzdlZGJlYmY4YzBlZmFhMzZjNjEzZDhiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL051bWJlcklucHV0VHlwZS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBTdHJpbmcgTnVtYmVy
SW5wdXRUeXBlOjpsb2NhbGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkgY29u
c3QKICAgICAvLyBXZSBkb24ndCBsb2NhbGl6ZSBzY2llbnRpZmljIG5vdGF0aW9ucy4KICAgICBp
ZiAocHJvcG9zZWRWYWx1ZS5maW5kKGlzRSkgIT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybiBw
cm9wb3NlZFZhbHVlOwotICAgIHJldHVybiBlbGVtZW50KCktPmxvY2FsaXplcigpLmNvbnZlcnRU
b0xvY2FsaXplZE51bWJlcihwcm9wb3NlZFZhbHVlKTsKKyAgICByZXR1cm4gZWxlbWVudCgpLT5s
b2NhbGUoKS5jb252ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIocHJvcG9zZWRWYWx1ZSk7CiB9CiAKIFN0
cmluZyBOdW1iZXJJbnB1dFR5cGU6OnZpc2libGVWYWx1ZSgpIGNvbnN0CkBAIC0yNTAsNyArMjUw
LDcgQEAgU3RyaW5nIE51bWJlcklucHV0VHlwZTo6Y29udmVydEZyb21WaXNpYmxlVmFsdWUoY29u
c3QgU3RyaW5nJiB2aXNpYmxlVmFsdWUpIGNvbnMKICAgICAvLyBXZSBkb24ndCBsb2NhbGl6ZSBz
Y2llbnRpZmljIG5vdGF0aW9ucy4KICAgICBpZiAodmlzaWJsZVZhbHVlLmZpbmQoaXNFKSAhPSBu
b3RGb3VuZCkKICAgICAgICAgcmV0dXJuIHZpc2libGVWYWx1ZTsKLSAgICByZXR1cm4gZWxlbWVu
dCgpLT5sb2NhbGl6ZXIoKS5jb252ZXJ0RnJvbUxvY2FsaXplZE51bWJlcih2aXNpYmxlVmFsdWUp
OworICAgIHJldHVybiBlbGVtZW50KCktPmxvY2FsZSgpLmNvbnZlcnRGcm9tTG9jYWxpemVkTnVt
YmVyKHZpc2libGVWYWx1ZSk7CiB9CiAKIGJvb2wgTnVtYmVySW5wdXRUeXBlOjppc0FjY2VwdGFi
bGVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1l
SW5wdXRUeXBlLmNwcAppbmRleCBlODYzM2ZlYmI2NjNlMWQxOWI4NzJhYzJkMjY4YzgzNzg2MWJh
N2YyLi41ZjUyMjc5NzdlMGVhMDcwMTg4NTNkYjUwYzE5ZGQ1N2Q4NmVkNGYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKQEAgLTEyOCw5ICsxMjgsOSBAQCBTdHJpbmcgVGlt
ZUlucHV0VHlwZTo6bG9jYWxpemVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpIGNv
bnN0CiAgICAgaWYgKCFwYXJzZVRvRGF0ZUNvbXBvbmVudHMocHJvcG9zZWRWYWx1ZSwgJmRhdGUp
KQogICAgICAgICByZXR1cm4gcHJvcG9zZWRWYWx1ZTsKIAotICAgIExvY2FsaXplcjo6Rm9ybWF0
VHlwZSBmb3JtYXRUeXBlID0gc2hvdWxkSGF2ZVNlY29uZEZpZWxkKGRhdGUpID8gTG9jYWxpemVy
OjpGb3JtYXRUeXBlTWVkaXVtIDogTG9jYWxpemVyOjpGb3JtYXRUeXBlU2hvcnQ7CisgICAgTG9j
YWxlOjpGb3JtYXRUeXBlIGZvcm1hdFR5cGUgPSBzaG91bGRIYXZlU2Vjb25kRmllbGQoZGF0ZSkg
PyBMb2NhbGU6OkZvcm1hdFR5cGVNZWRpdW0gOiBMb2NhbGU6OkZvcm1hdFR5cGVTaG9ydDsKIAot
ICAgIFN0cmluZyBsb2NhbGl6ZWQgPSBlbGVtZW50KCktPmxvY2FsaXplcigpLmZvcm1hdERhdGVU
aW1lKGRhdGUsIGZvcm1hdFR5cGUpOworICAgIFN0cmluZyBsb2NhbGl6ZWQgPSBlbGVtZW50KCkt
PmxvY2FsZSgpLmZvcm1hdERhdGVUaW1lKGRhdGUsIGZvcm1hdFR5cGUpOwogICAgIHJldHVybiBs
b2NhbGl6ZWQuaXNFbXB0eSgpID8gcHJvcG9zZWRWYWx1ZSA6IGxvY2FsaXplZDsKIH0KIApAQCAt
MTU1LDEwICsxNTUsMTAgQEAgU3RyaW5nIFRpbWVJbnB1dFR5cGU6OmZvcm1hdERhdGVUaW1lRmll
bGRzU3RhdGUoY29uc3QgRGF0ZVRpbWVGaWVsZHNTdGF0ZSYgZGF0ZVQKIHZvaWQgVGltZUlucHV0
VHlwZTo6c2V0dXBMYXlvdXRQYXJhbWV0ZXJzKERhdGVUaW1lRWRpdEVsZW1lbnQ6OkxheW91dFBh
cmFtZXRlcnMmIGxheW91dFBhcmFtZXRlcnMsIGNvbnN0IERhdGVDb21wb25lbnRzJiBkYXRlKSBj
b25zdAogewogICAgIGlmIChzaG91bGRIYXZlU2Vjb25kRmllbGQoZGF0ZSkpIHsKLSAgICAgICAg
bGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFtZXRlcnMubG9jYWxp
emVyLnRpbWVGb3JtYXQoKTsKKyAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1h
dCA9IGxheW91dFBhcmFtZXRlcnMubG9jYWxlLnRpbWVGb3JtYXQoKTsKICAgICAgICAgbGF5b3V0
UGFyYW1ldGVycy5mYWxsYmFja0RhdGVUaW1lRm9ybWF0ID0gIkhIOm1tOnNzIjsKICAgICB9IGVs
c2UgewotICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5b3V0UGFy
YW1ldGVycy5sb2NhbGl6ZXIuc2hvcnRUaW1lRm9ybWF0KCk7CisgICAgICAgIGxheW91dFBhcmFt
ZXRlcnMuZGF0ZVRpbWVGb3JtYXQgPSBsYXlvdXRQYXJhbWV0ZXJzLmxvY2FsZS5zaG9ydFRpbWVG
b3JtYXQoKTsKICAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5mYWxsYmFja0RhdGVUaW1lRm9ybWF0
ID0gIkhIOm1tIjsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0RhdGVUaW1lRWRpdEVsZW1lbnQuY3BwCmluZGV4IDkyNzU4YWU1OTU1ZWFmZDYxYjdkYzZlZGNi
MjdiNjBjMTJlYjUzNGEuLjlhZTNlNzM5ZmFkN2YxZjUzNDBjZjZjOWEwZTFjZWVlMWVkMzczOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1l
bnQuY3BwCkBAIC0xMzAsMTAgKzEzMCwxMCBAQCB2b2lkIERhdGVUaW1lRWRpdEJ1aWxkZXI6OnZp
c2l0RmllbGQoRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZSBmaWVsZFR5cGUsIGludCBjbwogICAg
ICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgIGNhc2UgY291bnRGb3JOYXJyb3dNb250aDog
Ly8gRmFsbHRocm91Z2guCiAgICAgICAgIGNhc2UgY291bnRGb3JBYmJyZXZpYXRlZE1vbnRoOgot
ICAgICAgICAgICAgbV9lZGl0RWxlbWVudC5hZGRGaWVsZChEYXRlVGltZVN5bWJvbGljTW9udGhG
aWVsZEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgbV9lZGl0RWxlbWVudCwgbV9wYXJhbWV0ZXJz
LmxvY2FsaXplci5zaG9ydE1vbnRoTGFiZWxzKCkpKTsKKyAgICAgICAgICAgIG1fZWRpdEVsZW1l
bnQuYWRkRmllbGQoRGF0ZVRpbWVTeW1ib2xpY01vbnRoRmllbGRFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQsIG1fZWRpdEVsZW1lbnQsIG1fcGFyYW1ldGVycy5sb2NhbGUuc2hvcnRNb250aExhYmVs
cygpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBjb3VudEZvckZ1bGxNb250
aDoKLSAgICAgICAgICAgIG1fZWRpdEVsZW1lbnQuYWRkRmllbGQoRGF0ZVRpbWVTeW1ib2xpY01v
bnRoRmllbGRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIG1fZWRpdEVsZW1lbnQsIG1fcGFyYW1l
dGVycy5sb2NhbGl6ZXIubW9udGhMYWJlbHMoKSkpOworICAgICAgICAgICAgbV9lZGl0RWxlbWVu
dC5hZGRGaWVsZChEYXRlVGltZVN5bWJvbGljTW9udGhGaWVsZEVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCwgbV9lZGl0RWxlbWVudCwgbV9wYXJhbWV0ZXJzLmxvY2FsZS5tb250aExhYmVscygpKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG1fZWRp
dEVsZW1lbnQuYWRkRmllbGQoRGF0ZVRpbWVNb250aEZpZWxkRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50LCBtX2VkaXRFbGVtZW50LCBtX3BhcmFtZXRlcnMucGxhY2Vob2xkZXJGb3JNb250aCkpOwpA
QCAtMTQ1LDEwICsxNDUsMTAgQEAgdm9pZCBEYXRlVGltZUVkaXRCdWlsZGVyOjp2aXNpdEZpZWxk
KERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGUgZmllbGRUeXBlLCBpbnQgY28KICAgICAgICAgc3dp
dGNoIChjb3VudCkgewogICAgICAgICBjYXNlIGNvdW50Rm9yTmFycm93TW9udGg6IC8vIEZhbGx0
aHJvdWdoLgogICAgICAgICBjYXNlIGNvdW50Rm9yQWJicmV2aWF0ZWRNb250aDoKLSAgICAgICAg
ICAgIG1fZWRpdEVsZW1lbnQuYWRkRmllbGQoRGF0ZVRpbWVTeW1ib2xpY01vbnRoRmllbGRFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQsIG1fZWRpdEVsZW1lbnQsIG1fcGFyYW1ldGVycy5sb2NhbGl6
ZXIuc2hvcnRTdGFuZEFsb25lTW9udGhMYWJlbHMoKSkpOworICAgICAgICAgICAgbV9lZGl0RWxl
bWVudC5hZGRGaWVsZChEYXRlVGltZVN5bWJvbGljTW9udGhGaWVsZEVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCwgbV9lZGl0RWxlbWVudCwgbV9wYXJhbWV0ZXJzLmxvY2FsZS5zaG9ydFN0YW5kQWxv
bmVNb250aExhYmVscygpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBjb3Vu
dEZvckZ1bGxNb250aDoKLSAgICAgICAgICAgIG1fZWRpdEVsZW1lbnQuYWRkRmllbGQoRGF0ZVRp
bWVTeW1ib2xpY01vbnRoRmllbGRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIG1fZWRpdEVsZW1l
bnQsIG1fcGFyYW1ldGVycy5sb2NhbGl6ZXIuc3RhbmRBbG9uZU1vbnRoTGFiZWxzKCkpKTsKKyAg
ICAgICAgICAgIG1fZWRpdEVsZW1lbnQuYWRkRmllbGQoRGF0ZVRpbWVTeW1ib2xpY01vbnRoRmll
bGRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIG1fZWRpdEVsZW1lbnQsIG1fcGFyYW1ldGVycy5s
b2NhbGUuc3RhbmRBbG9uZU1vbnRoTGFiZWxzKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgbV9lZGl0RWxlbWVudC5hZGRGaWVsZChEYXRlVGlt
ZU1vbnRoRmllbGRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIG1fZWRpdEVsZW1lbnQsIG1fcGFy
YW1ldGVycy5wbGFjZWhvbGRlckZvck1vbnRoKSk7CkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBE
YXRlVGltZUVkaXRCdWlsZGVyOjp2aXNpdEZpZWxkKERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGUg
ZmllbGRUeXBlLCBpbnQgY28KICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBEYXRlVGltZUZv
cm1hdDo6RmllbGRUeXBlUGVyaW9kOgotICAgICAgICBtX2VkaXRFbGVtZW50LmFkZEZpZWxkKERh
dGVUaW1lQU1QTUZpZWxkRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBtX2VkaXRFbGVtZW50LCBt
X3BhcmFtZXRlcnMubG9jYWxpemVyLnRpbWVBTVBNTGFiZWxzKCkpKTsKKyAgICAgICAgbV9lZGl0
RWxlbWVudC5hZGRGaWVsZChEYXRlVGltZUFNUE1GaWVsZEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCwgbV9lZGl0RWxlbWVudCwgbV9wYXJhbWV0ZXJzLmxvY2FsZS50aW1lQU1QTUxhYmVscygpKSk7
CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZVNl
Y29uZDogewpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgRGF0ZVRpbWVFZGl0QnVpbGRlcjo6dmlz
aXRGaWVsZChEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlIGZpZWxkVHlwZSwgaW50IGNvCiAgICAg
ICAgICAgICBmaWVsZC0+c2V0UmVhZE9ubHkoKTsKIAogICAgICAgICBpZiAobmVlZE1pbGxpc2Vj
b25kRmllbGQoKSkgewotICAgICAgICAgICAgdmlzaXRMaXRlcmFsKG1fcGFyYW1ldGVycy5sb2Nh
bGl6ZXIubG9jYWxpemVkRGVjaW1hbFNlcGFyYXRvcigpKTsKKyAgICAgICAgICAgIHZpc2l0TGl0
ZXJhbChtX3BhcmFtZXRlcnMubG9jYWxlLmxvY2FsaXplZERlY2ltYWxTZXBhcmF0b3IoKSk7CiAg
ICAgICAgICAgICB2aXNpdEZpZWxkKERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVGcmFjdGlvbmFs
U2Vjb25kLCAzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmgKaW5kZXggODk4YjYyZGY4ODQ0
YzU3NTY3Yzk4YjFiNzUyM2ZjZjEwOTNlZTc0ZC4uMzVjNWJjN2U4ZWYyZGM4M2ExZTRmZTcyZjkx
YzhmYzRlMTE2YmI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0
ZVRpbWVFZGl0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVU
aW1lRWRpdEVsZW1lbnQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIERhdGVUaW1lRmllbGRzU3RhdGU7CiBjbGFzcyBLZXlib2FyZEV2ZW50OwotY2xhc3Mg
TG9jYWxpemVyOworY2xhc3MgTG9jYWxlOwogY2xhc3MgTW91c2VFdmVudDsKIGNsYXNzIFN0ZXBS
YW5nZTsKIApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IExheW91dFBhcmFt
ZXRlcnMgewogICAgICAgICBTdHJpbmcgZGF0ZVRpbWVGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBm
YWxsYmFja0RhdGVUaW1lRm9ybWF0OwotICAgICAgICBMb2NhbGl6ZXImIGxvY2FsaXplcjsKKyAg
ICAgICAgTG9jYWxlJiBsb2NhbGU7CiAgICAgICAgIGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFuZ2U7
CiAgICAgICAgIGludCBtaW5pbXVtWWVhcjsKICAgICAgICAgaW50IG1heGltdW1ZZWFyOwpAQCAt
NzEsOCArNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBwbGFjZWhvbGRlckZvck1vbnRo
OwogICAgICAgICBTdHJpbmcgcGxhY2Vob2xkZXJGb3JZZWFyOwogCi0gICAgICAgIExheW91dFBh
cmFtZXRlcnMoTG9jYWxpemVyJiBsb2NhbGl6ZXIsIGNvbnN0IFN0ZXBSYW5nZSYgc3RlcFJhbmdl
KQotICAgICAgICAgICAgOiBsb2NhbGl6ZXIobG9jYWxpemVyKQorICAgICAgICBMYXlvdXRQYXJh
bWV0ZXJzKExvY2FsZSYgbG9jYWxlLCBjb25zdCBTdGVwUmFuZ2UmIHN0ZXBSYW5nZSkKKyAgICAg
ICAgICAgIDogbG9jYWxlKGxvY2FsZSkKICAgICAgICAgICAgICwgc3RlcFJhbmdlKHN0ZXBSYW5n
ZSkKICAgICAgICAgICAgICwgbWluaW11bVllYXIodW5kZWZpbmVkWWVhcigpKQogICAgICAgICAg
ICAgLCBtYXhpbXVtWWVhcih1bmRlZmluZWRZZWFyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcAppbmRl
eCBlOTQyYjQwNjBlYjQ1NjYzNmVlYmE2ZjdkMDFkODZhZDA3ZjFiYzI2Li5hOTJmZTgyMmVhYzNm
YWE3MTk4NTk3ZTZiNTlmZDk2NTVlMWEzYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAKQEAgLTEw
NCwxMiArMTA0LDEyIEBAIHZvaWQgRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50OjpkaWRCbHVy
KCkKIAogU3RyaW5nIERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6Zm9ybWF0VmFsdWUoaW50
IHZhbHVlKSBjb25zdAogewotICAgIExvY2FsaXplciYgbG9jYWxpemVyID0gbG9jYWxpemVyRm9y
T3duZXIoKTsKKyAgICBMb2NhbGUmIGxvY2FsZSA9IGxvY2FsZUZvck93bmVyKCk7CiAgICAgaWYg
KG1fcmFuZ2UubWF4aW11bSA+IDk5OSkKLSAgICAgICAgcmV0dXJuIGxvY2FsaXplci5jb252ZXJ0
VG9Mb2NhbGl6ZWROdW1iZXIoU3RyaW5nOjpmb3JtYXQoIiUwNGQiLCB2YWx1ZSkpOworICAgICAg
ICByZXR1cm4gbG9jYWxlLmNvbnZlcnRUb0xvY2FsaXplZE51bWJlcihTdHJpbmc6OmZvcm1hdCgi
JTA0ZCIsIHZhbHVlKSk7CiAgICAgaWYgKG1fcmFuZ2UubWF4aW11bSA+IDk5KQotICAgICAgICBy
ZXR1cm4gbG9jYWxpemVyLmNvbnZlcnRUb0xvY2FsaXplZE51bWJlcihTdHJpbmc6OmZvcm1hdCgi
JTAzZCIsIHZhbHVlKSk7Ci0gICAgcmV0dXJuIGxvY2FsaXplci5jb252ZXJ0VG9Mb2NhbGl6ZWRO
dW1iZXIoU3RyaW5nOjpmb3JtYXQoIiUwMmQiLCB2YWx1ZSkpOworICAgICAgICByZXR1cm4gbG9j
YWxlLmNvbnZlcnRUb0xvY2FsaXplZE51bWJlcihTdHJpbmc6OmZvcm1hdCgiJTAzZCIsIHZhbHVl
KSk7CisgICAgcmV0dXJuIGxvY2FsZS5jb252ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIoU3RyaW5nOjpm
b3JtYXQoIiUwMmQiLCB2YWx1ZSkpOwogfQogCiB2b2lkIERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxl
bWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBrZXlib2FyZEV2ZW50KQpA
QCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50OjpoYW5k
bGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGtleWJvYXJkRXZlCiAgICAgRE9NVGltZVN0
YW1wIGRlbHRhID0ga2V5Ym9hcmRFdmVudC0+dGltZVN0YW1wKCkgLSBtX2xhc3REaWdpdENoYXJU
aW1lOwogICAgIG1fbGFzdERpZ2l0Q2hhclRpbWUgPSAwOwogCi0gICAgU3RyaW5nIG51bWJlciA9
IGxvY2FsaXplckZvck93bmVyKCkuY29udmVydEZyb21Mb2NhbGl6ZWROdW1iZXIoU3RyaW5nKCZj
aGFyQ29kZSwgMSkpOworICAgIFN0cmluZyBudW1iZXIgPSBsb2NhbGVGb3JPd25lcigpLmNvbnZl
cnRGcm9tTG9jYWxpemVkTnVtYmVyKFN0cmluZygmY2hhckNvZGUsIDEpKTsKICAgICBjb25zdCBp
bnQgZGlnaXQgPSBudW1iZXJbMF0gLSAnMCc7CiAgICAgaWYgKGRpZ2l0IDwgMCB8fCBkaWdpdCA+
IDkpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NSw5ICsxNDUsOSBAQCBib29sIERhdGVUaW1lTnVt
ZXJpY0ZpZWxkRWxlbWVudDo6aGFzVmFsdWUoKSBjb25zdAogICAgIHJldHVybiBtX2hhc1ZhbHVl
OwogfQogCi1Mb2NhbGl6ZXImIERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6bG9jYWxpemVy
Rm9yT3duZXIoKSBjb25zdAorTG9jYWxlJiBEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQ6Omxv
Y2FsZUZvck93bmVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQoKS0+Z2V0Q2FjaGVk
TG9jYWxpemVyKGxvY2FsZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIGRvY3VtZW50KCktPmdl
dENhY2hlZExvY2FsZShsb2NhbGVJZGVudGlmaWVyKCkpOwogfQogCiBpbnQgRGF0ZVRpbWVOdW1l
cmljRmllbGRFbGVtZW50OjptYXhpbXVtKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmgKaW5kZXggMDBl
ZWVmMDI0OWY5Mjc5ZWVlMjAzOTYyMjUyN2U3MmM0ZjcyOWU0ZC4uNzgxMWViYWRjZmU0ZTJiYzky
NzY3N2E2MTgxZWY2NjE4ZjA5NjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmgKQEAgLTgwLDcgKzgwLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0IE9WRVJSSURFIEZJ
TkFMOwogCiAgICAgU3RyaW5nIGZvcm1hdFZhbHVlKGludCkgY29uc3Q7Ci0gICAgTG9jYWxpemVy
JiBsb2NhbGl6ZXJGb3JPd25lcigpIGNvbnN0OworICAgIExvY2FsZSYgbG9jYWxlRm9yT3duZXIo
KSBjb25zdDsKIAogICAgIERPTVRpbWVTdGFtcCBtX2xhc3REaWdpdENoYXJUaW1lOwogICAgIGNv
bnN0IFN0cmluZyBtX3BsYWNlaG9sZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlUG9wdXBDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ2xpZW50
LmgKaW5kZXggZDBmYjRiYjU2ZjA0ODU1NDVhNGQ1NmQzZjIzYjhjYzNmYTBhOGMyNi4uMzkxYzhm
ODNlN2NiYWY1MjhhMDUwMjI0NzI2ZThmMzMyMDQxOWY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlUG9wdXBDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VQb3B1cENsaWVudC5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIERvY3VtZW50V3JpdGVyOwotY2xhc3MgTG9jYWxpemVyOworY2xhc3MgTG9jYWxlOwog
CiBjbGFzcyBQYWdlUG9wdXBDbGllbnQgewogcHVibGljOgpAQCAtNTMsOCArNTMsOCBAQCBwdWJs
aWM6CiAgICAgLy8gIC0gd2luZG93LnNldFZhbHVlQW5kQ2xvc2VQb3B1cChudW1iZXIsIHN0cmlu
ZykuCiAgICAgdmlydHVhbCB2b2lkIHdyaXRlRG9jdW1lbnQoRG9jdW1lbnRXcml0ZXImKSA9IDA7
CiAKLSAgICAvLyBSZXR1cm5zIGEgTG9jYWxpemVyIG9iamVjdCBhc3NvY2lhdGVkIHRvIHRoZSBj
bGllbnQuCi0gICAgdmlydHVhbCBMb2NhbGl6ZXImIGxvY2FsaXplcigpID0gMDsKKyAgICAvLyBS
ZXR1cm5zIGEgTG9jYWxlIG9iamVjdCBhc3NvY2lhdGVkIHRvIHRoZSBjbGllbnQuCisgICAgdmly
dHVhbCBMb2NhbGUmIGxvY2FsZSgpID0gMDsKIAogICAgIC8vIFRoaXMgaXMgY2FsbGVkIGJ5IHRo
ZSBjb250ZW50IEhUTUwgb2YgYSBQYWdlUG9wdXAuCiAgICAgLy8gQW4gaW1wbGVtZW50YXRpb24g
b2YgdGhpcyBmdW5jdGlvbiBzaG91bGQgY2FsbCBDaHJvbWVDbGllbnQ6OmNsb3NlUGFnZVBvcHVw
KCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDb250cm9sbGVyLmNwcAppbmRleCA5
MTNhMmY4YjRjZDIwODZiZTQ5NjhmM2MzNTgxODI2YTRhMGM1MjIzLi5kYWNlNzQyMDMwMTlkNWFi
M2QzNjA4YzVkYmQ4NDI1NDM2ZjAyODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VQb3B1cENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBv
cHVwQ29udHJvbGxlci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBQYWdlUG9wdXBDb250cm9s
bGVyOjpzZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW50IG51bVZhbHVlLCBjb25zdCBTdHJpbmcmIHN0
cmkKIFN0cmluZyBQYWdlUG9wdXBDb250cm9sbGVyOjpsb2NhbGl6ZU51bWJlclN0cmluZyhjb25z
dCBTdHJpbmcmIG51bWJlclN0cmluZykKIHsKICAgICBpZiAobV9wb3B1cENsaWVudCkKLSAgICAg
ICAgcmV0dXJuIG1fcG9wdXBDbGllbnQtPmxvY2FsaXplcigpLmNvbnZlcnRUb0xvY2FsaXplZE51
bWJlcihudW1iZXJTdHJpbmcpOworICAgICAgICByZXR1cm4gbV9wb3B1cENsaWVudC0+bG9jYWxl
KCkuY29udmVydFRvTG9jYWxpemVkTnVtYmVyKG51bWJlclN0cmluZyk7CiAgICAgcmV0dXJuIG51
bWJlclN0cmluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9Mb2NhbGVJQ1UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1Uu
Y3BwCmluZGV4IGU1MTRjOTE4YzRiN2I3YmUxMDVkOGE5YzNmZTU5N2EwMDg0ODIxMGYuLjlhNGYy
MTk5YzE2YmQ5MmM3OTFmMzkzNDliM2IzZjA5MTNkNjNmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPExvY2FsaXplcj4g
TG9jYWxpemVyOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCitQYXNzT3duUHRy
PExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiB7CiAg
ICAgcmV0dXJuIExvY2FsZUlDVTo6Y3JlYXRlKGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKIH0KQEAgLTExMiw3ICsxMTIsNyBAQCBTdHJpbmcgTG9jYWxlSUNVOjpkZWNpbWFsVGV4dEF0
dHJpYnV0ZShVTnVtYmVyRm9ybWF0VGV4dEF0dHJpYnV0ZSB0YWcpCiAgICAgcmV0dXJuIFN0cmlu
Zzo6YWRvcHQoYnVmZmVyKTsKIH0KIAotdm9pZCBMb2NhbGVJQ1U6OmluaXRpYWxpemVMb2NhbGl6
ZXJEYXRhKCkKK3ZvaWQgTG9jYWxlSUNVOjppbml0aWFsaXplTG9jYWxlRGF0YSgpCiB7CiAgICAg
aWYgKG1fZGlkQ3JlYXRlRGVjaW1hbEZvcm1hdCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM2LDcg
KzEzNiw3IEBAIHZvaWQgTG9jYWxlSUNVOjppbml0aWFsaXplTG9jYWxpemVyRGF0YSgpCiAgICAg
c3ltYm9scy5hcHBlbmQoZGVjaW1hbFN5bWJvbChVTlVNX0RFQ0lNQUxfU0VQQVJBVE9SX1NZTUJP
TCkpOwogICAgIHN5bWJvbHMuYXBwZW5kKGRlY2ltYWxTeW1ib2woVU5VTV9HUk9VUElOR19TRVBB
UkFUT1JfU1lNQk9MKSk7CiAgICAgQVNTRVJUKHN5bWJvbHMuc2l6ZSgpID09IERlY2ltYWxTeW1i
b2xzU2l6ZSk7Ci0gICAgc2V0TG9jYWxpemVyRGF0YShzeW1ib2xzLCBkZWNpbWFsVGV4dEF0dHJp
YnV0ZShVTlVNX1BPU0lUSVZFX1BSRUZJWCksIGRlY2ltYWxUZXh0QXR0cmlidXRlKFVOVU1fUE9T
SVRJVkVfU1VGRklYKSwgZGVjaW1hbFRleHRBdHRyaWJ1dGUoVU5VTV9ORUdBVElWRV9QUkVGSVgp
LCBkZWNpbWFsVGV4dEF0dHJpYnV0ZShVTlVNX05FR0FUSVZFX1NVRkZJWCkpOworICAgIHNldExv
Y2FsZURhdGEoc3ltYm9scywgZGVjaW1hbFRleHRBdHRyaWJ1dGUoVU5VTV9QT1NJVElWRV9QUkVG
SVgpLCBkZWNpbWFsVGV4dEF0dHJpYnV0ZShVTlVNX1BPU0lUSVZFX1NVRkZJWCksIGRlY2ltYWxU
ZXh0QXR0cmlidXRlKFVOVU1fTkVHQVRJVkVfUFJFRklYKSwgZGVjaW1hbFRleHRBdHRyaWJ1dGUo
VU5VTV9ORUdBVElWRV9TVUZGSVgpKTsKIH0KIAogYm9vbCBMb2NhbGVJQ1U6OmluaXRpYWxpemVT
aG9ydERhdGVGb3JtYXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9Mb2NhbGVJQ1UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmgK
aW5kZXggOWY0OGQ5Njc5ZTkwMzg3OWU2ZTRiNTVjNjZiOTQ4MDg5MGM1NjM2NS4uYTVhNGZlZWNk
YjMyNTYxYTQ5MGUzNzY1M2I1ZmZlOGZhOWY3NThjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0xvY2FsZUlDVS5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogLy8gV2Ugc2hvdWxkIHVzZSB0aGlzIGNsYXNzIG9ubHkgZm9yIExvY2FsaXplZE51bWJlcklD
VS5jcHAsIExvY2FsaXplZERhdGVJQ1UuY3BwLAogLy8gYW5kIExvY2FsaXplZE51bWJlcklDVVRl
c3QuY3BwLgotY2xhc3MgTG9jYWxlSUNVIDogcHVibGljIExvY2FsaXplciB7CitjbGFzcyBMb2Nh
bGVJQ1UgOiBwdWJsaWMgTG9jYWxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxM
b2NhbGVJQ1U+IGNyZWF0ZShjb25zdCBjaGFyKiBsb2NhbGVTdHJpbmcpOwogICAgIHZpcnR1YWwg
fkxvY2FsZUlDVSgpOwpAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IExv
Y2FsZUlDVShjb25zdCBjaGFyKik7CiAgICAgU3RyaW5nIGRlY2ltYWxTeW1ib2woVU51bWJlckZv
cm1hdFN5bWJvbCk7CiAgICAgU3RyaW5nIGRlY2ltYWxUZXh0QXR0cmlidXRlKFVOdW1iZXJGb3Jt
YXRUZXh0QXR0cmlidXRlKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUxvY2FsaXplckRh
dGEoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUxvY2FsZURhdGEoKSBP
VkVSUklERTsKIAogICAgIGJvb2wgZGV0ZWN0U2lnbkFuZEdldERpZ2l0UmFuZ2UoY29uc3QgU3Ry
aW5nJiBpbnB1dCwgYm9vbCYgaXNOZWdhdGl2ZSwgdW5zaWduZWQmIHN0YXJ0SW5kZXgsIHVuc2ln
bmVkJiBlbmRJbmRleCk7CiAgICAgdW5zaWduZWQgbWF0Y2hlZERlY2ltYWxTeW1ib2xJbmRleChj
b25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCYgcG9zaXRpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKaW5kZXggNTU0NWIzYmM1Y2Q3ZDRjODdhOGFi
MjBkZWFmOTViNTY4ZjUyYjJiYy4uMzVhZmNmN2IxMDVkOTFkZGM2ZWM1NjAwNWQ4ZTdlNTYxM2Fj
MGIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCkBA
IC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBMb2NhbGVO
b25lIDogcHVibGljIExvY2FsaXplciB7CitjbGFzcyBMb2NhbGVOb25lIDogcHVibGljIExvY2Fs
ZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TG9jYWxlTm9uZSgpOwogCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgdm9pZCBpbml0aWFsaXplTG9jYWxpemVyRGF0YSgpIE9WRVJSSURFIEZJTkFMOwor
ICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplTG9jYWxlRGF0YSgpIE9WRVJSSURFIEZJTkFMOwog
ICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlRGF0ZVRpbWUoY29uc3QgU3RyaW5nJiwgRGF0ZUNvbXBv
bmVudHM6OlR5cGUpIE9WRVJSSURFOwogI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCiAgICAg
dmlydHVhbCBTdHJpbmcgZGF0ZUZvcm1hdFRleHQoKSBPVkVSUklERTsKQEAgLTYyLDcgKzYyLDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotUGFzc093blB0cjxMb2NhbGl6ZXI+IExvY2FsaXpl
cjo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYpCitQYXNzT3duUHRyPExvY2FsZT4gTG9jYWxl
OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJikKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IExvY2FsZU5vbmUoKSk7CiB9CkBAIC03MSw3ICs3MSw3IEBAIExvY2FsZU5vbmU6On5Mb2NhbGVO
b25lKCkKIHsKIH0KIAotdm9pZCBMb2NhbGVOb25lOjppbml0aWFsaXplTG9jYWxpemVyRGF0YSgp
Cit2b2lkIExvY2FsZU5vbmU6OmluaXRpYWxpemVMb2NhbGVEYXRhKCkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVXaW4uY3BwCmluZGV4IGJiMWNlYTdmNWVlMTlk
NDI1MjljN2Y2N2U3MjcwYWE0ZjQyMzBiZDQuLjY2ZWZjMjU3ODA1OTY0NDk2ZGRmNDQyMmIwZTU4
MWM5MGFjOThiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9j
YWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVdpbi5j
cHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIExDSUQgTENJREZyb21Mb2NhbGUoY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbGUpCiAgICAgcmV0dXJuIGxjaWQ7CiB9CiAKLVBhc3NPd25QdHI8TG9j
YWxpemVyPiBMb2NhbGl6ZXI6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKK1Bh
c3NPd25QdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
ZSkKIHsKICAgICByZXR1cm4gTG9jYWxlV2luOjpjcmVhdGUoTENJREZyb21Mb2NhbGUobG9jYWxl
KSk7CiB9CkBAIC03NTEsNyArNzUxLDcgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIExvY2FsZVdp
bjo6dGltZUFNUE1MYWJlbHMoKQogfQogI2VuZGlmCiAKLXZvaWQgTG9jYWxlV2luOjppbml0aWFs
aXplTG9jYWxpemVyRGF0YSgpCit2b2lkIExvY2FsZVdpbjo6aW5pdGlhbGl6ZUxvY2FsZURhdGEo
KQogewogICAgIGlmIChtX2RpZEluaXRpYWxpemVOdW1iZXJEYXRhKQogICAgICAgICByZXR1cm47
CkBAIC04MTksNyArODE5LDcgQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVMb2NhbGl6ZXJE
YXRhKCkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIG1fZGlkSW5pdGlhbGl6ZU51bWJlckRh
dGEgPSB0cnVlOwotICAgIHNldExvY2FsaXplckRhdGEoc3ltYm9scywgZW1wdHlTdHJpbmcoKSwg
ZW1wdHlTdHJpbmcoKSwgbmVnYXRpdmVQcmVmaXgsIG5lZ2F0aXZlU3VmZml4KTsKKyAgICBzZXRM
b2NhbGVEYXRhKHN5bWJvbHMsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIG5lZ2F0aXZl
UHJlZml4LCBuZWdhdGl2ZVN1ZmZpeCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0xvY2FsZVdpbi5oCmluZGV4IDE4ODkyOTZhYjIzYmI5YmZmNWRjOTA5N2QxZGI5ODIzYzg0
MTBhOTcuLjQ2NzE0NDUyYTFjNGI0NjgwYzQ2ZmRlOTg3MGQzYmZlYWZhNTY3OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlV2luLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVXaW4uaApAQCAtNDIsNyArNDIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEYXRlQ29tcG9uZW50czsKIHN0cnVjdCBEYXRlRm9ybWF0
VG9rZW47CiAKLWNsYXNzIExvY2FsZVdpbiA6IHB1YmxpYyBMb2NhbGl6ZXIgeworY2xhc3MgTG9j
YWxlV2luIDogcHVibGljIExvY2FsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8
TG9jYWxlV2luPiBjcmVhdGUoTENJRCk7CiAgICAgfkxvY2FsZVdpbigpOwpAQCAtOTMsOCArOTMs
OCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCiAgICAgdm9pZCBlbnN1
cmVXZWVrRGF5U2hvcnRMYWJlbHMoKTsKICNlbmRpZgotICAgIC8vIExvY2FsaXplciBmdW5jdGlv
bjoKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUxvY2FsaXplckRhdGEoKSBPVkVSUklERTsK
KyAgICAvLyBMb2NhbGUgZnVuY3Rpb246CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVMb2Nh
bGVEYXRhKCkgT1ZFUlJJREU7CiAKICAgICBMQ0lEIG1fbGNpZDsKICAgICBpbnQgbV9iYXNlWWVh
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2Nh
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAK
aW5kZXggMmQ5NDVjMzdkMGE5NzI3OTY1ZWNhZjhiYmFiMmIwZjViMjRkZWQ3YS4uYmRmNjQ1Yjcy
ZGI5YTZlZTc3YWQyYzk0YTBiMmQ1YTg5MjRjOTY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3Mg
RGF0ZVRpbWVTdHJpbmdCdWlsZGVyIDogcHJpdmF0ZSBEYXRlVGltZUZvcm1hdDo6VG9rZW5IYW5k
bGVyIHsKIAogcHVibGljOgogICAgIC8vIFRoZSBhcmd1bWVudCBvYmplY3RzIG11c3QgYmUgYWxp
dmUgdW50aWwgdGhpcyBvYmplY3QgZGllcy4KLSAgICBEYXRlVGltZVN0cmluZ0J1aWxkZXIoTG9j
YWxpemVyJiwgY29uc3QgRGF0ZUNvbXBvbmVudHMmKTsKKyAgICBEYXRlVGltZVN0cmluZ0J1aWxk
ZXIoTG9jYWxlJiwgY29uc3QgRGF0ZUNvbXBvbmVudHMmKTsKIAogICAgIGJvb2wgYnVpbGQoY29u
c3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIHRvU3RyaW5nKCk7CkBAIC01NywxMSArNTcsMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGFwcGVuZE51bWJlcihpbnQgbnVtYmVyLCBzaXplX3Qgd2lkdGgp
OwogCiAgICAgU3RyaW5nQnVpbGRlciBtX2J1aWxkZXI7Ci0gICAgTG9jYWxpemVyJiBtX2xvY2Fs
aXplcjsKKyAgICBMb2NhbGUmIG1fbG9jYWxpemVyOwogICAgIGNvbnN0IERhdGVDb21wb25lbnRz
JiBtX2RhdGU7CiB9OwogCi1EYXRlVGltZVN0cmluZ0J1aWxkZXI6OkRhdGVUaW1lU3RyaW5nQnVp
bGRlcihMb2NhbGl6ZXImIGxvY2FsaXplciwgY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGUpCitE
YXRlVGltZVN0cmluZ0J1aWxkZXI6OkRhdGVUaW1lU3RyaW5nQnVpbGRlcihMb2NhbGUmIGxvY2Fs
aXplciwgY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGUpCiAgICAgOiBtX2xvY2FsaXplcihsb2Nh
bGl6ZXIpCiAgICAgLCBtX2RhdGUoZGF0ZSkKIHsKQEAgLTE1OSwxMSArMTU5LDExIEBAIFN0cmlu
ZyBEYXRlVGltZVN0cmluZ0J1aWxkZXI6OnRvU3RyaW5nKCkKIAogI2VuZGlmCiAKLUxvY2FsaXpl
cjo6fkxvY2FsaXplcigpCitMb2NhbGU6On5Mb2NhbGUoKQogewogfQogCi12b2lkIExvY2FsaXpl
cjo6c2V0TG9jYWxpemVyRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nLCBEZWNpbWFsU3ltYm9sc1Np
emU+JiBzeW1ib2xzLCBjb25zdCBTdHJpbmcmIHBvc2l0aXZlUHJlZml4LCBjb25zdCBTdHJpbmcm
IHBvc2l0aXZlU3VmZml4LCBjb25zdCBTdHJpbmcmIG5lZ2F0aXZlUHJlZml4LCBjb25zdCBTdHJp
bmcmIG5lZ2F0aXZlU3VmZml4KQordm9pZCBMb2NhbGU6OnNldExvY2FsZURhdGEoY29uc3QgVmVj
dG9yPFN0cmluZywgRGVjaW1hbFN5bWJvbHNTaXplPiYgc3ltYm9scywgY29uc3QgU3RyaW5nJiBw
b3NpdGl2ZVByZWZpeCwgY29uc3QgU3RyaW5nJiBwb3NpdGl2ZVN1ZmZpeCwgY29uc3QgU3RyaW5n
JiBuZWdhdGl2ZVByZWZpeCwgY29uc3QgU3RyaW5nJiBuZWdhdGl2ZVN1ZmZpeCkKIHsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHN5bWJvbHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNT
RVJUKCFzeW1ib2xzW2ldLmlzRW1wdHkoKSk7CkBAIC0xNzQsMTMgKzE3NCwxMyBAQCB2b2lkIExv
Y2FsaXplcjo6c2V0TG9jYWxpemVyRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nLCBEZWNpbWFsU3lt
Ym9sc1NpemU+JiBzeW1ibwogICAgIG1fbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2ZVByZWZpeDsK
ICAgICBtX25lZ2F0aXZlU3VmZml4ID0gbmVnYXRpdmVTdWZmaXg7CiAgICAgQVNTRVJUKCFtX3Bv
c2l0aXZlUHJlZml4LmlzRW1wdHkoKSB8fCAhbV9wb3NpdGl2ZVN1ZmZpeC5pc0VtcHR5KCkgfHwg
IW1fbmVnYXRpdmVQcmVmaXguaXNFbXB0eSgpIHx8ICFtX25lZ2F0aXZlU3VmZml4LmlzRW1wdHko
KSk7Ci0gICAgbV9oYXNMb2NhbGl6ZXJEYXRhID0gdHJ1ZTsKKyAgICBtX2hhc0xvY2FsZURhdGEg
PSB0cnVlOwogfQogCi1TdHJpbmcgTG9jYWxpemVyOjpjb252ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIo
Y29uc3QgU3RyaW5nJiBpbnB1dCkKK1N0cmluZyBMb2NhbGU6OmNvbnZlcnRUb0xvY2FsaXplZE51
bWJlcihjb25zdCBTdHJpbmcmIGlucHV0KQogewotICAgIGluaXRpYWxpemVMb2NhbGl6ZXJEYXRh
KCk7Ci0gICAgaWYgKCFtX2hhc0xvY2FsaXplckRhdGEgfHwgaW5wdXQuaXNFbXB0eSgpKQorICAg
IGluaXRpYWxpemVMb2NhbGVEYXRhKCk7CisgICAgaWYgKCFtX2hhc0xvY2FsZURhdGEgfHwgaW5w
dXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gaW5wdXQ7CiAKICAgICB1bnNpZ25lZCBpID0g
MDsKQEAgLTIzNSw3ICsyMzUsNyBAQCBzdGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYg
dGV4dCwgdW5zaWduZWQgcG9zaXRpb24sIGNvbnN0IFN0cmluZyYgcGFydCkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBMb2NhbGl6ZXI6OmRldGVjdFNpZ25BbmRHZXREaWdpdFJhbmdlKGNv
bnN0IFN0cmluZyYgaW5wdXQsIGJvb2wmIGlzTmVnYXRpdmUsIHVuc2lnbmVkJiBzdGFydEluZGV4
LCB1bnNpZ25lZCYgZW5kSW5kZXgpCitib29sIExvY2FsZTo6ZGV0ZWN0U2lnbkFuZEdldERpZ2l0
UmFuZ2UoY29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCYgaXNOZWdhdGl2ZSwgdW5zaWduZWQmIHN0
YXJ0SW5kZXgsIHVuc2lnbmVkJiBlbmRJbmRleCkKIHsKICAgICBzdGFydEluZGV4ID0gMDsKICAg
ICBlbmRJbmRleCA9IGlucHV0Lmxlbmd0aCgpOwpAQCAtMjYzLDcgKzI2Myw3IEBAIGJvb2wgTG9j
YWxpemVyOjpkZXRlY3RTaWduQW5kR2V0RGlnaXRSYW5nZShjb25zdCBTdHJpbmcmIGlucHV0LCBi
b29sJiBpc05lZ2F0aXZlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXVuc2lnbmVkIExvY2FsaXpl
cjo6bWF0Y2hlZERlY2ltYWxTeW1ib2xJbmRleChjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25l
ZCYgcG9zaXRpb24pCit1bnNpZ25lZCBMb2NhbGU6Om1hdGNoZWREZWNpbWFsU3ltYm9sSW5kZXgo
Y29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQmIHBvc2l0aW9uKQogewogICAgIGZvciAodW5z
aWduZWQgc3ltYm9sSW5kZXggPSAwOyBzeW1ib2xJbmRleCA8IERlY2ltYWxTeW1ib2xzU2l6ZTsg
KytzeW1ib2xJbmRleCkgewogICAgICAgICBpZiAobV9kZWNpbWFsU3ltYm9sc1tzeW1ib2xJbmRl
eF0ubGVuZ3RoKCkgJiYgbWF0Y2hlcyhpbnB1dCwgcG9zaXRpb24sIG1fZGVjaW1hbFN5bWJvbHNb
c3ltYm9sSW5kZXhdKSkgewpAQCAtMjc0LDExICsyNzQsMTEgQEAgdW5zaWduZWQgTG9jYWxpemVy
OjptYXRjaGVkRGVjaW1hbFN5bWJvbEluZGV4KGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVk
JiBwb3MKICAgICByZXR1cm4gRGVjaW1hbFN5bWJvbHNTaXplOwogfQogCi1TdHJpbmcgTG9jYWxp
emVyOjpjb252ZXJ0RnJvbUxvY2FsaXplZE51bWJlcihjb25zdCBTdHJpbmcmIGxvY2FsaXplZCkK
K1N0cmluZyBMb2NhbGU6OmNvbnZlcnRGcm9tTG9jYWxpemVkTnVtYmVyKGNvbnN0IFN0cmluZyYg
bG9jYWxpemVkKQogewotICAgIGluaXRpYWxpemVMb2NhbGl6ZXJEYXRhKCk7CisgICAgaW5pdGlh
bGl6ZUxvY2FsZURhdGEoKTsKICAgICBTdHJpbmcgaW5wdXQgPSBsb2NhbGl6ZWQuc3RyaXBXaGl0
ZVNwYWNlKCk7Ci0gICAgaWYgKCFtX2hhc0xvY2FsaXplckRhdGEgfHwgaW5wdXQuaXNFbXB0eSgp
KQorICAgIGlmICghbV9oYXNMb2NhbGVEYXRhIHx8IGlucHV0LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIGlucHV0OwogCiAgICAgYm9vbCBpc05lZ2F0aXZlOwpAQCAtMzA5LDEzICszMDksMTMg
QEAgU3RyaW5nIExvY2FsaXplcjo6Y29udmVydEZyb21Mb2NhbGl6ZWROdW1iZXIoY29uc3QgU3Ry
aW5nJiBsb2NhbGl6ZWQpCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfTVVMVElQTEVfRklFTERTX1VJ
KQotU3RyaW5nIExvY2FsaXplcjo6bG9jYWxpemVkRGVjaW1hbFNlcGFyYXRvcigpCitTdHJpbmcg
TG9jYWxlOjpsb2NhbGl6ZWREZWNpbWFsU2VwYXJhdG9yKCkKIHsKLSAgICBpbml0aWFsaXplTG9j
YWxpemVyRGF0YSgpOworICAgIGluaXRpYWxpemVMb2NhbGVEYXRhKCk7CiAgICAgcmV0dXJuIG1f
ZGVjaW1hbFN5bWJvbHNbRGVjaW1hbFNlcGFyYXRvckluZGV4XTsKIH0KIAotU3RyaW5nIExvY2Fs
aXplcjo6ZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kcygpCitTdHJpbmcgTG9jYWxlOjpkYXRlVGlt
ZUZvcm1hdFdpdGhTZWNvbmRzKCkKIHsKICAgICBpZiAoIW1fZGF0ZVRpbWVGb3JtYXRXaXRoU2Vj
b25kcy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG1fZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25k
czsKQEAgLTMyOCw3ICszMjgsNyBAQCBTdHJpbmcgTG9jYWxpemVyOjpkYXRlVGltZUZvcm1hdFdp
dGhTZWNvbmRzKCkKICAgICByZXR1cm4gbV9kYXRlVGltZUZvcm1hdFdpdGhTZWNvbmRzOwogfQog
Ci1TdHJpbmcgTG9jYWxpemVyOjpkYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzKCkKK1N0cmlu
ZyBMb2NhbGU6OmRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHMoKQogewogICAgIGlmICghbV9k
YXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbV9k
YXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzOwpAQCAtMzQyLDcgKzM0Miw3IEBAIFN0cmluZyBM
b2NhbGl6ZXI6OmRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHMoKQogfQogI2VuZGlmCiAKLVN0
cmluZyBMb2NhbGl6ZXI6OmZvcm1hdERhdGVUaW1lKGNvbnN0IERhdGVDb21wb25lbnRzJiBkYXRl
LCBGb3JtYXRUeXBlIGZvcm1hdFR5cGUpCitTdHJpbmcgTG9jYWxlOjpmb3JtYXREYXRlVGltZShj
b25zdCBEYXRlQ29tcG9uZW50cyYgZGF0ZSwgRm9ybWF0VHlwZSBmb3JtYXRUeXBlKQogewogI2lm
IEVOQUJMRShJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUkpCiAgICAgaWYgKGRhdGUudHlwZSgpICE9
IERhdGVDb21wb25lbnRzOjpUaW1lICYmIGRhdGUudHlwZSgpICE9IERhdGVDb21wb25lbnRzOjpE
YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxv
Y2FsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5oCmlu
ZGV4IDUzNWYwMWYxYTcxNTI0MzBiMmM3NmE1MTU3ZDMyZDkzMmEyYjAxZWIuLmM2ZWE5YmM4YWIz
NmU3YTJjOWY4MzkzMTU5ODY4ZGIyMGU3OTNlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmgKQEAgLTIzLDggKzIzLDggQEAKICAqIERBTUFHRS4K
ICAqLwogCi0jaWZuZGVmIExvY2FsaXplcl9oCi0jZGVmaW5lIExvY2FsaXplcl9oCisjaWZuZGVm
IFBsYXRmb3JtTG9jYWxlX2gKKyNkZWZpbmUgUGxhdGZvcm1Mb2NhbGVfaAogCiAjaW5jbHVkZSAi
RGF0ZUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgpAQCAtMzMsMTUgKzMzLDE1
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTG9jYWxpemVyIHsKLSAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShMb2NhbGl6ZXIpOworY2xhc3MgTG9jYWxlIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShMb2NhbGUpOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
TG9jYWxpemVyPiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKTsK
LSAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbGl6ZXI+IGNyZWF0ZURlZmF1bHQoKTsKKyAgICBz
dGF0aWMgUGFzc093blB0cjxMb2NhbGU+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
ZUlkZW50aWZpZXIpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPExvY2FsZT4gY3JlYXRlRGVmYXVs
dCgpOwogCiAgICAgLy8gQ29udmVydHMgdGhlIHNwZWNpZmllZCBudW1iZXIgc3RyaW5nIHRvIGFu
b3RoZXIgbnVtYmVyIHN0cmluZyBsb2NhbGl6ZWQKLSAgICAvLyBmb3IgdGhpcyBMb2NhbGl6ZXIg
bG9jYWxlLiBUaGUgaW5wdXQgc3RyaW5nIG11c3QgY29uZm9ybSB0byBIVE1MCisgICAgLy8gZm9y
IHRoaXMgTG9jYWxlIGxvY2FsZS4gVGhlIGlucHV0IHN0cmluZyBtdXN0IGNvbmZvcm0gdG8gSFRN
TAogICAgIC8vIGZsb2F0aW5nLXBvaW50IG51bWJlcnMsIGFuZCBpcyBub3QgZW1wdHkuCiAgICAg
U3RyaW5nIGNvbnZlcnRUb0xvY2FsaXplZE51bWJlcihjb25zdCBTdHJpbmcmKTsKIApAQCAtMTI1
LDcgKzEyNSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gUGFyc2VzIGEgc3RyaW5nIHJl
cHJlc2VudGF0aW9uIG9mIGEgZGF0ZS90aW1lIHN0cmluZyBsb2NhbGl6ZWQKLSAgICAvLyBmb3Ig
dGhpcyBMb2NhbGl6ZXIgbG9jYWxlLiBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIG5vdCB2YWxpZCBv
cgorICAgIC8vIGZvciB0aGlzIExvY2FsZSBsb2NhbGUuIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMg
bm90IHZhbGlkIG9yCiAgICAgLy8gYW4gaW1wbGVtZW50YXRpb24gZG9lc24ndCBzdXBwb3J0IGxv
Y2FsaXplZCBkYXRlcywgdGhpcwogICAgIC8vIGZ1bmN0aW9uIHJldHVybnMgTmFOLiBJZiB0aGUg
aW5wdXQgc3RyaW5nIGlzIHZhbGlkIHRoaXMKICAgICAvLyBmdW5jdGlvbiByZXR1cm5zIHRoZSBu
dW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEKQEAgLTEzOSw3ICsxMzksNyBA
QCBwdWJsaWM6CiAgICAgLy8gbG9jYWxpemVkIGRhdGVzIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0
dXJuIGFuIGVtcHR5IHN0cmluZy4KICAgICBTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgRGF0
ZUNvbXBvbmVudHMmLCBGb3JtYXRUeXBlID0gRm9ybWF0VHlwZVVuc3BlY2lmaWVkKTsKIAotICAg
IHZpcnR1YWwgfkxvY2FsaXplcigpOworICAgIHZpcnR1YWwgfkxvY2FsZSgpOwogCiBwcm90ZWN0
ZWQ6CiAgICAgZW51bSB7CkBAIC0xNTQsOSArMTU0LDkgQEAgcHJvdGVjdGVkOgogICAgIFN0cmlu
ZyBtX2RhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHM7CiAjZW5kaWYKIAotICAgIExvY2FsaXpl
cigpIDogbV9oYXNMb2NhbGl6ZXJEYXRhKGZhbHNlKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaW5p
dGlhbGl6ZUxvY2FsaXplckRhdGEoKSA9IDA7Ci0gICAgdm9pZCBzZXRMb2NhbGl6ZXJEYXRhKGNv
bnN0IFZlY3RvcjxTdHJpbmcsIERlY2ltYWxTeW1ib2xzU2l6ZT4mLCBjb25zdCBTdHJpbmcmIHBv
c2l0aXZlUHJlZml4LCBjb25zdCBTdHJpbmcmIHBvc2l0aXZlU3VmZml4LCBjb25zdCBTdHJpbmcm
IG5lZ2F0aXZlUHJlZml4LCBjb25zdCBTdHJpbmcmIG5lZ2F0aXZlU3VmZml4KTsKKyAgICBMb2Nh
bGUoKSA6IG1faGFzTG9jYWxlRGF0YShmYWxzZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGluaXRp
YWxpemVMb2NhbGVEYXRhKCkgPSAwOworICAgIHZvaWQgc2V0TG9jYWxlRGF0YShjb25zdCBWZWN0
b3I8U3RyaW5nLCBEZWNpbWFsU3ltYm9sc1NpemU+JiwgY29uc3QgU3RyaW5nJiBwb3NpdGl2ZVBy
ZWZpeCwgY29uc3QgU3RyaW5nJiBwb3NpdGl2ZVN1ZmZpeCwgY29uc3QgU3RyaW5nJiBuZWdhdGl2
ZVByZWZpeCwgY29uc3QgU3RyaW5nJiBuZWdhdGl2ZVN1ZmZpeCk7CiAKIHByaXZhdGU6CiAgICAg
Ym9vbCBkZXRlY3RTaWduQW5kR2V0RGlnaXRSYW5nZShjb25zdCBTdHJpbmcmIGlucHV0LCBib29s
JiBpc05lZ2F0aXZlLCB1bnNpZ25lZCYgc3RhcnRJbmRleCwgdW5zaWduZWQmIGVuZEluZGV4KTsK
QEAgLTE2NywxMiArMTY3LDEyIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcG9zaXRpdmVTdWZm
aXg7CiAgICAgU3RyaW5nIG1fbmVnYXRpdmVQcmVmaXg7CiAgICAgU3RyaW5nIG1fbmVnYXRpdmVT
dWZmaXg7Ci0gICAgYm9vbCBtX2hhc0xvY2FsaXplckRhdGE7CisgICAgYm9vbCBtX2hhc0xvY2Fs
ZURhdGE7CiB9OwogCi1pbmxpbmUgUGFzc093blB0cjxMb2NhbGl6ZXI+IExvY2FsaXplcjo6Y3Jl
YXRlRGVmYXVsdCgpCitpbmxpbmUgUGFzc093blB0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlRGVm
YXVsdCgpCiB7Ci0gICAgcmV0dXJuIExvY2FsaXplcjo6Y3JlYXRlKGRlZmF1bHRMYW5ndWFnZSgp
KTsKKyAgICByZXR1cm4gTG9jYWxlOjpjcmVhdGUoZGVmYXVsdExhbmd1YWdlKCkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oCmluZGV4IGQ4
ZGM3ZThhMzFjMThmOTIwMGY4YWQyN2MxYmU0NGJhNjExYmQ5ODMuLmY5MzRlZjExYjUxZWU3NDNi
MDk0NDZlNTE0NDgxNzJiNzk1M2ZkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL0xvY2FsZU1hYy5oCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRGF0ZUNvbXBvbmVudHM7CiAKLWNsYXNzIExvY2FsZU1hYyA6IHB1YmxpYyBMb2Nh
bGl6ZXIgeworY2xhc3MgTG9jYWxlTWFjIDogcHVibGljIExvY2FsZSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NPd25QdHI8TG9jYWxlTWFjPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7CiAgICAg
c3RhdGljIFBhc3NPd25QdHI8TG9jYWxlTWFjPiBjcmVhdGUoTlNMb2NhbGUqKTsKQEAgLTc2LDcg
Kzc2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBMb2NhbGVNYWMoTlNMb2Nh
bGUqKTsKICAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBzaG9ydERhdGVGb3JtYXR0ZXIo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUxvY2FsaXplckRhdGEoKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUxvY2FsZURhdGEoKSBPVkVSUklERTsKIAogICAg
IFJldGFpblB0cjxOU0xvY2FsZT4gbV9sb2NhbGU7CiAgICAgUmV0YWluUHRyPE5TQ2FsZW5kYXI+
IG1fZ3JlZ29yaWFuQ2FsZW5kYXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L21hYy9Mb2NhbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21h
Yy9Mb2NhbGVNYWMubW0KaW5kZXggYzBhZjg1ZGE0ZDkzYmI4YzY0ZjEyZGU4N2ExMzRkY2I2ZmY3
NjMyNS4uOWY5YWE4ZmRiMjFhOTlkOTZkMWJhNmM5ZjM2YzI5NmUyZGM3NDE0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQpAQCAtNjUsNyArNjUs
NyBAQCBzdGF0aWMgTlNMb2NhbGUqIGRldGVybWluZUxvY2FsZShjb25zdCBTdHJpbmcmIGxvY2Fs
ZSkKICAgICByZXR1cm4gW1tOU0xvY2FsZSBhbGxvY10gaW5pdFdpdGhMb2NhbGVJZGVudGlmaWVy
OmxvY2FsZV07CiB9CiAKLVBhc3NPd25QdHI8TG9jYWxpemVyPiBMb2NhbGl6ZXI6OmNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKK1Bhc3NPd25QdHI8TG9jYWxlPiBMb2NhbGU6OmNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKIHsKICAgICByZXR1cm4gTG9jYWxlTWFj
OjpjcmVhdGUoZGV0ZXJtaW5lTG9jYWxlKGxvY2FsZS5zdHJpbmcoKSkpOwogfQpAQCAtMzM0LDcg
KzMzNCw3IEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVNYWM6OnRpbWVBTVBNTGFiZWxz
KCkKIH0KICNlbmRpZgogCi12b2lkIExvY2FsZU1hYzo6aW5pdGlhbGl6ZUxvY2FsaXplckRhdGEo
KQordm9pZCBMb2NhbGVNYWM6OmluaXRpYWxpemVMb2NhbGVEYXRhKCkKIHsKICAgICBpZiAobV9k
aWRJbml0aWFsaXplTnVtYmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzYyLDcgKzM2Miw3
IEBAIHZvaWQgTG9jYWxlTWFjOjppbml0aWFsaXplTG9jYWxpemVyRGF0YSgpCiAgICAgU3RyaW5n
IHBvc2l0aXZlU3VmZml4KFtmb3JtYXR0ZXIuZ2V0KCkgcG9zaXRpdmVTdWZmaXhdKTsKICAgICBT
dHJpbmcgbmVnYXRpdmVQcmVmaXgoW2Zvcm1hdHRlci5nZXQoKSBuZWdhdGl2ZVByZWZpeF0pOwog
ICAgIFN0cmluZyBuZWdhdGl2ZVN1ZmZpeChbZm9ybWF0dGVyLmdldCgpIG5lZ2F0aXZlU3VmZml4
XSk7Ci0gICAgc2V0TG9jYWxpemVyRGF0YShzeW1ib2xzLCBwb3NpdGl2ZVByZWZpeCwgcG9zaXRp
dmVTdWZmaXgsIG5lZ2F0aXZlUHJlZml4LCBuZWdhdGl2ZVN1ZmZpeCk7CisgICAgc2V0TG9jYWxl
RGF0YShzeW1ib2xzLCBwb3NpdGl2ZVByZWZpeCwgcG9zaXRpdmVTdWZmaXgsIG5lZ2F0aXZlUHJl
Zml4LCBuZWdhdGl2ZVN1ZmZpeCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuY3BwCmluZGV4IDMzMGY1OWNl
MjRmY2NiNzc5YjU5NTk2NTYzYjg4M2MyODI3YjE1NGMuLjU3ODk2OTFlOGQ3NTFiYWEwOGZhZTI4
NWMwYWViMTE1OGQ0YTgzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmNwcApAQCAtNTcsNyArNTcsNyBAQCBDb2xv
ckNob29zZXJVSUNvbnRyb2xsZXI6OkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlcihDaHJvbWVDbGll
bnRJbXBsKiBjaHJvbWVDbGllbgogICAgIDogbV9jaHJvbWVDbGllbnQoY2hyb21lQ2xpZW50KQog
ICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9wb3B1cCgwKQotICAgICwgbV9sb2NhbGl6
ZXIoTG9jYWxpemVyOjpjcmVhdGVEZWZhdWx0KCkpCisgICAgLCBtX2xvY2FsZShMb2NhbGU6OmNy
ZWF0ZURlZmF1bHQoKSkKIHsKICAgICBpZiAobV9jbGllbnQtPnNob3VsZFNob3dTdWdnZXN0aW9u
cygpKQogICAgICAgICBvcGVuUG9wdXAoKTsKQEAgLTEzMiw5ICsxMzIsOSBAQCB2b2lkIENvbG9y
Q2hvb3NlclVJQ29udHJvbGxlcjo6d3JpdGVEb2N1bWVudChEb2N1bWVudFdyaXRlciYgd3JpdGVy
KQogICAgIFBhZ2VQb3B1cENsaWVudDo6YWRkU3RyaW5nKCI8L3NjcmlwdD48L2JvZHk+XG4iLCB3
cml0ZXIpOwogfQogCi1Mb2NhbGl6ZXImIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6bG9jYWxp
emVyKCkKK0xvY2FsZSYgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpsb2NhbGUoKQogewotICAg
IHJldHVybiAqbV9sb2NhbGl6ZXI7CisgICAgcmV0dXJuICptX2xvY2FsZTsKIH0KIAogdm9pZCBD
b2xvckNob29zZXJVSUNvbnRyb2xsZXI6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQgbnVtVmFs
dWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oCmluZGV4IDg5Y2QxYTZiN2I0
MTA3MWZkYWFjNzc1YzQ0YjQ4NGQ0MDhjNTVkZTQuLjYwY2VjZmUxOGYyOTcxNmI1OTdhZTAyNTM5
NzcxNTg4MjEzNzk4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nv
bG9yQ2hvb3NlclVJQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBQYWdlUG9wdXBDbGllbnQgZnVuY3Rpb25zOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50
U2l6ZSBjb250ZW50U2l6ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZURvY3Vt
ZW50KFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBXZWJD
b3JlOjpMb2NhbGl6ZXImIGxvY2FsaXplcigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29y
ZTo6TG9jYWxlJiBsb2NhbGUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVB
bmRDbG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGRpZENsb3NlUG9wdXAoKSBPVkVSUklERTsKIApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRl
OgogICAgIFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVudCogbV9jbGllbnQ7CiAgICAgT3duUHRy
PFdlYkNvbG9yQ2hvb3Nlcj4gbV9jaG9vc2VyOwogICAgIFdlYkNvcmU6OlBhZ2VQb3B1cCogbV9w
b3B1cDsKLSAgICBPd25QdHI8V2ViQ29yZTo6TG9jYWxpemVyPiBtX2xvY2FsaXplcjsKKyAgICBP
d25QdHI8V2ViQ29yZTo6TG9jYWxlPiBtX2xvY2FsZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5jcHAKaW5kZXggMTNiYTYy
ZWI0NTM3OTQwNGJjNmYwMzI2ZWI2MDQ4ZDAzODk4ODc3Ny4uMGY2N2M1ZTQyYmI1ZDEyOTJlMjg0
NGNiMmFmNGYxMzhhZGI2NTE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgRGF0ZVRpbWVDaG9v
c2VySW1wbDo6RGF0ZVRpbWVDaG9vc2VySW1wbChDaHJvbWVDbGllbnRJbXBsKiBjaHJvbWVDbGll
bnQsIFdlYkNvcmUKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fcG9wdXAoMCkKICAg
ICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQotICAgICwgbV9sb2NhbGl6ZXIoV2ViQ29yZTo6
TG9jYWxpemVyOjpjcmVhdGVEZWZhdWx0KCkpCisgICAgLCBtX2xvY2FsZShXZWJDb3JlOjpMb2Nh
bGU6OmNyZWF0ZURlZmF1bHQoKSkKIHsKICAgICBBU1NFUlQobV9jaHJvbWVDbGllbnQpOwogICAg
IEFTU0VSVChtX2NsaWVudCk7CkBAIC0xMTksMTAgKzExOSwxMCBAQCB2b2lkIERhdGVUaW1lQ2hv
b3NlckltcGw6OndyaXRlRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXImIHdyaXRlcikK
ICAgICBhZGRQcm9wZXJ0eSgibG9jYWxlIiwgV2ViQ29yZTo6ZGVmYXVsdExhbmd1YWdlKCksIHdy
aXRlcik7CiAgICAgYWRkUHJvcGVydHkoInRvZGF5TGFiZWwiLCBQbGF0Zm9ybTo6Y3VycmVudCgp
LT5xdWVyeUxvY2FsaXplZFN0cmluZyhXZWJMb2NhbGl6ZWRTdHJpbmc6OkNhbGVuZGFyVG9kYXkp
LCB3cml0ZXIpOwogICAgIGFkZFByb3BlcnR5KCJjbGVhckxhYmVsIiwgUGxhdGZvcm06OmN1cnJl
bnQoKS0+cXVlcnlMb2NhbGl6ZWRTdHJpbmcoV2ViTG9jYWxpemVkU3RyaW5nOjpDYWxlbmRhckNs
ZWFyKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgid2Vla1N0YXJ0RGF5IiwgbV9sb2NhbGl6
ZXItPmZpcnN0RGF5T2ZXZWVrKCksIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoIm1vbnRoTGFi
ZWxzIiwgbV9sb2NhbGl6ZXItPm1vbnRoTGFiZWxzKCksIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVy
dHkoImRheUxhYmVscyIsIG1fbG9jYWxpemVyLT53ZWVrRGF5U2hvcnRMYWJlbHMoKSwgd3JpdGVy
KTsKLSAgICBhZGRQcm9wZXJ0eSgiaXNDYWxlbmRhclJUTCIsIG1fbG9jYWxpemVyLT5pc1JUTCgp
LCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJ3ZWVrU3RhcnREYXkiLCBtX2xvY2FsZS0+Zmly
c3REYXlPZldlZWsoKSwgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgibW9udGhMYWJlbHMiLCBt
X2xvY2FsZS0+bW9udGhMYWJlbHMoKSwgd3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgiZGF5TGFi
ZWxzIiwgbV9sb2NhbGUtPndlZWtEYXlTaG9ydExhYmVscygpLCB3cml0ZXIpOworICAgIGFkZFBy
b3BlcnR5KCJpc0NhbGVuZGFyUlRMIiwgbV9sb2NhbGUtPmlzUlRMKCksIHdyaXRlcik7CiAgICAg
YWRkUHJvcGVydHkoImlzUlRMIiwgbV9wYXJhbWV0ZXJzLmlzQW5jaG9yRWxlbWVudFJUTCwgd3Jp
dGVyKTsKICAgICBpZiAobV9wYXJhbWV0ZXJzLnN1Z2dlc3Rpb25WYWx1ZXMuc2l6ZSgpKSB7CiAg
ICAgICAgIGFkZFByb3BlcnR5KCJpbnB1dFdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
cGFyYW1ldGVycy5hbmNob3JSZWN0SW5Sb290Vmlldy53aWR0aCgpKSwgd3JpdGVyKTsKQEAgLTE0
Miw5ICsxNDIsOSBAQCB2b2lkIERhdGVUaW1lQ2hvb3NlckltcGw6OndyaXRlRG9jdW1lbnQoV2Vi
Q29yZTo6RG9jdW1lbnRXcml0ZXImIHdyaXRlcikKICAgICBhZGRTdHJpbmcoIjwvc2NyaXB0Pjwv
Ym9keT5cbiIsIHdyaXRlcik7CiB9CiAKLVdlYkNvcmU6OkxvY2FsaXplciYgRGF0ZVRpbWVDaG9v
c2VySW1wbDo6bG9jYWxpemVyKCkKK1dlYkNvcmU6OkxvY2FsZSYgRGF0ZVRpbWVDaG9vc2VySW1w
bDo6bG9jYWxlKCkKIHsKLSAgICByZXR1cm4gKm1fbG9jYWxpemVyOworICAgIHJldHVybiAqbV9s
b2NhbGU7CiB9CiAKIHZvaWQgRGF0ZVRpbWVDaG9vc2VySW1wbDo6c2V0VmFsdWVBbmRDbG9zZVBv
cHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuaAppbmRleCA0MDE5NWNl
NTNmZTg5NjA3ZDY4ZWU0ZWI0MTA5MDM4YjUxZjc2YzVlLi5jNGQ1MTRhZTg3MGJmYzQ0YzVmNTY3
ZTJlODE4ODJhMDFmNzQxNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9EYXRlVGltZUNob29zZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RGF0ZVRpbWVDaG9vc2VySW1wbC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgLy8g
UGFnZVBvcHVwQ2xpZW50IGZ1bmN0aW9uczoKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUg
Y29udGVudFNpemUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVEb2N1bWVudChX
ZWJDb3JlOjpEb2N1bWVudFdyaXRlciYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6
TG9jYWxpemVyJiBsb2NhbGl6ZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Okxv
Y2FsZSYgbG9jYWxlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQW5kQ2xv
c2VQb3B1cChpbnQsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRDbG9zZVBvcHVwKCkgT1ZFUlJJREU7CiAKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpEYXRlVGltZUNob29zZXJDbGllbnQqIG1fY2xpZW50OwogICAgIFdlYkNvcmU6
OlBhZ2VQb3B1cCogbV9wb3B1cDsKICAgICBXZWJDb3JlOjpEYXRlVGltZUNob29zZXJQYXJhbWV0
ZXJzIG1fcGFyYW1ldGVyczsKLSAgICBPd25QdHI8V2ViQ29yZTo6TG9jYWxpemVyPiBtX2xvY2Fs
aXplcjsKKyAgICBPd25QdHI8V2ViQ29yZTo6TG9jYWxlPiBtX2xvY2FsZTsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTG9jYWxlTWFjVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xvY2FsZU1hY1Rlc3QuY3BwCmluZGV4IGU5
ZTU1ZDgxYzhmMDJlODUzZGIyYzZhMTQ4MjhhMzA1NGY0ZDFhODguLjE3YjJlOTE4MGRkODQwOTE0
MDcyYmY1ZjM5Y2FmNTgwNmFjOGFiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvTG9jYWxlTWFjVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9Mb2NhbGVNYWNUZXN0LmNwcApAQCAtNzgsNyArNzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
U3RyaW5nIGZvcm1hdFRpbWUoY29uc3QgU3RyaW5nJiBsb2NhbGVTdHJpbmcsIGludCBob3VyLCBp
bnQgbWludXRlLCBpbnQgc2Vjb25kLCBpbnQgbWlsbGlzZWNvbmQsIGJvb2wgdXNlU2hvcnRGb3Jt
YXQpCiAgICAgewogICAgICAgICBPd25QdHI8TG9jYWxlTWFjPiBsb2NhbGUgPSBMb2NhbGVNYWM6
OmNyZWF0ZShsb2NhbGVTdHJpbmcpOwotICAgICAgICByZXR1cm4gbG9jYWxlLT5mb3JtYXREYXRl
VGltZSh0aW1lQ29tcG9uZW50cyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQpLCAo
dXNlU2hvcnRGb3JtYXQgPyBMb2NhbGl6ZXI6OkZvcm1hdFR5cGVTaG9ydCA6IExvY2FsaXplcjo6
Rm9ybWF0VHlwZU1lZGl1bSkpOworICAgICAgICByZXR1cm4gbG9jYWxlLT5mb3JtYXREYXRlVGlt
ZSh0aW1lQ29tcG9uZW50cyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQpLCAodXNl
U2hvcnRGb3JtYXQgPyBMb2NhbGU6OkZvcm1hdFR5cGVTaG9ydCA6IExvY2FsZTo6Rm9ybWF0VHlw
ZU1lZGl1bSkpOwogICAgIH0KIAogICAgIGRvdWJsZSBwYXJzZURhdGUoY29uc3QgU3RyaW5nJiBs
b2NhbGVTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGF0ZVN0cmluZykKQEAgLTM1MCw3ICszNTAsNyBA
QCBURVNUX0YoTG9jYWxlTWFjVGVzdCwgaW52YWxpZExvY2FsZSkKIAogc3RhdGljIHZvaWQgdGVz
dE51bWJlcklzUmV2ZXJzaWJsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZVN0cmluZywgY29u
c3QgY2hhciogb3JpZ2luYWwsIGNvbnN0IGNoYXIqIHNob3VsZEhhdmUgPSAwKQogewotICAgIE93
blB0cjxMb2NhbGl6ZXI+IGxvY2FsZSA9IExvY2FsaXplcjo6Y3JlYXRlKGxvY2FsZVN0cmluZyk7
CisgICAgT3duUHRyPExvY2FsZT4gbG9jYWxlID0gTG9jYWxlOjpjcmVhdGUobG9jYWxlU3RyaW5n
KTsKICAgICBTdHJpbmcgbG9jYWxpemVkID0gbG9jYWxlLT5jb252ZXJ0VG9Mb2NhbGl6ZWROdW1i
ZXIob3JpZ2luYWwpOwogICAgIGlmIChzaG91bGRIYXZlKQogICAgICAgICBFWFBFQ1RfVFJVRShs
b2NhbGl6ZWQuY29udGFpbnMoc2hvdWxkSGF2ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9Mb2NhbGl6ZWROdW1iZXJJQ1VUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTG9jYWxpemVkTnVtYmVySUNVVGVzdC5jcHAKaW5kZXggNmZhY2Rj
MWExYWNmNGJhNWY5YzI1ZTA2ODMwMGY1M2U4MDJlZTI3Ny4uNGQxYTgyODE3MjkwMmY0ZWQ2NGNh
Yzc2YzYxYTE3ODM0NGFkY2FiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9Mb2NhbGl6ZWROdW1iZXJJQ1VUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0xvY2FsaXplZE51bWJlcklDVVRlc3QuY3BwCkBAIC0zOCwxMSArMzgsMTEgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgdGVzdE51bWJlcklzUmV2ZXJzaWJsZShj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgY2hhciogb3JpZ2luYWwsIGNvbnN0IGNo
YXIqIHNob3VsZEhhdmUgPSAwKQogewotICAgIE93blB0cjxMb2NhbGl6ZXI+IGxvY2FsaXplciA9
IExvY2FsaXplcjo6Y3JlYXRlKGxvY2FsZSk7Ci0gICAgU3RyaW5nIGxvY2FsaXplZCA9IGxvY2Fs
aXplci0+Y29udmVydFRvTG9jYWxpemVkTnVtYmVyKG9yaWdpbmFsKTsKKyAgICBPd25QdHI8TG9j
YWxlPiBsb2NhbGUgPSBMb2NhbGU6OmNyZWF0ZShsb2NhbGUpOworICAgIFN0cmluZyBsb2NhbGl6
ZWQgPSBsb2NhbGUtPmNvbnZlcnRUb0xvY2FsaXplZE51bWJlcihvcmlnaW5hbCk7CiAgICAgaWYg
KHNob3VsZEhhdmUpCiAgICAgICAgIEVYUEVDVF9UUlVFKGxvY2FsaXplZC5jb250YWlucyhzaG91
bGRIYXZlKSk7Ci0gICAgU3RyaW5nIGNvbnZlcnRlZCA9IGxvY2FsaXplci0+Y29udmVydEZyb21M
b2NhbGl6ZWROdW1iZXIobG9jYWxpemVkKTsKKyAgICBTdHJpbmcgY29udmVydGVkID0gbG9jYWxl
LT5jb252ZXJ0RnJvbUxvY2FsaXplZE51bWJlcihsb2NhbGl6ZWQpOwogICAgIEVYUEVDVF9FUShv
cmlnaW5hbCwgY29udmVydGVkKTsKIH0KIApAQCAtODQsOCArODQsOCBAQCBURVNUKExvY2FsaXpl
ZE51bWJlcklDVVRlc3QsIFJldmVyc2libGUpCiAKIHN0YXRpYyBTdHJpbmcgdGVzdERlY2ltYWxT
ZXBhcmF0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgT3duUHRyPExvY2Fs
aXplcj4gbG9jYWxpemVyID0gTG9jYWxpemVyOjpjcmVhdGUobG9jYWxlKTsKLSAgICByZXR1cm4g
bG9jYWxpemVyLT5sb2NhbGl6ZWREZWNpbWFsU2VwYXJhdG9yKCk7CisgICAgT3duUHRyPExvY2Fs
ZT4gbG9jYWxlID0gTG9jYWxlOjpjcmVhdGUobG9jYWxlKTsKKyAgICByZXR1cm4gbG9jYWxlLT5s
b2NhbGl6ZWREZWNpbWFsU2VwYXJhdG9yKCk7CiB9CiAKIFRFU1QoTG9jYWxpemVkTnVtYmVySUNV
VGVzdCwgbG9jYWxpemVkRGVjaW1hbFNlcGFyYXRvcikK
</data>
<flag name="review"
          id="184989"
          type_id="1"
          status="+"
          setter="haraken"
    />
          </attachment>
      

    </bug>

</bugzilla>