<?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>180964</bug_id>
          
          <creation_ts>2017-12-18 20:06:30 -0800</creation_ts>
          <short_desc>[RenderTreeBuilder] Move finding-the-parent/creating-wrapper logic from RenderTableRow::addChild to RenderTreeBuilder</short_desc>
          <delta_ts>2017-12-19 10:56:52 -0800</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>1383036</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-12-18 20:06:30 -0800</bug_when>
    <thetext>Move mutation under RenderTreeBuilder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383037</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-18 20:08:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/36123315&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383042</commentid>
    <comment_count>2</comment_count>
      <attachid>329731</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-12-18 20:13:35 -0800</bug_when>
    <thetext>Created attachment 329731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383082</commentid>
    <comment_count>3</comment_count>
      <attachid>329731</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-12-19 01:06:11 -0800</bug_when>
    <thetext>Comment on attachment 329731
Patch

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

&gt; Source/WebCore/rendering/RenderTableRow.cpp:-117
&gt;  void RenderTableRow::addChild(RenderTreeBuilder&amp; builder, RenderPtr&lt;RenderObject&gt; child, RenderObject* beforeChild)
&gt;  {
&gt; -    if (!is&lt;RenderTableCell&gt;(*child)) {
&gt; -        RenderObject* last = beforeChild;

Why not move the entire addChild?

&gt; Source/WebCore/rendering/updating/RenderTreeBuilder.cpp:34
&gt; +#include &quot;RenderTableRowBuilder.h&quot;

I have been using file name pattern like RenderTreeBuilderTableRow.h/.cpp for inner classes like RenderTreeBuilder::TableRow. It makes easy to see what is really part of the RenderTreeBuilder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383095</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-12-19 01:54:34 -0800</bug_when>
    <thetext>Also I think we could just have RenderTreeBuilder::Table for all table related code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383139</commentid>
    <comment_count>5</comment_count>
      <attachid>329763</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-12-19 08:35:33 -0800</bug_when>
    <thetext>Created attachment 329763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383140</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-12-19 08:39:43 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #3)
&gt; &gt; -    if (!is&lt;RenderTableCell&gt;(*child)) {
&gt; &gt; -        RenderObject* last = beforeChild;
&gt; 
&gt; Why not move the entire addChild?
splitAnonymousBoxesAroundChild() mutation is not table row specific and I am planning to cover that in a dedicated patch for all the different renderers.
The rest of the addChild() is not about tree mutation and we need to figure out where to move them (styleChanged, childInserted, etc)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383142</commentid>
    <comment_count>7</comment_count>
      <attachid>329763</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-12-19 08:44:55 -0800</bug_when>
    <thetext>Comment on attachment 329763
Patch

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

&gt; Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp:35
&gt; +RenderElement&amp; RenderTreeBuilder::Table::findOrCreateParentForChild(RenderTreeBuilder&amp; builder, RenderTableRow&amp; parent,

These could be member instances of RenderTreeBuilder similar to RenderTreeUpdater::GeneratedContent. That avoid having to pass the builder everywhere, just call m_builder.insertChild()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383172</commentid>
    <comment_count>8</comment_count>
      <attachid>329771</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-12-19 10:23:29 -0800</bug_when>
    <thetext>Created attachment 329771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383187</commentid>
    <comment_count>9</comment_count>
      <attachid>329771</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-19 10:56:51 -0800</bug_when>
    <thetext>Comment on attachment 329771
Patch

Clearing flags on attachment: 329771

Committed r226127: &lt;https://trac.webkit.org/changeset/226127&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383188</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-19 10:56:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329731</attachid>
            <date>2017-12-18 20:13:35 -0800</date>
            <delta_ts>2017-12-19 08:35:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180964-20171218201335.patch</filename>
            <type>text/plain</type>
            <size>21500</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI4YWE3YWE0MTI3N2Vj
OWM0MDMxZDdiMzk3YzhhOTRhOGYyNjQ4Mi4uZTVlZjE3NWUxOTQ4NjEwOWVjZThhZWM2YjlkYzM4
OTZkOGMxYjY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE3LTEyLTE4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1JlbmRlclRyZWVCdWlsZGVy
XSBSZW5kZXJUYWJsZVJvdzo6YWRkQ2hpbGQgc2hvdWxkIG5vdCBtdXRhdGUgdGhlIHRyZWUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDk2NAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzYxMjMzMTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgcmVtb3Zp
bmcgdHJlZSBtdXRhdGlvbiBmcm9tIHJlbmRlcmVyaW5nIGNvZGUuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGFibGVSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OmFk
ZENoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVGFibGVSb3dCdWls
ZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6VGFi
bGVSb3c6OmZpbmRPckNyZWF0ZVBhcmVudEZvclRhYmxlUm93Q2hpbGQpOgorICAgICAgICAqIHJl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUYWJsZVJvd0J1aWxkZXIuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmguCisgICAg
ICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjppbnNlcnRDaGlsZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmg6CisKIDIwMTctMTItMTcgIEpvaG4g
V2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcmFnZSBBY2Nlc3Mg
QVBJOiBNYWtlIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MoKSByZXRyaWV2ZSBjdXJyZW50IHN0
YXR1cyBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZGEyYjM4MmYw
YTY1YTY1OWYxZmFhZThhOTVhYzA5ZmZkMGE5Mzk0MS4uNzMwZTY2ODEwY2U2Y2I1MGU1ZTdkMGU0
NjU4M2JmMWIxMmRhNjZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5NzksNiArMTk3OSw3IEBAIHJl
bmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRy
aWNzQnVpbGRlci5jcHAKIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcAogCityZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVGFibGVSb3dCdWlsZGVyLmNwcAogcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyLmNwcAogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVQb3Np
dGlvbi5jcHAKIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3
YTJmZTM4NDRhZTIyN2VjM2Q2NDY5MmQ5MTYzNjk1Yzk2NzAzNGMzLi5jZDdkMmQ1MTE4YTNiYzgz
NTI4NjFmYTU2OTkwYzQ5Y2UxZWVhMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODksNiArMzg5LDcgQEAKIAkJMTBGQjA4
NEIxNEUxNUM3RTAwQTNEQjk4IC8qIFB1YmxpY1VSTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDEwRkIwODRBMTRFMTVDN0UwMEEzREI5OCAv
KiBQdWJsaWNVUkxNYW5hZ2VyLmggKi87IH07CiAJCTExMkIzNEQ1MUU2MEI5ODMwMEJCMzEwQSAv
KiBTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTEyQjM0RDQxRTYwQjk4MzAwQkIzMTBBIC8qIFNpbXBsZUxp
bmVMYXlvdXRQYWdpbmF0aW9uLmggKi87IH07CiAJCTExM0QwQjUyMUY5RkREMkIwMEY2MTFCQiAv
KiBMYXlvdXRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxMTNEMEI1MDFGOUZERDJCMDBGNjExQkIgLyogTGF5b3V0Q29udGV4dC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTExOTM0MDc5MUZF
OEI5MjMwMDkzNUYxRSAvKiBSZW5kZXJUYWJsZVJvd0J1aWxkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExOTM0MDc3MUZFOEI5MjMwMDkzNUYxRSAv
KiBSZW5kZXJUYWJsZVJvd0J1aWxkZXIuaCAqLzsgfTsKIAkJMTFFMDY3RUUxRTYyNDZFNTAwMTYy
RDE2IC8qIFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTFFMDY3RUQxRTYyNDZFNTAwMTYyRDE2IC8qIFNpbXBs
ZUxpbmVMYXlvdXRDb3ZlcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTE0MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFi
bGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MDNCOTk3
MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDNCOTk1MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5k
b3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NTU2MCw2ICs1NTYxLDggQEAKIAkJMTEyQjM0RDQxRTYwQjk4MzAwQkIzMTBBIC8qIFNpbXBsZUxp
bmVMYXlvdXRQYWdpbmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNp
bXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTExM0QwQjRGMUY5RkREMkIwMEY2MTFCQiAvKiBMYXlvdXRDb250ZXh0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IExheW91dENvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxMTNEMEI1MDFGOUZERDJCMDBGNjExQkIgLyogTGF5b3V0Q29udGV4dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBMYXlvdXRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExOTM0
MDc2MUZFOEI5MjMwMDkzNUYxRSAvKiBSZW5kZXJUYWJsZVJvd0J1aWxkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVuZGVyVGFibGVSb3dCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTE5MzQwNzcxRkU4QjkyMzAwOTM1RjFFIC8qIFJlbmRlclRhYmxlUm93QnVp
bGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJUYWJsZVJvd0J1aWxkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTFFMDY3RUIxRTYyNDYxMzAwMTYyRDE2IC8qIFNpbXBsZUxp
bmVMYXlvdXRDb3ZlcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxMUUwNjdFRDFFNjI0NkU1MDAxNjJEMTYgLyogU2ltcGxlTGluZUxheW91dENvdmVyYWdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRDb3Zl
cmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwRDdBNzE3MTM2RUE3MDA3
N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNDUwNyw2ICsyNDUxMCw4IEBACiAJCUU0N0MzOTFFMUZFNkUwOEMwMEJCQkM2
QiAvKiB1cGRhdGluZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJMTE5MzQwNzYxRkU4QjkyMzAwOTM1RjFFIC8qIFJlbmRlclRhYmxlUm93QnVpbGRlci5j
cHAgKi8sCisJCQkJMTE5MzQwNzcxRkU4QjkyMzAwOTM1RjFFIC8qIFJlbmRlclRhYmxlUm93QnVp
bGRlci5oICovLAogCQkJCUU0N0MzOTIwMUZFNkUwRDkwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVp
bGRlci5jcHAgKi8sCiAJCQkJRTQ3QzM5MkExRkU2RTBERTAwQkJCQzZCIC8qIFJlbmRlclRyZWVC
dWlsZGVyLmggKi8sCiAJCQkJRTQ3QzM5MjkxRkU2RTBERTAwQkJCQzZCIC8qIFJlbmRlclRyZWVQ
b3NpdGlvbi5jcHAgKi8sCkBAIC0yNjM3MSw3ICsyNjM3Niw2IEBACiAJCQkJMDc5RDA4NkIxNjJG
MjFGOTAwREI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwN0I3MTE2RDFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDdCNzExNkYxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDdDMzkyRDFGRTZFMEYzMDBCQkJDNkIg
LyogUmVuZGVyVHJlZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzczNDE1MTk3Nzg5
NkQwMDQ2QkZDNSAvKiBDQVJpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBCNjlF
MDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RjRCNzE2MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uaCBpbiBIZWFkZXJzICovLApAQCAtMjY0NzYs
NyArMjY0ODAsNiBAQAogCQkJCTk3NDZBRjIxMTRGNERERTYwMDNFN0E3MSAvKiBDb29yZGluYXRl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0Y4MDIwMzUxRTlFNDdCRjAwREVDNjFEIC8qIENvcmVB
dWRpb0NhcHR1cmVEZXZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGODAyMDM3MUU5RTQ3QzUw
MERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJRTQ3QzM5MkUxRkU2RTBGNzAwQkJCQzZCIC8qIFJlbmRlclRyZWVQb3NpdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDdBRkY0MjIxRUZCMTQ0OTAwQjU0NUIzIC8qIENvcmVBdWRpb0Nh
cHR1cmVTb3VyY2VJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEN0QzMzQ4MUM3QTE2QkYwMDA0
MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYyRjEyOUUx
OEMxNTc2RjAwNUM1NEFGIC8qIENvdW50ZWRVc2VyQWN0aXZpdHkuaCBpbiBIZWFkZXJzICovLApA
QCAtMjY4MzgsNyArMjY4NDEsNiBAQAogCQkJCUE3Q0ZCM0QyMEI3RUQxMEEwMDcwQzMyRCAvKiBE
cmFnSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjVFNEQ5MUU1Njc3QTkwMDRBMUYwMSAv
KiBEcmFnSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFGNjVGRjYxMzc4OEZBQTAwRkY2RjJE
IC8qIERyYWdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQ3QzM5MzIxRkU2RTEwNTAwQkJC
QzZCIC8qIFJlbmRlclRyZWVVcGRhdGVyTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
QkE2NkYxMTc0MkJEODYwMEMyMDI1MSAvKiBEeW5hbWljTGlua2VySW50ZXJwb3NpbmcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZENkVEMkM4MTM2QjhFNjYwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXBy
ZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzU3MTM3QjY1M0IwMDAwOERDRSAvKiBE
eW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjcyMzUsNyArMjcy
MzcsNiBAQAogCQkJCTk3N0IzODc4MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MVG9rZW5pemVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwNzA3NTY4QzE0MjI2MkQ2MDA0MTQxNjEgLyogSFRNTFRyYWNr
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM3MjYxMjI4NzIxNzAwQjgxRkY4IC8q
IEhUTUxUcmVlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQ3QzM5MzAxRkU2RTBGRDAw
QkJCQzZCIC8qIFJlbmRlclRyZWVVcGRhdGVyRmlyc3RMZXR0ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4RUE3OUYyMEExOTE2REYwMEE4RUY1RiAvKiBIVE1MVUxpc3RFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBRDQ5OTE0MzE4RjA4MTUxMDBCRjAwOTIgLyogSFRNTFVua25vd25FbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNBQjBDRDYzMzEwMDBGQURBNzUgLyogSFRN
TFZpZGVvRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODUyMSw3ICsyODUyMiw2IEBACiAJ
CQkJMUE1NjlEMEIwRDdFMkI4MjAwN0MzOTgzIC8qIE5QX2pzb2JqZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTkyN0ZEMjE0MTZBMTVCMDAzQTgzQzggLyogbnBhcGkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBMjE5QjNCMERDQTg3QUIwMDQwRTNBMCAvKiBucGZ1bmN0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJRTQ3QzM5MkYxRkU2RTBGOTAwQkJCQzZCIC8qIFJlbmRlclRyZWVVcGRhdGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkyN0ZEMzE0MTZBMTVCMDAzQTgzQzggLyogbnBydW50
aW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQwRjBEN0UyQjgyMDA3QzM5ODMgLyogbnBy
dW50aW1lX2ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDEwMEQ3RTJCODIwMDdDMzk4
MyAvKiBucHJ1bnRpbWVfaW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjg2NzUsNyArMjg2
NzUsNiBAQAogCQkJCTA3MEUwOTE5MTg3NUVFRkMwMDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8qIFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFCRjcwMTAw
RkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlFNDdDMzkzMzFGRTZFMTA4MDBCQkJDNkIgLyogUmVuZGVyVHJlZVVwZGF0ZXJN
dWx0aUNvbHVtbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjkwOUFDNEQ0MzAwQTZBQUI0
IC8qIFBsYXRmb3JtTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5ODkwNTgxNEU5
QzI5OTAwRThEMThCIC8qIFBsYXRmb3JtUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFQzAxRDcwQzI3NEVCNDAwOUY0RUM5IC8qIFBsYXRmb3JtU2NyZWVuLmggaW4gSGVhZGVycyAq
LywKQEAgLTI4OTExLDYgKzI4OTEwLDcgQEAKIAkJCQlBOERGNEFFOTA5ODBDNDJDMDA1Mjk4MUIg
LyogUmVuZGVyVGFibGVDZWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOERGNEFGMTA5ODBDNDJD
MDA1Mjk4MUIgLyogUmVuZGVyVGFibGVDb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4REY0QUVF
MDk4MEM0MkMwMDUyOTgxQiAvKiBSZW5kZXJUYWJsZVJvdy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MTE5MzQwNzkxRkU4QjkyMzAwOTM1RjFFIC8qIFJlbmRlclRhYmxlUm93QnVpbGRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThERjRBRUYwOTgwQzQyQzAwNTI5ODFCIC8qIFJlbmRlclRhYmxlU2Vj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4OEMwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlclRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFCNjdEMUE5MDk3RjNBRTMwMEY5MzkyRSAv
KiBSZW5kZXJUZXh0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODkyMyw2ICsyODkyMywx
MyBAQAogCQkJCUZFRDEzRDUyMENFQTk0OTcwMEQ4OTQ2NiAvKiBSZW5kZXJUaGVtZUlPUy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4ODcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1l
TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTk4QzA4MjQ1RTU5MDAxRTlBQkMgLyogUmVu
ZGVyVHJlZUFzVGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ3QzM5MkQxRkU2RTBGMzAwQkJC
QzZCIC8qIFJlbmRlclRyZWVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDdDMzkyRTFG
RTZFMEY3MDBCQkJDNkIgLyogUmVuZGVyVHJlZVBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFNDdDMzkyRjFGRTZFMEY5MDBCQkJDNkIgLyogUmVuZGVyVHJlZVVwZGF0ZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUU0N0MzOTMwMUZFNkUwRkQwMEJCQkM2QiAvKiBSZW5kZXJUcmVlVXBkYXRl
ckZpcnN0TGV0dGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDdDMzkzMTFGRTZFMTAyMDBCQkJD
NkIgLyogUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQlFNDdDMzkzMjFGRTZFMTA1MDBCQkJDNkIgLyogUmVuZGVyVHJlZVVwZGF0ZXJMaXN0SXRl
bS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ3QzM5MzMxRkU2RTEwODAwQkJCQzZCIC8qIFJlbmRl
clRyZWVVcGRhdGVyTXVsdGlDb2x1bW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxNDUyMENE
NjhBMzUwMEZBREE3NSAvKiBSZW5kZXJWaWRlby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4
NjgwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJF
MjA1MDdFMThBNDU4QzIwMDgwNjQ3RSAvKiBSZW5kZXJWVFRDdWUuaCBpbiBIZWFkZXJzICovLApA
QCAtMjkyMDUsNyArMjkyMTIsNiBAQAogCQkJCTk3QkM2QTNDMTUwNUYwODEwMDFCNzRBQyAvKiBT
UUxFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMjQ2NEEwQ0M5OEREQjAwQzA1MjQwIC8q
IFNRTGl0ZURhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTQ3NEUxRjEyNDk0REM5MDAy
MzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDdD
MzkzMTFGRTZFMTAyMDBCQkJDNkIgLyogUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTQ3NEUxRTEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRl
RGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCNUE2ODQyMjBGRkFC
RTk4MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEy
QkRCNEIxQzQ1NkZGQTAwNjQ5NERGIC8qIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVS
b3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAppbmRl
eCAwNWE0OTNlMDk0YjZlOWJmMjI1NTZkNmMyZTg2MWIzNWZkZjM0Njc1Li42Y2IyNTI1NTkzMjEz
ZTkzZmYxMGQyOTlkMzM1NDg2OTJjNDJkYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVJvdy5jcHAKQEAgLTExMyw1OCArMTEzLDEyIEBAIGNvbnN0IEJvcmRlclZh
bHVlJiBSZW5kZXJUYWJsZVJvdzo6Ym9yZGVyQWRqb2luaW5nRW5kQ2VsbChjb25zdCBSZW5kZXJU
YWJsZUNlbGwmCiAKIHZvaWQgUmVuZGVyVGFibGVSb3c6OmFkZENoaWxkKFJlbmRlclRyZWVCdWls
ZGVyJiBidWlsZGVyLCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjaGlsZCwgUmVuZGVyT2JqZWN0
KiBiZWZvcmVDaGlsZCkKIHsKLSAgICBpZiAoIWlzPFJlbmRlclRhYmxlQ2VsbD4oKmNoaWxkKSkg
ewotICAgICAgICBSZW5kZXJPYmplY3QqIGxhc3QgPSBiZWZvcmVDaGlsZDsKLSAgICAgICAgaWYg
KCFsYXN0KQotICAgICAgICAgICAgbGFzdCA9IGxhc3RDZWxsKCk7Ci0gICAgICAgIGlmIChsYXN0
ICYmIGxhc3QtPmlzQW5vbnltb3VzKCkgJiYgaXM8UmVuZGVyVGFibGVDZWxsPigqbGFzdCkgJiYg
IWxhc3QtPmlzQmVmb3JlT3JBZnRlckNvbnRlbnQoKSkgewotICAgICAgICAgICAgUmVuZGVyVGFi
bGVDZWxsJiBjZWxsID0gZG93bmNhc3Q8UmVuZGVyVGFibGVDZWxsPigqbGFzdCk7Ci0gICAgICAg
ICAgICBpZiAoYmVmb3JlQ2hpbGQgPT0gJmNlbGwpCi0gICAgICAgICAgICAgICAgYmVmb3JlQ2hp
bGQgPSBjZWxsLmZpcnN0Q2hpbGQoKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuaW5zZXJ0Q2hpbGQo
Y2VsbCwgV1RGTW92ZShjaGlsZCksIGJlZm9yZUNoaWxkKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChiZWZvcmVDaGlsZCAmJiAhYmVmb3JlQ2hpbGQtPmlz
QW5vbnltb3VzKCkgJiYgYmVmb3JlQ2hpbGQtPnBhcmVudCgpID09IHRoaXMpIHsKLSAgICAgICAg
ICAgIFJlbmRlck9iamVjdCogY2VsbCA9IGJlZm9yZUNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsK
LSAgICAgICAgICAgIGlmIChpczxSZW5kZXJUYWJsZUNlbGw+KGNlbGwpICYmIGNlbGwtPmlzQW5v
bnltb3VzKCkpIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmluc2VydENoaWxkKGRvd25jYXN0
PFJlbmRlclRhYmxlQ2VsbD4oKmNlbGwpLCBXVEZNb3ZlKGNoaWxkKSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVHJ5IHRv
IGZpbmQgYW4gYW5vbnltb3VzIGNvbnRhaW5lciBmb3IgdGhlIGNoaWxkLgotICAgICAgICBpZiAo
bGFzdCAmJiBsYXN0LT5wYXJlbnQoKSAmJiBsYXN0LT5wYXJlbnQoKS0+aXNBbm9ueW1vdXMoKSAm
JiAhbGFzdC0+cGFyZW50KCktPmlzQmVmb3JlT3JBZnRlckNvbnRlbnQoKSkgewotICAgICAgICAg
ICAgLy8gSWYgYmVmb3JlQ2hpbGQgaXMgaW5zaWRlIGFuIGFub255bW91cyBjZWxsLCBpbnNlcnQg
aW50byB0aGUgY2VsbC4KLSAgICAgICAgICAgIGlmICghaXM8UmVuZGVyVGFibGVDZWxsPigqbGFz
dCkpIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmluc2VydENoaWxkKCpsYXN0LT5wYXJlbnQo
KSwgV1RGTW92ZShjaGlsZCksIGJlZm9yZUNoaWxkKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBJZiBiZWZvcmVDaGlsZCBpcyBpbnNpZGUg
YW4gYW5vbnltb3VzIHJvdywgaW5zZXJ0IGludG8gdGhlIHJvdy4KLSAgICAgICAgICAgIGF1dG8m
IHBhcmVudCA9ICpsYXN0LT5wYXJlbnQoKTsKLSAgICAgICAgICAgIGlmIChpczxSZW5kZXJUYWJs
ZVJvdz4ocGFyZW50KSkgewotICAgICAgICAgICAgICAgIGF1dG8gbmV3Q2VsbCA9IFJlbmRlclRh
YmxlQ2VsbDo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKCp0aGlzKTsKLSAgICAg
ICAgICAgICAgICBhdXRvJiBjZWxsID0gKm5ld0NlbGw7Ci0gICAgICAgICAgICAgICAgYnVpbGRl
ci5pbnNlcnRDaGlsZChwYXJlbnQsIFdURk1vdmUobmV3Q2VsbCksIGJlZm9yZUNoaWxkKTsKLSAg
ICAgICAgICAgICAgICBidWlsZGVyLmluc2VydENoaWxkKGNlbGwsIFdURk1vdmUoY2hpbGQpKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgYXV0byBuZXdDZWxsID0gUmVuZGVyVGFibGVDZWxsOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFy
ZW50UmVuZGVyZXIoKnRoaXMpOwotICAgICAgICBhdXRvJiBjZWxsID0gKm5ld0NlbGw7Ci0gICAg
ICAgIGJ1aWxkZXIuaW5zZXJ0Q2hpbGQoKnRoaXMsIFdURk1vdmUobmV3Q2VsbCksIGJlZm9yZUNo
aWxkKTsKLSAgICAgICAgYnVpbGRlci5pbnNlcnRDaGlsZChjZWxsLCBXVEZNb3ZlKGNoaWxkKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9IAotCiAgICAgaWYgKGJlZm9yZUNoaWxkICYmIGJlZm9y
ZUNoaWxkLT5wYXJlbnQoKSAhPSB0aGlzKQogICAgICAgICBiZWZvcmVDaGlsZCA9IHNwbGl0QW5v
bnltb3VzQm94ZXNBcm91bmRDaGlsZChiZWZvcmVDaGlsZCk7ICAgIAogCi0gICAgUmVuZGVyVGFi
bGVDZWxsJiBjZWxsID0gZG93bmNhc3Q8UmVuZGVyVGFibGVDZWxsPigqY2hpbGQpOwotCiAgICAg
Ly8gR2VuZXJhdGVkIGNvbnRlbnQgY2FuIHJlc3VsdCBpbiB1cyBoYXZpbmcgYSBudWxsIHNlY3Rp
b24gc28gbWFrZSBzdXJlIHRvIG51bGwgY2hlY2sgb3VyIHBhcmVudC4KLSAgICBpZiAoUmVuZGVy
VGFibGVTZWN0aW9uKiBzZWN0aW9uID0gdGhpcy0+c2VjdGlvbigpKQotICAgICAgICBzZWN0aW9u
LT5hZGRDZWxsKCZjZWxsLCB0aGlzKTsKKyAgICBpZiAoYXV0byogc2VjdGlvbiA9IHRoaXMtPnNl
Y3Rpb24oKSkKKyAgICAgICAgc2VjdGlvbi0+YWRkQ2VsbCgmZG93bmNhc3Q8UmVuZGVyVGFibGVD
ZWxsPigqY2hpbGQpLCB0aGlzKTsKIAogICAgIEFTU0VSVCghYmVmb3JlQ2hpbGQgfHwgaXM8UmVu
ZGVyVGFibGVDZWxsPigqYmVmb3JlQ2hpbGQpKTsKICAgICBSZW5kZXJCb3g6OmFkZENoaWxkKGJ1
aWxkZXIsIFdURk1vdmUoY2hpbGQpLCBiZWZvcmVDaGlsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVGFibGVSb3dCdWlsZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUYWJsZVJvd0J1aWxkZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE0NWVhZWEwYTliMTNiODAyZGFkYjYyN2RiNjg0YzIyNzM1M2YwMzQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VGFibGVSb3dCdWlsZGVyLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRlclRhYmxlUm93QnVpbGRlci5oIgorCisjaW5j
bHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCisjaW5jbHVkZSAiUmVuZGVyVGFibGVSb3cuaCIKKyNp
bmNsdWRlICJSZW5kZXJUcmVlQnVpbGRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Jl
bmRlckVsZW1lbnQmIFJlbmRlclRyZWVCdWlsZGVyOjpUYWJsZVJvdzo6ZmluZE9yQ3JlYXRlUGFy
ZW50Rm9yQ2hpbGQoUmVuZGVyVHJlZUJ1aWxkZXImIGJ1aWxkZXIsIFJlbmRlclRhYmxlUm93JiBw
YXJlbnQsCisgICAgY29uc3QgUmVuZGVyT2JqZWN0JiBjaGlsZCwgUmVuZGVyT2JqZWN0KiYgYmVm
b3JlQ2hpbGQpCit7CisgICAgaWYgKGlzPFJlbmRlclRhYmxlQ2VsbD4oY2hpbGQpKQorICAgICAg
ICByZXR1cm4gcGFyZW50OworCisgICAgaWYgKGJlZm9yZUNoaWxkICYmICFiZWZvcmVDaGlsZC0+
aXNBbm9ueW1vdXMoKSAmJiBiZWZvcmVDaGlsZC0+cGFyZW50KCkgPT0gJnBhcmVudCkgeworICAg
ICAgICBhdXRvKiBwcmV2aW91c1NpYmxpbmcgPSBiZWZvcmVDaGlsZC0+cHJldmlvdXNTaWJsaW5n
KCk7CisgICAgICAgIGlmIChpczxSZW5kZXJUYWJsZUNlbGw+KHByZXZpb3VzU2libGluZykgJiYg
cHJldmlvdXNTaWJsaW5nLT5pc0Fub255bW91cygpKSB7CisgICAgICAgICAgICBiZWZvcmVDaGls
ZCA9IG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4o
KnByZXZpb3VzU2libGluZyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvKiBsYXN0Q2hp
bGQgPSBiZWZvcmVDaGlsZCA/IGJlZm9yZUNoaWxkIDogcGFyZW50Lmxhc3RDZWxsKCk7CisgICAg
aWYgKGxhc3RDaGlsZCkgeworICAgICAgICBpZiAoaXM8UmVuZGVyVGFibGVDZWxsPigqbGFzdENo
aWxkKSAmJiBsYXN0Q2hpbGQtPmlzQW5vbnltb3VzKCkgJiYgIWxhc3RDaGlsZC0+aXNCZWZvcmVP
ckFmdGVyQ29udGVudCgpKSB7CisgICAgICAgICAgICBpZiAoYmVmb3JlQ2hpbGQgPT0gbGFzdENo
aWxkKQorICAgICAgICAgICAgICAgIGJlZm9yZUNoaWxkID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4oKmxhc3RDaGlsZCkuZmlyc3RDaGlsZCgpOworICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0
PFJlbmRlckVsZW1lbnQ+KCpsYXN0Q2hpbGQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVHJ5
IHRvIGZpbmQgYW4gYW5vbnltb3VzIGNvbnRhaW5lciBmb3IgdGhlIGNoaWxkLgorICAgICAgICBp
ZiAoYXV0byogbGFzdENoaWxkUGFyZW50ID0gbGFzdENoaWxkLT5wYXJlbnQoKSkgeworICAgICAg
ICAgICAgaWYgKGxhc3RDaGlsZFBhcmVudC0+aXNBbm9ueW1vdXMoKSAmJiAhbGFzdENoaWxkUGFy
ZW50LT5pc0JlZm9yZU9yQWZ0ZXJDb250ZW50KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiBi
ZWZvcmVDaGlsZCBpcyBpbnNpZGUgYW4gYW5vbnltb3VzIGNlbGwsIGluc2VydCBpbnRvIHRoZSBj
ZWxsLgorICAgICAgICAgICAgICAgIGlmICghaXM8UmVuZGVyVGFibGVDZWxsPigqbGFzdENoaWxk
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICpsYXN0Q2hpbGRQYXJlbnQ7CisgICAgICAg
ICAgICAgICAgLy8gSWYgYmVmb3JlQ2hpbGQgaXMgaW5zaWRlIGFuIGFub255bW91cyByb3csIGlu
c2VydCBpbnRvIHRoZSByb3cuCisgICAgICAgICAgICAgICAgaWYgKGlzPFJlbmRlclRhYmxlUm93
PigqbGFzdENoaWxkUGFyZW50KSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIG5ld0NlbGwg
PSBSZW5kZXJUYWJsZUNlbGw6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihwYXJl
bnQpOworICAgICAgICAgICAgICAgICAgICBhdXRvJiBjZWxsID0gKm5ld0NlbGw7CisgICAgICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuaW5zZXJ0Q2hpbGQoKmxhc3RDaGlsZFBhcmVudCwgV1RGTW92
ZShuZXdDZWxsKSwgYmVmb3JlQ2hpbGQpOworICAgICAgICAgICAgICAgICAgICBiZWZvcmVDaGls
ZCA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjZWxsOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBhdXRvIG5ld0Nl
bGwgPSBSZW5kZXJUYWJsZUNlbGw6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihw
YXJlbnQpOworICAgIGF1dG8mIGNlbGwgPSAqbmV3Q2VsbDsKKyAgICBidWlsZGVyLmluc2VydENo
aWxkKHBhcmVudCwgV1RGTW92ZShuZXdDZWxsKSwgYmVmb3JlQ2hpbGQpOworICAgIGJlZm9yZUNo
aWxkID0gbnVsbHB0cjsKKyAgICByZXR1cm4gY2VsbDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRhYmxlUm93QnVpbGRlci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRhYmxlUm93QnVpbGRlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU1ZjlmY2Q3ODkzZWRlYmMwMjZiZTQ0ZmYwNTliYjU2NzhlZGVjZGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VGFibGVSb3dCdWlsZGVyLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBSZW5kZXJFbGVtZW50OworY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3Mg
UmVuZGVyVGFibGVSb3c7CitjbGFzcyBSZW5kZXJUcmVlQnVpbGRlcjsKKworY2xhc3MgUmVuZGVy
VHJlZUJ1aWxkZXI6OlRhYmxlUm93IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVuZGVyRWxlbWVu
dCYgZmluZE9yQ3JlYXRlUGFyZW50Rm9yQ2hpbGQoUmVuZGVyVHJlZUJ1aWxkZXImLCBSZW5kZXJU
YWJsZVJvdyYgcGFyZW50LCBjb25zdCBSZW5kZXJPYmplY3QmIGNoaWxkLCBSZW5kZXJPYmplY3Qq
JiBiZWZvcmVDaGlsZCk7Cit9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKaW5kZXggNDVhYzI5OGM3NTFlZDM2
YWY2Njc5OTM4ZDIxZmM3MjkzNTEyOGE4ZC4uOGJjZDliMjM1MDk2NGRjMzQwMTZkMWYyMTQ3NDE4
OTQ3NTQ5YjEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAi
UmVuZGVyUnVieS5oIgogI2luY2x1ZGUgIlJlbmRlclJ1YnlCYXNlLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyUnVieVJ1bi5oIgorI2luY2x1ZGUgIlJlbmRlclRhYmxlUm93LmgiCisjaW5jbHVkZSAiUmVu
ZGVyVGFibGVSb3dCdWlsZGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUg
IlJlbmRlclRyZWVVcGRhdGVyLmgiCiAKQEAgLTU5LDYgKzYxLDExIEBAIHZvaWQgUmVuZGVyVHJl
ZUJ1aWxkZXI6Omluc2VydENoaWxkKFJlbmRlckVsZW1lbnQmIHBhcmVudCwgUmVuZGVyUHRyPFJl
bmRlck9iamVjCiAgICAgICAgICAgICBiZWZvcmVDaGlsZCA9IHdyYXBwZXJJbmxpbmU7CiAgICAg
fQogCisgICAgaWYgKGlzPFJlbmRlclRhYmxlUm93PihwYXJlbnQpKSB7CisgICAgICAgIFJlbmRl
clRyZWVCdWlsZGVyOjpUYWJsZVJvdzo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yQ2hpbGQoKnRoaXMs
IGRvd25jYXN0PFJlbmRlclRhYmxlUm93PihwYXJlbnQpLCAqY2hpbGQsIGJlZm9yZUNoaWxkKS5h
ZGRDaGlsZCgqdGhpcywgV1RGTW92ZShjaGlsZCksIGJlZm9yZUNoaWxkKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIGlmIChpczxSZW5kZXJSdWJ5UnVuPihwYXJlbnQpKSB7CiAgICAg
ICAgIHJ1YnlSdW5JbnNlcnRDaGlsZChkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihwYXJlbnQpLCBX
VEZNb3ZlKGNoaWxkKSwgYmVmb3JlQ2hpbGQpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5oCmlu
ZGV4IDUzNmRlNjM5MDgzOTBjZWI5NjAxY2I3YTAxNmIzNWE2NjUyOTkwMTcuLjY0M2U5Y2UzOTJl
MzFiMTY5ZDNhNDdlNmI0NjNhMGYzOTEwMGE3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5oCkBAIC00NCw2ICs0NCw4
IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogUmVtb3ZlLgogICAgIHN0YXRpYyBSZW5kZXJUcmVl
QnVpbGRlciogY3VycmVudCgpIHsgcmV0dXJuIHNfY3VycmVudDsgfQogCisgICAgY2xhc3MgVGFi
bGVSb3c7CisKIHByaXZhdGU6CiAgICAgdm9pZCBydWJ5UnVuSW5zZXJ0Q2hpbGQoUmVuZGVyUnVi
eVJ1biYsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9y
ZUNoaWxkKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329763</attachid>
            <date>2017-12-19 08:35:33 -0800</date>
            <delta_ts>2017-12-19 10:23:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180964-20171219083532.patch</filename>
            <type>text/plain</type>
            <size>21176</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI4YWE3YWE0MTI3N2Vj
OWM0MDMxZDdiMzk3YzhhOTRhOGYyNjQ4Mi4uNmU1YmYxMGZiMjRhZGM3MTMzMTM3YmFhMmE2YTI2
YWQ2OTJhZjc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTEyLTE5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1JlbmRlclRyZWVCdWlsZGVy
XSBNb3ZlIGZpbmRpbmctdGhlLXBhcmVudC9jcmVhdGluZy13cmFwcGVyIGxvZ2ljIGZyb20gUmVu
ZGVyVGFibGVSb3c6OmFkZENoaWxkIHRvIFJlbmRlclRyZWVCdWlsZGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA5NjQKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM2MTIzMzE1PgorCisgICAgICAgIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9y
IHJlbW92aW5nIHRyZWUgbXV0YXRpb24gZnJvbSByZW5kZXJlcmluZyBjb2RlLgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxl
Um93OjphZGRDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjppbnNlcnRD
aGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFibGUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpUYWJsZTo6Zmlu
ZE9yQ3JlYXRlUGFyZW50Rm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlQnVpbGRlclRhYmxlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5oLgorCiAyMDE3LTEyLTE3ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQ
STogTWFrZSBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzKCkgcmV0cmlldmUgY3VycmVudCBzdGF0
dXMgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGRhMmIzODJmMGE2
NWE2NTlmMWZhYWU4YTk1YWMwOWZmZDBhOTM5NDEuLjVhOTU0ZmE1NWQ4MmNlZmFmZWE0NWRlMWZj
ZjJmMjMwN2FlZDE3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTgwLDYgKzE5ODAsNyBAQCByZW5k
ZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKIHJlbmRlcmluZy9zdmcvU1ZHVGV4
dFF1ZXJ5LmNwcAogCiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCity
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5jcHAKIHJlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlUG9zaXRpb24uY3BwCiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZVVwZGF0ZXIuY3BwCiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJGaXJz
dExldHRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA3YTJmZTM4NDRhZTIyN2VjM2Q2NDY5MmQ5MTYzNjk1Yzk2NzAzNGMz
Li4yNDg4ZjYyNWNkNWU1ZjRkMDc4YjYwMjAwMjNiZGU4NzFjNzA5N2I1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODksNiAr
Mzg5LDcgQEAKIAkJMTBGQjA4NEIxNEUxNUM3RTAwQTNEQjk4IC8qIFB1YmxpY1VSTE1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDEwRkIwODRB
MTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNVUkxNYW5hZ2VyLmggKi87IH07CiAJCTExMkIzNEQ1
MUU2MEI5ODMwMEJCMzEwQSAvKiBTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTEyQjM0RDQxRTYwQjk4MzAw
QkIzMTBBIC8qIFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmggKi87IH07CiAJCTExM0QwQjUy
MUY5RkREMkIwMEY2MTFCQiAvKiBMYXlvdXRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTNEMEI1MDFGOUZERDJCMDBGNjExQkIgLyogTGF5
b3V0Q29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTExOTM0MDc5MUZFOEI5MjMwMDkzNUYxRSAvKiBSZW5kZXJUcmVlQnVpbGRlclRhYmxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTkzNDA3
NzFGRThCOTIzMDA5MzVGMUUgLyogUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5oICovOyB9OwogCQkx
MUUwNjdFRTFFNjI0NkU1MDAxNjJEMTYgLyogU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMUUwNjdFRDFFNjI0
NkU1MDAxNjJEMTYgLyogU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMEQ3QTgxNzEzNkVBNzAwNzdD
RTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDBEN0E3MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRX
cmFwcGFibGVJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMTQwM0I5OTcwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwM0I5OTUwOUVCMTNB
RjAwNzk3QzdGIC8qIERPTVdpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC01NTYwLDYgKzU1NjEsOCBAQAogCQkxMTJCMzRENDFFNjBCOTgz
MDBCQjMxMEEgLyogU2ltcGxlTGluZUxheW91dFBhZ2luYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2ltcGxlTGluZUxheW91dFBhZ2luYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTEzRDBCNEYxRjlGREQyQjAwRjYxMUJCIC8qIExheW91dENv
bnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0Q29udGV4dC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExM0QwQjUwMUY5RkREMkIwMEY2MTFCQiAvKiBMYXlvdXRD
b250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTE5MzQwNzYxRkU4QjkyMzAwOTM1RjFFIC8qIFJlbmRlclRyZWVCdWls
ZGVyVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExOTM0MDc3MUZFOEI5MjMwMDkzNUYx
RSAvKiBSZW5kZXJUcmVlQnVpbGRlclRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRyZWVC
dWlsZGVyVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTFFMDY3RUIxRTYy
NDYxMzAwMTYyRDE2IC8qIFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMUUwNjdFRDFFNjI0NkU1MDAxNjJEMTYgLyog
U2ltcGxlTGluZUxheW91dENvdmVyYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRXcmFwcGFibGVJbmxpbmVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDUwOSw2ICsyNDUxMiw4IEBACiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQlFNDdDMzkyMDFGRTZFMEQ5MDBCQkJDNkIgLyogUmVuZGVyVHJl
ZUJ1aWxkZXIuY3BwICovLAogCQkJCUU0N0MzOTJBMUZFNkUwREUwMEJCQkM2QiAvKiBSZW5kZXJU
cmVlQnVpbGRlci5oICovLAorCQkJCTExOTM0MDc2MUZFOEI5MjMwMDkzNUYxRSAvKiBSZW5kZXJU
cmVlQnVpbGRlclRhYmxlLmNwcCAqLywKKwkJCQkxMTkzNDA3NzFGRThCOTIzMDA5MzVGMUUgLyog
UmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5oICovLAogCQkJCUU0N0MzOTI5MUZFNkUwREUwMEJCQkM2
QiAvKiBSZW5kZXJUcmVlUG9zaXRpb24uY3BwICovLAogCQkJCUU0N0MzOTI0MUZFNkUwREIwMEJC
QkM2QiAvKiBSZW5kZXJUcmVlUG9zaXRpb24uaCAqLywKIAkJCQlFNDdDMzkxRjFGRTZFMEQ4MDBC
QkJDNkIgLyogUmVuZGVyVHJlZVVwZGF0ZXIuY3BwICovLApAQCAtMjYzNzEsNyArMjYzNzYsNiBA
QAogCQkJCTA3OUQwODZCMTYyRjIxRjkwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWVkaWFBRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdCNzExNkQxRDg5OUU2MzAwOUYwRkZCIC8q
IENhcHR1cmVEZXZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QjcxMTZGMUQ4OTlFNjMwMDlG
MEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQ3QzM5
MkQxRkU2RTBGMzAwQkJCQzZCIC8qIFJlbmRlclRyZWVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDREM3MzQxNTE5Nzc4OTZEMDA0NkJGQzUgLyogQ0FSaW5nQnVmZmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2NTUwQjY5RTA5OURGMDI3MDA5MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDREY0QjcxNjFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI2NDc2LDcgKzI2NDgwLDYgQEAKIAkJCQk5NzQ2QUYyMTE0RjREREU2MDAz
RTdBNzEgLyogQ29vcmRpbmF0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGODAyMDM1MUU5RTQ3
QkYwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzRjgwMjAzNzFFOUU0N0M1MDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0N0MzOTJFMUZFNkUwRjcwMEJCQkM2QiAvKiBSZW5k
ZXJUcmVlUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QUZGNDIyMUVGQjE0NDkwMEI1
NDVCMyAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDdEMzM0ODFDN0ExNkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg2MkYxMjlFMThDMTU3NkYwMDVDNTRBRiAvKiBDb3VudGVkVXNlckFjdGl2aXR5
LmggaW4gSGVhZGVycyAqLywKQEAgLTI2ODM4LDcgKzI2ODQxLDYgQEAKIAkJCQlBN0NGQjNEMjBC
N0VEMTBBMDA3MEMzMkQgLyogRHJhZ0ltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUY1RTRE
OTFFNTY3N0E5MDA0QTFGMDEgLyogRHJhZ0l0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgxRjY1
RkY2MTM3ODhGQUEwMEZGNkYyRCAvKiBEcmFnU3RhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0
N0MzOTMyMUZFNkUxMDUwMEJCQkM2QiAvKiBSZW5kZXJUcmVlVXBkYXRlckxpc3RJdGVtLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMUJBNjZGMTE3NDJCRDg2MDBDMjAyNTEgLyogRHluYW1pY0xpbmtl
ckludGVycG9zaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDZFRDJDODEzNkI4RTY2MDAzQ0Yw
NzIgLyogRHluYW1pY3NDb21wcmVzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1NzEz
N0I2NTNCMDAwMDhEQ0UgLyogRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmggaW4gSGVhZGVycyAq
LywKQEAgLTI3MjM1LDcgKzI3MjM3LDYgQEAKIAkJCQk5NzdCMzg3ODEyMjg4M0U5MDBCODFGRjgg
LyogSFRNTFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwNzU2OEMxNDIyNjJENjAw
NDE0MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0IzNzI2
MTIyODcyMTcwMEI4MUZGOCAvKiBIVE1MVHJlZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUU0N0MzOTMwMUZFNkUwRkQwMEJCQkM2QiAvKiBSZW5kZXJUcmVlVXBkYXRlckZpcnN0TGV0dGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNzlGMjBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTFVM
aXN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ0OTkxNDMxOEYwODE1MTAwQkYwMDky
IC8qIEhUTUxVbmtub3duRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzQUIwQ0Q2
MzMxMDAwRkFEQTc1IC8qIEhUTUxWaWRlb0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjg1
MjEsNyArMjg1MjIsNiBAQAogCQkJCTFBNTY5RDBCMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29i
amVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MjdGRDIxNDE2QTE1QjAwM0E4M0M4IC8qIG5w
YXBpLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTIxOUIzQjBEQ0E4N0FCMDA0MEUzQTAgLyogbnBm
dW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0N0MzOTJGMUZFNkUwRjkwMEJCQkM2QiAv
KiBSZW5kZXJUcmVlVXBkYXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MjdGRDMxNDE2QTE1
QjAwM0E4M0M4IC8qIG5wcnVudGltZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMEYwRDdF
MkI4MjAwN0MzOTgzIC8qIG5wcnVudGltZV9pbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2
OUQxMDBEN0UyQjgyMDA3QzM5ODMgLyogbnBydW50aW1lX2ludGVybmFsLmggaW4gSGVhZGVycyAq
LywKQEAgLTI4Njc1LDcgKzI4Njc1LDYgQEAKIAkJCQkwNzBFMDkxOTE4NzVFRUZDMDAzQTFEM0Mg
LyogUGxhdGZvcm1NZWRpYVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Rjk0NDE2MTg2
NEQwNDYwMDVEMzFDQiAvKiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxQkY3MDEwMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQ3QzM5MzMxRkU2RTEwODAwQkJCQzZCIC8q
IFJlbmRlclRyZWVVcGRhdGVyTXVsdGlDb2x1bW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0
NzY5MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybU1vdXNlRXZlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUM1OTg5MDU4MTRFOUMyOTkwMEU4RDE4QiAvKiBQbGF0Zm9ybVBhc3RlYm9hcmQuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDRUMwMUQ3MEMyNzRFQjQwMDlGNEVDOSAvKiBQbGF0Zm9ybVNj
cmVlbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODkyMyw2ICsyODkyMiwxNCBAQAogCQkJCUZFRDEz
RDUyMENFQTk0OTcwMEQ4OTQ2NiAvKiBSZW5kZXJUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNFQTQ4ODcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFjLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0YxOTk4QzA4MjQ1RTU5MDAxRTlBQkMgLyogUmVuZGVyVHJlZUFzVGV4dC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTQ3QzM5MkQxRkU2RTBGMzAwQkJCQzZCIC8qIFJlbmRlclRy
ZWVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxMTkzNDA3OTFGRThCOTIzMDA5MzVGMUUg
LyogUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ3QzM5MkUx
RkU2RTBGNzAwQkJCQzZCIC8qIFJlbmRlclRyZWVQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTQ3QzM5MkYxRkU2RTBGOTAwQkJCQzZCIC8qIFJlbmRlclRyZWVVcGRhdGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFNDdDMzkzMDFGRTZFMEZEMDBCQkJDNkIgLyogUmVuZGVyVHJlZVVwZGF0
ZXJGaXJzdExldHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ3QzM5MzExRkU2RTEwMjAwQkJC
QzZCIC8qIFJlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTQ3QzM5MzIxRkU2RTEwNTAwQkJCQzZCIC8qIFJlbmRlclRyZWVVcGRhdGVyTGlzdEl0
ZW0uaCBpbiBIZWFkZXJzICovLAorCQkJCUU0N0MzOTMzMUZFNkUxMDgwMEJCQkM2QiAvKiBSZW5k
ZXJUcmVlVXBkYXRlck11bHRpQ29sdW1uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTQ1MjBD
RDY4QTM1MDBGQURBNzUgLyogUmVuZGVyVmlkZW8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0
ODY4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
RTIwNTA3RTE4QTQ1OEMyMDA4MDY0N0UgLyogUmVuZGVyVlRUQ3VlLmggaW4gSGVhZGVycyAqLywK
QEAgLTI5MjA1LDcgKzI5MjEyLDYgQEAKIAkJCQk5N0JDNkEzQzE1MDVGMDgxMDAxQjc0QUMgLyog
U1FMRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjI0NjRBMENDOThEREIwMEMwNTI0MCAv
KiBTUUxpdGVEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U0NzRFMUYxMjQ5NERDOTAw
MjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQ3
QzM5MzExRkU2RTEwMjAwQkJCQzZCIC8qIFJlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U0NzRFMUUxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0
ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVBNjg0MjIwRkZB
QkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
MkJEQjRCMUM0NTZGRkEwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Um93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKaW5k
ZXggMDVhNDkzZTA5NGI2ZTliZjIyNTU2ZDZjMmU4NjFiMzVmZGYzNDY3NS4uNmNiMjUyNTU5MzIx
M2U5M2ZmMTBkMjk5ZDMzNTQ4NjkyYzQyZGE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVSb3cuY3BwCkBAIC0xMTMsNTggKzExMywxMiBAQCBjb25zdCBCb3JkZXJW
YWx1ZSYgUmVuZGVyVGFibGVSb3c6OmJvcmRlckFkam9pbmluZ0VuZENlbGwoY29uc3QgUmVuZGVy
VGFibGVDZWxsJgogCiB2b2lkIFJlbmRlclRhYmxlUm93OjphZGRDaGlsZChSZW5kZXJUcmVlQnVp
bGRlciYgYnVpbGRlciwgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY2hpbGQsIFJlbmRlck9iamVj
dCogYmVmb3JlQ2hpbGQpCiB7Ci0gICAgaWYgKCFpczxSZW5kZXJUYWJsZUNlbGw+KCpjaGlsZCkp
IHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBsYXN0ID0gYmVmb3JlQ2hpbGQ7Ci0gICAgICAgIGlm
ICghbGFzdCkKLSAgICAgICAgICAgIGxhc3QgPSBsYXN0Q2VsbCgpOwotICAgICAgICBpZiAobGFz
dCAmJiBsYXN0LT5pc0Fub255bW91cygpICYmIGlzPFJlbmRlclRhYmxlQ2VsbD4oKmxhc3QpICYm
ICFsYXN0LT5pc0JlZm9yZU9yQWZ0ZXJDb250ZW50KCkpIHsKLSAgICAgICAgICAgIFJlbmRlclRh
YmxlQ2VsbCYgY2VsbCA9IGRvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4oKmxhc3QpOwotICAgICAg
ICAgICAgaWYgKGJlZm9yZUNoaWxkID09ICZjZWxsKQotICAgICAgICAgICAgICAgIGJlZm9yZUNo
aWxkID0gY2VsbC5maXJzdENoaWxkKCk7Ci0gICAgICAgICAgICBidWlsZGVyLmluc2VydENoaWxk
KGNlbGwsIFdURk1vdmUoY2hpbGQpLCBiZWZvcmVDaGlsZCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYmVmb3JlQ2hpbGQgJiYgIWJlZm9yZUNoaWxkLT5p
c0Fub255bW91cygpICYmIGJlZm9yZUNoaWxkLT5wYXJlbnQoKSA9PSB0aGlzKSB7Ci0gICAgICAg
ICAgICBSZW5kZXJPYmplY3QqIGNlbGwgPSBiZWZvcmVDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCk7
Ci0gICAgICAgICAgICBpZiAoaXM8UmVuZGVyVGFibGVDZWxsPihjZWxsKSAmJiBjZWxsLT5pc0Fu
b255bW91cygpKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5pbnNlcnRDaGlsZChkb3duY2Fz
dDxSZW5kZXJUYWJsZUNlbGw+KCpjZWxsKSwgV1RGTW92ZShjaGlsZCkpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRyeSB0
byBmaW5kIGFuIGFub255bW91cyBjb250YWluZXIgZm9yIHRoZSBjaGlsZC4KLSAgICAgICAgaWYg
KGxhc3QgJiYgbGFzdC0+cGFyZW50KCkgJiYgbGFzdC0+cGFyZW50KCktPmlzQW5vbnltb3VzKCkg
JiYgIWxhc3QtPnBhcmVudCgpLT5pc0JlZm9yZU9yQWZ0ZXJDb250ZW50KCkpIHsKLSAgICAgICAg
ICAgIC8vIElmIGJlZm9yZUNoaWxkIGlzIGluc2lkZSBhbiBhbm9ueW1vdXMgY2VsbCwgaW5zZXJ0
IGludG8gdGhlIGNlbGwuCi0gICAgICAgICAgICBpZiAoIWlzPFJlbmRlclRhYmxlQ2VsbD4oKmxh
c3QpKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5pbnNlcnRDaGlsZCgqbGFzdC0+cGFyZW50
KCksIFdURk1vdmUoY2hpbGQpLCBiZWZvcmVDaGlsZCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gSWYgYmVmb3JlQ2hpbGQgaXMgaW5zaWRl
IGFuIGFub255bW91cyByb3csIGluc2VydCBpbnRvIHRoZSByb3cuCi0gICAgICAgICAgICBhdXRv
JiBwYXJlbnQgPSAqbGFzdC0+cGFyZW50KCk7Ci0gICAgICAgICAgICBpZiAoaXM8UmVuZGVyVGFi
bGVSb3c+KHBhcmVudCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIG5ld0NlbGwgPSBSZW5kZXJU
YWJsZUNlbGw6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcigqdGhpcyk7Ci0gICAg
ICAgICAgICAgICAgYXV0byYgY2VsbCA9ICpuZXdDZWxsOwotICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuaW5zZXJ0Q2hpbGQocGFyZW50LCBXVEZNb3ZlKG5ld0NlbGwpLCBiZWZvcmVDaGlsZCk7Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5pbnNlcnRDaGlsZChjZWxsLCBXVEZNb3ZlKGNoaWxkKSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIGF1dG8gbmV3Q2VsbCA9IFJlbmRlclRhYmxlQ2VsbDo6Y3JlYXRlQW5vbnltb3VzV2l0aFBh
cmVudFJlbmRlcmVyKCp0aGlzKTsKLSAgICAgICAgYXV0byYgY2VsbCA9ICpuZXdDZWxsOwotICAg
ICAgICBidWlsZGVyLmluc2VydENoaWxkKCp0aGlzLCBXVEZNb3ZlKG5ld0NlbGwpLCBiZWZvcmVD
aGlsZCk7Ci0gICAgICAgIGJ1aWxkZXIuaW5zZXJ0Q2hpbGQoY2VsbCwgV1RGTW92ZShjaGlsZCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfSAKLQogICAgIGlmIChiZWZvcmVDaGlsZCAmJiBiZWZv
cmVDaGlsZC0+cGFyZW50KCkgIT0gdGhpcykKICAgICAgICAgYmVmb3JlQ2hpbGQgPSBzcGxpdEFu
b255bW91c0JveGVzQXJvdW5kQ2hpbGQoYmVmb3JlQ2hpbGQpOyAgICAKIAotICAgIFJlbmRlclRh
YmxlQ2VsbCYgY2VsbCA9IGRvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4oKmNoaWxkKTsKLQogICAg
IC8vIEdlbmVyYXRlZCBjb250ZW50IGNhbiByZXN1bHQgaW4gdXMgaGF2aW5nIGEgbnVsbCBzZWN0
aW9uIHNvIG1ha2Ugc3VyZSB0byBudWxsIGNoZWNrIG91ciBwYXJlbnQuCi0gICAgaWYgKFJlbmRl
clRhYmxlU2VjdGlvbiogc2VjdGlvbiA9IHRoaXMtPnNlY3Rpb24oKSkKLSAgICAgICAgc2VjdGlv
bi0+YWRkQ2VsbCgmY2VsbCwgdGhpcyk7CisgICAgaWYgKGF1dG8qIHNlY3Rpb24gPSB0aGlzLT5z
ZWN0aW9uKCkpCisgICAgICAgIHNlY3Rpb24tPmFkZENlbGwoJmRvd25jYXN0PFJlbmRlclRhYmxl
Q2VsbD4oKmNoaWxkKSwgdGhpcyk7CiAKICAgICBBU1NFUlQoIWJlZm9yZUNoaWxkIHx8IGlzPFJl
bmRlclRhYmxlQ2VsbD4oKmJlZm9yZUNoaWxkKSk7CiAgICAgUmVuZGVyQm94OjphZGRDaGlsZChi
dWlsZGVyLCBXVEZNb3ZlKGNoaWxkKSwgYmVmb3JlQ2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKaW5kZXgg
NDVhYzI5OGM3NTFlZDM2YWY2Njc5OTM4ZDIxZmM3MjkzNTEyOGE4ZC4uZjJjZGUxMDM2MjFhOTVi
YTkyZGRlZmU4MzE2ZmI5ZjRjZWUxOWY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCkBAIC0zMCw3ICszMCw5
IEBACiAjaW5jbHVkZSAiUmVuZGVyUnVieS5oIgogI2luY2x1ZGUgIlJlbmRlclJ1YnlCYXNlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyUnVieVJ1bi5oIgorI2luY2x1ZGUgIlJlbmRlclRhYmxlUm93Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgorI2luY2x1ZGUgIlJlbmRlclRyZWVCdWlsZGVyVGFi
bGUuaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlVXBkYXRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01OSw2ICs2MSwxMSBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjppbnNlcnRDaGls
ZChSZW5kZXJFbGVtZW50JiBwYXJlbnQsIFJlbmRlclB0cjxSZW5kZXJPYmplYwogICAgICAgICAg
ICAgYmVmb3JlQ2hpbGQgPSB3cmFwcGVySW5saW5lOwogICAgIH0KIAorICAgIGlmIChpczxSZW5k
ZXJUYWJsZVJvdz4ocGFyZW50KSkgeworICAgICAgICBSZW5kZXJUcmVlQnVpbGRlcjo6VGFibGU6
OmZpbmRPckNyZWF0ZVBhcmVudEZvckNoaWxkKCp0aGlzLCBkb3duY2FzdDxSZW5kZXJUYWJsZVJv
dz4ocGFyZW50KSwgKmNoaWxkLCBiZWZvcmVDaGlsZCkuYWRkQ2hpbGQoKnRoaXMsIFdURk1vdmUo
Y2hpbGQpLCBiZWZvcmVDaGlsZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAo
aXM8UmVuZGVyUnVieVJ1bj4ocGFyZW50KSkgewogICAgICAgICBydWJ5UnVuSW5zZXJ0Q2hpbGQo
ZG93bmNhc3Q8UmVuZGVyUnVieVJ1bj4ocGFyZW50KSwgV1RGTW92ZShjaGlsZCksIGJlZm9yZUNo
aWxkKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuaAppbmRleCA1MzZkZTYzOTA4MzkwY2ViOTYw
MWNiN2EwMTZiMzVhNjY1Mjk5MDE3Li40NTEzNTZhZDhmNWEwYmU5ZWU4MTVmY2FmNTg2ZmYzOTRk
ODJiNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZUJ1aWxkZXIuaApAQCAtNDQsNiArNDQsOCBAQCBwdWJsaWM6CiAgICAgLy8gRklY
TUU6IFJlbW92ZS4KICAgICBzdGF0aWMgUmVuZGVyVHJlZUJ1aWxkZXIqIGN1cnJlbnQoKSB7IHJl
dHVybiBzX2N1cnJlbnQ7IH0KIAorICAgIGNsYXNzIFRhYmxlOworCiBwcml2YXRlOgogICAgIHZv
aWQgcnVieVJ1bkluc2VydENoaWxkKFJlbmRlclJ1YnlSdW4mLCBSZW5kZXJQdHI8UmVuZGVyT2Jq
ZWN0PiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRh
YmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jZThiOGNkNDgxYzIzNWZhZTQzNTgwNTYzM2EzZWJjOGQ2NjAy
MjJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyVGFibGUuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5o
IgorCisjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCisjaW5jbHVkZSAiUmVuZGVyVGFibGVS
b3cuaCIKKyNpbmNsdWRlICJSZW5kZXJUcmVlQnVpbGRlci5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1JlbmRlckVsZW1lbnQmIFJlbmRlclRyZWVCdWlsZGVyOjpUYWJsZTo6ZmluZE9yQ3Jl
YXRlUGFyZW50Rm9yQ2hpbGQoUmVuZGVyVHJlZUJ1aWxkZXImIGJ1aWxkZXIsIFJlbmRlclRhYmxl
Um93JiBwYXJlbnQsCisgICAgY29uc3QgUmVuZGVyT2JqZWN0JiBjaGlsZCwgUmVuZGVyT2JqZWN0
KiYgYmVmb3JlQ2hpbGQpCit7CisgICAgaWYgKGlzPFJlbmRlclRhYmxlQ2VsbD4oY2hpbGQpKQor
ICAgICAgICByZXR1cm4gcGFyZW50OworCisgICAgaWYgKGJlZm9yZUNoaWxkICYmICFiZWZvcmVD
aGlsZC0+aXNBbm9ueW1vdXMoKSAmJiBiZWZvcmVDaGlsZC0+cGFyZW50KCkgPT0gJnBhcmVudCkg
eworICAgICAgICBhdXRvKiBwcmV2aW91c1NpYmxpbmcgPSBiZWZvcmVDaGlsZC0+cHJldmlvdXNT
aWJsaW5nKCk7CisgICAgICAgIGlmIChpczxSZW5kZXJUYWJsZUNlbGw+KHByZXZpb3VzU2libGlu
ZykgJiYgcHJldmlvdXNTaWJsaW5nLT5pc0Fub255bW91cygpKSB7CisgICAgICAgICAgICBiZWZv
cmVDaGlsZCA9IG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyRWxl
bWVudD4oKnByZXZpb3VzU2libGluZyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvKiBs
YXN0Q2hpbGQgPSBiZWZvcmVDaGlsZCA/IGJlZm9yZUNoaWxkIDogcGFyZW50Lmxhc3RDZWxsKCk7
CisgICAgaWYgKGxhc3RDaGlsZCkgeworICAgICAgICBpZiAoaXM8UmVuZGVyVGFibGVDZWxsPigq
bGFzdENoaWxkKSAmJiBsYXN0Q2hpbGQtPmlzQW5vbnltb3VzKCkgJiYgIWxhc3RDaGlsZC0+aXNC
ZWZvcmVPckFmdGVyQ29udGVudCgpKSB7CisgICAgICAgICAgICBpZiAoYmVmb3JlQ2hpbGQgPT0g
bGFzdENoaWxkKQorICAgICAgICAgICAgICAgIGJlZm9yZUNoaWxkID0gZG93bmNhc3Q8UmVuZGVy
RWxlbWVudD4oKmxhc3RDaGlsZCkuZmlyc3RDaGlsZCgpOworICAgICAgICAgICAgcmV0dXJuIGRv
d25jYXN0PFJlbmRlckVsZW1lbnQ+KCpsYXN0Q2hpbGQpOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gVHJ5IHRvIGZpbmQgYW4gYW5vbnltb3VzIGNvbnRhaW5lciBmb3IgdGhlIGNoaWxkLgorICAg
ICAgICBpZiAoYXV0byogbGFzdENoaWxkUGFyZW50ID0gbGFzdENoaWxkLT5wYXJlbnQoKSkgewor
ICAgICAgICAgICAgaWYgKGxhc3RDaGlsZFBhcmVudC0+aXNBbm9ueW1vdXMoKSAmJiAhbGFzdENo
aWxkUGFyZW50LT5pc0JlZm9yZU9yQWZ0ZXJDb250ZW50KCkpIHsKKyAgICAgICAgICAgICAgICAv
LyBJZiBiZWZvcmVDaGlsZCBpcyBpbnNpZGUgYW4gYW5vbnltb3VzIGNlbGwsIGluc2VydCBpbnRv
IHRoZSBjZWxsLgorICAgICAgICAgICAgICAgIGlmICghaXM8UmVuZGVyVGFibGVDZWxsPigqbGFz
dENoaWxkKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICpsYXN0Q2hpbGRQYXJlbnQ7Cisg
ICAgICAgICAgICAgICAgLy8gSWYgYmVmb3JlQ2hpbGQgaXMgaW5zaWRlIGFuIGFub255bW91cyBy
b3csIGluc2VydCBpbnRvIHRoZSByb3cuCisgICAgICAgICAgICAgICAgaWYgKGlzPFJlbmRlclRh
YmxlUm93PigqbGFzdENoaWxkUGFyZW50KSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIG5l
d0NlbGwgPSBSZW5kZXJUYWJsZUNlbGw6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJl
cihwYXJlbnQpOworICAgICAgICAgICAgICAgICAgICBhdXRvJiBjZWxsID0gKm5ld0NlbGw7Cisg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuaW5zZXJ0Q2hpbGQoKmxhc3RDaGlsZFBhcmVudCwg
V1RGTW92ZShuZXdDZWxsKSwgYmVmb3JlQ2hpbGQpOworICAgICAgICAgICAgICAgICAgICBiZWZv
cmVDaGlsZCA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjZWxsOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBhdXRv
IG5ld0NlbGwgPSBSZW5kZXJUYWJsZUNlbGw6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5k
ZXJlcihwYXJlbnQpOworICAgIGF1dG8mIGNlbGwgPSAqbmV3Q2VsbDsKKyAgICBidWlsZGVyLmlu
c2VydENoaWxkKHBhcmVudCwgV1RGTW92ZShuZXdDZWxsKSwgYmVmb3JlQ2hpbGQpOworICAgIGJl
Zm9yZUNoaWxkID0gbnVsbHB0cjsKKyAgICByZXR1cm4gY2VsbDsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFi
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRl
clRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI4ZDk5NmJjMmM5MjA2YzJhZjQxOTE4ZGQ3YTA4YmMxYWQ4
Nzc2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXIuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJFbGVtZW50OworY2xhc3MgUmVuZGVyT2JqZWN0
OworY2xhc3MgUmVuZGVyVGFibGVSb3c7CitjbGFzcyBSZW5kZXJUcmVlQnVpbGRlcjsKKworY2xh
c3MgUmVuZGVyVHJlZUJ1aWxkZXI6OlRhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVuZGVy
RWxlbWVudCYgZmluZE9yQ3JlYXRlUGFyZW50Rm9yQ2hpbGQoUmVuZGVyVHJlZUJ1aWxkZXImLCBS
ZW5kZXJUYWJsZVJvdyYgcGFyZW50LCBjb25zdCBSZW5kZXJPYmplY3QmIGNoaWxkLCBSZW5kZXJP
YmplY3QqJiBiZWZvcmVDaGlsZCk7Cit9OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329771</attachid>
            <date>2017-12-19 10:23:29 -0800</date>
            <delta_ts>2017-12-19 10:56:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180964-20171219102329.patch</filename>
            <type>text/plain</type>
            <size>21767</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI4YWE3YWE0MTI3N2Vj
OWM0MDMxZDdiMzk3YzhhOTRhOGYyNjQ4Mi4uY2I5NTBhN2MzZTM4YzUwYTlhNmQ2MTY5MWM0N2Nm
OWI2YmI5NDdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE3LTEyLTE5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1JlbmRlclRyZWVCdWlsZGVy
XSBNb3ZlIGZpbmRpbmctdGhlLXBhcmVudC9jcmVhdGluZy13cmFwcGVyIGxvZ2ljIGZyb20gUmVu
ZGVyVGFibGVSb3c6OmFkZENoaWxkIHRvIFJlbmRlclRyZWVCdWlsZGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA5NjQKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM2MTIzMzE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3Rv
LgorCisgICAgICAgIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIHJlbW92aW5nIGFsbCB0cmVl
IG11dGF0aW9uIGZyb20gcmVuZGVyZXJpbmcgY29kZS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
YWJsZVJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVJvdzo6YWRkQ2hpbGQp
OgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6aW5zZXJ0Q2hpbGQpOgorICAgICAg
ICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5oOgorICAgICAgICAqIHJl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6VGFibGU6OmZpbmRPckNyZWF0ZVBhcmVu
dEZvckNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJUYWJsZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZUJ1aWxkZXIuaC4KKwogMjAxNy0xMi0xNyAgSm9obiBXaWxhbmRlciAgPHdpbGFu
ZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9yYWdlIEFjY2VzcyBBUEk6IE1ha2UgZG9jdW1l
bnQuaGFzU3RvcmFnZUFjY2VzcygpIHJldHJpZXZlIGN1cnJlbnQgc3RhdHVzIGZyb20gdGhlIG5l
dHdvcmsgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBkYTJiMzgyZjBhNjVhNjU5ZjFmYWFlOGE5
NWFjMDlmZmQwYTkzOTQxLi41YTk1NGZhNTVkODJjZWZhZmVhNDVkZTFmY2YyZjIzMDdhZWQxNzI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTk4MCw2ICsxOTgwLDcgQEAgcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TWV0cmljc0J1aWxkZXIuY3BwCiByZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAKIAog
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAorcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFibGUuY3BwCiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZVBvc2l0aW9uLmNwcAogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNw
cAogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyRmlyc3RMZXR0ZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggN2EyZmUzODQ0YWUyMjdlYzNkNjQ2OTJkOTE2MzY5NWM5NjcwMzRjMy4uMjQ4OGY2MjVjZDVl
NWY0ZDA3OGI2MDIwMDIzYmRlODcxYzcwOTdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzg5LDYgKzM4OSw3IEBACiAJCTEw
RkIwODRCMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNVUkxNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMEZCMDg0QTE0RTE1QzdFMDBBM0RC
OTggLyogUHVibGljVVJMTWFuYWdlci5oICovOyB9OwogCQkxMTJCMzRENTFFNjBCOTgzMDBCQjMx
MEEgLyogU2ltcGxlTGluZUxheW91dFBhZ2luYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExMkIzNEQ0MUU2MEI5ODMwMEJCMzEwQSAvKiBTaW1w
bGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5oICovOyB9OwogCQkxMTNEMEI1MjFGOUZERDJCMDBGNjEx
QkIgLyogTGF5b3V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTEzRDBCNTAxRjlGREQyQjAwRjYxMUJCIC8qIExheW91dENvbnRleHQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxMTkzNDA3
OTFGRThCOTIzMDA5MzVGMUUgLyogUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTE5MzQwNzcxRkU4QjkyMzAwOTM1
RjFFIC8qIFJlbmRlclRyZWVCdWlsZGVyVGFibGUuaCAqLzsgfTsKIAkJMTFFMDY3RUUxRTYyNDZF
NTAwMTYyRDE2IC8qIFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTFFMDY3RUQxRTYyNDZFNTAwMTYyRDE2IC8q
IFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTE0MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRX
cmFwcGFibGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5l
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0
MDNCOTk3MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDNCOTk1MDlFQjEzQUYwMDc5N0M3RiAvKiBE
T01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNTU2MCw2ICs1NTYxLDggQEAKIAkJMTEyQjM0RDQxRTYwQjk4MzAwQkIzMTBBIC8qIFNp
bXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTExM0QwQjRGMUY5RkREMkIwMEY2MTFCQiAvKiBMYXlvdXRDb250ZXh0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IExheW91dENvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxMTNEMEI1MDFGOUZERDJCMDBGNjExQkIgLyogTGF5b3V0Q29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMYXlvdXRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTExOTM0MDc2MUZFOEI5MjMwMDkzNUYxRSAvKiBSZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclRyZWVCdWlsZGVyVGFibGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxMTkzNDA3NzFGRThCOTIzMDA5MzVGMUUgLyogUmVuZGVyVHJl
ZUJ1aWxkZXJUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJUcmVlQnVpbGRlclRhYmxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExRTA2N0VCMUU2MjQ2MTMwMDE2MkQxNiAv
KiBTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTFFMDY3RUQxRTYyNDZFNTAwMTYyRDE2IC8qIFNpbXBsZUxpbmVMYXlv
dXRDb3ZlcmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1wbGVMaW5l
TGF5b3V0Q292ZXJhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMEQ3QTcx
NzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjQ1MDksNiArMjQ1MTIsOCBAQAogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJRTQ3QzM5MjAxRkU2RTBEOTAwQkJCQzZCIC8qIFJlbmRlclRyZWVCdWlsZGVyLmNwcCAq
LywKIAkJCQlFNDdDMzkyQTFGRTZFMERFMDBCQkJDNkIgLyogUmVuZGVyVHJlZUJ1aWxkZXIuaCAq
LywKKwkJCQkxMTkzNDA3NjFGRThCOTIzMDA5MzVGMUUgLyogUmVuZGVyVHJlZUJ1aWxkZXJUYWJs
ZS5jcHAgKi8sCisJCQkJMTE5MzQwNzcxRkU4QjkyMzAwOTM1RjFFIC8qIFJlbmRlclRyZWVCdWls
ZGVyVGFibGUuaCAqLywKIAkJCQlFNDdDMzkyOTFGRTZFMERFMDBCQkJDNkIgLyogUmVuZGVyVHJl
ZVBvc2l0aW9uLmNwcCAqLywKIAkJCQlFNDdDMzkyNDFGRTZFMERCMDBCQkJDNkIgLyogUmVuZGVy
VHJlZVBvc2l0aW9uLmggKi8sCiAJCQkJRTQ3QzM5MUYxRkU2RTBEODAwQkJCQzZCIC8qIFJlbmRl
clRyZWVVcGRhdGVyLmNwcCAqLywKQEAgLTI2MzcxLDcgKzI2Mzc2LDYgQEAKIAkJCQkwNzlEMDg2
QjE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3QjcxMTZEMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0I3MTE2RjFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVy
ZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0N0MzOTJEMUZFNkUwRjMwMEJC
QkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDNzM0MTUx
OTc3ODk2RDAwNDZCRkM1IC8qIENBUmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1
MEI2OUUwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0RGNEI3MTYxRTAwQjdFNTAwRTIzNUEyIC8qIENETS5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NjQ3Niw3ICsyNjQ4MCw2IEBACiAJCQkJOTc0NkFGMjExNEY0RERFNjAwM0U3QTcxIC8qIENvb3Jk
aW5hdGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRjgwMjAzNTFFOUU0N0JGMDBERUM2MUQgLyog
Q29yZUF1ZGlvQ2FwdHVyZURldmljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0Y4MDIwMzcxRTlF
NDdDNTAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlFNDdDMzkyRTFGRTZFMEY3MDBCQkJDNkIgLyogUmVuZGVyVHJlZVBvc2l0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0FGRjQyMjFFRkIxNDQ5MDBCNTQ1QjMgLyogQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q3RDMzNDgxQzdBMTZC
RjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjJG
MTI5RTE4QzE1NzZGMDA1QzU0QUYgLyogQ291bnRlZFVzZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNjgzOCw3ICsyNjg0MSw2IEBACiAJCQkJQTdDRkIzRDIwQjdFRDEwQTAwNzBDMzJE
IC8qIERyYWdJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGNUU0RDkxRTU2NzdBOTAwNEEx
RjAxIC8qIERyYWdJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MUY2NUZGNjEzNzg4RkFBMDBG
RjZGMkQgLyogRHJhZ1N0YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDdDMzkzMjFGRTZFMTA1
MDBCQkJDNkIgLyogUmVuZGVyVHJlZVVwZGF0ZXJMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTFCQTY2RjExNzQyQkQ4NjAwQzIwMjUxIC8qIER5bmFtaWNMaW5rZXJJbnRlcnBvc2luZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ2RUQyQzgxMzZCOEU2NjAwM0NGMDcyIC8qIER5bmFtaWNz
Q29tcHJlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1MzczNTcxMzdCNjUzQjAwMDA4RENF
IC8qIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzIzNSw3
ICsyNzIzNyw2IEBACiAJCQkJOTc3QjM4NzgxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxUb2tlbml6
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDc1NjhDMTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1M
VHJhY2tFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzcyNjEyMjg3MjE3MDBCODFG
RjggLyogSFRNTFRyZWVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDdDMzkzMDFGRTZF
MEZEMDBCQkJDNkIgLyogUmVuZGVyVHJlZVVwZGF0ZXJGaXJzdExldHRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThFQTc5RjIwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxVTGlzdEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUFENDk5MTQzMThGMDgxNTEwMEJGMDA5MiAvKiBIVE1MVW5rbm93
bkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxM0FCMENENjMzMTAwMEZBREE3NSAv
KiBIVE1MVmlkZW9FbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI4NTIxLDcgKzI4NTIyLDYg
QEAKIAkJCQkxQTU2OUQwQjBEN0UyQjgyMDA3QzM5ODMgLyogTlBfanNvYmplY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBOTI3RkQyMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUEyMTlCM0IwRENBODdBQjAwNDBFM0EwIC8qIG5wZnVuY3Rpb25zLmggaW4g
SGVhZGVycyAqLywKLQkJCQlFNDdDMzkyRjFGRTZFMEY5MDBCQkJDNkIgLyogUmVuZGVyVHJlZVVw
ZGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOTI3RkQzMTQxNkExNUIwMDNBODNDOCAvKiBu
cHJ1bnRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDBGMEQ3RTJCODIwMDdDMzk4MyAv
KiBucHJ1bnRpbWVfaW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMTAwRDdFMkI4MjAw
N0MzOTgzIC8qIG5wcnVudGltZV9pbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODY3NSw3
ICsyODY3NSw2IEBACiAJCQkJMDcwRTA5MTkxODc1RUVGQzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVk
aWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMxQ0Ig
LyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUJG
NzAxMDBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUU0N0MzOTMzMUZFNkUxMDgwMEJCQkM2QiAvKiBSZW5kZXJUcmVlVXBk
YXRlck11bHRpQ29sdW1uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc2OTA5QUM0RDQzMDBB
NkFBQjQgLyogUGxhdGZvcm1Nb3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTk4OTA1
ODE0RTlDMjk5MDBFOEQxOEIgLyogUGxhdGZvcm1QYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0VDMDFENzBDMjc0RUI0MDA5RjRFQzkgLyogUGxhdGZvcm1TY3JlZW4uaCBpbiBIZWFk
ZXJzICovLApAQCAtMjg5MjMsNiArMjg5MjIsMTQgQEAKIAkJCQlGRUQxM0Q1MjBDRUE5NDk3MDBE
ODk0NjYgLyogUmVuZGVyVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODg3MDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNG
MTk5OEMwODI0NUU1OTAwMUU5QUJDIC8qIFJlbmRlclRyZWVBc1RleHQuaCBpbiBIZWFkZXJzICov
LAorCQkJCUU0N0MzOTJEMUZFNkUwRjMwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMTE5MzQwNzkxRkU4QjkyMzAwOTM1RjFFIC8qIFJlbmRlclRyZWVC
dWlsZGVyVGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0N0MzOTJFMUZFNkUwRjcwMEJCQkM2
QiAvKiBSZW5kZXJUcmVlUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUU0N0MzOTJGMUZF
NkUwRjkwMEJCQkM2QiAvKiBSZW5kZXJUcmVlVXBkYXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTQ3QzM5MzAxRkU2RTBGRDAwQkJCQzZCIC8qIFJlbmRlclRyZWVVcGRhdGVyRmlyc3RMZXR0ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUU0N0MzOTMxMUZFNkUxMDIwMEJCQkM2QiAvKiBSZW5kZXJU
cmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0N0MzOTMy
MUZFNkUxMDUwMEJCQkM2QiAvKiBSZW5kZXJUcmVlVXBkYXRlckxpc3RJdGVtLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlFNDdDMzkzMzFGRTZFMTA4MDBCQkJDNkIgLyogUmVuZGVyVHJlZVVwZGF0ZXJN
dWx0aUNvbHVtbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjE0NTIwQ0Q2OEEzNTAwRkFEQTc1
IC8qIFJlbmRlclZpZGVvLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg2ODA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVyVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkUyMDUwN0UxOEE0NThD
MjAwODA2NDdFIC8qIFJlbmRlclZUVEN1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTIwNSw3ICsy
OTIxMiw2IEBACiAJCQkJOTdCQzZBM0MxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTEVycm9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTIyNDY0QTBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlRGF0YWJh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFNDc0RTFGMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxp
dGVEYXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0N0MzOTMxMUZFNkUxMDIw
MEJCQkM2QiAvKiBSZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdFNDc0RTFFMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNr
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1QTY4NDIyMEZGQUJFOTgwMEQyNDY4OSAv
KiBTUUxpdGVGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJCREI0QjFDNDU2RkZB
MDA2NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCmluZGV4IDA1YTQ5M2UwOTRi
NmU5YmYyMjU1NmQ2YzJlODYxYjM1ZmRmMzQ2NzUuLjZjYjI1MjU1OTMyMTNlOTNmZjEwZDI5OWQz
MzU0ODY5MmM0MmRhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZVJvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Um93LmNwcApAQCAtMTEzLDU4ICsxMTMsMTIgQEAgY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRh
YmxlUm93Ojpib3JkZXJBZGpvaW5pbmdFbmRDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCYKIAog
dm9pZCBSZW5kZXJUYWJsZVJvdzo6YWRkQ2hpbGQoUmVuZGVyVHJlZUJ1aWxkZXImIGJ1aWxkZXIs
IFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxk
KQogewotICAgIGlmICghaXM8UmVuZGVyVGFibGVDZWxsPigqY2hpbGQpKSB7Ci0gICAgICAgIFJl
bmRlck9iamVjdCogbGFzdCA9IGJlZm9yZUNoaWxkOwotICAgICAgICBpZiAoIWxhc3QpCi0gICAg
ICAgICAgICBsYXN0ID0gbGFzdENlbGwoKTsKLSAgICAgICAgaWYgKGxhc3QgJiYgbGFzdC0+aXNB
bm9ueW1vdXMoKSAmJiBpczxSZW5kZXJUYWJsZUNlbGw+KCpsYXN0KSAmJiAhbGFzdC0+aXNCZWZv
cmVPckFmdGVyQ29udGVudCgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwmIGNlbGwg
PSBkb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KCpsYXN0KTsKLSAgICAgICAgICAgIGlmIChiZWZv
cmVDaGlsZCA9PSAmY2VsbCkKLSAgICAgICAgICAgICAgICBiZWZvcmVDaGlsZCA9IGNlbGwuZmly
c3RDaGlsZCgpOwotICAgICAgICAgICAgYnVpbGRlci5pbnNlcnRDaGlsZChjZWxsLCBXVEZNb3Zl
KGNoaWxkKSwgYmVmb3JlQ2hpbGQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKGJlZm9yZUNoaWxkICYmICFiZWZvcmVDaGlsZC0+aXNBbm9ueW1vdXMoKSAm
JiBiZWZvcmVDaGlsZC0+cGFyZW50KCkgPT0gdGhpcykgewotICAgICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBjZWxsID0gYmVmb3JlQ2hpbGQtPnByZXZpb3VzU2libGluZygpOwotICAgICAgICAgICAg
aWYgKGlzPFJlbmRlclRhYmxlQ2VsbD4oY2VsbCkgJiYgY2VsbC0+aXNBbm9ueW1vdXMoKSkgewot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuaW5zZXJ0Q2hpbGQoZG93bmNhc3Q8UmVuZGVyVGFibGVD
ZWxsPigqY2VsbCksIFdURk1vdmUoY2hpbGQpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBUcnkgdG8gZmluZCBhbiBhbm9u
eW1vdXMgY29udGFpbmVyIGZvciB0aGUgY2hpbGQuCi0gICAgICAgIGlmIChsYXN0ICYmIGxhc3Qt
PnBhcmVudCgpICYmIGxhc3QtPnBhcmVudCgpLT5pc0Fub255bW91cygpICYmICFsYXN0LT5wYXJl
bnQoKS0+aXNCZWZvcmVPckFmdGVyQ29udGVudCgpKSB7Ci0gICAgICAgICAgICAvLyBJZiBiZWZv
cmVDaGlsZCBpcyBpbnNpZGUgYW4gYW5vbnltb3VzIGNlbGwsIGluc2VydCBpbnRvIHRoZSBjZWxs
LgotICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJUYWJsZUNlbGw+KCpsYXN0KSkgewotICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuaW5zZXJ0Q2hpbGQoKmxhc3QtPnBhcmVudCgpLCBXVEZNb3ZlKGNo
aWxkKSwgYmVmb3JlQ2hpbGQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIC8vIElmIGJlZm9yZUNoaWxkIGlzIGluc2lkZSBhbiBhbm9ueW1vdXMg
cm93LCBpbnNlcnQgaW50byB0aGUgcm93LgotICAgICAgICAgICAgYXV0byYgcGFyZW50ID0gKmxh
c3QtPnBhcmVudCgpOwotICAgICAgICAgICAgaWYgKGlzPFJlbmRlclRhYmxlUm93PihwYXJlbnQp
KSB7Ci0gICAgICAgICAgICAgICAgYXV0byBuZXdDZWxsID0gUmVuZGVyVGFibGVDZWxsOjpjcmVh
dGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoKnRoaXMpOwotICAgICAgICAgICAgICAgIGF1
dG8mIGNlbGwgPSAqbmV3Q2VsbDsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmluc2VydENoaWxk
KHBhcmVudCwgV1RGTW92ZShuZXdDZWxsKSwgYmVmb3JlQ2hpbGQpOwotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuaW5zZXJ0Q2hpbGQoY2VsbCwgV1RGTW92ZShjaGlsZCkpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBhdXRvIG5ld0Nl
bGwgPSBSZW5kZXJUYWJsZUNlbGw6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcigq
dGhpcyk7Ci0gICAgICAgIGF1dG8mIGNlbGwgPSAqbmV3Q2VsbDsKLSAgICAgICAgYnVpbGRlci5p
bnNlcnRDaGlsZCgqdGhpcywgV1RGTW92ZShuZXdDZWxsKSwgYmVmb3JlQ2hpbGQpOwotICAgICAg
ICBidWlsZGVyLmluc2VydENoaWxkKGNlbGwsIFdURk1vdmUoY2hpbGQpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0gCi0KICAgICBpZiAoYmVmb3JlQ2hpbGQgJiYgYmVmb3JlQ2hpbGQtPnBhcmVu
dCgpICE9IHRoaXMpCiAgICAgICAgIGJlZm9yZUNoaWxkID0gc3BsaXRBbm9ueW1vdXNCb3hlc0Fy
b3VuZENoaWxkKGJlZm9yZUNoaWxkKTsgICAgCiAKLSAgICBSZW5kZXJUYWJsZUNlbGwmIGNlbGwg
PSBkb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KCpjaGlsZCk7Ci0KICAgICAvLyBHZW5lcmF0ZWQg
Y29udGVudCBjYW4gcmVzdWx0IGluIHVzIGhhdmluZyBhIG51bGwgc2VjdGlvbiBzbyBtYWtlIHN1
cmUgdG8gbnVsbCBjaGVjayBvdXIgcGFyZW50LgotICAgIGlmIChSZW5kZXJUYWJsZVNlY3Rpb24q
IHNlY3Rpb24gPSB0aGlzLT5zZWN0aW9uKCkpCi0gICAgICAgIHNlY3Rpb24tPmFkZENlbGwoJmNl
bGwsIHRoaXMpOworICAgIGlmIChhdXRvKiBzZWN0aW9uID0gdGhpcy0+c2VjdGlvbigpKQorICAg
ICAgICBzZWN0aW9uLT5hZGRDZWxsKCZkb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KCpjaGlsZCks
IHRoaXMpOwogCiAgICAgQVNTRVJUKCFiZWZvcmVDaGlsZCB8fCBpczxSZW5kZXJUYWJsZUNlbGw+
KCpiZWZvcmVDaGlsZCkpOwogICAgIFJlbmRlckJveDo6YWRkQ2hpbGQoYnVpbGRlciwgV1RGTW92
ZShjaGlsZCksIGJlZm9yZUNoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDQ1YWMyOThjNzUxZWQz
NmFmNjY3OTkzOGQyMWZjNzI5MzUxMjhhOGQuLmQ1ZGQyODFjMzczNDM4NjZhOThhOGQwYjBkMWIy
YWY4MTU5M2UwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcApAQCAtMzAsNyArMzAsOSBAQAogI2luY2x1ZGUg
IlJlbmRlclJ1YnkuaCIKICNpbmNsdWRlICJSZW5kZXJSdWJ5QmFzZS5oIgogI2luY2x1ZGUgIlJl
bmRlclJ1YnlSdW4uaCIKKyNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgogI2luY2x1ZGUgIlJl
bmRlclRleHQuaCIKKyNpbmNsdWRlICJSZW5kZXJUcmVlQnVpbGRlclRhYmxlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVHJlZVVwZGF0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNiAr
NDEsNyBAQCBSZW5kZXJUcmVlQnVpbGRlciogUmVuZGVyVHJlZUJ1aWxkZXI6OnNfY3VycmVudDsK
IAogUmVuZGVyVHJlZUJ1aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKFJlbmRlclZpZXcmIHZpZXcp
CiAgICAgOiBtX3ZpZXcodmlldykKKyAgICAsIG1fdGFibGVCdWlsZGVyKHN0ZDo6bWFrZV91bmlx
dWU8VGFibGU+KCp0aGlzKSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghc19jdXJyZW50IHx8ICZt
X3ZpZXcgIT0gJnNfY3VycmVudC0+bV92aWV3KTsKICAgICBtX3ByZXZpb3VzID0gc19jdXJyZW50
OwpAQCAtNTksNiArNjIsMTEgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6aW5zZXJ0Q2hpbGQo
UmVuZGVyRWxlbWVudCYgcGFyZW50LCBSZW5kZXJQdHI8UmVuZGVyT2JqZWMKICAgICAgICAgICAg
IGJlZm9yZUNoaWxkID0gd3JhcHBlcklubGluZTsKICAgICB9CiAKKyAgICBpZiAoaXM8UmVuZGVy
VGFibGVSb3c+KHBhcmVudCkpIHsKKyAgICAgICAgbV90YWJsZUJ1aWxkZXItPmZpbmRPckNyZWF0
ZVBhcmVudEZvckNoaWxkKGRvd25jYXN0PFJlbmRlclRhYmxlUm93PihwYXJlbnQpLCAqY2hpbGQs
IGJlZm9yZUNoaWxkKS5hZGRDaGlsZCgqdGhpcywgV1RGTW92ZShjaGlsZCksIGJlZm9yZUNoaWxk
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChpczxSZW5kZXJSdWJ5UnVuPihw
YXJlbnQpKSB7CiAgICAgICAgIHJ1YnlSdW5JbnNlcnRDaGlsZChkb3duY2FzdDxSZW5kZXJSdWJ5
UnVuPihwYXJlbnQpLCBXVEZNb3ZlKGNoaWxkKSwgYmVmb3JlQ2hpbGQpOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlQnVpbGRlci5oCmluZGV4IDUzNmRlNjM5MDgzOTBjZWI5NjAxY2I3YTAxNmIzNWE2NjUyOTkw
MTcuLjI2MWY0YzE3YzE3YWQ1NjE5OTI5MDk1NjNlYTcxMGNhNDk2NDFhY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5o
CkBAIC00NSwxMSArNDUsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZW5kZXJUcmVlQnVpbGRl
ciogY3VycmVudCgpIHsgcmV0dXJuIHNfY3VycmVudDsgfQogCiBwcml2YXRlOgorICAgIGNsYXNz
IFRhYmxlOworCiAgICAgdm9pZCBydWJ5UnVuSW5zZXJ0Q2hpbGQoUmVuZGVyUnVieVJ1biYsIFJl
bmRlclB0cjxSZW5kZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKTsK
IAogICAgIFJlbmRlclZpZXcmIG1fdmlldzsKIAogICAgIFJlbmRlclRyZWVCdWlsZGVyKiBtX3By
ZXZpb3VzIHsgbnVsbHB0ciB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxUYWJsZT4gbV90YWJsZUJ1
aWxkZXI7CiAgICAgc3RhdGljIFJlbmRlclRyZWVCdWlsZGVyKiBzX2N1cnJlbnQ7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1
aWxkZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZUJ1aWxkZXJUYWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc5ZmZmZmU2NmQ4M2FhN2M1YWFiYjE0
Zjg0OGFjM2YwOTliNDQyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNwcApAQCAtMCwwICsxLDg1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRlclRyZWVC
dWlsZGVyVGFibGUuaCIKKworI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgorI2luY2x1ZGUg
IlJlbmRlclRhYmxlUm93LmgiCisjaW5jbHVkZSAiUmVuZGVyVHJlZUJ1aWxkZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitSZW5kZXJUcmVlQnVpbGRlcjo6VGFibGU6OlRhYmxlKFJlbmRl
clRyZWVCdWlsZGVyJiBidWlsZGVyKQorICAgIDogbV9idWlsZGVyKGJ1aWxkZXIpCit7Cit9CisK
K1JlbmRlckVsZW1lbnQmIFJlbmRlclRyZWVCdWlsZGVyOjpUYWJsZTo6ZmluZE9yQ3JlYXRlUGFy
ZW50Rm9yQ2hpbGQoUmVuZGVyVGFibGVSb3cmIHBhcmVudCwgY29uc3QgUmVuZGVyT2JqZWN0JiBj
aGlsZCwgUmVuZGVyT2JqZWN0KiYgYmVmb3JlQ2hpbGQpCit7CisgICAgaWYgKGlzPFJlbmRlclRh
YmxlQ2VsbD4oY2hpbGQpKQorICAgICAgICByZXR1cm4gcGFyZW50OworCisgICAgaWYgKGJlZm9y
ZUNoaWxkICYmICFiZWZvcmVDaGlsZC0+aXNBbm9ueW1vdXMoKSAmJiBiZWZvcmVDaGlsZC0+cGFy
ZW50KCkgPT0gJnBhcmVudCkgeworICAgICAgICBhdXRvKiBwcmV2aW91c1NpYmxpbmcgPSBiZWZv
cmVDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgICAgIGlmIChpczxSZW5kZXJUYWJsZUNl
bGw+KHByZXZpb3VzU2libGluZykgJiYgcHJldmlvdXNTaWJsaW5nLT5pc0Fub255bW91cygpKSB7
CisgICAgICAgICAgICBiZWZvcmVDaGlsZCA9IG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKnByZXZpb3VzU2libGluZyk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBhdXRvKiBsYXN0Q2hpbGQgPSBiZWZvcmVDaGlsZCA/IGJlZm9yZUNoaWxkIDog
cGFyZW50Lmxhc3RDZWxsKCk7CisgICAgaWYgKGxhc3RDaGlsZCkgeworICAgICAgICBpZiAoaXM8
UmVuZGVyVGFibGVDZWxsPigqbGFzdENoaWxkKSAmJiBsYXN0Q2hpbGQtPmlzQW5vbnltb3VzKCkg
JiYgIWxhc3RDaGlsZC0+aXNCZWZvcmVPckFmdGVyQ29udGVudCgpKSB7CisgICAgICAgICAgICBp
ZiAoYmVmb3JlQ2hpbGQgPT0gbGFzdENoaWxkKQorICAgICAgICAgICAgICAgIGJlZm9yZUNoaWxk
ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmxhc3RDaGlsZCkuZmlyc3RDaGlsZCgpOworICAg
ICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpsYXN0Q2hpbGQpOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gVHJ5IHRvIGZpbmQgYW4gYW5vbnltb3VzIGNvbnRhaW5lciBm
b3IgdGhlIGNoaWxkLgorICAgICAgICBpZiAoYXV0byogbGFzdENoaWxkUGFyZW50ID0gbGFzdENo
aWxkLT5wYXJlbnQoKSkgeworICAgICAgICAgICAgaWYgKGxhc3RDaGlsZFBhcmVudC0+aXNBbm9u
eW1vdXMoKSAmJiAhbGFzdENoaWxkUGFyZW50LT5pc0JlZm9yZU9yQWZ0ZXJDb250ZW50KCkpIHsK
KyAgICAgICAgICAgICAgICAvLyBJZiBiZWZvcmVDaGlsZCBpcyBpbnNpZGUgYW4gYW5vbnltb3Vz
IGNlbGwsIGluc2VydCBpbnRvIHRoZSBjZWxsLgorICAgICAgICAgICAgICAgIGlmICghaXM8UmVu
ZGVyVGFibGVDZWxsPigqbGFzdENoaWxkKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICps
YXN0Q2hpbGRQYXJlbnQ7CisgICAgICAgICAgICAgICAgLy8gSWYgYmVmb3JlQ2hpbGQgaXMgaW5z
aWRlIGFuIGFub255bW91cyByb3csIGluc2VydCBpbnRvIHRoZSByb3cuCisgICAgICAgICAgICAg
ICAgaWYgKGlzPFJlbmRlclRhYmxlUm93PigqbGFzdENoaWxkUGFyZW50KSkgeworICAgICAgICAg
ICAgICAgICAgICBhdXRvIG5ld0NlbGwgPSBSZW5kZXJUYWJsZUNlbGw6OmNyZWF0ZUFub255bW91
c1dpdGhQYXJlbnRSZW5kZXJlcihwYXJlbnQpOworICAgICAgICAgICAgICAgICAgICBhdXRvJiBj
ZWxsID0gKm5ld0NlbGw7CisgICAgICAgICAgICAgICAgICAgIG1fYnVpbGRlci5pbnNlcnRDaGls
ZCgqbGFzdENoaWxkUGFyZW50LCBXVEZNb3ZlKG5ld0NlbGwpLCBiZWZvcmVDaGlsZCk7CisgICAg
ICAgICAgICAgICAgICAgIGJlZm9yZUNoaWxkID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNlbGw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIGF1dG8gbmV3Q2VsbCA9IFJlbmRlclRhYmxlQ2VsbDo6Y3JlYXRlQW5v
bnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKHBhcmVudCk7CisgICAgYXV0byYgY2VsbCA9ICpuZXdD
ZWxsOworICAgIG1fYnVpbGRlci5pbnNlcnRDaGlsZChwYXJlbnQsIFdURk1vdmUobmV3Q2VsbCks
IGJlZm9yZUNoaWxkKTsKKyAgICBiZWZvcmVDaGlsZCA9IG51bGxwdHI7CisgICAgcmV0dXJuIGNl
bGw7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzZjZjZTZjZjBmZjA2
ZDI0N2QwMDY2MWVlZjExMzA2OTExMjhjZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5oCkBAIC0wLDAg
KzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlJlbmRlclRy
ZWVVcGRhdGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyRWxlbWVu
dDsKK2NsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlclRhYmxlUm93OworY2xhc3MgUmVu
ZGVyVHJlZUJ1aWxkZXI7CisKK2NsYXNzIFJlbmRlclRyZWVCdWlsZGVyOjpUYWJsZSB7CitwdWJs
aWM6CisgICAgVGFibGUoUmVuZGVyVHJlZUJ1aWxkZXImKTsKKworICAgIFJlbmRlckVsZW1lbnQm
IGZpbmRPckNyZWF0ZVBhcmVudEZvckNoaWxkKFJlbmRlclRhYmxlUm93JiBwYXJlbnQsIGNvbnN0
IFJlbmRlck9iamVjdCYgY2hpbGQsIFJlbmRlck9iamVjdComIGJlZm9yZUNoaWxkKTsKKworcHJp
dmF0ZToKKyAgICBSZW5kZXJUcmVlQnVpbGRlciYgbV9idWlsZGVyOworfTsKKworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>