<?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>185108</bug_id>
          
          <creation_ts>2018-04-27 21:57:14 -0700</creation_ts>
          <short_desc>[LFC] Add LayoutTreeBuilder class to generate the layout tree</short_desc>
          <delta_ts>2018-04-28 16:14:21 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1418767</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-04-27 21:57:14 -0700</bug_when>
    <thetext>This is temporary though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418768</commentid>
    <comment_count>1</comment_count>
      <attachid>339060</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-04-27 22:07:46 -0700</bug_when>
    <thetext>Created attachment 339060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418785</commentid>
    <comment_count>2</comment_count>
      <attachid>339060</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-04-28 05:41:34 -0700</bug_when>
    <thetext>Comment on attachment 339060
Patch

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

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:31030
&gt; -			name = libPAL.a;
&gt; -			path = lib.a;
&gt; +			path = libPAL.a;

wut

&gt; Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp:49
&gt; +    std::unique_ptr&lt;Container&gt; initialContainingBlock(new BlockContainer(RenderStyle::clone(renderView.style())));

auto initialContainingBlock = std::make_unique&lt;BlockContainer&gt;(RenderStyle::clone(renderView.style())); 

perhaps?

&gt; Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp:50
&gt; +    TreeBuilder::createSubTree(renderView, *initialContainingBlock);

no need fo &quot;TreeBuilder::&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418818</commentid>
    <comment_count>3</comment_count>
      <attachid>339076</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-04-28 14:05:04 -0700</bug_when>
    <thetext>Created attachment 339076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418819</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-04-28 14:08:22 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #2)
&gt; Comment on attachment 339060 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=339060&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:31030
&gt; &gt; -			name = libPAL.a;
&gt; &gt; -			path = lib.a;
&gt; &gt; +			path = libPAL.a;
&gt; 
&gt; wut
Yeah, no idea. I tried adding the files a couple of times in a clean workspace and I always ended up with that change too.

&gt; 
&gt; &gt; Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp:49
&gt; &gt; +    std::unique_ptr&lt;Container&gt; initialContainingBlock(new BlockContainer(RenderStyle::clone(renderView.style())));
&gt; 
&gt; auto initialContainingBlock =
&gt; std::make_unique&lt;BlockContainer&gt;(RenderStyle::clone(renderView.style())); 
&gt; 
&gt; perhaps?
That&apos;s exactly what I did first but that I realized that I need to friend make_unique in addition to TreeBuilder -and I&apos;d rather friend TreeBuilder only.


&gt; &gt; Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp:50
&gt; &gt; +    TreeBuilder::createSubTree(renderView, *initialContainingBlock);
&gt; 
&gt; no need fo &quot;TreeBuilder::&quot;
Indeed! I originally had this in a different place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418832</commentid>
    <comment_count>5</comment_count>
      <attachid>339076</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-28 16:13:09 -0700</bug_when>
    <thetext>Comment on attachment 339076
Patch

Clearing flags on attachment: 339076

Committed r231141: &lt;https://trac.webkit.org/changeset/231141&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418833</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-28 16:13:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418835</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-28 16:14:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/39820229&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339060</attachid>
            <date>2018-04-27 22:07:46 -0700</date>
            <delta_ts>2018-04-28 14:05:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185108-20180427220745.patch</filename>
            <type>text/plain</type>
            <size>22610</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q5OTg0NmIwOWU4Mjg3
MTliYTAwMTAzY2EzMmRjYWY4YWE4MGNkMi4uMmFhZDZmZWRjZTkyMzk2MWUxMjhhMDQ5ZThkNGY2
YTVjYjhjNTQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE4LTA0LTI3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gQWRkIExheW91dFRy
ZWVCdWlsZGVyIGNsYXNzIHRvIGdlbmVyYXRlIHRoZSBsYXlvdXQgdHJlZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1MTA4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0ZW1wb3JhcnkgdGhv
dWdoLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGxheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nU3RhdGU6On5Gb3JtYXR0aW5nU3RhdGUpOgorICAgICAgICAqIGxheW91
dC9Gb3JtYXR0aW5nU3RhdGUuaDoKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0Q29udGV4dC5oOgor
ICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nU3RhdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdTdGF0ZTo6fkJsb2Nr
Rm9ybWF0dGluZ1N0YXRlKToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ1N0YXRlLmg6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lRm9ybWF0dGluZ1N0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
Rm9ybWF0dGluZ1N0YXRlOjp+SW5saW5lRm9ybWF0dGluZ1N0YXRlKToKKyAgICAgICAgKiBsYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaDoKKyAgICAgICAgKiBs
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCbG9ja0NvbnRhaW5lci5oOgorICAgICAgICAqIGxheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveC5oOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xh
eW91dENvbnRhaW5lci5oOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dElubGlu
ZUNvbnRhaW5lci5oOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWls
ZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpj
cmVhdGVMYXlvdXRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6
OmNyZWF0ZVN1YlRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRMYXlvdXRC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRMYXlvdXRUcmVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OnNob3dMYXlvdXRUcmVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6cHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURvY3VtZW50cyk6Cisg
ICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0QmxvY2tDb250YWluZXIu
aC4KKyAgICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKwogMjAxOC0wNC0yNyAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIEltcGxlbWVudCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpsYXlvdXQgbG9naWMgYW5kIGl0cyBkZXBlbmRlbmNpZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMzRiZDI3OWQ2
MjkzOTY2NWE2OWU3YzI4MzhkNmJmYTU1NzIxNjNiLi45OTc0NmZkZGE2ZDMzMjM2NGNlYzRlZTE5
NGY1ZWI1ZGZmNjIxNDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODksNiArMzg5LDcgQEAKIAkJMEZGODM1QzUxRUUzNTRE
QTAwOEI0Q0M3IC8qIERPTVF1YWRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkY4MzVDMDFFRTM1NERBMDA4QjRDQzcgLyogRE9NUXVhZEluaXQu
aCAqLzsgfTsKIAkJMEZGRDRENjExODY1MUZBMzAwNTEyRjZFIC8qIEFzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRkQ0RDVGMTg2NTFGQTMwMDUxMkY2RSAvKiBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTBGQjA4
NEIxNEUxNUM3RTAwQTNEQjk4IC8qIFB1YmxpY1VSTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDEwRkIwODRBMTRFMTVDN0UwMEEzREI5OCAv
KiBQdWJsaWNVUkxNYW5hZ2VyLmggKi87IH07CisJCTExMTAwRkQxMjA5M0NGMDMwMDgxQUE2QyAv
KiBMYXlvdXRUcmVlQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxMTEwMEZDRjIwOTNDRUQzMDA4MUFBNkMgLyogTGF5b3V0VHJlZUJ1aWxk
ZXIuY3BwICovOyB9OwogCQkxMTJCMzRENTFFNjBCOTgzMDBCQjMxMEEgLyogU2ltcGxlTGluZUxh
eW91dFBhZ2luYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDExMkIzNEQ0MUU2MEI5ODMwMEJCMzEwQSAvKiBTaW1wbGVMaW5lTGF5b3V0UGFnaW5h
dGlvbi5oICovOyB9OwogCQkxMTM0MDlEQTIwM0UwMzgwMDBDNjY5MTUgLyogUmVuZGVyVHJlZUJ1
aWxkZXJDb250aW51YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDExMzQwOUQ4MjAzRTAzODAwMEM2NjkxNSAvKiBSZW5kZXJUcmVlQnVpbGRlckNv
bnRpbnVhdGlvbi5oICovOyB9OwogCQkxMTNEMEI1MjFGOUZERDJCMDBGNjExQkIgLyogRnJhbWVW
aWV3TGF5b3V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTEzRDBCNTAxRjlGREQyQjAwRjYxMUJCIC8qIEZyYW1lVmlld0xheW91dENvbnRl
eHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NTcyMCw2ICs1NzIxLDggQEAKIAkJMTExMDBGQzcyMDkyNzY0QzAwODFBQTZDIC8qIExheW91dEl0
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTExMTAwRkM5MjA5MjdDQkMwMDgxQUE2QyAvKiBMYXlvdXRDaGlsZEl0
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dENoaWxkSXRlcmF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTExMDBGQ0EyMDkyODY4RDAwODFBQTZDIC8qIExheW91dEFu
Y2VzdG9ySXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0QW5jZXN0b3JJdGVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTEwMEZDRTIwOTNDRUQzMDA4MUFBNkMg
LyogTGF5b3V0VHJlZUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0VHJlZUJ1aWxkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTExMDBGQ0YyMDkzQ0VEMzAwODFBQTZD
IC8qIExheW91dFRyZWVCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dFRyZWVC
dWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTEyQjM0RDAxRTYwQjhB
NzAwQkIzMTBBIC8qIFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTEyQjM0RDQxRTYwQjk4MzAwQkIzMTBBIC8q
IFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTExMzQwOUQ3MjAzRTAzODAwMEM2NjkxNSAvKiBSZW5kZXJUcmVlQnVpbGRlckNv
bnRpbnVhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJUcmVlQnVpbGRlckNvbnRp
bnVhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTY3MSw2ICsxNTY3
NCw4IEBACiAJCQkJMTE5OUZBNEUyMDhFMzg5OTAwMjM1OENDIC8qIExheW91dElubGluZUNvbnRh
aW5lci5jcHAgKi8sCiAJCQkJMTE5OUZBNEQyMDhFMzg5OTAwMjM1OENDIC8qIExheW91dElubGlu
ZUNvbnRhaW5lci5oICovLAogCQkJCTExMTAwRkM3MjA5Mjc2NEMwMDgxQUE2QyAvKiBMYXlvdXRJ
dGVyYXRvci5oICovLAorCQkJCTExMTAwRkNGMjA5M0NFRDMwMDgxQUE2QyAvKiBMYXlvdXRUcmVl
QnVpbGRlci5jcHAgKi8sCisJCQkJMTExMDBGQ0UyMDkzQ0VEMzAwODFBQTZDIC8qIExheW91dFRy
ZWVCdWlsZGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGxheW91dHRyZWU7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMzEwMjIsOCArMzEwMjcsNyBAQAogCQkxQzA5RDA1MDFFMzFD
MzI5MDA3MjVGMTggLyogbGliUEFMLmEgKi8gPSB7CiAJCQlpc2EgPSBQQlhSZWZlcmVuY2VQcm94
eTsKIAkJCWZpbGVUeXBlID0gYXJjaGl2ZS5hcjsKLQkJCW5hbWUgPSBsaWJQQUwuYTsKLQkJCXBh
dGggPSBsaWIuYTsKKwkJCXBhdGggPSBsaWJQQUwuYTsKIAkJCXJlbW90ZVJlZiA9IDFDMDlEMDRG
MUUzMUMzMjkwMDcyNUYxOCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CiAJCQlzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOwogCQl9OwpAQCAtMzEzMTMsNiArMzEzMTcsNyBAQAog
CQkJCUNEMDYzRjgyMUUyM0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUzOEVDOTNFMUY5OUJGNUEwMDREMjJBOCAvKiBKU1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNUM0NzcwMDlBQzRENzMw
MEE2QUFCNCAvKiBLZXlFdmVudE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTExMTAwRkQxMjA5
M0NGMDMwMDgxQUE2QyAvKiBMYXlvdXRUcmVlQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDREE5OEUwQjE2MDNDRDYwMDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNERThCNUVDMUE2OTc3NzMwMEI0QjY2QSAvKiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJL
ZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDQTk4RUIxOEIyQzhFQjAwQzEyRkY5IC8qIExl
Z2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5jcHAKaW5kZXggMGUyOGU4NTY5YTk0OWU3NzVmNWFk
Y2JjZmVlNTRmNGMyZjA4ZjgyYS4uZmY2OTFhNzAzNmM2MjJmZTliMzcyN2YzYWY0ZDQzNDgyNjEx
NTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5jcHAKQEAgLTQw
LDYgKzQwLDEwIEBAIEZvcm1hdHRpbmdTdGF0ZTo6Rm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGlu
Z1N0YXRlPiYmIGZsb2F0aW5nU3RhdGUpCiB7CiB9CiAKK0Zvcm1hdHRpbmdTdGF0ZTo6fkZvcm1h
dHRpbmdTdGF0ZSgpCit7Cit9CisKIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zv
cm1hdHRpbmdTdGF0ZS5oCmluZGV4IDY5OGIzYzdmMmNiYzUxZGM1MDJkZmFhNTQ4YTZiNmQ2ZGI3
MWVlNWUuLjEwYzNhNDI3OGE5NzI0NGQ1NTg3ODUzY2VmODk5NWM3ZTZmNmZjZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3Mg
Rm9ybWF0dGluZ1N0YXRlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEZvcm1hdHRpbmdT
dGF0ZSk7CiBwdWJsaWM6CiAgICAgRm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRlPiYm
KTsKKyAgICB2aXJ0dWFsIH5Gb3JtYXR0aW5nU3RhdGUoKTsKIAogICAgIEZsb2F0aW5nU3RhdGUm
IGZsb2F0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zsb2F0aW5nU3RhdGU7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmgKaW5kZXggNTc2OGJkMmZlNDY1Y2EyMzM3YWJj
ZDVmMDI5YmNmZmMxYzI4ZjRhNC4uYTk5YjE1ZjdmODk0NzZjZDE5Y2JiZTVhNTVmMzIxNTI2OGY3
ODRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5oCkBAIC0yNyw2ICsyNyw4
IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAorI2luY2x1ZGUg
IkZvcm1hdHRpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5j
bHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCkBAIC0zOCw4
ICs0MCw2IEBAIGNsYXNzIEJveDsKIAogbmFtZXNwYWNlIExheW91dCB7CiAKLWNsYXNzIEZvcm1h
dHRpbmdDb250ZXh0OwotY2xhc3MgRm9ybWF0dGluZ1N0YXRlOwogY2xhc3MgU3R5bGVEaWZmOwog
CiAvLyBMYXlvdXRDb250ZXh0IGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgbGF5b3V0LiBJdCB0YWtl
cyBhIChmb3JtYXR0aW5nIHJvb3QpY29udGFpbmVyIHdoaWNoIGFjdHMgYXMgdGhlIHJvb3Qgb2Yg
dGhlIGxheW91dCBjb250ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmNwcAppbmRleCA5NWE4
YTBiZDNmNGFhZmM0NDE5MzA3NWEzYzg1M2NlMThhYzMzNzQ5Li5jOTUxZWVlMzZjOTAxZmEwYmM2
NDUxZTI3MjgwYTE1ZDAxNzA4MjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmNwcApAQCAt
NDAsNiArNDAsMTAgQEAgQmxvY2tGb3JtYXR0aW5nU3RhdGU6OkJsb2NrRm9ybWF0dGluZ1N0YXRl
KFJlZjxGbG9hdGluZ1N0YXRlPiYmIGZsb2F0aW5nU3RhdGUpCiB7CiB9CiAKK0Jsb2NrRm9ybWF0
dGluZ1N0YXRlOjp+QmxvY2tGb3JtYXR0aW5nU3RhdGUoKQoreworfQorCiB9CiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nU3RhdGUuaAppbmRleCA2MjAyMzEwODg4NDYxZjM4YzcwNGU2MGE5NTlk
ODU1ZTU0ODEzMjMyLi40NGU1ZDgzYzVjMDVhNGZiMmIxN2FlYTM5ZTQyNWIwNzA3YzcwNzEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9y
bWF0dGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIEJsb2NrRm9y
bWF0dGluZ1N0YXRlIDogcHVibGljIEZvcm1hdHRpbmdTdGF0ZSB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChCbG9ja0Zvcm1hdHRpbmdTdGF0ZSk7CiBwdWJsaWM6CiAgICAgQmxvY2tGb3Jt
YXR0aW5nU3RhdGUoUmVmPEZsb2F0aW5nU3RhdGU+JiYpOworICAgIHZpcnR1YWwgfkJsb2NrRm9y
bWF0dGluZ1N0YXRlKCk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmNwcApp
bmRleCA5OTk3MGQxZDhjYTg1Y2JiNThjMTBhMWJjYzZmNDU2MjM2NTY2NmJiLi43MjFkODI5NGZh
ODU2MWQwYTAzODJkNTQ5MzVhNTAyZGVkNGMxODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdT
dGF0ZS5jcHAKQEAgLTQwLDYgKzQwLDEwIEBAIElubGluZUZvcm1hdHRpbmdTdGF0ZTo6SW5saW5l
Rm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRlPiYmIGZsb2F0aW5nU3RhdGUpCiB7CiB9
CiAKK0lubGluZUZvcm1hdHRpbmdTdGF0ZTo6fklubGluZUZvcm1hdHRpbmdTdGF0ZSgpCit7Cit9
CisKIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaAppbmRleCBjN2I1ZDdi
MzI5NmY3YjJiMzI1YWU0ODE0OTBmZmM2M2UwZWQyNWNkLi41NjIzZGQ5ODY0OWVjMTEzN2JkNDE0
ZWJlMGRkYjdkMTA5MzY1ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaApAQCAtMzks
NiArMzksNyBAQCBjbGFzcyBJbmxpbmVGb3JtYXR0aW5nU3RhdGUgOiBwdWJsaWMgRm9ybWF0dGlu
Z1N0YXRlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKElubGluZUZvcm1hdHRpbmdTdGF0
ZSk7CiBwdWJsaWM6CiAgICAgSW5saW5lRm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRl
PiYmKTsKKyAgICB2aXJ0dWFsIH5JbmxpbmVGb3JtYXR0aW5nU3RhdGUoKTsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJsb2NrQ29u
dGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCbG9ja0Nv
bnRhaW5lci5oCmluZGV4IDk4YzQxYTNkNzY5ZjUwNGNjN2I1NGU2MDFkNzdkZmFkM2QyY2JjOTUu
LmRhZGU3MDYwZWFkZDA5YjNkOWUzNjI4YWRhNmY4ODZmYjYwZmQwOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJsb2NrQ29udGFpbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0QmxvY2tDb250YWluZXIu
aApAQCAtMzksOSArMzksMTMgQEAgbmFtZXNwYWNlIExheW91dCB7CiBjbGFzcyBCbG9ja0NvbnRh
aW5lciA6IHB1YmxpYyBDb250YWluZXIgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQmxv
Y2tDb250YWluZXIpOwogcHVibGljOgotICAgIEJsb2NrQ29udGFpbmVyKFJlbmRlclN0eWxlJiYs
IEJhc2VUeXBlRmxhZ3MpOworICAgIGZyaWVuZCBjbGFzcyBUcmVlQnVpbGRlcjsKIAogICAgIGJv
b2wgZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IGZpbmFsOworCitw
cm90ZWN0ZWQ6CisgICAgQmxvY2tDb250YWluZXIoUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFn
cyA9IEJsb2NrQ29udGFpbmVyRmxhZyk7CisKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKaW5kZXggMmM4MWE5MTJhMzg1ZjM1ODFhMjc3OTI5
MDQ3YjAyOTVmMWI1OGE4Mi4uMTJlN2RkMGRjYmE1MzE3MWNhZTI3MWJmYmYzMGMxZWZlYTMxMGMz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKQEAg
LTQyLDkgKzQyLDcgQEAgY2xhc3MgQm94IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEJv
eCk7CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVCdWlsZGVyOwotICAgIHR5cGVkZWYg
dW5zaWduZWQgQmFzZVR5cGVGbGFnczsKIAotICAgIEJveChSZW5kZXJTdHlsZSYmLCBCYXNlVHlw
ZUZsYWdzKTsKICAgICB2aXJ0dWFsIH5Cb3goKTsKIAogICAgIGJvb2wgZXN0YWJsaXNoZXNGb3Jt
YXR0aW5nQ29udGV4dCgpIGNvbnN0OwpAQCAtODMsNiArODEsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgQm94KiBwcmV2aW91c0luRmxvd1NpYmxpbmcoKSBjb25zdDsKICAgICBjb25zdCBCb3gqIHBy
ZXZpb3VzSW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSBjb25zdDsKIAorICAgIHR5cGVkZWYgdW5z
aWduZWQgQmFzZVR5cGVGbGFnczsKICAgICBib29sIGlzQ29udGFpbmVyKCkgY29uc3QgeyByZXR1
cm4gbV9iYXNlVHlwZUZsYWdzICYgQ29udGFpbmVyRmxhZzsgfQogICAgIGJvb2wgaXNCbG9ja0Nv
bnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVR5cGVGbGFncyAmIEJsb2NrQ29udGFpbmVy
RmxhZzsgfQogICAgIGJvb2wgaXNJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX2Jhc2VUeXBl
RmxhZ3MgJiBJbmxpbmVCb3hGbGFnOyB9CkBAIC05Nyw2ICs5Niw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgSW5saW5lQm94RmxhZyAgICAgICAgID0gMSA8PCAyLAogICAgICAgICBJbmxpbmVDb250
YWluZXJGbGFnICAgPSAxIDw8IDMKICAgICB9OworICAgIEJveChSZW5kZXJTdHlsZSYmLCBCYXNl
VHlwZUZsYWdzKTsKIAogICAgIGJvb2wgaXNPdmVyZmxvd1Zpc2libGUoKSBjb25zdDsKIApAQCAt
MTEzLDcgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgQm94KiBtX3ByZXZpb3VzU2libGluZyB7IG51
bGxwdHIgfTsKICAgICBCb3gqIG1fbmV4dFNpYmxpbmcgeyBudWxscHRyIH07CiAKLSAgICB1bnNp
Z25lZCBtX2Jhc2VUeXBlRmxhZ3MgOiAzOworICAgIHVuc2lnbmVkIG1fYmFzZVR5cGVGbGFncyA6
IDQ7CiAgICAgdW5zaWduZWQgbV9pc0Fub255bW91cyA6IDE7CiAKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5oCmluZGV4IGRhY2Q2
YjRlNzBiYjE3MmU4MDY0MmExMzQ2ZTU2YmZkZWI3MTA1OTcuLjZiYTg5YWU3MzI3NmNlMWQ5NmVi
ZjcwYzhiNmY4YWJiMTM0ODBiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5oCkBAIC00Miw4ICs0Miw2IEBAIGNsYXNzIENvbnRh
aW5lciA6IHB1YmxpYyBCb3ggewogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBUcmVlQnVpbGRl
cjsKIAotICAgIENvbnRhaW5lcihSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKLQogICAg
IGNvbnN0IEJveCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZDsgfQog
ICAgIGNvbnN0IEJveCogZmlyc3RJbkZsb3dDaGlsZCgpIGNvbnN0OwogICAgIGNvbnN0IEJveCog
Zmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSBjb25zdDsKQEAgLTU3LDYgKzU1LDkgQEAgcHVi
bGljOgogCiAgICAgY29uc3QgVmVjdG9yPFdlYWtQdHI8Qm94Pj4mIG91dE9mRmxvd0Rlc2NlbmRh
bnRzKCkgeyByZXR1cm4gbV9vdXRPZkZsb3dEZXNjZW5kYW50czsgfQogCitwcm90ZWN0ZWQ6Cisg
ICAgQ29udGFpbmVyKFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOworCiBwcml2YXRlOgog
ICAgIHZvaWQgc2V0Rmlyc3RDaGlsZChCb3gmKTsKICAgICB2b2lkIHNldExhc3RDaGlsZChCb3gm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dElu
bGluZUNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
SW5saW5lQ29udGFpbmVyLmgKaW5kZXggYTkzYTY5MDc3ODY4N2YyYmQ1YjU5YmY4NWIyNTE3YjQ0
NTA4Yzk2NC4uYWFhMjFkNWFiYTkwNmI1YTk1ODAxN2ViYmE1MTY0MDZkYTZmYTM3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SW5saW5lQ29udGFp
bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SW5saW5l
Q29udGFpbmVyLmgKQEAgLTM5LDcgKzM5LDEwIEBAIG5hbWVzcGFjZSBMYXlvdXQgewogY2xhc3Mg
SW5saW5lQ29udGFpbmVyIDogcHVibGljIENvbnRhaW5lciB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChJbmxpbmVDb250YWluZXIpOwogcHVibGljOgotICAgIElubGluZUNvbnRhaW5lcihS
ZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKKyAgICBmcmllbmQgY2xhc3MgVHJlZUJ1aWxk
ZXI7CisKK3Byb3RlY3RlZDoKKyAgICBJbmxpbmVDb250YWluZXIoUmVuZGVyU3R5bGUmJiwgQmFz
ZVR5cGVGbGFncyA9IElubGluZUNvbnRhaW5lckZsYWcpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY5MTY5OWU2NDg5MTc5ZDg5MjNhMGEyODJiNzgyMTJjODE3YjA5MjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVl
QnVpbGRlci5jcHAKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTGF5b3V0VHJlZUJ1aWxkZXIuaCIKKworI2lmIEVOQUJMRShMQVlP
VVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiTGF5b3V0QmxvY2tDb250YWluZXIu
aCIKKyNpbmNsdWRlICJMYXlvdXRDaGlsZEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiTGF5b3V0Q29u
dGFpbmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0SW5saW5lQm94LmgiCisjaW5jbHVkZSAiTGF5b3V0
SW5saW5lQ29udGFpbmVyLmgiCisjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKKyNpbmNsdWRlICJS
ZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgorI2luY2x1
ZGUgIlJlbmRlcklubGluZS5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK3N0ZDo6dW5pcXVlX3B0cjxDb250
YWluZXI+IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRUcmVlKGNvbnN0IFJlbmRlclZpZXcmIHJl
bmRlclZpZXcpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lcj4gaW5pdGlhbENvbnRh
aW5pbmdCbG9jayhuZXcgQmxvY2tDb250YWluZXIoUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlclZp
ZXcuc3R5bGUoKSkpKTsKKyAgICBUcmVlQnVpbGRlcjo6Y3JlYXRlU3ViVHJlZShyZW5kZXJWaWV3
LCAqaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CisgICAgcmV0dXJuIGluaXRpYWxDb250YWluaW5n
QmxvY2s7Cit9CisKK3ZvaWQgVHJlZUJ1aWxkZXI6OmNyZWF0ZVN1YlRyZWUoY29uc3QgUmVuZGVy
RWxlbWVudCYgcm9vdFJlbmRlcmVyLCBDb250YWluZXImIHJvb3RDb250YWluZXIpCit7CisgICAg
Ly8gU2tpcCBSZW5kZXJUZXh0IGZvciBub3cuCisgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxk
cmVuT2ZUeXBlPFJlbmRlckVsZW1lbnQ+KHJvb3RSZW5kZXJlcikpIHsKKyAgICAgICAgQm94KiBi
b3ggPSBudWxscHRyOworICAgICAgICBpZiAoaXM8UmVuZGVyQmxvY2s+KGNoaWxkKSkgeworICAg
ICAgICAgICAgYm94ID0gbmV3IEJsb2NrQ29udGFpbmVyKFJlbmRlclN0eWxlOjpjbG9uZShjaGls
ZC5zdHlsZSgpKSk7CisgICAgICAgICAgICBjcmVhdGVTdWJUcmVlKGNoaWxkLCBkb3duY2FzdDxD
b250YWluZXI+KCpib3gpKTsKKyAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJJbmxpbmU+KGNo
aWxkKSkgeworICAgICAgICAgICAgYm94ID0gbmV3IElubGluZUNvbnRhaW5lcihSZW5kZXJTdHls
ZTo6Y2xvbmUoY2hpbGQuc3R5bGUoKSkpOworICAgICAgICAgICAgY3JlYXRlU3ViVHJlZShjaGls
ZCwgZG93bmNhc3Q8Q29udGFpbmVyPigqYm94KSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAgICAgaWYgKCFyb290Q29udGFpbmVyLmhh
c0NoaWxkKCkpIHsKKyAgICAgICAgICAgIHJvb3RDb250YWluZXIuc2V0Rmlyc3RDaGlsZCgqYm94
KTsKKyAgICAgICAgICAgIHJvb3RDb250YWluZXIuc2V0TGFzdENoaWxkKCpib3gpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byogbGFzdENoaWxkID0gY29uc3RfY2FzdDxCb3gq
Pihyb290Q29udGFpbmVyLmxhc3RDaGlsZCgpKTsKKyAgICAgICAgICAgIGJveC0+c2V0UHJldmlv
dXNTaWJsaW5nKCpsYXN0Q2hpbGQpOworICAgICAgICAgICAgbGFzdENoaWxkLT5zZXROZXh0U2li
bGluZygqYm94KTsKKyAgICAgICAgICAgIHJvb3RDb250YWluZXIuc2V0TGFzdENoaWxkKCpib3gp
OworICAgICAgICB9CisgICAgICAgIGJveC0+c2V0UGFyZW50KHJvb3RDb250YWluZXIpOworICAg
IH0KK30KKworI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKK3N0YXRpYyB2b2lkIG91dHB1dExh
eW91dEJveChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEJveCYgbGF5b3V0Qm94LCB1bnNpZ25l
ZCBkZXB0aCkKK3sKKyAgICB1bnNpZ25lZCBwcmludGVkQ2hhcmFjdGVycyA9IDA7CisgICAgd2hp
bGUgKCsrcHJpbnRlZENoYXJhY3RlcnMgPD0gZGVwdGggKiAyKQorICAgICAgICBzdHJlYW0gPDwg
IiAiOworCisgICAgaWYgKGlzPElubGluZUNvbnRhaW5lcj4obGF5b3V0Qm94KSkKKyAgICAgICAg
c3RyZWFtIDw8ICJpbmxpbmUgY29udGFpbmVyIjsKKyAgICBlbHNlIGlmIChpczxJbmxpbmVCb3g+
KGxheW91dEJveCkpCisgICAgICAgIHN0cmVhbSA8PCAiaW5saW5lIGJveCI7CisgICAgZWxzZSBp
ZiAoaXM8QmxvY2tDb250YWluZXI+KGxheW91dEJveCkpIHsKKyAgICAgICAgaWYgKCFsYXlvdXRC
b3gucGFyZW50KCkpCisgICAgICAgICAgICBzdHJlYW0gPDwgImluaXRpYWwgIjsKKyAgICAgICAg
c3RyZWFtIDw8ICJibG9jayBjb250YWluZXIiOworICAgIH0gZWxzZQorICAgICAgICBzdHJlYW0g
PDwgImJveCI7CisgICAgc3RyZWFtIDw8ICIgYXQgWzAgMF0gc2l6ZSBbMCAwXSI7CisgICAgc3Ry
ZWFtIDw8ICIgb2JqZWN0IFsiIDw8ICZsYXlvdXRCb3ggPDwgIl0iOworCisgICAgc3RyZWFtLm5l
eHRMaW5lKCk7Cit9CisKK3N0YXRpYyB2b2lkIG91dHB1dExheW91dFRyZWUoVGV4dFN0cmVhbSYg
c3RyZWFtLCBjb25zdCBDb250YWluZXImIHJvb3RDb250YWluZXIsIHVuc2lnbmVkIGRlcHRoKQor
eworICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxCb3g+KHJvb3RDb250YWlu
ZXIpKSB7CisgICAgICAgIG91dHB1dExheW91dEJveChzdHJlYW0sIGNoaWxkLCBkZXB0aCk7Cisg
ICAgICAgIGlmIChpczxDb250YWluZXI+KGNoaWxkKSkKKyAgICAgICAgICAgIG91dHB1dExheW91
dFRyZWUoc3RyZWFtLCBkb3duY2FzdDxDb250YWluZXI+KGNoaWxkKSwgZGVwdGggKyAxKTsKKyAg
ICB9Cit9CisKK3ZvaWQgVHJlZUJ1aWxkZXI6OnNob3dMYXlvdXRUcmVlKGNvbnN0IENvbnRhaW5l
ciYgbGF5b3V0Qm94KQoreworICAgIFRleHRTdHJlYW0gc3RyZWFtKFRleHRTdHJlYW06OkxpbmVN
b2RlOjpNdWx0aXBsZUxpbmUsIFRleHRTdHJlYW06OkZvcm1hdHRpbmc6OlNWR1N0eWxlUmVjdCk7
CisgICAgb3V0cHV0TGF5b3V0Qm94KHN0cmVhbSwgbGF5b3V0Qm94LCAwKTsKKyAgICBvdXRwdXRM
YXlvdXRUcmVlKHN0cmVhbSwgbGF5b3V0Qm94LCAxKTsKKyAgICBXVEZMb2dBbHdheXMoIiVzIiwg
c3RyZWFtLnJlbGVhc2UoKS51dGY4KCkuZGF0YSgpKTsKK30KKwordm9pZCBwcmludExheW91dFRy
ZWVGb3JMaXZlRG9jdW1lbnRzKCkKK3sKKyAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDog
RG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7CisgICAgICAgIGlmICghZG9jdW1lbnQtPnJlbmRl
clZpZXcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoZG9jdW1lbnQtPmZy
YW1lKCkgJiYgZG9jdW1lbnQtPmZyYW1lKCktPmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS1tYWluIGZyYW1lLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS1cbiIpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBk
b2N1bWVudC0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExheW91dDo6
VHJlZUJ1aWxkZXI6OnNob3dMYXlvdXRUcmVlKCpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVM
YXlvdXRUcmVlKCpkb2N1bWVudC0+cmVuZGVyVmlldygpKSk7CisgICAgfQorfQorI2VuZGlmCisK
K30KK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2I4N2I5YjJjN2JhZTIyM2MyNmVh
ZDBjODI2NGY4OGFmOWE2NGM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaApAQCAtMCwwICsxLDU1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09O
VEVYVCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJFbGVtZW50OworY2xh
c3MgUmVuZGVyVmlldzsKKworbmFtZXNwYWNlIExheW91dCB7CisKK2NsYXNzIENvbnRhaW5lcjsK
KworY2xhc3MgVHJlZUJ1aWxkZXIgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGFpbmVyPiBjcmVhdGVMYXlvdXRUcmVlKGNvbnN0IFJlbmRlclZpZXcmKTsKKyAgICBz
dGF0aWMgdm9pZCBzaG93TGF5b3V0VHJlZShjb25zdCBDb250YWluZXImKTsKKworcHJpdmF0ZToK
KyAgICBzdGF0aWMgdm9pZCBjcmVhdGVTdWJUcmVlKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJvb3RS
ZW5kZXJlciwgQ29udGFpbmVyJiByb290Q29udGFpbmVyKTsKK307CisKKyNpZiBFTkFCTEUoVFJF
RV9ERUJVR0dJTkcpCit2b2lkIHByaW50TGF5b3V0VHJlZUZvckxpdmVEb2N1bWVudHMoKTsKKyNl
bmRpZgorCit9Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KaW5kZXgg
YWEwMzBjNTQ2MTdmZjBlYjNhODEzMjRkYzk0NTFkMjljZjJlNTkyMi4uZWRmMTgxMDdlMjAwNGVl
ZDQ4YzNiMTI5M2EzMWNiZTE3NGUyMjU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1t
CkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVMb2Fk
ZXIuaCIKICNpbXBvcnQgIkZyYW1lVHJlZS5oIgorI2ltcG9ydCAiTGF5b3V0VHJlZUJ1aWxkZXIu
aCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgogI2ltcG9y
dCA8cGFsL0xvZ2dpbmcuaD4KQEAgLTU2LDYgKzU3LDkgQEAgdm9pZCBQYWdlOjpwbGF0Zm9ybUlu
aXRpYWxpemUoKQogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CiAgICAgICAgIFBB
TDo6cmVnaXN0ZXJOb3RpZnlDYWxsYmFjaygiY29tLmFwcGxlLldlYktpdC5zaG93UmVuZGVyVHJl
ZSIsIHByaW50UmVuZGVyVHJlZUZvckxpdmVEb2N1bWVudHMpOwogICAgICAgICBQQUw6OnJlZ2lz
dGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd0xheWVyVHJlZSIsIHByaW50
TGF5ZXJUcmVlRm9yTGl2ZURvY3VtZW50cyk7CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCisgICAgICAgIFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxsYmFjaygiY29tLmFwcGxl
LldlYktpdC5zaG93TGF5b3V0VHJlZSIsIExheW91dDo6cHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURv
Y3VtZW50cyk7CisjZW5kaWYKICAgICB9KTsKICNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339076</attachid>
            <date>2018-04-28 14:05:04 -0700</date>
            <delta_ts>2018-04-28 16:13:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185108-20180428140503.patch</filename>
            <type>text/plain</type>
            <size>21366</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q5OTg0NmIwOWU4Mjg3
MTliYTAwMTAzY2EzMmRjYWY4YWE4MGNkMi4uOGJkZTE2Yzg4MWRhNmI3ZmZmN2FhY2RmOWY2MDlk
YTZiZTE4MGRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE4LTA0LTI3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gQWRkIExheW91dFRy
ZWVCdWlsZGVyIGNsYXNzIHRvIGdlbmVyYXRlIHRoZSBsYXlvdXQgdHJlZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1MTA4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBmb3IgdGVzdGluZyBw
dXJwb3Nlcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ1N0YXRlOjp+Rm9ybWF0dGluZ1N0YXRlKToKKyAgICAgICAgKiBs
YXlvdXQvRm9ybWF0dGluZ1N0YXRlLmg6CisgICAgICAgICogbGF5b3V0L0xheW91dENvbnRleHQu
aDoKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nU3RhdGU6On5C
bG9ja0Zvcm1hdHRpbmdTdGF0ZSk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdTdGF0ZS5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUZvcm1hdHRpbmdTdGF0ZTo6fklubGluZUZvcm1hdHRpbmdTdGF0ZSk6CisgICAgICAgICog
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmg6CisgICAgICAg
ICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0QmxvY2tDb250YWluZXIuaDoKKyAgICAgICAgKiBs
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaDoKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRDb250YWluZXIuaDoKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJ
bmxpbmVDb250YWluZXIuaDoKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVl
QnVpbGRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRl
cjo6Y3JlYXRlTGF5b3V0VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWls
ZGVyOjpjcmVhdGVTdWJUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TGF5
b3V0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TGF5b3V0VHJlZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpzaG93TGF5b3V0VHJlZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OnByaW50TGF5b3V0VHJlZUZvckxpdmVEb2N1bWVudHMp
OgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJsb2NrQ29udGFp
bmVyLmguCisgICAgICAgICogcGFnZS9tYWMvUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisKIDIwMTgtMDQtMjcgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBJbXBsZW1lbnQgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0IGxvZ2ljIGFuZCBpdHMgZGVwZW5kZW5jaWVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDRiYWMyYzA4NWVkZmZmODA0NzY0ODhiOTI5N2JhNzA5Njg1YmM5YWEuLjczYzEzNTE1
ODAwODQ0NTFiYjcwZjk0NjVkN2Y4NDU3ZWRjNzQ3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xMjI5
LDYgKzEyMjksNyBAQCBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCiBsYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRDb250YWluZXIuY3BwCiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJbmxp
bmVCb3guY3BwCiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJbmxpbmVDb250YWluZXIuY3BwCits
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKIAogbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCiBsb2FkZXIvQ29va2llSmFyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMzNGJkMjc5ZDYyOTM5NjY1YTY5
ZTdjMjgzOGQ2YmZhNTU3MjE2M2IuLmVjNjBmNDM0MmNkNzJkYjFkYzE2YzhkM2QyMjc4ODAwOTI2
Y2UxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTU3MjAsNiArNTcyMCw4IEBACiAJCTExMTAwRkM3MjA5Mjc2NEMwMDgxQUE2
QyAvKiBMYXlvdXRJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRJdGVyYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMTEwMEZDOTIwOTI3Q0JDMDA4MUFBNkMgLyog
TGF5b3V0Q2hpbGRJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRDaGlsZEl0ZXJhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExMTAwRkNBMjA5Mjg2OEQwMDgxQUE2
QyAvKiBMYXlvdXRBbmNlc3Rvckl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dEFuY2Vz
dG9ySXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTExMDBGRDUyMDk1
MTRERTAwODFBQTZDIC8qIExheW91dFRyZWVCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExheW91dFRyZWVCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTEx
MDBGRDcyMDk1MTRERjAwODFBQTZDIC8qIExheW91dFRyZWVCdWlsZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExheW91dFRyZWVCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTEx
MkIzNEQwMUU2MEI4QTcwMEJCMzEwQSAvKiBTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW1wbGVMaW5lTGF5b3V0UGFn
aW5hdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExMkIzNEQ0MUU2MEI5
ODMwMEJCMzEwQSAvKiBTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxMTM0MDlENzIwM0UwMzgwMDBDNjY5MTUgLyogUmVuZGVy
VHJlZUJ1aWxkZXJDb250aW51YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyVHJl
ZUJ1aWxkZXJDb250aW51YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTU2NzEsNiArMTU2NzMsOCBAQAogCQkJCTExOTlGQTRFMjA4RTM4OTkwMDIzNThDQyAvKiBMYXlv
dXRJbmxpbmVDb250YWluZXIuY3BwICovLAogCQkJCTExOTlGQTREMjA4RTM4OTkwMDIzNThDQyAv
KiBMYXlvdXRJbmxpbmVDb250YWluZXIuaCAqLywKIAkJCQkxMTEwMEZDNzIwOTI3NjRDMDA4MUFB
NkMgLyogTGF5b3V0SXRlcmF0b3IuaCAqLywKKwkJCQkxMTEwMEZENTIwOTUxNERFMDA4MUFBNkMg
LyogTGF5b3V0VHJlZUJ1aWxkZXIuY3BwICovLAorCQkJCTExMTAwRkQ3MjA5NTE0REYwMDgxQUE2
QyAvKiBMYXlvdXRUcmVlQnVpbGRlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBsYXlvdXR0cmVl
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMxMDIyLDggKzMxMDI2LDcgQEAKIAkJ
MUMwOUQwNTAxRTMxQzMyOTAwNzI1RjE4IC8qIGxpYlBBTC5hICovID0gewogCQkJaXNhID0gUEJY
UmVmZXJlbmNlUHJveHk7CiAJCQlmaWxlVHlwZSA9IGFyY2hpdmUuYXI7Ci0JCQluYW1lID0gbGli
UEFMLmE7Ci0JCQlwYXRoID0gbGliLmE7CisJCQlwYXRoID0gbGliUEFMLmE7CiAJCQlyZW1vdGVS
ZWYgPSAxQzA5RDA0RjFFMzFDMzI5MDA3MjVGMTggLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICov
OwogCQkJc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsKIAkJfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5jcHAKaW5kZXggMGUyOGU4NTY5YTk0OWU3NzVmNWFk
Y2JjZmVlNTRmNGMyZjA4ZjgyYS4uZmY2OTFhNzAzNmM2MjJmZTliMzcyN2YzYWY0ZDQzNDgyNjEx
NTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5jcHAKQEAgLTQw
LDYgKzQwLDEwIEBAIEZvcm1hdHRpbmdTdGF0ZTo6Rm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGlu
Z1N0YXRlPiYmIGZsb2F0aW5nU3RhdGUpCiB7CiB9CiAKK0Zvcm1hdHRpbmdTdGF0ZTo6fkZvcm1h
dHRpbmdTdGF0ZSgpCit7Cit9CisKIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zv
cm1hdHRpbmdTdGF0ZS5oCmluZGV4IDY5OGIzYzdmMmNiYzUxZGM1MDJkZmFhNTQ4YTZiNmQ2ZGI3
MWVlNWUuLjEwYzNhNDI3OGE5NzI0NGQ1NTg3ODUzY2VmODk5NWM3ZTZmNmZjZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3Mg
Rm9ybWF0dGluZ1N0YXRlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEZvcm1hdHRpbmdT
dGF0ZSk7CiBwdWJsaWM6CiAgICAgRm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRlPiYm
KTsKKyAgICB2aXJ0dWFsIH5Gb3JtYXR0aW5nU3RhdGUoKTsKIAogICAgIEZsb2F0aW5nU3RhdGUm
IGZsb2F0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zsb2F0aW5nU3RhdGU7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmgKaW5kZXggNTc2OGJkMmZlNDY1Y2EyMzM3YWJj
ZDVmMDI5YmNmZmMxYzI4ZjRhNC4uYTk5YjE1ZjdmODk0NzZjZDE5Y2JiZTVhNTVmMzIxNTI2OGY3
ODRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5oCkBAIC0yNyw2ICsyNyw4
IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAorI2luY2x1ZGUg
IkZvcm1hdHRpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5j
bHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCkBAIC0zOCw4
ICs0MCw2IEBAIGNsYXNzIEJveDsKIAogbmFtZXNwYWNlIExheW91dCB7CiAKLWNsYXNzIEZvcm1h
dHRpbmdDb250ZXh0OwotY2xhc3MgRm9ybWF0dGluZ1N0YXRlOwogY2xhc3MgU3R5bGVEaWZmOwog
CiAvLyBMYXlvdXRDb250ZXh0IGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgbGF5b3V0LiBJdCB0YWtl
cyBhIChmb3JtYXR0aW5nIHJvb3QpY29udGFpbmVyIHdoaWNoIGFjdHMgYXMgdGhlIHJvb3Qgb2Yg
dGhlIGxheW91dCBjb250ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmNwcAppbmRleCA5NWE4
YTBiZDNmNGFhZmM0NDE5MzA3NWEzYzg1M2NlMThhYzMzNzQ5Li5jOTUxZWVlMzZjOTAxZmEwYmM2
NDUxZTI3MjgwYTE1ZDAxNzA4MjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ1N0YXRlLmNwcApAQCAt
NDAsNiArNDAsMTAgQEAgQmxvY2tGb3JtYXR0aW5nU3RhdGU6OkJsb2NrRm9ybWF0dGluZ1N0YXRl
KFJlZjxGbG9hdGluZ1N0YXRlPiYmIGZsb2F0aW5nU3RhdGUpCiB7CiB9CiAKK0Jsb2NrRm9ybWF0
dGluZ1N0YXRlOjp+QmxvY2tGb3JtYXR0aW5nU3RhdGUoKQoreworfQorCiB9CiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nU3RhdGUuaAppbmRleCA2MjAyMzEwODg4NDYxZjM4YzcwNGU2MGE5NTlk
ODU1ZTU0ODEzMjMyLi40NGU1ZDgzYzVjMDVhNGZiMmIxN2FlYTM5ZTQyNWIwNzA3YzcwNzEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9y
bWF0dGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIEJsb2NrRm9y
bWF0dGluZ1N0YXRlIDogcHVibGljIEZvcm1hdHRpbmdTdGF0ZSB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChCbG9ja0Zvcm1hdHRpbmdTdGF0ZSk7CiBwdWJsaWM6CiAgICAgQmxvY2tGb3Jt
YXR0aW5nU3RhdGUoUmVmPEZsb2F0aW5nU3RhdGU+JiYpOworICAgIHZpcnR1YWwgfkJsb2NrRm9y
bWF0dGluZ1N0YXRlKCk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmNwcApp
bmRleCA5OTk3MGQxZDhjYTg1Y2JiNThjMTBhMWJjYzZmNDU2MjM2NTY2NmJiLi43MjFkODI5NGZh
ODU2MWQwYTAzODJkNTQ5MzVhNTAyZGVkNGMxODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdT
dGF0ZS5jcHAKQEAgLTQwLDYgKzQwLDEwIEBAIElubGluZUZvcm1hdHRpbmdTdGF0ZTo6SW5saW5l
Rm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRlPiYmIGZsb2F0aW5nU3RhdGUpCiB7CiB9
CiAKK0lubGluZUZvcm1hdHRpbmdTdGF0ZTo6fklubGluZUZvcm1hdHRpbmdTdGF0ZSgpCit7Cit9
CisKIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaAppbmRleCBjN2I1ZDdi
MzI5NmY3YjJiMzI1YWU0ODE0OTBmZmM2M2UwZWQyNWNkLi41NjIzZGQ5ODY0OWVjMTEzN2JkNDE0
ZWJlMGRkYjdkMTA5MzY1ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaApAQCAtMzks
NiArMzksNyBAQCBjbGFzcyBJbmxpbmVGb3JtYXR0aW5nU3RhdGUgOiBwdWJsaWMgRm9ybWF0dGlu
Z1N0YXRlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKElubGluZUZvcm1hdHRpbmdTdGF0
ZSk7CiBwdWJsaWM6CiAgICAgSW5saW5lRm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRl
PiYmKTsKKyAgICB2aXJ0dWFsIH5JbmxpbmVGb3JtYXR0aW5nU3RhdGUoKTsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJsb2NrQ29u
dGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCbG9ja0Nv
bnRhaW5lci5oCmluZGV4IDk4YzQxYTNkNzY5ZjUwNGNjN2I1NGU2MDFkNzdkZmFkM2QyY2JjOTUu
LmRhZGU3MDYwZWFkZDA5YjNkOWUzNjI4YWRhNmY4ODZmYjYwZmQwOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJsb2NrQ29udGFpbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0QmxvY2tDb250YWluZXIu
aApAQCAtMzksOSArMzksMTMgQEAgbmFtZXNwYWNlIExheW91dCB7CiBjbGFzcyBCbG9ja0NvbnRh
aW5lciA6IHB1YmxpYyBDb250YWluZXIgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQmxv
Y2tDb250YWluZXIpOwogcHVibGljOgotICAgIEJsb2NrQ29udGFpbmVyKFJlbmRlclN0eWxlJiYs
IEJhc2VUeXBlRmxhZ3MpOworICAgIGZyaWVuZCBjbGFzcyBUcmVlQnVpbGRlcjsKIAogICAgIGJv
b2wgZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IGZpbmFsOworCitw
cm90ZWN0ZWQ6CisgICAgQmxvY2tDb250YWluZXIoUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFn
cyA9IEJsb2NrQ29udGFpbmVyRmxhZyk7CisKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKaW5kZXggMmM4MWE5MTJhMzg1ZjM1ODFhMjc3OTI5
MDQ3YjAyOTVmMWI1OGE4Mi4uMTJlN2RkMGRjYmE1MzE3MWNhZTI3MWJmYmYzMGMxZWZlYTMxMGMz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKQEAg
LTQyLDkgKzQyLDcgQEAgY2xhc3MgQm94IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEJv
eCk7CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVCdWlsZGVyOwotICAgIHR5cGVkZWYg
dW5zaWduZWQgQmFzZVR5cGVGbGFnczsKIAotICAgIEJveChSZW5kZXJTdHlsZSYmLCBCYXNlVHlw
ZUZsYWdzKTsKICAgICB2aXJ0dWFsIH5Cb3goKTsKIAogICAgIGJvb2wgZXN0YWJsaXNoZXNGb3Jt
YXR0aW5nQ29udGV4dCgpIGNvbnN0OwpAQCAtODMsNiArODEsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgQm94KiBwcmV2aW91c0luRmxvd1NpYmxpbmcoKSBjb25zdDsKICAgICBjb25zdCBCb3gqIHBy
ZXZpb3VzSW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSBjb25zdDsKIAorICAgIHR5cGVkZWYgdW5z
aWduZWQgQmFzZVR5cGVGbGFnczsKICAgICBib29sIGlzQ29udGFpbmVyKCkgY29uc3QgeyByZXR1
cm4gbV9iYXNlVHlwZUZsYWdzICYgQ29udGFpbmVyRmxhZzsgfQogICAgIGJvb2wgaXNCbG9ja0Nv
bnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVR5cGVGbGFncyAmIEJsb2NrQ29udGFpbmVy
RmxhZzsgfQogICAgIGJvb2wgaXNJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX2Jhc2VUeXBl
RmxhZ3MgJiBJbmxpbmVCb3hGbGFnOyB9CkBAIC05Nyw2ICs5Niw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgSW5saW5lQm94RmxhZyAgICAgICAgID0gMSA8PCAyLAogICAgICAgICBJbmxpbmVDb250
YWluZXJGbGFnICAgPSAxIDw8IDMKICAgICB9OworICAgIEJveChSZW5kZXJTdHlsZSYmLCBCYXNl
VHlwZUZsYWdzKTsKIAogICAgIGJvb2wgaXNPdmVyZmxvd1Zpc2libGUoKSBjb25zdDsKIApAQCAt
MTEzLDcgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgQm94KiBtX3ByZXZpb3VzU2libGluZyB7IG51
bGxwdHIgfTsKICAgICBCb3gqIG1fbmV4dFNpYmxpbmcgeyBudWxscHRyIH07CiAKLSAgICB1bnNp
Z25lZCBtX2Jhc2VUeXBlRmxhZ3MgOiAzOworICAgIHVuc2lnbmVkIG1fYmFzZVR5cGVGbGFncyA6
IDQ7CiAgICAgdW5zaWduZWQgbV9pc0Fub255bW91cyA6IDE7CiAKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5oCmluZGV4IGRhY2Q2
YjRlNzBiYjE3MmU4MDY0MmExMzQ2ZTU2YmZkZWI3MTA1OTcuLjZiYTg5YWU3MzI3NmNlMWQ5NmVi
ZjcwYzhiNmY4YWJiMTM0ODBiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5oCkBAIC00Miw4ICs0Miw2IEBAIGNsYXNzIENvbnRh
aW5lciA6IHB1YmxpYyBCb3ggewogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBUcmVlQnVpbGRl
cjsKIAotICAgIENvbnRhaW5lcihSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKLQogICAg
IGNvbnN0IEJveCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZDsgfQog
ICAgIGNvbnN0IEJveCogZmlyc3RJbkZsb3dDaGlsZCgpIGNvbnN0OwogICAgIGNvbnN0IEJveCog
Zmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSBjb25zdDsKQEAgLTU3LDYgKzU1LDkgQEAgcHVi
bGljOgogCiAgICAgY29uc3QgVmVjdG9yPFdlYWtQdHI8Qm94Pj4mIG91dE9mRmxvd0Rlc2NlbmRh
bnRzKCkgeyByZXR1cm4gbV9vdXRPZkZsb3dEZXNjZW5kYW50czsgfQogCitwcm90ZWN0ZWQ6Cisg
ICAgQ29udGFpbmVyKFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOworCiBwcml2YXRlOgog
ICAgIHZvaWQgc2V0Rmlyc3RDaGlsZChCb3gmKTsKICAgICB2b2lkIHNldExhc3RDaGlsZChCb3gm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dElu
bGluZUNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
SW5saW5lQ29udGFpbmVyLmgKaW5kZXggYTkzYTY5MDc3ODY4N2YyYmQ1YjU5YmY4NWIyNTE3YjQ0
NTA4Yzk2NC4uYWFhMjFkNWFiYTkwNmI1YTk1ODAxN2ViYmE1MTY0MDZkYTZmYTM3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SW5saW5lQ29udGFp
bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SW5saW5l
Q29udGFpbmVyLmgKQEAgLTM5LDcgKzM5LDEwIEBAIG5hbWVzcGFjZSBMYXlvdXQgewogY2xhc3Mg
SW5saW5lQ29udGFpbmVyIDogcHVibGljIENvbnRhaW5lciB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChJbmxpbmVDb250YWluZXIpOwogcHVibGljOgotICAgIElubGluZUNvbnRhaW5lcihS
ZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKKyAgICBmcmllbmQgY2xhc3MgVHJlZUJ1aWxk
ZXI7CisKK3Byb3RlY3RlZDoKKyAgICBJbmxpbmVDb250YWluZXIoUmVuZGVyU3R5bGUmJiwgQmFz
ZVR5cGVGbGFncyA9IElubGluZUNvbnRhaW5lckZsYWcpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU3ODUyNjkwNWYzMmNjYzFkNjYxMjY4NGMwM2QyYTgyNjVkZTVlMzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVl
QnVpbGRlci5jcHAKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTGF5b3V0VHJlZUJ1aWxkZXIuaCIKKworI2lmIEVOQUJMRShMQVlP
VVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiTGF5b3V0QmxvY2tDb250YWluZXIu
aCIKKyNpbmNsdWRlICJMYXlvdXRDaGlsZEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiTGF5b3V0Q29u
dGFpbmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0SW5saW5lQm94LmgiCisjaW5jbHVkZSAiTGF5b3V0
SW5saW5lQ29udGFpbmVyLmgiCisjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKKyNpbmNsdWRlICJS
ZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgorI2luY2x1
ZGUgIlJlbmRlcklubGluZS5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK3N0ZDo6dW5pcXVlX3B0cjxDb250
YWluZXI+IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRUcmVlKGNvbnN0IFJlbmRlclZpZXcmIHJl
bmRlclZpZXcpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lcj4gaW5pdGlhbENvbnRh
aW5pbmdCbG9jayhuZXcgQmxvY2tDb250YWluZXIoUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlclZp
ZXcuc3R5bGUoKSkpKTsKKyAgICBUcmVlQnVpbGRlcjo6Y3JlYXRlU3ViVHJlZShyZW5kZXJWaWV3
LCAqaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CisgICAgcmV0dXJuIGluaXRpYWxDb250YWluaW5n
QmxvY2s7Cit9CisKK3ZvaWQgVHJlZUJ1aWxkZXI6OmNyZWF0ZVN1YlRyZWUoY29uc3QgUmVuZGVy
RWxlbWVudCYgcm9vdFJlbmRlcmVyLCBDb250YWluZXImIHJvb3RDb250YWluZXIpCit7CisgICAg
Ly8gU2tpcCBSZW5kZXJUZXh0IChhbmQgc29tZSBvdGhlcnMpIGZvciBub3cuCisgICAgZm9yIChh
dXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlckVsZW1lbnQ+KHJvb3RSZW5kZXJlcikp
IHsKKyAgICAgICAgQm94KiBib3ggPSBudWxscHRyOworICAgICAgICBpZiAoaXM8UmVuZGVyQmxv
Y2s+KGNoaWxkKSkgeworICAgICAgICAgICAgYm94ID0gbmV3IEJsb2NrQ29udGFpbmVyKFJlbmRl
clN0eWxlOjpjbG9uZShjaGlsZC5zdHlsZSgpKSk7CisgICAgICAgICAgICBjcmVhdGVTdWJUcmVl
KGNoaWxkLCBkb3duY2FzdDxDb250YWluZXI+KCpib3gpKTsKKyAgICAgICAgfSBlbHNlIGlmIChp
czxSZW5kZXJJbmxpbmU+KGNoaWxkKSkgeworICAgICAgICAgICAgYm94ID0gbmV3IElubGluZUNv
bnRhaW5lcihSZW5kZXJTdHlsZTo6Y2xvbmUoY2hpbGQuc3R5bGUoKSkpOworICAgICAgICAgICAg
Y3JlYXRlU3ViVHJlZShjaGlsZCwgZG93bmNhc3Q8Q29udGFpbmVyPigqYm94KSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAgICAgaWYg
KCFyb290Q29udGFpbmVyLmhhc0NoaWxkKCkpIHsKKyAgICAgICAgICAgIHJvb3RDb250YWluZXIu
c2V0Rmlyc3RDaGlsZCgqYm94KTsKKyAgICAgICAgICAgIHJvb3RDb250YWluZXIuc2V0TGFzdENo
aWxkKCpib3gpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byogbGFzdENoaWxk
ID0gY29uc3RfY2FzdDxCb3gqPihyb290Q29udGFpbmVyLmxhc3RDaGlsZCgpKTsKKyAgICAgICAg
ICAgIGJveC0+c2V0UHJldmlvdXNTaWJsaW5nKCpsYXN0Q2hpbGQpOworICAgICAgICAgICAgbGFz
dENoaWxkLT5zZXROZXh0U2libGluZygqYm94KTsKKyAgICAgICAgICAgIHJvb3RDb250YWluZXIu
c2V0TGFzdENoaWxkKCpib3gpOworICAgICAgICB9CisgICAgICAgIGJveC0+c2V0UGFyZW50KHJv
b3RDb250YWluZXIpOworICAgIH0KK30KKworI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKK3N0
YXRpYyB2b2lkIG91dHB1dExheW91dEJveChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEJveCYg
bGF5b3V0Qm94LCB1bnNpZ25lZCBkZXB0aCkKK3sKKyAgICB1bnNpZ25lZCBwcmludGVkQ2hhcmFj
dGVycyA9IDA7CisgICAgd2hpbGUgKCsrcHJpbnRlZENoYXJhY3RlcnMgPD0gZGVwdGggKiAyKQor
ICAgICAgICBzdHJlYW0gPDwgIiAiOworCisgICAgaWYgKGlzPElubGluZUNvbnRhaW5lcj4obGF5
b3V0Qm94KSkKKyAgICAgICAgc3RyZWFtIDw8ICJpbmxpbmUgY29udGFpbmVyIjsKKyAgICBlbHNl
IGlmIChpczxJbmxpbmVCb3g+KGxheW91dEJveCkpCisgICAgICAgIHN0cmVhbSA8PCAiaW5saW5l
IGJveCI7CisgICAgZWxzZSBpZiAoaXM8QmxvY2tDb250YWluZXI+KGxheW91dEJveCkpIHsKKyAg
ICAgICAgaWYgKCFsYXlvdXRCb3gucGFyZW50KCkpCisgICAgICAgICAgICBzdHJlYW0gPDwgImlu
aXRpYWwgIjsKKyAgICAgICAgc3RyZWFtIDw8ICJibG9jayBjb250YWluZXIiOworICAgIH0gZWxz
ZQorICAgICAgICBzdHJlYW0gPDwgImJveCI7CisgICAgc3RyZWFtIDw8ICIgYXQgWzAgMF0gc2l6
ZSBbMCAwXSI7CisgICAgc3RyZWFtIDw8ICIgb2JqZWN0IFsiIDw8ICZsYXlvdXRCb3ggPDwgIl0i
OworCisgICAgc3RyZWFtLm5leHRMaW5lKCk7Cit9CisKK3N0YXRpYyB2b2lkIG91dHB1dExheW91
dFRyZWUoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBDb250YWluZXImIHJvb3RDb250YWluZXIs
IHVuc2lnbmVkIGRlcHRoKQoreworICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlw
ZTxCb3g+KHJvb3RDb250YWluZXIpKSB7CisgICAgICAgIG91dHB1dExheW91dEJveChzdHJlYW0s
IGNoaWxkLCBkZXB0aCk7CisgICAgICAgIGlmIChpczxDb250YWluZXI+KGNoaWxkKSkKKyAgICAg
ICAgICAgIG91dHB1dExheW91dFRyZWUoc3RyZWFtLCBkb3duY2FzdDxDb250YWluZXI+KGNoaWxk
KSwgZGVwdGggKyAxKTsKKyAgICB9Cit9CisKK3ZvaWQgVHJlZUJ1aWxkZXI6OnNob3dMYXlvdXRU
cmVlKGNvbnN0IENvbnRhaW5lciYgbGF5b3V0Qm94KQoreworICAgIFRleHRTdHJlYW0gc3RyZWFt
KFRleHRTdHJlYW06OkxpbmVNb2RlOjpNdWx0aXBsZUxpbmUsIFRleHRTdHJlYW06OkZvcm1hdHRp
bmc6OlNWR1N0eWxlUmVjdCk7CisgICAgb3V0cHV0TGF5b3V0Qm94KHN0cmVhbSwgbGF5b3V0Qm94
LCAwKTsKKyAgICBvdXRwdXRMYXlvdXRUcmVlKHN0cmVhbSwgbGF5b3V0Qm94LCAxKTsKKyAgICBX
VEZMb2dBbHdheXMoIiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51dGY4KCkuZGF0YSgpKTsKK30KKwor
dm9pZCBwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKCkKK3sKKyAgICBmb3IgKGNvbnN0
IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7CisgICAgICAgIGlm
ICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBpZiAoZG9jdW1lbnQtPmZyYW1lKCkgJiYgZG9jdW1lbnQtPmZyYW1lKCktPmlzTWFpbkZyYW1l
KCkpCisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS1t
YWluIGZyYW1lLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOworICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgIiVzXG4iLCBkb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIExheW91dDo6VHJlZUJ1aWxkZXI6OnNob3dMYXlvdXRUcmVlKCpUcmVlQnVpbGRl
cjo6Y3JlYXRlTGF5b3V0VHJlZSgqZG9jdW1lbnQtPnJlbmRlclZpZXcoKSkpOworICAgIH0KK30K
KyNlbmRpZgorCit9Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNiODdiOWIyYzdi
YWUyMjNjMjZlYWQwYzgyNjRmODhhZjlhNjRjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmgKQEAgLTAsMCArMSw1
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JN
QVRUSU5HX0NPTlRFWFQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyRWxl
bWVudDsKK2NsYXNzIFJlbmRlclZpZXc7CisKK25hbWVzcGFjZSBMYXlvdXQgeworCitjbGFzcyBD
b250YWluZXI7CisKK2NsYXNzIFRyZWVCdWlsZGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPENvbnRhaW5lcj4gY3JlYXRlTGF5b3V0VHJlZShjb25zdCBSZW5kZXJWaWV3
Jik7CisgICAgc3RhdGljIHZvaWQgc2hvd0xheW91dFRyZWUoY29uc3QgQ29udGFpbmVyJik7CisK
K3ByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgY3JlYXRlU3ViVHJlZShjb25zdCBSZW5kZXJFbGVt
ZW50JiByb290UmVuZGVyZXIsIENvbnRhaW5lciYgcm9vdENvbnRhaW5lcik7Cit9OworCisjaWYg
RU5BQkxFKFRSRUVfREVCVUdHSU5HKQordm9pZCBwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1l
bnRzKCk7CisjZW5kaWYKKworfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFj
Lm1tCmluZGV4IGFhMDMwYzU0NjE3ZmYwZWIzYTgxMzI0ZGM5NDUxZDI5Y2YyZTU5MjIuLmVkZjE4
MTA3ZTIwMDRlZWQ0OGMzYjEyOTNhMzFjYmUxNzRlMjI1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
UGFnZU1hYy5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiRnJhbWUuaCIKICNpbXBvcnQg
IkZyYW1lTG9hZGVyLmgiCiAjaW1wb3J0ICJGcmFtZVRyZWUuaCIKKyNpbXBvcnQgIkxheW91dFRy
ZWVCdWlsZGVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJSZW5kZXJPYmplY3Qu
aCIKICNpbXBvcnQgPHBhbC9Mb2dnaW5nLmg+CkBAIC01Niw2ICs1Nyw5IEBAIHZvaWQgUGFnZTo6
cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewog
ICAgICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hv
d1JlbmRlclRyZWUiLCBwcmludFJlbmRlclRyZWVGb3JMaXZlRG9jdW1lbnRzKTsKICAgICAgICAg
UEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dMYXllclRy
ZWUiLCBwcmludExheWVyVHJlZUZvckxpdmVEb2N1bWVudHMpOworI2lmIEVOQUJMRShMQVlPVVRf
Rk9STUFUVElOR19DT05URVhUKQorICAgICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2so
ImNvbS5hcHBsZS5XZWJLaXQuc2hvd0xheW91dFRyZWUiLCBMYXlvdXQ6OnByaW50TGF5b3V0VHJl
ZUZvckxpdmVEb2N1bWVudHMpOworI2VuZGlmCiAgICAgfSk7CiAjZW5kaWYKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>