<?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>157097</bug_id>
          
          <creation_ts>2016-04-27 12:18:34 -0700</creation_ts>
          <short_desc>[css-grid] Store auto-repeat information in style</short_desc>
          <delta_ts>2016-04-28 02:28:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60731</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1187903</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-04-27 12:18:34 -0700</bug_when>
    <thetext>[css-grid] Store auto-repeat information in style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187907</commentid>
    <comment_count>1</comment_count>
      <attachid>277526</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-04-27 12:27:23 -0700</bug_when>
    <thetext>Created attachment 277526
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187992</commentid>
    <comment_count>2</comment_count>
      <attachid>277526</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-27 15:48:11 -0700</bug_when>
    <thetext>Comment on attachment 277526
Patch

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

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1055
&gt; +    const Vector&lt;GridTrackSize&gt;&amp; trackSizes = isRowAxis ? style.gridColumns() : style.gridRows();
&gt; +    const Vector&lt;GridTrackSize&gt;&amp; autoRepeatTrackSizes = isRowAxis ? style.gridAutoRepeatColumns() : style.gridAutoRepeatRows();
&gt; +    const OrderedNamedGridLinesMap&amp; orderedNamedGridLines = isRowAxis ? style.orderedNamedGridColumnLines() : style.orderedNamedGridRowLines();

I think auto&amp; really works well to make code like this less wordy

&gt; Source/WebCore/css/StyleBuilderConverter.h:162
&gt; +    static bool createGridTrackList(CSSValue&amp;, Vector&lt;GridTrackSize&gt;&amp; trackSizes, NamedGridLinesMap&amp;, OrderedNamedGridLinesMap&amp;,
&gt; +        Vector&lt;GridTrackSize&gt;&amp; autoRepeatTrackSizes, NamedGridLinesMap&amp; autoRepeatNamedLines, OrderedNamedGridLinesMap&amp; autoRepeatOrderedNamedLines,
&gt; +        unsigned&amp; autoRepeatInsertionPoint, AutoRepeatType&amp;, StyleResolver&amp;);

There are so many arguments here now that I think we may need to make some kind of class instead of just a function. With 10 different arguments that all are references, so all seem to be in/out, I think we are really looking at too many. Maybe this could still be a function, but return a struct with all the return valeus instead of using out arguments.

&gt; Source/WebCore/css/StyleBuilderConverter.h:864
&gt; +        NamedGridLinesMap::AddResult result = namedGridLines.add(namedGridLine, Vector&lt;unsigned&gt;());

Should either use auto here, or combine this with the next line.

&gt; Source/WebCore/css/StyleBuilderConverter.h:866
&gt; +        OrderedNamedGridLinesMap::AddResult orderedResult = orderedNamedGridLines.add(currentNamedGridLine, Vector&lt;String&gt;());

Should either use auto here, or combine this with the next line.

&gt; Source/WebCore/rendering/style/StyleGridData.h:108
&gt; +    AutoRepeatType m_autoRepeatRowsType;
&gt;  private:

WebKit style calls for a blank line here before private</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188188</commentid>
    <comment_count>3</comment_count>
      <attachid>277608</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-04-28 02:17:21 -0700</bug_when>
    <thetext>Created attachment 277608
Patch for landing

Added a new struct which stores all the tracks data. Also created a new macro to store all the track info in style suitable for both rows and columns</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188190</commentid>
    <comment_count>4</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-04-28 02:28:40 -0700</bug_when>
    <thetext>Landed on r200182</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277526</attachid>
            <date>2016-04-27 12:27:23 -0700</date>
            <delta_ts>2016-04-28 02:17:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157097-20160427212751.patch</filename>
            <type>text/plain</type>
            <size>27299</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYxZWU2OTkzYzNhZDI1
NzkxODljNTI4YjdjZDlhNzE0Y2FhYTA4ZS4uZGY5OTUxYTg3OTY3MDUzNWFkOTBhZDFlY2JiZmVj
MGM5OTVjZWE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE2LTA0LTI3ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtjc3MtZ3Jp
ZF0gU3RvcmUgYXV0by1yZXBlYXQgaW5mb3JtYXRpb24gaW4gc3R5bGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzA5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIHNlY29uZCBzdGVw
IHRvIGltcGxlbWVudCBhdXRvLXJlcGVhdC4gVGhpcyBwYXRjaCBwcm92aWRlcyB0aGUgbmVjZXNz
YXJ5CisgICAgICAgIG1hY2hpbmVyeSB0byBzdG9yZSB0aGUgYXV0by1yZXBlYXQgZGF0YSBleHRy
YWN0ZWQgYnkgdGhlIHBhcnNlciBpbiB0aGUgUmVuZGVyU3R5bGUgY2xhc3MuIFdlCisgICAgICAg
IGFyZSBub3QgZG9pbmcgYW55dGhpbmcgd2l0aCB0aGF0IGluZm9ybWF0aW9uIHlldCwgaXQgd2ls
bCBiZSB1c2VkIGxhdGVyIHRvIGNvbXB1dGUgdGhlCisgICAgICAgIG51bWJlciBvZiBhdXRvLXJl
cGVhdCB0cmFja3MgaW4gYSBmb2xsb3cgdXAgcGF0Y2guCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IHJlcXVpcmVkIGFzIHRoZXJlIGlzIG5vIGNoYW5nZSBpbiBiZWhhdmlvciB5ZXQgKHdlJ3JlIGp1
c3Qgc3RvcmluZyB0aGUgaW5mbyB3ZQorICAgICAgICBhbHJlYWR5IGdldCBmcm9tIHRoZSBwYXJz
ZXIpLgorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckdyaWRUcmFja0xpc3QpOiBDaGVjayBhbHNvIHRoYXQg
dGhlIGF1dG8tcmVwZWF0IGxpc3Qgb2YgdHJhY2tzIGlzIGVtcHR5LgorICAgICAgICAqIGNzcy9T
dHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdyaWRMaW5l
TmFtZXNMaXN0KTogUmVmYWN0b3JlZCBmcm9tIGNyZWF0ZUdyaWRUcmFja0xpc3QuCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QpOiBF
eHRyYWN0IGF1dG8tcmVwZWF0IGRhdGEgZnJvbSB0aGUKKyAgICAgICAgcGFyc2VyLgorICAgICAg
ICAqIGNzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdEdyaWRUZW1wbGF0ZUNvbHVtbnMpOiBTdG9yZSBh
dXRvLXJlcGVhdCBkYXRhCisgICAgICAgIGluIFJlbmRlclN0eWxlLgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0R3JpZFRlbXBsYXRlUm93cyk6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOiBBZGQgbWV0
aG9kcyBhbmQgYXR0cmlidXRlcyBmb3IgYXV0by1yZXBlYXQgZGF0YS4KKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDogTmV3IEF1dG9SZXBlYXRUeXBlIGVu
dW1lcmF0ZWQgdHlwZS4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdyaWREYXRhOjpTdHlsZUdyaWREYXRhKTogQWRk
IGF1dG8tcmVwZWF0IGRhdGEuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR3JpZERhdGE6Om9wZXJhdG9yPT0pOiBDaGVj
ayBhbHNvIGF1dG8tcmVwZWF0IGRhdGEuCisKIDIwMTYtMDQtMTkgIEFudHRpIEtvaXZpc3RvICA8
YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgRm9udFNlbGVjdG9yQ2xpZW50IHRvIGEg
ZmlsZSBvZiBpdHMgb3duCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGRiNzNjMWI5ODZmY2RmMTNhMjE2OGE0NmRhZTU0NjFi
NGQ3NWI1ZmQuLjkxODdkNTcwNWU3MTk5MWEwZjJkNzJhMmY5MjEzNzFhODhmNjk1MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CkBAIC0xMDQ5LDEyICsxMDQ5LDE0IEBAIHN0YXRpYyB2b2lkIGFkZFZhbHVlc0Zvck5hbWVkR3Jp
ZExpbmVzQXRJbmRleChjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIG9yCiAKIHN0YXRp
YyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpCiB7Ci0gICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpemVz
ID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzdHlsZS5ncmlkQ29sdW1ucygpIDogc3R5bGUu
Z3JpZFJvd3MoKTsKLSAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIG9yZGVyZWRO
YW1lZEdyaWRMaW5lcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3R5bGUub3JkZXJlZE5h
bWVkR3JpZENvbHVtbkxpbmVzKCkgOiBzdHlsZS5vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoKTsK
KyAgICBib29sIGlzUm93QXhpcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOworICAgIGNvbnN0
IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTaXplcyA9IGlzUm93QXhpcyA/IHN0eWxlLmdy
aWRDb2x1bW5zKCkgOiBzdHlsZS5ncmlkUm93cygpOworICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJh
Y2tTaXplPiYgYXV0b1JlcGVhdFRyYWNrU2l6ZXMgPSBpc1Jvd0F4aXMgPyBzdHlsZS5ncmlkQXV0
b1JlcGVhdENvbHVtbnMoKSA6IHN0eWxlLmdyaWRBdXRvUmVwZWF0Um93cygpOworICAgIGNvbnN0
IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZExpbmVzID0gaXNSb3dB
eGlzID8gc3R5bGUub3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkgOiBzdHlsZS5vcmRlcmVk
TmFtZWRHcmlkUm93TGluZXMoKTsKICAgICBib29sIGlzUmVuZGVyR3JpZCA9IGlzPFJlbmRlckdy
aWQ+KHJlbmRlcmVyKTsKIAogICAgIC8vIEhhbmRsZSB0aGUgJ25vbmUnIGNhc2UuCi0gICAgYm9v
bCB0cmFja0xpc3RJc0VtcHR5ID0gdHJhY2tTaXplcy5pc0VtcHR5KCk7CisgICAgYm9vbCB0cmFj
a0xpc3RJc0VtcHR5ID0gdHJhY2tTaXplcy5pc0VtcHR5KCkgJiYgYXV0b1JlcGVhdFRyYWNrU2l6
ZXMuaXNFbXB0eSgpOwogICAgIGlmIChpc1JlbmRlckdyaWQgJiYgdHJhY2tMaXN0SXNFbXB0eSkg
ewogICAgICAgICAvLyBGb3IgZ3JpZHMgd2Ugc2hvdWxkIGNvbnNpZGVyIGV2ZXJ5IGxpc3RlZCB0
cmFjaywgd2hldGhlciBpbXBsaWNpdGx5IG9yIGV4cGxpY2l0bHkgY3JlYXRlZC4gSWYgd2UgZG9u
J3QgaGF2ZQogICAgICAgICAvLyBhbnkgZXhwbGljaXQgdHJhY2sgYW5kIHRoZXJlIGFyZSBubyBj
aGlsZHJlbiB0aGVuIHRoZXJlIGFyZSBubyBpbXBsaWNpdCB0cmFja3MuIFdlIGNhbm5vdCBzaW1w
bHkgY2hlY2sgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVy
Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgK
aW5kZXggZjlkYTlkYTIyOTBkZTdiNmJkMmYxNmYwOWE3Mjk1MjljYWQzYjBkMy4uM2MyNzgxYWYw
MDkxOGVkZDkzMWNiMmZlMmQ5NzAxMzVhMDBjOTNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNTU0Nv
bnRlbnREaXN0cmlidXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGZWF0dXJlVmFsdWUu
aCIKICNpbmNsdWRlICJDU1NGdW5jdGlvblZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTR3JpZEF1dG9S
ZXBlYXRWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0dyaWRMaW5lTmFtZXNWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbWFnZUdlbmVy
YXRvclZhbHVlLmgiCkBAIC0xNTYsNyArMTU3LDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ1NT
X0dSSURfTEFZT1VUKQogICAgIHN0YXRpYyBHcmlkTGVuZ3RoIGNyZWF0ZUdyaWRUcmFja0JyZWFk
dGgoQ1NTUHJpbWl0aXZlVmFsdWUmLCBTdHlsZVJlc29sdmVyJik7CiAgICAgc3RhdGljIEdyaWRU
cmFja1NpemUgY3JlYXRlR3JpZFRyYWNrU2l6ZShDU1NWYWx1ZSYsIFN0eWxlUmVzb2x2ZXImKTsK
LSAgICBzdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tMaXN0KENTU1ZhbHVlJiwgVmVjdG9yPEdy
aWRUcmFja1NpemU+JiB0cmFja1NpemVzLCBOYW1lZEdyaWRMaW5lc01hcCYsIE9yZGVyZWROYW1l
ZEdyaWRMaW5lc01hcCYsIFN0eWxlUmVzb2x2ZXImKTsKKyAgICBzdGF0aWMgYm9vbCBjcmVhdGVH
cmlkVHJhY2tMaXN0KENTU1ZhbHVlJiwgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpemVz
LCBOYW1lZEdyaWRMaW5lc01hcCYsIE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYsCisgICAgICAg
IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgYXV0b1JlcGVhdFRyYWNrU2l6ZXMsIE5hbWVkR3JpZExp
bmVzTWFwJiBhdXRvUmVwZWF0TmFtZWRMaW5lcywgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBh
dXRvUmVwZWF0T3JkZXJlZE5hbWVkTGluZXMsCisgICAgICAgIHVuc2lnbmVkJiBhdXRvUmVwZWF0
SW5zZXJ0aW9uUG9pbnQsIEF1dG9SZXBlYXRUeXBlJiwgU3R5bGVSZXNvbHZlciYpOwogICAgIHN0
YXRpYyBib29sIGNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSYsIEdyaWRQb3NpdGlvbiYpOwog
ICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEo
Y29uc3QgTmFtZWRHcmlkQXJlYU1hcCYsIE5hbWVkR3JpZExpbmVzTWFwJiwgR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uKTsKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQpAQCAtODUy
LDcgKzg1NSwyMCBAQCBpbmxpbmUgR3JpZFRyYWNrU2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNyZWF0ZUdyaWRUcmFja1NpemUoQ1NTVmFsdWUmIHZhbHVlLAogICAgIHJldHVybiBHcmlkVHJh
Y2tTaXplKG1pblRyYWNrQnJlYWR0aCwgbWF4VHJhY2tCcmVhZHRoKTsKIH0KIAotaW5saW5lIGJv
b2wgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KENTU1ZhbHVlJiB2
YWx1ZSwgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpemVzLCBOYW1lZEdyaWRMaW5lc01h
cCYgbmFtZWRHcmlkTGluZXMsIE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVk
R3JpZExpbmVzLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQorc3RhdGljIHZvaWQgY3Jl
YXRlR3JpZExpbmVOYW1lc0xpc3QoY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCB1bnNpZ25lZCBjdXJy
ZW50TmFtZWRHcmlkTGluZSwgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZExpbmVzLCBPcmRl
cmVkTmFtZWRHcmlkTGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRMaW5lcykKK3sKKyAgICBBU1NF
UlQodmFsdWUuaXNHcmlkTGluZU5hbWVzVmFsdWUoKSk7CisKKyAgICBmb3IgKGF1dG8mIG5hbWVk
R3JpZExpbmVWYWx1ZSA6IGRvd25jYXN0PENTU0dyaWRMaW5lTmFtZXNWYWx1ZT4odmFsdWUpKSB7
CisgICAgICAgIFN0cmluZyBuYW1lZEdyaWRMaW5lID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KG5hbWVkR3JpZExpbmVWYWx1ZS5nZXQoKSkuZ2V0U3RyaW5nVmFsdWUoKTsKKyAgICAgICAg
TmFtZWRHcmlkTGluZXNNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBuYW1lZEdyaWRMaW5lcy5hZGQo
bmFtZWRHcmlkTGluZSwgVmVjdG9yPHVuc2lnbmVkPigpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS5hcHBlbmQoY3VycmVudE5hbWVkR3JpZExpbmUpOworICAgICAgICBPcmRlcmVk
TmFtZWRHcmlkTGluZXNNYXA6OkFkZFJlc3VsdCBvcmRlcmVkUmVzdWx0ID0gb3JkZXJlZE5hbWVk
R3JpZExpbmVzLmFkZChjdXJyZW50TmFtZWRHcmlkTGluZSwgVmVjdG9yPFN0cmluZz4oKSk7Cisg
ICAgICAgIG9yZGVyZWRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChuYW1lZEdyaWRMaW5l
KTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRl
R3JpZFRyYWNrTGlzdChDU1NWYWx1ZSYgdmFsdWUsIFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJh
Y2tTaXplcywgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZExpbmVzLCBPcmRlcmVkTmFtZWRH
cmlkTGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRMaW5lcywgVmVjdG9yPEdyaWRUcmFja1NpemU+
JiBhdXRvUmVwZWF0VHJhY2tTaXplcywgTmFtZWRHcmlkTGluZXNNYXAmIGF1dG9SZXBlYXROYW1l
ZEdyaWRMaW5lcywgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBhdXRvUmVwZWF0T3JkZXJlZE5h
bWVkR3JpZExpbmVzLCB1bnNpZ25lZCYgYXV0b1JlcGVhdEluc2VydGlvblBvaW50LCBBdXRvUmVw
ZWF0VHlwZSYgYXV0b1JlcGVhdFR5cGUsIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7
CiAgICAgLy8gSGFuZGxlICdub25lJy4KICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKSkKQEAgLTg2NCwxMyArODgwLDI1IEBAIGlubGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y3JlYXRlR3JpZFRyYWNrTGlzdChDU1NWYWx1ZSYgdmFsdWUsIFZlY3RvcjxHCiAgICAg
dW5zaWduZWQgY3VycmVudE5hbWVkR3JpZExpbmUgPSAwOwogICAgIGZvciAoYXV0byYgY3VycmVu
dFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAgaWYgKGlz
PENTU0dyaWRMaW5lTmFtZXNWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKSkgewotICAgICAgICAg
ICAgZm9yIChhdXRvJiBjdXJyZW50R3JpZExpbmVOYW1lIDogZG93bmNhc3Q8Q1NTR3JpZExpbmVO
YW1lc1ZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5n
IG5hbWVkR3JpZExpbmUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudEdyaWRM
aW5lTmFtZS5nZXQoKSkuZ2V0U3RyaW5nVmFsdWUoKTsKLSAgICAgICAgICAgICAgICBOYW1lZEdy
aWRMaW5lc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG5hbWVkR3JpZExpbmVzLmFkZChuYW1lZEdy
aWRMaW5lLCBWZWN0b3I8dW5zaWduZWQ+KCkpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuYXBwZW5kKGN1cnJlbnROYW1lZEdyaWRMaW5lKTsKLSAgICAgICAgICAgICAg
ICBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXA6OkFkZFJlc3VsdCBvcmRlcmVkUmVzdWx0ID0gb3Jk
ZXJlZE5hbWVkR3JpZExpbmVzLmFkZChjdXJyZW50TmFtZWRHcmlkTGluZSwgVmVjdG9yPFN0cmlu
Zz4oKSk7Ci0gICAgICAgICAgICAgICAgb3JkZXJlZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBw
ZW5kKG5hbWVkR3JpZExpbmUpOworICAgICAgICAgICAgY3JlYXRlR3JpZExpbmVOYW1lc0xpc3Qo
Y3VycmVudFZhbHVlLmdldCgpLCBjdXJyZW50TmFtZWRHcmlkTGluZSwgbmFtZWRHcmlkTGluZXMs
IG9yZGVyZWROYW1lZEdyaWRMaW5lcyk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChpczxDU1NHcmlkQXV0b1JlcGVhdFZhbHVlPihjdXJyZW50VmFsdWUp
KSB7CisgICAgICAgICAgICBBU1NFUlQoYXV0b1JlcGVhdFRyYWNrU2l6ZXMuaXNFbXB0eSgpKTsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRJbmRleCA9IDA7CisgICAgICAgICAgICBD
U1NWYWx1ZUlEIGF1dG9SZXBlYXRJRCA9IGRvd25jYXN0PENTU0dyaWRBdXRvUmVwZWF0VmFsdWU+
KGN1cnJlbnRWYWx1ZS5nZXQoKSkuYXV0b1JlcGVhdElEKCk7CisgICAgICAgICAgICBBU1NFUlQo
YXV0b1JlcGVhdElEID09IENTU1ZhbHVlQXV0b0ZpbGwgfHwgYXV0b1JlcGVhdElEID09IENTU1Zh
bHVlQXV0b0ZpdCk7CisgICAgICAgICAgICBhdXRvUmVwZWF0VHlwZSA9IGF1dG9SZXBlYXRJRCA9
PSBDU1NWYWx1ZUF1dG9GaWxsID8gQXV0b0ZpbGwgOiBBdXRvRml0OworICAgICAgICAgICAgZm9y
IChhdXRvJiBhdXRvUmVwZWF0VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KGN1cnJlbnRW
YWx1ZS5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXM8Q1NTR3JpZExpbmVOYW1lc1Zh
bHVlPihhdXRvUmVwZWF0VmFsdWUuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZUdyaWRMaW5lTmFtZXNMaXN0KGF1dG9SZXBlYXRWYWx1ZS5nZXQoKSwgYXV0b1JlcGVhdEluZGV4
LCBhdXRvUmVwZWF0TmFtZWRHcmlkTGluZXMsIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkTGlu
ZXMpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgKythdXRvUmVwZWF0SW5kZXg7CisgICAgICAgICAgICAgICAgYXV0b1Jl
cGVhdFRyYWNrU2l6ZXMuYXBwZW5kKGNyZWF0ZUdyaWRUcmFja1NpemUoYXV0b1JlcGVhdFZhbHVl
LmdldCgpLCBzdHlsZVJlc29sdmVyKSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRv
UmVwZWF0SW5zZXJ0aW9uUG9pbnQgPSBjdXJyZW50TmFtZWRHcmlkTGluZSsrOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtODgwLDcgKzkwOCw3IEBAIGlubGluZSBib29s
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrTGlzdChDU1NWYWx1ZSYgdmFs
dWUsIFZlY3RvcjxHCiAKICAgICAvLyBUaGUgcGFyc2VyIHNob3VsZCBoYXZlIHJlamVjdGVkIGFu
eSA8dHJhY2stbGlzdD4gd2l0aG91dCBhbnkgPHRyYWNrLXNpemU+IGFzCiAgICAgLy8gdGhpcyBp
cyBub3QgY29uZm9ybWFudCB0byB0aGUgc3ludGF4LgotICAgIEFTU0VSVCghdHJhY2tTaXplcy5p
c0VtcHR5KCkpOworICAgIEFTU0VSVCghdHJhY2tTaXplcy5pc0VtcHR5KCkgfHwgIWF1dG9SZXBl
YXRUcmFja1NpemVzLmlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCAyMTZhOTRhYzYzMGJhYTYyODMzNDE5
MjliNjVkYzY4MzY1YzVhYWEwLi5iNzk5MTg5MWM0OGU5OWNmZWFkYmQ3NjQyNzVmMDQ3NTE2NjJk
MzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC0xNjU0LDcg
KzE2NTQsMTIgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Vi
a2l0R3JpZFRlbXBsYXRlQ29sdW1ucyhTdHlsZVJlc29sdmUKICAgICBWZWN0b3I8R3JpZFRyYWNr
U2l6ZT4gdHJhY2tTaXplczsKICAgICBOYW1lZEdyaWRMaW5lc01hcCBuYW1lZEdyaWRMaW5lczsK
ICAgICBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAgb3JkZXJlZE5hbWVkR3JpZExpbmVzOwotICAg
IGlmICghU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCB0
cmFja1NpemVzLCBuYW1lZEdyaWRMaW5lcywgb3JkZXJlZE5hbWVkR3JpZExpbmVzLCBzdHlsZVJl
c29sdmVyKSkKKyAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gYXV0b1JlcGVhdFRyYWNrU2l6ZXM7
CisgICAgTmFtZWRHcmlkTGluZXNNYXAgYXV0b1JlcGVhdE5hbWVkR3JpZExpbmVzOworICAgIE9y
ZGVyZWROYW1lZEdyaWRMaW5lc01hcCBhdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZExpbmVzOwor
ICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRJbnNlcnRpb25Qb2ludCA9IFJlbmRlclN0eWxlOjppbml0
aWFsR3JpZEF1dG9SZXBlYXRJbnNlcnRpb25Qb2ludCgpOworICAgIEF1dG9SZXBlYXRUeXBlIGF1
dG9SZXBlYXRUeXBlID0gUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUoKTsK
KyAgICBpZiAoIVN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrTGlzdCh2YWx1
ZSwgdHJhY2tTaXplcywgbmFtZWRHcmlkTGluZXMsIG9yZGVyZWROYW1lZEdyaWRMaW5lcywgYXV0
b1JlcGVhdFRyYWNrU2l6ZXMsIGF1dG9SZXBlYXROYW1lZEdyaWRMaW5lcywgYXV0b1JlcGVhdE9y
ZGVyZWROYW1lZEdyaWRMaW5lcywgYXV0b1JlcGVhdEluc2VydGlvblBvaW50LCBhdXRvUmVwZWF0
VHlwZSwgc3R5bGVSZXNvbHZlcikpCiAgICAgICAgIHJldHVybjsKICAgICBjb25zdCBOYW1lZEdy
aWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhcyA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+bmFtZWRH
cmlkQXJlYSgpOwogICAgIGlmICghbmFtZWRHcmlkQXJlYXMuaXNFbXB0eSgpKQpAQCAtMTY2Myw2
ICsxNjY4LDExIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdl
YmtpdEdyaWRUZW1wbGF0ZUNvbHVtbnMoU3R5bGVSZXNvbHZlCiAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRHcmlkQ29sdW1ucyh0cmFja1NpemVzKTsKICAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldE5hbWVkR3JpZENvbHVtbkxpbmVzKG5hbWVkR3JpZExpbmVzKTsKICAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhvcmRlcmVk
TmFtZWRHcmlkTGluZXMpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0R3JpZEF1dG9S
ZXBlYXRDb2x1bW5zKGF1dG9SZXBlYXRUcmFja1NpemVzKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldEdyaWRBdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KGF1dG9SZXBlYXRJ
bnNlcnRpb25Qb2ludCk7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRBdXRvUmVwZWF0
TmFtZWRHcmlkQ29sdW1uTGluZXMoYXV0b1JlcGVhdE5hbWVkR3JpZExpbmVzKTsKKyAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldEF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGlu
ZXMoYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRMaW5lcyk7CisgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRHcmlkQXV0b1JlcGVhdENvbHVtbnNUeXBlKGF1dG9SZXBlYXRUeXBlKTsKIH0K
IAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxXZWJraXRHcmlk
VGVtcGxhdGVSb3dzKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCkBAIC0xNjg0LDcgKzE2
OTQsMTIgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0
R3JpZFRlbXBsYXRlUm93cyhTdHlsZVJlc29sdmVyJgogICAgIFZlY3RvcjxHcmlkVHJhY2tTaXpl
PiB0cmFja1NpemVzOwogICAgIE5hbWVkR3JpZExpbmVzTWFwIG5hbWVkR3JpZExpbmVzOwogICAg
IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCBvcmRlcmVkTmFtZWRHcmlkTGluZXM7Ci0gICAgaWYg
KCFTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QodmFsdWUsIHRyYWNr
U2l6ZXMsIG5hbWVkR3JpZExpbmVzLCBvcmRlcmVkTmFtZWRHcmlkTGluZXMsIHN0eWxlUmVzb2x2
ZXIpKQorICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBhdXRvUmVwZWF0VHJhY2tTaXplczsKKyAg
ICBOYW1lZEdyaWRMaW5lc01hcCBhdXRvUmVwZWF0TmFtZWRHcmlkTGluZXM7CisgICAgT3JkZXJl
ZE5hbWVkR3JpZExpbmVzTWFwIGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkTGluZXM7CisgICAg
dW5zaWduZWQgYXV0b1JlcGVhdEluc2VydGlvblBvaW50ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxH
cmlkQXV0b1JlcGVhdEluc2VydGlvblBvaW50KCk7CisgICAgQXV0b1JlcGVhdFR5cGUgYXV0b1Jl
cGVhdFR5cGUgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0VHlwZSgpOworICAg
IGlmICghU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCB0
cmFja1NpemVzLCBuYW1lZEdyaWRMaW5lcywgb3JkZXJlZE5hbWVkR3JpZExpbmVzLCBhdXRvUmVw
ZWF0VHJhY2tTaXplcywgYXV0b1JlcGVhdE5hbWVkR3JpZExpbmVzLCBhdXRvUmVwZWF0T3JkZXJl
ZE5hbWVkR3JpZExpbmVzLCBhdXRvUmVwZWF0SW5zZXJ0aW9uUG9pbnQsIGF1dG9SZXBlYXRUeXBl
LCBzdHlsZVJlc29sdmVyKSkKICAgICAgICAgcmV0dXJuOwogICAgIGNvbnN0IE5hbWVkR3JpZEFy
ZWFNYXAmIG5hbWVkR3JpZEFyZWFzID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5uYW1lZEdyaWRB
cmVhKCk7CiAgICAgaWYgKCFuYW1lZEdyaWRBcmVhcy5pc0VtcHR5KCkpCkBAIC0xNjkzLDYgKzE3
MDgsMTEgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0
R3JpZFRlbXBsYXRlUm93cyhTdHlsZVJlc29sdmVyJgogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+c2V0R3JpZFJvd3ModHJhY2tTaXplcyk7CiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5z
ZXROYW1lZEdyaWRSb3dMaW5lcyhuYW1lZEdyaWRMaW5lcyk7CiAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMob3JkZXJlZE5hbWVkR3JpZExpbmVz
KTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEdyaWRBdXRvUmVwZWF0Um93cyhhdXRv
UmVwZWF0VHJhY2tTaXplcyk7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRHcmlkQXV0
b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludChhdXRvUmVwZWF0SW5zZXJ0aW9uUG9pbnQpOworICAg
IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0QXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKGF1
dG9SZXBlYXROYW1lZEdyaWRMaW5lcyk7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRB
dXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKGF1dG9SZXBlYXRPcmRlcmVkTmFtZWRH
cmlkTGluZXMpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0R3JpZEF1dG9SZXBlYXRS
b3dzVHlwZShhdXRvUmVwZWF0VHlwZSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKENTU19HUklEX0xB
WU9VVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApp
bmRleCAyYWRiMjlmODdjZDdjNTU5M2I0NmIwMTQ0NTI5YWMwYjRmOGRlOGNlLi41ODA2OTljNDUw
YjNhZTcwYzA3ZTgzZjA1NDcxMDMyYWM3ZDgwN2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtOTQwLDEwICs5NDAsMjAgQEAgcHVibGljOgog
I2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1Np
emU+JiBncmlkQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2dyaWQtPm1fZ3JpZENvbHVtbnM7IH0KICAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4m
IGdyaWRSb3dzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+
bV9ncmlkUm93czsgfQorICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgZ3JpZEF1dG9S
ZXBlYXRDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3Jp
ZC0+bV9ncmlkQXV0b1JlcGVhdENvbHVtbnM7IH0KKyAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNr
U2l6ZT4mIGdyaWRBdXRvUmVwZWF0Um93cygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9SZXBlYXRSb3dzOyB9CisgICAgdW5zaWduZWQgZ3Jp
ZEF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQ7
IH0KKyAgICB1bnNpZ25lZCBncmlkQXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fYXV0b1JlcGVhdFJvd3NJ
bnNlcnRpb25Qb2ludDsgfQorICAgIEF1dG9SZXBlYXRUeXBlIGdyaWRBdXRvUmVwZWF0Q29sdW1u
c1R5cGUoKSBjb25zdCAgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9h
dXRvUmVwZWF0Q29sdW1uc1R5cGU7IH0KKyAgICBBdXRvUmVwZWF0VHlwZSBncmlkQXV0b1JlcGVh
dFJvd3NUeXBlKCkgY29uc3QgIHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQt
Pm1fYXV0b1JlcGVhdFJvd3NUeXBlOyB9CiAgICAgY29uc3QgTmFtZWRHcmlkTGluZXNNYXAmIG5h
bWVkR3JpZENvbHVtbkxpbmVzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZ3JpZC0+bV9uYW1lZEdyaWRDb2x1bW5MaW5lczsgfQogICAgIGNvbnN0IE5hbWVkR3JpZExp
bmVzTWFwJiBuYW1lZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2dyaWQtPm1fbmFtZWRHcmlkUm93TGluZXM7IH0KICAgICBjb25zdCBPcmRlcmVk
TmFtZWRHcmlkTGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fb3JkZXJlZE5hbWVkR3JpZENv
bHVtbkxpbmVzOyB9CiAgICAgY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVk
TmFtZWRHcmlkUm93TGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9ncmlkLT5tX29yZGVyZWROYW1lZEdyaWRSb3dMaW5lczsgfQorICAgIGNvbnN0IE5hbWVkR3Jp
ZExpbmVzTWFwJiBhdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1
bW5MaW5lczsgfQorICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBhdXRvUmVwZWF0TmFtZWRH
cmlkUm93TGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlk
LT5tX2F1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lczsgfQorICAgIGNvbnN0IE9yZGVyZWROYW1l
ZEdyaWRMaW5lc01hcCYgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fYXV0b1JlcGVhdE9y
ZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lczsgfQorICAgIGNvbnN0IE9yZGVyZWROYW1lZEdyaWRM
aW5lc01hcCYgYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fYXV0b1JlcGVhdE9yZGVyZWROYW1l
ZEdyaWRSb3dMaW5lczsgfQogICAgIGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIG5hbWVkR3JpZEFy
ZWEoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX25hbWVk
R3JpZEFyZWE7IH0KICAgICBzaXplX3QgbmFtZWRHcmlkQXJlYVJvd0NvdW50KCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9uYW1lZEdyaWRBcmVhUm93Q291
bnQ7IH0KICAgICBzaXplX3QgbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9uYW1lZEdyaWRBcmVhQ29sdW1uQ291
bnQ7IH0KQEAgLTE1MzcsMTAgKzE1NDcsMjAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0R3JpZEF1
dG9Sb3dzKGNvbnN0IEdyaWRUcmFja1NpemUmIGxlbmd0aCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2dyaWRBdXRvUm93cywgbGVuZ3RoKTsgfQogICAg
IHZvaWQgc2V0R3JpZENvbHVtbnMoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBsZW5ndGhz
KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fZ3JpZENv
bHVtbnMsIGxlbmd0aHMpOyB9CiAgICAgdm9pZCBzZXRHcmlkUm93cyhjb25zdCBWZWN0b3I8R3Jp
ZFRyYWNrU2l6ZT4mIGxlbmd0aHMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1fZ3JpZCwgbV9ncmlkUm93cywgbGVuZ3Rocyk7IH0KKyAgICB2b2lkIHNldEdyaWRBdXRv
UmVwZWF0Q29sdW1ucyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGxlbmd0aHMpIHsgU0VU
X05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9ncmlkQXV0b1JlcGVh
dENvbHVtbnMsIGxlbmd0aHMpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdFJvd3MoY29u
c3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBsZW5ndGhzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fZ3JpZEF1dG9SZXBlYXRSb3dzLCBsZW5ndGhzKTsg
fQorICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoY29uc3Qg
dW5zaWduZWQgaW5zZXJ0aW9uUG9pbnQpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50LCBpbnNlcnRp
b25Qb2ludCk7IH0KKyAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50
KGNvbnN0IHVuc2lnbmVkIGluc2VydGlvblBvaW50KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCwgaW5z
ZXJ0aW9uUG9pbnQpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdENvbHVtbnNUeXBlKGNv
bnN0IEF1dG9SZXBlYXRUeXBlIGF1dG9SZXBlYXRUeXBlKSB7IFNFVF9ORVNURURfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fYXV0b1JlcGVhdENvbHVtbnNUeXBlLCBhdXRvUmVw
ZWF0VHlwZSk7IH0KKyAgICB2b2lkIHNldEdyaWRBdXRvUmVwZWF0Um93c1R5cGUoY29uc3QgQXV0
b1JlcGVhdFR5cGUgYXV0b1JlcGVhdFR5cGUpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0Um93c1R5cGUsIGF1dG9SZXBlYXRUeXBlKTsg
fQogICAgIHZvaWQgc2V0TmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNN
YXAmIG5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX2dyaWQsIG1fbmFtZWRHcmlkQ29sdW1uTGluZXMsIG5hbWVkR3JpZENvbHVtbkxp
bmVzKTsgfQogICAgIHZvaWQgc2V0TmFtZWRHcmlkUm93TGluZXMoY29uc3QgTmFtZWRHcmlkTGlu
ZXNNYXAmIG5hbWVkR3JpZFJvd0xpbmVzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX2dyaWQsIG1fbmFtZWRHcmlkUm93TGluZXMsIG5hbWVkR3JpZFJvd0xpbmVzKTsg
fQogICAgIHZvaWQgc2V0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0IE9yZGVyZWRO
YW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNU
RURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fb3JkZXJlZE5hbWVkR3JpZENv
bHVtbkxpbmVzLCBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMpOyB9CiAgICAgdm9pZCBzZXRP
cmRlcmVkTmFtZWRHcmlkUm93TGluZXMoY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBv
cmRlcmVkTmFtZWRHcmlkUm93TGluZXMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fZ3JpZCwgbV9vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMsIG9yZGVyZWROYW1lZEdy
aWRSb3dMaW5lcyk7IH0KKyAgICB2b2lkIHNldEF1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5l
cyhjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkQ29sdW1uTGluZXMpIHsgU0VUX05F
U1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0TmFtZWRH
cmlkQ29sdW1uTGluZXMsIG5hbWVkR3JpZENvbHVtbkxpbmVzKTsgfQorICAgIHZvaWQgc2V0QXV0
b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdy
aWRSb3dMaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlk
LCBtX2F1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcywgbmFtZWRHcmlkUm93TGluZXMpOyB9Cisg
ICAgdm9pZCBzZXRBdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKGNvbnN0IE9y
ZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNF
VF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fYXV0b1JlcGVhdE9y
ZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcywgb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKTsg
fQorICAgIHZvaWQgc2V0QXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhjb25zdCBP
cmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcykgeyBTRVRf
TkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2F1dG9SZXBlYXRPcmRl
cmVkTmFtZWRHcmlkUm93TGluZXMsIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyk7IH0KICAgICB2
b2lkIHNldE5hbWVkR3JpZEFyZWEoY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgbmFtZWRHcmlkQXJl
YSkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX25hbWVk
R3JpZEFyZWEsIG5hbWVkR3JpZEFyZWEpOyB9CiAgICAgdm9pZCBzZXROYW1lZEdyaWRBcmVhUm93
Q291bnQoc2l6ZV90IHJvd0NvdW50KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX2dyaWQsIG1fbmFtZWRHcmlkQXJlYVJvd0NvdW50LCByb3dDb3VudCk7IH0KICAgICB2
b2lkIHNldE5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChzaXplX3QgY29sdW1uQ291bnQpIHsgU0VU
X05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9uYW1lZEdyaWRBcmVh
Q29sdW1uQ291bnQsIGNvbHVtbkNvdW50KTsgfQpAQCAtMjA1MCw2ICsyMDcwLDEwIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgVmVjdG9yPEdyaWRUcmFja1NpemU+IGluaXRpYWxHcmlkQ29sdW1ucygp
IHsgcmV0dXJuIFZlY3RvcjxHcmlkVHJhY2tTaXplPigpOyB9CiAgICAgc3RhdGljIFZlY3RvcjxH
cmlkVHJhY2tTaXplPiBpbml0aWFsR3JpZFJvd3MoKSB7IHJldHVybiBWZWN0b3I8R3JpZFRyYWNr
U2l6ZT4oKTsgfQogCisgICAgc3RhdGljIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBpbml0aWFsR3Jp
ZEF1dG9SZXBlYXRUcmFja3MoKSB7IHJldHVybiBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4oKTsgfQor
ICAgIHN0YXRpYyBzaXplX3QgaW5pdGlhbEdyaWRBdXRvUmVwZWF0SW5zZXJ0aW9uUG9pbnQoKSB7
IHJldHVybiAwOyB9CisgICAgc3RhdGljIEF1dG9SZXBlYXRUeXBlIGluaXRpYWxHcmlkQXV0b1Jl
cGVhdFR5cGUoKSB7IHJldHVybiBOb0F1dG9SZXBlYXQ7IH0KKwogICAgIHN0YXRpYyBHcmlkQXV0
b0Zsb3cgaW5pdGlhbEdyaWRBdXRvRmxvdygpIHsgcmV0dXJuIEF1dG9GbG93Um93OyB9CiAKICAg
ICBzdGF0aWMgR3JpZFRyYWNrU2l6ZSBpbml0aWFsR3JpZEF1dG9Db2x1bW5zKCkgeyByZXR1cm4g
R3JpZFRyYWNrU2l6ZShMZW5ndGgoQXV0bykpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4IGViNzA2ZjZkNTdj
YzA1ZTM3NWIzNzUzNDA1ZjYzZjI3MzU4NDcwOTAuLmNmNTU5ZjgxZGEyYjM0MDkyZDU1OTM3ZjJj
OGZmZDFjOGVjODVhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCkBAIC02NTMsNiArNjUzLDEyIEBAIGVudW0gR3Jp
ZEF1dG9GbG93IHsKICAgICBBdXRvRmxvd1Jvd0RlbnNlID0gSW50ZXJuYWxBdXRvRmxvd0FsZ29y
aXRobURlbnNlIHwgSW50ZXJuYWxBdXRvRmxvd0RpcmVjdGlvblJvdywKICAgICBBdXRvRmxvd0Nv
bHVtbkRlbnNlID0gSW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobURlbnNlIHwgSW50ZXJuYWxBdXRv
Rmxvd0RpcmVjdGlvbkNvbHVtbgogfTsKKworZW51bSBBdXRvUmVwZWF0VHlwZSB7CisgICAgTm9B
dXRvUmVwZWF0LAorICAgIEF1dG9GaWxsLAorICAgIEF1dG9GaXQKK307CiAjZW5kaWYKIAogLy8g
UmVhc29uYWJsZSBtYXhpbXVtIHRvIHByZXZlbnQgaW5zYW5lIGZvbnQgc2l6ZXMgZnJvbSBjYXVz
aW5nIGNyYXNoZXMgb24gc29tZSBwbGF0Zm9ybXMgKHN1Y2ggYXMgV2luZG93cykuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAKaW5kZXggZmEy
MmVkMmMzMDBiZTZlZjA1OTllNjRiYmM3MmE4NzZlYmEwMmYzYi4uNTQ4MDYwNDQwMzBhNmE5ZGM4
MGVkNzRiMjQ4N2Y4MzdkNThmMzQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUdyaWREYXRhLmNwcApAQCAtMzksNiArMzksMTAgQEAgU3R5bGVHcmlkRGF0
YTo6U3R5bGVHcmlkRGF0YSgpCiAgICAgLCBtX25hbWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0eWxl
Ojppbml0aWFsTmFtZWRHcmlkUm93TGluZXMoKSkKICAgICAsIG1fb3JkZXJlZE5hbWVkR3JpZENv
bHVtbkxpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVz
KCkpCiAgICAgLCBtX29yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlh
bE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpKQorICAgICwgbV9hdXRvUmVwZWF0TmFtZWRHcmlk
Q29sdW1uTGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRDb2x1bW5MaW5lcygpKQor
ICAgICwgbV9hdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxO
YW1lZEdyaWRSb3dMaW5lcygpKQorICAgICwgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENv
bHVtbkxpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVz
KCkpCisgICAgLCBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoUmVuZGVyU3R5
bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoKSkKICAgICAsIG1fZ3JpZEF1dG9G
bG93KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9GbG93KCkpCiAgICAgLCBtX2dyaWRBdXRv
Um93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUm93cygpKQogICAgICwgbV9ncmlkQXV0
b0NvbHVtbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b0NvbHVtbnMoKSkKQEAgLTQ3LDYg
KzUxLDEyIEBAIFN0eWxlR3JpZERhdGE6OlN0eWxlR3JpZERhdGEoKQogICAgICwgbV9uYW1lZEdy
aWRBcmVhQ29sdW1uQ291bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhQ291bnQo
KSkKICAgICAsIG1fZ3JpZENvbHVtbkdhcChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRDb2x1bW5H
YXAoKSkKICAgICAsIG1fZ3JpZFJvd0dhcChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRSb3dHYXAo
KSkKKyAgICAsIG1fZ3JpZEF1dG9SZXBlYXRDb2x1bW5zKFJlbmRlclN0eWxlOjppbml0aWFsR3Jp
ZEF1dG9SZXBlYXRUcmFja3MoKSkKKyAgICAsIG1fZ3JpZEF1dG9SZXBlYXRSb3dzKFJlbmRlclN0
eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRUcmFja3MoKSkKKyAgICAsIG1fYXV0b1JlcGVhdENv
bHVtbnNJbnNlcnRpb25Qb2ludChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0SW5z
ZXJ0aW9uUG9pbnQoKSkKKyAgICAsIG1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludChSZW5k
ZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0SW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAsIG1f
YXV0b1JlcGVhdENvbHVtbnNUeXBlKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRU
eXBlKCkpCisgICAgLCBtX2F1dG9SZXBlYXRSb3dzVHlwZShSZW5kZXJTdHlsZTo6aW5pdGlhbEdy
aWRBdXRvUmVwZWF0VHlwZSgpKQogewogfQogCkBAIC01OCw2ICs2OCwxMCBAQCBpbmxpbmUgU3R5
bGVHcmlkRGF0YTo6U3R5bGVHcmlkRGF0YShjb25zdCBTdHlsZUdyaWREYXRhJiBvKQogICAgICwg
bV9uYW1lZEdyaWRSb3dMaW5lcyhvLm1fbmFtZWRHcmlkUm93TGluZXMpCiAgICAgLCBtX29yZGVy
ZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhvLm1fb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKQog
ICAgICwgbV9vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoby5tX29yZGVyZWROYW1lZEdyaWRSb3dM
aW5lcykKKyAgICAsIG1fYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzKG8ubV9hdXRvUmVw
ZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMpCisgICAgLCBtX2F1dG9SZXBlYXROYW1lZEdyaWRSb3dM
aW5lcyhvLm1fYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKQorICAgICwgbV9hdXRvUmVwZWF0
T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKG8ubV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3Jp
ZENvbHVtbkxpbmVzKQorICAgICwgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVz
KG8ubV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKQogICAgICwgbV9ncmlkQXV0
b0Zsb3coby5tX2dyaWRBdXRvRmxvdykKICAgICAsIG1fZ3JpZEF1dG9Sb3dzKG8ubV9ncmlkQXV0
b1Jvd3MpCiAgICAgLCBtX2dyaWRBdXRvQ29sdW1ucyhvLm1fZ3JpZEF1dG9Db2x1bW5zKQpAQCAt
NjYsNiArODAsMTIgQEAgaW5saW5lIFN0eWxlR3JpZERhdGE6OlN0eWxlR3JpZERhdGEoY29uc3Qg
U3R5bGVHcmlkRGF0YSYgbykKICAgICAsIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KG8ubV9u
YW1lZEdyaWRBcmVhQ29sdW1uQ291bnQpCiAgICAgLCBtX2dyaWRDb2x1bW5HYXAoby5tX2dyaWRD
b2x1bW5HYXApCiAgICAgLCBtX2dyaWRSb3dHYXAoby5tX2dyaWRSb3dHYXApCisgICAgLCBtX2dy
aWRBdXRvUmVwZWF0Q29sdW1ucyhvLm1fZ3JpZEF1dG9SZXBlYXRDb2x1bW5zKQorICAgICwgbV9n
cmlkQXV0b1JlcGVhdFJvd3Moby5tX2dyaWRBdXRvUmVwZWF0Um93cykKKyAgICAsIG1fYXV0b1Jl
cGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludChvLm1fYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Q
b2ludCkKKyAgICAsIG1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludChvLm1fYXV0b1JlcGVh
dFJvd3NJbnNlcnRpb25Qb2ludCkKKyAgICAsIG1fYXV0b1JlcGVhdENvbHVtbnNUeXBlKG8ubV9h
dXRvUmVwZWF0Q29sdW1uc1R5cGUpCisgICAgLCBtX2F1dG9SZXBlYXRSb3dzVHlwZShvLm1fYXV0
b1JlcGVhdFJvd3NUeXBlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR3JpZERhdGEuaAppbmRleCA3ZTE2MzI1ZGM3MzcwYTk4MzAzOTM1M2M2ODQ4YTI0
NTEwYjI2M2YxLi5iYThjM2IzN2UxMzAyZTYzMzYxZDkyYzg1Y2U5NzliMWEzMjc5ZDM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKQEAgLTUy
LDEwICs1MiwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2dyaWRDb2x1bW5zID09IG8u
bV9ncmlkQ29sdW1ucyAmJiBtX2dyaWRSb3dzID09IG8ubV9ncmlkUm93cwogICAgICAgICAgICAg
JiYgbV9ncmlkQXV0b0Zsb3cgPT0gby5tX2dyaWRBdXRvRmxvdyAmJiBtX2dyaWRBdXRvUm93cyA9
PSBvLm1fZ3JpZEF1dG9Sb3dzICYmIG1fZ3JpZEF1dG9Db2x1bW5zID09IG8ubV9ncmlkQXV0b0Nv
bHVtbnMKICAgICAgICAgICAgICYmIG1fbmFtZWRHcmlkQ29sdW1uTGluZXMgPT0gby5tX25hbWVk
R3JpZENvbHVtbkxpbmVzICYmIG1fbmFtZWRHcmlkUm93TGluZXMgPT0gby5tX25hbWVkR3JpZFJv
d0xpbmVzCisgICAgICAgICAgICAmJiBtX2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyA9
PSBvLm1fYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzICYmIG1fYXV0b1JlcGVhdE5hbWVk
R3JpZFJvd0xpbmVzID09IG8ubV9hdXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMKKyAgICAgICAg
ICAgICYmIG1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLm1fYXV0
b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyAmJiBtX2F1dG9SZXBlYXRPcmRlcmVk
TmFtZWRHcmlkUm93TGluZXMgPT0gby5tX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGlu
ZXMKICAgICAgICAgICAgICYmIG1fbmFtZWRHcmlkQXJlYSA9PSBvLm1fbmFtZWRHcmlkQXJlYSAm
JiBtX25hbWVkR3JpZEFyZWEgPT0gby5tX25hbWVkR3JpZEFyZWEKICAgICAgICAgICAgICYmIG1f
bmFtZWRHcmlkQXJlYVJvd0NvdW50ID09IG8ubV9uYW1lZEdyaWRBcmVhUm93Q291bnQgJiYgbV9u
YW1lZEdyaWRBcmVhQ29sdW1uQ291bnQgPT0gby5tX25hbWVkR3JpZEFyZWFDb2x1bW5Db3VudAog
ICAgICAgICAgICAgJiYgbV9vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMgPT0gby5tX29yZGVyZWRO
YW1lZEdyaWRSb3dMaW5lcyAmJiBtX29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLm1f
b3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzCi0gICAgICAgICAgICAmJiBtX2dyaWRDb2x1bW5H
YXAgPT0gby5tX2dyaWRDb2x1bW5HYXAgJiYgbV9ncmlkUm93R2FwID09IG8ubV9ncmlkUm93R2Fw
OworICAgICAgICAgICAgJiYgbV9ncmlkQ29sdW1uR2FwID09IG8ubV9ncmlkQ29sdW1uR2FwICYm
IG1fZ3JpZFJvd0dhcCA9PSBvLm1fZ3JpZFJvd0dhcAorICAgICAgICAgICAgJiYgbV9ncmlkQXV0
b1JlcGVhdENvbHVtbnMgPT0gby5tX2dyaWRBdXRvUmVwZWF0Q29sdW1ucyAmJiBtX2dyaWRBdXRv
UmVwZWF0Um93cyA9PSBvLm1fZ3JpZEF1dG9SZXBlYXRSb3dzCisgICAgICAgICAgICAmJiBtX2F1
dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQgPT0gby5tX2F1dG9SZXBlYXRDb2x1bW5zSW5z
ZXJ0aW9uUG9pbnQgJiYgbV9hdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50ID09IG8ubV9hdXRv
UmVwZWF0Um93c0luc2VydGlvblBvaW50CisgICAgICAgICAgICAmJiBtX2F1dG9SZXBlYXRDb2x1
bW5zVHlwZSA9PSBvLm1fYXV0b1JlcGVhdENvbHVtbnNUeXBlICYmIG1fYXV0b1JlcGVhdFJvd3NU
eXBlID09IG8ubV9hdXRvUmVwZWF0Um93c1R5cGU7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFN0eWxlR3JpZERhdGEmIG8pIGNvbnN0CkBAIC03Myw2ICs3OCwxMSBAQCBwdWJs
aWM6CiAgICAgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwIG1fb3JkZXJlZE5hbWVkR3JpZENvbHVt
bkxpbmVzOwogICAgIE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCBtX29yZGVyZWROYW1lZEdyaWRS
b3dMaW5lczsKIAorICAgIE5hbWVkR3JpZExpbmVzTWFwIG1fYXV0b1JlcGVhdE5hbWVkR3JpZENv
bHVtbkxpbmVzOworICAgIE5hbWVkR3JpZExpbmVzTWFwIG1fYXV0b1JlcGVhdE5hbWVkR3JpZFJv
d0xpbmVzOworICAgIE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCBtX2F1dG9SZXBlYXRPcmRlcmVk
TmFtZWRHcmlkQ29sdW1uTGluZXM7CisgICAgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwIG1fYXV0
b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lczsKKwogICAgIHVuc2lnbmVkIG1fZ3JpZEF1
dG9GbG93IDogR3JpZEF1dG9GbG93Qml0czsKIAogICAgIEdyaWRUcmFja1NpemUgbV9ncmlkQXV0
b1Jvd3M7CkBAIC04Nyw2ICs5NywxNCBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoIG1fZ3JpZENvbHVt
bkdhcDsKICAgICBMZW5ndGggbV9ncmlkUm93R2FwOwogCisgICAgVmVjdG9yPEdyaWRUcmFja1Np
emU+IG1fZ3JpZEF1dG9SZXBlYXRDb2x1bW5zOworICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBt
X2dyaWRBdXRvUmVwZWF0Um93czsKKworICAgIHVuc2lnbmVkIG1fYXV0b1JlcGVhdENvbHVtbnNJ
bnNlcnRpb25Qb2ludDsKKyAgICB1bnNpZ25lZCBtX2F1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9p
bnQ7CisKKyAgICBBdXRvUmVwZWF0VHlwZSBtX2F1dG9SZXBlYXRDb2x1bW5zVHlwZTsKKyAgICBB
dXRvUmVwZWF0VHlwZSBtX2F1dG9SZXBlYXRSb3dzVHlwZTsKIHByaXZhdGU6CiAgICAgU3R5bGVH
cmlkRGF0YSgpOwogICAgIFN0eWxlR3JpZERhdGEoY29uc3QgU3R5bGVHcmlkRGF0YSYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277608</attachid>
            <date>2016-04-28 02:17:21 -0700</date>
            <delta_ts>2016-04-28 02:19:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-157097-20160428111750.patch</filename>
            <type>text/plain</type>
            <size>27451</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYxZWU2OTkzYzNhZDI1
NzkxODljNTI4YjdjZDlhNzE0Y2FhYTA4ZS4uMWYyMWJlMGFhMDRlNWUwOTQ4MWYxZTgyZTU1MjFk
OWY1NzI0YWZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE2LTA0LTI4ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtjc3MtZ3Jp
ZF0gU3RvcmUgYXV0by1yZXBlYXQgaW5mb3JtYXRpb24gaW4gc3R5bGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzA5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIHNlY29uZCBzdGVw
IHRvIGltcGxlbWVudCBhdXRvLXJlcGVhdC4gVGhpcyBwYXRjaCBwcm92aWRlcyB0aGUgbmVjZXNz
YXJ5CisgICAgICAgIG1hY2hpbmVyeSB0byBzdG9yZSB0aGUgYXV0by1yZXBlYXQgZGF0YSBleHRy
YWN0ZWQgYnkgdGhlIHBhcnNlciBpbiB0aGUgUmVuZGVyU3R5bGUgY2xhc3MuIFdlCisgICAgICAg
IGFyZSBub3QgZG9pbmcgYW55dGhpbmcgd2l0aCB0aGF0IGluZm9ybWF0aW9uIHlldCwgaXQgd2ls
bCBiZSB1c2VkIGxhdGVyIHRvIGNvbXB1dGUgdGhlCisgICAgICAgIG51bWJlciBvZiBhdXRvLXJl
cGVhdCB0cmFja3MgaW4gYSBmb2xsb3cgdXAgcGF0Y2guCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IHJlcXVpcmVkIGFzIHRoZXJlIGlzIG5vIGNoYW5nZSBpbiBiZWhhdmlvciB5ZXQgKHdlJ3JlIGp1
c3Qgc3RvcmluZyB0aGUgaW5mbyB3ZQorICAgICAgICBhbHJlYWR5IGdldCBmcm9tIHRoZSBwYXJz
ZXIpLgorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckdyaWRUcmFja0xpc3QpOiBDaGVjayBhbHNvIHRoYXQg
dGhlIGF1dG8tcmVwZWF0IGxpc3Qgb2YgdHJhY2tzIGlzIGVtcHR5LgorICAgICAgICAqIGNzcy9T
dHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdyaWRMaW5l
TmFtZXNMaXN0KTogUmVmYWN0b3JlZCBmcm9tIGNyZWF0ZUdyaWRUcmFja0xpc3QuCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QpOiBF
eHRyYWN0IGF1dG8tcmVwZWF0IGRhdGEgZnJvbSB0aGUKKyAgICAgICAgcGFyc2VyLiBBbHNvIGdh
dGhlcmVkIGFsbCB0aGUgb3V0IGFyZ3VtZW50cyBpbiBhIHNpbmdsZSBuZXcgc3RydWN0IGNhbGxl
ZCBUcmFja3NEYXRhLgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaDogQWRkZWQg
bmV3IG1hY3JvIFNFVF9UUkFDS1NfREFUQSB3aGljaCBwcm9wZXJseSBzZXRzIHRoZSBpbmZvCisg
ICAgICAgIGZyb20gVHJhY2tzRGF0YSBzdHJ1Y3QgaW50byBzdHlsZS4KKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdEdyaWRUZW1wbGF0ZUNvbHVt
bnMpOiBTdG9yZSBhdXRvLXJlcGVhdCBkYXRhCisgICAgICAgIGluIFJlbmRlclN0eWxlLgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0R3JpZFRl
bXBsYXRlUm93cyk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oOiBBZGQgbWV0aG9kcyBhbmQgYXR0cmlidXRlcyBmb3IgYXV0by1yZXBlYXQgZGF0YS4KKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDogTmV3IEF1dG9S
ZXBlYXRUeXBlIGVudW1lcmF0ZWQgdHlwZS4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5
bGVHcmlkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdyaWREYXRhOjpTdHlsZUdy
aWREYXRhKTogQWRkIGF1dG8tcmVwZWF0IGRhdGEuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1N0eWxlR3JpZERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR3JpZERhdGE6Om9wZXJh
dG9yPT0pOiBDaGVjayBhbHNvIGF1dG8tcmVwZWF0IGRhdGEuCisKIDIwMTYtMDQtMTkgIEFudHRp
IEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgRm9udFNlbGVjdG9y
Q2xpZW50IHRvIGEgZmlsZSBvZiBpdHMgb3duCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGRiNzNjMWI5ODZmY2RmMTNhMjE2
OGE0NmRhZTU0NjFiNGQ3NWI1ZmQuLjMzNjc2YWYxMmM4N2Y4ZmJmNGE2YTM2NTRlYTYwYWY3M2Vh
ODcwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCkBAIC0xMDQ5LDEyICsxMDQ5LDE0IEBAIHN0YXRpYyB2b2lkIGFkZFZhbHVl
c0Zvck5hbWVkR3JpZExpbmVzQXRJbmRleChjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAm
IG9yCiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+
JiB0cmFja1NpemVzID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzdHlsZS5ncmlkQ29sdW1u
cygpIDogc3R5bGUuZ3JpZFJvd3MoKTsKLSAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNN
YXAmIG9yZGVyZWROYW1lZEdyaWRMaW5lcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3R5
bGUub3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkgOiBzdHlsZS5vcmRlcmVkTmFtZWRHcmlk
Um93TGluZXMoKTsKKyAgICBib29sIGlzUm93QXhpcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5z
OwogICAgIGJvb2wgaXNSZW5kZXJHcmlkID0gaXM8UmVuZGVyR3JpZD4ocmVuZGVyZXIpOworICAg
IGF1dG8mIHRyYWNrU2l6ZXMgPSBpc1Jvd0F4aXMgPyBzdHlsZS5ncmlkQ29sdW1ucygpIDogc3R5
bGUuZ3JpZFJvd3MoKTsKKyAgICBhdXRvJiBhdXRvUmVwZWF0VHJhY2tTaXplcyA9IGlzUm93QXhp
cyA/IHN0eWxlLmdyaWRBdXRvUmVwZWF0Q29sdW1ucygpIDogc3R5bGUuZ3JpZEF1dG9SZXBlYXRS
b3dzKCk7CisgICAgYXV0byYgb3JkZXJlZE5hbWVkR3JpZExpbmVzID0gaXNSb3dBeGlzID8gc3R5
bGUub3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkgOiBzdHlsZS5vcmRlcmVkTmFtZWRHcmlk
Um93TGluZXMoKTsKIAogICAgIC8vIEhhbmRsZSB0aGUgJ25vbmUnIGNhc2UuCi0gICAgYm9vbCB0
cmFja0xpc3RJc0VtcHR5ID0gdHJhY2tTaXplcy5pc0VtcHR5KCk7CisgICAgYm9vbCB0cmFja0xp
c3RJc0VtcHR5ID0gdHJhY2tTaXplcy5pc0VtcHR5KCkgJiYgYXV0b1JlcGVhdFRyYWNrU2l6ZXMu
aXNFbXB0eSgpOwogICAgIGlmIChpc1JlbmRlckdyaWQgJiYgdHJhY2tMaXN0SXNFbXB0eSkgewog
ICAgICAgICAvLyBGb3IgZ3JpZHMgd2Ugc2hvdWxkIGNvbnNpZGVyIGV2ZXJ5IGxpc3RlZCB0cmFj
aywgd2hldGhlciBpbXBsaWNpdGx5IG9yIGV4cGxpY2l0bHkgY3JlYXRlZC4gSWYgd2UgZG9uJ3Qg
aGF2ZQogICAgICAgICAvLyBhbnkgZXhwbGljaXQgdHJhY2sgYW5kIHRoZXJlIGFyZSBubyBjaGls
ZHJlbiB0aGVuIHRoZXJlIGFyZSBubyBpbXBsaWNpdCB0cmFja3MuIFdlIGNhbm5vdCBzaW1wbHkg
Y2hlY2sgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29u
dmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5k
ZXggZjlkYTlkYTIyOTBkZTdiNmJkMmYxNmYwOWE3Mjk1MjljYWQzYjBkMy4uMzY4NmM5YmNmNjc1
MmFkY2IyZjRhMDBkMTBkYWU3NmM4YTcyMWZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNTU0NvbnRl
bnREaXN0cmlidXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGZWF0dXJlVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NGdW5jdGlvblZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTR3JpZEF1dG9SZXBl
YXRWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0dyaWRMaW5lTmFtZXNWYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbWFnZUdlbmVyYXRv
clZhbHVlLmgiCkBAIC0xNTYsNyArMTU3LDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ1NTX0dS
SURfTEFZT1VUKQogICAgIHN0YXRpYyBHcmlkTGVuZ3RoIGNyZWF0ZUdyaWRUcmFja0JyZWFkdGgo
Q1NTUHJpbWl0aXZlVmFsdWUmLCBTdHlsZVJlc29sdmVyJik7CiAgICAgc3RhdGljIEdyaWRUcmFj
a1NpemUgY3JlYXRlR3JpZFRyYWNrU2l6ZShDU1NWYWx1ZSYsIFN0eWxlUmVzb2x2ZXImKTsKLSAg
ICBzdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tMaXN0KENTU1ZhbHVlJiwgVmVjdG9yPEdyaWRU
cmFja1NpemU+JiB0cmFja1NpemVzLCBOYW1lZEdyaWRMaW5lc01hcCYsIE9yZGVyZWROYW1lZEdy
aWRMaW5lc01hcCYsIFN0eWxlUmVzb2x2ZXImKTsKKyAgICBzdHJ1Y3QgVHJhY2tzRGF0YTsKKyAg
ICBzdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tMaXN0KENTU1ZhbHVlJiwgVHJhY2tzRGF0YSYs
IFN0eWxlUmVzb2x2ZXImKTsKICAgICBzdGF0aWMgYm9vbCBjcmVhdGVHcmlkUG9zaXRpb24oQ1NT
VmFsdWUmLCBHcmlkUG9zaXRpb24mKTsKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVJbXBsaWNpdE5h
bWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmLCBOYW1lZEdy
aWRMaW5lc01hcCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CiAjZW5kaWYgLy8gRU5BQkxF
KENTU19HUklEX0xBWU9VVCkKQEAgLTg1Miw3ICs4NTQsMzUgQEAgaW5saW5lIEdyaWRUcmFja1Np
emUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tTaXplKENTU1ZhbHVlJiB2
YWx1ZSwKICAgICByZXR1cm4gR3JpZFRyYWNrU2l6ZShtaW5UcmFja0JyZWFkdGgsIG1heFRyYWNr
QnJlYWR0aCk7CiB9CiAKLWlubGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRl
R3JpZFRyYWNrTGlzdChDU1NWYWx1ZSYgdmFsdWUsIFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJh
Y2tTaXplcywgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZExpbmVzLCBPcmRlcmVkTmFtZWRH
cmlkTGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRMaW5lcywgU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlcikKK3N0YXRpYyB2b2lkIGNyZWF0ZUdyaWRMaW5lTmFtZXNMaXN0KGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSwgdW5zaWduZWQgY3VycmVudE5hbWVkR3JpZExpbmUsIE5hbWVkR3JpZExpbmVz
TWFwJiBuYW1lZEdyaWRMaW5lcywgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFt
ZWRHcmlkTGluZXMpCit7CisgICAgQVNTRVJUKHZhbHVlLmlzR3JpZExpbmVOYW1lc1ZhbHVlKCkp
OworCisgICAgZm9yIChhdXRvJiBuYW1lZEdyaWRMaW5lVmFsdWUgOiBkb3duY2FzdDxDU1NHcmlk
TGluZU5hbWVzVmFsdWU+KHZhbHVlKSkgeworICAgICAgICBTdHJpbmcgbmFtZWRHcmlkTGluZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihuYW1lZEdyaWRMaW5lVmFsdWUuZ2V0KCkpLmdl
dFN0cmluZ1ZhbHVlKCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbmFtZWRHcmlkTGluZXMuYWRk
KG5hbWVkR3JpZExpbmUsIFZlY3Rvcjx1bnNpZ25lZD4oKSk7CisgICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuYXBwZW5kKGN1cnJlbnROYW1lZEdyaWRMaW5lKTsKKyAgICAgICAgYXV0byBv
cmRlcmVkUmVzdWx0ID0gb3JkZXJlZE5hbWVkR3JpZExpbmVzLmFkZChjdXJyZW50TmFtZWRHcmlk
TGluZSwgVmVjdG9yPFN0cmluZz4oKSk7CisgICAgICAgIG9yZGVyZWRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmFwcGVuZChuYW1lZEdyaWRMaW5lKTsKKyAgICB9Cit9CisKK3N0cnVjdCBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OlRyYWNrc0RhdGEgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRy
YWNrc0RhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBUcmFja3NE
YXRhKCkgPSBkZWZhdWx0OworCisgICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IG1fdHJhY2tTaXpl
czsKKyAgICBOYW1lZEdyaWRMaW5lc01hcCBtX25hbWVkR3JpZExpbmVzOworICAgIE9yZGVyZWRO
YW1lZEdyaWRMaW5lc01hcCBtX29yZGVyZWROYW1lZEdyaWRMaW5lczsKKyAgICBWZWN0b3I8R3Jp
ZFRyYWNrU2l6ZT4gbV9hdXRvUmVwZWF0VHJhY2tTaXplczsKKyAgICBOYW1lZEdyaWRMaW5lc01h
cCBtX2F1dG9SZXBlYXROYW1lZEdyaWRMaW5lczsKKyAgICBPcmRlcmVkTmFtZWRHcmlkTGluZXNN
YXAgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZExpbmVzOworICAgIHVuc2lnbmVkIG1fYXV0
b1JlcGVhdEluc2VydGlvblBvaW50IHsgUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVh
dEluc2VydGlvblBvaW50KCkgfTsKKyAgICBBdXRvUmVwZWF0VHlwZSBtX2F1dG9SZXBlYXRUeXBl
IHsgUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUoKSB9OworfTsKKworaW5s
aW5lIGJvb2wgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KENTU1Zh
bHVlJiB2YWx1ZSwgVHJhY2tzRGF0YSYgdHJhY2tzRGF0YSwgU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlcikKIHsKICAgICAvLyBIYW5kbGUgJ25vbmUnLgogICAgIGlmIChpczxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpKQpAQCAtODY0LDIzICs4OTQsMzUgQEAgaW5saW5lIGJvb2wgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KENTU1ZhbHVlJiB2YWx1ZSwgVmVj
dG9yPEcKICAgICB1bnNpZ25lZCBjdXJyZW50TmFtZWRHcmlkTGluZSA9IDA7CiAgICAgZm9yIChh
dXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAg
ICAgICBpZiAoaXM8Q1NTR3JpZExpbmVOYW1lc1ZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKSB7
Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGN1cnJlbnRHcmlkTGluZU5hbWUgOiBkb3duY2FzdDxD
U1NHcmlkTGluZU5hbWVzVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpIHsKLSAgICAgICAgICAg
ICAgICBTdHJpbmcgbmFtZWRHcmlkTGluZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihj
dXJyZW50R3JpZExpbmVOYW1lLmdldCgpKS5nZXRTdHJpbmdWYWx1ZSgpOwotICAgICAgICAgICAg
ICAgIE5hbWVkR3JpZExpbmVzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbmFtZWRHcmlkTGluZXMu
YWRkKG5hbWVkR3JpZExpbmUsIFZlY3Rvcjx1bnNpZ25lZD4oKSk7Ci0gICAgICAgICAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoY3VycmVudE5hbWVkR3JpZExpbmUpOwotICAg
ICAgICAgICAgICAgIE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcDo6QWRkUmVzdWx0IG9yZGVyZWRS
ZXN1bHQgPSBvcmRlcmVkTmFtZWRHcmlkTGluZXMuYWRkKGN1cnJlbnROYW1lZEdyaWRMaW5lLCBW
ZWN0b3I8U3RyaW5nPigpKTsKLSAgICAgICAgICAgICAgICBvcmRlcmVkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS5hcHBlbmQobmFtZWRHcmlkTGluZSk7CisgICAgICAgICAgICBjcmVhdGVHcmlkTGlu
ZU5hbWVzTGlzdChjdXJyZW50VmFsdWUuZ2V0KCksIGN1cnJlbnROYW1lZEdyaWRMaW5lLCB0cmFj
a3NEYXRhLm1fbmFtZWRHcmlkTGluZXMsIHRyYWNrc0RhdGEubV9vcmRlcmVkTmFtZWRHcmlkTGlu
ZXMpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXM8
Q1NTR3JpZEF1dG9SZXBlYXRWYWx1ZT4oY3VycmVudFZhbHVlKSkgeworICAgICAgICAgICAgQVNT
RVJUKHRyYWNrc0RhdGEubV9hdXRvUmVwZWF0VHJhY2tTaXplcy5pc0VtcHR5KCkpOworICAgICAg
ICAgICAgdW5zaWduZWQgYXV0b1JlcGVhdEluZGV4ID0gMDsKKyAgICAgICAgICAgIENTU1ZhbHVl
SUQgYXV0b1JlcGVhdElEID0gZG93bmNhc3Q8Q1NTR3JpZEF1dG9SZXBlYXRWYWx1ZT4oY3VycmVu
dFZhbHVlLmdldCgpKS5hdXRvUmVwZWF0SUQoKTsKKyAgICAgICAgICAgIEFTU0VSVChhdXRvUmVw
ZWF0SUQgPT0gQ1NTVmFsdWVBdXRvRmlsbCB8fCBhdXRvUmVwZWF0SUQgPT0gQ1NTVmFsdWVBdXRv
Rml0KTsKKyAgICAgICAgICAgIHRyYWNrc0RhdGEubV9hdXRvUmVwZWF0VHlwZSA9IGF1dG9SZXBl
YXRJRCA9PSBDU1NWYWx1ZUF1dG9GaWxsID8gQXV0b0ZpbGwgOiBBdXRvRml0OworICAgICAgICAg
ICAgZm9yIChhdXRvJiBhdXRvUmVwZWF0VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KGN1
cnJlbnRWYWx1ZS5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXM8Q1NTR3JpZExpbmVO
YW1lc1ZhbHVlPihhdXRvUmVwZWF0VmFsdWUuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZUdyaWRMaW5lTmFtZXNMaXN0KGF1dG9SZXBlYXRWYWx1ZS5nZXQoKSwgYXV0b1JlcGVh
dEluZGV4LCB0cmFja3NEYXRhLm1fYXV0b1JlcGVhdE5hbWVkR3JpZExpbmVzLCB0cmFja3NEYXRh
Lm1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRMaW5lcyk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICArK2F1dG9SZXBl
YXRJbmRleDsKKyAgICAgICAgICAgICAgICB0cmFja3NEYXRhLm1fYXV0b1JlcGVhdFRyYWNrU2l6
ZXMuYXBwZW5kKGNyZWF0ZUdyaWRUcmFja1NpemUoYXV0b1JlcGVhdFZhbHVlLmdldCgpLCBzdHls
ZVJlc29sdmVyKSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICB0cmFja3NEYXRhLm1fYXV0
b1JlcGVhdEluc2VydGlvblBvaW50ID0gY3VycmVudE5hbWVkR3JpZExpbmUrKzsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgKytjdXJyZW50TmFtZWRHcmlkTGlu
ZTsKLSAgICAgICAgdHJhY2tTaXplcy5hcHBlbmQoY3JlYXRlR3JpZFRyYWNrU2l6ZShjdXJyZW50
VmFsdWUsIHN0eWxlUmVzb2x2ZXIpKTsKKyAgICAgICAgdHJhY2tzRGF0YS5tX3RyYWNrU2l6ZXMu
YXBwZW5kKGNyZWF0ZUdyaWRUcmFja1NpemUoY3VycmVudFZhbHVlLCBzdHlsZVJlc29sdmVyKSk7
CiAgICAgfQogCiAgICAgLy8gVGhlIHBhcnNlciBzaG91bGQgaGF2ZSByZWplY3RlZCBhbnkgPHRy
YWNrLWxpc3Q+IHdpdGhvdXQgYW55IDx0cmFjay1zaXplPiBhcwogICAgIC8vIHRoaXMgaXMgbm90
IGNvbmZvcm1hbnQgdG8gdGhlIHN5bnRheC4KLSAgICBBU1NFUlQoIXRyYWNrU2l6ZXMuaXNFbXB0
eSgpKTsKKyAgICBBU1NFUlQoIXRyYWNrc0RhdGEubV90cmFja1NpemVzLmlzRW1wdHkoKSB8fCAh
dHJhY2tzRGF0YS5tX2F1dG9SZXBlYXRUcmFja1NpemVzLmlzRW1wdHkoKSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJD
dXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCAy
MTZhOTRhYzYzMGJhYTYyODMzNDE5MjliNjVkYzY4MzY1YzVhYWEwLi5mMTBkYjA3NjhiY2UxZDk0
MWUxZDI5OGY4MjE3MDk3ZjJiYmY4MTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRl
ckN1c3RvbS5oCkBAIC0xNjQ5LDIwICsxNjQ5LDI2IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0R3JpZFRlbXBsYXRlQ29sdW1ucyhTdHlsZVJlc29s
CiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGlu
ZXMoc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGlu
ZXMoKSk7CiB9CiAKKyNkZWZpbmUgU0VUX1RSQUNLU19EQVRBKHRyYWNrc0RhdGEsIHN0eWxlLCBU
cmFja1R5cGUpIFwKKyAgICBzdHlsZS0+c2V0R3JpZCMjVHJhY2tUeXBlIyNzKHRyYWNrc0RhdGEu
bV90cmFja1NpemVzKTsgXAorICAgIHN0eWxlLT5zZXROYW1lZEdyaWQjI1RyYWNrVHlwZSMjTGlu
ZXModHJhY2tzRGF0YS5tX25hbWVkR3JpZExpbmVzKTsgXAorICAgIHN0eWxlLT5zZXRPcmRlcmVk
TmFtZWRHcmlkIyNUcmFja1R5cGUjI0xpbmVzKHRyYWNrc0RhdGEubV9vcmRlcmVkTmFtZWRHcmlk
TGluZXMpOyBcCisgICAgc3R5bGUtPnNldEdyaWRBdXRvUmVwZWF0IyNUcmFja1R5cGUjI3ModHJh
Y2tzRGF0YS5tX2F1dG9SZXBlYXRUcmFja1NpemVzKTsgXAorICAgIHN0eWxlLT5zZXRHcmlkQXV0
b1JlcGVhdCMjVHJhY2tUeXBlIyNzSW5zZXJ0aW9uUG9pbnQodHJhY2tzRGF0YS5tX2F1dG9SZXBl
YXRJbnNlcnRpb25Qb2ludCk7IFwKKyAgICBzdHlsZS0+c2V0QXV0b1JlcGVhdE5hbWVkR3JpZCMj
VHJhY2tUeXBlIyNMaW5lcyh0cmFja3NEYXRhLm1fYXV0b1JlcGVhdE5hbWVkR3JpZExpbmVzKTsg
XAorICAgIHN0eWxlLT5zZXRBdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZCMjVHJhY2tUeXBlIyNM
aW5lcyh0cmFja3NEYXRhLm1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRMaW5lcyk7IFwKKyAg
ICBzdHlsZS0+c2V0R3JpZEF1dG9SZXBlYXQjI1RyYWNrVHlwZSMjc1R5cGUodHJhY2tzRGF0YS5t
X2F1dG9SZXBlYXRUeXBlKTsKKwogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlV2Via2l0R3JpZFRlbXBsYXRlQ29sdW1ucyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IHRyYWNr
U2l6ZXM7Ci0gICAgTmFtZWRHcmlkTGluZXNNYXAgbmFtZWRHcmlkTGluZXM7Ci0gICAgT3JkZXJl
ZE5hbWVkR3JpZExpbmVzTWFwIG9yZGVyZWROYW1lZEdyaWRMaW5lczsKLSAgICBpZiAoIVN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrTGlzdCh2YWx1ZSwgdHJhY2tTaXplcywg
bmFtZWRHcmlkTGluZXMsIG9yZGVyZWROYW1lZEdyaWRMaW5lcywgc3R5bGVSZXNvbHZlcikpCisg
ICAgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpUcmFja3NEYXRhIHRyYWNrc0RhdGE7CisgICAgaWYg
KCFTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QodmFsdWUsIHRyYWNr
c0RhdGEsIHN0eWxlUmVzb2x2ZXIpKQogICAgICAgICByZXR1cm47CiAgICAgY29uc3QgTmFtZWRH
cmlkQXJlYU1hcCYgbmFtZWRHcmlkQXJlYXMgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPm5hbWVk
R3JpZEFyZWEoKTsKICAgICBpZiAoIW5hbWVkR3JpZEFyZWFzLmlzRW1wdHkoKSkKLSAgICAgICAg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdy
aWRBcmVhKG5hbWVkR3JpZEFyZWFzLCBuYW1lZEdyaWRMaW5lcywgRm9yQ29sdW1ucyk7CisgICAg
ICAgIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zy
b21HcmlkQXJlYShuYW1lZEdyaWRBcmVhcywgdHJhY2tzRGF0YS5tX25hbWVkR3JpZExpbmVzLCBG
b3JDb2x1bW5zKTsKIAotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0R3JpZENvbHVtbnMo
dHJhY2tTaXplcyk7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXROYW1lZEdyaWRDb2x1
bW5MaW5lcyhuYW1lZEdyaWRMaW5lcyk7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRP
cmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMob3JkZXJlZE5hbWVkR3JpZExpbmVzKTsKKyAgICBT
RVRfVFJBQ0tTX0RBVEEodHJhY2tzRGF0YSwgc3R5bGVSZXNvbHZlci5zdHlsZSgpLCBDb2x1bW4p
OwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFdlYmtp
dEdyaWRUZW1wbGF0ZVJvd3MoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKQEAgLTE2ODEs
MTggKzE2ODcsMTQgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVy
aXRXZWJraXRHcmlkVGVtcGxhdGVSb3dzKFN0eWxlUmVzb2x2ZXIKIAogaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0R3JpZFRlbXBsYXRlUm93cyhTdHlsZVJl
c29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgVmVjdG9yPEdy
aWRUcmFja1NpemU+IHRyYWNrU2l6ZXM7Ci0gICAgTmFtZWRHcmlkTGluZXNNYXAgbmFtZWRHcmlk
TGluZXM7Ci0gICAgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwIG9yZGVyZWROYW1lZEdyaWRMaW5l
czsKLSAgICBpZiAoIVN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrTGlzdCh2
YWx1ZSwgdHJhY2tTaXplcywgbmFtZWRHcmlkTGluZXMsIG9yZGVyZWROYW1lZEdyaWRMaW5lcywg
c3R5bGVSZXNvbHZlcikpCisgICAgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpUcmFja3NEYXRhIHRy
YWNrc0RhdGE7CisgICAgaWYgKCFTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFj
a0xpc3QodmFsdWUsIHRyYWNrc0RhdGEsIHN0eWxlUmVzb2x2ZXIpKQogICAgICAgICByZXR1cm47
CiAgICAgY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgbmFtZWRHcmlkQXJlYXMgPSBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPm5hbWVkR3JpZEFyZWEoKTsKICAgICBpZiAoIW5hbWVkR3JpZEFyZWFzLmlz
RW1wdHkoKSkKLSAgICAgICAgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVJbXBsaWNpdE5h
bWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKG5hbWVkR3JpZEFyZWFzLCBuYW1lZEdyaWRMaW5lcywg
Rm9yUm93cyk7CisgICAgICAgIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXRO
YW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShuYW1lZEdyaWRBcmVhcywgdHJhY2tzRGF0YS5tX25h
bWVkR3JpZExpbmVzLCBGb3JSb3dzKTsKIAotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0
R3JpZFJvd3ModHJhY2tTaXplcyk7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXROYW1l
ZEdyaWRSb3dMaW5lcyhuYW1lZEdyaWRMaW5lcyk7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgp
LT5zZXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMob3JkZXJlZE5hbWVkR3JpZExpbmVzKTsKKyAg
ICBTRVRfVFJBQ0tTX0RBVEEodHJhY2tzRGF0YSwgc3R5bGVSZXNvbHZlci5zdHlsZSgpLCBSb3cp
OwogfQogI2VuZGlmIC8vIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggMmFkYjI5Zjg3Y2Q3YzU1OTNi
NDZiMDE0NDUyOWFjMGI0ZjhkZThjZS4uYTdjMDlkNWVlOGIyZTA2MDJmOGU2Y2MzN2ZjMzBlYzdl
ODQ1MjJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKQEAgLTk0MCwxMCArOTQwLDIwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZ
T1VUKQogICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgZ3JpZENvbHVtbnMoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRDb2x1bW5zOyB9
CiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkUm93cygpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZFJvd3M7IH0KKyAgICBjb25z
dCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRBdXRvUmVwZWF0Q29sdW1ucygpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZEF1dG9SZXBlYXRDb2x1
bW5zOyB9CisgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkQXV0b1JlcGVhdFJv
d3MoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2dyaWRB
dXRvUmVwZWF0Um93czsgfQorICAgIHVuc2lnbmVkIGdyaWRBdXRvUmVwZWF0Q29sdW1uc0luc2Vy
dGlvblBvaW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+
bV9hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50OyB9CisgICAgdW5zaWduZWQgZ3JpZEF1
dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQ7IH0KKyAgICBB
dXRvUmVwZWF0VHlwZSBncmlkQXV0b1JlcGVhdENvbHVtbnNUeXBlKCkgY29uc3QgIHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fYXV0b1JlcGVhdENvbHVtbnNUeXBlOyB9
CisgICAgQXV0b1JlcGVhdFR5cGUgZ3JpZEF1dG9SZXBlYXRSb3dzVHlwZSgpIGNvbnN0ICB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRSb3dzVHlwZTsg
fQogICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRDb2x1bW5MaW5lcygpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fbmFtZWRHcmlkQ29s
dW1uTGluZXM7IH0KICAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkUm93TGlu
ZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLT5tX25hbWVk
R3JpZFJvd0xpbmVzOyB9CiAgICAgY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRl
cmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9ncmlkLT5tX29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lczsgfQogICAgIGNvbnN0
IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9vcmRlcmVkTmFtZWRH
cmlkUm93TGluZXM7IH0KKyAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgYXV0b1JlcGVhdE5h
bWVkR3JpZENvbHVtbkxpbmVzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZ3JpZC0+bV9hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXM7IH0KKyAgICBjb25zdCBO
YW1lZEdyaWRMaW5lc01hcCYgYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9hdXRvUmVwZWF0TmFtZWRHcmlk
Um93TGluZXM7IH0KKyAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIGF1dG9SZXBl
YXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGlu
ZXM7IH0KKyAgICBjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIGF1dG9SZXBlYXRPcmRl
cmVkTmFtZWRHcmlkUm93TGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9ncmlkLT5tX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXM7IH0KICAgICBj
b25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhKCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9uYW1lZEdyaWRBcmVhOyB9CiAgICAgc2l6ZV90
IG5hbWVkR3JpZEFyZWFSb3dDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2dyaWQtPm1fbmFtZWRHcmlkQXJlYVJvd0NvdW50OyB9CiAgICAgc2l6ZV90IG5hbWVk
R3JpZEFyZWFDb2x1bW5Db3VudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2dyaWQtPm1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50OyB9CkBAIC0xNTM3LDEwICsxNTQ3
LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEdyaWRBdXRvUm93cyhjb25zdCBHcmlkVHJhY2tT
aXplJiBsZW5ndGgpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3Jp
ZCwgbV9ncmlkQXV0b1Jvd3MsIGxlbmd0aCk7IH0KICAgICB2b2lkIHNldEdyaWRDb2x1bW5zKGNv
bnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfTkVTVEVEX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2dyaWRDb2x1bW5zLCBsZW5ndGhzKTsgfQogICAg
IHZvaWQgc2V0R3JpZFJvd3MoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBsZW5ndGhzKSB7
IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fZ3JpZFJvd3Ms
IGxlbmd0aHMpOyB9CisgICAgdm9pZCBzZXRHcmlkQXV0b1JlcGVhdENvbHVtbnMoY29uc3QgVmVj
dG9yPEdyaWRUcmFja1NpemU+JiBsZW5ndGhzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX2dyaWQsIG1fZ3JpZEF1dG9SZXBlYXRDb2x1bW5zLCBsZW5ndGhzKTsgfQor
ICAgIHZvaWQgc2V0R3JpZEF1dG9SZXBlYXRSb3dzKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXpl
PiYgbGVuZ3RocykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlk
LCBtX2dyaWRBdXRvUmVwZWF0Um93cywgbGVuZ3Rocyk7IH0KKyAgICB2b2lkIHNldEdyaWRBdXRv
UmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KGNvbnN0IHVuc2lnbmVkIGluc2VydGlvblBvaW50
KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fYXV0b1Jl
cGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCwgaW5zZXJ0aW9uUG9pbnQpOyB9CisgICAgdm9pZCBz
ZXRHcmlkQXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludChjb25zdCB1bnNpZ25lZCBpbnNlcnRp
b25Qb2ludCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBt
X2F1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQsIGluc2VydGlvblBvaW50KTsgfQorICAgIHZv
aWQgc2V0R3JpZEF1dG9SZXBlYXRDb2x1bW5zVHlwZShjb25zdCBBdXRvUmVwZWF0VHlwZSBhdXRv
UmVwZWF0VHlwZSkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlk
LCBtX2F1dG9SZXBlYXRDb2x1bW5zVHlwZSwgYXV0b1JlcGVhdFR5cGUpOyB9CisgICAgdm9pZCBz
ZXRHcmlkQXV0b1JlcGVhdFJvd3NUeXBlKGNvbnN0IEF1dG9SZXBlYXRUeXBlIGF1dG9SZXBlYXRU
eXBlKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fYXV0
b1JlcGVhdFJvd3NUeXBlLCBhdXRvUmVwZWF0VHlwZSk7IH0KICAgICB2b2lkIHNldE5hbWVkR3Jp
ZENvbHVtbkxpbmVzKGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRDb2x1bW5MaW5l
cykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX25hbWVk
R3JpZENvbHVtbkxpbmVzLCBuYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0KICAgICB2b2lkIHNldE5h
bWVkR3JpZFJvd0xpbmVzKGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRSb3dMaW5l
cykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX25hbWVk
R3JpZFJvd0xpbmVzLCBuYW1lZEdyaWRSb3dMaW5lcyk7IH0KICAgICB2b2lkIHNldE9yZGVyZWRO
YW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIG9yZGVy
ZWROYW1lZEdyaWRDb2x1bW5MaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV9ncmlkLCBtX29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcywgb3JkZXJlZE5hbWVk
R3JpZENvbHVtbkxpbmVzKTsgfQogICAgIHZvaWQgc2V0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVz
KGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVz
KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2dyaWQsIG1fb3JkZXJl
ZE5hbWVkR3JpZFJvd0xpbmVzLCBvcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpOyB9CisgICAgdm9p
ZCBzZXRBdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoY29uc3QgTmFtZWRHcmlkTGluZXNN
YXAmIG5hbWVkR3JpZENvbHVtbkxpbmVzKSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX2dyaWQsIG1fYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzLCBuYW1lZEdy
aWRDb2x1bW5MaW5lcyk7IH0KKyAgICB2b2lkIHNldEF1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5l
cyhjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkUm93TGluZXMpIHsgU0VUX05FU1RF
RF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0TmFtZWRHcmlk
Um93TGluZXMsIG5hbWVkR3JpZFJvd0xpbmVzKTsgfQorICAgIHZvaWQgc2V0QXV0b1JlcGVhdE9y
ZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyhjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAm
IG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcykgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbV9ncmlkLCBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGlu
ZXMsIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyk7IH0KKyAgICB2b2lkIHNldEF1dG9SZXBl
YXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoY29uc3QgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFw
JiBvcmRlcmVkTmFtZWRHcmlkUm93TGluZXMpIHsgU0VUX05FU1RFRF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fZ3JpZCwgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzLCBv
cmRlcmVkTmFtZWRHcmlkUm93TGluZXMpOyB9CiAgICAgdm9pZCBzZXROYW1lZEdyaWRBcmVhKGNv
bnN0IE5hbWVkR3JpZEFyZWFNYXAmIG5hbWVkR3JpZEFyZWEpIHsgU0VUX05FU1RFRF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fZ3JpZCwgbV9uYW1lZEdyaWRBcmVhLCBuYW1lZEdyaWRBcmVh
KTsgfQogICAgIHZvaWQgc2V0TmFtZWRHcmlkQXJlYVJvd0NvdW50KHNpemVfdCByb3dDb3VudCkg
eyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9ncmlkLCBtX25hbWVkR3Jp
ZEFyZWFSb3dDb3VudCwgcm93Q291bnQpOyB9CiAgICAgdm9pZCBzZXROYW1lZEdyaWRBcmVhQ29s
dW1uQ291bnQoc2l6ZV90IGNvbHVtbkNvdW50KSB7IFNFVF9ORVNURURfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX2dyaWQsIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50LCBjb2x1bW5Db3Vu
dCk7IH0KQEAgLTIwNTAsNiArMjA3MCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFZlY3RvcjxH
cmlkVHJhY2tTaXplPiBpbml0aWFsR3JpZENvbHVtbnMoKSB7IHJldHVybiBWZWN0b3I8R3JpZFRy
YWNrU2l6ZT4oKTsgfQogICAgIHN0YXRpYyBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gaW5pdGlhbEdy
aWRSb3dzKCkgeyByZXR1cm4gVmVjdG9yPEdyaWRUcmFja1NpemU+KCk7IH0KIAorICAgIHN0YXRp
YyBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gaW5pdGlhbEdyaWRBdXRvUmVwZWF0VHJhY2tzKCkgeyBy
ZXR1cm4gVmVjdG9yPEdyaWRUcmFja1NpemU+KCk7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgaW5p
dGlhbEdyaWRBdXRvUmVwZWF0SW5zZXJ0aW9uUG9pbnQoKSB7IHJldHVybiAwOyB9CisgICAgc3Rh
dGljIEF1dG9SZXBlYXRUeXBlIGluaXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUoKSB7IHJldHVybiBO
b0F1dG9SZXBlYXQ7IH0KKwogICAgIHN0YXRpYyBHcmlkQXV0b0Zsb3cgaW5pdGlhbEdyaWRBdXRv
RmxvdygpIHsgcmV0dXJuIEF1dG9GbG93Um93OyB9CiAKICAgICBzdGF0aWMgR3JpZFRyYWNrU2l6
ZSBpbml0aWFsR3JpZEF1dG9Db2x1bW5zKCkgeyByZXR1cm4gR3JpZFRyYWNrU2l6ZShMZW5ndGgo
QXV0bykpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4IGViNzA2ZjZkNTdjYzA1ZTM3NWIzNzUzNDA1ZjYzZjI3
MzU4NDcwOTAuLmNmNTU5ZjgxZGEyYjM0MDkyZDU1OTM3ZjJjOGZmZDFjOGVjODVhNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0
YW50cy5oCkBAIC02NTMsNiArNjUzLDEyIEBAIGVudW0gR3JpZEF1dG9GbG93IHsKICAgICBBdXRv
Rmxvd1Jvd0RlbnNlID0gSW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobURlbnNlIHwgSW50ZXJuYWxB
dXRvRmxvd0RpcmVjdGlvblJvdywKICAgICBBdXRvRmxvd0NvbHVtbkRlbnNlID0gSW50ZXJuYWxB
dXRvRmxvd0FsZ29yaXRobURlbnNlIHwgSW50ZXJuYWxBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbgog
fTsKKworZW51bSBBdXRvUmVwZWF0VHlwZSB7CisgICAgTm9BdXRvUmVwZWF0LAorICAgIEF1dG9G
aWxsLAorICAgIEF1dG9GaXQKK307CiAjZW5kaWYKIAogLy8gUmVhc29uYWJsZSBtYXhpbXVtIHRv
IHByZXZlbnQgaW5zYW5lIGZvbnQgc2l6ZXMgZnJvbSBjYXVzaW5nIGNyYXNoZXMgb24gc29tZSBw
bGF0Zm9ybXMgKHN1Y2ggYXMgV2luZG93cykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAKaW5kZXggZmEyMmVkMmMzMDBiZTZlZjA1OTllNjRi
YmM3MmE4NzZlYmEwMmYzYi4uNTQ4MDYwNDQwMzBhNmE5ZGM4MGVkNzRiMjQ4N2Y4MzdkNThmMzQz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRh
LmNwcApAQCAtMzksNiArMzksMTAgQEAgU3R5bGVHcmlkRGF0YTo6U3R5bGVHcmlkRGF0YSgpCiAg
ICAgLCBtX25hbWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkUm93
TGluZXMoKSkKICAgICAsIG1fb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKFJlbmRlclN0eWxl
Ojppbml0aWFsT3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkpCiAgICAgLCBtX29yZGVyZWRO
YW1lZEdyaWRSb3dMaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVyZWROYW1lZEdyaWRSb3dM
aW5lcygpKQorICAgICwgbV9hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5
bGU6OmluaXRpYWxOYW1lZEdyaWRDb2x1bW5MaW5lcygpKQorICAgICwgbV9hdXRvUmVwZWF0TmFt
ZWRHcmlkUm93TGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRSb3dMaW5lcygpKQor
ICAgICwgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKFJlbmRlclN0eWxl
Ojppbml0aWFsT3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkpCisgICAgLCBtX2F1dG9SZXBl
YXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFt
ZWRHcmlkUm93TGluZXMoKSkKICAgICAsIG1fZ3JpZEF1dG9GbG93KFJlbmRlclN0eWxlOjppbml0
aWFsR3JpZEF1dG9GbG93KCkpCiAgICAgLCBtX2dyaWRBdXRvUm93cyhSZW5kZXJTdHlsZTo6aW5p
dGlhbEdyaWRBdXRvUm93cygpKQogICAgICwgbV9ncmlkQXV0b0NvbHVtbnMoUmVuZGVyU3R5bGU6
OmluaXRpYWxHcmlkQXV0b0NvbHVtbnMoKSkKQEAgLTQ3LDYgKzUxLDEyIEBAIFN0eWxlR3JpZERh
dGE6OlN0eWxlR3JpZERhdGEoKQogICAgICwgbV9uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoUmVu
ZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhQ291bnQoKSkKICAgICAsIG1fZ3JpZENvbHVt
bkdhcChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRDb2x1bW5HYXAoKSkKICAgICAsIG1fZ3JpZFJv
d0dhcChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRSb3dHYXAoKSkKKyAgICAsIG1fZ3JpZEF1dG9S
ZXBlYXRDb2x1bW5zKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRUcmFja3MoKSkK
KyAgICAsIG1fZ3JpZEF1dG9SZXBlYXRSb3dzKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9S
ZXBlYXRUcmFja3MoKSkKKyAgICAsIG1fYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludChS
ZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0SW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAs
IG1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRB
dXRvUmVwZWF0SW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAsIG1fYXV0b1JlcGVhdENvbHVtbnNUeXBl
KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRUeXBlKCkpCisgICAgLCBtX2F1dG9S
ZXBlYXRSb3dzVHlwZShSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0VHlwZSgpKQog
ewogfQogCkBAIC01OCw2ICs2OCwxMCBAQCBpbmxpbmUgU3R5bGVHcmlkRGF0YTo6U3R5bGVHcmlk
RGF0YShjb25zdCBTdHlsZUdyaWREYXRhJiBvKQogICAgICwgbV9uYW1lZEdyaWRSb3dMaW5lcyhv
Lm1fbmFtZWRHcmlkUm93TGluZXMpCiAgICAgLCBtX29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5l
cyhvLm1fb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKQogICAgICwgbV9vcmRlcmVkTmFtZWRH
cmlkUm93TGluZXMoby5tX29yZGVyZWROYW1lZEdyaWRSb3dMaW5lcykKKyAgICAsIG1fYXV0b1Jl
cGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzKG8ubV9hdXRvUmVwZWF0TmFtZWRHcmlkQ29sdW1uTGlu
ZXMpCisgICAgLCBtX2F1dG9SZXBlYXROYW1lZEdyaWRSb3dMaW5lcyhvLm1fYXV0b1JlcGVhdE5h
bWVkR3JpZFJvd0xpbmVzKQorICAgICwgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVt
bkxpbmVzKG8ubV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKQorICAgICwg
bV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKG8ubV9hdXRvUmVwZWF0T3JkZXJl
ZE5hbWVkR3JpZFJvd0xpbmVzKQogICAgICwgbV9ncmlkQXV0b0Zsb3coby5tX2dyaWRBdXRvRmxv
dykKICAgICAsIG1fZ3JpZEF1dG9Sb3dzKG8ubV9ncmlkQXV0b1Jvd3MpCiAgICAgLCBtX2dyaWRB
dXRvQ29sdW1ucyhvLm1fZ3JpZEF1dG9Db2x1bW5zKQpAQCAtNjYsNiArODAsMTIgQEAgaW5saW5l
IFN0eWxlR3JpZERhdGE6OlN0eWxlR3JpZERhdGEoY29uc3QgU3R5bGVHcmlkRGF0YSYgbykKICAg
ICAsIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KG8ubV9uYW1lZEdyaWRBcmVhQ29sdW1uQ291
bnQpCiAgICAgLCBtX2dyaWRDb2x1bW5HYXAoby5tX2dyaWRDb2x1bW5HYXApCiAgICAgLCBtX2dy
aWRSb3dHYXAoby5tX2dyaWRSb3dHYXApCisgICAgLCBtX2dyaWRBdXRvUmVwZWF0Q29sdW1ucyhv
Lm1fZ3JpZEF1dG9SZXBlYXRDb2x1bW5zKQorICAgICwgbV9ncmlkQXV0b1JlcGVhdFJvd3Moby5t
X2dyaWRBdXRvUmVwZWF0Um93cykKKyAgICAsIG1fYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Q
b2ludChvLm1fYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCkKKyAgICAsIG1fYXV0b1Jl
cGVhdFJvd3NJbnNlcnRpb25Qb2ludChvLm1fYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCkK
KyAgICAsIG1fYXV0b1JlcGVhdENvbHVtbnNUeXBlKG8ubV9hdXRvUmVwZWF0Q29sdW1uc1R5cGUp
CisgICAgLCBtX2F1dG9SZXBlYXRSb3dzVHlwZShvLm1fYXV0b1JlcGVhdFJvd3NUeXBlKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlk
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaApp
bmRleCA3ZTE2MzI1ZGM3MzcwYTk4MzAzOTM1M2M2ODQ4YTI0NTEwYjI2M2YxLi43ZTFiZDhjZTIx
MDEyZTI5MTQ0NzNmZmFiNzExOGNiNjhkYWExZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKQEAgLTUyLDEwICs1MiwxNSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX2dyaWRDb2x1bW5zID09IG8ubV9ncmlkQ29sdW1ucyAmJiBtX2dy
aWRSb3dzID09IG8ubV9ncmlkUm93cwogICAgICAgICAgICAgJiYgbV9ncmlkQXV0b0Zsb3cgPT0g
by5tX2dyaWRBdXRvRmxvdyAmJiBtX2dyaWRBdXRvUm93cyA9PSBvLm1fZ3JpZEF1dG9Sb3dzICYm
IG1fZ3JpZEF1dG9Db2x1bW5zID09IG8ubV9ncmlkQXV0b0NvbHVtbnMKICAgICAgICAgICAgICYm
IG1fbmFtZWRHcmlkQ29sdW1uTGluZXMgPT0gby5tX25hbWVkR3JpZENvbHVtbkxpbmVzICYmIG1f
bmFtZWRHcmlkUm93TGluZXMgPT0gby5tX25hbWVkR3JpZFJvd0xpbmVzCisgICAgICAgICAgICAm
JiBtX2F1dG9SZXBlYXROYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLm1fYXV0b1JlcGVhdE5hbWVk
R3JpZENvbHVtbkxpbmVzICYmIG1fYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzID09IG8ubV9h
dXRvUmVwZWF0TmFtZWRHcmlkUm93TGluZXMKKyAgICAgICAgICAgICYmIG1fYXV0b1JlcGVhdE9y
ZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLm1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdy
aWRDb2x1bW5MaW5lcyAmJiBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMgPT0g
by5tX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMKICAgICAgICAgICAgICYmIG1f
bmFtZWRHcmlkQXJlYSA9PSBvLm1fbmFtZWRHcmlkQXJlYSAmJiBtX25hbWVkR3JpZEFyZWEgPT0g
by5tX25hbWVkR3JpZEFyZWEKICAgICAgICAgICAgICYmIG1fbmFtZWRHcmlkQXJlYVJvd0NvdW50
ID09IG8ubV9uYW1lZEdyaWRBcmVhUm93Q291bnQgJiYgbV9uYW1lZEdyaWRBcmVhQ29sdW1uQ291
bnQgPT0gby5tX25hbWVkR3JpZEFyZWFDb2x1bW5Db3VudAogICAgICAgICAgICAgJiYgbV9vcmRl
cmVkTmFtZWRHcmlkUm93TGluZXMgPT0gby5tX29yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyAmJiBt
X29yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcyA9PSBvLm1fb3JkZXJlZE5hbWVkR3JpZENvbHVt
bkxpbmVzCi0gICAgICAgICAgICAmJiBtX2dyaWRDb2x1bW5HYXAgPT0gby5tX2dyaWRDb2x1bW5H
YXAgJiYgbV9ncmlkUm93R2FwID09IG8ubV9ncmlkUm93R2FwOworICAgICAgICAgICAgJiYgbV9n
cmlkQ29sdW1uR2FwID09IG8ubV9ncmlkQ29sdW1uR2FwICYmIG1fZ3JpZFJvd0dhcCA9PSBvLm1f
Z3JpZFJvd0dhcAorICAgICAgICAgICAgJiYgbV9ncmlkQXV0b1JlcGVhdENvbHVtbnMgPT0gby5t
X2dyaWRBdXRvUmVwZWF0Q29sdW1ucyAmJiBtX2dyaWRBdXRvUmVwZWF0Um93cyA9PSBvLm1fZ3Jp
ZEF1dG9SZXBlYXRSb3dzCisgICAgICAgICAgICAmJiBtX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0
aW9uUG9pbnQgPT0gby5tX2F1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQgJiYgbV9hdXRv
UmVwZWF0Um93c0luc2VydGlvblBvaW50ID09IG8ubV9hdXRvUmVwZWF0Um93c0luc2VydGlvblBv
aW50CisgICAgICAgICAgICAmJiBtX2F1dG9SZXBlYXRDb2x1bW5zVHlwZSA9PSBvLm1fYXV0b1Jl
cGVhdENvbHVtbnNUeXBlICYmIG1fYXV0b1JlcGVhdFJvd3NUeXBlID09IG8ubV9hdXRvUmVwZWF0
Um93c1R5cGU7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlR3JpZERh
dGEmIG8pIGNvbnN0CkBAIC03Myw2ICs3OCwxMSBAQCBwdWJsaWM6CiAgICAgT3JkZXJlZE5hbWVk
R3JpZExpbmVzTWFwIG1fb3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzOwogICAgIE9yZGVyZWRO
YW1lZEdyaWRMaW5lc01hcCBtX29yZGVyZWROYW1lZEdyaWRSb3dMaW5lczsKIAorICAgIE5hbWVk
R3JpZExpbmVzTWFwIG1fYXV0b1JlcGVhdE5hbWVkR3JpZENvbHVtbkxpbmVzOworICAgIE5hbWVk
R3JpZExpbmVzTWFwIG1fYXV0b1JlcGVhdE5hbWVkR3JpZFJvd0xpbmVzOworICAgIE9yZGVyZWRO
YW1lZEdyaWRMaW5lc01hcCBtX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXM7
CisgICAgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwIG1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdy
aWRSb3dMaW5lczsKKwogICAgIHVuc2lnbmVkIG1fZ3JpZEF1dG9GbG93IDogR3JpZEF1dG9GbG93
Qml0czsKIAogICAgIEdyaWRUcmFja1NpemUgbV9ncmlkQXV0b1Jvd3M7CkBAIC04Nyw2ICs5Nywx
NSBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoIG1fZ3JpZENvbHVtbkdhcDsKICAgICBMZW5ndGggbV9n
cmlkUm93R2FwOwogCisgICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IG1fZ3JpZEF1dG9SZXBlYXRD
b2x1bW5zOworICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBtX2dyaWRBdXRvUmVwZWF0Um93czsK
KworICAgIHVuc2lnbmVkIG1fYXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludDsKKyAgICB1
bnNpZ25lZCBtX2F1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQ7CisKKyAgICBBdXRvUmVwZWF0
VHlwZSBtX2F1dG9SZXBlYXRDb2x1bW5zVHlwZTsKKyAgICBBdXRvUmVwZWF0VHlwZSBtX2F1dG9S
ZXBlYXRSb3dzVHlwZTsKKwogcHJpdmF0ZToKICAgICBTdHlsZUdyaWREYXRhKCk7CiAgICAgU3R5
bGVHcmlkRGF0YShjb25zdCBTdHlsZUdyaWREYXRhJik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>