<?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>177801</bug_id>
          
          <creation_ts>2017-10-03 01:01:40 -0700</creation_ts>
          <short_desc>Use blob URL when pasting RTFD instead of overriding DocumentLoader</short_desc>
          <delta_ts>2017-10-04 04:06:20 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>124391</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1355724</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-03 01:01:40 -0700</bug_when>
    <thetext>Right now, the pasted content’s subresources are loaded by overriding document loader.
This is extremely hacky way of making paste work, and websites can’t access those sub resources.
Use blob URL instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355725</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-03 01:02:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/34542270&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355733</commentid>
    <comment_count>2</comment_count>
      <attachid>322500</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-03 01:26:54 -0700</bug_when>
    <thetext>Created attachment 322500
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355925</commentid>
    <comment_count>3</comment_count>
      <attachid>322554</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-03 11:45:18 -0700</bug_when>
    <thetext>Created attachment 322554
Fixed builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355926</commentid>
    <comment_count>4</comment_count>
      <attachid>322555</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-03 11:49:04 -0700</bug_when>
    <thetext>Created attachment 322555
Fixed GTK+ builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356272</commentid>
    <comment_count>5</comment_count>
      <attachid>322555</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-04 00:39:07 -0700</bug_when>
    <thetext>Comment on attachment 322555
Fixed GTK+ builds

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

The general approach looks reasonable to me, but I&apos;m not familiar with loading code at all. Perhaps Chris would have some additional input here?

&gt; Source/WebCore/ChangeLog:10
&gt; +        into the document using WebKit fake URL, and DocumentLoader was overridden to return the appropraite

appropraite =&gt; appropriate

&gt; Source/WebCore/editing/markup.cpp:128
&gt; +            if (element.attributeContainsURL(attribute) &amp;&amp; !attribute.value().isEmpty()) {

How would this handle data: URLs, or app: URLs?

&gt; Source/WebCore/editing/markup.cpp:131
&gt; +                    changes.append(AttributeChange(&amp;element, attribute.name(), replacement));

Nit - { } initialization here?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteRTFD.mm:46
&gt; +    [[NSPasteboard generalPasteboard] declareTypes:[NSArray arrayWithObject:NSRTFDPboardType] owner:nil];

Nit - this would probably be more succinct using @[] instead of +[NSArray arrayWithObject]

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteRTFD.mm:61
&gt; +    [[UIPasteboard generalPasteboard] setItems:@[[NSDictionary dictionaryWithObject:data forKey:(NSString *)kUTTypeFlatRTFD]]];

Nit - this would probably be more succinct using @{} instead of +[NSDictionary dictionaryWithObject]

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteRTFD.mm:72
&gt; +    [webView paste:nil];

Did you mean to check that the editable root is empty after this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356287</commentid>
    <comment_count>6</comment_count>
      <attachid>322555</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-04 02:04:50 -0700</bug_when>
    <thetext>Comment on attachment 322555
Fixed GTK+ builds

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

&gt;&gt; Source/WebCore/editing/markup.cpp:128
&gt;&gt; +            if (element.attributeContainsURL(attribute) &amp;&amp; !attribute.value().isEmpty()) {
&gt; 
&gt; How would this handle data: URLs, or app: URLs?

They won&apos;t be in replacement map since those URLs shouldn&apos;t be appearing as sub resources in attributed attributes we just parsed.

&gt;&gt; Source/WebCore/editing/markup.cpp:131
&gt;&gt; +                    changes.append(AttributeChange(&amp;element, attribute.name(), replacement));
&gt; 
&gt; Nit - { } initialization here?

Sure.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteRTFD.mm:46
&gt;&gt; +    [[NSPasteboard generalPasteboard] declareTypes:[NSArray arrayWithObject:NSRTFDPboardType] owner:nil];
&gt; 
&gt; Nit - this would probably be more succinct using @[] instead of +[NSArray arrayWithObject]

Fixed.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteRTFD.mm:61
&gt;&gt; +    [[UIPasteboard generalPasteboard] setItems:@[[NSDictionary dictionaryWithObject:data forKey:(NSString *)kUTTypeFlatRTFD]]];
&gt; 
&gt; Nit - this would probably be more succinct using @{} instead of +[NSDictionary dictionaryWithObject]

Fixed.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteRTFD.mm:72
&gt;&gt; +    [webView paste:nil];
&gt; 
&gt; Did you mean to check that the editable root is empty after this?

No. This test is simply here to make sure WebKit doesn&apos;t hit a debug assertion / crash when sharedBuffer is empty in getPasteboardBufferForType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356288</commentid>
    <comment_count>7</comment_count>
      <attachid>322638</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-04 02:05:44 -0700</bug_when>
    <thetext>Created attachment 322638
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356289</commentid>
    <comment_count>8</comment_count>
      <attachid>322638</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-04 02:06:14 -0700</bug_when>
    <thetext>Comment on attachment 322638
Patch for landing

Wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356333</commentid>
    <comment_count>9</comment_count>
      <attachid>322638</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-04 04:06:18 -0700</bug_when>
    <thetext>Comment on attachment 322638
Patch for landing

Clearing flags on attachment: 322638

Committed r222839: &lt;http://trac.webkit.org/changeset/222839&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356334</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-04 04:06:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322500</attachid>
            <date>2017-10-03 01:26:54 -0700</date>
            <delta_ts>2017-10-03 11:45:16 -0700</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-177801-20171003012653.patch</filename>
            <type>text/plain</type>
            <size>27094</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2NhOTU0ZDYwZjExYjhh
ODJjM2MxNTY5MDZlMTJiZTAxNjk0OWI0NS4uMTdmYTdjMTJhYjIyMDJjMTU3MTVkOTFkYmQxNTgw
Y2I2OGY1YmQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE3LTEwLTAzICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBibG9iIFVSTCB3aGVu
IHBhc3RpbmcgUlRGRCBpbnN0ZWFkIG9mIG92ZXJyaWRpbmcgRG9jdW1lbnRMb2FkZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzgwMQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzQ1NDIyNzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gsIHBhc3RpbmcgUlRGRCByZXN1
bHRlZCBpbiBpbWFnZXMgYW5kIG90aGVyIHN1YnJlc291cmNlcyBpbiBSVEZEIGFyZSBiZWluZyBw
bGFjZWQKKyAgICAgICAgaW50byB0aGUgZG9jdW1lbnQgdXNpbmcgV2ViS2l0IGZha2UgVVJMLCBh
bmQgRG9jdW1lbnRMb2FkZXIgd2FzIG92ZXJyaWRkZW4gdG8gcmV0dXJuIHRoZSBhcHByb3ByYWl0
ZQorICAgICAgICBkYXRhIHVwb24gcmVzb3VyY2UgcmVxdWVzdHMuIFRoaXMgaXMgYmFkIGJlY2F1
c2UgdGhlcmUgaXMgbm8gbWVjaGFuaXNtIGZvciB3ZWJzaXRlcyB0byBhY2Nlc3MgaXRzIGNvbnRl
bnQuCisKKyAgICAgICAgTGlrZSByMjIyMTE5IGFuZCByMjA4NDUxLCB0aGlzIHBhdGNoIGZpeGVz
IHRoaWUgcHJvYmxlbSBieSB1c2luZyBhIGJsb2IgVVJMIGluc3RlYWQgb2YgYSBXZWJLaXQgZmFr
ZSBVUkwuCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGEgQmxvYjo6Y3JlYXRlIHZhcmlh
bnQgd2hpY2ggdGFrZXMgYSBTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgQVBJIFRlc3RzOiBQYXN0
ZVJURkQKKworICAgICAgICAqIGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1
ZmZlcik6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZExvYWRpbmdTY29wZSk6IEV4dHJhY3RlZCBvdXQg
b2YgY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMgZm9yIGNsYXJpdHkuCisgICAgICAgIChX
ZWJDb3JlOjpEZWZlcnJlZExvYWRpbmdTY29wZTo6RGVmZXJyZWRMb2FkaW5nU2NvcGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVmZXJyZWRMb2FkaW5nU2NvcGU6On5EZWZlcnJlZExvYWRpbmdTY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyk6IElu
c3RlYWQgb2YgYWRkaW5nIHJlc291cmNlcyB0byBkb2N1bWVudCBsb2FkZXIsIHJlcGxhY2UgZWFj
aAorICAgICAgICBVUkwgaW4gdGhlIGRvY3VtZW50IGJ5IGEgYmxvYiBVUkwuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UpOgorICAgICAgICAqIGVkaXRpbmcv
bWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VTdWJyZXNvdXJjZVVSTHMpOiBB
ZGRlZC4gQSBoZWxwZXIgdG8gcmVwbGFjZSBlYWNoIFVSTCBpbiB0aGUgZG9jdW1lbnQgZnJhZ21l
bnQgYnkgYSBibG9iCisgICAgICAgIFVSTCBjcmVhdGVkIGZvciBlYWNoIHN1YnJlc291cmNlLiBU
aGlzIHdvbid0IHdvcmsgZm9yIGlmcmFtZXMgb3Igc3Jjc2V0IGJ1dCB0aGF0J3Mgb2theSBmb3Ig
bm93IHNpbmNlIERPTQorICAgICAgICBjb25zdHJ1Y3RlZCBmcm9tIFJURkQgZG9lc24ndCB1c2Ug
ZWl0aGVyLgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmg6CisgICAgICAgICogZmlsZWFwaS9C
bG9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OkJsb2IpOiBBZGRlZCBhIHZhcmlhbnQg
d2hpY2ggdGFrZXMgYSBTaGFyZWRCdWZmZXIuCisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iOjpjcmVhdGUpOiBEaXR0by4KKwogMjAxNy0xMC0wMiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgTGlu
ZUVuZGluZy57aCxjcHB9IGZyb20gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0IHRvIHd0Zi90ZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGUwZDg3M2MzOTU2YWQ5Y2MyMTczMmNkNzdjYTkwOTdjZDEzYTc5Y2QuLjllMzdk
MDBlZTMyMzYwZDM2ZDgyZjg3MmVlY2RjMDBkMGZmOGJkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTctMTAtMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgVXNlIGJsb2IgVVJMIHdoZW4gcGFzdGluZyBSVEZEIGluc3RlYWQgb2Ygb3ZlcnJpZGlu
ZyBEb2N1bWVudExvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc3ODAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDU0MjI3MD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYXNz
ZXJ0aW9uIGZhaWx1cmUgd2hlbiBSVEZEIGNvbnRlbnQgaXMgZW1wdHkuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorCiAy
MDE3LTEwLTAyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1v
dmUgbW9yZSBjb2RlIGludG8gUGFzdGVib2FyZEN1c3RvbURhdGEKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCAy
ZDBiNjRhYzQxZGM1MzljN2M5ZjkyNDM4ODFkYTFlNzA3NGE1YzMyLi5mNjhhMDBlZmFlN2E3YmI0
OTU4OWQwZmZlMjczMWJiZTZlODQyYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC00MCw5ICs0MCw3IEBA
IHZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSkKIAogdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBk
YXRhLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGZpbGVzLmFw
cGVuZChGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFdURk1vdmUoZGF0YSksIHR5cGUpLCBmaWxl
bmFtZSkpOworICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZl
ci5nZXQoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMjUzNTlh
ZGUyYmY3NTg2MWJkYmRmYjY0MjYzNDIyNTg5MTY4YzNkNy4uMGNjNzEzNTFjYWFhY2QyYmExZmYx
NjBhYzM3NzE0YTQ3N2EzZjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTEyMiw2ICsxMjIsMzggQEAgc3Rh
dGljIEZyYWdtZW50QW5kUmVzb3VyY2VzIGNyZWF0ZUZyYWdtZW50KEZyYW1lJiBmcmFtZSwgTlNB
dHRyaWJ1dGVkU3RyaW5nICpzdHIKIAogI2VuZGlmCiAKK2NsYXNzIERlZmVycmVkTG9hZGluZ1Nj
b3BlIHsKK3B1YmxpYzoKKyAgICBEZWZlcnJlZExvYWRpbmdTY29wZShGcmFtZSYgZnJhbWUpCisg
ICAgICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICAgICAgLCBtX2NhY2hlZFJlc291cmNlTG9hZGVy
KGZyYW1lLmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCkpCisgICAgeworICAgICAg
ICBpZiAoIWZyYW1lLnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpKSB7CisgICAgICAgICAgICBmcmFt
ZS5wYWdlKCktPnNldERlZmVyc0xvYWRpbmcodHJ1ZSk7CisgICAgICAgICAgICBtX2RpZEVuYWJs
ZWREZWZlcnJlZExvYWRpbmcgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fY2Fj
aGVkUmVzb3VyY2VMb2FkZXItPmltYWdlc0VuYWJsZWQoKSkgeworICAgICAgICAgICAgbV9jYWNo
ZWRSZXNvdXJjZUxvYWRlci0+c2V0SW1hZ2VzRW5hYmxlZChmYWxzZSk7CisgICAgICAgICAgICBt
X2RpZERpc2FibGVJbWFnZSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB+RGVmZXJy
ZWRMb2FkaW5nU2NvcGUoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZGlkRW5hYmxlZERlZmVycmVk
TG9hZGluZykKKyAgICAgICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnNldEltYWdlc0Vu
YWJsZWQodHJ1ZSk7CisgICAgICAgIGlmIChtX2RpZERpc2FibGVJbWFnZSkKKyAgICAgICAgICAg
IG1fZnJhbWUtPnBhZ2UoKS0+c2V0RGVmZXJzTG9hZGluZyhmYWxzZSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIFJlZjxGcmFtZT4gbV9mcmFtZTsKKyAgICBSZWY8Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CisgICAgYm9vbCBtX2RpZEVuYWJsZWREZWZlcnJl
ZExvYWRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9kaWREaXNhYmxlSW1hZ2UgeyBmYWxzZSB9
OworfTsKKwogUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVz
b3VyY2VzKEZyYW1lJiBmcmFtZSwgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAg
aWYgKCFmcmFtZS5wYWdlKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCkBAIC0xMzEsMjYgKzE2Mywy
MSBAQCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJj
ZXMoRnJhbWUmIGZyYW1lLCBOU0F0dHJpYnV0ZQogICAgIGlmICghZG9jdW1lbnQuaXNIVE1MRG9j
dW1lbnQoKSB8fCAhc3RyaW5nKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGJvb2wg
d2FzRGVmZXJyaW5nQ2FsbGJhY2tzID0gZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCk7Ci0g
ICAgaWYgKCF3YXNEZWZlcnJpbmdDYWxsYmFja3MpCi0gICAgICAgIGZyYW1lLnBhZ2UoKS0+c2V0
RGVmZXJzTG9hZGluZyh0cnVlKTsKLQotICAgIGF1dG8mIGNhY2hlZFJlc291cmNlTG9hZGVyID0g
ZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICBib29sIHdhc0ltYWdlc0VuYWJs
ZWQgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci5pbWFnZXNFbmFibGVkKCk7Ci0gICAgaWYgKHdhc0lt
YWdlc0VuYWJsZWQpCi0gICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLnNldEltYWdlc0VuYWJs
ZWQoZmFsc2UpOwotCisgICAgRGVmZXJyZWRMb2FkaW5nU2NvcGUgc2NvcGUoZnJhbWUpOwogICAg
IGF1dG8gZnJhZ21lbnRBbmRSZXNvdXJjZXMgPSBjcmVhdGVGcmFnbWVudChmcmFtZSwgc3RyaW5n
KTsKKyAgICBpZiAoIWZyYWdtZW50QW5kUmVzb3VyY2VzLmZyYWdtZW50KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKwogICAgIGlmIChhdXRvKiBsb2FkZXIgPSBmcmFtZS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiBmcmFnbWVudEFu
ZFJlc291cmNlcy5yZXNvdXJjZXMpCi0gICAgICAgICAgICBsb2FkZXItPmFkZEFyY2hpdmVSZXNv
dXJjZShXVEZNb3ZlKHJlc291cmNlKSk7CisgICAgICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBB
dG9taWNTdHJpbmc+IGJsb2JVUkxNYXA7CisgICAgICAgIGZvciAoY29uc3QgUmVmPEFyY2hpdmVS
ZXNvdXJjZT4mIHN1YnJlc291cmNlIDogZnJhZ21lbnRBbmRSZXNvdXJjZXMucmVzb3VyY2VzKSB7
CisgICAgICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoc3VicmVzb3VyY2UtPmRhdGEo
KSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOworICAgICAgICAgICAgU3RyaW5nIGJsb2JVUkwg
PSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgYmxvYik7CisgICAgICAgICAgICBi
bG9iVVJMTWFwLnNldChzdWJyZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCksIGJsb2JVUkwpOworICAg
ICAgICB9CisgICAgICAgIHJlcGxhY2VTdWJyZXNvdXJjZVVSTHMoKmZyYWdtZW50QW5kUmVzb3Vy
Y2VzLmZyYWdtZW50LCBXVEZNb3ZlKGJsb2JVUkxNYXApKTsKICAgICB9CiAKLSAgICBpZiAod2Fz
SW1hZ2VzRW5hYmxlZCkKLSAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIuc2V0SW1hZ2VzRW5h
YmxlZCh0cnVlKTsKLSAgICBpZiAoIXdhc0RlZmVycmluZ0NhbGxiYWNrcykKLSAgICAgICAgZnJh
bWUucGFnZSgpLT5zZXREZWZlcnNMb2FkaW5nKGZhbHNlKTsKLQogICAgIHJldHVybiBXVEZNb3Zl
KGZyYWdtZW50QW5kUmVzb3VyY2VzLmZyYWdtZW50KTsKIH0KIApAQCAtMjI1LDkgKzI1Miw3IEBA
IGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQp
CiAKIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7
Ci0gICAgZGF0YS5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBh
dXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoV1RGTW92ZShkYXRhKSwgdHlwZSk7CisgICAgYXV0byBi
bG9iID0gQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgdHlwZSk7CiAgICAgQVNTRVJUKGZyYW1l
LmRvY3VtZW50KCkpOwogICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CiAg
ICAgU3RyaW5nIGJsb2JVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgYmxv
Yik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggYTViZGU5ZjAxYjYxNDM1N2EzNTkx
NTUyNmE4MTZlYTRhNjliNWZhYi4uMDdlMjYxOWFkYzUyMTkwNzRlMmVmYzE3NzVkNmJjMmI2NDc4
ZDFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTE2LDYgKzExNiwyNSBAQCBz
dGF0aWMgdm9pZCBjb21wbGV0ZVVSTHMoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIGNvbnN0
IFN0cmluZyYgYmFzZVVSTCkKICAgICBmb3IgKGF1dG8mIGNoYW5nZSA6IGNoYW5nZXMpCiAgICAg
ICAgIGNoYW5nZS5hcHBseSgpOwogfQorCit2b2lkIHJlcGxhY2VTdWJyZXNvdXJjZVVSTHMoUmVm
PERvY3VtZW50RnJhZ21lbnQ+JiYgZnJhZ21lbnQsIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBBdG9t
aWNTdHJpbmc+JiYgcmVwbGFjZW1lbnRNYXApCit7CisgICAgVmVjdG9yPEF0dHJpYnV0ZUNoYW5n
ZT4gY2hhbmdlczsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxF
bGVtZW50PihmcmFnbWVudCkpIHsKKyAgICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZXMo
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYg
YXR0cmlidXRlIDogZWxlbWVudC5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgeworICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgd29uJ3Qgd29yayBmb3Igc3Jjc2V0LgorICAgICAgICAgICAgaWYgKGVs
ZW1lbnQuYXR0cmlidXRlQ29udGFpbnNVUkwoYXR0cmlidXRlKSAmJiAhYXR0cmlidXRlLnZhbHVl
KCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgYXV0byByZXBsYWNlbWVudCA9IHJlcGxh
Y2VtZW50TWFwLmdldChhdHRyaWJ1dGUudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFy
ZXBsYWNlbWVudC5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5hcHBlbmQo
QXR0cmlidXRlQ2hhbmdlKCZlbGVtZW50LCBhdHRyaWJ1dGUubmFtZSgpLCByZXBsYWNlbWVudCkp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGZvciAoYXV0byYgY2hhbmdl
IDogY2hhbmdlcykKKyAgICAgICAgY2hhbmdlLmFwcGx5KCk7Cit9CiAgICAgCiBjbGFzcyBTdHls
ZWRNYXJrdXBBY2N1bXVsYXRvciBmaW5hbCA6IHB1YmxpYyBNYXJrdXBBY2N1bXVsYXRvciB7CiBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCBhYzk0NjkzYzEwMmNkMWEwZDgxMmI3
NmNhM2I0Y2M5NGYyYjE5ZGRhLi4yYzdiMzAzMzUxYTNhM2Y3Y2YwOGFjMjE1MjAyNmU0MDdmZTBm
YjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKICNpbmNsdWRlICJIVE1MSW50ZXJjaGFu
Z2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDQsNiArNDUsOCBAQCBjbGFzcyBOb2RlOwog
Y2xhc3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNzIFJhbmdlOwogCit2b2lkIHJlcGxhY2VTdWJyZXNv
dXJjZVVSTHMoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYsIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBB
dG9taWNTdHJpbmc+JiYpOworCiBlbnVtIEVDaGlsZHJlbk9ubHkgeyBJbmNsdWRlTm9kZSwgQ2hp
bGRyZW5Pbmx5IH07CiBlbnVtIEVBYnNvbHV0ZVVSTHMgeyBEb05vdFJlc29sdmVVUkxzLCBSZXNv
bHZlQWxsVVJMcywgUmVzb2x2ZU5vbkxvY2FsVVJMcyB9OwogZW51bSBFRnJhZ21lbnRTZXJpYWxp
emF0aW9uIHsgSFRNTEZyYWdtZW50U2VyaWFsaXphdGlvbiwgWE1MRnJhZ21lbnRTZXJpYWxpemF0
aW9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCBlZjI4ZDU3NGRkNDIzNWUwZTk3ZGQz
MjE2MTM3YmI1MDk4Y2M0MTE3Li5hN2NkNGU0NzNjNzY0YjBjOWFkYTgyOWU5N2MyNDRkNGYwYmM4
MTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJCbG9iVVJMLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtOTYsNiArOTcsMTkgQEAgQmxvYjo6QmxvYihW
ZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IEJsb2JQcm9w
ZXJ0eUJhZyYgcHIKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwo
bV9pbnRlcm5hbFVSTCwgYnVpbGRlci5maW5hbGl6ZSgpLCBtX3R5cGUpOwogfQogCitCbG9iOjpC
bG9iKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQorICAgIDogbV90eXBlKGNvbnRlbnRUeXBlKQorICAgICwgbV9zaXplKGJ1ZmZlci5zaXplKCkp
Cit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgZGF0YS5hcHBlbmQoYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLnNpemUoKSk7CisKKyAgICBWZWN0b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0czsK
KyAgICBibG9iUGFydHMuYXBwZW5kKEJsb2JQYXJ0KFdURk1vdmUoZGF0YSkpKTsKKyAgICBtX2lu
dGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKKyAgICBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9i
UGFydHMpLCBjb250ZW50VHlwZSk7Cit9CisKIEJsb2I6OkJsb2IoVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICA6IG1fdHlwZShjb250ZW50VHlw
ZSkKICAgICAsIG1fc2l6ZShkYXRhLnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYi5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggOWY0
MjQyMzA3Nzc3M2Y5Y2RhZWIyNWVhNTUzODAxNjY3MDdhYjU4NC4uY2FlZGRjODY1ZGY5ZDViMmFj
Y2NjMjc1ZTdkZmEyNDlmNWU3MGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTQ1LDYgKzQ1
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwogY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdXNpbmcgQmxvYlBhcnRWYXJp
YW50ID0gVmFyaWFudDxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+LCBSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4sIFJlZlB0cjxCbG9iPiwgU3RyaW5nPjsKIApAQCAtNjAsNiArNjEsMTEgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKFdURk1vdmUoYmxvYlBh
cnRWYXJpYW50cyksIHByb3BlcnR5QmFnKSk7CiAgICAgfQogCisgICAgc3RhdGljIFJlZjxCbG9i
PiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKGJ1ZmZlciwg
Y29udGVudFR5cGUpKTsKKyAgICB9CisKICAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShWZWN0
b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihXVEZNb3ZlKGRhdGEpLCBjb250ZW50VHlw
ZSkpOwpAQCAtOTksNiArMTA1LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEJsb2IoKTsK
ICAgICBCbG9iKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYsIGNvbnN0IEJsb2JQcm9wZXJ0eUJh
ZyYpOworICAgIEJsb2IoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSk7CiAgICAgQmxvYihWZWN0b3I8dWludDhfdD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSk7CiAKICAgICBlbnVtIFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IgeyBy
ZWZlcmVuY2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4
IDRjOTUxMjVkNjQ5NjJmMDA5MGIyZjViMDg0ODQyNTBmMzM3ODkxODcuLjU3NmQyNDMxMWQ4MzU3
NDZiZTg5Y2JhNjNmOWUyMWRlNGQyZmVkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCkBAIC03NSw2ICs3
NSw4IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lCiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybjsKICAgICBzaXplID0gYnVmZmVyLT5zaXplKCk7CisgICAgaWYgKCFzaXplKQorICAg
ICAgICByZXR1cm47CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVy
ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplKTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1
ZmZlcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGVkMDg1OTY0MGViYzY4ZjcxZDEyMjcxYjcwMDYzOTkwYjZiZWEw
NzguLjU0N2I2YTYyNzRkMTNiNzJhNTY3NTU1M2I3Y2MwMGIxNDU2OWU4N2QgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxNy0xMC0wMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBV
c2UgYmxvYiBVUkwgd2hlbiBwYXN0aW5nIFJURkQgaW5zdGVhZCBvZiBvdmVycmlkaW5nIERvY3Vt
ZW50TG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzc4MDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0NTQyMjcwPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgcmVncmVzc2lvbiB0
ZXN0IGZvciBhbiBhc3NlcnRpb24gZmFpbHVyZSB3aGVuIHBhc3RpbmcgYW4gZW1wdHkgUlRGRCBh
cyB3ZWxsIGFzIGEgdGVzdCBmb3IgcGFzdGluZworICAgICAgICBSVEZEIHdpdGggYW4gaW1hZ2Us
IHdoaWNoIHNob3VsZCByZXN1bHQgaW4gYW4gaW1hZ2UgZWxlbWVudCB3aXRoIGEgYmxvYiBVUkwu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bh
c3RlSW1hZ2UubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
YXN0ZVJURkQubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9w
YXN0ZS1ydGZkLmh0bWw6CisKIDIwMTctMTAtMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZp
ZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIFdTTCBkZW1vIGNvbXBhdGlibGUgd2l0aCBN
aWNyb3NvZnQgRWRnZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMGY1MDA2MjE0ZjcxMjEy
YmYyOTg0ZDg2MDcxMDM2Yzg4OTgxMzA3Li5mODliYjY3NzdmMjg1NjcxYjFlNTY1ZmVlZmRjMTMy
ZmZmMzkzMmVlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTQ0LDYgKzU0NCw3IEBACiAJ
CTlCMjZGQ0NBMTU5RDE2REUwMENDMzc2NSAvKiBIVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0u
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QjI2RkNCNDE1OUQxNUU3MDBDQzM3NjUgLyogSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVt
Lmh0bWwgKi87IH07CiAJCTlCMjcwRkVFMUREQzJDMEIwMDJENTNGMyAvKiBjbG9zZWQtc2hhZG93
LXRyZWUtdGVzdC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCMjcwRkVEMUREQzI1RkQwMDJENTNGMyAvKiBjbG9zZWQtc2hhZG93LXRy
ZWUtdGVzdC5odG1sICovOyB9OwogCQk5QjRGOEZBNzE1OUQ1MkREMDAyRDlGOTQgLyogSFRNTENv
bGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QjRGOEZBNjE1OUQ1MkNBMDAyRDlGOTQgLyogSFRNTENvbGxl
Y3Rpb25OYW1lZEl0ZW0uaHRtbCAqLzsgfTsKKwkJOUI3RDc0MEYxRjgzNzg3NzAwMDZDNDMyIC8q
IHBhc3RlLXJ0ZmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjdENzQwRTFGODM3N0U2MDAwNkM0MzIgLyogcGFzdGUtcnRmZC5odG1s
ICovOyB9OwogCQk5QkQ0MjM5QTFFMDRCRDk4MDAyMDAzOTUgLyogQXR0cmlidXRlZFN1YnN0cmlu
Z0ZvclByb3Bvc2VkUmFuZ2VXaXRoSW1hZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQ0MjM5OTFFMDRCRDk4MDAyMDAzOTUgLyogQXR0cmlidXRl
ZFN1YnN0cmluZ0ZvclByb3Bvc2VkUmFuZ2VXaXRoSW1hZ2UubW0gKi87IH07CiAJCTlCRDQyMzlD
MUUwNEMwMUMwMDIwMDM5NSAvKiBjaGluZXNlLWNoYXJhY3Rlci13aXRoLWltYWdlLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJENDIz
OUIxRTA0QkZEMDAwMjAwMzk1IC8qIGNoaW5lc2UtY2hhcmFjdGVyLXdpdGgtaW1hZ2UuaHRtbCAq
LzsgfTsKIAkJOUJENkQzQTIxRjdCMjE4MzAwQkQ0OTYyIC8qIHN1bnNldC1pbi1jdXBlcnRpbm8t
MTAwcHgudGlmZiBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QkQ2RDNBMTFGN0IyMDIxMDBCRDQ5NjIgLyogc3Vuc2V0LWluLWN1cGVydGluby0x
MDBweC50aWZmICovOyB9OwpAQCAtNTUyLDYgKzU1Myw3IEBACiAJCTlCRDZEM0E1MUY3QjIxODMw
MEJENDk2MiAvKiBzdW5zZXQtaW4tY3VwZXJ0aW5vLTYwMHB4LmpwZyBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQ2RDM5RTFGN0IyMDFFMDBC
RDQ5NjIgLyogc3Vuc2V0LWluLWN1cGVydGluby02MDBweC5qcGcgKi87IH07CiAJCTlCRDZEM0E3
MUY3QjIxREMwMEJENDk2MiAvKiBwYXN0ZS1pbWFnZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDZEM0E2MUY3QjIxQ0MwMEJENDk2
MiAvKiBwYXN0ZS1pbWFnZS5odG1sICovOyB9OwogCQk5QkRDQ0Q4NzFGN0QwQjA3MDAwMDlBMTgg
LyogUGFzdGVJbWFnZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCRENDRDg1MUY3RDBCMDcwMDAwOUExOCAvKiBQYXN0ZUltYWdlLm1tICovOyB9Owor
CQk5QkREOTU1ODFGODM2ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJERDk1NTYxRjgzNjgzNjAwRDIwQzYw
IC8qIFBhc3RlUlRGRC5tbSAqLzsgfTsKIAkJOUM2NERDMzIxRDc2MTk4QTAwNEI1OThFIC8qIFlv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5QzY0REMzMTFENzYxOThBMDA0QjU5OEUgLyogWW91VHViZVBsdWdp
blJlcGxhY2VtZW50LmNwcCAqLzsgfTsKIAkJQTEwRjA0N0UxRTNBRDI5QzAwQzk1RTE5IC8qIE5T
RmlsZU1hbmFnZXJFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTBGMDQ3QzFFM0FEMjlDMDBDOTVFMTkgLyogTlNGaWxlTWFuYWdlckV4dHJh
cy5tbSAqLzsgfTsKIAkJQTExNDZBOEQxRDJENzExNTAwMEZFNzEwIC8qIENvbnRlbnRGaWx0ZXJp
bmcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE0
NkE4QTFEMkQ3MDRGMDAwRkU3MTAgLyogQ29udGVudEZpbHRlcmluZy5tbSAqLzsgfTsKQEAgLTk3
Nyw2ICs5NzksNyBAQAogCQkJCUE1N0EzNEYyMTZBRjZCMkIwMEMyNTAxRiAvKiBQYWdlVmlzaWJp
bGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQlBMTQwOUFEOTFFNzI1NEQ0MDA0OTQ5RDkgLyogcGFzc3dvcmQtcHJvdGVjdGVkLnBhZ2VzIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTlCRDZEM0E3MUY3QjIxREMwMEJENDk2MiAvKiBwYXN0
ZS1pbWFnZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTlCN0Q3NDBGMUY4Mzc4Nzcw
MDA2QzQzMiAvKiBwYXN0ZS1ydGZkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJM0ZD
QzRGRTgxRUM0RThDQTAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0MTUwODZEMURBMDQwQzUwMDQ0QkU5QiAvKiBwbGF5
LWF1ZGlvLW9uLWNsaWNrLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQxQUI5QTgx
RUY0Njk2QjAwODNGQTA4IC8qIHByZXZlbnQtb3BlcmF0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCkBAIC0xNTA1LDYgKzE1MDgsNyBAQAogCQk5QjRGOEZBMzE1OUQ1MkIxMDAyRDlGOTQg
LyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUI0RjhGQTYxNTlENTJDQTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9u
TmFtZWRJdGVtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBIVE1MQ29sbGVjdGlv
bk5hbWVkSXRlbS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Qjc5MTY0RjFC
RDg5RDBEMDBENTBCOEYgLyogRmlyc3RSZXNwb25kZXJTY3JvbGxpbmdQb3NpdGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpcnN0UmVzcG9uZGVyU2Nyb2xs
aW5nUG9zaXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCN0Q3NDBFMUY4
Mzc3RTYwMDA2QzQzMiAvKiBwYXN0ZS1ydGZkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicGFzdGUtcnRmZC5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJENDIzOTkxRTA0QkQ5ODAwMjAw
Mzk1IC8qIEF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXR0cmlidXRlZFN1YnN0cmlu
Z0ZvclByb3Bvc2VkUmFuZ2VXaXRoSW1hZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlCRDQyMzlCMUUwNEJGRDAwMDIwMDM5NSAvKiBjaGluZXNlLWNoYXJhY3Rlci13aXRoLWlt
YWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiY2hpbmVzZS1jaGFyYWN0ZXIt
d2l0aC1pbWFnZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJENkQzOUUx
RjdCMjAxRTAwQkQ0OTYyIC8qIHN1bnNldC1pbi1jdXBlcnRpbm8tNjAwcHguanBnICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UuanBlZzsgcGF0
aCA9ICJzdW5zZXQtaW4tY3VwZXJ0aW5vLTYwMHB4LmpwZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNTEzLDYgKzE1MTcsNyBAQAogCQk5QkQ2RDNBMTFGN0IyMDIxMDBCRDQ5NjIg
Lyogc3Vuc2V0LWluLWN1cGVydGluby0xMDBweC50aWZmICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UudGlmZjsgcGF0aCA9ICJzdW5zZXQtaW4t
Y3VwZXJ0aW5vLTEwMHB4LnRpZmYiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkQ2
RDNBNjFGN0IyMUNDMDBCRDQ5NjIgLyogcGFzdGUtaW1hZ2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwYXN0
ZS1pbWFnZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJEQ0NEODUxRjdE
MEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXN0
ZUltYWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkREOTU1NjFGODM2ODM2
MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVSVEZE
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QzY0REMzMTFENzYxOThBMDA0QjU5
OEUgLyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExMEYwNDdDMUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5h
Z2VyRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTlNG
aWxlTWFuYWdlckV4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExNDZB
OEExRDJENzA0RjAwMEZFNzEwIC8qIENvbnRlbnRGaWx0ZXJpbmcubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb250ZW50RmlsdGVyaW5nLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjAxMiw2ICsyMDE3LDcgQEAKIAkJCQlDRUE2Q0YyMjE5Q0NG
NUJEMDA2NEY1QTcgLyogT3BlbkFuZENsb3NlV2luZG93Lm1tICovLAogCQkJCUNFQkNBMTJFMUUz
QTY2MDEwMEM3MzI5MyAvKiBPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeS5tbSAqLywKIAkJ
CQk5QkRDQ0Q4NTFGN0QwQjA3MDAwMDlBMTggLyogUGFzdGVJbWFnZS5tbSAqLywKKwkJCQk5QkRE
OTU1NjFGODM2ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tICovLAogCQkJCTNGQ0M0RkU0MUVD
NEU4NTIwMDc2RTM3QyAvKiBQaWN0dXJlSW5QaWN0dXJlRGVsZWdhdGUubW0gKi8sCiAJCQkJODNC
QUVFOEMxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLywK
IAkJCQlDOTU1MDFCRTE5QUQyRkFGMDA0OUJFM0UgLyogUHJlZmVyZW5jZXMubW0gKi8sCkBAIC0y
MzA1LDYgKzIzMTEsNyBAQAogCQkJCUNFQkNBMTM3MUUzQTgwMzQwMEM3MzI5MyAvKiBwYWdlLXdp
dGhvdXQtY3NwLmh0bWwgKi8sCiAJCQkJQTE0MDlBRDgxRTcyNTRBQzAwNDk0OUQ5IC8qIHBhc3N3
b3JkLXByb3RlY3RlZC5wYWdlcyAqLywKIAkJCQk5QkQ2RDNBNjFGN0IyMUNDMDBCRDQ5NjIgLyog
cGFzdGUtaW1hZ2UuaHRtbCAqLywKKwkJCQk5QjdENzQwRTFGODM3N0U2MDAwNkM0MzIgLyogcGFz
dGUtcnRmZC5odG1sICovLAogCQkJCTNGQ0M0RkU2MUVDNEU4N0UwMDc2RTM3QyAvKiBQaWN0dXJl
SW5QaWN0dXJlRGVsZWdhdGUuaHRtbCAqLywKIAkJCQlGNDE1MDg2QzFEQTA0MEMxMDA0NEJFOUIg
LyogcGxheS1hdWRpby1vbi1jbGljay5odG1sICovLAogCQkJCUY0MUFCOTk0MUVGNDY5MkMwMDgz
RkEwOCAvKiBwcmV2ZW50LW9wZXJhdGlvbi5odG1sICovLApAQCAtMzM3MSw2ICszMzc4LDcgQEAK
IAkJCQk3QzgzRTA1MTFEMEE2NDE4MDBGRUJDRjMgLyogUGFyc2VkQ29udGVudFJhbmdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjBBMUE0MTFBRTYwMDQ0N0M0QyAvKiBQYXN0ZWJvYXJk
Tm90aWZpY2F0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlCRENDRDg3MUY3RDBCMDcwMDAw
OUExOCAvKiBQYXN0ZUltYWdlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOUJERDk1NTgxRjgzNjgz
NjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDUzMUQw
QTY0M0EwMEZFQkNGMyAvKiBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzRkNDNEZFNTFFQzRFODUyMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRl
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQUYxQTQxMUEzODAwNDQ3QzRDIC8qIFBsYXRm
b3JtVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tCmluZGV4IDA1ZGFjMWRjYWUzMDVi
NmY1MjcwMzQ5NDc1MjBhZTljN2UxNzJmM2EuLjRiN2ZjM2NkZjZmZDBmMDQ0NDk4OTBmZDAyZjYx
Njg4ZmEzM2VhOWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUGFzdGVJbWFnZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Bhc3RlSW1hZ2UubW0KQEAgLTI3LDEwICsyNyw4IEBACiAKICNpZiBXS19BUElfRU5B
QkxFRCAmJiBQTEFURk9STShDT0NPQSkKIAotI2ltcG9ydCAiQXBwS2l0U1BJLmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgotI2ltcG9y
dCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVJURkQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Bhc3RlUlRGRC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzM2NDBjMjVkNWJlMDY2ZTQ2
YTA4OGE1YmMzY2E0ODlmZDJiMjRjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVJURkQubW0KQEAgLTAsMCArMSw5NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBM
QVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAi
VGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSA8TW9iaWxl
Q29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorI2VuZGlmCisKK0BpbnRlcmZhY2Ug
V0tXZWJWaWV3ICgpCistICh2b2lkKXBhc3RlOihpZClzZW5kZXI7CitAZW5kCisKKyNpZiBQTEFU
Rk9STShNQUMpCit2b2lkIHdyaXRlUlRGRFRvUGFzdGVib2FyZChOU0RhdGEgKmRhdGEpCit7Cisg
ICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3Q6TlNSVEZEUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKKyAgICBbW05T
UGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gc2V0RGF0YTpkYXRhIGZvclR5cGU6TlNSVEZE
UGJvYXJkVHlwZV07Cit9CisjZWxzZQorCitAaW50ZXJmYWNlIE5TQXR0cmlidXRlZFN0cmluZyAo
KQorLSAoaWQpaW5pdFdpdGhSVEY6KE5TRGF0YSAqKWRhdGEgZG9jdW1lbnRBdHRyaWJ1dGVzOihO
U0RpY3Rpb25hcnkgKiopZGljdDsKKy0gKGlkKWluaXRXaXRoUlRGRDooTlNEYXRhICopZGF0YSBk
b2N1bWVudEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKilkaWN0OworLSAoTlNEYXRhICopUlRG
RnJvbVJhbmdlOihOU1JhbmdlKXJhbmdlIGRvY3VtZW50QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5
ICopZGljdDsKKy0gKE5TRGF0YSAqKVJURkRGcm9tUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgZG9jdW1l
bnRBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKilkaWN0OworLSAoQk9PTCljb250YWluc0F0dGFj
aG1lbnRzOworQGVuZAorCit2b2lkIHdyaXRlUlRGRFRvUGFzdGVib2FyZChOU0RhdGEgKmRhdGEp
Cit7CisgICAgW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldEl0ZW1zOkBbW05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpkYXRhIGZvcktleTooTlNTdHJpbmcgKilr
VVRUeXBlRmxhdFJURkRdXV07Cit9CisjZW5kaWYKKworVEVTVChQYXN0ZVJURkQsIEVtcHR5UlRG
RCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjwhRE9DVFlQRSBodG1sPjxodG1sPjxib2R5
PjxkaXYgaWQ9J2VkaXRvcicgY29udGVudGVkaXRhYmxlPjwvZGl2PjwvYm9keT48L2h0bWw+Il07
CisKKyAgICB3cml0ZVJURkRUb1Bhc3RlYm9hcmQoW05TRGF0YSBkYXRhXSk7CisgICAgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdlZGl0b3InKS5mb2N1cygpIl07CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKK30KKworVEVT
VChQYXN0ZVJURkQsIEltYWdlRWxlbWVudHNVc2VCbG9iVVJMKQoreworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0
UGFnZU5hbWVkOkAicGFzdGUtcnRmZCJdOworCisgICAgYXV0byAqcG5nRGF0YSA9IFtOU0RhdGEg
ZGF0YVdpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIG1haW5CdW5kbGVdIHBhdGhGb3JSZXNv
dXJjZTpAInN1bnNldC1pbi1jdXBlcnRpbm8tMjAwcHgiIG9mVHlwZTpAInBuZyIgaW5EaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAgICBhdXRvIGF0dGFjaG1lbnQgPSBh
ZG9wdE5TKFtbTlNUZXh0QXR0YWNobWVudCBhbGxvY10gaW5pdFdpdGhEYXRhOnBuZ0RhdGEgb2ZU
eXBlOihOU1N0cmluZyAqKWtVVFR5cGVQTkddKTsKKyAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0
cmluZyA9IFtOU0F0dHJpYnV0ZWRTdHJpbmcgYXR0cmlidXRlZFN0cmluZ1dpdGhBdHRhY2htZW50
OmF0dGFjaG1lbnQuZ2V0KCldOworICAgIE5TRGF0YSAqUlRGRERhdGEgPSBbc3RyaW5nIFJURkRG
cm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSBkb2N1bWVudEF0dHJpYnV0
ZXM6QHsgfV07CisKKyAgICB3cml0ZVJURkRUb1Bhc3RlYm9hcmQoUlRGRERhdGEpOworICAgIFt3
ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImxvYWRl
ZCJdOworICAgIEVYUEVDVF9XS19TVFJFUSgiMjAwIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImltYWdlRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lt
ZycpOyBpbWFnZUVsZW1lbnQud2lkdGgiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJibG9iOiIs
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ1cmwgPSBuZXcgVVJMKGlt
YWdlRWxlbWVudC5zcmMpLnByb3RvY29sIl0pOworfQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJM
RUQgJiYgUExBVEZPUk0oTUFDKQorCisKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9wYXN0ZS1ydGZkLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL3Bhc3RlLXJ0ZmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OGI2MDk4YTk0
YTIzNDM3ZGNhOTU1OWQ3N2Y4NjdhNDJlMGUyNjMyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9wYXN0ZS1ydGZkLmh0bWwKQEAgLTAsMCAr
MSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0iZWRpdG9y
IiBjb250ZW50ZWRpdGFibGU+PC9kaXY+Cis8c2NyaXB0PgorY29uc3QgZWRpdG9yID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpOworZWRpdG9yLmZvY3VzKCk7CisKK2VkaXRvci5h
ZGRFdmVudExpc3RlbmVyKCdwYXN0ZScsIChldmVudCkgPT4geworICAgIHNldFRpbWVvdXQoKCkg
PT4geworICAgICAgIGxldCBpbWcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbWcnKTsKKyAg
ICAgICBpZiAoaW1nLmNvbXBsZXRlKQorICAgICAgICAgICBub3RpZnlMb2FkZWQoKTsKKyAgICAg
ICBlbHNlCisgICAgICAgICAgIGltZy5vbmxvYWQgPSBub3RpZnlMb2FkZWQ7CisgICAgfSwgMCk7
Cit9KTsKKworZnVuY3Rpb24gbm90aWZ5TG9hZGVkKCkKK3sKKyAgICB3ZWJraXQubWVzc2FnZUhh
bmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdsb2FkZWQnKTsKK30KKworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322554</attachid>
            <date>2017-10-03 11:45:18 -0700</date>
            <delta_ts>2017-10-03 11:48:59 -0700</delta_ts>
            <desc>Fixed builds</desc>
            <filename>bug-177801-20171003114517.patch</filename>
            <type>text/plain</type>
            <size>27062</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2NhOTU0ZDYwZjExYjhh
ODJjM2MxNTY5MDZlMTJiZTAxNjk0OWI0NS4uMTdmYTdjMTJhYjIyMDJjMTU3MTVkOTFkYmQxNTgw
Y2I2OGY1YmQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE3LTEwLTAzICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBibG9iIFVSTCB3aGVu
IHBhc3RpbmcgUlRGRCBpbnN0ZWFkIG9mIG92ZXJyaWRpbmcgRG9jdW1lbnRMb2FkZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzgwMQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzQ1NDIyNzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gsIHBhc3RpbmcgUlRGRCByZXN1
bHRlZCBpbiBpbWFnZXMgYW5kIG90aGVyIHN1YnJlc291cmNlcyBpbiBSVEZEIGFyZSBiZWluZyBw
bGFjZWQKKyAgICAgICAgaW50byB0aGUgZG9jdW1lbnQgdXNpbmcgV2ViS2l0IGZha2UgVVJMLCBh
bmQgRG9jdW1lbnRMb2FkZXIgd2FzIG92ZXJyaWRkZW4gdG8gcmV0dXJuIHRoZSBhcHByb3ByYWl0
ZQorICAgICAgICBkYXRhIHVwb24gcmVzb3VyY2UgcmVxdWVzdHMuIFRoaXMgaXMgYmFkIGJlY2F1
c2UgdGhlcmUgaXMgbm8gbWVjaGFuaXNtIGZvciB3ZWJzaXRlcyB0byBhY2Nlc3MgaXRzIGNvbnRl
bnQuCisKKyAgICAgICAgTGlrZSByMjIyMTE5IGFuZCByMjA4NDUxLCB0aGlzIHBhdGNoIGZpeGVz
IHRoaWUgcHJvYmxlbSBieSB1c2luZyBhIGJsb2IgVVJMIGluc3RlYWQgb2YgYSBXZWJLaXQgZmFr
ZSBVUkwuCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGEgQmxvYjo6Y3JlYXRlIHZhcmlh
bnQgd2hpY2ggdGFrZXMgYSBTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgQVBJIFRlc3RzOiBQYXN0
ZVJURkQKKworICAgICAgICAqIGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1
ZmZlcik6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZExvYWRpbmdTY29wZSk6IEV4dHJhY3RlZCBvdXQg
b2YgY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMgZm9yIGNsYXJpdHkuCisgICAgICAgIChX
ZWJDb3JlOjpEZWZlcnJlZExvYWRpbmdTY29wZTo6RGVmZXJyZWRMb2FkaW5nU2NvcGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVmZXJyZWRMb2FkaW5nU2NvcGU6On5EZWZlcnJlZExvYWRpbmdTY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyk6IElu
c3RlYWQgb2YgYWRkaW5nIHJlc291cmNlcyB0byBkb2N1bWVudCBsb2FkZXIsIHJlcGxhY2UgZWFj
aAorICAgICAgICBVUkwgaW4gdGhlIGRvY3VtZW50IGJ5IGEgYmxvYiBVUkwuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UpOgorICAgICAgICAqIGVkaXRpbmcv
bWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VTdWJyZXNvdXJjZVVSTHMpOiBB
ZGRlZC4gQSBoZWxwZXIgdG8gcmVwbGFjZSBlYWNoIFVSTCBpbiB0aGUgZG9jdW1lbnQgZnJhZ21l
bnQgYnkgYSBibG9iCisgICAgICAgIFVSTCBjcmVhdGVkIGZvciBlYWNoIHN1YnJlc291cmNlLiBU
aGlzIHdvbid0IHdvcmsgZm9yIGlmcmFtZXMgb3Igc3Jjc2V0IGJ1dCB0aGF0J3Mgb2theSBmb3Ig
bm93IHNpbmNlIERPTQorICAgICAgICBjb25zdHJ1Y3RlZCBmcm9tIFJURkQgZG9lc24ndCB1c2Ug
ZWl0aGVyLgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmg6CisgICAgICAgICogZmlsZWFwaS9C
bG9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OkJsb2IpOiBBZGRlZCBhIHZhcmlhbnQg
d2hpY2ggdGFrZXMgYSBTaGFyZWRCdWZmZXIuCisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iOjpjcmVhdGUpOiBEaXR0by4KKwogMjAxNy0xMC0wMiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgTGlu
ZUVuZGluZy57aCxjcHB9IGZyb20gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0IHRvIHd0Zi90ZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGUwZDg3M2MzOTU2YWQ5Y2MyMTczMmNkNzdjYTkwOTdjZDEzYTc5Y2QuLjllMzdk
MDBlZTMyMzYwZDM2ZDgyZjg3MmVlY2RjMDBkMGZmOGJkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTctMTAtMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgVXNlIGJsb2IgVVJMIHdoZW4gcGFzdGluZyBSVEZEIGluc3RlYWQgb2Ygb3ZlcnJpZGlu
ZyBEb2N1bWVudExvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc3ODAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDU0MjI3MD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYXNz
ZXJ0aW9uIGZhaWx1cmUgd2hlbiBSVEZEIGNvbnRlbnQgaXMgZW1wdHkuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorCiAy
MDE3LTEwLTAyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1v
dmUgbW9yZSBjb2RlIGludG8gUGFzdGVib2FyZEN1c3RvbURhdGEKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCAy
ZDBiNjRhYzQxZGM1MzljN2M5ZjkyNDM4ODFkYTFlNzA3NGE1YzMyLi5mNjhhMDBlZmFlN2E3YmI0
OTU4OWQwZmZlMjczMWJiZTZlODQyYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC00MCw5ICs0MCw3IEBA
IHZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSkKIAogdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBk
YXRhLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGZpbGVzLmFw
cGVuZChGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFdURk1vdmUoZGF0YSksIHR5cGUpLCBmaWxl
bmFtZSkpOworICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZl
ci5nZXQoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMjUzNTlh
ZGUyYmY3NTg2MWJkYmRmYjY0MjYzNDIyNTg5MTY4YzNkNy4uZTczMjIwY2M4ZTk1MDk4MDA1YzUy
YmU5YTE1Y2VmMDgwOTc5NmQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTEyMiw2ICsxMjIsMzggQEAgc3Rh
dGljIEZyYWdtZW50QW5kUmVzb3VyY2VzIGNyZWF0ZUZyYWdtZW50KEZyYW1lJiBmcmFtZSwgTlNB
dHRyaWJ1dGVkU3RyaW5nICpzdHIKIAogI2VuZGlmCiAKK2NsYXNzIERlZmVycmVkTG9hZGluZ1Nj
b3BlIHsKK3B1YmxpYzoKKyAgICBEZWZlcnJlZExvYWRpbmdTY29wZShGcmFtZSYgZnJhbWUpCisg
ICAgICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICAgICAgLCBtX2NhY2hlZFJlc291cmNlTG9hZGVy
KGZyYW1lLmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCkpCisgICAgeworICAgICAg
ICBpZiAoIWZyYW1lLnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpKSB7CisgICAgICAgICAgICBmcmFt
ZS5wYWdlKCktPnNldERlZmVyc0xvYWRpbmcodHJ1ZSk7CisgICAgICAgICAgICBtX2RpZEVuYWJs
ZWREZWZlcnJlZExvYWRpbmcgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fY2Fj
aGVkUmVzb3VyY2VMb2FkZXItPmltYWdlc0VuYWJsZWQoKSkgeworICAgICAgICAgICAgbV9jYWNo
ZWRSZXNvdXJjZUxvYWRlci0+c2V0SW1hZ2VzRW5hYmxlZChmYWxzZSk7CisgICAgICAgICAgICBt
X2RpZERpc2FibGVJbWFnZSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB+RGVmZXJy
ZWRMb2FkaW5nU2NvcGUoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZGlkRW5hYmxlZERlZmVycmVk
TG9hZGluZykKKyAgICAgICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnNldEltYWdlc0Vu
YWJsZWQodHJ1ZSk7CisgICAgICAgIGlmIChtX2RpZERpc2FibGVJbWFnZSkKKyAgICAgICAgICAg
IG1fZnJhbWUtPnBhZ2UoKS0+c2V0RGVmZXJzTG9hZGluZyhmYWxzZSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIFJlZjxGcmFtZT4gbV9mcmFtZTsKKyAgICBSZWY8Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CisgICAgYm9vbCBtX2RpZEVuYWJsZWREZWZlcnJl
ZExvYWRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9kaWREaXNhYmxlSW1hZ2UgeyBmYWxzZSB9
OworfTsKKwogUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVz
b3VyY2VzKEZyYW1lJiBmcmFtZSwgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAg
aWYgKCFmcmFtZS5wYWdlKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCkBAIC0xMzEsMjUgKzE2Mywx
OCBAQCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJj
ZXMoRnJhbWUmIGZyYW1lLCBOU0F0dHJpYnV0ZQogICAgIGlmICghZG9jdW1lbnQuaXNIVE1MRG9j
dW1lbnQoKSB8fCAhc3RyaW5nKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGJvb2wg
d2FzRGVmZXJyaW5nQ2FsbGJhY2tzID0gZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCk7Ci0g
ICAgaWYgKCF3YXNEZWZlcnJpbmdDYWxsYmFja3MpCi0gICAgICAgIGZyYW1lLnBhZ2UoKS0+c2V0
RGVmZXJzTG9hZGluZyh0cnVlKTsKLQotICAgIGF1dG8mIGNhY2hlZFJlc291cmNlTG9hZGVyID0g
ZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICBib29sIHdhc0ltYWdlc0VuYWJs
ZWQgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci5pbWFnZXNFbmFibGVkKCk7Ci0gICAgaWYgKHdhc0lt
YWdlc0VuYWJsZWQpCi0gICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLnNldEltYWdlc0VuYWJs
ZWQoZmFsc2UpOwotCisgICAgRGVmZXJyZWRMb2FkaW5nU2NvcGUgc2NvcGUoZnJhbWUpOwogICAg
IGF1dG8gZnJhZ21lbnRBbmRSZXNvdXJjZXMgPSBjcmVhdGVGcmFnbWVudChmcmFtZSwgc3RyaW5n
KTsKLSAgICBpZiAoYXV0byogbG9hZGVyID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KSkgewotICAgICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogZnJhZ21lbnRBbmRSZXNvdXJjZXMu
cmVzb3VyY2VzKQotICAgICAgICAgICAgbG9hZGVyLT5hZGRBcmNoaXZlUmVzb3VyY2UoV1RGTW92
ZShyZXNvdXJjZSkpOwotICAgIH0KKyAgICBpZiAoIWZyYWdtZW50QW5kUmVzb3VyY2VzLmZyYWdt
ZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICh3YXNJbWFnZXNFbmFibGVk
KQotICAgICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci5zZXRJbWFnZXNFbmFibGVkKHRydWUpOwot
ICAgIGlmICghd2FzRGVmZXJyaW5nQ2FsbGJhY2tzKQotICAgICAgICBmcmFtZS5wYWdlKCktPnNl
dERlZmVyc0xvYWRpbmcoZmFsc2UpOworICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBBdG9taWNT
dHJpbmc+IGJsb2JVUkxNYXA7CisgICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291cmNlPiYg
c3VicmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMpIHsKKyAgICAgICAg
YXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJlc291cmNl
LT5taW1lVHlwZSgpKTsKKyAgICAgICAgU3RyaW5nIGJsb2JVUkwgPSBET01VUkw6OmNyZWF0ZU9i
amVjdFVSTChkb2N1bWVudCwgYmxvYik7CisgICAgICAgIGJsb2JVUkxNYXAuc2V0KHN1YnJlc291
cmNlLT51cmwoKS5zdHJpbmcoKSwgYmxvYlVSTCk7CisgICAgfQorICAgIHJlcGxhY2VTdWJyZXNv
dXJjZVVSTHMoKmZyYWdtZW50QW5kUmVzb3VyY2VzLmZyYWdtZW50LCBXVEZNb3ZlKGJsb2JVUkxN
YXApKTsKIAogICAgIHJldHVybiBXVEZNb3ZlKGZyYWdtZW50QW5kUmVzb3VyY2VzLmZyYWdtZW50
KTsKIH0KQEAgLTIyNSw5ICsyNTAsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFp
blRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlKQogewot
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGRhdGEuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7Ci0gICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSksIHR5cGUpOworICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCks
IHR5cGUpOwogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVu
dCA9ICpmcmFtZS5kb2N1bWVudCgpOwogICAgIFN0cmluZyBibG9iVVJMID0gRE9NVVJMOjpjcmVh
dGVPYmplY3RVUkwoZG9jdW1lbnQsIGJsb2IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmlu
ZGV4IGE1YmRlOWYwMWI2MTQzNTdhMzU5MTU1MjZhODE2ZWE0YTY5YjVmYWIuLjA3ZTI2MTlhZGM1
MjE5MDc0ZTJlZmMxNzc1ZDZiYzJiNjQ3OGQxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAKQEAgLTExNiw2ICsxMTYsMjUgQEAgc3RhdGljIHZvaWQgY29tcGxldGVVUkxzKERvY3VtZW50
RnJhZ21lbnQqIGZyYWdtZW50LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwpCiAgICAgZm9yIChhdXRv
JiBjaGFuZ2UgOiBjaGFuZ2VzKQogICAgICAgICBjaGFuZ2UuYXBwbHkoKTsKIH0KKwordm9pZCBy
ZXBsYWNlU3VicmVzb3VyY2VVUkxzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBI
YXNoTWFwPEF0b21pY1N0cmluZywgQXRvbWljU3RyaW5nPiYmIHJlcGxhY2VtZW50TWFwKQorewor
ICAgIFZlY3RvcjxBdHRyaWJ1dGVDaGFuZ2U+IGNoYW5nZXM7CisgICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oZnJhZ21lbnQpKSB7CisgICAgICAgIGlm
ICghZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgZm9yIChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA6IGVsZW1lbnQuYXR0cmlidXRlc0l0
ZXJhdG9yKCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHdvbid0IHdvcmsgZm9yIHNy
Y3NldC4KKyAgICAgICAgICAgIGlmIChlbGVtZW50LmF0dHJpYnV0ZUNvbnRhaW5zVVJMKGF0dHJp
YnV0ZSkgJiYgIWF0dHJpYnV0ZS52YWx1ZSgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAg
IGF1dG8gcmVwbGFjZW1lbnQgPSByZXBsYWNlbWVudE1hcC5nZXQoYXR0cmlidXRlLnZhbHVlKCkp
OworICAgICAgICAgICAgICAgIGlmICghcmVwbGFjZW1lbnQuaXNOdWxsKCkpCisgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZXMuYXBwZW5kKEF0dHJpYnV0ZUNoYW5nZSgmZWxlbWVudCwgYXR0cmli
dXRlLm5hbWUoKSwgcmVwbGFjZW1lbnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKyAgICBmb3IgKGF1dG8mIGNoYW5nZSA6IGNoYW5nZXMpCisgICAgICAgIGNoYW5nZS5hcHBs
eSgpOworfQogICAgIAogY2xhc3MgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IgZmluYWwgOiBwdWJs
aWMgTWFya3VwQWNjdW11bGF0b3IgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5k
ZXggYWM5NDY5M2MxMDJjZDFhMGQ4MTJiNzZjYTNiNGNjOTRmMmIxOWRkYS4uMmM3YjMwMzM1MWEz
YTNmN2NmMDhhYzIxNTIwMjZlNDA3ZmUwZmI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgi
CiAjaW5jbHVkZSAiSFRNTEludGVyY2hhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0
LDYgKzQ1LDggQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBSYW5n
ZTsKIAordm9pZCByZXBsYWNlU3VicmVzb3VyY2VVUkxzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYm
LCBIYXNoTWFwPEF0b21pY1N0cmluZywgQXRvbWljU3RyaW5nPiYmKTsKKwogZW51bSBFQ2hpbGRy
ZW5Pbmx5IHsgSW5jbHVkZU5vZGUsIENoaWxkcmVuT25seSB9OwogZW51bSBFQWJzb2x1dGVVUkxz
IHsgRG9Ob3RSZXNvbHZlVVJMcywgUmVzb2x2ZUFsbFVSTHMsIFJlc29sdmVOb25Mb2NhbFVSTHMg
fTsKIGVudW0gRUZyYWdtZW50U2VyaWFsaXphdGlvbiB7IEhUTUxGcmFnbWVudFNlcmlhbGl6YXRp
b24sIFhNTEZyYWdtZW50U2VyaWFsaXphdGlvbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5k
ZXggZWYyOGQ1NzRkZDQyMzVlMGU5N2RkMzIxNjEzN2JiNTA5OGNjNDExNy4uYTdjZDRlNDczYzc2
NGIwYzlhZGE4MjllOTdjMjQ0ZDRmMGJjODE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQmxvYlVSTC5oIgogI2luY2x1ZGUgIkZpbGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTk2
LDYgKzk3LDE5IEBAIEJsb2I6OkJsb2IoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFy
dFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByCiAgICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIGJ1aWxkZXIuZmluYWxpemUo
KSwgbV90eXBlKTsKIH0KIAorQmxvYjo6QmxvYihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKKyAgICA6IG1fdHlwZShjb250ZW50VHlwZSkKKyAg
ICAsIG1fc2l6ZShidWZmZXIuc2l6ZSgpKQoreworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwor
ICAgIGRhdGEuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworCisgICAgVmVj
dG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7CisgICAgYmxvYlBhcnRzLmFwcGVuZChCbG9iUGFydChX
VEZNb3ZlKGRhdGEpKSk7CisgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVy
bmFsVVJMKCk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1f
aW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOworfQorCiBCbG9i
OjpCbG9iKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
CiAgICAgOiBtX3R5cGUoY29udGVudFR5cGUpCiAgICAgLCBtX3NpemUoZGF0YS5zaXplKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYi5oCmluZGV4IDlmNDI0MjMwNzc3NzNmOWNkYWViMjVlYTU1MzgwMTY2NzA3
YWI1ODQuLmNhZWRkYzg2NWRmOWQ1YjJhY2NjYzI3NWU3ZGZhMjQ5ZjVlNzBkN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYi5oCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQmxvYjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiAKIHVzaW5nIEJsb2JQYXJ0VmFyaWFudCA9IFZhcmlhbnQ8UmVmUHRyPEpTQzo6QXJyYXlC
dWZmZXJWaWV3PiwgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+LCBSZWZQdHI8QmxvYj4sIFN0cmlu
Zz47CiAKQEAgLTYwLDYgKzYxLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQmxvYihXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBwcm9wZXJ0eUJhZykpOwogICAg
IH0KIAorICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQmxvYihidWZmZXIsIGNvbnRlbnRUeXBlKSk7CisgICAgfQorCiAgICAgc3Rh
dGljIFJlZjxCbG9iPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2Io
V1RGTW92ZShkYXRhKSwgY29udGVudFR5cGUpKTsKQEAgLTk5LDYgKzEwNSw3IEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICBCbG9iKCk7CiAgICAgQmxvYihWZWN0b3I8QmxvYlBhcnRWYXJpYW50
PiYmLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmKTsKKyAgICBCbG9iKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogICAgIEJsb2IoVmVjdG9yPHVpbnQ4X3Q+
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogCiAgICAgZW51bSBSZWZlcmVuY2luZ0V4
aXN0aW5nQmxvYkNvbnN0cnVjdG9yIHsgcmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3Rv
ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVi
b2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0
ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCA0Yzk1MTI1ZDY0OTYyZjAwOTBiMmY1YjA4NDg0MjUw
ZjMzNzg5MTg3Li41NzZkMjQzMTFkODM1NzQ2YmU4OWNiYTYzZjllMjFkZTRkMmZlZDI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJk
UHJveHlDb2NvYS5tbQpAQCAtNzUsNiArNzUsOCBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
Z2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZQog
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAgc2l6ZSA9IGJ1ZmZlci0+c2l6
ZSgpOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuOwogICAgIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZSk7
CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlZDA4NTk2NDBlYmM2
OGY3MWQxMjI3MWI3MDA2Mzk5MGI2YmVhMDc4Li41NDdiNmE2Mjc0ZDEzYjcyYTU2NzU1NTNiN2Nj
MDBiMTQ1NjllODdkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMTAtMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGJsb2IgVVJMIHdoZW4gcGFzdGluZyBSVEZEIGlu
c3RlYWQgb2Ygb3ZlcnJpZGluZyBEb2N1bWVudExvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3ODAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8zNDU0MjI3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgd2hl
biBwYXN0aW5nIGFuIGVtcHR5IFJURkQgYXMgd2VsbCBhcyBhIHRlc3QgZm9yIHBhc3RpbmcKKyAg
ICAgICAgUlRGRCB3aXRoIGFuIGltYWdlLCB3aGljaCBzaG91bGQgcmVzdWx0IGluIGFuIGltYWdl
IGVsZW1lbnQgd2l0aCBhIGJsb2IgVVJMLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVSVEZELm1tOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcGFzdGUtcnRmZC5odG1sOgorCiAyMDE3LTEwLTAyICBN
eWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBX
U0wgZGVtbyBjb21wYXRpYmxlIHdpdGggTWljcm9zb2Z0IEVkZ2UKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYzBmNTAwNjIxNGY3MTIxMmJmMjk4NGQ4NjA3MTAzNmM4ODk4MTMwNy4uZjg5YmI2
Nzc3ZjI4NTY3MWIxZTU2NWZlZWZkYzEzMmZmZjM5MzJlZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTU0NCw2ICs1NDQsNyBAQAogCQk5QjI2RkNDQTE1OUQxNkRFMDBDQzM3NjUgLyogSFRN
TEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyNkZDQjQxNTlEMTVFNzAwQ0MzNzY1IC8qIEhU
TUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sICovOyB9OwogCQk5QjI3MEZFRTFEREMyQzBC
MDAyRDUzRjMgLyogY2xvc2VkLXNoYWRvdy10cmVlLXRlc3QuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI3MEZFRDFEREMyNUZEMDAy
RDUzRjMgLyogY2xvc2VkLXNoYWRvdy10cmVlLXRlc3QuaHRtbCAqLzsgfTsKIAkJOUI0RjhGQTcx
NTlENTJERDAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI0RjhGQTYxNTlE
NTJDQTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi87IH07CisJCTlC
N0Q3NDBGMUY4Mzc4NzcwMDA2QzQzMiAvKiBwYXN0ZS1ydGZkLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI3RDc0MEUxRjgzNzdFNjAw
MDZDNDMyIC8qIHBhc3RlLXJ0ZmQuaHRtbCAqLzsgfTsKIAkJOUJENDIzOUExRTA0QkQ5ODAwMjAw
Mzk1IC8qIEF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJENDIzOTkxRTA0
QkQ5ODAwMjAwMzk1IC8qIEF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlV2l0aElt
YWdlLm1tICovOyB9OwogCQk5QkQ0MjM5QzFFMDRDMDFDMDAyMDAzOTUgLyogY2hpbmVzZS1jaGFy
YWN0ZXItd2l0aC1pbWFnZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDQyMzlCMUUwNEJGRDAwMDIwMDM5NSAvKiBjaGluZXNlLWNo
YXJhY3Rlci13aXRoLWltYWdlLmh0bWwgKi87IH07CiAJCTlCRDZEM0EyMUY3QjIxODMwMEJENDk2
MiAvKiBzdW5zZXQtaW4tY3VwZXJ0aW5vLTEwMHB4LnRpZmYgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJENkQzQTExRjdCMjAyMTAwQkQ0OTYy
IC8qIHN1bnNldC1pbi1jdXBlcnRpbm8tMTAwcHgudGlmZiAqLzsgfTsKQEAgLTU1Miw2ICs1NTMs
NyBAQAogCQk5QkQ2RDNBNTFGN0IyMTgzMDBCRDQ5NjIgLyogc3Vuc2V0LWluLWN1cGVydGluby02
MDBweC5qcGcgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUJENkQzOUUxRjdCMjAxRTAwQkQ0OTYyIC8qIHN1bnNldC1pbi1jdXBlcnRpbm8tNjAw
cHguanBnICovOyB9OwogCQk5QkQ2RDNBNzFGN0IyMURDMDBCRDQ5NjIgLyogcGFzdGUtaW1hZ2Uu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QkQ2RDNBNjFGN0IyMUNDMDBCRDQ5NjIgLyogcGFzdGUtaW1hZ2UuaHRtbCAqLzsgfTsKIAkJ
OUJEQ0NEODcxRjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkRDQ0Q4NTFGN0QwQjA3MDAwMDlBMTgg
LyogUGFzdGVJbWFnZS5tbSAqLzsgfTsKKwkJOUJERDk1NTgxRjgzNjgzNjAwRDIwQzYwIC8qIFBh
c3RlUlRGRC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlCREQ5NTU2MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gKi87IH07CiAJCTlDNjRE
QzMyMUQ3NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUM2NERDMzExRDc2MTk4
QTAwNEI1OThFIC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgKi87IH07CiAJCUExMEYw
NDdFMUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwRjA0N0MxRTNBRDI5QzAwQzk1
RTE5IC8qIE5TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi87IH07CiAJCUExMTQ2QThEMUQyRDcxMTUw
MDBGRTcxMCAvKiBDb250ZW50RmlsdGVyaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNDZBOEExRDJENzA0RjAwMEZFNzEwIC8qIENvbnRlbnRG
aWx0ZXJpbmcubW0gKi87IH07CkBAIC05NzcsNiArOTc5LDcgQEAKIAkJCQlBNTdBMzRGMjE2QUY2
QjJCMDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQTE0MDlBRDkxRTcyNTRENDAwNDk0OUQ5IC8qIHBh
c3N3b3JkLXByb3RlY3RlZC5wYWdlcyBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk5QkQ2RDNB
NzFGN0IyMURDMDBCRDQ5NjIgLyogcGFzdGUtaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKKwkJCQk5QjdENzQwRjFGODM3ODc3MDAwNkM0MzIgLyogcGFzdGUtcnRmZC5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCTNGQ0M0RkU4MUVDNEU4Q0EwMDc2RTM3QyAvKiBQaWN0dXJl
SW5QaWN0dXJlRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDE1MDg2
RDFEQTA0MEM1MDA0NEJFOUIgLyogcGxheS1hdWRpby1vbi1jbGljay5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCUY0MUFCOUE4MUVGNDY5NkIwMDgzRkEwOCAvKiBwcmV2ZW50LW9wZXJh
dGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTUwNSw2ICsxNTA4LDcgQEAKIAkJ
OUI0RjhGQTMxNTlENTJCMTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSFRNTENvbGxlY3Rpb25OYW1l
ZEl0ZW0ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNEY4RkE2MTU5RDUyQ0Ew
MDJEOUY5NCAvKiBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUI3OTE2NEYxQkQ4OUQwRDAwRDUwQjhGIC8qIEZpcnN0UmVzcG9uZGVy
U2Nyb2xsaW5nUG9zaXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBGaXJzdFJlc3BvbmRlclNjcm9sbGluZ1Bvc2l0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5QjdENzQwRTFGODM3N0U2MDAwNkM0MzIgLyogcGFzdGUtcnRmZC5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gInBhc3RlLXJ0ZmQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlCRDQyMzk5MUUwNEJEOTgwMDIwMDM5NSAvKiBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJv
cG9zZWRSYW5nZVdpdGhJbWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkQ0MjM5QjFFMDRCRkQwMDAyMDAzOTUgLyog
Y2hpbmVzZS1jaGFyYWN0ZXItd2l0aC1pbWFnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gImNoaW5lc2UtY2hhcmFjdGVyLXdpdGgtaW1hZ2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlCRDZEMzlFMUY3QjIwMUUwMEJENDk2MiAvKiBzdW5zZXQtaW4tY3Vw
ZXJ0aW5vLTYwMHB4LmpwZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGltYWdlLmpwZWc7IHBhdGggPSAic3Vuc2V0LWluLWN1cGVydGluby02MDBweC5q
cGciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUxMyw2ICsxNTE3LDcgQEAKIAkJ
OUJENkQzQTExRjdCMjAyMTAwQkQ0OTYyIC8qIHN1bnNldC1pbi1jdXBlcnRpbm8tMTAwcHgudGlm
ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdl
LnRpZmY7IHBhdGggPSAic3Vuc2V0LWluLWN1cGVydGluby0xMDBweC50aWZmIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJENkQzQTYxRjdCMjFDQzAwQkQ0OTYyIC8qIHBhc3RlLWlt
YWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAicGFzdGUtaW1hZ2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCRENDRDg1MUY3RDBCMDcwMDAwOUExOCAvKiBQYXN0ZUltYWdlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVJbWFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOUJERDk1NTYxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFBhc3RlUlRGRC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOUM2NERDMzExRDc2MTk4QTAwNEI1OThFIC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBZb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTBGMDQ3QzFFM0FE
MjlDMDBDOTVFMTkgLyogTlNGaWxlTWFuYWdlckV4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5TRmlsZU1hbmFnZXJFeHRyYXMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExMTQ2QThBMUQyRDcwNEYwMDBGRTcxMCAvKiBDb250ZW50Rmls
dGVyaW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29udGVu
dEZpbHRlcmluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMTIsNiArMjAx
Nyw3IEBACiAJCQkJQ0VBNkNGMjIxOUNDRjVCRDAwNjRGNUE3IC8qIE9wZW5BbmRDbG9zZVdpbmRv
dy5tbSAqLywKIAkJCQlDRUJDQTEyRTFFM0E2NjAxMDBDNzMyOTMgLyogT3ZlcnJpZGVDb250ZW50
U2VjdXJpdHlQb2xpY3kubW0gKi8sCiAJCQkJOUJEQ0NEODUxRjdEMEIwNzAwMDA5QTE4IC8qIFBh
c3RlSW1hZ2UubW0gKi8sCisJCQkJOUJERDk1NTYxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRG
RC5tbSAqLywKIAkJCQkzRkNDNEZFNDFFQzRFODUyMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVy
ZURlbGVnYXRlLm1tICovLAogCQkJCTgzQkFFRThDMUVGNDYyNTUwMERERTg5NCAvKiBQbHVnaW5M
b2FkQ2xpZW50UG9saWNpZXMubW0gKi8sCiAJCQkJQzk1NTAxQkUxOUFEMkZBRjAwNDlCRTNFIC8q
IFByZWZlcmVuY2VzLm1tICovLApAQCAtMjMwNSw2ICsyMzExLDcgQEAKIAkJCQlDRUJDQTEzNzFF
M0E4MDM0MDBDNzMyOTMgLyogcGFnZS13aXRob3V0LWNzcC5odG1sICovLAogCQkJCUExNDA5QUQ4
MUU3MjU0QUMwMDQ5NDlEOSAvKiBwYXNzd29yZC1wcm90ZWN0ZWQucGFnZXMgKi8sCiAJCQkJOUJE
NkQzQTYxRjdCMjFDQzAwQkQ0OTYyIC8qIHBhc3RlLWltYWdlLmh0bWwgKi8sCisJCQkJOUI3RDc0
MEUxRjgzNzdFNjAwMDZDNDMyIC8qIHBhc3RlLXJ0ZmQuaHRtbCAqLywKIAkJCQkzRkNDNEZFNjFF
QzRFODdFMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRlLmh0bWwgKi8sCiAJCQkJ
RjQxNTA4NkMxREEwNDBDMTAwNDRCRTlCIC8qIHBsYXktYXVkaW8tb24tY2xpY2suaHRtbCAqLywK
IAkJCQlGNDFBQjk5NDFFRjQ2OTJDMDA4M0ZBMDggLyogcHJldmVudC1vcGVyYXRpb24uaHRtbCAq
LywKQEAgLTMzNzEsNiArMzM3OCw3IEBACiAJCQkJN0M4M0UwNTExRDBBNjQxODAwRkVCQ0YzIC8q
IFBhcnNlZENvbnRlbnRSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwQTFBNDEx
QUU2MDA0NDdDNEMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk5QkRDQ0Q4NzFGN0QwQjA3MDAwMDlBMTggLyogUGFzdGVJbWFnZS5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTlCREQ5NTU4MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3QzgzRTA1MzFEMEE2NDNBMDBGRUJDRjMgLyogUGVuZGluZ0FQSVJlcXVl
c3RVUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZDQzRGRTUxRUM0RTg1MjAwNzZFMzdDIC8q
IFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUFG
MUE0MTFBMzgwMDQ0N0M0QyAvKiBQbGF0Zm9ybVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJ
bWFnZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFn
ZS5tbQppbmRleCAwNWRhYzFkY2FlMzA1YjZmNTI3MDM0OTQ3NTIwYWU5YzdlMTcyZjNhLi40Yjdm
YzNjZGY2ZmQwZjA0NDQ5ODkwZmQwMmY2MTY4OGZhMzNlYTliIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tCkBAIC0yNywxMCAr
MjcsOCBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oQ09DT0EpCiAKLSNpbXBv
cnQgIkFwcEtpdFNQSS5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQg
IlRlc3RXS1dlYlZpZXcuaCIKLSNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVSVEZELm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVJURkQubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGMzNjQwYzI1ZDViZTA2NmU0NmEwODhhNWJjM2NhNDg5ZmQyYjI0YwotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVSVEZE
Lm1tCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShDT0NPQSkKKworI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZP
Uk0oSU9TKQorI2luY2x1ZGUgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMu
aD4KKyNlbmRpZgorCitAaW50ZXJmYWNlIFdLV2ViVmlldyAoKQorLSAodm9pZClwYXN0ZTooaWQp
c2VuZGVyOworQGVuZAorCisjaWYgUExBVEZPUk0oTUFDKQordm9pZCB3cml0ZVJURkRUb1Bhc3Rl
Ym9hcmQoTlNEYXRhICpkYXRhKQoreworICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJv
YXJkXSBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TUlRGRFBib2FyZFR5
cGVdIG93bmVyOm5pbF07CisgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNl
dERhdGE6ZGF0YSBmb3JUeXBlOk5TUlRGRFBib2FyZFR5cGVdOworfQorI2Vsc2UKKworQGludGVy
ZmFjZSBOU0F0dHJpYnV0ZWRTdHJpbmcgKCkKKy0gKGlkKWluaXRXaXRoUlRGOihOU0RhdGEgKilk
YXRhIGRvY3VtZW50QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICoqKWRpY3Q7CistIChpZClpbml0
V2l0aFJURkQ6KE5TRGF0YSAqKWRhdGEgZG9jdW1lbnRBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkg
KiopZGljdDsKKy0gKE5TRGF0YSAqKVJURkZyb21SYW5nZTooTlNSYW5nZSlyYW5nZSBkb2N1bWVu
dEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWRpY3Q7CistIChOU0RhdGEgKilSVEZERnJvbVJh
bmdlOihOU1JhbmdlKXJhbmdlIGRvY3VtZW50QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopZGlj
dDsKKy0gKEJPT0wpY29udGFpbnNBdHRhY2htZW50czsKK0BlbmQKKwordm9pZCB3cml0ZVJURkRU
b1Bhc3RlYm9hcmQoTlNEYXRhICpkYXRhKQoreworICAgIFtbVUlQYXN0ZWJvYXJkIGdlbmVyYWxQ
YXN0ZWJvYXJkXSBzZXRJdGVtczpAW1tOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6
ZGF0YSBmb3JLZXk6KE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXV1dOworfQorI2VuZGlmCisK
K1RFU1QoUGFzdGVSVEZELCBFbXB0eVJURkQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0
MDAsIDQwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8
IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48ZGl2IGlkPSdlZGl0b3InIGNvbnRlbnRlZGl0YWJs
ZT48L2Rpdj48L2JvZHk+PC9odG1sPiJdOworCisgICAgd3JpdGVSVEZEVG9QYXN0ZWJvYXJkKFtO
U0RhdGEgZGF0YV0pOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJykuZm9jdXMoKSJdOworICAgIFt3ZWJW
aWV3IHBhc3RlOm5pbF07Cit9CisKK1RFU1QoUGFzdGVSVEZELCBJbWFnZUVsZW1lbnRzVXNlQmxv
YlVSTCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInBhc3RlLXJ0ZmQiXTsKKworICAg
IGF1dG8gKnBuZ0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBwYXRoRm9yUmVzb3VyY2U6QCJzdW5zZXQtaW4tY3VwZXJ0aW5vLTIwMHB4
IiBvZlR5cGU6QCJwbmciIGluRGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07
CisgICAgYXV0byBhdHRhY2htZW50ID0gYWRvcHROUyhbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2Nd
IGluaXRXaXRoRGF0YTpwbmdEYXRhIG9mVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlUE5HXSk7Cisg
ICAgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcgPSBbTlNBdHRyaWJ1dGVkU3RyaW5nIGF0dHJp
YnV0ZWRTdHJpbmdXaXRoQXR0YWNobWVudDphdHRhY2htZW50LmdldCgpXTsKKyAgICBOU0RhdGEg
KlJURkREYXRhID0gW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcg
bGVuZ3RoXSkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dOworCisgICAgd3JpdGVSVEZEVG9QYXN0
ZWJvYXJkKFJURkREYXRhKTsKKyAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOworCisgICAgW3dlYlZp
ZXcgd2FpdEZvck1lc3NhZ2U6QCJsb2FkZWQiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjIwMCIs
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbWFnZUVsZW1lbnQgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbWcnKTsgaW1hZ2VFbGVtZW50LndpZHRoIl0pOworICAg
IEVYUEVDVF9XS19TVFJFUSgiYmxvYjoiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAidXJsID0gbmV3IFVSTChpbWFnZUVsZW1lbnQuc3JjKS5wcm90b2NvbCJdKTsKK30K
KworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKE1BQykKKworCisKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcGFzdGUtcnRmZC5o
dG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9wYXN0ZS1ydGZkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNThiNjA5OGE5NGEyMzQzN2RjYTk1NTlkNzdmODY3YTQyZTBlMjYzMgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
cGFzdGUtcnRmZC5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8Ym9keT4KKzxkaXYgaWQ9ImVkaXRvciIgY29udGVudGVkaXRhYmxlPjwvZGl2PgorPHNjcmlw
dD4KK2NvbnN0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTsKK2Vk
aXRvci5mb2N1cygpOworCitlZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcigncGFzdGUnLCAoZXZlbnQp
ID0+IHsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICBsZXQgaW1nID0gZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcignaW1nJyk7CisgICAgICAgaWYgKGltZy5jb21wbGV0ZSkKKyAgICAgICAg
ICAgbm90aWZ5TG9hZGVkKCk7CisgICAgICAgZWxzZQorICAgICAgICAgICBpbWcub25sb2FkID0g
bm90aWZ5TG9hZGVkOworICAgIH0sIDApOworfSk7CisKK2Z1bmN0aW9uIG5vdGlmeUxvYWRlZCgp
Cit7CisgICAgd2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgn
bG9hZGVkJyk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322555</attachid>
            <date>2017-10-03 11:49:04 -0700</date>
            <delta_ts>2017-10-04 02:05:40 -0700</delta_ts>
            <desc>Fixed GTK+ builds</desc>
            <filename>bug-177801-20171003114901.patch</filename>
            <type>text/plain</type>
            <size>27911</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2NhOTU0ZDYwZjExYjhh
ODJjM2MxNTY5MDZlMTJiZTAxNjk0OWI0NS4uMTdmYTdjMTJhYjIyMDJjMTU3MTVkOTFkYmQxNTgw
Y2I2OGY1YmQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE3LTEwLTAzICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBibG9iIFVSTCB3aGVu
IHBhc3RpbmcgUlRGRCBpbnN0ZWFkIG9mIG92ZXJyaWRpbmcgRG9jdW1lbnRMb2FkZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzgwMQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzQ1NDIyNzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gsIHBhc3RpbmcgUlRGRCByZXN1
bHRlZCBpbiBpbWFnZXMgYW5kIG90aGVyIHN1YnJlc291cmNlcyBpbiBSVEZEIGFyZSBiZWluZyBw
bGFjZWQKKyAgICAgICAgaW50byB0aGUgZG9jdW1lbnQgdXNpbmcgV2ViS2l0IGZha2UgVVJMLCBh
bmQgRG9jdW1lbnRMb2FkZXIgd2FzIG92ZXJyaWRkZW4gdG8gcmV0dXJuIHRoZSBhcHByb3ByYWl0
ZQorICAgICAgICBkYXRhIHVwb24gcmVzb3VyY2UgcmVxdWVzdHMuIFRoaXMgaXMgYmFkIGJlY2F1
c2UgdGhlcmUgaXMgbm8gbWVjaGFuaXNtIGZvciB3ZWJzaXRlcyB0byBhY2Nlc3MgaXRzIGNvbnRl
bnQuCisKKyAgICAgICAgTGlrZSByMjIyMTE5IGFuZCByMjA4NDUxLCB0aGlzIHBhdGNoIGZpeGVz
IHRoaWUgcHJvYmxlbSBieSB1c2luZyBhIGJsb2IgVVJMIGluc3RlYWQgb2YgYSBXZWJLaXQgZmFr
ZSBVUkwuCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGEgQmxvYjo6Y3JlYXRlIHZhcmlh
bnQgd2hpY2ggdGFrZXMgYSBTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgQVBJIFRlc3RzOiBQYXN0
ZVJURkQKKworICAgICAgICAqIGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1
ZmZlcik6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZExvYWRpbmdTY29wZSk6IEV4dHJhY3RlZCBvdXQg
b2YgY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMgZm9yIGNsYXJpdHkuCisgICAgICAgIChX
ZWJDb3JlOjpEZWZlcnJlZExvYWRpbmdTY29wZTo6RGVmZXJyZWRMb2FkaW5nU2NvcGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVmZXJyZWRMb2FkaW5nU2NvcGU6On5EZWZlcnJlZExvYWRpbmdTY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyk6IElu
c3RlYWQgb2YgYWRkaW5nIHJlc291cmNlcyB0byBkb2N1bWVudCBsb2FkZXIsIHJlcGxhY2UgZWFj
aAorICAgICAgICBVUkwgaW4gdGhlIGRvY3VtZW50IGJ5IGEgYmxvYiBVUkwuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UpOgorICAgICAgICAqIGVkaXRpbmcv
bWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VTdWJyZXNvdXJjZVVSTHMpOiBB
ZGRlZC4gQSBoZWxwZXIgdG8gcmVwbGFjZSBlYWNoIFVSTCBpbiB0aGUgZG9jdW1lbnQgZnJhZ21l
bnQgYnkgYSBibG9iCisgICAgICAgIFVSTCBjcmVhdGVkIGZvciBlYWNoIHN1YnJlc291cmNlLiBU
aGlzIHdvbid0IHdvcmsgZm9yIGlmcmFtZXMgb3Igc3Jjc2V0IGJ1dCB0aGF0J3Mgb2theSBmb3Ig
bm93IHNpbmNlIERPTQorICAgICAgICBjb25zdHJ1Y3RlZCBmcm9tIFJURkQgZG9lc24ndCB1c2Ug
ZWl0aGVyLgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmg6CisgICAgICAgICogZmlsZWFwaS9C
bG9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OkJsb2IpOiBBZGRlZCBhIHZhcmlhbnQg
d2hpY2ggdGFrZXMgYSBTaGFyZWRCdWZmZXIuCisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iOjpjcmVhdGUpOiBEaXR0by4KKwogMjAxNy0xMC0wMiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgTGlu
ZUVuZGluZy57aCxjcHB9IGZyb20gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0IHRvIHd0Zi90ZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGUwZDg3M2MzOTU2YWQ5Y2MyMTczMmNkNzdjYTkwOTdjZDEzYTc5Y2QuLjllMzdk
MDBlZTMyMzYwZDM2ZDgyZjg3MmVlY2RjMDBkMGZmOGJkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTctMTAtMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgVXNlIGJsb2IgVVJMIHdoZW4gcGFzdGluZyBSVEZEIGluc3RlYWQgb2Ygb3ZlcnJpZGlu
ZyBEb2N1bWVudExvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc3ODAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDU0MjI3MD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYXNz
ZXJ0aW9uIGZhaWx1cmUgd2hlbiBSVEZEIGNvbnRlbnQgaXMgZW1wdHkuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorCiAy
MDE3LTEwLTAyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1v
dmUgbW9yZSBjb2RlIGludG8gUGFzdGVib2FyZEN1c3RvbURhdGEKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggNjhiNGY5OWE0YzIzYWI5
NGVmMjI0MTJkNDkxNWZhMWExZTE1MDJmMC4uOWRlMDIxMTJlYjk2M2E5OTM2MzY3ZTQ3YWZlMzQ2
MDk3NGZjYmFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlPd25lci5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjphcnJh
eUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB2b2lkIEZldGNoQm9keU93
bmVyOjpibG9iKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoaXNC
b2R5TnVsbE9yT3BhcXVlKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZh
Y2U8QmxvYj4+KEJsb2I6OmNyZWF0ZSh7IH0sIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShl
eHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fY29udGVudFR5cGUpKSkpOworICAgICAgICBw
cm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxCbG9iPj4oQmxvYjo6Y3JlYXRlKFZlY3Rvcjx1
aW50OF90PiB7IH0sIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVG
cm9tTWVkaWFUeXBlKG1fY29udGVudFR5cGUpKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGlmIChpc0Rpc3R1cmJlZE9yTG9ja2VkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCAyZDBiNjRh
YzQxZGM1MzljN2M5ZjkyNDM4ODFkYTFlNzA3NGE1YzMyLi5mNjhhMDBlZmFlN2E3YmI0OTU4OWQw
ZmZlMjczMWJiZTZlODQyYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC00MCw5ICs0MCw3IEBAIHZvaWQg
V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSkKIAogdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBkYXRhLmFw
cGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGZpbGVzLmFwcGVuZChG
aWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFdURk1vdmUoZGF0YSksIHR5cGUpLCBmaWxlbmFtZSkp
OworICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQo
KSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMjUzNTlhZGUyYmY3
NTg2MWJkYmRmYjY0MjYzNDIyNTg5MTY4YzNkNy4uZTczMjIwY2M4ZTk1MDk4MDA1YzUyYmU5YTE1
Y2VmMDgwOTc5NmQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTEyMiw2ICsxMjIsMzggQEAgc3RhdGljIEZy
YWdtZW50QW5kUmVzb3VyY2VzIGNyZWF0ZUZyYWdtZW50KEZyYW1lJiBmcmFtZSwgTlNBdHRyaWJ1
dGVkU3RyaW5nICpzdHIKIAogI2VuZGlmCiAKK2NsYXNzIERlZmVycmVkTG9hZGluZ1Njb3BlIHsK
K3B1YmxpYzoKKyAgICBEZWZlcnJlZExvYWRpbmdTY29wZShGcmFtZSYgZnJhbWUpCisgICAgICAg
IDogbV9mcmFtZShmcmFtZSkKKyAgICAgICAgLCBtX2NhY2hlZFJlc291cmNlTG9hZGVyKGZyYW1l
LmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCkpCisgICAgeworICAgICAgICBpZiAo
IWZyYW1lLnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpKSB7CisgICAgICAgICAgICBmcmFtZS5wYWdl
KCktPnNldERlZmVyc0xvYWRpbmcodHJ1ZSk7CisgICAgICAgICAgICBtX2RpZEVuYWJsZWREZWZl
cnJlZExvYWRpbmcgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fY2FjaGVkUmVz
b3VyY2VMb2FkZXItPmltYWdlc0VuYWJsZWQoKSkgeworICAgICAgICAgICAgbV9jYWNoZWRSZXNv
dXJjZUxvYWRlci0+c2V0SW1hZ2VzRW5hYmxlZChmYWxzZSk7CisgICAgICAgICAgICBtX2RpZERp
c2FibGVJbWFnZSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB+RGVmZXJyZWRMb2Fk
aW5nU2NvcGUoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZGlkRW5hYmxlZERlZmVycmVkTG9hZGlu
ZykKKyAgICAgICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnNldEltYWdlc0VuYWJsZWQo
dHJ1ZSk7CisgICAgICAgIGlmIChtX2RpZERpc2FibGVJbWFnZSkKKyAgICAgICAgICAgIG1fZnJh
bWUtPnBhZ2UoKS0+c2V0RGVmZXJzTG9hZGluZyhmYWxzZSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFJlZjxGcmFtZT4gbV9mcmFtZTsKKyAgICBSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IG1f
Y2FjaGVkUmVzb3VyY2VMb2FkZXI7CisgICAgYm9vbCBtX2RpZEVuYWJsZWREZWZlcnJlZExvYWRp
bmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9kaWREaXNhYmxlSW1hZ2UgeyBmYWxzZSB9OworfTsK
KwogUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2Vz
KEZyYW1lJiBmcmFtZSwgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgaWYgKCFm
cmFtZS5wYWdlKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCkBAIC0xMzEsMjUgKzE2MywxOCBAQCBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoRnJh
bWUmIGZyYW1lLCBOU0F0dHJpYnV0ZQogICAgIGlmICghZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQo
KSB8fCAhc3RyaW5nKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGJvb2wgd2FzRGVm
ZXJyaW5nQ2FsbGJhY2tzID0gZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCk7Ci0gICAgaWYg
KCF3YXNEZWZlcnJpbmdDYWxsYmFja3MpCi0gICAgICAgIGZyYW1lLnBhZ2UoKS0+c2V0RGVmZXJz
TG9hZGluZyh0cnVlKTsKLQotICAgIGF1dG8mIGNhY2hlZFJlc291cmNlTG9hZGVyID0gZG9jdW1l
bnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICBib29sIHdhc0ltYWdlc0VuYWJsZWQgPSBj
YWNoZWRSZXNvdXJjZUxvYWRlci5pbWFnZXNFbmFibGVkKCk7Ci0gICAgaWYgKHdhc0ltYWdlc0Vu
YWJsZWQpCi0gICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLnNldEltYWdlc0VuYWJsZWQoZmFs
c2UpOwotCisgICAgRGVmZXJyZWRMb2FkaW5nU2NvcGUgc2NvcGUoZnJhbWUpOwogICAgIGF1dG8g
ZnJhZ21lbnRBbmRSZXNvdXJjZXMgPSBjcmVhdGVGcmFnbWVudChmcmFtZSwgc3RyaW5nKTsKLSAg
ICBpZiAoYXV0byogbG9hZGVyID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkgewot
ICAgICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogZnJhZ21lbnRBbmRSZXNvdXJjZXMucmVzb3Vy
Y2VzKQotICAgICAgICAgICAgbG9hZGVyLT5hZGRBcmNoaXZlUmVzb3VyY2UoV1RGTW92ZShyZXNv
dXJjZSkpOwotICAgIH0KKyAgICBpZiAoIWZyYWdtZW50QW5kUmVzb3VyY2VzLmZyYWdtZW50KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICh3YXNJbWFnZXNFbmFibGVkKQotICAg
ICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci5zZXRJbWFnZXNFbmFibGVkKHRydWUpOwotICAgIGlm
ICghd2FzRGVmZXJyaW5nQ2FsbGJhY2tzKQotICAgICAgICBmcmFtZS5wYWdlKCktPnNldERlZmVy
c0xvYWRpbmcoZmFsc2UpOworICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBBdG9taWNTdHJpbmc+
IGJsb2JVUkxNYXA7CisgICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291cmNlPiYgc3VicmVz
b3VyY2UgOiBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMpIHsKKyAgICAgICAgYXV0byBi
bG9iID0gQmxvYjo6Y3JlYXRlKHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJlc291cmNlLT5taW1l
VHlwZSgpKTsKKyAgICAgICAgU3RyaW5nIGJsb2JVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVS
TChkb2N1bWVudCwgYmxvYik7CisgICAgICAgIGJsb2JVUkxNYXAuc2V0KHN1YnJlc291cmNlLT51
cmwoKS5zdHJpbmcoKSwgYmxvYlVSTCk7CisgICAgfQorICAgIHJlcGxhY2VTdWJyZXNvdXJjZVVS
THMoKmZyYWdtZW50QW5kUmVzb3VyY2VzLmZyYWdtZW50LCBXVEZNb3ZlKGJsb2JVUkxNYXApKTsK
IAogICAgIHJldHVybiBXVEZNb3ZlKGZyYWdtZW50QW5kUmVzb3VyY2VzLmZyYWdtZW50KTsKIH0K
QEAgLTIyNSw5ICsyNTAsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0KQogCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGRhdGEuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7Ci0gICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKFdURk1vdmUoZGF0YSks
IHR5cGUpOworICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCksIHR5cGUp
OwogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpm
cmFtZS5kb2N1bWVudCgpOwogICAgIFN0cmluZyBibG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmpl
Y3RVUkwoZG9jdW1lbnQsIGJsb2IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IGE1
YmRlOWYwMWI2MTQzNTdhMzU5MTU1MjZhODE2ZWE0YTY5YjVmYWIuLjA3ZTI2MTlhZGM1MjE5MDc0
ZTJlZmMxNzc1ZDZiYzJiNjQ3OGQxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAg
LTExNiw2ICsxMTYsMjUgQEAgc3RhdGljIHZvaWQgY29tcGxldGVVUkxzKERvY3VtZW50RnJhZ21l
bnQqIGZyYWdtZW50LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwpCiAgICAgZm9yIChhdXRvJiBjaGFu
Z2UgOiBjaGFuZ2VzKQogICAgICAgICBjaGFuZ2UuYXBwbHkoKTsKIH0KKwordm9pZCByZXBsYWNl
U3VicmVzb3VyY2VVUkxzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBIYXNoTWFw
PEF0b21pY1N0cmluZywgQXRvbWljU3RyaW5nPiYmIHJlcGxhY2VtZW50TWFwKQoreworICAgIFZl
Y3RvcjxBdHRyaWJ1dGVDaGFuZ2U+IGNoYW5nZXM7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDog
ZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oZnJhZ21lbnQpKSB7CisgICAgICAgIGlmICghZWxl
bWVudC5oYXNBdHRyaWJ1dGVzKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZm9y
IChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA6IGVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9y
KCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHdvbid0IHdvcmsgZm9yIHNyY3NldC4K
KyAgICAgICAgICAgIGlmIChlbGVtZW50LmF0dHJpYnV0ZUNvbnRhaW5zVVJMKGF0dHJpYnV0ZSkg
JiYgIWF0dHJpYnV0ZS52YWx1ZSgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGF1dG8g
cmVwbGFjZW1lbnQgPSByZXBsYWNlbWVudE1hcC5nZXQoYXR0cmlidXRlLnZhbHVlKCkpOworICAg
ICAgICAgICAgICAgIGlmICghcmVwbGFjZW1lbnQuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZXMuYXBwZW5kKEF0dHJpYnV0ZUNoYW5nZSgmZWxlbWVudCwgYXR0cmlidXRlLm5h
bWUoKSwgcmVwbGFjZW1lbnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBmb3IgKGF1dG8mIGNoYW5nZSA6IGNoYW5nZXMpCisgICAgICAgIGNoYW5nZS5hcHBseSgpOwor
fQogICAgIAogY2xhc3MgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IgZmluYWwgOiBwdWJsaWMgTWFy
a3VwQWNjdW11bGF0b3IgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXggYWM5
NDY5M2MxMDJjZDFhMGQ4MTJiNzZjYTNiNGNjOTRmMmIxOWRkYS4uMmM3YjMwMzM1MWEzYTNmN2Nm
MDhhYzIxNTIwMjZlNDA3ZmUwZmI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCiAjaW5j
bHVkZSAiSFRNTEludGVyY2hhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDYgKzQ1
LDggQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBSYW5nZTsKIAor
dm9pZCByZXBsYWNlU3VicmVzb3VyY2VVUkxzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYmLCBIYXNo
TWFwPEF0b21pY1N0cmluZywgQXRvbWljU3RyaW5nPiYmKTsKKwogZW51bSBFQ2hpbGRyZW5Pbmx5
IHsgSW5jbHVkZU5vZGUsIENoaWxkcmVuT25seSB9OwogZW51bSBFQWJzb2x1dGVVUkxzIHsgRG9O
b3RSZXNvbHZlVVJMcywgUmVzb2x2ZUFsbFVSTHMsIFJlc29sdmVOb25Mb2NhbFVSTHMgfTsKIGVu
dW0gRUZyYWdtZW50U2VyaWFsaXphdGlvbiB7IEhUTUxGcmFnbWVudFNlcmlhbGl6YXRpb24sIFhN
TEZyYWdtZW50U2VyaWFsaXphdGlvbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggZWYy
OGQ1NzRkZDQyMzVlMGU5N2RkMzIxNjEzN2JiNTA5OGNjNDExNy4uYTdjZDRlNDczYzc2NGIwYzlh
ZGE4MjllOTdjMjQ0ZDRmMGJjODE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiQmxvYlVSTC5oIgogI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTk2LDYgKzk3
LDE5IEBAIEJsb2I6OkJsb2IoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlh
bnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIGJ1aWxkZXIuZmluYWxpemUoKSwgbV90
eXBlKTsKIH0KIAorQmxvYjo6QmxvYihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkKKyAgICA6IG1fdHlwZShjb250ZW50VHlwZSkKKyAgICAsIG1f
c2l6ZShidWZmZXIuc2l6ZSgpKQoreworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGRh
dGEuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworCisgICAgVmVjdG9yPEJs
b2JQYXJ0PiBibG9iUGFydHM7CisgICAgYmxvYlBhcnRzLmFwcGVuZChCbG9iUGFydChXVEZNb3Zl
KGRhdGEpKSk7CisgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJM
KCk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJu
YWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOworfQorCiBCbG9iOjpCbG9i
KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAg
OiBtX3R5cGUoY29udGVudFR5cGUpCiAgICAgLCBtX3NpemUoZGF0YS5zaXplKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5oCmluZGV4IDlmNDI0MjMwNzc3NzNmOWNkYWViMjVlYTU1MzgwMTY2NzA3YWI1ODQu
LmNhZWRkYzg2NWRmOWQ1YjJhY2NjYzI3NWU3ZGZhMjQ5ZjVlNzBkN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5oCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxv
YjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAK
IHVzaW5nIEJsb2JQYXJ0VmFyaWFudCA9IFZhcmlhbnQ8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJW
aWV3PiwgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+LCBSZWZQdHI8QmxvYj4sIFN0cmluZz47CiAK
QEAgLTYwLDYgKzYxLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QmxvYihXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBwcm9wZXJ0eUJhZykpOwogICAgIH0KIAor
ICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQmxvYihidWZmZXIsIGNvbnRlbnRUeXBlKSk7CisgICAgfQorCiAgICAgc3RhdGljIFJl
ZjxCbG9iPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IoV1RGTW92
ZShkYXRhKSwgY29udGVudFR5cGUpKTsKQEAgLTk5LDYgKzEwNSw3IEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICBCbG9iKCk7CiAgICAgQmxvYihWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmLCBj
b25zdCBCbG9iUHJvcGVydHlCYWcmKTsKKyAgICBCbG9iKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogICAgIEJsb2IoVmVjdG9yPHVpbnQ4X3Q+JiYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogCiAgICAgZW51bSBSZWZlcmVuY2luZ0V4aXN0aW5n
QmxvYkNvbnN0cnVjdG9yIHsgcmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFBy
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJk
UHJveHlDb2NvYS5tbQppbmRleCA0Yzk1MTI1ZDY0OTYyZjAwOTBiMmY1YjA4NDg0MjUwZjMzNzg5
MTg3Li41NzZkMjQzMTFkODM1NzQ2YmU4OWNiYTYzZjllMjFkZTRkMmZlZDI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlD
b2NvYS5tbQpAQCAtNzUsNiArNzUsOCBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFz
dGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZQogICAgIGlm
ICghYnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAgc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwor
ICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+
IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZSk7CiAgICAg
aWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlZDA4NTk2NDBlYmM2OGY3MWQx
MjI3MWI3MDA2Mzk5MGI2YmVhMDc4Li41NDdiNmE2Mjc0ZDEzYjcyYTU2NzU1NTNiN2NjMDBiMTQ1
NjllODdkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMTAtMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVXNlIGJsb2IgVVJMIHdoZW4gcGFzdGluZyBSVEZEIGluc3RlYWQg
b2Ygb3ZlcnJpZGluZyBEb2N1bWVudExvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3ODAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDU0
MjI3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgd2hlbiBwYXN0
aW5nIGFuIGVtcHR5IFJURkQgYXMgd2VsbCBhcyBhIHRlc3QgZm9yIHBhc3RpbmcKKyAgICAgICAg
UlRGRCB3aXRoIGFuIGltYWdlLCB3aGljaCBzaG91bGQgcmVzdWx0IGluIGFuIGltYWdlIGVsZW1l
bnQgd2l0aCBhIGJsb2IgVVJMLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVSVEZELm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvcGFzdGUtcnRmZC5odG1sOgorCiAyMDE3LTEwLTAyICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBXU0wgZGVt
byBjb21wYXRpYmxlIHdpdGggTWljcm9zb2Z0IEVkZ2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYzBmNTAwNjIxNGY3MTIxMmJmMjk4NGQ4NjA3MTAzNmM4ODk4MTMwNy4uZjg5YmI2Nzc3ZjI4
NTY3MWIxZTU2NWZlZWZkYzEzMmZmZjM5MzJlZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTU0NCw2ICs1NDQsNyBAQAogCQk5QjI2RkNDQTE1OUQxNkRFMDBDQzM3NjUgLyogSFRNTEZvcm1D
b2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyNkZDQjQxNTlEMTVFNzAwQ0MzNzY1IC8qIEhUTUxGb3Jt
Q29sbGVjdGlvbk5hbWVkSXRlbS5odG1sICovOyB9OwogCQk5QjI3MEZFRTFEREMyQzBCMDAyRDUz
RjMgLyogY2xvc2VkLXNoYWRvdy10cmVlLXRlc3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI3MEZFRDFEREMyNUZEMDAyRDUzRjMg
LyogY2xvc2VkLXNoYWRvdy10cmVlLXRlc3QuaHRtbCAqLzsgfTsKIAkJOUI0RjhGQTcxNTlENTJE
RDAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI0RjhGQTYxNTlENTJDQTAw
MkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi87IH07CisJCTlCN0Q3NDBG
MUY4Mzc4NzcwMDA2QzQzMiAvKiBwYXN0ZS1ydGZkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI3RDc0MEUxRjgzNzdFNjAwMDZDNDMy
IC8qIHBhc3RlLXJ0ZmQuaHRtbCAqLzsgfTsKIAkJOUJENDIzOUExRTA0QkQ5ODAwMjAwMzk1IC8q
IEF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJENDIzOTkxRTA0QkQ5ODAw
MjAwMzk1IC8qIEF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1t
ICovOyB9OwogCQk5QkQ0MjM5QzFFMDRDMDFDMDAyMDAzOTUgLyogY2hpbmVzZS1jaGFyYWN0ZXIt
d2l0aC1pbWFnZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCRDQyMzlCMUUwNEJGRDAwMDIwMDM5NSAvKiBjaGluZXNlLWNoYXJhY3Rl
ci13aXRoLWltYWdlLmh0bWwgKi87IH07CiAJCTlCRDZEM0EyMUY3QjIxODMwMEJENDk2MiAvKiBz
dW5zZXQtaW4tY3VwZXJ0aW5vLTEwMHB4LnRpZmYgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJENkQzQTExRjdCMjAyMTAwQkQ0OTYyIC8qIHN1
bnNldC1pbi1jdXBlcnRpbm8tMTAwcHgudGlmZiAqLzsgfTsKQEAgLTU1Miw2ICs1NTMsNyBAQAog
CQk5QkQ2RDNBNTFGN0IyMTgzMDBCRDQ5NjIgLyogc3Vuc2V0LWluLWN1cGVydGluby02MDBweC5q
cGcgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUJENkQzOUUxRjdCMjAxRTAwQkQ0OTYyIC8qIHN1bnNldC1pbi1jdXBlcnRpbm8tNjAwcHguanBn
ICovOyB9OwogCQk5QkQ2RDNBNzFGN0IyMURDMDBCRDQ5NjIgLyogcGFzdGUtaW1hZ2UuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQ2
RDNBNjFGN0IyMUNDMDBCRDQ5NjIgLyogcGFzdGUtaW1hZ2UuaHRtbCAqLzsgfTsKIAkJOUJEQ0NE
ODcxRjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkRDQ0Q4NTFGN0QwQjA3MDAwMDlBMTggLyogUGFz
dGVJbWFnZS5tbSAqLzsgfTsKKwkJOUJERDk1NTgxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRG
RC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCREQ5
NTU2MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gKi87IH07CiAJCTlDNjREQzMyMUQ3
NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUM2NERDMzExRDc2MTk4QTAwNEI1
OThFIC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgKi87IH07CiAJCUExMEYwNDdFMUUz
QUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwRjA0N0MxRTNBRDI5QzAwQzk1RTE5IC8q
IE5TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi87IH07CiAJCUExMTQ2QThEMUQyRDcxMTUwMDBGRTcx
MCAvKiBDb250ZW50RmlsdGVyaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTExNDZBOEExRDJENzA0RjAwMEZFNzEwIC8qIENvbnRlbnRGaWx0ZXJp
bmcubW0gKi87IH07CkBAIC05NzcsNiArOTc5LDcgQEAKIAkJCQlBNTdBMzRGMjE2QUY2QjJCMDBD
MjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJQTE0MDlBRDkxRTcyNTRENDAwNDk0OUQ5IC8qIHBhc3N3b3Jk
LXByb3RlY3RlZC5wYWdlcyBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk5QkQ2RDNBNzFGN0Iy
MURDMDBCRDQ5NjIgLyogcGFzdGUtaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJ
CQk5QjdENzQwRjFGODM3ODc3MDAwNkM0MzIgLyogcGFzdGUtcnRmZC5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCTNGQ0M0RkU4MUVDNEU4Q0EwMDc2RTM3QyAvKiBQaWN0dXJlSW5QaWN0
dXJlRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDE1MDg2RDFEQTA0
MEM1MDA0NEJFOUIgLyogcGxheS1hdWRpby1vbi1jbGljay5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCUY0MUFCOUE4MUVGNDY5NkIwMDgzRkEwOCAvKiBwcmV2ZW50LW9wZXJhdGlvbi5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTUwNSw2ICsxNTA4LDcgQEAKIAkJOUI0RjhG
QTMxNTlENTJCMTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0u
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNEY4RkE2MTU5RDUyQ0EwMDJEOUY5
NCAvKiBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUI3OTE2NEYxQkQ4OUQwRDAwRDUwQjhGIC8qIEZpcnN0UmVzcG9uZGVyU2Nyb2xs
aW5nUG9zaXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBG
aXJzdFJlc3BvbmRlclNjcm9sbGluZ1Bvc2l0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5QjdENzQwRTFGODM3N0U2MDAwNkM0MzIgLyogcGFzdGUtcnRmZC5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gInBhc3RlLXJ0ZmQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlC
RDQyMzk5MUUwNEJEOTgwMDIwMDM5NSAvKiBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRS
YW5nZVdpdGhJbWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QkQ0MjM5QjFFMDRCRkQwMDAyMDAzOTUgLyogY2hpbmVz
ZS1jaGFyYWN0ZXItd2l0aC1pbWFnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
ImNoaW5lc2UtY2hhcmFjdGVyLXdpdGgtaW1hZ2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCRDZEMzlFMUY3QjIwMUUwMEJENDk2MiAvKiBzdW5zZXQtaW4tY3VwZXJ0aW5v
LTYwMHB4LmpwZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IGltYWdlLmpwZWc7IHBhdGggPSAic3Vuc2V0LWluLWN1cGVydGluby02MDBweC5qcGciOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUxMyw2ICsxNTE3LDcgQEAKIAkJOUJENkQz
QTExRjdCMjAyMTAwQkQ0OTYyIC8qIHN1bnNldC1pbi1jdXBlcnRpbm8tMTAwcHgudGlmZiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnRpZmY7
IHBhdGggPSAic3Vuc2V0LWluLWN1cGVydGluby0xMDBweC50aWZmIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUJENkQzQTYxRjdCMjFDQzAwQkQ0OTYyIC8qIHBhc3RlLWltYWdlLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAicGFzdGUtaW1hZ2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCRENDRDg1MUY3RDBCMDcwMDAwOUExOCAvKiBQYXN0ZUltYWdlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUGFzdGVJbWFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOUJERDk1NTYxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFBhc3RlUlRGRC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUM2
NERDMzExRDc2MTk4QTAwNEI1OThFIC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBZb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTBGMDQ3QzFFM0FEMjlDMDBD
OTVFMTkgLyogTlNGaWxlTWFuYWdlckV4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IE5TRmlsZU1hbmFnZXJFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExMTQ2QThBMUQyRDcwNEYwMDBGRTcxMCAvKiBDb250ZW50RmlsdGVyaW5n
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29udGVudEZpbHRl
cmluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMTIsNiArMjAxNyw3IEBA
CiAJCQkJQ0VBNkNGMjIxOUNDRjVCRDAwNjRGNUE3IC8qIE9wZW5BbmRDbG9zZVdpbmRvdy5tbSAq
LywKIAkJCQlDRUJDQTEyRTFFM0E2NjAxMDBDNzMyOTMgLyogT3ZlcnJpZGVDb250ZW50U2VjdXJp
dHlQb2xpY3kubW0gKi8sCiAJCQkJOUJEQ0NEODUxRjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1h
Z2UubW0gKi8sCisJCQkJOUJERDk1NTYxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5tbSAq
LywKIAkJCQkzRkNDNEZFNDFFQzRFODUyMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVn
YXRlLm1tICovLAogCQkJCTgzQkFFRThDMUVGNDYyNTUwMERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xp
ZW50UG9saWNpZXMubW0gKi8sCiAJCQkJQzk1NTAxQkUxOUFEMkZBRjAwNDlCRTNFIC8qIFByZWZl
cmVuY2VzLm1tICovLApAQCAtMjMwNSw2ICsyMzExLDcgQEAKIAkJCQlDRUJDQTEzNzFFM0E4MDM0
MDBDNzMyOTMgLyogcGFnZS13aXRob3V0LWNzcC5odG1sICovLAogCQkJCUExNDA5QUQ4MUU3MjU0
QUMwMDQ5NDlEOSAvKiBwYXNzd29yZC1wcm90ZWN0ZWQucGFnZXMgKi8sCiAJCQkJOUJENkQzQTYx
RjdCMjFDQzAwQkQ0OTYyIC8qIHBhc3RlLWltYWdlLmh0bWwgKi8sCisJCQkJOUI3RDc0MEUxRjgz
NzdFNjAwMDZDNDMyIC8qIHBhc3RlLXJ0ZmQuaHRtbCAqLywKIAkJCQkzRkNDNEZFNjFFQzRFODdF
MDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRlLmh0bWwgKi8sCiAJCQkJRjQxNTA4
NkMxREEwNDBDMTAwNDRCRTlCIC8qIHBsYXktYXVkaW8tb24tY2xpY2suaHRtbCAqLywKIAkJCQlG
NDFBQjk5NDFFRjQ2OTJDMDA4M0ZBMDggLyogcHJldmVudC1vcGVyYXRpb24uaHRtbCAqLywKQEAg
LTMzNzEsNiArMzM3OCw3IEBACiAJCQkJN0M4M0UwNTExRDBBNjQxODAwRkVCQ0YzIC8qIFBhcnNl
ZENvbnRlbnRSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwQTFBNDExQUU2MDA0
NDdDNEMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5
QkRDQ0Q4NzFGN0QwQjA3MDAwMDlBMTggLyogUGFzdGVJbWFnZS5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTlCREQ5NTU4MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3QzgzRTA1MzFEMEE2NDNBMDBGRUJDRjMgLyogUGVuZGluZ0FQSVJlcXVlc3RVUkwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZDQzRGRTUxRUM0RTg1MjAwNzZFMzdDIC8qIFBpY3R1
cmVJblBpY3R1cmVEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUFGMUE0MTFB
MzgwMDQ0N0M0QyAvKiBQbGF0Zm9ybVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5tbQpp
bmRleCAwNWRhYzFkY2FlMzA1YjZmNTI3MDM0OTQ3NTIwYWU5YzdlMTcyZjNhLi40YjdmYzNjZGY2
ZmQwZjA0NDQ5ODkwZmQwMmY2MTY4OGZhMzNlYTliIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tCkBAIC0yNywxMCArMjcsOCBA
QAogCiAjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oQ09DT0EpCiAKLSNpbXBvcnQgIkFw
cEtpdFNQSS5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RX
S1dlYlZpZXcuaCIKLSNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVSVEZELm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVJURkQubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGMzNjQwYzI1ZDViZTA2NmU0NmEwODhhNWJjM2NhNDg5ZmQyYjI0YwotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVSVEZELm1tCkBA
IC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBX
S19BUElfRU5BQkxFRCAmJiBQTEFURk9STShDT0NPQSkKKworI2ltcG9ydCAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZPUk0oSU9T
KQorI2luY2x1ZGUgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KKyNl
bmRpZgorCitAaW50ZXJmYWNlIFdLV2ViVmlldyAoKQorLSAodm9pZClwYXN0ZTooaWQpc2VuZGVy
OworQGVuZAorCisjaWYgUExBVEZPUk0oTUFDKQordm9pZCB3cml0ZVJURkRUb1Bhc3RlYm9hcmQo
TlNEYXRhICpkYXRhKQoreworICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBk
ZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TUlRGRFBib2FyZFR5cGVdIG93
bmVyOm5pbF07CisgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldERhdGE6
ZGF0YSBmb3JUeXBlOk5TUlRGRFBib2FyZFR5cGVdOworfQorI2Vsc2UKKworQGludGVyZmFjZSBO
U0F0dHJpYnV0ZWRTdHJpbmcgKCkKKy0gKGlkKWluaXRXaXRoUlRGOihOU0RhdGEgKilkYXRhIGRv
Y3VtZW50QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICoqKWRpY3Q7CistIChpZClpbml0V2l0aFJU
RkQ6KE5TRGF0YSAqKWRhdGEgZG9jdW1lbnRBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKiopZGlj
dDsKKy0gKE5TRGF0YSAqKVJURkZyb21SYW5nZTooTlNSYW5nZSlyYW5nZSBkb2N1bWVudEF0dHJp
YnV0ZXM6KE5TRGljdGlvbmFyeSAqKWRpY3Q7CistIChOU0RhdGEgKilSVEZERnJvbVJhbmdlOihO
U1JhbmdlKXJhbmdlIGRvY3VtZW50QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopZGljdDsKKy0g
KEJPT0wpY29udGFpbnNBdHRhY2htZW50czsKK0BlbmQKKwordm9pZCB3cml0ZVJURkRUb1Bhc3Rl
Ym9hcmQoTlNEYXRhICpkYXRhKQoreworICAgIFtbVUlQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJv
YXJkXSBzZXRJdGVtczpAW1tOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6ZGF0YSBm
b3JLZXk6KE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXV1dOworfQorI2VuZGlmCisKK1RFU1Qo
UGFzdGVSVEZELCBFbXB0eVJURkQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQw
MCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8IURPQ1RZ
UEUgaHRtbD48aHRtbD48Ym9keT48ZGl2IGlkPSdlZGl0b3InIGNvbnRlbnRlZGl0YWJsZT48L2Rp
dj48L2JvZHk+PC9odG1sPiJdOworCisgICAgd3JpdGVSVEZEVG9QYXN0ZWJvYXJkKFtOU0RhdGEg
ZGF0YV0pOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJykuZm9jdXMoKSJdOworICAgIFt3ZWJWaWV3IHBh
c3RlOm5pbF07Cit9CisKK1RFU1QoUGFzdGVSVEZELCBJbWFnZUVsZW1lbnRzVXNlQmxvYlVSTCkK
K3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInBhc3RlLXJ0ZmQiXTsKKworICAgIGF1dG8g
KnBuZ0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBwYXRoRm9yUmVzb3VyY2U6QCJzdW5zZXQtaW4tY3VwZXJ0aW5vLTIwMHB4IiBvZlR5
cGU6QCJwbmciIGluRGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAg
YXV0byBhdHRhY2htZW50ID0gYWRvcHROUyhbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRX
aXRoRGF0YTpwbmdEYXRhIG9mVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlUE5HXSk7CisgICAgTlNB
dHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcgPSBbTlNBdHRyaWJ1dGVkU3RyaW5nIGF0dHJpYnV0ZWRT
dHJpbmdXaXRoQXR0YWNobWVudDphdHRhY2htZW50LmdldCgpXTsKKyAgICBOU0RhdGEgKlJURkRE
YXRhID0gW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3Ro
XSkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dOworCisgICAgd3JpdGVSVEZEVG9QYXN0ZWJvYXJk
KFJURkREYXRhKTsKKyAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOworCisgICAgW3dlYlZpZXcgd2Fp
dEZvck1lc3NhZ2U6QCJsb2FkZWQiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjIwMCIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbWFnZUVsZW1lbnQgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCdpbWcnKTsgaW1hZ2VFbGVtZW50LndpZHRoIl0pOworICAgIEVYUEVD
VF9XS19TVFJFUSgiYmxvYjoiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAidXJsID0gbmV3IFVSTChpbWFnZUVsZW1lbnQuc3JjKS5wcm90b2NvbCJdKTsKK30KKworI2Vu
ZGlmIC8vIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKE1BQykKKworCisKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcGFzdGUtcnRmZC5odG1sIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9wYXN0ZS1ydGZkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNThiNjA5OGE5NGEyMzQzN2RjYTk1NTlkNzdmODY3YTQyZTBlMjYzMgotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcGFzdGUt
cnRmZC5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImVkaXRvciIgY29udGVudGVkaXRhYmxlPjwvZGl2PgorPHNjcmlwdD4KK2Nv
bnN0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTsKK2VkaXRvci5m
b2N1cygpOworCitlZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcigncGFzdGUnLCAoZXZlbnQpID0+IHsK
KyAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICBsZXQgaW1nID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcignaW1nJyk7CisgICAgICAgaWYgKGltZy5jb21wbGV0ZSkKKyAgICAgICAgICAgbm90
aWZ5TG9hZGVkKCk7CisgICAgICAgZWxzZQorICAgICAgICAgICBpbWcub25sb2FkID0gbm90aWZ5
TG9hZGVkOworICAgIH0sIDApOworfSk7CisKK2Z1bmN0aW9uIG5vdGlmeUxvYWRlZCgpCit7Cisg
ICAgd2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnbG9hZGVk
Jyk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322638</attachid>
            <date>2017-10-04 02:05:44 -0700</date>
            <delta_ts>2017-10-04 04:06:18 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-177801-20171004020544.patch</filename>
            <type>text/plain</type>
            <size>26863</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjgzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE3LTEwLTA0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBibG9iIFVSTCB3aGVuIHBh
c3RpbmcgUlRGRCBpbnN0ZWFkIG9mIG92ZXJyaWRpbmcgRG9jdW1lbnRMb2FkZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzgwMQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzQ1NDIyNzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhz
aWVoLgorCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCBwYXN0aW5nIFJURkQgcmVzdWx0ZWQg
aW4gaW1hZ2VzIGFuZCBvdGhlciBzdWJyZXNvdXJjZXMgaW4gUlRGRCBhcmUgYmVpbmcgcGxhY2Vk
CisgICAgICAgIGludG8gdGhlIGRvY3VtZW50IHVzaW5nIFdlYktpdCBmYWtlIFVSTCwgYW5kIERv
Y3VtZW50TG9hZGVyIHdhcyBvdmVycmlkZGVuIHRvIHJldHVybiB0aGUgYXBwcm9wcmlhdGUKKyAg
ICAgICAgZGF0YSB1cG9uIHJlc291cmNlIHJlcXVlc3RzLiBUaGlzIGlzIGJhZCBiZWNhdXNlIHRo
ZXJlIGlzIG5vIG1lY2hhbmlzbSBmb3Igd2Vic2l0ZXMgdG8gYWNjZXNzIGl0cyBjb250ZW50Lgor
CisgICAgICAgIExpa2UgcjIyMjExOSBhbmQgcjIwODQ1MSwgdGhpcyBwYXRjaCBmaXhlcyB0aGll
IHByb2JsZW0gYnkgdXNpbmcgYSBibG9iIFVSTCBpbnN0ZWFkIG9mIGEgV2ViS2l0IGZha2UgVVJM
LgorICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBhIEJsb2I6OmNyZWF0ZSB2YXJpYW50IHdo
aWNoIHRha2VzIGEgU2hhcmVkQnVmZmVyLgorCisgICAgICAgIEFQSSBUZXN0czogUGFzdGVSVEZE
CisKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIp
OgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6RGVmZXJyZWRMb2FkaW5nU2NvcGUpOiBFeHRyYWN0ZWQgb3V0IG9mIGNy
ZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzIGZvciBjbGFyaXR5LgorICAgICAgICAoV2ViQ29y
ZTo6RGVmZXJyZWRMb2FkaW5nU2NvcGU6OkRlZmVycmVkTG9hZGluZ1Njb3BlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlZmVycmVkTG9hZGluZ1Njb3BlOjp+RGVmZXJyZWRMb2FkaW5nU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMpOiBJbnN0ZWFk
IG9mIGFkZGluZyByZXNvdXJjZXMgdG8gZG9jdW1lbnQgbG9hZGVyLCByZXBsYWNlIGVhY2gKKyAg
ICAgICAgVVJMIGluIHRoZSBkb2N1bWVudCBieSBhIGJsb2IgVVJMLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlU3VicmVzb3VyY2VVUkxzKTogQWRkZWQu
IEEgaGVscGVyIHRvIHJlcGxhY2UgZWFjaCBVUkwgaW4gdGhlIGRvY3VtZW50IGZyYWdtZW50IGJ5
IGEgYmxvYgorICAgICAgICBVUkwgY3JlYXRlZCBmb3IgZWFjaCBzdWJyZXNvdXJjZS4gVGhpcyB3
b24ndCB3b3JrIGZvciBpZnJhbWVzIG9yIHNyY3NldCBidXQgdGhhdCdzIG9rYXkgZm9yIG5vdyBz
aW5jZSBET00KKyAgICAgICAgY29uc3RydWN0ZWQgZnJvbSBSVEZEIGRvZXNuJ3QgdXNlIGVpdGhl
ci4KKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5oOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpCbG9iKTogQWRkZWQgYSB2YXJpYW50IHdoaWNo
IHRha2VzIGEgU2hhcmVkQnVmZmVyLgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5oOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYjo6Y3JlYXRlKTogRGl0dG8uCisKIDIwMTctMTAtMDQgIEd1c3Rhdm8g
Tm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keU93bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAkocmV2aXNpb24gMjIyODM1KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjphcnJheUJ1ZmZlcihSZWY8
RGVmCiB2b2lkIEZldGNoQm9keU93bmVyOjpibG9iKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKIHsKICAgICBpZiAoaXNCb2R5TnVsbE9yT3BhcXVlKCkpIHsKLSAgICAgICAgcHJvbWlz
ZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8QmxvYj4+KEJsb2I6OmNyZWF0ZSh7IH0sIEJsb2I6Om5v
cm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fY29udGVu
dFR5cGUpKSkpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxCbG9iPj4o
QmxvYjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiB7IH0sIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50
VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fY29udGVudFR5cGUpKSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChpc0Rpc3R1cmJlZE9yTG9ja2VkKCkpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlci5jcHAJKHJldmlzaW9uIDIyMjgzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAs
OSArNDAsNyBAQCB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEZpCiAKIHZv
aWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgZGF0YS5hcHBlbmQoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKEJs
b2I6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpLCB0eXBlKSwgZmlsZW5hbWUpKTsKKyAgICBmaWxlcy5h
cHBlbmQoRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCksIHR5cGUpLCBmaWxl
bmFtZSkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lv
biAyMjI4MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw2ICsxMTYsMjUgQEAgc3RhdGljIHZvaWQgY29tcGxldGVVUkxzKERvY3Vt
ZW50RnJhZ21lbgogICAgIGZvciAoYXV0byYgY2hhbmdlIDogY2hhbmdlcykKICAgICAgICAgY2hh
bmdlLmFwcGx5KCk7CiB9CisKK3ZvaWQgcmVwbGFjZVN1YnJlc291cmNlVVJMcyhSZWY8RG9jdW1l
bnRGcmFnbWVudD4mJiBmcmFnbWVudCwgSGFzaE1hcDxBdG9taWNTdHJpbmcsIEF0b21pY1N0cmlu
Zz4mJiByZXBsYWNlbWVudE1hcCkKK3sKKyAgICBWZWN0b3I8QXR0cmlidXRlQ2hhbmdlPiBjaGFu
Z2VzOworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+
KGZyYWdtZW50KSkgeworICAgICAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlcygpKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1
dGUgOiBlbGVtZW50LmF0dHJpYnV0ZXNJdGVyYXRvcigpKSB7CisgICAgICAgICAgICAvLyBGSVhN
RTogVGhpcyB3b24ndCB3b3JrIGZvciBzcmNzZXQuCisgICAgICAgICAgICBpZiAoZWxlbWVudC5h
dHRyaWJ1dGVDb250YWluc1VSTChhdHRyaWJ1dGUpICYmICFhdHRyaWJ1dGUudmFsdWUoKS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHJlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnRN
YXAuZ2V0KGF0dHJpYnV0ZS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlcGxhY2Vt
ZW50LmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzLmFwcGVuZCh7ICZlbGVt
ZW50LCBhdHRyaWJ1dGUubmFtZSgpLCByZXBsYWNlbWVudCB9KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyAgICBmb3IgKGF1dG8mIGNoYW5nZSA6IGNoYW5nZXMpCisgICAgICAg
IGNoYW5nZS5hcHBseSgpOworfQogICAgIAogY2xhc3MgU3R5bGVkTWFya3VwQWNjdW11bGF0b3Ig
ZmluYWwgOiBwdWJsaWMgTWFya3VwQWNjdW11bGF0b3IgewogcHVibGljOgpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5oCShyZXZpc2lvbiAyMjI4MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCiAjaW5jbHVkZSAiSFRNTEludGVyY2hhbmdl
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDYgKzQ1LDggQEAgY2xhc3MgTm9kZTsKIGNs
YXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBSYW5nZTsKIAordm9pZCByZXBsYWNlU3VicmVzb3Vy
Y2VVUkxzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYmLCBIYXNoTWFwPEF0b21pY1N0cmluZywgQXRv
bWljU3RyaW5nPiYmKTsKKwogZW51bSBFQ2hpbGRyZW5Pbmx5IHsgSW5jbHVkZU5vZGUsIENoaWxk
cmVuT25seSB9OwogZW51bSBFQWJzb2x1dGVVUkxzIHsgRG9Ob3RSZXNvbHZlVVJMcywgUmVzb2x2
ZUFsbFVSTHMsIFJlc29sdmVOb25Mb2NhbFVSTHMgfTsKIGVudW0gRUZyYWdtZW50U2VyaWFsaXph
dGlvbiB7IEhUTUxGcmFnbWVudFNlcmlhbGl6YXRpb24sIFhNTEZyYWdtZW50U2VyaWFsaXphdGlv
biB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0JKHJldmlzaW9uIDIyMjgzNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjIsNiArMTIyLDM4IEBAIHN0YXRpYyBGcmFnbWVudEFuZFJlc291cmNlcyBjcmVhdGVGcmFn
bWUKIAogI2VuZGlmCiAKK2NsYXNzIERlZmVycmVkTG9hZGluZ1Njb3BlIHsKK3B1YmxpYzoKKyAg
ICBEZWZlcnJlZExvYWRpbmdTY29wZShGcmFtZSYgZnJhbWUpCisgICAgICAgIDogbV9mcmFtZShm
cmFtZSkKKyAgICAgICAgLCBtX2NhY2hlZFJlc291cmNlTG9hZGVyKGZyYW1lLmRvY3VtZW50KCkt
PmNhY2hlZFJlc291cmNlTG9hZGVyKCkpCisgICAgeworICAgICAgICBpZiAoIWZyYW1lLnBhZ2Uo
KS0+ZGVmZXJzTG9hZGluZygpKSB7CisgICAgICAgICAgICBmcmFtZS5wYWdlKCktPnNldERlZmVy
c0xvYWRpbmcodHJ1ZSk7CisgICAgICAgICAgICBtX2RpZEVuYWJsZWREZWZlcnJlZExvYWRpbmcg
PSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIt
PmltYWdlc0VuYWJsZWQoKSkgeworICAgICAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+
c2V0SW1hZ2VzRW5hYmxlZChmYWxzZSk7CisgICAgICAgICAgICBtX2RpZERpc2FibGVJbWFnZSA9
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB+RGVmZXJyZWRMb2FkaW5nU2NvcGUoKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fZGlkRW5hYmxlZERlZmVycmVkTG9hZGluZykKKyAgICAgICAg
ICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnNldEltYWdlc0VuYWJsZWQodHJ1ZSk7CisgICAg
ICAgIGlmIChtX2RpZERpc2FibGVJbWFnZSkKKyAgICAgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+
c2V0RGVmZXJzTG9hZGluZyhmYWxzZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFJlZjxGcmFt
ZT4gbV9mcmFtZTsKKyAgICBSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IG1fY2FjaGVkUmVzb3Vy
Y2VMb2FkZXI7CisgICAgYm9vbCBtX2RpZEVuYWJsZWREZWZlcnJlZExvYWRpbmcgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9kaWREaXNhYmxlSW1hZ2UgeyBmYWxzZSB9OworfTsKKwogUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKEZyYW1lJiBmcmFt
ZSwgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgaWYgKCFmcmFtZS5wYWdlKCkg
fHwgIWZyYW1lLmRvY3VtZW50KCkpCkBAIC0xMzEsMjUgKzE2MywxOCBAQCBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRBCiAgICAgaWYgKCFkb2N1bWVudC5pc0hUTUxEb2N1
bWVudCgpIHx8ICFzdHJpbmcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYm9vbCB3
YXNEZWZlcnJpbmdDYWxsYmFja3MgPSBmcmFtZS5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKTsKLSAg
ICBpZiAoIXdhc0RlZmVycmluZ0NhbGxiYWNrcykKLSAgICAgICAgZnJhbWUucGFnZSgpLT5zZXRE
ZWZlcnNMb2FkaW5nKHRydWUpOwotCi0gICAgYXV0byYgY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBk
b2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwotICAgIGJvb2wgd2FzSW1hZ2VzRW5hYmxl
ZCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLmltYWdlc0VuYWJsZWQoKTsKLSAgICBpZiAod2FzSW1h
Z2VzRW5hYmxlZCkKLSAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIuc2V0SW1hZ2VzRW5hYmxl
ZChmYWxzZSk7Ci0KKyAgICBEZWZlcnJlZExvYWRpbmdTY29wZSBzY29wZShmcmFtZSk7CiAgICAg
YXV0byBmcmFnbWVudEFuZFJlc291cmNlcyA9IGNyZWF0ZUZyYWdtZW50KGZyYW1lLCBzdHJpbmcp
OwotICAgIGlmIChhdXRvKiBsb2FkZXIgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
KSB7Ci0gICAgICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291cmNlcy5y
ZXNvdXJjZXMpCi0gICAgICAgICAgICBsb2FkZXItPmFkZEFyY2hpdmVSZXNvdXJjZShXVEZNb3Zl
KHJlc291cmNlKSk7Ci0gICAgfQorICAgIGlmICghZnJhZ21lbnRBbmRSZXNvdXJjZXMuZnJhZ21l
bnQpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKHdhc0ltYWdlc0VuYWJsZWQp
Ci0gICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLnNldEltYWdlc0VuYWJsZWQodHJ1ZSk7Ci0g
ICAgaWYgKCF3YXNEZWZlcnJpbmdDYWxsYmFja3MpCi0gICAgICAgIGZyYW1lLnBhZ2UoKS0+c2V0
RGVmZXJzTG9hZGluZyhmYWxzZSk7CisgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIEF0b21pY1N0
cmluZz4gYmxvYlVSTE1hcDsKKyAgICBmb3IgKGNvbnN0IFJlZjxBcmNoaXZlUmVzb3VyY2U+JiBz
dWJyZXNvdXJjZSA6IGZyYWdtZW50QW5kUmVzb3VyY2VzLnJlc291cmNlcykgeworICAgICAgICBh
dXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2Ut
Pm1pbWVUeXBlKCkpOworICAgICAgICBTdHJpbmcgYmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2Jq
ZWN0VVJMKGRvY3VtZW50LCBibG9iKTsKKyAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3Vy
Y2UtPnVybCgpLnN0cmluZygpLCBibG9iVVJMKTsKKyAgICB9CisgICAgcmVwbGFjZVN1YnJlc291
cmNlVVJMcygqZnJhZ21lbnRBbmRSZXNvdXJjZXMuZnJhZ21lbnQsIFdURk1vdmUoYmxvYlVSTE1h
cCkpOwogCiAgICAgcmV0dXJuIFdURk1vdmUoZnJhZ21lbnRBbmRSZXNvdXJjZXMuZnJhZ21lbnQp
OwogfQpAQCAtMjI1LDkgKzI1MCw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWlu
VGV4dChjb24KIAogYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBWZWN0b3I8dWludDhf
dD4gZGF0YTsKLSAgICBkYXRhLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwotICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpLCB0eXBlKTsKKyAg
ICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCB0eXBlKTsKICAgICBBU1NF
UlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1l
bnQoKTsKICAgICBTdHJpbmcgYmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3Vt
ZW50LCBibG9iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAkocmV2aXNpb24gMjIyODM1
KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNsdWRlICJGaWxlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC05Niw2
ICs5NywxOSBAQCBCbG9iOjpCbG9iKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvCiAgICAg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIGJ1
aWxkZXIuZmluYWxpemUoKSwgbV90eXBlKTsKIH0KIAorQmxvYjo6QmxvYihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKKyAgICA6IG1fdHlwZShj
b250ZW50VHlwZSkKKyAgICAsIG1fc2l6ZShidWZmZXIuc2l6ZSgpKQoreworICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhOworICAgIGRhdGEuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkpOworCisgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7CisgICAgYmxvYlBhcnRzLmFw
cGVuZChCbG9iUGFydChXVEZNb3ZlKGRhdGEpKSk7CisgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JV
Ukw6OmNyZWF0ZUludGVybmFsVVJMKCk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5
cGUpOworfQorCiBCbG9iOjpCbG9iKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpCiAgICAgOiBtX3R5cGUoY29udGVudFR5cGUpCiAgICAgLCBtX3NpemUo
ZGF0YS5zaXplKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAkocmV2aXNpb24gMjIyODM1KQor
KysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdXNpbmcgQmxvYlBhcnRW
YXJpYW50ID0gVmFyaWFudDxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+LCBSZWZQdHI8SlND
OjpBcnJheUJ1ZmZlcj4sIFJlZlB0cjxCbG9iPiwgU3RyaW5nPjsKIApAQCAtNjAsNiArNjEsMTEg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKFdURk1vdmUoYmxv
YlBhcnRWYXJpYW50cyksIHByb3BlcnR5QmFnKSk7CiAgICAgfQogCisgICAgc3RhdGljIFJlZjxC
bG9iPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKGJ1ZmZl
ciwgY29udGVudFR5cGUpKTsKKyAgICB9CisKICAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShW
ZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihXVEZNb3ZlKGRhdGEpLCBjb250ZW50
VHlwZSkpOwpAQCAtOTksNiArMTA1LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEJsb2Io
KTsKICAgICBCbG9iKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYsIGNvbnN0IEJsb2JQcm9wZXJ0
eUJhZyYpOworICAgIEJsb2IoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSk7CiAgICAgQmxvYihWZWN0b3I8dWludDhfdD4mJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSk7CiAKICAgICBlbnVtIFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3Ig
eyByZWZlcmVuY2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yIH07CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2
aXNpb24gMjIyODM1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAxNy0xMC0wNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBVc2UgYmxvYiBVUkwgd2hlbiBwYXN0aW5nIFJURkQgaW5zdGVhZCBv
ZiBvdmVycmlkaW5nIERvY3VtZW50TG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc4MDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0NTQy
MjcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICBGaXhl
ZCB0aGUgYXNzZXJ0aW9uIGZhaWx1cmUgd2hlbiBSVEZEIGNvbnRlbnQgaXMgZW1wdHkuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5
cGUpOgorCiAyMDE3LTEwLTAzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIENvcnJlY3QgbnVsbHB0ciBkZXJlZmVyZW5jZSBkdXJpbmcgc2h1dGRvd24KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3Rl
Ym9hcmRQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyMjI4MzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtNzUsNiArNzUsOCBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEJ1
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBzaXplID0gYnVmZmVyLT5z
aXplKCk7CisgICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm47CiAgICAgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXpl
KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjIyODM1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTctMTAtMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgVXNlIGJsb2IgVVJMIHdoZW4gcGFzdGluZyBSVEZEIGluc3RlYWQgb2Ygb3ZlcnJpZGluZyBE
b2N1bWVudExvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc3ODAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDU0MjI3MD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAgICAgQWRkZWQgYSByZWdyZXNzaW9u
IHRlc3QgZm9yIGFuIGFzc2VydGlvbiBmYWlsdXJlIHdoZW4gcGFzdGluZyBhbiBlbXB0eSBSVEZE
IGFzIHdlbGwgYXMgYSB0ZXN0IGZvciBwYXN0aW5nCisgICAgICAgIFJURkQgd2l0aCBhbiBpbWFn
ZSwgd2hpY2ggc2hvdWxkIHJlc3VsdCBpbiBhbiBpbWFnZSBlbGVtZW50IHdpdGggYSBibG9iIFVS
TC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UGFzdGVJbWFnZS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Bhc3RlUlRGRC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L3Bhc3RlLXJ0ZmQuaHRtbDoKKwogMjAxNy0xMC0wMyAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8
Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBbR0xpYl0gTGV0IFdl
YkNvcmUga25vdyBvZiBsb3cgcG93ZXIgc2l0dWF0aW9ucwpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDIyMjgzNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NDUsNiAr
NTQ1LDcgQEAKIAkJOUIyNkZDQ0ExNTlEMTZERTAwQ0MzNzY1IC8qIEhUTUxGb3JtQ29sbGVjdGlv
bk5hbWVkSXRlbS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCMjZGQ0I0MTU5RDE1RTcwMENDMzc2NSAvKiBIVE1MRm9ybUNvbGxlY3Rp
b25OYW1lZEl0ZW0uaHRtbCAqLzsgfTsKIAkJOUIyNzBGRUUxRERDMkMwQjAwMkQ1M0YzIC8qIGNs
b3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyNzBGRUQxRERDMjVGRDAwMkQ1M0YzIC8qIGNsb3Nl
ZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwgKi87IH07CiAJCTlCNEY4RkE3MTU5RDUyREQwMDJEOUY5
NCAvKiBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNEY4RkE2MTU5RDUyQ0EwMDJEOUY5NCAv
KiBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sICovOyB9OworCQk5QjdENzQwRjFGODM3ODc3
MDAwNkM0MzIgLyogcGFzdGUtcnRmZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCN0Q3NDBFMUY4Mzc3RTYwMDA2QzQzMiAvKiBwYXN0
ZS1ydGZkLmh0bWwgKi87IH07CiAJCTlCRDQyMzlBMUUwNEJEOTgwMDIwMDM5NSAvKiBBdHRyaWJ1
dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5nZVdpdGhJbWFnZS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDQyMzk5MUUwNEJEOTgwMDIwMDM5NSAv
KiBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5nZVdpdGhJbWFnZS5tbSAqLzsgfTsK
IAkJOUJENDIzOUMxRTA0QzAxQzAwMjAwMzk1IC8qIGNoaW5lc2UtY2hhcmFjdGVyLXdpdGgtaW1h
Z2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5QkQ0MjM5QjFFMDRCRkQwMDAyMDAzOTUgLyogY2hpbmVzZS1jaGFyYWN0ZXItd2l0aC1p
bWFnZS5odG1sICovOyB9OwogCQk5QkQ2RDNBMjFGN0IyMTgzMDBCRDQ5NjIgLyogc3Vuc2V0LWlu
LWN1cGVydGluby0xMDBweC50aWZmIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDZEM0ExMUY3QjIwMjEwMEJENDk2MiAvKiBzdW5zZXQtaW4t
Y3VwZXJ0aW5vLTEwMHB4LnRpZmYgKi87IH07CkBAIC01NTMsNiArNTU0LDcgQEAKIAkJOUJENkQz
QTUxRjdCMjE4MzAwQkQ0OTYyIC8qIHN1bnNldC1pbi1jdXBlcnRpbm8tNjAwcHguanBnIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDZEMzlF
MUY3QjIwMUUwMEJENDk2MiAvKiBzdW5zZXQtaW4tY3VwZXJ0aW5vLTYwMHB4LmpwZyAqLzsgfTsK
IAkJOUJENkQzQTcxRjdCMjFEQzAwQkQ0OTYyIC8qIHBhc3RlLWltYWdlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJENkQzQTYxRjdC
MjFDQzAwQkQ0OTYyIC8qIHBhc3RlLWltYWdlLmh0bWwgKi87IH07CiAJCTlCRENDRDg3MUY3RDBC
MDcwMDAwOUExOCAvKiBQYXN0ZUltYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUJEQ0NEODUxRjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2Uu
bW0gKi87IH07CisJCTlCREQ5NTU4MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkREOTU1NjFGODM2
ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tICovOyB9OwogCQk5QzY0REMzMjFENzYxOThBMDA0
QjU5OEUgLyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlDNjREQzMxMUQ3NjE5OEEwMDRCNTk4RSAvKiBZ
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwICovOyB9OwogCQlBMTBGMDQ3RTFFM0FEMjlDMDBD
OTVFMTkgLyogTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMEYwNDdDMUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVN
YW5hZ2VyRXh0cmFzLm1tICovOyB9OwogCQlBMTE0NkE4RDFEMkQ3MTE1MDAwRkU3MTAgLyogQ29u
dGVudEZpbHRlcmluZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExMTQ2QThBMUQyRDcwNEYwMDBGRTcxMCAvKiBDb250ZW50RmlsdGVyaW5nLm1tICov
OyB9OwpAQCAtOTc4LDYgKzk4MCw3IEBACiAJCQkJQTU3QTM0RjIxNkFGNkIyQjAwQzI1MDFGIC8q
IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCUExNDA5QUQ5MUU3MjU0RDQwMDQ5NDlEOSAvKiBwYXNzd29yZC1wcm90ZWN0
ZWQucGFnZXMgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOUJENkQzQTcxRjdCMjFEQzAwQkQ0
OTYyIC8qIHBhc3RlLWltYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJOUI3RDc0
MEYxRjgzNzg3NzAwMDZDNDMyIC8qIHBhc3RlLXJ0ZmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQkzRkNDNEZFODFFQzRFOENBMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVn
YXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQxNTA4NkQxREEwNDBDNTAwNDRC
RTlCIC8qIHBsYXktYXVkaW8tb24tY2xpY2suaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQlGNDFBQjlBODFFRjQ2OTZCMDA4M0ZBMDggLyogcHJldmVudC1vcGVyYXRpb24uaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKQEAgLTE1MDcsNiArMTUxMCw3IEBACiAJCTlCNEY4RkEzMTU5RDUy
QjEwMDJEOUY5NCAvKiBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjRGOEZBNjE1OUQ1MkNBMDAyRDlGOTQgLyogSFRN
TENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEhU
TUxDb2xsZWN0aW9uTmFtZWRJdGVtLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTlCNzkxNjRGMUJEODlEMEQwMEQ1MEI4RiAvKiBGaXJzdFJlc3BvbmRlclNjcm9sbGluZ1Bvc2l0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlyc3RSZXNw
b25kZXJTY3JvbGxpbmdQb3NpdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OUI3RDc0MEUxRjgzNzdFNjAwMDZDNDMyIC8qIHBhc3RlLXJ0ZmQuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJw
YXN0ZS1ydGZkLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkQ0MjM5OTFF
MDRCRDk4MDAyMDAzOTUgLyogQXR0cmlidXRlZFN1YnN0cmluZ0ZvclByb3Bvc2VkUmFuZ2VXaXRo
SW1hZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdHRyaWJ1
dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5nZVdpdGhJbWFnZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUJENDIzOUIxRTA0QkZEMDAwMjAwMzk1IC8qIGNoaW5lc2UtY2hhcmFj
dGVyLXdpdGgtaW1hZ2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJjaGluZXNl
LWNoYXJhY3Rlci13aXRoLWltYWdlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5QkQ2RDM5RTFGN0IyMDFFMDBCRDQ5NjIgLyogc3Vuc2V0LWluLWN1cGVydGluby02MDBweC5q
cGcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFn
ZS5qcGVnOyBwYXRoID0gInN1bnNldC1pbi1jdXBlcnRpbm8tNjAwcHguanBnIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTUsNiArMTUxOSw3IEBACiAJCTlCRDZEM0ExMUY3QjIw
MjEwMEJENDk2MiAvKiBzdW5zZXQtaW4tY3VwZXJ0aW5vLTEwMHB4LnRpZmYgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS50aWZmOyBwYXRoID0g
InN1bnNldC1pbi1jdXBlcnRpbm8tMTAwcHgudGlmZiI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCRDZEM0E2MUY3QjIxQ0MwMEJENDk2MiAvKiBwYXN0ZS1pbWFnZS5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gInBhc3RlLWltYWdlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
QkRDQ0Q4NTFGN0QwQjA3MDAwMDlBMTggLyogUGFzdGVJbWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFBhc3RlSW1hZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCREQ5
NTU2MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBQYXN0ZVJURkQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlDNjREQzMxMUQ3
NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwRjA0N0MxRTNBRDI5QzAwQzk1RTE5IC8q
IE5TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTE0NkE4QTFEMkQ3MDRGMDAwRkU3MTAgLyogQ29udGVudEZpbHRlcmluZy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbnRlbnRGaWx0ZXJpbmcubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDE0LDYgKzIwMTksNyBAQAogCQkJCUNF
QTZDRjIyMTlDQ0Y1QkQwMDY0RjVBNyAvKiBPcGVuQW5kQ2xvc2VXaW5kb3cubW0gKi8sCiAJCQkJ
Q0VCQ0ExMkUxRTNBNjYwMTAwQzczMjkzIC8qIE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
Lm1tICovLAogCQkJCTlCRENDRDg1MUY3RDBCMDcwMDAwOUExOCAvKiBQYXN0ZUltYWdlLm1tICov
LAorCQkJCTlCREQ5NTU2MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gKi8sCiAJCQkJ
M0ZDQzRGRTQxRUM0RTg1MjAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5tbSAq
LywKIAkJCQk4M0JBRUU4QzFFRjQ2MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGlj
aWVzLm1tICovLAogCQkJCUM5NTUwMUJFMTlBRDJGQUYwMDQ5QkUzRSAvKiBQcmVmZXJlbmNlcy5t
bSAqLywKQEAgLTIzMDgsNiArMjMxNCw3IEBACiAJCQkJQ0VCQ0ExMzcxRTNBODAzNDAwQzczMjkz
IC8qIHBhZ2Utd2l0aG91dC1jc3AuaHRtbCAqLywKIAkJCQlBMTQwOUFEODFFNzI1NEFDMDA0OTQ5
RDkgLyogcGFzc3dvcmQtcHJvdGVjdGVkLnBhZ2VzICovLAogCQkJCTlCRDZEM0E2MUY3QjIxQ0Mw
MEJENDk2MiAvKiBwYXN0ZS1pbWFnZS5odG1sICovLAorCQkJCTlCN0Q3NDBFMUY4Mzc3RTYwMDA2
QzQzMiAvKiBwYXN0ZS1ydGZkLmh0bWwgKi8sCiAJCQkJM0ZDQzRGRTYxRUM0RTg3RTAwNzZFMzdD
IC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5odG1sICovLAogCQkJCUY0MTUwODZDMURBMDQw
QzEwMDQ0QkU5QiAvKiBwbGF5LWF1ZGlvLW9uLWNsaWNrLmh0bWwgKi8sCiAJCQkJRjQxQUI5OTQx
RUY0NjkyQzAwODNGQTA4IC8qIHByZXZlbnQtb3BlcmF0aW9uLmh0bWwgKi8sCkBAIC0zMzc0LDYg
KzMzODEsNyBAQAogCQkJCTdDODNFMDUxMUQwQTY0MTgwMEZFQkNGMyAvKiBQYXJzZWRDb250ZW50
UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMEExQTQxMUFFNjAwNDQ3QzRDIC8q
IFBhc3RlYm9hcmROb3RpZmljYXRpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUJEQ0NEODcx
RjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gaW4gU291cmNlcyAqLywKKwkJCQk5QkRE
OTU1ODFGODM2ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0M4M0UwNTMxRDBBNjQzQTAwRkVCQ0YzIC8qIFBlbmRpbmdBUElSZXF1ZXN0VVJMLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTNGQ0M0RkU1MUVDNEU4NTIwMDc2RTM3QyAvKiBQaWN0dXJlSW5QaWN0
dXJlRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VBRjFBNDExQTM4MDA0NDdD
NEMgLyogUGxhdGZvcm1VdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tCShy
ZXZpc2lvbiAyMjI4MzUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Bhc3RlSW1hZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNyw4IEBACiAKICNpZiBX
S19BUElfRU5BQkxFRCAmJiBQTEFURk9STShDT0NPQSkKIAotI2ltcG9ydCAiQXBwS2l0U1BJLmgi
CiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgotI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAj
aW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVJURkQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVJURkQubW0JKG5vbmV4aXN0ZW50KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVJURkQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNp
ZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVT
ZXJ2aWNlcy5oPgorI2VuZGlmCisKK0BpbnRlcmZhY2UgV0tXZWJWaWV3ICgpCistICh2b2lkKXBh
c3RlOihpZClzZW5kZXI7CitAZW5kCisKKyNpZiBQTEFURk9STShNQUMpCit2b2lkIHdyaXRlUlRG
RFRvUGFzdGVib2FyZChOU0RhdGEgKmRhdGEpCit7CisgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJh
bFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpAW05TUlRGRFBib2FyZFR5cGVdIG93bmVyOm5pbF07
CisgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldERhdGE6ZGF0YSBmb3JU
eXBlOk5TUlRGRFBib2FyZFR5cGVdOworfQorI2Vsc2UKKworQGludGVyZmFjZSBOU0F0dHJpYnV0
ZWRTdHJpbmcgKCkKKy0gKGlkKWluaXRXaXRoUlRGOihOU0RhdGEgKilkYXRhIGRvY3VtZW50QXR0
cmlidXRlczooTlNEaWN0aW9uYXJ5ICoqKWRpY3Q7CistIChpZClpbml0V2l0aFJURkQ6KE5TRGF0
YSAqKWRhdGEgZG9jdW1lbnRBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKiopZGljdDsKKy0gKE5T
RGF0YSAqKVJURkZyb21SYW5nZTooTlNSYW5nZSlyYW5nZSBkb2N1bWVudEF0dHJpYnV0ZXM6KE5T
RGljdGlvbmFyeSAqKWRpY3Q7CistIChOU0RhdGEgKilSVEZERnJvbVJhbmdlOihOU1JhbmdlKXJh
bmdlIGRvY3VtZW50QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopZGljdDsKKy0gKEJPT0wpY29u
dGFpbnNBdHRhY2htZW50czsKK0BlbmQKKwordm9pZCB3cml0ZVJURkRUb1Bhc3RlYm9hcmQoTlNE
YXRhICpkYXRhKQoreworICAgIFtbVUlQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBzZXRJ
dGVtczpAW0B7IChOU1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRCA6IGRhdGF9XV07Cit9CisjZW5k
aWYKKworVEVTVChQYXN0ZVJURkQsIEVtcHR5UlRGRCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDQwMCwgNDAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
ZzpAIjwhRE9DVFlQRSBodG1sPjxodG1sPjxib2R5PjxkaXYgaWQ9J2VkaXRvcicgY29udGVudGVk
aXRhYmxlPjwvZGl2PjwvYm9keT48L2h0bWw+Il07CisKKyAgICB3cml0ZVJURkRUb1Bhc3RlYm9h
cmQoW05TRGF0YSBkYXRhXSk7CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKS5mb2N1cygpIl07CisgICAg
W3dlYlZpZXcgcGFzdGU6bmlsXTsKK30KKworVEVTVChQYXN0ZVJURkQsIEltYWdlRWxlbWVudHNV
c2VCbG9iVVJMKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicGFzdGUtcnRmZCJdOwor
CisgICAgYXV0byAqcG5nRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpbW05T
QnVuZGxlIG1haW5CdW5kbGVdIHBhdGhGb3JSZXNvdXJjZTpAInN1bnNldC1pbi1jdXBlcnRpbm8t
MjAwcHgiIG9mVHlwZTpAInBuZyIgaW5EaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdXTsKKyAgICBhdXRvIGF0dGFjaG1lbnQgPSBhZG9wdE5TKFtbTlNUZXh0QXR0YWNobWVudCBh
bGxvY10gaW5pdFdpdGhEYXRhOnBuZ0RhdGEgb2ZUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVQTkdd
KTsKKyAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZyA9IFtOU0F0dHJpYnV0ZWRTdHJpbmcg
YXR0cmlidXRlZFN0cmluZ1dpdGhBdHRhY2htZW50OmF0dGFjaG1lbnQuZ2V0KCldOworICAgIE5T
RGF0YSAqUlRGRERhdGEgPSBbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3N0
cmluZyBsZW5ndGhdKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV07CisKKyAgICB3cml0ZVJURkRU
b1Bhc3RlYm9hcmQoUlRGRERhdGEpOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAgICBb
d2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImxvYWRlZCJdOworICAgIEVYUEVDVF9XS19TVFJFUSgi
MjAwIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImltYWdlRWxlbWVu
dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2ltZycpOyBpbWFnZUVsZW1lbnQud2lkdGgiXSk7
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJibG9iOiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJ1cmwgPSBuZXcgVVJMKGltYWdlRWxlbWVudC5zcmMpLnByb3RvY29sIl0p
OworfQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oTUFDKQorCisKKwpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9wYXN0ZS1ydGZkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9w
YXN0ZS1ydGZkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9wYXN0ZS1ydGZkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0iZWRpdG9yIiBj
b250ZW50ZWRpdGFibGU+PC9kaXY+Cis8c2NyaXB0PgorY29uc3QgZWRpdG9yID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpOworZWRpdG9yLmZvY3VzKCk7CisKK2VkaXRvci5hZGRF
dmVudExpc3RlbmVyKCdwYXN0ZScsIChldmVudCkgPT4geworICAgIHNldFRpbWVvdXQoKCkgPT4g
eworICAgICAgIGxldCBpbWcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbWcnKTsKKyAgICAg
ICBpZiAoaW1nLmNvbXBsZXRlKQorICAgICAgICAgICBub3RpZnlMb2FkZWQoKTsKKyAgICAgICBl
bHNlCisgICAgICAgICAgIGltZy5vbmxvYWQgPSBub3RpZnlMb2FkZWQ7CisgICAgfSwgMCk7Cit9
KTsKKworZnVuY3Rpb24gbm90aWZ5TG9hZGVkKCkKK3sKKyAgICB3ZWJraXQubWVzc2FnZUhhbmRs
ZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdsb2FkZWQnKTsKK30KKworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>