<?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>160110</bug_id>
          
          <creation_ts>2016-07-22 18:29:00 -0700</creation_ts>
          <short_desc>MathICs should be able to emit only a jump along the inline path when they don&apos;t have any type data</short_desc>
          <delta_ts>2016-07-28 04:57:35 -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>JavaScriptCore</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>
          <dependson>160291</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1213807</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-22 18:29:00 -0700</bug_when>
    <thetext>And we should repatch them on first execution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214357</commentid>
    <comment_count>1</comment_count>
      <attachid>284532</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-25 15:38:52 -0700</bug_when>
    <thetext>Created attachment 284532
WIP

almsot done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214358</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 15:40:21 -0700</bug_when>
    <thetext>Attachment 284532 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITMathIC.h:112:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/JITMathIC.h:124:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214763</commentid>
    <comment_count>3</comment_count>
      <attachid>284656</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-26 17:21:20 -0700</bug_when>
    <thetext>Created attachment 284656
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214764</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 17:23:41 -0700</bug_when>
    <thetext>Attachment 284656 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITMathIC.h:122:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/JITMathIC.h:134:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214921</commentid>
    <comment_count>5</comment_count>
      <attachid>284656</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-27 08:52:11 -0700</bug_when>
    <thetext>Comment on attachment 284656
patch

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

r=me with fixes.

&gt; Source/JavaScriptCore/jit/JITMathIC.h:74
&gt; +                // It looks like the MathIC has yet to execute. We don&apos;t want to emit code in this
&gt; +                // case for a couple reasons. First, the operation may never execute, so if we don&apos;t emit
&gt; +                // code, it&apos;s a win. Second, if the operation does execute, we can emit better code
&gt; +                // once we have an idea about the types of lhs and rhs.

nice!

&gt; Source/JavaScriptCore/jit/JITMathIC.h:81
&gt; +                ASSERT(static_cast&lt;ptrdiff_t&gt;(inlineSize) &lt;= MacroAssembler::maxJumpReplacementSize());

I think you should use ASSERT_UNUSED(inlineSize, ...) here to fix the build breakage.

&gt; Source/JavaScriptCore/jit/JITMathICInlineResult.h:34
&gt; +    DelayFastPath,

I don&apos;t see this used anywhere.  Can remove?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214959</commentid>
    <comment_count>6</comment_count>
      <attachid>284656</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-27 10:34:47 -0700</bug_when>
    <thetext>Comment on attachment 284656
patch

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

&gt;&gt; Source/JavaScriptCore/jit/JITMathICInlineResult.h:34
&gt;&gt; +    DelayFastPath,
&gt; 
&gt; I don&apos;t see this used anywhere.  Can remove?

Yeah. I forgot to remove this. I had this in the original patch but forgot to remove it after I refactored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214977</commentid>
    <comment_count>7</comment_count>
      <attachid>284712</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-27 11:39:00 -0700</bug_when>
    <thetext>Created attachment 284712
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214978</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-27 11:40:57 -0700</bug_when>
    <thetext>Attachment 284712 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITMathIC.h:122:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/JITMathIC.h:134:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214997</commentid>
    <comment_count>9</comment_count>
      <attachid>284712</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-27 12:57:41 -0700</bug_when>
    <thetext>Comment on attachment 284712
patch for landing

Clearing flags on attachment: 284712

Committed r203786: &lt;http://trac.webkit.org/changeset/203786&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214998</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-27 12:57:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284532</attachid>
            <date>2016-07-25 15:38:52 -0700</date>
            <delta_ts>2016-07-26 17:21:20 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>12610</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzNzAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE2LTA3LTI1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IE1hdGhJQ3Mgc2hvdWxkIGJlIGFibGUgdG8gZW1pdCBvbmx5IGEganVtcCBhbG9uZyB0aGUgaW5s
aW5lIHBhdGggd2hlbiB0aGV5IGRvbid0IGhhdmUgYW55IHR5cGUgZGF0YQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMTEwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IGRhdGEgZm9yIGFkZDoKKyAg
ICAgICAgICAgICAgICAgICB8ICAgSmV0U3RyZWFtICB8ICBVbml0eSAzRCAgfAorICAgICAgICAg
ICAgIC0tLS0tLXwgLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICBP
bGQgIHwgICAxNDggYnl0ZXMgIHwgIDE0MyBieXRlcyB8CisgICAgICAgICAgICAgLS0tLS0tfCAt
LS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIE5ldyAgfCAgIDExNiAg
Ynl0ZXMgfCAgMTEzIGJ5dGVzIHwKKyAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworICAgICAgICBOZXcgZGF0YSBmb3IgbXVsOgorICAgICAgICAgICAg
ICAgICAgIHwgICBKZXRTdHJlYW0gIHwgIFVuaXR5IDNEICB8CisgICAgICAgICAgICAgLS0tLS0t
fCAtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIE9sZCAgfCAgIDIx
MCBieXRlcyAgfCAgMTg1IGJ5dGVzIHwKKyAgICAgICAgICAgICAtLS0tLS18IC0tLS0tLS0tLS0t
LS18LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgTmV3ICB8ICAgMTcwICBieXRlcyB8ICAx
MzcgYnl0ZXMgfAorICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisgICAgICAgICogaml0L0pJVEFkZEdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAqIGppdC9KSVRBZGRH
ZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjppc0xlZnRPcGVyYW5k
VmFsaWRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkpJVEFkZEdlbmVyYXRvcjo6aXNSaWdodE9w
ZXJhbmRWYWxpZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjphcml0
aFByb2ZpbGUpOgorICAgICAgICAqIGppdC9KSVRNYXRoSUMuaDoKKyAgICAgICAgKEpTQzo6SklU
TWF0aElDOjpnZW5lcmF0ZUlubGluZSk6CisgICAgICAgIChKU0M6OkpJVE1hdGhJQzo6Z2VuZXJh
dGVPdXRPZkxpbmUpOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OmZpbmFsaXplSW5saW5lQ29k
ZSk6CisgICAgICAgICogaml0L0pJVE1hdGhJQ0lubGluZVJlc3VsdC5oOgorICAgICAgICAqIGpp
dC9KSVRNdWxHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRNdWxHZW5lcmF0b3I6Omdl
bmVyYXRlSW5saW5lKToKKyAgICAgICAgKiBqaXQvSklUTXVsR2VuZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OkpJVE11bEdlbmVyYXRvcjo6aXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQpOgorICAg
ICAgICAoSlNDOjpKSVRNdWxHZW5lcmF0b3I6OmlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudCk6
CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6YXJpdGhQcm9maWxlKToKKyAgICAgICAg
KiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisKIDIwMTYtMDctMjUgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBBc3NlbWJseUhlbHBlcnMgc2hvdWxkIG93biBhbGwg
b2YgdGhlIGNlbGwgYWxsb2NhdGlvbiBtZXRob2RzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMDM2OTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDEyICs0Miw4IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRBZGRHZW5lcmF0b3I6
OmcKICAgICBpZiAobV9hcml0aFByb2ZpbGUpIHsKICAgICAgICAgbGhzID0gbV9hcml0aFByb2Zp
bGUtPmxoc09ic2VydmVkVHlwZSgpOwogICAgICAgICByaHMgPSBtX2FyaXRoUHJvZmlsZS0+cmhz
T2JzZXJ2ZWRUeXBlKCk7Ci0gICAgICAgIGlmIChsaHMuaXNFbXB0eSgpIHx8IHJocy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJQ3Mgc2hvdWxkIGJlIGFibGUgdG8gcmVwYXRj
aCB3aXRob3V0IGVtaXR0aW5nIGFuIGlubGluZSBwYXRoOgotICAgICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDExMAotICAgICAgICAgICAgbGhz
ID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7Ci0gICAgICAgICAgICByaHMgPSBPYnNlcnZl
ZFR5cGUoKS53aXRoSW50MzIoKTsKLSAgICAgICAgfQorICAgICAgICBpZiAobGhzLmlzRW1wdHko
KSB8fCByaHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJl
c3VsdDo6RGVsYXlGYXN0UGF0aDsKICAgICB9CiAKICAgICBpZiAobGhzLmlzT25seU5vbk51bWJl
cigpICYmIHJocy5pc09ubHlOb25OdW1iZXIoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQWRkR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaAkocmV2aXNpb24gMjAzNjkzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjUs
NiArNjUsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50
KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0T3BlcmFuZC5pc0NvbnN0SW50MzIoKTsgfQogICAgIGJv
b2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gbV9yaWdodE9w
ZXJhbmQuaXNDb25zdEludDMyKCk7IH0KKyAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYXJpdGhQcm9maWxlOyB9CiAKIHByaXZhdGU6CiAgICAgU25pcHBl
dE9wZXJhbmQgbV9sZWZ0T3BlcmFuZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTWF0aElDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRN
YXRoSUMuaAkocmV2aXNpb24gMjAzNjk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRNYXRoSUMuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMTUgQEAgcHVibGljOgogICAg
ICAgICAgICAgc3RhdGUuZmFzdFBhdGhFbmQgPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CisgICAgICAgIGNhc2UgSklUTWF0aElDSW5saW5lUmVzdWx0
OjpEZWxheUZhc3RQYXRoOiB7CisgICAgICAgICAgICBzdGF0ZS5zbG93UGF0aEp1bXBzLmFwcGVu
ZChqaXQucGF0Y2hhYmxlSnVtcCgpKTsKKyAgICAgICAgICAgIHN0YXRlLnNob3VsZFNsb3dQYXRo
UmVwYXRjaCA9IHRydWU7CisgICAgICAgICAgICBzdGF0ZS5mYXN0UGF0aEVuZCA9IGppdC5sYWJl
bCgpOworICAgICAgICAgICAgbV9nZW5lcmF0ZUZhc3RQYXRoT25SZXBhdGNoID0gdHJ1ZTsKKyAg
ICAgICAgICAgIHNpemVfdCBpbmxpbmVTaXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNv
ZGVTaXplKCkgLSBzdGFydFNpemU7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNf
Y2FzdDxwdHJkaWZmX3Q+KGlubGluZVNpemUpIDw9IE1hY3JvQXNzZW1ibGVyOjptYXhKdW1wUmVw
bGFjZW1lbnRTaXplKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAg
ICAgICAgY2FzZSBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlRnVsbFNuaXBwZXQ6IHsK
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbmRKdW1wTGlzdDsKICAgICAg
ICAgICAgIGJvb2wgcmVzdWx0ID0gbV9nZW5lcmF0b3IuZ2VuZXJhdGVGYXN0UGF0aChqaXQsIGVu
ZEp1bXBMaXN0LCBzdGF0ZS5zbG93UGF0aEp1bXBzLCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKQEAg
LTEwMCwxMCArMTA5LDYwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2VuZXJhdGVPdXRPZkxpbmUo
Vk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRnVuY3Rpb25QdHIgY2FsbFJlcGxhY2VtZW50
KQogICAgIHsKKyAgICAgICAgYXV0byBsaW5rSnVtcFRvT3V0T2ZMaW5lU25pcHBldCA9IFsmXSAo
KSB7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnMgaml0KCZ2bSwgY29kZUJsb2NrKTsKKyAgICAg
ICAgICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CisgICAgICAgICAgICAvLyBXZSBkb24ndCBu
ZWVkIGEgbm9wIHNsZWQgaGVyZSBiZWNhdXNlIG5vYm9keSBzaG91bGQgYmUganVtcGluZyBpbnRv
IHRoZSBtaWRkbGUgb2YgYW4gSUMuCisgICAgICAgICAgICBib29sIG5lZWRzQnJhbmNoQ29tcGFj
dGlvbiA9IGZhbHNlOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaml0Lm1fYXNzZW1ibGVy
LmJ1ZmZlcigpLmNvZGVTaXplKCkgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2lubGluZVNpemUp
KTsKKyAgICAgICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIG1faW5saW5lU3RhcnQu
ZGF0YUxvY2F0aW9uKCksIGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBKSVRD
b21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVkc0JyYW5jaENvbXBhY3Rpb24pOworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobGlua0J1ZmZlci5pc1ZhbGlkKCkpOworICAgICAgICAgICAgbGlu
a0J1ZmZlci5saW5rKGp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKG1fY29kZS5jb2RlKCkpKTsKKyAg
ICAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJKSVRNYXRoSUM6IGxpbmtpbmcg
Y29uc3RhbnQganVtcCB0byBvdXQgb2YgbGluZSBzdHViIikpOworICAgICAgICB9OworCisgICAg
ICAgIGF1dG8gcmVwbGFjZUNhbGwgPSBbJl0gKCkgeworICAgICAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc2xvd1BhdGhDYWxsTG9jYXRpb24oKSwgY2FsbFJlcGxh
Y2VtZW50KTsKKyAgICAgICAgfTsKKworICAgICAgICBib29sIHNob3VsZEVtaXRQcm9maWxpbmcg
PSAhSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKTsKKworICAg
ICAgICBpZiAobV9nZW5lcmF0ZUZhc3RQYXRoT25SZXBhdGNoKSB7CisgICAgICAgICAgICBtX2dl
bmVyYXRlRmFzdFBhdGhPblJlcGF0Y2ggPSBmYWxzZTsKKworICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzIGppdCgmdm0sIGNvZGVCbG9jayk7CisgICAgICAgICAgICBNYXRoSUNHZW5lcmF0aW9uU3Rh
dGUgZ2VuZXJhdGlvblN0YXRlOworICAgICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBoYXZl
IG1vcmUgZmluZSBncmFpbmVkIHJlc3VsdCBoZXJlIG9mIGdlbmVyYXRlSW5saW5lLgorICAgICAg
ICAgICAgLy8gRm9yIGV4YW1wbGUsIGRvbid0IGxldCBEZWxheUZhc3RQYXRoIG1vcmUgdGhhbiBv
bmNlIQorICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRJbmxpbmUgPSBnZW5lcmF0ZUlubGluZShq
aXQsIGdlbmVyYXRpb25TdGF0ZSwgc2hvdWxkRW1pdFByb2ZpbGluZyk7CisgICAgICAgICAgICBp
ZiAoZ2VuZXJhdGVkSW5saW5lKSB7CisgICAgICAgICAgICAgICAgYXV0byBqdW1wVG9Eb25lID0g
aml0Lmp1bXAoKTsKKworICAgICAgICAgICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcih2bSwg
aml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgICAgICAgICAgICAg
aWYgKCFsaW5rQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbGlua0J1ZmZlci5saW5rKGdlbmVyYXRpb25TdGF0ZS5zbG93UGF0aEp1bXBzLCBzbG93UGF0
aFN0YXJ0TG9jYXRpb24oKSk7CisgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhq
dW1wVG9Eb25lLCBkb25lTG9jYXRpb24oKSk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9jb2Rl
ID0gRklOQUxJWkVfQ09ERV9GT1IoCisgICAgICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2ss
IGxpbmtCdWZmZXIsICgiSklUTWF0aElDOiBnZW5lcmF0aW5nIG91dCBvZiBsaW5lIGZhc3QgSUMg
c25pcHBldCIpKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIWdlbmVyYXRpb25TdGF0ZS5z
aG91bGRTbG93UGF0aFJlcGF0Y2gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdv
bid0IG5lZWQgdG8gcmVnZW5lcmF0ZSwgc28gd2UgY2FuIHdpcmUgdGhlIHNsb3cgcGF0aCBjYWxs
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBhIG5vbiByZXBhdGNoaW5nIHZhcmlhbnQu
CisgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlQ2FsbCgpOworICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgbGlua0p1bXBUb091dE9mTGluZVNuaXBwZXQo
KTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgLy8gV2UgcmV3aXJlIHRvIHRoZSBhbHRl
cm5hdGUgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB3ZSBjYW4gYWxsb2NhdGUgdGhlIG91
dCBvZiBsaW5lIHBhdGgKICAgICAgICAgLy8gYmVjYXVzZSBpZiB3ZSBmYWlsIGFsbG9jYXRpbmcg
dGhlIG91dCBvZiBsaW5lIHBhdGgsIHdlIGRvbid0IHdhbnQgdG8gd2FzdGUgdGltZSB0cnlpbmcg
dG8KICAgICAgICAgLy8gYWxsb2NhdGUgaXQgaW4gdGhlIGZ1dHVyZS4KLSAgICAgICAgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc2xvd1BhdGhDYWxsTG9jYXRpb24oKSwgY2Fs
bFJlcGxhY2VtZW50KTsKKyAgICAgICAgcmVwbGFjZUNhbGwoKTsKIAogICAgICAgICB7CiAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnMgaml0KCZ2bSwgY29kZUJsb2NrKTsKQEAgLTExMSw3ICsxNzAs
NiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZW5kSnVt
cExpc3Q7IAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoSnVt
cExpc3Q7IAogCi0gICAgICAgICAgICBib29sIHNob3VsZEVtaXRQcm9maWxpbmcgPSAhSklUQ29k
ZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKTsKICAgICAgICAgICAgIGJv
b2wgZW1pdHRlZEZhc3RQYXRoID0gbV9nZW5lcmF0b3IuZ2VuZXJhdGVGYXN0UGF0aChqaXQsIGVu
ZEp1bXBMaXN0LCBzbG93UGF0aEp1bXBMaXN0LCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKICAgICAg
ICAgICAgIGlmICghZW1pdHRlZEZhc3RQYXRoKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTEyOCwxNyArMTg2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNvZGVCbG9jaywgbGlu
a0J1ZmZlciwgKCJKSVRNYXRoSUM6IGdlbmVyYXRpbmcgb3V0IG9mIGxpbmUgSUMgc25pcHBldCIp
KTsKICAgICAgICAgfQogCi0gICAgICAgIHsKLSAgICAgICAgICAgIENDYWxsSGVscGVycyBqaXQo
JnZtLCBjb2RlQmxvY2spOwotICAgICAgICAgICAgYXV0byBqdW1wID0gaml0Lmp1bXAoKTsKLSAg
ICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgYSBub3Agc2xlZCBoZXJlIGJlY2F1c2Ugbm9ib2R5
IHNob3VsZCBiZSBqdW1waW5nIGludG8gdGhlIG1pZGRsZSBvZiBhbiBJQy4KLSAgICAgICAgICAg
IGJvb2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7Ci0gICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSA8PSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KG1faW5saW5lU2l6ZSkpOwotICAgICAgICAgICAgTGlua0J1ZmZlciBsaW5rQnVm
ZmVyKGppdCwgbV9pbmxpbmVTdGFydC5kYXRhTG9jYXRpb24oKSwgaml0Lm1fYXNzZW1ibGVyLmJ1
ZmZlcigpLmNvZGVTaXplKCksIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQsIG5lZWRzQnJhbmNo
Q29tcGFjdGlvbik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlzVmFs
aWQoKSk7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgQ29kZUxvY2F0aW9uTGFi
ZWwobV9jb2RlLmNvZGUoKSkpOwotICAgICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVy
LCAoIkpJVE1hdGhJQzogbGlua2luZyBjb25zdGFudCBqdW1wIHRvIG91dCBvZiBsaW5lIHN0dWIi
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgbGlua0p1bXBUb091dE9mTGluZVNuaXBwZXQoKTsKICAg
ICB9CiAKICAgICB2b2lkIGZpbmFsaXplSW5saW5lQ29kZShjb25zdCBNYXRoSUNHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQpAQCAtMTcyLDYgKzIyMCw3IEBA
IHB1YmxpYzoKICAgICBpbnQzMl90IG1faW5saW5lU2l6ZTsKICAgICBpbnQzMl90IG1fZGVsdGFG
cm9tU3RhcnRUb1Nsb3dQYXRoQ2FsbExvY2F0aW9uOwogICAgIGludDMyX3QgbV9kZWx0YUZyb21T
dGFydFRvU2xvd1BhdGhTdGFydDsKKyAgICBib29sIG1fZ2VuZXJhdGVGYXN0UGF0aE9uUmVwYXRj
aCB7IGZhbHNlIH07CiAgICAgR2VuZXJhdG9yVHlwZSBtX2dlbmVyYXRvcjsKIH07CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDSW5saW5lUmVzdWx0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUNJbmxpbmVSZXN1bHQu
aAkocmV2aXNpb24gMjAzNjkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRo
SUNJbmxpbmVSZXN1bHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogZW51bSBjbGFzcyBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgewogICAgIEdlbmVy
YXRlZEZhc3RQYXRoLAorICAgIERlbGF5RmFzdFBhdGgsCiAgICAgR2VuZXJhdGVGdWxsU25pcHBl
dCwKICAgICBEb250R2VuZXJhdGUKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE11bEdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMDM2OTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDEyICs0Miw4IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRNdWxHZW5lcmF0b3I6OmcKICAg
ICBpZiAobV9hcml0aFByb2ZpbGUpIHsKICAgICAgICAgbGhzID0gbV9hcml0aFByb2ZpbGUtPmxo
c09ic2VydmVkVHlwZSgpOwogICAgICAgICByaHMgPSBtX2FyaXRoUHJvZmlsZS0+cmhzT2JzZXJ2
ZWRUeXBlKCk7Ci0gICAgICAgIGlmIChsaHMuaXNFbXB0eSgpIHx8IHJocy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBJQ3Mgc2hvdWxkIGJlIGFibGUgdG8gcmVwYXRjaCB3aXRo
b3V0IGVtaXR0aW5nIGFuIGlubGluZSBwYXRoOgotICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDExMAotICAgICAgICAgICAgbGhzID0gT2Jz
ZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7Ci0gICAgICAgICAgICByaHMgPSBPYnNlcnZlZFR5cGUo
KS53aXRoSW50MzIoKTsKLSAgICAgICAgfQorICAgICAgICBpZiAobGhzLmlzRW1wdHkoKSB8fCBy
aHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6
RGVsYXlGYXN0UGF0aDsKICAgICB9CiAKICAgICBpZiAobGhzLmlzT25seU5vbk51bWJlcigpICYm
IHJocy5pc09ubHlOb25OdW1iZXIoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTXVsR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRNdWxHZW5lcmF0b3IuaAkocmV2aXNpb24gMjAzNjkzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQs
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0xlZnRPcGVyYW5kVmFsaWRDb25zdGFudCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQogICAgIGJv
b2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gbV9yaWdodE9w
ZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQogCisgICAgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2FyaXRoUHJvZmlsZTsgfQorCiBwcml2YXRlOgog
ICAgIFNuaXBwZXRPcGVyYW5kIG1fbGVmdE9wZXJhbmQ7CiAgICAgU25pcHBldE9wZXJhbmQgbV9y
aWdodE9wZXJhbmQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDIwMzY5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMTksMTUgKzIzMTksMTggQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYQogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
CisgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CisgICAgSlNW
YWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CisKICAgICBhdXRvIG5vbk9w
dGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlQWRkTm9PcHRpbWl6ZTsKKyAgICBpZiAoQXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+bV9nZW5lcmF0b3IuYXJpdGhQcm9maWxl
KCkpCisgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAg
ICAgYWRkSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKCp2bSwgZXhlYy0+Y29kZUJsb2NrKCksIG5vbk9w
dGltaXplVmFyaWFudCk7CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKICAgICBleGVjLT5j
b2RlQmxvY2soKS0+ZHVtcE1hdGhJQ1N0YXRzKCk7CiAjZW5kaWYKIAotICAgIEpTVmFsdWUgb3Ax
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwotICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNBZGQo
ZXhlYywgb3AxLCBvcDIpKTsKIH0KIApAQCAtMjM5Miw2ICsyMzk1LDggQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYQogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRp
b25WYWx1ZU11bE5vT3B0aW1pemU7CisgICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gbXVsSUMtPm1fZ2VuZXJhdG9yLmFyaXRoUHJvZmlsZSgpKQorICAgICAgICBhcml0aFByb2Zp
bGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMikpOwogICAgIG11bElDLT5nZW5lcmF0ZU91dE9mTGluZSgqdm0s
IGV4ZWMtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCiAjaWYgRU5BQkxFKE1B
VEhfSUNfU1RBVFMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284656</attachid>
            <date>2016-07-26 17:21:20 -0700</date>
            <delta_ts>2016-07-27 11:39:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>13250</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzNzAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE2LTA3LTI1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IE1hdGhJQ3Mgc2hvdWxkIGJlIGFibGUgdG8gZW1pdCBvbmx5IGEganVtcCBhbG9uZyB0aGUgaW5s
aW5lIHBhdGggd2hlbiB0aGV5IGRvbid0IGhhdmUgYW55IHR5cGUgZGF0YQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMTEwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IGRhdGEgZm9yIGFkZDoKKyAg
ICAgICAgICAgICAgICAgICB8ICAgSmV0U3RyZWFtICB8ICBVbml0eSAzRCAgfAorICAgICAgICAg
ICAgIC0tLS0tLXwgLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICBP
bGQgIHwgICAxNDggYnl0ZXMgIHwgIDE0MyBieXRlcyB8CisgICAgICAgICAgICAgLS0tLS0tfCAt
LS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIE5ldyAgfCAgIDExNiAg
Ynl0ZXMgfCAgMTEzIGJ5dGVzIHwKKyAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworICAgICAgICBOZXcgZGF0YSBmb3IgbXVsOgorICAgICAgICAgICAg
ICAgICAgIHwgICBKZXRTdHJlYW0gIHwgIFVuaXR5IDNEICB8CisgICAgICAgICAgICAgLS0tLS0t
fCAtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIE9sZCAgfCAgIDIx
MCBieXRlcyAgfCAgMTg1IGJ5dGVzIHwKKyAgICAgICAgICAgICAtLS0tLS18IC0tLS0tLS0tLS0t
LS18LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgTmV3ICB8ICAgMTcwICBieXRlcyB8ICAx
MzcgYnl0ZXMgfAorICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisgICAgICAgICogaml0L0pJVEFkZEdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAqIGppdC9KSVRBZGRH
ZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjppc0xlZnRPcGVyYW5k
VmFsaWRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkpJVEFkZEdlbmVyYXRvcjo6aXNSaWdodE9w
ZXJhbmRWYWxpZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjphcml0
aFByb2ZpbGUpOgorICAgICAgICAqIGppdC9KSVRNYXRoSUMuaDoKKyAgICAgICAgKEpTQzo6SklU
TWF0aElDOjpnZW5lcmF0ZUlubGluZSk6CisgICAgICAgIChKU0M6OkpJVE1hdGhJQzo6Z2VuZXJh
dGVPdXRPZkxpbmUpOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OmZpbmFsaXplSW5saW5lQ29k
ZSk6CisgICAgICAgICogaml0L0pJVE1hdGhJQ0lubGluZVJlc3VsdC5oOgorICAgICAgICAqIGpp
dC9KSVRNdWxHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRNdWxHZW5lcmF0b3I6Omdl
bmVyYXRlSW5saW5lKToKKyAgICAgICAgKiBqaXQvSklUTXVsR2VuZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OkpJVE11bEdlbmVyYXRvcjo6aXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQpOgorICAg
ICAgICAoSlNDOjpKSVRNdWxHZW5lcmF0b3I6OmlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudCk6
CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6YXJpdGhQcm9maWxlKToKKyAgICAgICAg
KiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisKIDIwMTYtMDctMjUgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBBc3NlbWJseUhlbHBlcnMgc2hvdWxkIG93biBhbGwg
b2YgdGhlIGNlbGwgYWxsb2NhdGlvbiBtZXRob2RzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMDM2OTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDEyICs0Miw2IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRBZGRHZW5lcmF0b3I6
OmcKICAgICBpZiAobV9hcml0aFByb2ZpbGUpIHsKICAgICAgICAgbGhzID0gbV9hcml0aFByb2Zp
bGUtPmxoc09ic2VydmVkVHlwZSgpOwogICAgICAgICByaHMgPSBtX2FyaXRoUHJvZmlsZS0+cmhz
T2JzZXJ2ZWRUeXBlKCk7Ci0gICAgICAgIGlmIChsaHMuaXNFbXB0eSgpIHx8IHJocy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJQ3Mgc2hvdWxkIGJlIGFibGUgdG8gcmVwYXRj
aCB3aXRob3V0IGVtaXR0aW5nIGFuIGlubGluZSBwYXRoOgotICAgICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDExMAotICAgICAgICAgICAgbGhz
ID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7Ci0gICAgICAgICAgICByaHMgPSBPYnNlcnZl
ZFR5cGUoKS53aXRoSW50MzIoKTsKLSAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChsaHMuaXNP
bmx5Tm9uTnVtYmVyKCkgJiYgcmhzLmlzT25seU5vbk51bWJlcigpKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCShyZXZpc2lvbiAyMDM2OTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNMZWZ0T3BlcmFuZFZh
bGlkQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigp
OyB9CiAgICAgYm9vbCBpc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoKSBjb25zdCB7IHJldHVy
biBtX3JpZ2h0T3BlcmFuZC5pc0NvbnN0SW50MzIoKTsgfQorICAgIEFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KIAogcHJpdmF0ZToK
ICAgICBTbmlwcGV0T3BlcmFuZCBtX2xlZnRPcGVyYW5kOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRNYXRoSUMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE1hdGhJQy5oCShyZXZpc2lvbiAyMDM2OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE1hdGhJQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQXJpdGhQcm9maWxlLmgiCiAjaW5jbHVkZSAi
Q0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiSklUQWRkR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
SklUTWF0aElDSW5saW5lUmVzdWx0LmgiCkBAIC02NCw2ICs2NSwyNCBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBzdGF0ZS5mYXN0UGF0aFN0YXJ0ID0gaml0LmxhYmVsKCk7CiAgICAgICAgIHNp
emVfdCBzdGFydFNpemUgPSBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKTsKKwor
ICAgICAgICBpZiAoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2dlbmVyYXRvci5hcml0
aFByb2ZpbGUoKSkgeworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRU
eXBlKCkuaXNFbXB0eSgpIHx8IGFyaXRoUHJvZmlsZS0+cmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICAgICAgLy8gSXQgbG9va3MgbGlrZSB0aGUgTWF0aElDIGhhcyB5
ZXQgdG8gZXhlY3V0ZS4gV2UgZG9uJ3Qgd2FudCB0byBlbWl0IGNvZGUgaW4gdGhpcworICAgICAg
ICAgICAgICAgIC8vIGNhc2UgZm9yIGEgY291cGxlIHJlYXNvbnMuIEZpcnN0LCB0aGUgb3BlcmF0
aW9uIG1heSBuZXZlciBleGVjdXRlLCBzbyBpZiB3ZSBkb24ndCBlbWl0CisgICAgICAgICAgICAg
ICAgLy8gY29kZSwgaXQncyBhIHdpbi4gU2Vjb25kLCBpZiB0aGUgb3BlcmF0aW9uIGRvZXMgZXhl
Y3V0ZSwgd2UgY2FuIGVtaXQgYmV0dGVyIGNvZGUKKyAgICAgICAgICAgICAgICAvLyBvbmNlIHdl
IGhhdmUgYW4gaWRlYSBhYm91dCB0aGUgdHlwZXMgb2YgbGhzIGFuZCByaHMuCisgICAgICAgICAg
ICAgICAgc3RhdGUuc2xvd1BhdGhKdW1wcy5hcHBlbmQoaml0LnBhdGNoYWJsZUp1bXAoKSk7Cisg
ICAgICAgICAgICAgICAgc3RhdGUuc2hvdWxkU2xvd1BhdGhSZXBhdGNoID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBzdGF0ZS5mYXN0UGF0aEVuZCA9IGppdC5sYWJlbCgpOworICAgICAgICAgICAg
ICAgIEFTU0VSVCghbV9nZW5lcmF0ZUZhc3RQYXRoT25SZXBhdGNoKTsgLy8gV2Ugc2hvdWxkIGhh
dmUgZ2F0aGVyZWQgc29tZSBvYnNlcnZlZCB0eXBlIGluZm8gZm9yIGxocyBhbmQgcmhzIGJlZm9y
ZSB0cnlpbmcgdG8gcmVnZW5lcmF0ZSBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBtX2dlbmVyYXRl
RmFzdFBhdGhPblJlcGF0Y2ggPSB0cnVlOworICAgICAgICAgICAgICAgIHNpemVfdCBpbmxpbmVT
aXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCkgLSBzdGFydFNpemU7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oaW5saW5lU2l6ZSkg
PD0gTWFjcm9Bc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBK
SVRNYXRoSUNJbmxpbmVSZXN1bHQgcmVzdWx0ID0gbV9nZW5lcmF0b3IuZ2VuZXJhdGVJbmxpbmUo
aml0LCBzdGF0ZSk7CiAKICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKQEAgLTEwMCwxMCArMTE5
LDY0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2VuZXJhdGVPdXRPZkxpbmUoVk0mIHZtLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgRnVuY3Rpb25QdHIgY2FsbFJlcGxhY2VtZW50KQogICAgIHsKKyAg
ICAgICAgYXV0byBsaW5rSnVtcFRvT3V0T2ZMaW5lU25pcHBldCA9IFsmXSAoKSB7CisgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnMgaml0KCZ2bSwgY29kZUJsb2NrKTsKKyAgICAgICAgICAgIGF1dG8g
anVtcCA9IGppdC5qdW1wKCk7CisgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIGEgbm9wIHNs
ZWQgaGVyZSBiZWNhdXNlIG5vYm9keSBzaG91bGQgYmUganVtcGluZyBpbnRvIHRoZSBtaWRkbGUg
b2YgYW4gSUMuCisgICAgICAgICAgICBib29sIG5lZWRzQnJhbmNoQ29tcGFjdGlvbiA9IGZhbHNl
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNv
ZGVTaXplKCkgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2lubGluZVNpemUpKTsKKyAgICAgICAg
ICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIG1faW5saW5lU3RhcnQuZGF0YUxvY2F0aW9u
KCksIGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBKSVRDb21waWxhdGlvbk11
c3RTdWNjZWVkLCBuZWVkc0JyYW5jaENvbXBhY3Rpb24pOworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobGlua0J1ZmZlci5pc1ZhbGlkKCkpOworICAgICAgICAgICAgbGlua0J1ZmZlci5saW5r
KGp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKG1fY29kZS5jb2RlKCkpKTsKKyAgICAgICAgICAgIEZJ
TkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJKSVRNYXRoSUM6IGxpbmtpbmcgY29uc3RhbnQganVt
cCB0byBvdXQgb2YgbGluZSBzdHViIikpOworICAgICAgICB9OworCisgICAgICAgIGF1dG8gcmVw
bGFjZUNhbGwgPSBbJl0gKCkgeworICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxs
KGNvZGVCbG9jaywgc2xvd1BhdGhDYWxsTG9jYXRpb24oKSwgY2FsbFJlcGxhY2VtZW50KTsKKyAg
ICAgICAgfTsKKworICAgICAgICBib29sIHNob3VsZEVtaXRQcm9maWxpbmcgPSAhSklUQ29kZTo6
aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKTsKKworICAgICAgICBpZiAobV9n
ZW5lcmF0ZUZhc3RQYXRoT25SZXBhdGNoKSB7CisKKyAgICAgICAgICAgIENDYWxsSGVscGVycyBq
aXQoJnZtLCBjb2RlQmxvY2spOworICAgICAgICAgICAgTWF0aElDR2VuZXJhdGlvblN0YXRlIGdl
bmVyYXRpb25TdGF0ZTsKKyAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkSW5saW5lID0gZ2VuZXJh
dGVJbmxpbmUoaml0LCBnZW5lcmF0aW9uU3RhdGUsIHNob3VsZEVtaXRQcm9maWxpbmcpOworCisg
ICAgICAgICAgICAvLyBXZSBubyBsb25nZXIgd2FudCB0byB0cnkgdG8gcmVnZW5lcmF0ZSB0aGUg
ZmFzdCBwYXRoLgorICAgICAgICAgICAgbV9nZW5lcmF0ZUZhc3RQYXRoT25SZXBhdGNoID0gZmFs
c2U7CisKKyAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRJbmxpbmUpIHsKKyAgICAgICAgICAgICAg
ICBhdXRvIGp1bXBUb0RvbmUgPSBqaXQuanVtcCgpOworCisgICAgICAgICAgICAgICAgTGlua0J1
ZmZlciBsaW5rQnVmZmVyKHZtLCBqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWls
KTsKKyAgICAgICAgICAgICAgICBpZiAoIWxpbmtCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkg
eworICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZ2VuZXJhdGlvblN0YXRlLnNs
b3dQYXRoSnVtcHMsIHNsb3dQYXRoU3RhcnRMb2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICAg
ICAgbGlua0J1ZmZlci5saW5rKGp1bXBUb0RvbmUsIGRvbmVMb2NhdGlvbigpKTsKKworICAgICAg
ICAgICAgICAgICAgICBtX2NvZGUgPSBGSU5BTElaRV9DT0RFX0ZPUigKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvZGVCbG9jaywgbGlua0J1ZmZlciwgKCJKSVRNYXRoSUM6IGdlbmVyYXRpbmcg
b3V0IG9mIGxpbmUgZmFzdCBJQyBzbmlwcGV0IikpOworCisgICAgICAgICAgICAgICAgICAgIGlm
ICghZ2VuZXJhdGlvblN0YXRlLnNob3VsZFNsb3dQYXRoUmVwYXRjaCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gV2Ugd29uJ3QgbmVlZCB0byByZWdlbmVyYXRlLCBzbyB3ZSBjYW4gd2ly
ZSB0aGUgc2xvdyBwYXRoIGNhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGEgbm9u
IHJlcGF0Y2hpbmcgdmFyaWFudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VDYWxs
KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBsaW5rSnVt
cFRvT3V0T2ZMaW5lU25pcHBldCgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IC8vIFdlIHdlcmVuJ3QgYWJsZSB0byBnZW5lcmF0ZSBhbiBvdXQgb2YgbGluZSBmYXN0IHBhdGgu
CisgICAgICAgICAgICAvLyBXZSBqdXN0IGdlbmVyYXRlIHRoZSBzbmlwcGV0IGluIGl0cyBmdWxs
IGdlbmVyYWxpdHkuCisgICAgICAgIH0KKwogICAgICAgICAvLyBXZSByZXdpcmUgdG8gdGhlIGFs
dGVybmF0ZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHdlIGNhbiBhbGxvY2F0ZSB0aGUg
b3V0IG9mIGxpbmUgcGF0aAogICAgICAgICAvLyBiZWNhdXNlIGlmIHdlIGZhaWwgYWxsb2NhdGlu
ZyB0aGUgb3V0IG9mIGxpbmUgcGF0aCwgd2UgZG9uJ3Qgd2FudCB0byB3YXN0ZSB0aW1lIHRyeWlu
ZyB0bwogICAgICAgICAvLyBhbGxvY2F0ZSBpdCBpbiB0aGUgZnV0dXJlLgotICAgICAgICBmdGxU
aHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzbG93UGF0aENhbGxMb2NhdGlvbigpLCBj
YWxsUmVwbGFjZW1lbnQpOworICAgICAgICByZXBsYWNlQ2FsbCgpOwogCiAgICAgICAgIHsKICAg
ICAgICAgICAgIENDYWxsSGVscGVycyBqaXQoJnZtLCBjb2RlQmxvY2spOwpAQCAtMTExLDcgKzE4
NCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbmRK
dW1wTGlzdDsgCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGhK
dW1wTGlzdDsgCiAKLSAgICAgICAgICAgIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyA9ICFKSVRD
b2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpOwogICAgICAgICAgICAg
Ym9vbCBlbWl0dGVkRmFzdFBhdGggPSBtX2dlbmVyYXRvci5nZW5lcmF0ZUZhc3RQYXRoKGppdCwg
ZW5kSnVtcExpc3QsIHNsb3dQYXRoSnVtcExpc3QsIHNob3VsZEVtaXRQcm9maWxpbmcpOwogICAg
ICAgICAgICAgaWYgKCFlbWl0dGVkRmFzdFBhdGgpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTI4LDE3ICsyMDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgY29kZUJsb2NrLCBs
aW5rQnVmZmVyLCAoIkpJVE1hdGhJQzogZ2VuZXJhdGluZyBvdXQgb2YgbGluZSBJQyBzbmlwcGV0
IikpOwogICAgICAgICB9CiAKLSAgICAgICAgewotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzIGpp
dCgmdm0sIGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOwot
ICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIG5vcCBzbGVkIGhlcmUgYmVjYXVzZSBub2Jv
ZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUgbWlkZGxlIG9mIGFuIElDLgotICAgICAgICAg
ICAgYm9vbCBuZWVkc0JyYW5jaENvbXBhY3Rpb24gPSBmYWxzZTsKLSAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpIDw9IHN0YXRpY19j
YXN0PHNpemVfdD4obV9pbmxpbmVTaXplKSk7Ci0gICAgICAgICAgICBMaW5rQnVmZmVyIGxpbmtC
dWZmZXIoaml0LCBtX2lubGluZVN0YXJ0LmRhdGFMb2NhdGlvbigpLCBqaXQubV9hc3NlbWJsZXIu
YnVmZmVyKCkuY29kZVNpemUoKSwgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwgbmVlZHNCcmFu
Y2hDb21wYWN0aW9uKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNW
YWxpZCgpKTsKLSAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCBDb2RlTG9jYXRpb25M
YWJlbChtX2NvZGUuY29kZSgpKSk7Ci0gICAgICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZm
ZXIsICgiSklUTWF0aElDOiBsaW5raW5nIGNvbnN0YW50IGp1bXAgdG8gb3V0IG9mIGxpbmUgc3R1
YiIpKTsKLSAgICAgICAgfQorICAgICAgICBsaW5rSnVtcFRvT3V0T2ZMaW5lU25pcHBldCgpOwog
ICAgIH0KIAogICAgIHZvaWQgZmluYWxpemVJbmxpbmVDb2RlKGNvbnN0IE1hdGhJQ0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCkBAIC0xNzIsNiArMjM0LDcg
QEAgcHVibGljOgogICAgIGludDMyX3QgbV9pbmxpbmVTaXplOwogICAgIGludDMyX3QgbV9kZWx0
YUZyb21TdGFydFRvU2xvd1BhdGhDYWxsTG9jYXRpb247CiAgICAgaW50MzJfdCBtX2RlbHRhRnJv
bVN0YXJ0VG9TbG93UGF0aFN0YXJ0OworICAgIGJvb2wgbV9nZW5lcmF0ZUZhc3RQYXRoT25SZXBh
dGNoIHsgZmFsc2UgfTsKICAgICBHZW5lcmF0b3JUeXBlIG1fZ2VuZXJhdG9yOwogfTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUNJbmxpbmVSZXN1bHQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQ0lubGluZVJlc3Vs
dC5oCShyZXZpc2lvbiAyMDM2OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1h
dGhJQ0lubGluZVJlc3VsdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBlbnVtIGNsYXNzIEpJVE1hdGhJQ0lubGluZVJlc3VsdCB7CiAgICAgR2Vu
ZXJhdGVkRmFzdFBhdGgsCisgICAgRGVsYXlGYXN0UGF0aCwKICAgICBHZW5lcmF0ZUZ1bGxTbmlw
cGV0LAogICAgIERvbnRHZW5lcmF0ZQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUTXVsR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDIwMzY5MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIsMTIgKzQyLDYgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE11bEdlbmVyYXRvcjo6Zwog
ICAgIGlmIChtX2FyaXRoUHJvZmlsZSkgewogICAgICAgICBsaHMgPSBtX2FyaXRoUHJvZmlsZS0+
bGhzT2JzZXJ2ZWRUeXBlKCk7CiAgICAgICAgIHJocyA9IG1fYXJpdGhQcm9maWxlLT5yaHNPYnNl
cnZlZFR5cGUoKTsKLSAgICAgICAgaWYgKGxocy5pc0VtcHR5KCkgfHwgcmhzLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgLy8gRklYTUU6IElDcyBzaG91bGQgYmUgYWJsZSB0byByZXBhdGNoIHdp
dGhvdXQgZW1pdHRpbmcgYW4gaW5saW5lIHBhdGg6Ci0gICAgICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMTEwCi0gICAgICAgICAgICBsaHMgPSBP
YnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsKLSAgICAgICAgICAgIHJocyA9IE9ic2VydmVkVHlw
ZSgpLndpdGhJbnQzMigpOwotICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGxocy5pc09ubHlO
b25OdW1iZXIoKSAmJiByaHMuaXNPbmx5Tm9uTnVtYmVyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgJKHJldmlzaW9uIDIwMzY5MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDYgKzY0LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlkQ29u
c3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2xlZnRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMy
KCk7IH0KICAgICBib29sIGlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmlnaHRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KIAorICAgIEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0K
KwogcHJpdmF0ZToKICAgICBTbmlwcGV0T3BlcmFuZCBtX2xlZnRPcGVyYW5kOwogICAgIFNuaXBw
ZXRPcGVyYW5kIG1fcmlnaHRPcGVyYW5kOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDM2OTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzE5LDE1
ICsyMzE5LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmEKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKIAorICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cDEpOworICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOworCiAg
ICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZUFkZE5vT3B0aW1pemU7
CisgICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPm1fZ2VuZXJhdG9y
LmFyaXRoUHJvZmlsZSgpKQorICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMo
b3AxLCBvcDIpOwogICAgIGFkZElDLT5nZW5lcmF0ZU91dE9mTGluZSgqdm0sIGV4ZWMtPmNvZGVC
bG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMp
CiAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmR1bXBNYXRoSUNTdGF0cygpOwogI2VuZGlmCiAKLSAg
ICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLSAgICBKU1ZhbHVl
IG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQWRkKGV4ZWMsIG9wMSwgb3AyKSk7CiB9CiAKQEAgLTIzOTIsNiArMjM5NSw4IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmEKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJp
YW50ID0gb3BlcmF0aW9uVmFsdWVNdWxOb09wdGltaXplOworICAgIGlmIChBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IG11bElDLT5tX2dlbmVyYXRvci5hcml0aFByb2ZpbGUoKSkKKyAgICAg
ICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBtdWxJQy0+Z2VuZXJhdGVP
dXRPZkxpbmUoKnZtLCBleGVjLT5jb2RlQmxvY2soKSwgbm9uT3B0aW1pemVWYXJpYW50KTsKIAog
I2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQo=
</data>
<flag name="review"
          id="308295"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284712</attachid>
            <date>2016-07-27 11:39:00 -0700</date>
            <delta_ts>2016-07-27 12:57:41 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>13385</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzNzAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDE2LTA3LTI1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IE1hdGhJQ3Mgc2hvdWxkIGJlIGFibGUgdG8gZW1pdCBvbmx5IGEganVtcCBhbG9uZyB0aGUgaW5s
aW5lIHBhdGggd2hlbiB0aGV5IGRvbid0IGhhdmUgYW55IHR5cGUgZGF0YQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMTEwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTWFyayBMYW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbGxvd3MgZm9yIE1hdGhJ
QyBmYXN0LXBhdGggZ2VuZXJhdGlvbiB0byBiZSBkZWxheWVkLgorICAgICAgICBXZSBkZWxheSB3
aGVuIHdlIGRvbid0IHNlZSBhbnkgb2JzZXJ2ZWQgdHlwZSBpbmZvcm1hdGlvbiBmb3IKKyAgICAg
ICAgdGhlIGxocy9yaHMgb3BlcmFuZCwgd2hpY2ggaW1wbGllcyB0aGF0IHRoZSBNYXRoSUMgaGFz
IG5ldmVyCisgICAgICAgIGV4ZWN1dGVkLiBUaGlzIGlzIHByb2ZpdGFibGUgZm9yIHR3byBtYWlu
IHJlYXNvbnM6CisgICAgICAgIDEuIElmIHRoZSBtYXRoIG9wZXJhdGlvbiBuZXZlciBleGVjdXRl
cywgd2UgZW1pdCBtdWNoIGxlc3MgY29kZS4KKyAgICAgICAgMi4gT25jZSB3ZSBnZXQgdHlwZSBp
bmZvcm1hdGlvbiBmb3IgdGhlIGxocy9yaHMsIHdlIGNhbiBlbWl0IGJldHRlciBjb2RlLgorCisg
ICAgICAgIFRvIGltcGxlbWVudCB0aGlzLCB3ZSBqdXN0IGVtaXQgYSBqdW1wIHRvIHRoZSBzbG93
IHBhdGggY2FsbAorICAgICAgICB0aGF0IHdpbGwgcmVwYXRjaCBvbiBmaXJzdCBleGVjdXRpb24u
CisKKyAgICAgICAgTmV3IGRhdGEgZm9yIGFkZDoKKyAgICAgICAgICAgICAgICAgICB8ICAgSmV0
U3RyZWFtICB8ICBVbml0eSAzRCAgfAorICAgICAgICAgICAgIC0tLS0tLXwgLS0tLS0tLS0tLS0t
LXwtLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICBPbGQgIHwgICAxNDggYnl0ZXMgIHwgIDE0
MyBieXRlcyB8CisgICAgICAgICAgICAgLS0tLS0tfCAtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0t
LS0tCisgICAgICAgICAgICAgIE5ldyAgfCAgIDExNiAgYnl0ZXMgfCAgMTEzIGJ5dGVzIHwKKyAg
ICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAg
ICBOZXcgZGF0YSBmb3IgbXVsOgorICAgICAgICAgICAgICAgICAgIHwgICBKZXRTdHJlYW0gIHwg
IFVuaXR5IDNEICB8CisgICAgICAgICAgICAgLS0tLS0tfCAtLS0tLS0tLS0tLS0tfC0tLS0tLS0t
LS0tLS0tCisgICAgICAgICAgICAgIE9sZCAgfCAgIDIxMCBieXRlcyAgfCAgMTg1IGJ5dGVzIHwK
KyAgICAgICAgICAgICAtLS0tLS18IC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0KKyAgICAg
ICAgICAgICAgTmV3ICB8ICAgMTcwICBieXRlcyB8ICAxMzcgYnl0ZXMgfAorICAgICAgICAgICAg
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgICAgICogaml0L0pJ
VEFkZEdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJh
dGVJbmxpbmUpOgorICAgICAgICAqIGppdC9KSVRBZGRHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6SklUQWRkR2VuZXJhdG9yOjppc0xlZnRPcGVyYW5kVmFsaWRDb25zdGFudCk6CisgICAgICAg
IChKU0M6OkpJVEFkZEdlbmVyYXRvcjo6aXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KToKKyAg
ICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjphcml0aFByb2ZpbGUpOgorICAgICAgICAqIGpp
dC9KSVRNYXRoSUMuaDoKKyAgICAgICAgKEpTQzo6SklUTWF0aElDOjpnZW5lcmF0ZUlubGluZSk6
CisgICAgICAgIChKU0M6OkpJVE1hdGhJQzo6Z2VuZXJhdGVPdXRPZkxpbmUpOgorICAgICAgICAo
SlNDOjpKSVRNYXRoSUM6OmZpbmFsaXplSW5saW5lQ29kZSk6CisgICAgICAgICogaml0L0pJVE1h
dGhJQ0lubGluZVJlc3VsdC5oOgorICAgICAgICAqIGppdC9KSVRNdWxHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKToKKyAgICAgICAg
KiBqaXQvSklUTXVsR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6
aXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpKSVRNdWxHZW5lcmF0
b3I6OmlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkpJVE11bEdl
bmVyYXRvcjo6YXJpdGhQcm9maWxlKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6
CisKIDIwMTYtMDctMjUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBc3NlbWJseUhlbHBlcnMgc2hvdWxkIG93biBhbGwgb2YgdGhlIGNlbGwgYWxsb2NhdGlvbiBt
ZXRob2RzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0
b3IuY3BwCShyZXZpc2lvbiAyMDM2OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEFkZEdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEyICs0Miw2IEBAIEpJVE1h
dGhJQ0lubGluZVJlc3VsdCBKSVRBZGRHZW5lcmF0b3I6OmcKICAgICBpZiAobV9hcml0aFByb2Zp
bGUpIHsKICAgICAgICAgbGhzID0gbV9hcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpOwog
ICAgICAgICByaHMgPSBtX2FyaXRoUHJvZmlsZS0+cmhzT2JzZXJ2ZWRUeXBlKCk7Ci0gICAgICAg
IGlmIChsaHMuaXNFbXB0eSgpIHx8IHJocy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBJQ3Mgc2hvdWxkIGJlIGFibGUgdG8gcmVwYXRjaCB3aXRob3V0IGVtaXR0aW5nIGFuIGlu
bGluZSBwYXRoOgotICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MDExMAotICAgICAgICAgICAgbGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aElu
dDMyKCk7Ci0gICAgICAgICAgICByaHMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsKLSAg
ICAgICAgfQogICAgIH0KIAogICAgIGlmIChsaHMuaXNPbmx5Tm9uTnVtYmVyKCkgJiYgcmhzLmlz
T25seU5vbk51bWJlcigpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRH
ZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFk
ZEdlbmVyYXRvci5oCShyZXZpc2lvbiAyMDM2OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFkZEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQoKSBjb25zdCB7IHJl
dHVybiBtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpOyB9CiAgICAgYm9vbCBpc1JpZ2h0T3Bl
cmFuZFZhbGlkQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX3JpZ2h0T3BlcmFuZC5pc0NvbnN0
SW50MzIoKTsgfQorICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKCkgY29uc3QgeyByZXR1
cm4gbV9hcml0aFByb2ZpbGU7IH0KIAogcHJpdmF0ZToKICAgICBTbmlwcGV0T3BlcmFuZCBtX2xl
ZnRPcGVyYW5kOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCShyZXZp
c2lvbiAyMDM2OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5j
bHVkZSAiQXJpdGhQcm9maWxlLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVk
ZSAiSklUQWRkR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUTWF0aElDSW5saW5lUmVzdWx0Lmgi
CkBAIC02NCw2ICs2NSwyNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdGF0ZS5mYXN0UGF0
aFN0YXJ0ID0gaml0LmxhYmVsKCk7CiAgICAgICAgIHNpemVfdCBzdGFydFNpemUgPSBqaXQubV9h
c3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKTsKKworICAgICAgICBpZiAoQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBtX2dlbmVyYXRvci5hcml0aFByb2ZpbGUoKSkgeworICAgICAgICAg
ICAgaWYgKGFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpIHx8IGFyaXRo
UHJvZmlsZS0+cmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg
Ly8gSXQgbG9va3MgbGlrZSB0aGUgTWF0aElDIGhhcyB5ZXQgdG8gZXhlY3V0ZS4gV2UgZG9uJ3Qg
d2FudCB0byBlbWl0IGNvZGUgaW4gdGhpcworICAgICAgICAgICAgICAgIC8vIGNhc2UgZm9yIGEg
Y291cGxlIHJlYXNvbnMuIEZpcnN0LCB0aGUgb3BlcmF0aW9uIG1heSBuZXZlciBleGVjdXRlLCBz
byBpZiB3ZSBkb24ndCBlbWl0CisgICAgICAgICAgICAgICAgLy8gY29kZSwgaXQncyBhIHdpbi4g
U2Vjb25kLCBpZiB0aGUgb3BlcmF0aW9uIGRvZXMgZXhlY3V0ZSwgd2UgY2FuIGVtaXQgYmV0dGVy
IGNvZGUKKyAgICAgICAgICAgICAgICAvLyBvbmNlIHdlIGhhdmUgYW4gaWRlYSBhYm91dCB0aGUg
dHlwZXMgb2YgbGhzIGFuZCByaHMuCisgICAgICAgICAgICAgICAgc3RhdGUuc2xvd1BhdGhKdW1w
cy5hcHBlbmQoaml0LnBhdGNoYWJsZUp1bXAoKSk7CisgICAgICAgICAgICAgICAgc3RhdGUuc2hv
dWxkU2xvd1BhdGhSZXBhdGNoID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzdGF0ZS5mYXN0UGF0
aEVuZCA9IGppdC5sYWJlbCgpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9nZW5lcmF0ZUZh
c3RQYXRoT25SZXBhdGNoKTsgLy8gV2Ugc2hvdWxkIGhhdmUgZ2F0aGVyZWQgc29tZSBvYnNlcnZl
ZCB0eXBlIGluZm8gZm9yIGxocyBhbmQgcmhzIGJlZm9yZSB0cnlpbmcgdG8gcmVnZW5lcmF0ZSBh
Z2Fpbi4KKyAgICAgICAgICAgICAgICBtX2dlbmVyYXRlRmFzdFBhdGhPblJlcGF0Y2ggPSB0cnVl
OworICAgICAgICAgICAgICAgIHNpemVfdCBpbmxpbmVTaXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1
ZmZlcigpLmNvZGVTaXplKCkgLSBzdGFydFNpemU7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChpbmxpbmVTaXplLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KGlubGluZVNpemUpIDw9IE1h
Y3JvQXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOworICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgSklUTWF0
aElDSW5saW5lUmVzdWx0IHJlc3VsdCA9IG1fZ2VuZXJhdG9yLmdlbmVyYXRlSW5saW5lKGppdCwg
c3RhdGUpOwogCiAgICAgICAgIHN3aXRjaCAocmVzdWx0KSB7CkBAIC0xMDAsMTAgKzExOSw2NCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGdlbmVyYXRlT3V0T2ZMaW5lKFZNJiB2bSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEZ1bmN0aW9uUHRyIGNhbGxSZXBsYWNlbWVudCkKICAgICB7CisgICAgICAg
IGF1dG8gbGlua0p1bXBUb091dE9mTGluZVNuaXBwZXQgPSBbJl0gKCkgeworICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzIGppdCgmdm0sIGNvZGVCbG9jayk7CisgICAgICAgICAgICBhdXRvIGp1bXAg
PSBqaXQuanVtcCgpOworICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIG5vcCBzbGVkIGhl
cmUgYmVjYXVzZSBub2JvZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUgbWlkZGxlIG9mIGFu
IElDLgorICAgICAgICAgICAgYm9vbCBuZWVkc0JyYW5jaENvbXBhY3Rpb24gPSBmYWxzZTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6
ZSgpIDw9IHN0YXRpY19jYXN0PHNpemVfdD4obV9pbmxpbmVTaXplKSk7CisgICAgICAgICAgICBM
aW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBtX2lubGluZVN0YXJ0LmRhdGFMb2NhdGlvbigpLCBq
aXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSwgSklUQ29tcGlsYXRpb25NdXN0U3Vj
Y2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKKyAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1w
LCBDb2RlTG9jYXRpb25MYWJlbChtX2NvZGUuY29kZSgpKSk7CisgICAgICAgICAgICBGSU5BTEla
RV9DT0RFKGxpbmtCdWZmZXIsICgiSklUTWF0aElDOiBsaW5raW5nIGNvbnN0YW50IGp1bXAgdG8g
b3V0IG9mIGxpbmUgc3R1YiIpKTsKKyAgICAgICAgfTsKKworICAgICAgICBhdXRvIHJlcGxhY2VD
YWxsID0gWyZdICgpIHsKKyAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2Rl
QmxvY2ssIHNsb3dQYXRoQ2FsbExvY2F0aW9uKCksIGNhbGxSZXBsYWNlbWVudCk7CisgICAgICAg
IH07CisKKyAgICAgICAgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nID0gIUpJVENvZGU6OmlzT3B0
aW1pemluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSk7CisKKyAgICAgICAgaWYgKG1fZ2VuZXJh
dGVGYXN0UGF0aE9uUmVwYXRjaCkgeworCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnMgaml0KCZ2
bSwgY29kZUJsb2NrKTsKKyAgICAgICAgICAgIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSBnZW5lcmF0
aW9uU3RhdGU7CisgICAgICAgICAgICBib29sIGdlbmVyYXRlZElubGluZSA9IGdlbmVyYXRlSW5s
aW5lKGppdCwgZ2VuZXJhdGlvblN0YXRlLCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKworICAgICAg
ICAgICAgLy8gV2Ugbm8gbG9uZ2VyIHdhbnQgdG8gdHJ5IHRvIHJlZ2VuZXJhdGUgdGhlIGZhc3Qg
cGF0aC4KKyAgICAgICAgICAgIG1fZ2VuZXJhdGVGYXN0UGF0aE9uUmVwYXRjaCA9IGZhbHNlOwor
CisgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkSW5saW5lKSB7CisgICAgICAgICAgICAgICAgYXV0
byBqdW1wVG9Eb25lID0gaml0Lmp1bXAoKTsKKworICAgICAgICAgICAgICAgIExpbmtCdWZmZXIg
bGlua0J1ZmZlcih2bSwgaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFsaW5rQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGdlbmVyYXRpb25TdGF0ZS5zbG93UGF0
aEp1bXBzLCBzbG93UGF0aFN0YXJ0TG9jYXRpb24oKSk7CisgICAgICAgICAgICAgICAgICAgIGxp
bmtCdWZmZXIubGluayhqdW1wVG9Eb25lLCBkb25lTG9jYXRpb24oKSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgbV9jb2RlID0gRklOQUxJWkVfQ09ERV9GT1IoCisgICAgICAgICAgICAgICAgICAg
ICAgICBjb2RlQmxvY2ssIGxpbmtCdWZmZXIsICgiSklUTWF0aElDOiBnZW5lcmF0aW5nIG91dCBv
ZiBsaW5lIGZhc3QgSUMgc25pcHBldCIpKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIWdl
bmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0Y2gpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFdlIHdvbid0IG5lZWQgdG8gcmVnZW5lcmF0ZSwgc28gd2UgY2FuIHdpcmUgdGhl
IHNsb3cgcGF0aCBjYWxsCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBhIG5vbiByZXBh
dGNoaW5nIHZhcmlhbnQuCisgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlQ2FsbCgpOwor
ICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgbGlua0p1bXBUb091
dE9mTGluZVNuaXBwZXQoKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBX
ZSB3ZXJlbid0IGFibGUgdG8gZ2VuZXJhdGUgYW4gb3V0IG9mIGxpbmUgZmFzdCBwYXRoLgorICAg
ICAgICAgICAgLy8gV2UganVzdCBnZW5lcmF0ZSB0aGUgc25pcHBldCBpbiBpdHMgZnVsbCBnZW5l
cmFsaXR5LgorICAgICAgICB9CisKICAgICAgICAgLy8gV2UgcmV3aXJlIHRvIHRoZSBhbHRlcm5h
dGUgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB3ZSBjYW4gYWxsb2NhdGUgdGhlIG91dCBv
ZiBsaW5lIHBhdGgKICAgICAgICAgLy8gYmVjYXVzZSBpZiB3ZSBmYWlsIGFsbG9jYXRpbmcgdGhl
IG91dCBvZiBsaW5lIHBhdGgsIHdlIGRvbid0IHdhbnQgdG8gd2FzdGUgdGltZSB0cnlpbmcgdG8K
ICAgICAgICAgLy8gYWxsb2NhdGUgaXQgaW4gdGhlIGZ1dHVyZS4KLSAgICAgICAgZnRsVGh1bmtB
d2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc2xvd1BhdGhDYWxsTG9jYXRpb24oKSwgY2FsbFJl
cGxhY2VtZW50KTsKKyAgICAgICAgcmVwbGFjZUNhbGwoKTsKIAogICAgICAgICB7CiAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnMgaml0KCZ2bSwgY29kZUJsb2NrKTsKQEAgLTExMSw3ICsxODQsNiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZW5kSnVtcExp
c3Q7IAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoSnVtcExp
c3Q7IAogCi0gICAgICAgICAgICBib29sIHNob3VsZEVtaXRQcm9maWxpbmcgPSAhSklUQ29kZTo6
aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKTsKICAgICAgICAgICAgIGJvb2wg
ZW1pdHRlZEZhc3RQYXRoID0gbV9nZW5lcmF0b3IuZ2VuZXJhdGVGYXN0UGF0aChqaXQsIGVuZEp1
bXBMaXN0LCBzbG93UGF0aEp1bXBMaXN0LCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKICAgICAgICAg
ICAgIGlmICghZW1pdHRlZEZhc3RQYXRoKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEy
OCwxNyArMjAwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNvZGVCbG9jaywgbGlua0J1
ZmZlciwgKCJKSVRNYXRoSUM6IGdlbmVyYXRpbmcgb3V0IG9mIGxpbmUgSUMgc25pcHBldCIpKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHsKLSAgICAgICAgICAgIENDYWxsSGVscGVycyBqaXQoJnZt
LCBjb2RlQmxvY2spOwotICAgICAgICAgICAgYXV0byBqdW1wID0gaml0Lmp1bXAoKTsKLSAgICAg
ICAgICAgIC8vIFdlIGRvbid0IG5lZWQgYSBub3Agc2xlZCBoZXJlIGJlY2F1c2Ugbm9ib2R5IHNo
b3VsZCBiZSBqdW1waW5nIGludG8gdGhlIG1pZGRsZSBvZiBhbiBJQy4KLSAgICAgICAgICAgIGJv
b2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7Ci0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSA8PSBzdGF0aWNfY2FzdDxz
aXplX3Q+KG1faW5saW5lU2l6ZSkpOwotICAgICAgICAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVy
KGppdCwgbV9pbmxpbmVTdGFydC5kYXRhTG9jYXRpb24oKSwgaml0Lm1fYXNzZW1ibGVyLmJ1ZmZl
cigpLmNvZGVTaXplKCksIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQsIG5lZWRzQnJhbmNoQ29t
cGFjdGlvbik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlzVmFsaWQo
KSk7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgQ29kZUxvY2F0aW9uTGFiZWwo
bV9jb2RlLmNvZGUoKSkpOwotICAgICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAo
IkpJVE1hdGhJQzogbGlua2luZyBjb25zdGFudCBqdW1wIHRvIG91dCBvZiBsaW5lIHN0dWIiKSk7
Ci0gICAgICAgIH0KKyAgICAgICAgbGlua0p1bXBUb091dE9mTGluZVNuaXBwZXQoKTsKICAgICB9
CiAKICAgICB2b2lkIGZpbmFsaXplSW5saW5lQ29kZShjb25zdCBNYXRoSUNHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQpAQCAtMTcyLDYgKzIzNCw3IEBAIHB1
YmxpYzoKICAgICBpbnQzMl90IG1faW5saW5lU2l6ZTsKICAgICBpbnQzMl90IG1fZGVsdGFGcm9t
U3RhcnRUb1Nsb3dQYXRoQ2FsbExvY2F0aW9uOwogICAgIGludDMyX3QgbV9kZWx0YUZyb21TdGFy
dFRvU2xvd1BhdGhTdGFydDsKKyAgICBib29sIG1fZ2VuZXJhdGVGYXN0UGF0aE9uUmVwYXRjaCB7
IGZhbHNlIH07CiAgICAgR2VuZXJhdG9yVHlwZSBtX2dlbmVyYXRvcjsKIH07CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAJKHJldmlzaW9u
IDIwMzY5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTIgKzQyLDYgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0
IEpJVE11bEdlbmVyYXRvcjo6ZwogICAgIGlmIChtX2FyaXRoUHJvZmlsZSkgewogICAgICAgICBs
aHMgPSBtX2FyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCk7CiAgICAgICAgIHJocyA9IG1f
YXJpdGhQcm9maWxlLT5yaHNPYnNlcnZlZFR5cGUoKTsKLSAgICAgICAgaWYgKGxocy5pc0VtcHR5
KCkgfHwgcmhzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IElDcyBzaG91bGQg
YmUgYWJsZSB0byByZXBhdGNoIHdpdGhvdXQgZW1pdHRpbmcgYW4gaW5saW5lIHBhdGg6Ci0gICAg
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMTEw
Ci0gICAgICAgICAgICBsaHMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsKLSAgICAgICAg
ICAgIHJocyA9IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwotICAgICAgICB9CiAgICAgfQog
CiAgICAgaWYgKGxocy5pc09ubHlOb25OdW1iZXIoKSAmJiByaHMuaXNPbmx5Tm9uTnVtYmVyKCkp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgJKHJl
dmlzaW9uIDIwMzY5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJh
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDggQEAgcHVibGljOgogICAgIGJvb2wg
aXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2xlZnRPcGVyYW5k
LmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBib29sIGlzUmlnaHRPcGVyYW5kVmFsaWRD
b25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdElu
dDMyKCk7IH0KIAorICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKCkgY29uc3QgeyByZXR1
cm4gbV9hcml0aFByb2ZpbGU7IH0KKwogcHJpdmF0ZToKICAgICBTbmlwcGV0T3BlcmFuZCBtX2xl
ZnRPcGVyYW5kOwogICAgIFNuaXBwZXRPcGVyYW5kIG1fcmlnaHRPcGVyYW5kOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDM2
OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzE5LDE1ICsyMzE5LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmEKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAorICAgIEpTVmFsdWUgb3AxID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOworICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDIpOworCiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRp
b25WYWx1ZUFkZE5vT3B0aW1pemU7CisgICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gYWRkSUMtPm1fZ2VuZXJhdG9yLmFyaXRoUHJvZmlsZSgpKQorICAgICAgICBhcml0aFByb2Zp
bGUtPm9ic2VydmVMSFNBbmRSSFMob3AxLCBvcDIpOwogICAgIGFkZElDLT5nZW5lcmF0ZU91dE9m
TGluZSgqdm0sIGV4ZWMtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCiAjaWYg
RU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmR1bXBNYXRoSUNT
dGF0cygpOwogI2VuZGlmCiAKLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3AxKTsKLSAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQWRkKGV4ZWMsIG9wMSwgb3AyKSk7CiB9CiAK
QEAgLTIzOTIsNiArMjM5NSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmEKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAg
IGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVNdWxOb09wdGltaXplOwor
ICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5tX2dlbmVyYXRvci5h
cml0aFByb2ZpbGUoKSkKKyAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsK
ICAgICBtdWxJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoKnZtLCBleGVjLT5jb2RlQmxvY2soKSwgbm9u
T3B0aW1pemVWYXJpYW50KTsKIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>