<?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>101895</bug_id>
          
          <creation_ts>2012-11-11 22:44:54 -0800</creation_ts>
          <short_desc>Reduce the crazy number of parameters to RenderLayer painting member functions</short_desc>
          <delta_ts>2012-11-14 17:14:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bdakin</cc>
    
    <cc>eric</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>764059</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-11 22:44:54 -0800</bug_when>
    <thetext>Reduce the crazy number of parameters to RenderLayer painting member functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764060</commentid>
    <comment_count>1</comment_count>
      <attachid>173561</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-11 22:45:45 -0800</bug_when>
    <thetext>Created attachment 173561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764067</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-11 22:48:38 -0800</bug_when>
    <thetext>Attachment 173561 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/rendering/RenderReplica.cpp:76:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/RenderReplica.cpp:77:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/RenderLayer.cpp:3063:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/rendering/RenderLayer.cpp:3064:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/rendering/RenderLayer.cpp:3065:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/rendering/RenderLayer.cpp:3066:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 6 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>764483</commentid>
    <comment_count>3</comment_count>
      <attachid>173659</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-12 09:22:57 -0800</bug_when>
    <thetext>Created attachment 173659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764484</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-12 09:23:54 -0800</bug_when>
    <thetext>I&apos;m open to better names than LayerPaintingInfo. LayerPaintingContext (sounds too much like GraphicsContext)? LayerPaintingState (sounds like it would be pushed/popped like state)? PaintingInfo is too much like PaintInfo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765006</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-12 17:15:04 -0800</bug_when>
    <thetext>This caused a regression that was fixed via https://bugs.webkit.org/show_bug.cgi?id=102002.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765119</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-12 18:56:00 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/134311</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767498</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-11-14 17:14:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/12705354&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173561</attachid>
            <date>2012-11-11 22:45:45 -0800</date>
            <delta_ts>2012-11-12 09:22:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101895-20121111224347.patch</filename>
            <type>text/plain</type>
            <size>40408</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IzZDBmMGRiOWNmYTE5
N2M1NzU4MWRlZjQ0ZDI5ODRlMmRjOWFkOC4uOWE5ZTRiMDVmOGM5NzUzMTVlOTYxNTM0MzJiYzI0
ZDM4ZDRjODY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTExLTExICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB0aGUg
Y3JhenkgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdG8gUmVuZGVyTGF5ZXIgcGFpbnRpbmcgbWVtYmVy
IGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAxODk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU29tZSBzdHVmZiBoZXJlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6cGFpbnRPdmVybGF5U2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6cGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpwYWludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50UGFnaW5hdGVkQ2hpbGRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
cGFpbnRDaGlsZExheWVySW50b0NvbHVtbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OkxheWVyUGFpbnRpbmdJbmZv
OjpMYXllclBhaW50aW5nSW5mbyk6CisgICAgICAgIChMYXllclBhaW50aW5nSW5mbyk6CisgICAg
ICAgIChSZW5kZXJMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xh
eWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJSZXBsaWNhOjpwYWludCk6CisKIDIwMTItMTEtMTAgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2F2ZSBvbmUgY2FsbCB0byBj
b250YWluZXJGb3JSZXBhaW50KCkgd2hlbiB1cGRhdGluZyBsYXllciBwb3NpdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDdiYTRmZThiYjY4MWFlNGY5
Zjg2ODc3N2EwY2I2NzkyNjQ5NjZjNDguLjYxNTM4N2Y0MmY5NjRhMWFiZTM5ODY3MmMyZDZhYzIz
NWE2MzQ3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAt
Mjk0MSw3ICsyOTQxLDEwIEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rp
b24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0CiB2b2lkIFJlbmRlckxh
eWVyOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRh
bWFnZVJlY3QsIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBwYWlu
dGluZ1Jvb3QsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFn
cykKIHsKICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAgb3ZlcmxhcFRlc3RSZXF1ZXN0czsKLSAg
ICBwYWludExheWVyKHRoaXMsIGNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QoZGFtYWdlUmVjdCks
IExheW91dFNpemUoKSwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCByZWdpb24sICZvdmVy
bGFwVGVzdFJlcXVlc3RzLCBwYWludEZsYWdzKTsKKworICAgIExheWVyUGFpbnRpbmdJbmZvIHBh
aW50aW5nSW5mbyh0aGlzLCBlbmNsb3NpbmdJbnRSZWN0KGRhbWFnZVJlY3QpLCBwYWludEJlaGF2
aW9yLCBwYWludGluZ1Jvb3QsIHJlZ2lvbiwgJm92ZXJsYXBUZXN0UmVxdWVzdHMpOworICAgIHBh
aW50TGF5ZXIoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdzLCBMYXlvdXRTaXplKCkp
OworCiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOjppdGVyYXRvciBlbmQgPSBvdmVybGFwVGVz
dFJlcXVlc3RzLmVuZCgpOwogICAgIGZvciAoT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOjppdGVyYXRv
ciBpdCA9IG92ZXJsYXBUZXN0UmVxdWVzdHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAg
ICAgICBpdC0+a2V5LT5zZXRPdmVybGFwVGVzdFJlc3VsdChmYWxzZSk7CkBAIC0yOTUxLDggKzI5
NTQsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFIKIHsKICAgICBpZiAoIW1fY29udGFpbnNE
aXJ0eU92ZXJsYXlTY3JvbGxiYXJzKQogICAgICAgICByZXR1cm47Ci0gICAgcGFpbnRMYXllcih0
aGlzLCBjb250ZXh0LCBkYW1hZ2VSZWN0LCBMYXlvdXRTaXplKCksIHBhaW50QmVoYXZpb3IsIHBh
aW50aW5nUm9vdCwgMCwgMCwgUGFpbnRMYXllckhhdmVUcmFuc3BhcmVuY3kgfCBQYWludExheWVy
VGVtcG9yYXJ5Q2xpcFJlY3RzIAotICAgICAgICAgICAgICAgfCBQYWludExheWVyUGFpbnRpbmdP
dmVybGF5U2Nyb2xsYmFycyk7CisKKyAgICBMYXllclBhaW50aW5nSW5mbyBwYWludGluZ0luZm8o
dGhpcywgZW5jbG9zaW5nSW50UmVjdChkYW1hZ2VSZWN0KSwgcGFpbnRCZWhhdmlvciwgcGFpbnRp
bmdSb290KTsKKyAgICBwYWludExheWVyKGNvbnRleHQsIHBhaW50aW5nSW5mbywgUGFpbnRMYXll
ckhhdmVUcmFuc3BhcmVuY3kgfCBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzIHwgUGFpbnRM
YXllclBhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMsIExheW91dFNpemUoKSk7CisKICAgICBtX2Nv
bnRhaW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycyA9IGZhbHNlOwogfQogCkBAIC0zMDQ3LDE4ICsz
MDUyLDE5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRTdXBwcmVzc1BhaW50aW5nTGF5ZXIo
UmVuZGVyTGF5ZXIqIGxheWVyKQogfQogCiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIo
UmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJlY3QsIGNvbnN0
IExheW91dFNpemUmIHN1YlBpeGVsQWNjdW11bGF0aW9uLCBQYWludEJlaGF2aW9yIHBhaW50QmVo
YXZpb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9v
dCwgUmVuZGVyUmVnaW9uKiByZWdpb24sIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogb3ZlcmxhcFRl
c3RSZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFncyBwYWlu
dEZsYWdzKQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJG
bGFncyBwYWludEZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiBzdWJQaXhlbEFjY3VtdWxhdGlvbikK
IHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKGlzQ29tcG9zaXRl
ZCgpKSB7CiAgICAgICAgIC8vIFRoZSB1cGRhdGluZ0NvbnRyb2xUaW50cygpIHBhaW50aW5nIHBh
c3MgZ29lcyB0aHJvdWdoIGNvbXBvc2l0aW5nIGxheWVycywKICAgICAgICAgLy8gYnV0IHdlIG5l
ZWQgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgY2FjaGUgY2xpcCByZWN0cyBjb21wdXRlZCB3aXRo
IHRoZSB3cm9uZyByb290IGluIHRoaXMgY2FzZS4KLSAgICAgICAgaWYgKGNvbnRleHQtPnVwZGF0
aW5nQ29udHJvbFRpbnRzKCkgfHwgKHBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRmxhdHRl
bkNvbXBvc2l0aW5nTGF5ZXJzKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnVwZGF0aW5nQ29udHJv
bFRpbnRzKCkgfHwgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZs
YXR0ZW5Db21wb3NpdGluZ0xheWVycykpCiAgICAgICAgICAgICBwYWludEZsYWdzIHw9IFBhaW50
TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHM7Ci0gICAgICAgIGVsc2UgaWYgKCFiYWNraW5nKCktPnBh
aW50c0ludG9XaW5kb3coKSAmJiAhYmFja2luZygpLT5wYWludHNJbnRvQ29tcG9zaXRlZEFuY2Vz
dG9yKCkgJiYgIXNob3VsZERvU29mdHdhcmVQYWludCh0aGlzLCBwYWludEZsYWdzICYgUGFpbnRM
YXllclBhaW50aW5nUmVmbGVjdGlvbikgJiYgIShyb290TGF5ZXItPmNvbnRhaW5zRGlydHlPdmVy
bGF5U2Nyb2xsYmFycygpICYmIChwYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nT3Zlcmxh
eVNjcm9sbGJhcnMpKSkgeworICAgICAgICBlbHNlIGlmICghYmFja2luZygpLT5wYWludHNJbnRv
V2luZG93KCkgJiYKKyAgICAgICAgICAgICFiYWNraW5nKCktPnBhaW50c0ludG9Db21wb3NpdGVk
QW5jZXN0b3IoKSAmJgorICAgICAgICAgICAgIXNob3VsZERvU29mdHdhcmVQYWludCh0aGlzLCBw
YWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nUmVmbGVjdGlvbikgJiYKKyAgICAgICAgICAg
ICEocGFpbnRpbmdJbmZvLnJvb3RMYXllci0+Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJz
KCkgJiYKKyAgICAgICAgICAgIChwYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nT3Zlcmxh
eVNjcm9sbGJhcnMpKSkgewogICAgICAgICAgICAgLy8gSWYgdGhpcyBSZW5kZXJMYXllciBzaG91
bGQgcGFpbnQgaW50byBpdHMgYmFja2luZywgdGhhdCB3aWxsIGJlIGRvbmUgdmlhIFJlbmRlckxh
eWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoKS4KICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtMzA3NiwxMiArMzA4MiwxMiBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVy
KFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKICAgICBp
ZiAoIXJlbmRlcmVyKCktPm9wYWNpdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHBh
aW50c1dpdGhUcmFuc3BhcmVuY3kocGFpbnRCZWhhdmlvcikpCisgICAgaWYgKHBhaW50c1dpdGhU
cmFuc3BhcmVuY3kocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IpKQogICAgICAgICBwYWludEZs
YWdzIHw9IFBhaW50TGF5ZXJIYXZlVHJhbnNwYXJlbmN5OwogCiAgICAgLy8gUGFpbnRMYXllckFw
cGxpZWRUcmFuc2Zvcm0gaXMgdXNlZCBpbiBSZW5kZXJSZXBsaWNhLCB0byBhdm9pZCBhcHBseWlu
ZyB0aGUgdHJhbnNmb3JtIHR3aWNlLgotICAgIGlmIChwYWludHNXaXRoVHJhbnNmb3JtKHBhaW50
QmVoYXZpb3IpICYmICEocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3JtKSkg
ewotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybSA9IHJlbmRlcmFi
bGVUcmFuc2Zvcm0ocGFpbnRCZWhhdmlvcik7CisgICAgaWYgKHBhaW50c1dpdGhUcmFuc2Zvcm0o
cGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IpICYmICEocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJB
cHBsaWVkVHJhbnNmb3JtKSkgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRy
YW5zZm9ybSA9IHJlbmRlcmFibGVUcmFuc2Zvcm0ocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3Ip
OwogICAgICAgICAvLyBJZiB0aGUgdHJhbnNmb3JtIGNhbid0IGJlIGludmVydGVkLCB0aGVuIGRv
bid0IHBhaW50IGFueXRoaW5nLgogICAgICAgICBpZiAoIWxheWVyVHJhbnNmb3JtLmlzSW52ZXJ0
aWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzA5MCwyNyArMzA5NiwyNyBAQCB2b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwKICAgICAgICAgLy8gbGF5ZXIgZnJvbSB0aGUgcGFyZW50IG5vdywg
YXNzdW1pbmcgdGhlcmUgaXMgYSBwYXJlbnQKICAgICAgICAgaWYgKHBhaW50RmxhZ3MgJiBQYWlu
dExheWVySGF2ZVRyYW5zcGFyZW5jeSkgewogICAgICAgICAgICAgaWYgKHBhcmVudCgpKQotICAg
ICAgICAgICAgICAgIHBhcmVudCgpLT5iZWdpblRyYW5zcGFyZW5jeUxheWVycyhjb250ZXh0LCBy
b290TGF5ZXIsIHBhaW50RGlydHlSZWN0LCBwYWludEJlaGF2aW9yKTsKKyAgICAgICAgICAgICAg
ICBwYXJlbnQoKS0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcnMoY29udGV4dCwgcGFpbnRpbmdJbmZv
LnJvb3RMYXllciwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBwYWludGluZ0luZm8ucGFp
bnRCZWhhdmlvcik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYmVnaW5UcmFu
c3BhcmVuY3lMYXllcnMoY29udGV4dCwgcm9vdExheWVyLCBwYWludERpcnR5UmVjdCwgcGFpbnRC
ZWhhdmlvcik7CisgICAgICAgICAgICAgICAgYmVnaW5UcmFuc3BhcmVuY3lMYXllcnMoY29udGV4
dCwgcGFpbnRpbmdJbmZvLnJvb3RMYXllciwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBw
YWludGluZ0luZm8ucGFpbnRCZWhhdmlvcik7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBNYWtl
IHN1cmUgdGhlIHBhcmVudCdzIGNsaXAgcmVjdHMgaGF2ZSBiZWVuIGNhbGN1bGF0ZWQuCi0gICAg
ICAgIENsaXBSZWN0IGNsaXBSZWN0ID0gcGFpbnREaXJ0eVJlY3Q7CisgICAgICAgIENsaXBSZWN0
IGNsaXBSZWN0ID0gcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0OwogICAgICAgICBpZiAocGFy
ZW50KCkpIHsKLSAgICAgICAgICAgIGNsaXBSZWN0ID0gYmFja2dyb3VuZENsaXBSZWN0KHJvb3RM
YXllciwgcmVnaW9uLCAocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMp
ID8gVGVtcG9yYXJ5Q2xpcFJlY3RzIDogUGFpbnRpbmdDbGlwUmVjdHMsCisgICAgICAgICAgICBj
bGlwUmVjdCA9IGJhY2tncm91bmRDbGlwUmVjdChwYWludGluZ0luZm8ucm9vdExheWVyLCBwYWlu
dGluZ0luZm8ucmVnaW9uLCAocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVj
dHMpID8gVGVtcG9yYXJ5Q2xpcFJlY3RzIDogUGFpbnRpbmdDbGlwUmVjdHMsCiAgICAgICAgICAg
ICAgICAgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIChwYWludEZsYWdzICYgUGFpbnRMYXll
clBhaW50aW5nT3ZlcmZsb3dDb250ZW50cykgPyBJZ25vcmVPdmVyZmxvd0NsaXAgOiBSZXNwZWN0
T3ZlcmZsb3dDbGlwKTsKLSAgICAgICAgICAgIGNsaXBSZWN0LmludGVyc2VjdChwYWludERpcnR5
UmVjdCk7CisgICAgICAgICAgICBjbGlwUmVjdC5pbnRlcnNlY3QocGFpbnRpbmdJbmZvLnBhaW50
RGlydHlSZWN0KTsKICAgICAgICAgCiAgICAgICAgICAgICAvLyBQdXNoIHRoZSBwYXJlbnQgY29v
cmRpbmF0ZSBzcGFjZSdzIGNsaXAuCi0gICAgICAgICAgICBwYXJlbnQoKS0+Y2xpcFRvUmVjdChy
b290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBjbGlwUmVjdCk7CisgICAgICAgICAg
ICBwYXJlbnQoKS0+Y2xpcFRvUmVjdChwYWludGluZ0luZm8ucm9vdExheWVyLCBjb250ZXh0LCBw
YWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGNsaXBSZWN0KTsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIEFkanVzdCB0aGUgdHJhbnNmb3JtIHN1Y2ggdGhhdCB0aGUgcmVuZGVyZXIncyB1cHBl
ciBsZWZ0IGNvcm5lciB3aWxsIHBhaW50IGF0ICgwLDApIGluIHVzZXIgc3BhY2UuCiAgICAgICAg
IC8vIFRoaXMgaW52b2x2ZXMgc3VidHJhY3Rpbmcgb3V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgbGF5
ZXIgaW4gb3VyIGN1cnJlbnQgY29vcmRpbmF0ZSBzcGFjZSwgYnV0IHByZXNlcnZpbmcKICAgICAg
ICAgLy8gdGhlIGFjY3VtdWxhdGVkIGVycm9yIGZvciBzdWItcGl4ZWwgbGF5b3V0LgogICAgICAg
ICBMYXlvdXRQb2ludCBkZWx0YTsKLSAgICAgICAgY29udmVydFRvTGF5ZXJDb29yZHMocm9vdExh
eWVyLCBkZWx0YSk7CisgICAgICAgIGNvbnZlcnRUb0xheWVyQ29vcmRzKHBhaW50aW5nSW5mby5y
b290TGF5ZXIsIGRlbHRhKTsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3Jt
KGxheWVyVHJhbnNmb3JtKTsKICAgICAgICAgSW50UG9pbnQgcm91bmRlZERlbHRhID0gcm91bmRl
ZEludFBvaW50KGRlbHRhKTsKICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZVJpZ2h0KHJvdW5k
ZWREZWx0YS54KCksIHJvdW5kZWREZWx0YS55KCkpOwpAQCAtMzEyMiwyMyArMzEyOCwyMSBAQCB2
b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTSh0cmFu
c2Zvcm0udG9BZmZpbmVUcmFuc2Zvcm0oKSk7CiAKICAgICAgICAgICAgIC8vIE5vdyBkbyBhIHBh
aW50IHdpdGggdGhlIHJvb3QgbGF5ZXIgc2hpZnRlZCB0byBiZSB1cy4KLSAgICAgICAgICAgIHBh
aW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24odGhpcywgY29udGV4dCwgZW5jbG9zaW5nSW50
UmVjdCh0cmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3QocGFpbnREaXJ0eVJlY3QpKSwgYWRqdXN0
ZWRTdWJQaXhlbEFjY3VtdWxhdGlvbiwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCByZWdp
b24sIG92ZXJsYXBUZXN0UmVxdWVzdHMsIHBhaW50RmxhZ3MpOworICAgICAgICAgICAgTGF5ZXJQ
YWludGluZ0luZm8gdHJhbnNmb3JtZWRQYWludGluZ0luZm8odGhpcywgZW5jbG9zaW5nSW50UmVj
dCh0cmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0
KSksIHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yLCBwYWludGluZ0luZm8ucGFpbnRpbmdSb290
LCBwYWludGluZ0luZm8ucmVnaW9uLCBwYWludGluZ0luZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cyk7
CisgICAgICAgICAgICBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKGNvbnRleHQsIHRy
YW5zZm9ybWVkUGFpbnRpbmdJbmZvLCBwYWludEZsYWdzLCBhZGp1c3RlZFN1YlBpeGVsQWNjdW11
bGF0aW9uKTsKICAgICAgICAgfSAgICAgICAgCiAKICAgICAgICAgLy8gUmVzdG9yZSB0aGUgY2xp
cC4KICAgICAgICAgaWYgKHBhcmVudCgpKQotICAgICAgICAgICAgcGFyZW50KCktPnJlc3RvcmVD
bGlwKGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBjbGlwUmVjdCk7CisgICAgICAgICAgICBwYXJl
bnQoKS0+cmVzdG9yZUNsaXAoY29udGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBj
bGlwUmVjdCk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBwYWludExheWVy
Q29udGVudHNBbmRSZWZsZWN0aW9uKHJvb3RMYXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJlY3Qs
IHN1YlBpeGVsQWNjdW11bGF0aW9uLCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3QsIHJlZ2lv
biwgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgcGFpbnRGbGFncyk7CisgICAgcGFpbnRMYXllckNvbnRl
bnRzQW5kUmVmbGVjdGlvbihjb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50RmxhZ3MsIHN1YlBp
eGVsQWNjdW11bGF0aW9uKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRl
bnRzQW5kUmVmbGVjdGlvbihSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBwYWlu
dERpcnR5UmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgc3ViUGl4ZWxBY2N1bXVsYXRpb24sIFBhaW50
QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlck9i
amVjdCogcGFpbnRpbmdSb290LCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgT3ZlcmxhcFRlc3RSZXF1
ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgUGFp
bnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29u
dGVudHNBbmRSZWZsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MsIGNv
bnN0IExheW91dFNpemUmIHN1YlBpeGVsQWNjdW11bGF0aW9uKQogewogICAgIEFTU0VSVChpc1Nl
bGZQYWludGluZ0xheWVyKCkgfHwgaGFzU2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50KCkpOwog
CkBAIC0zMTQ4LDE4ICszMTUyLDE1IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250
ZW50c0FuZFJlZmxlY3Rpb24oUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpCiAgICAgaWYg
KG1fcmVmbGVjdGlvbiAmJiAhbV9wYWludGluZ0luc2lkZVJlZmxlY3Rpb24pIHsKICAgICAgICAg
Ly8gTWFyayB0aGF0IHdlIGFyZSBub3cgaW5zaWRlIHJlcGxpY2EgcGFpbnRpbmcuCiAgICAgICAg
IG1fcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uID0gdHJ1ZTsKLSAgICAgICAgcmVmbGVjdGlvbkxh
eWVyKCktPnBhaW50TGF5ZXIocm9vdExheWVyLCBjb250ZXh0LCBwYWludERpcnR5UmVjdCwgc3Vi
UGl4ZWxBY2N1bXVsYXRpb24sIHBhaW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwgcmVnaW9uLCBv
dmVybGFwVGVzdFJlcXVlc3RzLCBsb2NhbFBhaW50RmxhZ3MgfCBQYWludExheWVyUGFpbnRpbmdS
ZWZsZWN0aW9uKTsKKyAgICAgICAgcmVmbGVjdGlvbkxheWVyKCktPnBhaW50TGF5ZXIoY29udGV4
dCwgcGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MgfCBQYWludExheWVyUGFpbnRpbmdSZWZs
ZWN0aW9uLCBzdWJQaXhlbEFjY3VtdWxhdGlvbik7CiAgICAgICAgIG1fcGFpbnRpbmdJbnNpZGVS
ZWZsZWN0aW9uID0gZmFsc2U7CiAgICAgfQogCiAgICAgbG9jYWxQYWludEZsYWdzIHw9IFBhaW50
TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzOwotICAgIHBhaW50TGF5ZXJDb250ZW50
cyhyb290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBzdWJQaXhlbEFjY3VtdWxhdGlv
biwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCByZWdpb24sIG92ZXJsYXBUZXN0UmVxdWVz
dHMsIGxvY2FsUGFpbnRGbGFncyk7CisgICAgcGFpbnRMYXllckNvbnRlbnRzKGNvbnRleHQsIHBh
aW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzLCBzdWJQaXhlbEFjY3VtdWxhdGlvbik7CiB9CiAK
LXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhSZW5kZXJMYXllciogcm9vdExh
eWVyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIAotICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgTGF5b3V0UmVjdCYgcGFyZW50UGFpbnREaXJ0eVJlY3QsIGNvbnN0IExheW91dFNpemUm
IHN1YlBpeGVsQWNjdW11bGF0aW9uLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdCwgUmVuZGVyUmVn
aW9uKiByZWdpb24sIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0cywK
LSAgICAgICAgICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdz
IHBhaW50RmxhZ3MsIGNvbnN0IExheW91dFNpemUmIHN1YlBpeGVsQWNjdW11bGF0aW9uKQogewog
ICAgIEFTU0VSVChpc1NlbGZQYWludGluZ0xheWVyKCkgfHwgaGFzU2VsZlBhaW50aW5nTGF5ZXJE
ZXNjZW5kYW50KCkpOwogCkBAIC0zMTc1LDcgKzMxNzYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpw
YWludExheWVyQ29udGVudHMoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0
KiBjbwogICAgIExheW91dFJlY3QgbGF5ZXJCb3VuZHM7CiAgICAgQ2xpcFJlY3QgZGFtYWdlUmVj
dCwgY2xpcFJlY3RUb0FwcGx5LCBvdXRsaW5lUmVjdDsKICAgICBMYXlvdXRQb2ludCBwYWludE9m
ZnNldDsKLSAgICBMYXlvdXRSZWN0IHBhaW50RGlydHlSZWN0ID0gcGFyZW50UGFpbnREaXJ0eVJl
Y3Q7CisgICAgTGF5b3V0UmVjdCBwYWludERpcnR5UmVjdCA9IHBhaW50aW5nSW5mby5wYWludERp
cnR5UmVjdDsKICAgICAKICAgICBib29sIHVzZUNsaXBSZWN0ID0gdHJ1ZTsKICAgICBHcmFwaGlj
c0NvbnRleHQqIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCA9IGNvbnRleHQ7CkBAIC0zMTkyLDcg
KzMxOTMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoUmVuZGVyTGF5
ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBjbwogICAgICAgICAgICAgaGFzQ2xpcFBh
dGggPSB0cnVlOwogICAgICAgICAgICAgY29udGV4dC0+c2F2ZSgpOwogICAgICAgICAgICAgU2hh
cGVDbGlwUGF0aE9wZXJhdGlvbiogY2xpcFBhdGggPSBzdGF0aWNfY2FzdDxTaGFwZUNsaXBQYXRo
T3BlcmF0aW9uKj4oc3R5bGUtPmNsaXBQYXRoKCkpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xp
cFBhdGgoY2xpcFBhdGgtPnBhdGgoY2FsY3VsYXRlTGF5ZXJCb3VuZHModGhpcywgcm9vdExheWVy
LCAwKSksIGNsaXBQYXRoLT53aW5kUnVsZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmNsaXBQ
YXRoKGNsaXBQYXRoLT5wYXRoKGNhbGN1bGF0ZUxheWVyQm91bmRzKHRoaXMsIHBhaW50aW5nSW5m
by5yb290TGF5ZXIsIDApKSwgY2xpcFBhdGgtPndpbmRSdWxlKCkpOwogICAgICAgICB9CiAjaWYg
RU5BQkxFKFNWRykKICAgICAgICAgZWxzZSBpZiAoc3R5bGUtPmNsaXBQYXRoKCktPmdldE9wZXJh
dGlvblR5cGUoKSA9PSBDbGlwUGF0aE9wZXJhdGlvbjo6UkVGRVJFTkNFKSB7CkBAIC0zMjAxLDcg
KzMyMDIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoUmVuZGVyTGF5
ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBjbwogICAgICAgICAgICAgLy8gRklYTUU6
IEl0IGRvZXNuJ3Qgd29yayB3aXRoIGZvcndhcmQgb3IgZXh0ZXJuYWwgU1ZHIHJlZmVyZW5jZXMg
KGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDQwNSkKICAgICAgICAg
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5nZXRFbGVtZW50QnlJ
ZChyZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbi0+ZnJhZ21lbnQoKSkgOiAwOwogICAgICAgICAg
ICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6Y2xpcFBhdGhU
YWcpICYmIGVsZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKj4oZWxlbWVudC0+cmVuZGVyZXIoKSktPmFwcGx5Q2xp
cHBpbmdUb0NvbnRleHQocmVuZGVyZXIoKSwgY2FsY3VsYXRlTGF5ZXJCb3VuZHModGhpcywgcm9v
dExheWVyLCAwKSwgcGFpbnREaXJ0eVJlY3QsIGNvbnRleHQpOworICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcio+KGVsZW1lbnQtPnJlbmRlcmVyKCkp
LT5hcHBseUNsaXBwaW5nVG9Db250ZXh0KHJlbmRlcmVyKCksIGNhbGN1bGF0ZUxheWVyQm91bmRz
KHRoaXMsIHBhaW50aW5nSW5mby5yb290TGF5ZXIsIDApLCBwYWludGluZ0luZm8ucGFpbnREaXJ0
eVJlY3QsIGNvbnRleHQpOwogICAgICAgICB9CiAjZW5kaWYKICAgICB9CkBAIC0zMjEwLDEyICsz
MjExLDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhSZW5kZXJMYXll
ciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvCiAgICAgRmlsdGVyRWZmZWN0UmVuZGVy
ZXJIZWxwZXIgZmlsdGVyUGFpbnRlcihmaWx0ZXJSZW5kZXJlcigpICYmIHBhaW50c1dpdGhGaWx0
ZXJzKCkpOwogICAgIGlmIChmaWx0ZXJQYWludGVyLmhhdmVGaWx0ZXJFZmZlY3QoKSAmJiAhY29u
dGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKSB7CiAgICAgICAgIExheW91dFBvaW50IHJvb3RMYXll
ck9mZnNldDsKLSAgICAgICAgY29udmVydFRvTGF5ZXJDb29yZHMocm9vdExheWVyLCByb290TGF5
ZXJPZmZzZXQpOworICAgICAgICBjb252ZXJ0VG9MYXllckNvb3JkcyhwYWludGluZ0luZm8ucm9v
dExheWVyLCByb290TGF5ZXJPZmZzZXQpOwogICAgICAgICBSZW5kZXJMYXllckZpbHRlckluZm8q
IGZpbHRlckluZm8gPSB0aGlzLT5maWx0ZXJJbmZvKCk7CiAgICAgICAgIEFTU0VSVChmaWx0ZXJJ
bmZvKTsKICAgICAgICAgTGF5b3V0UmVjdCBmaWx0ZXJSZXBhaW50UmVjdCA9IGZpbHRlckluZm8t
PmRpcnR5U291cmNlUmVjdCgpOwogICAgICAgICBmaWx0ZXJSZXBhaW50UmVjdC5tb3ZlKHJvb3RM
YXllck9mZnNldC54KCksIHJvb3RMYXllck9mZnNldC55KCkpOwotICAgICAgICBpZiAoZmlsdGVy
UGFpbnRlci5wcmVwYXJlRmlsdGVyRWZmZWN0KHRoaXMsIGNhbGN1bGF0ZUxheWVyQm91bmRzKHRo
aXMsIHJvb3RMYXllciwgMCksIHBhcmVudFBhaW50RGlydHlSZWN0LCBmaWx0ZXJSZXBhaW50UmVj
dCkpIHsKKyAgICAgICAgaWYgKGZpbHRlclBhaW50ZXIucHJlcGFyZUZpbHRlckVmZmVjdCh0aGlz
LCBjYWxjdWxhdGVMYXllckJvdW5kcyh0aGlzLCBwYWludGluZ0luZm8ucm9vdExheWVyLCAwKSwg
cGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBmaWx0ZXJSZXBhaW50UmVjdCkpIHsKICAgICAg
ICAgICAgIC8vIE5vdyB3ZSBrbm93IGZvciBzdXJlLCB0aGF0IHRoZSBzb3VyY2UgaW1hZ2Ugd2ls
bCBiZSB1cGRhdGVkLCBzbyB3ZSBjYW4gcmV2ZXJ0IG91ciB0cmFja2luZyByZXBhaW50IHJlY3Qg
YmFjayB0byB6ZXJvLgogICAgICAgICAgICAgZmlsdGVySW5mby0+cmVzZXREaXJ0eVNvdXJjZVJl
Y3QoKTsKIApAQCAtMzIzOCw1NSArMzIzOSw1NSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExh
eWVyQ29udGVudHMoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBjbwog
I2VuZGlmCiAgICAgCiAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCB8fCBzaG91bGRQYWludE91
dGxpbmUgfHwgaXNQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzKSB7Ci0gICAgICAgIGNhbGN1bGF0
ZVJlY3RzKHJvb3RMYXllciwgcmVnaW9uLCAobG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclRl
bXBvcmFyeUNsaXBSZWN0cykgPyBUZW1wb3JhcnlDbGlwUmVjdHMgOiBQYWludGluZ0NsaXBSZWN0
cywgcGFpbnREaXJ0eVJlY3QsIGxheWVyQm91bmRzLCBkYW1hZ2VSZWN0LCBjbGlwUmVjdFRvQXBw
bHksIG91dGxpbmVSZWN0LAorICAgICAgICBjYWxjdWxhdGVSZWN0cyhwYWludGluZ0luZm8ucm9v
dExheWVyLCBwYWludGluZ0luZm8ucmVnaW9uLCAobG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXll
clRlbXBvcmFyeUNsaXBSZWN0cykgPyBUZW1wb3JhcnlDbGlwUmVjdHMgOiBQYWludGluZ0NsaXBS
ZWN0cywgcGFpbnREaXJ0eVJlY3QsIGxheWVyQm91bmRzLCBkYW1hZ2VSZWN0LCBjbGlwUmVjdFRv
QXBwbHksIG91dGxpbmVSZWN0LAogICAgICAgICAgICAgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNp
emUsIGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ092ZXJmbG93Q29udGVudHMg
PyBJZ25vcmVPdmVyZmxvd0NsaXAgOiBSZXNwZWN0T3ZlcmZsb3dDbGlwKTsKICAgICAgICAgcGFp
bnRPZmZzZXQgPSB0b1BvaW50KGxheWVyQm91bmRzLmxvY2F0aW9uKCkgLSByZW5kZXJCb3hMb2Nh
dGlvbigpICsgc3ViUGl4ZWxBY2N1bXVsYXRpb24pOwotICAgICAgICBpZiAodGhpcyA9PSByb290
TGF5ZXIpCisgICAgICAgIGlmICh0aGlzID09IHBhaW50aW5nSW5mby5yb290TGF5ZXIpCiAgICAg
ICAgICAgICBwYWludE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCk7CiAgICAg
fQogCi0gICAgYm9vbCBmb3JjZUJsYWNrVGV4dCA9IHBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2
aW9yRm9yY2VCbGFja1RleHQ7Ci0gICAgYm9vbCBzZWxlY3Rpb25Pbmx5ICA9IHBhaW50QmVoYXZp
b3IgJiBQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seTsKKyAgICBib29sIGZvcmNlQmxhY2tUZXh0
ID0gcGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRm9yY2VCbGFja1Rl
eHQ7CisgICAgYm9vbCBzZWxlY3Rpb25Pbmx5ICA9IHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9y
ICYgUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHk7CiAgICAgCiAgICAgLy8gSWYgdGhpcyBsYXll
cidzIHJlbmRlcmVyIGlzIGEgY2hpbGQgb2YgdGhlIHBhaW50aW5nUm9vdCwgd2UgcmVuZGVyIHVu
Y29uZGl0aW9uYWxseSwgd2hpY2gKICAgICAvLyBpcyBkb25lIGJ5IHBhc3NpbmcgYSBuaWwgcGFp
bnRpbmdSb290IGRvd24gdG8gb3VyIHJlbmRlcmVyIChhcyBpZiBubyBwYWludGluZ1Jvb3Qgd2Fz
IGV2ZXIgc2V0KS4KICAgICAvLyBFbHNlLCBvdXIgcmVuZGVyZXIgdHJlZSBtYXkgb3IgbWF5IG5v
dCBjb250YWluIHRoZSBwYWludGluZyByb290LCBzbyB3ZSBwYXNzIHRoYXQgcm9vdCBhbG9uZwog
ICAgIC8vIHNvIGl0IHdpbGwgYmUgdGVzdGVkIGFnYWluc3QgYXMgd2UgZGVzY2VuZCB0aHJvdWdo
IHRoZSByZW5kZXJlcnMuCiAgICAgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJl
ciA9IDA7Ci0gICAgaWYgKHBhaW50aW5nUm9vdCAmJiAhcmVuZGVyZXIoKS0+aXNEZXNjZW5kYW50
T2YocGFpbnRpbmdSb290KSkKLSAgICAgICAgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIgPSBwYWlu
dGluZ1Jvb3Q7CisgICAgaWYgKHBhaW50aW5nSW5mby5wYWludGluZ1Jvb3QgJiYgIXJlbmRlcmVy
KCktPmlzRGVzY2VuZGFudE9mKHBhaW50aW5nSW5mby5wYWludGluZ1Jvb3QpKQorICAgICAgICBw
YWludGluZ1Jvb3RGb3JSZW5kZXJlciA9IHBhaW50aW5nSW5mby5wYWludGluZ1Jvb3Q7CiAKLSAg
ICBpZiAob3ZlcmxhcFRlc3RSZXF1ZXN0cyAmJiBpc1NlbGZQYWludGluZ0xheWVyKQotICAgICAg
ICBwZXJmb3JtT3ZlcmxhcFRlc3RzKCpvdmVybGFwVGVzdFJlcXVlc3RzLCByb290TGF5ZXIsIHRo
aXMpOworICAgIGlmIChwYWludGluZ0luZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cyAmJiBpc1NlbGZQ
YWludGluZ0xheWVyKQorICAgICAgICBwZXJmb3JtT3ZlcmxhcFRlc3RzKCpwYWludGluZ0luZm8u
b3ZlcmxhcFRlc3RSZXF1ZXN0cywgcGFpbnRpbmdJbmZvLnJvb3RMYXllciwgdGhpcyk7CiAKICAg
ICAvLyBXZSB3YW50IHRvIHBhaW50IG91ciBsYXllciwgYnV0IG9ubHkgaWYgd2UgaW50ZXJzZWN0
IHRoZSBkYW1hZ2UgcmVjdC4KLSAgICBpZiAodGhpcyAhPSByb290TGF5ZXIgfHwgIShsb2NhbFBh
aW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzKSkKLSAgICAgICAg
c2hvdWxkUGFpbnRDb250ZW50ICY9IGludGVyc2VjdHNEYW1hZ2VSZWN0KGxheWVyQm91bmRzLCBk
YW1hZ2VSZWN0LnJlY3QoKSwgcm9vdExheWVyKTsKKyAgICBpZiAodGhpcyAhPSBwYWludGluZ0lu
Zm8ucm9vdExheWVyIHx8ICEobG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nT3Zl
cmZsb3dDb250ZW50cykpCisgICAgICAgIHNob3VsZFBhaW50Q29udGVudCAmPSBpbnRlcnNlY3Rz
RGFtYWdlUmVjdChsYXllckJvdW5kcywgZGFtYWdlUmVjdC5yZWN0KCksIHBhaW50aW5nSW5mby5y
b290TGF5ZXIpOwogICAgIAogICAgIGlmIChsb2NhbFBhaW50RmxhZ3MgJiBQYWludExheWVyUGFp
bnRpbmdDb21wb3NpdGluZ0JhY2tncm91bmRQaGFzZSkgewogICAgICAgICBpZiAoc2hvdWxkUGFp
bnRDb250ZW50ICYmICFzZWxlY3Rpb25Pbmx5KSB7CiAgICAgICAgICAgICAvLyBCZWdpbiB0cmFu
c3BhcmVuY3kgbGF5ZXJzIGxhemlseSBub3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgdG8gcGFpbnQg
c29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKGhhdmVUcmFuc3BhcmVuY3kpCi0gICAgICAgICAg
ICAgICAgYmVnaW5UcmFuc3BhcmVuY3lMYXllcnModHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBy
b290TGF5ZXIsIHBhaW50RGlydHlSZWN0LCBwYWludEJlaGF2aW9yKTsKKyAgICAgICAgICAgICAg
ICBiZWdpblRyYW5zcGFyZW5jeUxheWVycyh0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsIHBhaW50
aW5nSW5mby5yb290TGF5ZXIsIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgcGFpbnRpbmdJ
bmZvLnBhaW50QmVoYXZpb3IpOwogICAgICAgICAKICAgICAgICAgICAgIGlmICh1c2VDbGlwUmVj
dCkgewogICAgICAgICAgICAgICAgIC8vIFBhaW50IG91ciBiYWNrZ3JvdW5kIGZpcnN0LCBiZWZv
cmUgcGFpbnRpbmcgYW55IGNoaWxkIGxheWVycy4KICAgICAgICAgICAgICAgICAvLyBFc3RhYmxp
c2ggdGhlIGNsaXAgdXNlZCB0byBwYWludCBvdXIgYmFja2dyb3VuZC4KLSAgICAgICAgICAgICAg
ICBjbGlwVG9SZWN0KHJvb3RMYXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFnZVJl
Y3QsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOyAvLyBCYWNrZ3JvdW5kIHBhaW50
aW5nIHdpbGwgaGFuZGxlIGNsaXBwaW5nIHRvIHNlbGYuCisgICAgICAgICAgICAgICAgY2xpcFRv
UmVjdChwYWludGluZ0luZm8ucm9vdExheWVyLCBjb250ZXh0LCBwYWludGluZ0luZm8ucGFpbnRE
aXJ0eVJlY3QsIGRhbWFnZVJlY3QsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOyAv
LyBCYWNrZ3JvdW5kIHBhaW50aW5nIHdpbGwgaGFuZGxlIGNsaXBwaW5nIHRvIHNlbGYuCiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFBhaW50IHRoZSBiYWNrZ3Jv
dW5kLgotICAgICAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhlbFNuYXBw
ZWRJbnRSZWN0KGRhbWFnZVJlY3QucmVjdCgpKSwgUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCwg
ZmFsc2UsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCByZWdpb24sIDApOworICAgICAgICAgICAg
UGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGRhbWFnZVJl
Y3QucmVjdCgpKSwgUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCwgZmFsc2UsIHBhaW50aW5nUm9v
dEZvclJlbmRlcmVyLCBwYWludGluZ0luZm8ucmVnaW9uLCAwKTsKICAgICAgICAgICAgIHJlbmRl
cmVyKCktPnBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogCiAgICAgICAgICAgICBpZiAo
dXNlQ2xpcFJlY3QpIHsKICAgICAgICAgICAgICAgICAvLyBSZXN0b3JlIHRoZSBjbGlwLgotICAg
ICAgICAgICAgICAgIHJlc3RvcmVDbGlwKGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBkYW1hZ2VS
ZWN0KTsKKyAgICAgICAgICAgICAgICByZXN0b3JlQ2xpcChjb250ZXh0LCBwYWludGluZ0luZm8u
cGFpbnREaXJ0eVJlY3QsIGRhbWFnZVJlY3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
ICAgICAgICAgLy8gTm93IHdhbGsgdGhlIHNvcnRlZCBsaXN0IG9mIGNoaWxkcmVuIHdpdGggbmVn
YXRpdmUgei1pbmRpY2VzLgotICAgICAgICBwYWludExpc3QobmVnWk9yZGVyTGlzdCgpLCByb290
TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jv
b3QsIHJlZ2lvbiwgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgbG9jYWxQYWludEZsYWdzKTsKKyAgICAg
ICAgcGFpbnRMaXN0KG5lZ1pPcmRlckxpc3QoKSwgY29udGV4dCwgcGFpbnRpbmdJbmZvLCBsb2Nh
bFBhaW50RmxhZ3MpOwogICAgIH0KICAgICAKICAgICBpZiAobG9jYWxQYWludEZsYWdzICYgUGFp
bnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdGb3JlZ3JvdW5kUGhhc2UpIHsKQEAgLTMyOTQsMjIg
KzMyOTUsMjIgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKFJlbmRlckxh
eWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY28KICAgICAgICAgaWYgKHNob3VsZFBh
aW50Q29udGVudCAmJiAhY2xpcFJlY3RUb0FwcGx5LmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
Ly8gQmVnaW4gdHJhbnNwYXJlbmN5IGxheWVycyBsYXppbHkgbm93IHRoYXQgd2Uga25vdyB3ZSBo
YXZlIHRvIHBhaW50IHNvbWV0aGluZy4KICAgICAgICAgICAgIGlmIChoYXZlVHJhbnNwYXJlbmN5
KQotICAgICAgICAgICAgICAgIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKHRyYW5zcGFyZW5jeUxh
eWVyQ29udGV4dCwgcm9vdExheWVyLCBwYWludERpcnR5UmVjdCwgcGFpbnRCZWhhdmlvcik7Cisg
ICAgICAgICAgICAgICAgYmVnaW5UcmFuc3BhcmVuY3lMYXllcnModHJhbnNwYXJlbmN5TGF5ZXJD
b250ZXh0LCBwYWludGluZ0luZm8ucm9vdExheWVyLCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJl
Y3QsIHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yKTsKIAogICAgICAgICAgICAgaWYgKHVzZUNs
aXBSZWN0KSB7CiAgICAgICAgICAgICAgICAgLy8gU2V0IHVwIHRoZSBjbGlwIHVzZWQgd2hlbiBw
YWludGluZyBvdXIgY2hpbGRyZW4uCi0gICAgICAgICAgICAgICAgY2xpcFRvUmVjdChyb290TGF5
ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBjbGlwUmVjdFRvQXBwbHkpOworICAgICAgICAg
ICAgICAgIGNsaXBUb1JlY3QocGFpbnRpbmdJbmZvLnJvb3RMYXllciwgY29udGV4dCwgcGFpbnRp
bmdJbmZvLnBhaW50RGlydHlSZWN0LCBjbGlwUmVjdFRvQXBwbHkpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIHBp
eGVsU25hcHBlZEludFJlY3QoY2xpcFJlY3RUb0FwcGx5LnJlY3QoKSksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk9ubHkgPyBQYWludFBoYXNlU2VsZWN0aW9uIDog
UGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yY2VCbGFja1RleHQsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCByZWdpb24s
IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZUJsYWNrVGV4dCwgcGFp
bnRpbmdSb290Rm9yUmVuZGVyZXIsIHBhaW50aW5nSW5mby5yZWdpb24sIDApOwogICAgICAgICAg
ICAgcmVuZGVyZXIoKS0+cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAgICAg
ICBpZiAoIXNlbGVjdGlvbk9ubHkpIHsKICAgICAgICAgICAgICAgICBwYWludEluZm8ucGhhc2Ug
PSBQYWludFBoYXNlRmxvYXQ7CiAgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+cGFpbnQocGFp
bnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAgICAgICAgICAgcGFpbnRJbmZvLnBoYXNlID0g
UGFpbnRQaGFzZUZvcmVncm91bmQ7Ci0gICAgICAgICAgICAgICAgcGFpbnRJbmZvLm92ZXJsYXBU
ZXN0UmVxdWVzdHMgPSBvdmVybGFwVGVzdFJlcXVlc3RzOworICAgICAgICAgICAgICAgIHBhaW50
SW5mby5vdmVybGFwVGVzdFJlcXVlc3RzID0gcGFpbnRpbmdJbmZvLm92ZXJsYXBUZXN0UmVxdWVz
dHM7CiAgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+cGFpbnQocGFpbnRJbmZvLCBwYWludE9m
ZnNldCk7CiAgICAgICAgICAgICAgICAgcGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUNoaWxk
T3V0bGluZXM7CiAgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+cGFpbnQocGFpbnRJbmZvLCBw
YWludE9mZnNldCk7CkBAIC0zMzE3LDM3ICszMzE4LDM3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXJDb250ZW50cyhSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQq
IGNvCiAKICAgICAgICAgICAgIGlmICh1c2VDbGlwUmVjdCkgewogICAgICAgICAgICAgICAgIC8v
IE5vdyByZXN0b3JlIG91ciBjbGlwLgotICAgICAgICAgICAgICAgIHJlc3RvcmVDbGlwKGNvbnRl
eHQsIHBhaW50RGlydHlSZWN0LCBjbGlwUmVjdFRvQXBwbHkpOworICAgICAgICAgICAgICAgIHJl
c3RvcmVDbGlwKGNvbnRleHQsIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgY2xpcFJlY3RU
b0FwcGx5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChzaG91bGRQ
YWludE91dGxpbmUgJiYgIW91dGxpbmVSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8g
UGFpbnQgb3VyIG93biBvdXRsaW5lCi0gICAgICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNv
bnRleHQsIHBpeGVsU25hcHBlZEludFJlY3Qob3V0bGluZVJlY3QucmVjdCgpKSwgUGFpbnRQaGFz
ZVNlbGZPdXRsaW5lLCBmYWxzZSwgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIsIHJlZ2lvbiwgMCk7
Ci0gICAgICAgICAgICBjbGlwVG9SZWN0KHJvb3RMYXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJl
Y3QsIG91dGxpbmVSZWN0LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsKKyAgICAg
ICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgcGl4ZWxTbmFwcGVkSW50UmVjdChv
dXRsaW5lUmVjdC5yZWN0KCkpLCBQYWludFBoYXNlU2VsZk91dGxpbmUsIGZhbHNlLCBwYWludGlu
Z1Jvb3RGb3JSZW5kZXJlciwgcGFpbnRpbmdJbmZvLnJlZ2lvbiwgMCk7CisgICAgICAgICAgICBj
bGlwVG9SZWN0KHBhaW50aW5nSW5mby5yb290TGF5ZXIsIGNvbnRleHQsIHBhaW50aW5nSW5mby5w
YWludERpcnR5UmVjdCwgb3V0bGluZVJlY3QsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRp
dXMpOwogICAgICAgICAgICAgcmVuZGVyZXIoKS0+cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNl
dCk7Ci0gICAgICAgICAgICByZXN0b3JlQ2xpcChjb250ZXh0LCBwYWludERpcnR5UmVjdCwgb3V0
bGluZVJlY3QpOworICAgICAgICAgICAgcmVzdG9yZUNsaXAoY29udGV4dCwgcGFpbnRpbmdJbmZv
LnBhaW50RGlydHlSZWN0LCBvdXRsaW5lUmVjdCk7CiAgICAgICAgIH0KICAgICAKICAgICAgICAg
Ly8gUGFpbnQgYW55IGNoaWxkIGxheWVycyB0aGF0IGhhdmUgb3ZlcmZsb3cuCi0gICAgICAgIHBh
aW50TGlzdChtX25vcm1hbEZsb3dMaXN0LCByb290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlS
ZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3QsIHJlZ2lvbiwgb3ZlcmxhcFRlc3RSZXF1
ZXN0cywgbG9jYWxQYWludEZsYWdzKTsKKyAgICAgICAgcGFpbnRMaXN0KG1fbm9ybWFsRmxvd0xp
c3QsIGNvbnRleHQsIHBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKICAgICAKICAgICAg
ICAgLy8gTm93IHdhbGsgdGhlIHNvcnRlZCBsaXN0IG9mIGNoaWxkcmVuIHdpdGggcG9zaXRpdmUg
ei1pbmRpY2VzLgotICAgICAgICBwYWludExpc3QocG9zWk9yZGVyTGlzdCgpLCByb290TGF5ZXIs
IGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3QsIHJl
Z2lvbiwgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgbG9jYWxQYWludEZsYWdzKTsKKyAgICAgICAgcGFp
bnRMaXN0KHBvc1pPcmRlckxpc3QoKSwgY29udGV4dCwgcGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50
RmxhZ3MpOwogICAgIH0KIAogICAgIGlmIChpc1BhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMpIHsK
LSAgICAgICAgY2xpcFRvUmVjdChyb290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBk
YW1hZ2VSZWN0KTsKKyAgICAgICAgY2xpcFRvUmVjdChwYWludGluZ0luZm8ucm9vdExheWVyLCBj
b250ZXh0LCBwYWludERpcnR5UmVjdCwgZGFtYWdlUmVjdCk7CiAgICAgICAgIHBhaW50T3ZlcmZs
b3dDb250cm9scyhjb250ZXh0LCByb3VuZGVkSW50UG9pbnQocGFpbnRPZmZzZXQpLCBwaXhlbFNu
YXBwZWRJbnRSZWN0KGRhbWFnZVJlY3QucmVjdCgpKSwgdHJ1ZSk7Ci0gICAgICAgIHJlc3RvcmVD
bGlwKGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBkYW1hZ2VSZWN0KTsKKyAgICAgICAgcmVzdG9y
ZUNsaXAoY29udGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBkYW1hZ2VSZWN0KTsK
ICAgICB9CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgaWYgKGZpbHRlclBhaW50ZXIu
aGFzU3RhcnRlZEZpbHRlckVmZmVjdCgpKSB7CiAgICAgICAgIC8vIEFwcGx5IHRoZSBjb3JyZWN0
IGNsaXBwaW5nIChpZS4gb3ZlcmZsb3c6IGhpZGRlbikuCi0gICAgICAgIGNsaXBUb1JlY3Qocm9v
dExheWVyLCB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBkYW1hZ2VS
ZWN0KTsKKyAgICAgICAgY2xpcFRvUmVjdChwYWludGluZ0luZm8ucm9vdExheWVyLCB0cmFuc3Bh
cmVuY3lMYXllckNvbnRleHQsIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgZGFtYWdlUmVj
dCk7CiAgICAgICAgIGNvbnRleHQgPSBmaWx0ZXJQYWludGVyLmFwcGx5RmlsdGVyRWZmZWN0KCk7
Ci0gICAgICAgIHJlc3RvcmVDbGlwKHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgcGFpbnREaXJ0
eVJlY3QsIGRhbWFnZVJlY3QpOworICAgICAgICByZXN0b3JlQ2xpcCh0cmFuc3BhcmVuY3lMYXll
ckNvbnRleHQsIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgZGFtYWdlUmVjdCk7CiAgICAg
fQogI2VuZGlmCiAKQEAgLTMzNTYsMTUgKzMzNTcsMTUgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRMYXllckNvbnRlbnRzKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCog
Y28KIAogICAgIGlmICgobG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nQ29tcG9z
aXRpbmdNYXNrUGhhc2UpICYmIHNob3VsZFBhaW50Q29udGVudCAmJiByZW5kZXJlcigpLT5oYXNN
YXNrKCkgJiYgIXNlbGVjdGlvbk9ubHkpIHsKICAgICAgICAgaWYgKHVzZUNsaXBSZWN0KQotICAg
ICAgICAgICAgY2xpcFRvUmVjdChyb290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBk
YW1hZ2VSZWN0LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsgLy8gTWFzayBwYWlu
dGluZyB3aWxsIGhhbmRsZSBjbGlwcGluZyB0byBzZWxmLgorICAgICAgICAgICAgY2xpcFRvUmVj
dChwYWludGluZ0luZm8ucm9vdExheWVyLCBjb250ZXh0LCBwYWludGluZ0luZm8ucGFpbnREaXJ0
eVJlY3QsIGRhbWFnZVJlY3QsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOyAvLyBN
YXNrIHBhaW50aW5nIHdpbGwgaGFuZGxlIGNsaXBwaW5nIHRvIHNlbGYuCiAgICAgICAgIAogICAg
ICAgICAvLyBQYWludCB0aGUgbWFzay4KLSAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250
ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGRhbWFnZVJlY3QucmVjdCgpKSwgUGFpbnRQaGFzZU1h
c2ssIGZhbHNlLCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgcmVnaW9uLCAwKTsKKyAgICAgICAg
UGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGRhbWFnZVJl
Y3QucmVjdCgpKSwgUGFpbnRQaGFzZU1hc2ssIGZhbHNlLCBwYWludGluZ1Jvb3RGb3JSZW5kZXJl
ciwgcGFpbnRpbmdJbmZvLnJlZ2lvbiwgMCk7CiAgICAgICAgIHJlbmRlcmVyKCktPnBhaW50KHBh
aW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgICAgICAKICAgICAgICAgaWYgKHVzZUNsaXBSZWN0
KSB7CiAgICAgICAgICAgICAvLyBSZXN0b3JlIHRoZSBjbGlwLgotICAgICAgICAgICAgcmVzdG9y
ZUNsaXAoY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFnZVJlY3QpOworICAgICAgICAgICAg
cmVzdG9yZUNsaXAoY29udGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBkYW1hZ2VS
ZWN0KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzM3OSwxMCArMzM4MCw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFw
aGljc0NvbnRleHQqIGNvCiAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKIH0KIAotdm9pZCBS
ZW5kZXJMYXllcjo6cGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiBsaXN0LCBSZW5kZXJM
YXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJlY3QsIFBhaW50QmVo
YXZpb3IgcGFpbnRCZWhhdmlvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJP
YmplY3QqIHBhaW50aW5nUm9vdCwgUmVuZGVyUmVnaW9uKiByZWdpb24sIE92ZXJsYXBUZXN0UmVx
dWVzdE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGlz
dChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFp
bnRGbGFncykKIHsKICAgICBpZiAoIWxpc3QpCiAgICAgICAgIHJldHVybjsKQEAgLTMzOTcsMTYg
KzMzOTUsMTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXll
cio+KiBsaXN0LCBSZW5kZXJMYXllciogcm9vdExheWVyLAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGlzdC0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGNoaWxkTGF5
ZXIgPSBsaXN0LT5hdChpKTsKICAgICAgICAgaWYgKCFjaGlsZExheWVyLT5pc1BhZ2luYXRlZCgp
KQotICAgICAgICAgICAgY2hpbGRMYXllci0+cGFpbnRMYXllcihyb290TGF5ZXIsIGNvbnRleHQs
IHBhaW50RGlydHlSZWN0LCBMYXlvdXRTaXplKCksIHBhaW50QmVoYXZpb3IsIHBhaW50aW5nUm9v
dCwgcmVnaW9uLCBvdmVybGFwVGVzdFJlcXVlc3RzLCBwYWludEZsYWdzKTsKKyAgICAgICAgICAg
IGNoaWxkTGF5ZXItPnBhaW50TGF5ZXIoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdz
LCBMYXlvdXRTaXplKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYWludFBhZ2luYXRl
ZENoaWxkTGF5ZXIoY2hpbGRMYXllciwgcm9vdExheWVyLCBjb250ZXh0LCBwYWludERpcnR5UmVj
dCwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCByZWdpb24sIG92ZXJsYXBUZXN0UmVxdWVz
dHMsIHBhaW50RmxhZ3MpOworICAgICAgICAgICAgcGFpbnRQYWdpbmF0ZWRDaGlsZExheWVyKGNo
aWxkTGF5ZXIsIGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiAgICAgfQogfQog
Ci12b2lkIFJlbmRlckxheWVyOjpwYWludFBhZ2luYXRlZENoaWxkTGF5ZXIoUmVuZGVyTGF5ZXIq
IGNoaWxkTGF5ZXIsIFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBM
YXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCog
cGFpbnRpbmdSb290LCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFw
KiBvdmVybGFwVGVzdFJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRQYWdpbmF0ZWRDaGlsZExheWVyKFJlbmRlckxheWVyKiBjaGlsZExheWVyLCBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8s
IFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQogewogICAgIC8vIFdlIG5lZWQgdG8gZG8gbXVs
dGlwbGUgcGFzc2VzLCBicmVha2luZyB1cCBvdXIgY2hpbGQgbGF5ZXIgaW50byBzdHJpcHMuCiAg
ICAgVmVjdG9yPFJlbmRlckxheWVyKj4gY29sdW1uTGF5ZXJzOwpAQCAtMzQyNCwxMyArMzQxOSwx
MSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFBhZ2luYXRlZENoaWxkTGF5ZXIoUmVuZGVyTGF5
ZXIqIGNoaWxkTGF5ZXIsIFJlbmRlckxheWVyKgogICAgIGlmICghY29sdW1uTGF5ZXJzLnNpemUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFpbnRDaGlsZExheWVySW50b0NvbHVtbnMoY2hp
bGRMYXllciwgcm9vdExheWVyLCBjb250ZXh0LCBwYWludERpcnR5UmVjdCwgcGFpbnRCZWhhdmlv
ciwgcGFpbnRpbmdSb290LCByZWdpb24sIG92ZXJsYXBUZXN0UmVxdWVzdHMsIHBhaW50RmxhZ3Ms
IGNvbHVtbkxheWVycywgY29sdW1uTGF5ZXJzLnNpemUoKSAtIDEpOworICAgIHBhaW50Q2hpbGRM
YXllckludG9Db2x1bW5zKGNoaWxkTGF5ZXIsIGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRG
bGFncywgY29sdW1uTGF5ZXJzLCBjb2x1bW5MYXllcnMuc2l6ZSgpIC0gMSk7CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50Q2hpbGRMYXllckludG9Db2x1bW5zKFJlbmRlckxheWVyKiBjaGls
ZExheWVyLCBSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlv
dXRSZWN0JiBwYWludERpcnR5UmVjdCwgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBw
YWludGluZ1Jvb3QsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBPdmVybGFwVGVzdFJlcXVlc3RNYXAq
IG92ZXJsYXBUZXN0UmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29uc3QgVmVjdG9yPFJlbmRl
ckxheWVyKj4mIGNvbHVtbkxheWVycywgc2l6ZV90IGNvbEluZGV4KQordm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRDaGlsZExheWVySW50b0NvbHVtbnMoUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIsIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5n
SW5mbywKKyAgICBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29uc3QgVmVjdG9yPFJlbmRl
ckxheWVyKj4mIGNvbHVtbkxheWVycywgc2l6ZV90IGNvbEluZGV4KQogewogICAgIFJlbmRlckJs
b2NrKiBjb2x1bW5CbG9jayA9IHRvUmVuZGVyQmxvY2soY29sdW1uTGF5ZXJzW2NvbEluZGV4XS0+
cmVuZGVyZXIoKSk7CiAKQEAgLTM0NDEsNyArMzQzNCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50Q2hpbGRMYXllckludG9Db2x1bW5zKFJlbmRlckxheWVyKiBjaGlsZExheWVyLCBSZW5kZXJM
YXllCiAgICAgTGF5b3V0UG9pbnQgbGF5ZXJPZmZzZXQ7CiAgICAgLy8gRklYTUU6IEl0IGxvb2tz
IHN1c3BpY2lvdXMgdG8gY2FsbCBjb252ZXJ0VG9MYXllckNvb3JkcyBoZXJlCiAgICAgLy8gYXMg
Y2FuVXNlQ29udmVydFRvTGF5ZXJDb29yZHMgaXMgdHJ1ZSBmb3IgdGhpcyBsYXllci4KLSAgICBj
b2x1bW5CbG9jay0+bGF5ZXIoKS0+Y29udmVydFRvTGF5ZXJDb29yZHMocm9vdExheWVyLCBsYXll
ck9mZnNldCk7CisgICAgY29sdW1uQmxvY2stPmxheWVyKCktPmNvbnZlcnRUb0xheWVyQ29vcmRz
KHBhaW50aW5nSW5mby5yb290TGF5ZXIsIGxheWVyT2Zmc2V0KTsKICAgICAKICAgICBib29sIGlz
SG9yaXpvbnRhbCA9IGNvbHVtbkJsb2NrLT5zdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpOwogCkBAIC0zNDY4LDcgKzM0NjEsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludENoaWxk
TGF5ZXJJbnRvQ29sdW1ucyhSZW5kZXJMYXllciogY2hpbGRMYXllciwgUmVuZGVyTGF5ZQogCiAg
ICAgICAgIGNvbFJlY3QubW92ZUJ5KGxheWVyT2Zmc2V0KTsKIAotICAgICAgICBMYXlvdXRSZWN0
IGxvY2FsRGlydHlSZWN0KHBhaW50RGlydHlSZWN0KTsKKyAgICAgICAgTGF5b3V0UmVjdCBsb2Nh
bERpcnR5UmVjdChwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpOwogICAgICAgICBsb2NhbERp
cnR5UmVjdC5pbnRlcnNlY3QoY29sUmVjdCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWxvY2Fs
RGlydHlSZWN0LmlzRW1wdHkoKSkgewpAQCAtMzQ4OCw3ICszNDgxLDExIEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnBhaW50Q2hpbGRMYXllckludG9Db2x1bW5zKFJlbmRlckxheWVyKiBjaGlsZExheWVy
LCBSZW5kZXJMYXllCiAgICAgICAgICAgICAgICAgbmV3VHJhbnNmb3JtLnRyYW5zbGF0ZVJpZ2h0
KHJvdW5kVG9JbnQob2Zmc2V0LndpZHRoKCkpLCByb3VuZFRvSW50KG9mZnNldC5oZWlnaHQoKSkp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXItPm1fdHJhbnNm
b3JtID0gYWRvcHRQdHIobmV3IFRyYW5zZm9ybWF0aW9uTWF0cml4KG5ld1RyYW5zZm9ybSkpOwot
ICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXItPnBhaW50TGF5ZXIocm9vdExheWVyLCBjb250ZXh0
LCBsb2NhbERpcnR5UmVjdCwgTGF5b3V0U2l6ZSgpLCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jv
b3QsIHJlZ2lvbiwgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgcGFpbnRGbGFncyk7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgTGF5ZXJQYWludGluZ0luZm8gbG9jYWxQYWludGluZ0lu
Zm8ocGFpbnRpbmdJbmZvKTsKKyAgICAgICAgICAgICAgICBsb2NhbFBhaW50aW5nSW5mby5wYWlu
dERpcnR5UmVjdCA9IGxvY2FsRGlydHlSZWN0OworICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXIt
PnBhaW50TGF5ZXIoY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50RmxhZ3MsIExheW91
dFNpemUoKSk7CisKICAgICAgICAgICAgICAgICBpZiAob2xkSGFzVHJhbnNmb3JtKQogICAgICAg
ICAgICAgICAgICAgICBjaGlsZExheWVyLT5tX3RyYW5zZm9ybSA9IGFkb3B0UHRyKG5ldyBUcmFu
c2Zvcm1hdGlvbk1hdHJpeChvbGRUcmFuc2Zvcm0pKTsKICAgICAgICAgICAgICAgICBlbHNlCkBA
IC0zNDk3LDcgKzM0OTQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludENoaWxkTGF5ZXJJbnRv
Q29sdW1ucyhSZW5kZXJMYXllciogY2hpbGRMYXllciwgUmVuZGVyTGF5ZQogICAgICAgICAgICAg
ICAgIC8vIEFkanVzdCB0aGUgdHJhbnNmb3JtIHN1Y2ggdGhhdCB0aGUgcmVuZGVyZXIncyB1cHBl
ciBsZWZ0IGNvcm5lciB3aWxsIHBhaW50IGF0ICgwLDApIGluIHVzZXIgc3BhY2UuCiAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBpbnZvbHZlcyBzdWJ0cmFjdGluZyBvdXQgdGhlIHBvc2l0aW9uIG9m
IHRoZSBsYXllciBpbiBvdXIgY3VycmVudCBjb29yZGluYXRlIHNwYWNlLgogICAgICAgICAgICAg
ICAgIExheW91dFBvaW50IGNoaWxkT2Zmc2V0OwotICAgICAgICAgICAgICAgIGNvbHVtbkxheWVy
c1tjb2xJbmRleCAtIDFdLT5jb252ZXJ0VG9MYXllckNvb3Jkcyhyb290TGF5ZXIsIGNoaWxkT2Zm
c2V0KTsKKyAgICAgICAgICAgICAgICBjb2x1bW5MYXllcnNbY29sSW5kZXggLSAxXS0+Y29udmVy
dFRvTGF5ZXJDb29yZHMocGFpbnRpbmdJbmZvLnJvb3RMYXllciwgY2hpbGRPZmZzZXQpOwogICAg
ICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAgICAgICAgICAg
ICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlUmlnaHQocm91bmRUb0ludChjaGlsZE9mZnNldC54KCkg
KyBvZmZzZXQud2lkdGgoKSksIHJvdW5kVG9JbnQoY2hpbGRPZmZzZXQueSgpICsgb2Zmc2V0Lmhl
aWdodCgpKSk7CiAgICAgICAgICAgICAgICAgCkBAIC0zNTA1LDkgKzM1MDIsMTAgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6cGFpbnRDaGlsZExheWVySW50b0NvbHVtbnMoUmVuZGVyTGF5ZXIqIGNoaWxk
TGF5ZXIsIFJlbmRlckxheWUKICAgICAgICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0odHJh
bnNmb3JtLnRvQWZmaW5lVHJhbnNmb3JtKCkpOwogCiAgICAgICAgICAgICAgICAgLy8gTm93IGRv
IGEgcGFpbnQgd2l0aCB0aGUgcm9vdCBsYXllciBzaGlmdGVkIHRvIGJlIHRoZSBuZXh0IG11bHRp
Y29sIGJsb2NrLgotICAgICAgICAgICAgICAgIHBhaW50Q2hpbGRMYXllckludG9Db2x1bW5zKGNo
aWxkTGF5ZXIsIGNvbHVtbkxheWVyc1tjb2xJbmRleCAtIDFdLCBjb250ZXh0LCB0cmFuc2Zvcm0u
aW52ZXJzZSgpLm1hcFJlY3QobG9jYWxEaXJ0eVJlY3QpLCBwYWludEJlaGF2aW9yLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWludGluZ1Jvb3QsIHJlZ2lv
biwgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgcGFpbnRGbGFncywgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5ZXJzLCBjb2xJbmRleCAtIDEpOworICAg
ICAgICAgICAgICAgIExheWVyUGFpbnRpbmdJbmZvIGNvbHVtblBhaW50aW5nSW5mbyhwYWludGlu
Z0luZm8pOworICAgICAgICAgICAgICAgIGNvbHVtblBhaW50aW5nSW5mby5yb290TGF5ZXIgPSBj
b2x1bW5MYXllcnNbY29sSW5kZXggLSAxXTsKKyAgICAgICAgICAgICAgICBjb2x1bW5QYWludGlu
Z0luZm8ucGFpbnREaXJ0eVJlY3QgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3QobG9jYWxE
aXJ0eVJlY3QpOworICAgICAgICAgICAgICAgIHBhaW50Q2hpbGRMYXllckludG9Db2x1bW5zKGNo
aWxkTGF5ZXIsIGNvbnRleHQsIGNvbHVtblBhaW50aW5nSW5mbywgcGFpbnRGbGFncywgY29sdW1u
TGF5ZXJzLCBjb2xJbmRleCAtIDEpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggYjQxZTI5ZjUxNDc4NDRkMTc2ZjJl
NzMyY2ZlNTUwN2RkZTA4ZDE5OS4uMzJhZTQ5OGQyOTgyNDdiYTFkNTI2ODIzNmQwYzNiNzg5NzU4
ODM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTczNywyNyAr
NzM3LDI5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nQW5kTGF5ZXJM
aXN0c0lmTmVlZGVkKCk7CiAKLSAgICB2b2lkIHBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RM
YXllciwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJlY3Qs
IGNvbnN0IExheW91dFNpemUmIHN1YlBpeGVsQWNjdW11bGF0aW9uLAotICAgICAgICAgICAgICAg
ICAgICBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdCwgUmVuZGVyUmVn
aW9uKiA9IDAsIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogPSAwLAotICAgICAgICAgICAgICAgICAg
ICBQYWludExheWVyRmxhZ3MgPSAwKTsKLSAgICB2b2lkIHBhaW50TGF5ZXJDb250ZW50c0FuZFJl
ZmxlY3Rpb24oUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
TGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1YlBpeGVsQWNj
dW11bGF0aW9uLAotICAgICAgICAgICAgICAgICAgICBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmpl
Y3QqIHBhaW50aW5nUm9vdCwgUmVuZGVyUmVnaW9uKiA9IDAsIE92ZXJsYXBUZXN0UmVxdWVzdE1h
cCogPSAwLAotICAgICAgICAgICAgICAgICAgICBQYWludExheWVyRmxhZ3MgPSAwKTsKLSAgICB2
b2lkIHBhaW50TGF5ZXJDb250ZW50cyhSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgY29uc3QgTGF5b3V0U2l6
ZSYgc3ViUGl4ZWxBY2N1bXVsYXRpb24sCi0gICAgICAgICAgICAgICAgICAgIFBhaW50QmVoYXZp
b3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290LCBSZW5kZXJSZWdpb24qID0gMCwgT3Zlcmxh
cFRlc3RSZXF1ZXN0TWFwKiA9IDAsCi0gICAgICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFn
cyA9IDApOwotICAgIHZvaWQgcGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiwgUmVuZGVy
TGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBwLAotICAgICAgICAgICAgICAgICAg
IGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlSZWN0LCBQYWludEJlaGF2aW9yLAotICAgICAg
ICAgICAgICAgICAgIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290LCBSZW5kZXJSZWdpb24qLCBP
dmVybGFwVGVzdFJlcXVlc3RNYXAqLAotICAgICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFn
cyk7Ci0gICAgdm9pZCBwYWludFBhZ2luYXRlZENoaWxkTGF5ZXIoUmVuZGVyTGF5ZXIqIGNoaWxk
TGF5ZXIsIFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCosCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJl
Y3QsIFBhaW50QmVoYXZpb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVu
ZGVyT2JqZWN0KiBwYWludGluZ1Jvb3QsIFJlbmRlclJlZ2lvbiosIE92ZXJsYXBUZXN0UmVxdWVz
dE1hcCosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpbnRMYXllckZsYWdz
KTsKLSAgICB2b2lkIHBhaW50Q2hpbGRMYXllckludG9Db2x1bW5zKFJlbmRlckxheWVyKiBjaGls
ZExheWVyLCBSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0
eVJlY3QsIFBhaW50QmVoYXZpb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdCwgUmVuZGVyUmVnaW9uKiwgT3ZlcmxhcFRlc3RS
ZXF1ZXN0TWFwKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhaW50TGF5
ZXJGbGFncywgY29uc3QgVmVjdG9yPFJlbmRlckxheWVyKj4mIGNvbHVtbkxheWVycywgc2l6ZV90
IGNvbHVtbkluZGV4KTsKKyAgICBzdHJ1Y3QgTGF5ZXJQYWludGluZ0luZm8geworICAgICAgICBM
YXllclBhaW50aW5nSW5mbyhSZW5kZXJMYXllciogaW5Sb290TGF5ZXIsIGNvbnN0IExheW91dFJl
Y3QmIGluRGlydHlSZWN0LCBQYWludEJlaGF2aW9yIGluUGFpbnRCZWhhdmlvciwgUmVuZGVyT2Jq
ZWN0KiBpblBhaW50aW5nUm9vdCwgUmVuZGVyUmVnaW9uKmluUmVnaW9uID0gMCwgT3ZlcmxhcFRl
c3RSZXF1ZXN0TWFwKiBpbk92ZXJsYXBUZXN0UmVxdWVzdHMgPSAwKQorICAgICAgICAgICAgOiBy
b290TGF5ZXIoaW5Sb290TGF5ZXIpCisgICAgICAgICAgICAsIHBhaW50aW5nUm9vdChpblBhaW50
aW5nUm9vdCkKKyAgICAgICAgICAgICwgcGFpbnREaXJ0eVJlY3QoaW5EaXJ0eVJlY3QpCisgICAg
ICAgICAgICAsIHJlZ2lvbihpblJlZ2lvbikKKyAgICAgICAgICAgICwgb3ZlcmxhcFRlc3RSZXF1
ZXN0cyhpbk92ZXJsYXBUZXN0UmVxdWVzdHMpCisgICAgICAgICAgICAsIHBhaW50QmVoYXZpb3Io
aW5QYWludEJlaGF2aW9yKQorICAgICAgICB7IH0KKyAgICAgICAgUmVuZGVyTGF5ZXIqIHJvb3RM
YXllcjsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3Q7IC8vIG9ubHkgcGFpbnQg
ZGVzY2VuZGFudHMgb2YgdGhpcyBvYmplY3QKKyAgICAgICAgTGF5b3V0UmVjdCBwYWludERpcnR5
UmVjdDsgLy8gcmVsYXRpdmUgdG8gcm9vdExheWVyOworICAgICAgICBSZW5kZXJSZWdpb24qIHJl
Z2lvbjsgLy8gTWF5IGJlIG51bGwuCisgICAgICAgIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogb3Zl
cmxhcFRlc3RSZXF1ZXN0czsgLy8gTWF5IGJlIG51bGwuCisgICAgICAgIFBhaW50QmVoYXZpb3Ig
cGFpbnRCZWhhdmlvcjsKKyAgICB9OworICAgIAorICAgIHZvaWQgcGFpbnRMYXllcihHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncywgY29u
c3QgTGF5b3V0U2l6ZSYgc3ViUGl4ZWxBY2N1bXVsYXRpb24pOworICAgIHZvaWQgcGFpbnRMYXll
ckNvbnRlbnRzQW5kUmVmbGVjdGlvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50
aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgc3ViUGl4ZWxBY2N1
bXVsYXRpb24pOworICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBjb25zdCBMYXlvdXRT
aXplJiBzdWJQaXhlbEFjY3VtdWxhdGlvbik7CisgICAgdm9pZCBwYWludExpc3QoVmVjdG9yPFJl
bmRlckxheWVyKj4qLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYs
IFBhaW50TGF5ZXJGbGFncyk7CisgICAgdm9pZCBwYWludFBhZ2luYXRlZENoaWxkTGF5ZXIoUmVu
ZGVyTGF5ZXIqIGNoaWxkTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRp
bmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKKyAgICB2b2lkIHBhaW50Q2hpbGRMYXllckludG9D
b2x1bW5zKFJlbmRlckxheWVyKiBjaGlsZExheWVyLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBM
YXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncywgY29uc3QgVmVjdG9yPFJlbmRlckxh
eWVyKj4mIGNvbHVtbkxheWVycywgc2l6ZV90IGNvbHVtbkluZGV4KTsKIAogICAgIFJlbmRlckxh
eWVyKiBoaXRUZXN0TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNv
bnRhaW5lckxheWVyLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVj
dCYgaGl0VGVzdFJlY3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIGJvb2wgYXBwbGllZFRyYW5z
Zm9ybSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKaW5kZXggMDIwMjMyZmMyN2EyOGI1MDQzYzRkYzQyNmVkOWJkZjFkNmVmYWJlMy4uZDRhODVh
M2I0YmE3OGQ5OTRmY2ViMTFlYzI3OTllY2YzMjYwYjgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTE1MzIsNyArMTUzMiw4IEBA
IHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihSZW5kZXJMYXllciogcm9v
dExheWVyLCBHcmFwaGljc0NvbnRleHQqCiAgICAgICAgIHBhaW50RmxhZ3MgfD0gUmVuZGVyTGF5
ZXI6OlBhaW50TGF5ZXJQYWludGluZ092ZXJmbG93Q29udGVudHM7CiAgICAgCiAgICAgLy8gRklY
TUU6IEdyYXBoaWNzTGF5ZXJzIG5lZWQgYSB3YXkgdG8gc3BsaXQgZm9yIFJlbmRlclJlZ2lvbnMu
Ci0gICAgbV9vd25pbmdMYXllci0+cGFpbnRMYXllckNvbnRlbnRzKHJvb3RMYXllciwgY29udGV4
dCwgcGFpbnREaXJ0eVJlY3QsIExheW91dFNpemUoKSwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdS
b290LCAwLCAwLCBwYWludEZsYWdzKTsKKyAgICBSZW5kZXJMYXllcjo6TGF5ZXJQYWludGluZ0lu
Zm8gcGFpbnRpbmdJbmZvKHJvb3RMYXllciwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3Is
IHBhaW50aW5nUm9vdCk7CisgICAgbV9vd25pbmdMYXllci0+cGFpbnRMYXllckNvbnRlbnRzKGNv
bnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFncywgTGF5b3V0U2l6ZSgpKTsKIAogICAgIGlm
IChtX293bmluZ0xheWVyLT5jb250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMoKSkKICAgICAg
ICAgbV9vd25pbmdMYXllci0+cGFpbnRPdmVybGF5U2Nyb2xsYmFycyhjb250ZXh0LCBwYWludERp
cnR5UmVjdCwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcAppbmRleCBhZDNhY2YwYmE3ZWMzMTNlODhjNzAxYzg1
M2JmNzZlNzgzNjhhMjIzLi4wMjI0YjU0YjM3YzBmYTVmMDBhMWM3N2M4MjY2N2NjYjcwNjAxOGJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCkBAIC02OCwx
NCArNjgsMTQgQEAgdm9pZCBSZW5kZXJSZXBsaWNhOjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogIAogICAgIExheW91dFBvaW50IGFk
anVzdGVkUGFpbnRPZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2F0aW9uKCk7CiAKLSAgICBpZiAo
cGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQorICAgIGlmIChwYWludElu
Zm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpIHsKICAgICAgICAgLy8gVHVybiBhcm91
bmQgYW5kIHBhaW50IHRoZSBwYXJlbnQgbGF5ZXIuIFVzZSB0ZW1wb3JhcnkgY2xpcFJlY3RzLCBz
byB0aGF0IHRoZSBsYXllciBkb2Vzbid0IGVuZCB1cCBjYWNoaW5nIGNsaXAgcmVjdHMKICAgICAg
ICAgLy8gY29tcHV0aW5nIHVzaW5nIHRoZSB3cm9uZyByb290TGF5ZXIKLSAgICAgICAgbGF5ZXIo
KS0+cGFyZW50KCktPnBhaW50TGF5ZXIobGF5ZXIoKS0+dHJhbnNmb3JtKCkgPyBsYXllcigpLT5w
YXJlbnQoKSA6IGxheWVyKCktPmVuY2xvc2luZ1RyYW5zZm9ybWVkQW5jZXN0b3IoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQsIHBhaW50
SW5mby5yZWN0LCBMYXlvdXRTaXplKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhaW50QmVoYXZpb3JOb3JtYWwsIDAsIHBhaW50SW5mby5yZW5kZXJSZWdpb24sIDAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlckxheWVyOjpQYWlu
dExheWVySGF2ZVRyYW5zcGFyZW5jeSB8IFJlbmRlckxheWVyOjpQYWludExheWVyQXBwbGllZFRy
YW5zZm9ybSB8IFJlbmRlckxheWVyOjpQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzIHwgUmVu
ZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ1JlZmxlY3Rpb24pOwotICAgIGVsc2UgaWYgKHBh
aW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlTWFzaykKKyAgICAgICAgUmVuZGVyTGF5ZXI6Okxh
eWVyUGFpbnRpbmdJbmZvIHBhaW50aW5nSW5mbyhsYXllcigpLT50cmFuc2Zvcm0oKSA/IGxheWVy
KCktPnBhcmVudCgpIDogbGF5ZXIoKS0+ZW5jbG9zaW5nVHJhbnNmb3JtZWRBbmNlc3RvcigpLCBw
YWludEluZm8ucmVjdCwgUGFpbnRCZWhhdmlvck5vcm1hbCwgMCwgcGFpbnRJbmZvLnJlbmRlclJl
Z2lvbik7CisgICAgICAgIGxheWVyKCktPnBhcmVudCgpLT5wYWludExheWVyKHBhaW50SW5mby5j
b250ZXh0LCBwYWludGluZ0luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlbmRlckxheWVyOjpQYWludExheWVySGF2ZVRyYW5zcGFyZW5jeSB8IFJlbmRlckxheWVy
OjpQYWludExheWVyQXBwbGllZFRyYW5zZm9ybSB8IFJlbmRlckxheWVyOjpQYWludExheWVyVGVt
cG9yYXJ5Q2xpcFJlY3RzIHwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ1JlZmxlY3Rp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFNpemUoKSk7
CisgICAgfSBlbHNlIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU1hc2spCiAgICAg
ICAgIHBhaW50TWFzayhwYWludEluZm8sIGFkanVzdGVkUGFpbnRPZmZzZXQpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173659</attachid>
            <date>2012-11-12 09:22:57 -0800</date>
            <delta_ts>2012-11-12 12:03:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101895-20121112092059.patch</filename>
            <type>text/plain</type>
            <size>41144</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjY1ZGE5YWQ3MmYxNzEx
YzY3ZTljZDUyMzAzMDUzODk1YWUxYzc5Mi4uOGZmMWIyNGRlNDYwZGMzMmY4MDc2OWEyMmVhNzA4
NjE4MzFiYzAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTExLTEyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB0aGUg
Y3JhenkgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdG8gUmVuZGVyTGF5ZXIgcGFpbnRpbmcgbWVtYmVy
IGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAxODk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIHZhcmlvdXMgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIqIGZ1bmN0aW9ucyB0b29rIGEg
bG90IG9mIGFyZ3VtZW50cywgbW9zdAorICAgICAgICBvZiB3aGljaCB3ZXJlIHBhc3NlZCBkb3du
IGRpcmVjdGx5IHRvIGRlc2NlbmRhbnRzLgorICAgICAgICAKKyAgICAgICAgR2F0aGVyIHRoZXNl
IGFyZ3VtZW50cyBpbnRvIGEgTGF5ZXJQYWludGluZ0luZm8gc3RydWN0LgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwYWludCk6IENyZWF0ZSBhIExheWVyUGFpbnRpbmdJbmZvIHN0cnVjdCB0byBwYXNzCisgICAg
ICAgIHRvIGRlc2NlbmRhbnQgcGFpbnQgY2FsbHMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6cGFpbnRPdmVybGF5U2Nyb2xsYmFycyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIpOiBXaGVuIHBhaW50aW5nIHRyYW5zZm9ybWVkIGxheWVy
cywgd2UKKyAgICAgICAgbWFrZSBhIG5ldyBMYXllclBhaW50aW5nSW5mbyBiZWNhdXNlIHRoZSBy
b290IGxheWVyIGlzIHNoaWZ0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFp
bnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6cGFpbnRMYXllckNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwYWludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50UGFnaW5h
dGVkQ2hpbGRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRDaGls
ZExheWVySW50b0NvbHVtbnMpOiBDcmVhdGUgYSBuZXcgTGF5ZXJQYWludGluZ0luZm8KKyAgICAg
ICAgc3RydWN0IGZvciBjb2x1bW4gcGFpbnRpbmcuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6TGF5ZXJQYWludGluZ0lu
Zm86OkxheWVyUGFpbnRpbmdJbmZvKToKKyAgICAgICAgKExheWVyUGFpbnRpbmdJbmZvKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIpOiBCdWlsZCBhIExheWVyUGFp
bnRpbmdJbmZvCisgICAgICAgIHRvIGVudGVyIGxheWVyIHBhaW50aW5nLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxp
Y2E6OnBhaW50KTogRGl0dG8uCisKIDIwMTItMTEtMTEgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFz
aGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdURlN0cmluZzo6dXRmOCgpIHNob3VsZCBoYXZl
IGEgbW9kZSBvZiBjb252ZXJzaW9uIHRvIHVzZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDJhNzFiYmVhZmQwZWVmMjMw
YjU1MjExOTZkYjYzZWMxMDg4NTc1YjEuLjU3ZmVmMzQ3NWZiYWFiMjkzMmExMTQ3MzA1ZGEzOGJm
OWQ1ZjQwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAt
MjkzOSw3ICsyOTM5LDEwIEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rp
b24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0CiB2b2lkIFJlbmRlckxh
eWVyOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRh
bWFnZVJlY3QsIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBwYWlu
dGluZ1Jvb3QsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFn
cykKIHsKICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAgb3ZlcmxhcFRlc3RSZXF1ZXN0czsKLSAg
ICBwYWludExheWVyKHRoaXMsIGNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QoZGFtYWdlUmVjdCks
IExheW91dFNpemUoKSwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCByZWdpb24sICZvdmVy
bGFwVGVzdFJlcXVlc3RzLCBwYWludEZsYWdzKTsKKworICAgIExheWVyUGFpbnRpbmdJbmZvIHBh
aW50aW5nSW5mbyh0aGlzLCBlbmNsb3NpbmdJbnRSZWN0KGRhbWFnZVJlY3QpLCBwYWludEJlaGF2
aW9yLCBMYXlvdXRTaXplKCksIHBhaW50aW5nUm9vdCwgcmVnaW9uLCAmb3ZlcmxhcFRlc3RSZXF1
ZXN0cyk7CisgICAgcGFpbnRMYXllcihjb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50RmxhZ3Mp
OworCiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOjppdGVyYXRvciBlbmQgPSBvdmVybGFwVGVz
dFJlcXVlc3RzLmVuZCgpOwogICAgIGZvciAoT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOjppdGVyYXRv
ciBpdCA9IG92ZXJsYXBUZXN0UmVxdWVzdHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAg
ICAgICBpdC0+a2V5LT5zZXRPdmVybGFwVGVzdFJlc3VsdChmYWxzZSk7CkBAIC0yOTQ5LDggKzI5
NTIsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFIKIHsKICAgICBpZiAoIW1fY29udGFpbnNE
aXJ0eU92ZXJsYXlTY3JvbGxiYXJzKQogICAgICAgICByZXR1cm47Ci0gICAgcGFpbnRMYXllcih0
aGlzLCBjb250ZXh0LCBkYW1hZ2VSZWN0LCBMYXlvdXRTaXplKCksIHBhaW50QmVoYXZpb3IsIHBh
aW50aW5nUm9vdCwgMCwgMCwgUGFpbnRMYXllckhhdmVUcmFuc3BhcmVuY3kgfCBQYWludExheWVy
VGVtcG9yYXJ5Q2xpcFJlY3RzIAotICAgICAgICAgICAgICAgfCBQYWludExheWVyUGFpbnRpbmdP
dmVybGF5U2Nyb2xsYmFycyk7CisKKyAgICBMYXllclBhaW50aW5nSW5mbyBwYWludGluZ0luZm8o
dGhpcywgZW5jbG9zaW5nSW50UmVjdChkYW1hZ2VSZWN0KSwgcGFpbnRCZWhhdmlvciwgTGF5b3V0
U2l6ZSgpLCBwYWludGluZ1Jvb3QpOworICAgIHBhaW50TGF5ZXIoY29udGV4dCwgcGFpbnRpbmdJ
bmZvLCBQYWludExheWVySGF2ZVRyYW5zcGFyZW5jeSB8IFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlw
UmVjdHMgfCBQYWludExheWVyUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycyk7CisKICAgICBtX2Nv
bnRhaW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycyA9IGZhbHNlOwogfQogCkBAIC0zMDQ1LDE4ICsz
MDUwLDE5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRTdXBwcmVzc1BhaW50aW5nTGF5ZXIo
UmVuZGVyTGF5ZXIqIGxheWVyKQogfQogCiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIo
UmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJlY3QsIGNvbnN0
IExheW91dFNpemUmIHN1YlBpeGVsQWNjdW11bGF0aW9uLCBQYWludEJlaGF2aW9yIHBhaW50QmVo
YXZpb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9v
dCwgUmVuZGVyUmVnaW9uKiByZWdpb24sIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogb3ZlcmxhcFRl
c3RSZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFncyBwYWlu
dEZsYWdzKQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJG
bGFncyBwYWludEZsYWdzKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAg
ICBpZiAoaXNDb21wb3NpdGVkKCkpIHsKICAgICAgICAgLy8gVGhlIHVwZGF0aW5nQ29udHJvbFRp
bnRzKCkgcGFpbnRpbmcgcGFzcyBnb2VzIHRocm91Z2ggY29tcG9zaXRpbmcgbGF5ZXJzLAogICAg
ICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCBjYWNoZSBjbGlwIHJl
Y3RzIGNvbXB1dGVkIHdpdGggdGhlIHdyb25nIHJvb3QgaW4gdGhpcyBjYXNlLgotICAgICAgICBp
ZiAoY29udGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSB8fCAocGFpbnRCZWhhdmlvciAmIFBh
aW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpKQorICAgICAgICBpZiAoY29udGV4
dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSB8fCAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3Ig
JiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKSkKICAgICAgICAgICAgIHBh
aW50RmxhZ3MgfD0gUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0czsKLSAgICAgICAgZWxzZSBp
ZiAoIWJhY2tpbmcoKS0+cGFpbnRzSW50b1dpbmRvdygpICYmICFiYWNraW5nKCktPnBhaW50c0lu
dG9Db21wb3NpdGVkQW5jZXN0b3IoKSAmJiAhc2hvdWxkRG9Tb2Z0d2FyZVBhaW50KHRoaXMsIHBh
aW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdSZWZsZWN0aW9uKSAmJiAhKHJvb3RMYXllci0+
Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKCkgJiYgKHBhaW50RmxhZ3MgJiBQYWludExh
eWVyUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycykpKSB7CisgICAgICAgIGVsc2UgaWYgKCFiYWNr
aW5nKCktPnBhaW50c0ludG9XaW5kb3coKQorICAgICAgICAgICAgJiYgIWJhY2tpbmcoKS0+cGFp
bnRzSW50b0NvbXBvc2l0ZWRBbmNlc3RvcigpCisgICAgICAgICAgICAmJiAhc2hvdWxkRG9Tb2Z0
d2FyZVBhaW50KHRoaXMsIHBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdSZWZsZWN0aW9u
KQorICAgICAgICAgICAgJiYgIShwYWludGluZ0luZm8ucm9vdExheWVyLT5jb250YWluc0RpcnR5
T3ZlcmxheVNjcm9sbGJhcnMoKQorICAgICAgICAgICAgJiYgKHBhaW50RmxhZ3MgJiBQYWludExh
eWVyUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycykpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGlz
IFJlbmRlckxheWVyIHNob3VsZCBwYWludCBpbnRvIGl0cyBiYWNraW5nLCB0aGF0IHdpbGwgYmUg
ZG9uZSB2aWEgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcigpLgogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMDc0LDEyICszMDgwLDEyIEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LAogICAgIGlmICghcmVuZGVyZXIoKS0+b3BhY2l0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAocGFpbnRzV2l0aFRyYW5zcGFyZW5jeShwYWludEJlaGF2aW9yKSkKKyAg
ICBpZiAocGFpbnRzV2l0aFRyYW5zcGFyZW5jeShwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvcikp
CiAgICAgICAgIHBhaW50RmxhZ3MgfD0gUGFpbnRMYXllckhhdmVUcmFuc3BhcmVuY3k7CiAKICAg
ICAvLyBQYWludExheWVyQXBwbGllZFRyYW5zZm9ybSBpcyB1c2VkIGluIFJlbmRlclJlcGxpY2Es
IHRvIGF2b2lkIGFwcGx5aW5nIHRoZSB0cmFuc2Zvcm0gdHdpY2UuCi0gICAgaWYgKHBhaW50c1dp
dGhUcmFuc2Zvcm0ocGFpbnRCZWhhdmlvcikgJiYgIShwYWludEZsYWdzICYgUGFpbnRMYXllckFw
cGxpZWRUcmFuc2Zvcm0pKSB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJh
bnNmb3JtID0gcmVuZGVyYWJsZVRyYW5zZm9ybShwYWludEJlaGF2aW9yKTsKKyAgICBpZiAocGFp
bnRzV2l0aFRyYW5zZm9ybShwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvcikgJiYgIShwYWludEZs
YWdzICYgUGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm0pKSB7CisgICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtID0gcmVuZGVyYWJsZVRyYW5zZm9ybShwYWludGluZ0lu
Zm8ucGFpbnRCZWhhdmlvcik7CiAgICAgICAgIC8vIElmIHRoZSB0cmFuc2Zvcm0gY2FuJ3QgYmUg
aW52ZXJ0ZWQsIHRoZW4gZG9uJ3QgcGFpbnQgYW55dGhpbmcuCiAgICAgICAgIGlmICghbGF5ZXJU
cmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMDg4LDMx
ICszMDk0LDMxIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJv
b3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAogICAgICAgICAvLyBsYXllciBmcm9t
IHRoZSBwYXJlbnQgbm93LCBhc3N1bWluZyB0aGVyZSBpcyBhIHBhcmVudAogICAgICAgICBpZiAo
cGFpbnRGbGFncyAmIFBhaW50TGF5ZXJIYXZlVHJhbnNwYXJlbmN5KSB7CiAgICAgICAgICAgICBp
ZiAocGFyZW50KCkpCi0gICAgICAgICAgICAgICAgcGFyZW50KCktPmJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXJzKGNvbnRleHQsIHJvb3RMYXllciwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3Ip
OworICAgICAgICAgICAgICAgIHBhcmVudCgpLT5iZWdpblRyYW5zcGFyZW5jeUxheWVycyhjb250
ZXh0LCBwYWludGluZ0luZm8ucm9vdExheWVyLCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3Qs
IHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBiZWdpblRyYW5zcGFyZW5jeUxheWVycyhjb250ZXh0LCByb290TGF5ZXIsIHBhaW50
RGlydHlSZWN0LCBwYWludEJlaGF2aW9yKTsKKyAgICAgICAgICAgICAgICBiZWdpblRyYW5zcGFy
ZW5jeUxheWVycyhjb250ZXh0LCBwYWludGluZ0luZm8ucm9vdExheWVyLCBwYWludGluZ0luZm8u
cGFpbnREaXJ0eVJlY3QsIHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yKTsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFyZW50J3MgY2xpcCByZWN0cyBoYXZlIGJlZW4g
Y2FsY3VsYXRlZC4KLSAgICAgICAgQ2xpcFJlY3QgY2xpcFJlY3QgPSBwYWludERpcnR5UmVjdDsK
KyAgICAgICAgQ2xpcFJlY3QgY2xpcFJlY3QgPSBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3Q7
CiAgICAgICAgIGlmIChwYXJlbnQoKSkgewotICAgICAgICAgICAgY2xpcFJlY3QgPSBiYWNrZ3Jv
dW5kQ2xpcFJlY3Qocm9vdExheWVyLCByZWdpb24sIChwYWludEZsYWdzICYgUGFpbnRMYXllclRl
bXBvcmFyeUNsaXBSZWN0cykgPyBUZW1wb3JhcnlDbGlwUmVjdHMgOiBQYWludGluZ0NsaXBSZWN0
cywKKyAgICAgICAgICAgIGNsaXBSZWN0ID0gYmFja2dyb3VuZENsaXBSZWN0KHBhaW50aW5nSW5m
by5yb290TGF5ZXIsIHBhaW50aW5nSW5mby5yZWdpb24sIChwYWludEZsYWdzICYgUGFpbnRMYXll
clRlbXBvcmFyeUNsaXBSZWN0cykgPyBUZW1wb3JhcnlDbGlwUmVjdHMgOiBQYWludGluZ0NsaXBS
ZWN0cywKICAgICAgICAgICAgICAgICBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwgKHBhaW50
RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzKSA/IElnbm9yZU92ZXJm
bG93Q2xpcCA6IFJlc3BlY3RPdmVyZmxvd0NsaXApOwotICAgICAgICAgICAgY2xpcFJlY3QuaW50
ZXJzZWN0KHBhaW50RGlydHlSZWN0KTsKKyAgICAgICAgICAgIGNsaXBSZWN0LmludGVyc2VjdChw
YWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpOwogICAgICAgICAKICAgICAgICAgICAgIC8vIFB1
c2ggdGhlIHBhcmVudCBjb29yZGluYXRlIHNwYWNlJ3MgY2xpcC4KLSAgICAgICAgICAgIHBhcmVu
dCgpLT5jbGlwVG9SZWN0KHJvb3RMYXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIGNsaXBS
ZWN0KTsKKyAgICAgICAgICAgIHBhcmVudCgpLT5jbGlwVG9SZWN0KHBhaW50aW5nSW5mby5yb290
TGF5ZXIsIGNvbnRleHQsIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgY2xpcFJlY3QpOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gQWRqdXN0IHRoZSB0cmFuc2Zvcm0gc3VjaCB0aGF0IHRo
ZSByZW5kZXJlcidzIHVwcGVyIGxlZnQgY29ybmVyIHdpbGwgcGFpbnQgYXQgKDAsMCkgaW4gdXNl
ciBzcGFjZS4KICAgICAgICAgLy8gVGhpcyBpbnZvbHZlcyBzdWJ0cmFjdGluZyBvdXQgdGhlIHBv
c2l0aW9uIG9mIHRoZSBsYXllciBpbiBvdXIgY3VycmVudCBjb29yZGluYXRlIHNwYWNlLCBidXQg
cHJlc2VydmluZwogICAgICAgICAvLyB0aGUgYWNjdW11bGF0ZWQgZXJyb3IgZm9yIHN1Yi1waXhl
bCBsYXlvdXQuCiAgICAgICAgIExheW91dFBvaW50IGRlbHRhOwotICAgICAgICBjb252ZXJ0VG9M
YXllckNvb3Jkcyhyb290TGF5ZXIsIGRlbHRhKTsKKyAgICAgICAgY29udmVydFRvTGF5ZXJDb29y
ZHMocGFpbnRpbmdJbmZvLnJvb3RMYXllciwgZGVsdGEpOwogICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCB0cmFuc2Zvcm0obGF5ZXJUcmFuc2Zvcm0pOwogICAgICAgICBJbnRQb2ludCByb3Vu
ZGVkRGVsdGEgPSByb3VuZGVkSW50UG9pbnQoZGVsdGEpOwogICAgICAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlUmlnaHQocm91bmRlZERlbHRhLngoKSwgcm91bmRlZERlbHRhLnkoKSk7Ci0gICAgICAg
IExheW91dFNpemUgYWRqdXN0ZWRTdWJQaXhlbEFjY3VtdWxhdGlvbiA9IHN1YlBpeGVsQWNjdW11
bGF0aW9uICsgKGRlbHRhIC0gcm91bmRlZERlbHRhKTsKKyAgICAgICAgTGF5b3V0U2l6ZSBhZGp1
c3RlZFN1YlBpeGVsQWNjdW11bGF0aW9uID0gcGFpbnRpbmdJbmZvLnN1YlBpeGVsQWNjdW11bGF0
aW9uICsgKGRlbHRhIC0gcm91bmRlZERlbHRhKTsKICAgICAgICAgCiAgICAgICAgIC8vIEFwcGx5
IHRoZSB0cmFuc2Zvcm0uCiAgICAgICAgIHsKQEAgLTMxMjAsMjMgKzMxMjYsMjEgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6cGFpbnRMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0odHJhbnNmb3Jt
LnRvQWZmaW5lVHJhbnNmb3JtKCkpOwogCiAgICAgICAgICAgICAvLyBOb3cgZG8gYSBwYWludCB3
aXRoIHRoZSByb290IGxheWVyIHNoaWZ0ZWQgdG8gYmUgdXMuCi0gICAgICAgICAgICBwYWludExh
eWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKHRoaXMsIGNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3Qo
dHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KHBhaW50RGlydHlSZWN0KSksIGFkanVzdGVkU3Vi
UGl4ZWxBY2N1bXVsYXRpb24sIHBhaW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwgcmVnaW9uLCBv
dmVybGFwVGVzdFJlcXVlc3RzLCBwYWludEZsYWdzKTsKKyAgICAgICAgICAgIExheWVyUGFpbnRp
bmdJbmZvIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvKHRoaXMsIGVuY2xvc2luZ0ludFJlY3QodHJh
bnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCkpLCBw
YWludGluZ0luZm8ucGFpbnRCZWhhdmlvciwgYWRqdXN0ZWRTdWJQaXhlbEFjY3VtdWxhdGlvbiwg
cGFpbnRpbmdJbmZvLnBhaW50aW5nUm9vdCwgcGFpbnRpbmdJbmZvLnJlZ2lvbiwgcGFpbnRpbmdJ
bmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMpOworICAgICAgICAgICAgcGFpbnRMYXllckNvbnRlbnRz
QW5kUmVmbGVjdGlvbihjb250ZXh0LCB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbywgcGFpbnRGbGFn
cyk7CiAgICAgICAgIH0gICAgICAgIAogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIGNsaXAuCiAg
ICAgICAgIGlmIChwYXJlbnQoKSkKLSAgICAgICAgICAgIHBhcmVudCgpLT5yZXN0b3JlQ2xpcChj
b250ZXh0LCBwYWludERpcnR5UmVjdCwgY2xpcFJlY3QpOworICAgICAgICAgICAgcGFyZW50KCkt
PnJlc3RvcmVDbGlwKGNvbnRleHQsIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgY2xpcFJl
Y3QpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgcGFpbnRMYXllckNvbnRl
bnRzQW5kUmVmbGVjdGlvbihyb290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBzdWJQ
aXhlbEFjY3VtdWxhdGlvbiwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCByZWdpb24sIG92
ZXJsYXBUZXN0UmVxdWVzdHMsIHBhaW50RmxhZ3MpOworICAgIHBhaW50TGF5ZXJDb250ZW50c0Fu
ZFJlZmxlY3Rpb24oY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKIH0KIAotdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihSZW5kZXJMYXll
ciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgY29uc3QgTGF5b3V0U2l6
ZSYgc3ViUGl4ZWxBY2N1bXVsYXRpb24sIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290LCBSZW5kZXJS
ZWdpb24qIHJlZ2lvbiwgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3Rz
LAotICAgICAgICAgICAgICAgICAgICAgICAgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2
b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywg
UGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgQVNTRVJUKGlzU2VsZlBhaW50aW5n
TGF5ZXIoKSB8fCBoYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQoKSk7CiAKQEAgLTMxNDYs
MTggKzMxNTAsMTUgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzQW5kUmVm
bGVjdGlvbihSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGkKICAgICBpZiAobV9yZWZsZWN0
aW9uICYmICFtX3BhaW50aW5nSW5zaWRlUmVmbGVjdGlvbikgewogICAgICAgICAvLyBNYXJrIHRo
YXQgd2UgYXJlIG5vdyBpbnNpZGUgcmVwbGljYSBwYWludGluZy4KICAgICAgICAgbV9wYWludGlu
Z0luc2lkZVJlZmxlY3Rpb24gPSB0cnVlOwotICAgICAgICByZWZsZWN0aW9uTGF5ZXIoKS0+cGFp
bnRMYXllcihyb290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBzdWJQaXhlbEFjY3Vt
dWxhdGlvbiwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCByZWdpb24sIG92ZXJsYXBUZXN0
UmVxdWVzdHMsIGxvY2FsUGFpbnRGbGFncyB8IFBhaW50TGF5ZXJQYWludGluZ1JlZmxlY3Rpb24p
OworICAgICAgICByZWZsZWN0aW9uTGF5ZXIoKS0+cGFpbnRMYXllcihjb250ZXh0LCBwYWludGlu
Z0luZm8sIGxvY2FsUGFpbnRGbGFncyB8IFBhaW50TGF5ZXJQYWludGluZ1JlZmxlY3Rpb24pOwog
ICAgICAgICBtX3BhaW50aW5nSW5zaWRlUmVmbGVjdGlvbiA9IGZhbHNlOwogICAgIH0KIAogICAg
IGxvY2FsUGFpbnRGbGFncyB8PSBQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0FsbFBoYXNl
czsKLSAgICBwYWludExheWVyQ29udGVudHMocm9vdExheWVyLCBjb250ZXh0LCBwYWludERpcnR5
UmVjdCwgc3ViUGl4ZWxBY2N1bXVsYXRpb24sIHBhaW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwg
cmVnaW9uLCBvdmVybGFwVGVzdFJlcXVlc3RzLCBsb2NhbFBhaW50RmxhZ3MpOworICAgIHBhaW50
TGF5ZXJDb250ZW50cyhjb250ZXh0LCBwYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CiB9
CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhSZW5kZXJMYXllciogcm9v
dExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIAotICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgTGF5b3V0UmVjdCYgcGFyZW50UGFpbnREaXJ0eVJlY3QsIGNvbnN0IExheW91dFNp
emUmIHN1YlBpeGVsQWNjdW11bGF0aW9uLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdCwgUmVuZGVy
UmVnaW9uKiByZWdpb24sIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0
cywKLSAgICAgICAgICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQor
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZs
YWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgQVNTRVJUKGlzU2VsZlBhaW50aW5nTGF5ZXIoKSB8fCBo
YXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQoKSk7CiAKQEAgLTMxNzMsNyArMzE3NCw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhSZW5kZXJMYXllciogcm9vdExh
eWVyLCBHcmFwaGljc0NvbnRleHQqIGNvCiAgICAgTGF5b3V0UmVjdCBsYXllckJvdW5kczsKICAg
ICBDbGlwUmVjdCBkYW1hZ2VSZWN0LCBjbGlwUmVjdFRvQXBwbHksIG91dGxpbmVSZWN0OwogICAg
IExheW91dFBvaW50IHBhaW50T2Zmc2V0OwotICAgIExheW91dFJlY3QgcGFpbnREaXJ0eVJlY3Qg
PSBwYXJlbnRQYWludERpcnR5UmVjdDsKKyAgICBMYXlvdXRSZWN0IHBhaW50RGlydHlSZWN0ID0g
cGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0OwogICAgIAogICAgIGJvb2wgdXNlQ2xpcFJlY3Qg
PSB0cnVlOwogICAgIEdyYXBoaWNzQ29udGV4dCogdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0ID0g
Y29udGV4dDsKQEAgLTMxOTAsNyArMzE5MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5
ZXJDb250ZW50cyhSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvCiAg
ICAgICAgICAgICBoYXNDbGlwUGF0aCA9IHRydWU7CiAgICAgICAgICAgICBjb250ZXh0LT5zYXZl
KCk7CiAgICAgICAgICAgICBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uKiBjbGlwUGF0aCA9IHN0YXRp
Y19jYXN0PFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24qPihzdHlsZS0+Y2xpcFBhdGgoKSk7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5jbGlwUGF0aChjbGlwUGF0aC0+cGF0aChjYWxjdWxhdGVMYXllckJv
dW5kcyh0aGlzLCByb290TGF5ZXIsIDApKSwgY2xpcFBhdGgtPndpbmRSdWxlKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+Y2xpcFBhdGgoY2xpcFBhdGgtPnBhdGgoY2FsY3VsYXRlTGF5ZXJCb3Vu
ZHModGhpcywgcGFpbnRpbmdJbmZvLnJvb3RMYXllciwgMCkpLCBjbGlwUGF0aC0+d2luZFJ1bGUo
KSk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICBlbHNlIGlmIChzdHlsZS0+
Y2xpcFBhdGgoKS0+Z2V0T3BlcmF0aW9uVHlwZSgpID09IENsaXBQYXRoT3BlcmF0aW9uOjpSRUZF
UkVOQ0UpIHsKQEAgLTMxOTksNyArMzIwMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5
ZXJDb250ZW50cyhSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvCiAg
ICAgICAgICAgICAvLyBGSVhNRTogSXQgZG9lc24ndCB3b3JrIHdpdGggZm9yd2FyZCBvciBleHRl
cm5hbCBTVkcgcmVmZXJlbmNlcyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkwNDA1KQogICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGRvY3VtZW50ID8gZG9j
dW1lbnQtPmdldEVsZW1lbnRCeUlkKHJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uLT5mcmFnbWVu
dCgpKSA6IDA7CiAgICAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5oYXNUYWdOYW1l
KFNWR05hbWVzOjpjbGlwUGF0aFRhZykgJiYgZWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqPihlbGVtZW50LT5y
ZW5kZXJlcigpKS0+YXBwbHlDbGlwcGluZ1RvQ29udGV4dChyZW5kZXJlcigpLCBjYWxjdWxhdGVM
YXllckJvdW5kcyh0aGlzLCByb290TGF5ZXIsIDApLCBwYWludERpcnR5UmVjdCwgY29udGV4dCk7
CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKj4o
ZWxlbWVudC0+cmVuZGVyZXIoKSktPmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQocmVuZGVyZXIoKSwg
Y2FsY3VsYXRlTGF5ZXJCb3VuZHModGhpcywgcGFpbnRpbmdJbmZvLnJvb3RMYXllciwgMCksIHBh
aW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgY29udGV4dCk7CiAgICAgICAgIH0KICNlbmRpZgog
ICAgIH0KQEAgLTMyMDgsMTIgKzMyMDksMTIgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXll
ckNvbnRlbnRzKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY28KICAg
ICBGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlciBmaWx0ZXJQYWludGVyKGZpbHRlclJlbmRlcmVy
KCkgJiYgcGFpbnRzV2l0aEZpbHRlcnMoKSk7CiAgICAgaWYgKGZpbHRlclBhaW50ZXIuaGF2ZUZp
bHRlckVmZmVjdCgpICYmICFjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpIHsKICAgICAgICAg
TGF5b3V0UG9pbnQgcm9vdExheWVyT2Zmc2V0OwotICAgICAgICBjb252ZXJ0VG9MYXllckNvb3Jk
cyhyb290TGF5ZXIsIHJvb3RMYXllck9mZnNldCk7CisgICAgICAgIGNvbnZlcnRUb0xheWVyQ29v
cmRzKHBhaW50aW5nSW5mby5yb290TGF5ZXIsIHJvb3RMYXllck9mZnNldCk7CiAgICAgICAgIFJl
bmRlckxheWVyRmlsdGVySW5mbyogZmlsdGVySW5mbyA9IHRoaXMtPmZpbHRlckluZm8oKTsKICAg
ICAgICAgQVNTRVJUKGZpbHRlckluZm8pOwogICAgICAgICBMYXlvdXRSZWN0IGZpbHRlclJlcGFp
bnRSZWN0ID0gZmlsdGVySW5mby0+ZGlydHlTb3VyY2VSZWN0KCk7CiAgICAgICAgIGZpbHRlclJl
cGFpbnRSZWN0Lm1vdmUocm9vdExheWVyT2Zmc2V0LngoKSwgcm9vdExheWVyT2Zmc2V0LnkoKSk7
Ci0gICAgICAgIGlmIChmaWx0ZXJQYWludGVyLnByZXBhcmVGaWx0ZXJFZmZlY3QodGhpcywgY2Fs
Y3VsYXRlTGF5ZXJCb3VuZHModGhpcywgcm9vdExheWVyLCAwKSwgcGFyZW50UGFpbnREaXJ0eVJl
Y3QsIGZpbHRlclJlcGFpbnRSZWN0KSkgeworICAgICAgICBpZiAoZmlsdGVyUGFpbnRlci5wcmVw
YXJlRmlsdGVyRWZmZWN0KHRoaXMsIGNhbGN1bGF0ZUxheWVyQm91bmRzKHRoaXMsIHBhaW50aW5n
SW5mby5yb290TGF5ZXIsIDApLCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGZpbHRlclJl
cGFpbnRSZWN0KSkgewogICAgICAgICAgICAgLy8gTm93IHdlIGtub3cgZm9yIHN1cmUsIHRoYXQg
dGhlIHNvdXJjZSBpbWFnZSB3aWxsIGJlIHVwZGF0ZWQsIHNvIHdlIGNhbiByZXZlcnQgb3VyIHRy
YWNraW5nIHJlcGFpbnQgcmVjdCBiYWNrIHRvIHplcm8uCiAgICAgICAgICAgICBmaWx0ZXJJbmZv
LT5yZXNldERpcnR5U291cmNlUmVjdCgpOwogCkBAIC0zMjM2LDU1ICszMjM3LDU1IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhSZW5kZXJMYXllciogcm9vdExheWVyLCBH
cmFwaGljc0NvbnRleHQqIGNvCiAjZW5kaWYKICAgICAKICAgICBpZiAoc2hvdWxkUGFpbnRDb250
ZW50IHx8IHNob3VsZFBhaW50T3V0bGluZSB8fCBpc1BhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMp
IHsKLSAgICAgICAgY2FsY3VsYXRlUmVjdHMocm9vdExheWVyLCByZWdpb24sIChsb2NhbFBhaW50
RmxhZ3MgJiBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzKSA/IFRlbXBvcmFyeUNsaXBSZWN0
cyA6IFBhaW50aW5nQ2xpcFJlY3RzLCBwYWludERpcnR5UmVjdCwgbGF5ZXJCb3VuZHMsIGRhbWFn
ZVJlY3QsIGNsaXBSZWN0VG9BcHBseSwgb3V0bGluZVJlY3QsCisgICAgICAgIGNhbGN1bGF0ZVJl
Y3RzKHBhaW50aW5nSW5mby5yb290TGF5ZXIsIHBhaW50aW5nSW5mby5yZWdpb24sIChsb2NhbFBh
aW50RmxhZ3MgJiBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzKSA/IFRlbXBvcmFyeUNsaXBS
ZWN0cyA6IFBhaW50aW5nQ2xpcFJlY3RzLCBwYWludERpcnR5UmVjdCwgbGF5ZXJCb3VuZHMsIGRh
bWFnZVJlY3QsIGNsaXBSZWN0VG9BcHBseSwgb3V0bGluZVJlY3QsCiAgICAgICAgICAgICBJZ25v
cmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwgbG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50
aW5nT3ZlcmZsb3dDb250ZW50cyA/IElnbm9yZU92ZXJmbG93Q2xpcCA6IFJlc3BlY3RPdmVyZmxv
d0NsaXApOwotICAgICAgICBwYWludE9mZnNldCA9IHRvUG9pbnQobGF5ZXJCb3VuZHMubG9jYXRp
b24oKSAtIHJlbmRlckJveExvY2F0aW9uKCkgKyBzdWJQaXhlbEFjY3VtdWxhdGlvbik7Ci0gICAg
ICAgIGlmICh0aGlzID09IHJvb3RMYXllcikKKyAgICAgICAgcGFpbnRPZmZzZXQgPSB0b1BvaW50
KGxheWVyQm91bmRzLmxvY2F0aW9uKCkgLSByZW5kZXJCb3hMb2NhdGlvbigpICsgcGFpbnRpbmdJ
bmZvLnN1YlBpeGVsQWNjdW11bGF0aW9uKTsKKyAgICAgICAgaWYgKHRoaXMgPT0gcGFpbnRpbmdJ
bmZvLnJvb3RMYXllcikKICAgICAgICAgICAgIHBhaW50T2Zmc2V0ID0gcm91bmRlZEludFBvaW50
KHBhaW50T2Zmc2V0KTsKICAgICB9CiAKLSAgICBib29sIGZvcmNlQmxhY2tUZXh0ID0gcGFpbnRC
ZWhhdmlvciAmIFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dDsKLSAgICBib29sIHNlbGVjdGlv
bk9ubHkgID0gcGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5OworICAg
IGJvb2wgZm9yY2VCbGFja1RleHQgPSBwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50
QmVoYXZpb3JGb3JjZUJsYWNrVGV4dDsKKyAgICBib29sIHNlbGVjdGlvbk9ubHkgID0gcGFpbnRp
bmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seTsKICAgICAK
ICAgICAvLyBJZiB0aGlzIGxheWVyJ3MgcmVuZGVyZXIgaXMgYSBjaGlsZCBvZiB0aGUgcGFpbnRp
bmdSb290LCB3ZSByZW5kZXIgdW5jb25kaXRpb25hbGx5LCB3aGljaAogICAgIC8vIGlzIGRvbmUg
YnkgcGFzc2luZyBhIG5pbCBwYWludGluZ1Jvb3QgZG93biB0byBvdXIgcmVuZGVyZXIgKGFzIGlm
IG5vIHBhaW50aW5nUm9vdCB3YXMgZXZlciBzZXQpLgogICAgIC8vIEVsc2UsIG91ciByZW5kZXJl
ciB0cmVlIG1heSBvciBtYXkgbm90IGNvbnRhaW4gdGhlIHBhaW50aW5nIHJvb3QsIHNvIHdlIHBh
c3MgdGhhdCByb290IGFsb25nCiAgICAgLy8gc28gaXQgd2lsbCBiZSB0ZXN0ZWQgYWdhaW5zdCBh
cyB3ZSBkZXNjZW5kIHRocm91Z2ggdGhlIHJlbmRlcmVycy4KICAgICBSZW5kZXJPYmplY3QqIHBh
aW50aW5nUm9vdEZvclJlbmRlcmVyID0gMDsKLSAgICBpZiAocGFpbnRpbmdSb290ICYmICFyZW5k
ZXJlcigpLT5pc0Rlc2NlbmRhbnRPZihwYWludGluZ1Jvb3QpKQotICAgICAgICBwYWludGluZ1Jv
b3RGb3JSZW5kZXJlciA9IHBhaW50aW5nUm9vdDsKKyAgICBpZiAocGFpbnRpbmdJbmZvLnBhaW50
aW5nUm9vdCAmJiAhcmVuZGVyZXIoKS0+aXNEZXNjZW5kYW50T2YocGFpbnRpbmdJbmZvLnBhaW50
aW5nUm9vdCkpCisgICAgICAgIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyID0gcGFpbnRpbmdJbmZv
LnBhaW50aW5nUm9vdDsKIAotICAgIGlmIChvdmVybGFwVGVzdFJlcXVlc3RzICYmIGlzU2VsZlBh
aW50aW5nTGF5ZXIpCi0gICAgICAgIHBlcmZvcm1PdmVybGFwVGVzdHMoKm92ZXJsYXBUZXN0UmVx
dWVzdHMsIHJvb3RMYXllciwgdGhpcyk7CisgICAgaWYgKHBhaW50aW5nSW5mby5vdmVybGFwVGVz
dFJlcXVlc3RzICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIpCisgICAgICAgIHBlcmZvcm1PdmVybGFw
VGVzdHMoKnBhaW50aW5nSW5mby5vdmVybGFwVGVzdFJlcXVlc3RzLCBwYWludGluZ0luZm8ucm9v
dExheWVyLCB0aGlzKTsKIAogICAgIC8vIFdlIHdhbnQgdG8gcGFpbnQgb3VyIGxheWVyLCBidXQg
b25seSBpZiB3ZSBpbnRlcnNlY3QgdGhlIGRhbWFnZSByZWN0LgotICAgIGlmICh0aGlzICE9IHJv
b3RMYXllciB8fCAhKGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ092ZXJmbG93
Q29udGVudHMpKQotICAgICAgICBzaG91bGRQYWludENvbnRlbnQgJj0gaW50ZXJzZWN0c0RhbWFn
ZVJlY3QobGF5ZXJCb3VuZHMsIGRhbWFnZVJlY3QucmVjdCgpLCByb290TGF5ZXIpOworICAgIGlm
ICh0aGlzICE9IHBhaW50aW5nSW5mby5yb290TGF5ZXIgfHwgIShsb2NhbFBhaW50RmxhZ3MgJiBQ
YWludExheWVyUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzKSkKKyAgICAgICAgc2hvdWxkUGFpbnRD
b250ZW50ICY9IGludGVyc2VjdHNEYW1hZ2VSZWN0KGxheWVyQm91bmRzLCBkYW1hZ2VSZWN0LnJl
Y3QoKSwgcGFpbnRpbmdJbmZvLnJvb3RMYXllcik7CiAgICAgCiAgICAgaWYgKGxvY2FsUGFpbnRG
bGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQmFja2dyb3VuZFBoYXNlKSB7CiAg
ICAgICAgIGlmIChzaG91bGRQYWludENvbnRlbnQgJiYgIXNlbGVjdGlvbk9ubHkpIHsKICAgICAg
ICAgICAgIC8vIEJlZ2luIHRyYW5zcGFyZW5jeSBsYXllcnMgbGF6aWx5IG5vdyB0aGF0IHdlIGtu
b3cgd2UgaGF2ZSB0byBwYWludCBzb21ldGhpbmcuCiAgICAgICAgICAgICBpZiAoaGF2ZVRyYW5z
cGFyZW5jeSkKLSAgICAgICAgICAgICAgICBiZWdpblRyYW5zcGFyZW5jeUxheWVycyh0cmFuc3Bh
cmVuY3lMYXllckNvbnRleHQsIHJvb3RMYXllciwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZp
b3IpOworICAgICAgICAgICAgICAgIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKHRyYW5zcGFyZW5j
eUxheWVyQ29udGV4dCwgcGFpbnRpbmdJbmZvLnJvb3RMYXllciwgcGFpbnRpbmdJbmZvLnBhaW50
RGlydHlSZWN0LCBwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvcik7CiAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKHVzZUNsaXBSZWN0KSB7CiAgICAgICAgICAgICAgICAgLy8gUGFpbnQgb3VyIGJh
Y2tncm91bmQgZmlyc3QsIGJlZm9yZSBwYWludGluZyBhbnkgY2hpbGQgbGF5ZXJzLgogICAgICAg
ICAgICAgICAgIC8vIEVzdGFibGlzaCB0aGUgY2xpcCB1c2VkIHRvIHBhaW50IG91ciBiYWNrZ3Jv
dW5kLgotICAgICAgICAgICAgICAgIGNsaXBUb1JlY3Qocm9vdExheWVyLCBjb250ZXh0LCBwYWlu
dERpcnR5UmVjdCwgZGFtYWdlUmVjdCwgRG9Ob3RJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7
IC8vIEJhY2tncm91bmQgcGFpbnRpbmcgd2lsbCBoYW5kbGUgY2xpcHBpbmcgdG8gc2VsZi4KKyAg
ICAgICAgICAgICAgICBjbGlwVG9SZWN0KHBhaW50aW5nSW5mby5yb290TGF5ZXIsIGNvbnRleHQs
IHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgZGFtYWdlUmVjdCwgRG9Ob3RJbmNsdWRlU2Vs
ZkZvckJvcmRlclJhZGl1cyk7IC8vIEJhY2tncm91bmQgcGFpbnRpbmcgd2lsbCBoYW5kbGUgY2xp
cHBpbmcgdG8gc2VsZi4KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAg
Ly8gUGFpbnQgdGhlIGJhY2tncm91bmQuCi0gICAgICAgICAgICBQYWludEluZm8gcGFpbnRJbmZv
KGNvbnRleHQsIHBpeGVsU25hcHBlZEludFJlY3QoZGFtYWdlUmVjdC5yZWN0KCkpLCBQYWludFBo
YXNlQmxvY2tCYWNrZ3JvdW5kLCBmYWxzZSwgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIsIHJlZ2lv
biwgMCk7CisgICAgICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIHBpeGVsU25h
cHBlZEludFJlY3QoZGFtYWdlUmVjdC5yZWN0KCkpLCBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5k
LCBmYWxzZSwgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIsIHBhaW50aW5nSW5mby5yZWdpb24sIDAp
OwogICAgICAgICAgICAgcmVuZGVyZXIoKS0+cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7
CiAKICAgICAgICAgICAgIGlmICh1c2VDbGlwUmVjdCkgewogICAgICAgICAgICAgICAgIC8vIFJl
c3RvcmUgdGhlIGNsaXAuCi0gICAgICAgICAgICAgICAgcmVzdG9yZUNsaXAoY29udGV4dCwgcGFp
bnREaXJ0eVJlY3QsIGRhbWFnZVJlY3QpOworICAgICAgICAgICAgICAgIHJlc3RvcmVDbGlwKGNv
bnRleHQsIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgZGFtYWdlUmVjdCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxpc3Qg
b2YgY2hpbGRyZW4gd2l0aCBuZWdhdGl2ZSB6LWluZGljZXMuCi0gICAgICAgIHBhaW50TGlzdChu
ZWdaT3JkZXJMaXN0KCksIHJvb3RMYXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50
QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwgcmVnaW9uLCBvdmVybGFwVGVzdFJlcXVlc3RzLCBsb2Nh
bFBhaW50RmxhZ3MpOworICAgICAgICBwYWludExpc3QobmVnWk9yZGVyTGlzdCgpLCBjb250ZXh0
LCBwYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CiAgICAgfQogICAgIAogICAgIGlmIChs
b2NhbFBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0ZvcmVncm91bmRQ
aGFzZSkgewpAQCAtMzI5MiwyMiArMzI5MywyMiBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExh
eWVyQ29udGVudHMoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBjbwog
ICAgICAgICBpZiAoc2hvdWxkUGFpbnRDb250ZW50ICYmICFjbGlwUmVjdFRvQXBwbHkuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAvLyBCZWdpbiB0cmFuc3BhcmVuY3kgbGF5ZXJzIGxhemlseSBu
b3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgdG8gcGFpbnQgc29tZXRoaW5nLgogICAgICAgICAgICAg
aWYgKGhhdmVUcmFuc3BhcmVuY3kpCi0gICAgICAgICAgICAgICAgYmVnaW5UcmFuc3BhcmVuY3lM
YXllcnModHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCByb290TGF5ZXIsIHBhaW50RGlydHlSZWN0
LCBwYWludEJlaGF2aW9yKTsKKyAgICAgICAgICAgICAgICBiZWdpblRyYW5zcGFyZW5jeUxheWVy
cyh0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsIHBhaW50aW5nSW5mby5yb290TGF5ZXIsIHBhaW50
aW5nSW5mby5wYWludERpcnR5UmVjdCwgcGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IpOwogCiAg
ICAgICAgICAgICBpZiAodXNlQ2xpcFJlY3QpIHsKICAgICAgICAgICAgICAgICAvLyBTZXQgdXAg
dGhlIGNsaXAgdXNlZCB3aGVuIHBhaW50aW5nIG91ciBjaGlsZHJlbi4KLSAgICAgICAgICAgICAg
ICBjbGlwVG9SZWN0KHJvb3RMYXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIGNsaXBSZWN0
VG9BcHBseSk7CisgICAgICAgICAgICAgICAgY2xpcFRvUmVjdChwYWludGluZ0luZm8ucm9vdExh
eWVyLCBjb250ZXh0LCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGNsaXBSZWN0VG9BcHBs
eSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFBhaW50SW5mbyBw
YWludEluZm8oY29udGV4dCwgcGl4ZWxTbmFwcGVkSW50UmVjdChjbGlwUmVjdFRvQXBwbHkucmVj
dCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uT25seSA/IFBh
aW50UGhhc2VTZWxlY3Rpb24gOiBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmRzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZUJsYWNrVGV4dCwgcGFpbnRpbmdSb290
Rm9yUmVuZGVyZXIsIHJlZ2lvbiwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvcmNlQmxhY2tUZXh0LCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgcGFpbnRpbmdJbmZvLnJl
Z2lvbiwgMCk7CiAgICAgICAgICAgICByZW5kZXJlcigpLT5wYWludChwYWludEluZm8sIHBhaW50
T2Zmc2V0KTsKICAgICAgICAgICAgIGlmICghc2VsZWN0aW9uT25seSkgewogICAgICAgICAgICAg
ICAgIHBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VGbG9hdDsKICAgICAgICAgICAgICAgICBy
ZW5kZXJlcigpLT5wYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgICAgICAg
ICBwYWludEluZm8ucGhhc2UgPSBQYWludFBoYXNlRm9yZWdyb3VuZDsKLSAgICAgICAgICAgICAg
ICBwYWludEluZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cyA9IG92ZXJsYXBUZXN0UmVxdWVzdHM7Cisg
ICAgICAgICAgICAgICAgcGFpbnRJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMgPSBwYWludGluZ0lu
Zm8ub3ZlcmxhcFRlc3RSZXF1ZXN0czsKICAgICAgICAgICAgICAgICByZW5kZXJlcigpLT5wYWlu
dChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgICAgICAgICBwYWludEluZm8ucGhh
c2UgPSBQYWludFBoYXNlQ2hpbGRPdXRsaW5lczsKICAgICAgICAgICAgICAgICByZW5kZXJlcigp
LT5wYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKQEAgLTMzMTUsMzcgKzMzMTYsMzcgQEAg
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKFJlbmRlckxheWVyKiByb290TGF5
ZXIsIEdyYXBoaWNzQ29udGV4dCogY28KIAogICAgICAgICAgICAgaWYgKHVzZUNsaXBSZWN0KSB7
CiAgICAgICAgICAgICAgICAgLy8gTm93IHJlc3RvcmUgb3VyIGNsaXAuCi0gICAgICAgICAgICAg
ICAgcmVzdG9yZUNsaXAoY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIGNsaXBSZWN0VG9BcHBseSk7
CisgICAgICAgICAgICAgICAgcmVzdG9yZUNsaXAoY29udGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50
RGlydHlSZWN0LCBjbGlwUmVjdFRvQXBwbHkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKHNob3VsZFBhaW50T3V0bGluZSAmJiAhb3V0bGluZVJlY3QuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAvLyBQYWludCBvdXIgb3duIG91dGxpbmUKLSAgICAgICAgICAgIFBh
aW50SW5mbyBwYWludEluZm8oY29udGV4dCwgcGl4ZWxTbmFwcGVkSW50UmVjdChvdXRsaW5lUmVj
dC5yZWN0KCkpLCBQYWludFBoYXNlU2VsZk91dGxpbmUsIGZhbHNlLCBwYWludGluZ1Jvb3RGb3JS
ZW5kZXJlciwgcmVnaW9uLCAwKTsKLSAgICAgICAgICAgIGNsaXBUb1JlY3Qocm9vdExheWVyLCBj
b250ZXh0LCBwYWludERpcnR5UmVjdCwgb3V0bGluZVJlY3QsIERvTm90SW5jbHVkZVNlbGZGb3JC
b3JkZXJSYWRpdXMpOworICAgICAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBw
aXhlbFNuYXBwZWRJbnRSZWN0KG91dGxpbmVSZWN0LnJlY3QoKSksIFBhaW50UGhhc2VTZWxmT3V0
bGluZSwgZmFsc2UsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCBwYWludGluZ0luZm8ucmVnaW9u
LCAwKTsKKyAgICAgICAgICAgIGNsaXBUb1JlY3QocGFpbnRpbmdJbmZvLnJvb3RMYXllciwgY29u
dGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBvdXRsaW5lUmVjdCwgRG9Ob3RJbmNs
dWRlU2VsZkZvckJvcmRlclJhZGl1cyk7CiAgICAgICAgICAgICByZW5kZXJlcigpLT5wYWludChw
YWludEluZm8sIHBhaW50T2Zmc2V0KTsKLSAgICAgICAgICAgIHJlc3RvcmVDbGlwKGNvbnRleHQs
IHBhaW50RGlydHlSZWN0LCBvdXRsaW5lUmVjdCk7CisgICAgICAgICAgICByZXN0b3JlQ2xpcChj
b250ZXh0LCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIG91dGxpbmVSZWN0KTsKICAgICAg
ICAgfQogICAgIAogICAgICAgICAvLyBQYWludCBhbnkgY2hpbGQgbGF5ZXJzIHRoYXQgaGF2ZSBv
dmVyZmxvdy4KLSAgICAgICAgcGFpbnRMaXN0KG1fbm9ybWFsRmxvd0xpc3QsIHJvb3RMYXllciwg
Y29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwgcmVn
aW9uLCBvdmVybGFwVGVzdFJlcXVlc3RzLCBsb2NhbFBhaW50RmxhZ3MpOworICAgICAgICBwYWlu
dExpc3QobV9ub3JtYWxGbG93TGlzdCwgY29udGV4dCwgcGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50
RmxhZ3MpOwogICAgIAogICAgICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hp
bGRyZW4gd2l0aCBwb3NpdGl2ZSB6LWluZGljZXMuCi0gICAgICAgIHBhaW50TGlzdChwb3NaT3Jk
ZXJMaXN0KCksIHJvb3RMYXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZp
b3IsIHBhaW50aW5nUm9vdCwgcmVnaW9uLCBvdmVybGFwVGVzdFJlcXVlc3RzLCBsb2NhbFBhaW50
RmxhZ3MpOworICAgICAgICBwYWludExpc3QocG9zWk9yZGVyTGlzdCgpLCBjb250ZXh0LCBwYWlu
dGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CiAgICAgfQogCiAgICAgaWYgKGlzUGFpbnRpbmdP
dmVybGF5U2Nyb2xsYmFycykgewotICAgICAgICBjbGlwVG9SZWN0KHJvb3RMYXllciwgY29udGV4
dCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFnZVJlY3QpOworICAgICAgICBjbGlwVG9SZWN0KHBhaW50
aW5nSW5mby5yb290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBkYW1hZ2VSZWN0KTsK
ICAgICAgICAgcGFpbnRPdmVyZmxvd0NvbnRyb2xzKGNvbnRleHQsIHJvdW5kZWRJbnRQb2ludChw
YWludE9mZnNldCksIHBpeGVsU25hcHBlZEludFJlY3QoZGFtYWdlUmVjdC5yZWN0KCkpLCB0cnVl
KTsKLSAgICAgICAgcmVzdG9yZUNsaXAoY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFnZVJl
Y3QpOworICAgICAgICByZXN0b3JlQ2xpcChjb250ZXh0LCBwYWludGluZ0luZm8ucGFpbnREaXJ0
eVJlY3QsIGRhbWFnZVJlY3QpOwogICAgIH0KIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAg
ICBpZiAoZmlsdGVyUGFpbnRlci5oYXNTdGFydGVkRmlsdGVyRWZmZWN0KCkpIHsKICAgICAgICAg
Ly8gQXBwbHkgdGhlIGNvcnJlY3QgY2xpcHBpbmcgKGllLiBvdmVyZmxvdzogaGlkZGVuKS4KLSAg
ICAgICAgY2xpcFRvUmVjdChyb290TGF5ZXIsIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgcGFp
bnREaXJ0eVJlY3QsIGRhbWFnZVJlY3QpOworICAgICAgICBjbGlwVG9SZWN0KHBhaW50aW5nSW5m
by5yb290TGF5ZXIsIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50
RGlydHlSZWN0LCBkYW1hZ2VSZWN0KTsKICAgICAgICAgY29udGV4dCA9IGZpbHRlclBhaW50ZXIu
YXBwbHlGaWx0ZXJFZmZlY3QoKTsKLSAgICAgICAgcmVzdG9yZUNsaXAodHJhbnNwYXJlbmN5TGF5
ZXJDb250ZXh0LCBwYWludERpcnR5UmVjdCwgZGFtYWdlUmVjdCk7CisgICAgICAgIHJlc3RvcmVD
bGlwKHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0
LCBkYW1hZ2VSZWN0KTsKICAgICB9CiAjZW5kaWYKIApAQCAtMzM1NCwxNSArMzM1NSwxNSBAQCB2
b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoUmVuZGVyTGF5ZXIqIHJvb3RMYXll
ciwgR3JhcGhpY3NDb250ZXh0KiBjbwogCiAgICAgaWYgKChsb2NhbFBhaW50RmxhZ3MgJiBQYWlu
dExheWVyUGFpbnRpbmdDb21wb3NpdGluZ01hc2tQaGFzZSkgJiYgc2hvdWxkUGFpbnRDb250ZW50
ICYmIHJlbmRlcmVyKCktPmhhc01hc2soKSAmJiAhc2VsZWN0aW9uT25seSkgewogICAgICAgICBp
ZiAodXNlQ2xpcFJlY3QpCi0gICAgICAgICAgICBjbGlwVG9SZWN0KHJvb3RMYXllciwgY29udGV4
dCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFnZVJlY3QsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJS
YWRpdXMpOyAvLyBNYXNrIHBhaW50aW5nIHdpbGwgaGFuZGxlIGNsaXBwaW5nIHRvIHNlbGYuCisg
ICAgICAgICAgICBjbGlwVG9SZWN0KHBhaW50aW5nSW5mby5yb290TGF5ZXIsIGNvbnRleHQsIHBh
aW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgZGFtYWdlUmVjdCwgRG9Ob3RJbmNsdWRlU2VsZkZv
ckJvcmRlclJhZGl1cyk7IC8vIE1hc2sgcGFpbnRpbmcgd2lsbCBoYW5kbGUgY2xpcHBpbmcgdG8g
c2VsZi4KICAgICAgICAgCiAgICAgICAgIC8vIFBhaW50IHRoZSBtYXNrLgotICAgICAgICBQYWlu
dEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIHBpeGVsU25hcHBlZEludFJlY3QoZGFtYWdlUmVjdC5y
ZWN0KCkpLCBQYWludFBoYXNlTWFzaywgZmFsc2UsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCBy
ZWdpb24sIDApOworICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIHBpeGVsU25h
cHBlZEludFJlY3QoZGFtYWdlUmVjdC5yZWN0KCkpLCBQYWludFBoYXNlTWFzaywgZmFsc2UsIHBh
aW50aW5nUm9vdEZvclJlbmRlcmVyLCBwYWludGluZ0luZm8ucmVnaW9uLCAwKTsKICAgICAgICAg
cmVuZGVyZXIoKS0+cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAgIAogICAg
ICAgICBpZiAodXNlQ2xpcFJlY3QpIHsKICAgICAgICAgICAgIC8vIFJlc3RvcmUgdGhlIGNsaXAu
Ci0gICAgICAgICAgICByZXN0b3JlQ2xpcChjb250ZXh0LCBwYWludERpcnR5UmVjdCwgZGFtYWdl
UmVjdCk7CisgICAgICAgICAgICByZXN0b3JlQ2xpcChjb250ZXh0LCBwYWludGluZ0luZm8ucGFp
bnREaXJ0eVJlY3QsIGRhbWFnZVJlY3QpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMzc3LDEw
ICszMzc4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKFJlbmRlckxh
eWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY28KICAgICAgICAgY29udGV4dC0+cmVz
dG9yZSgpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExpc3QoVmVjdG9yPFJlbmRlckxh
eWVyKj4qIGxpc3QsIFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBwYWlu
dERpcnR5UmVjdCwgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290LCBSZW5kZXJSZWdpb24qIHJl
Z2lvbiwgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3RzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBS
ZW5kZXJMYXllcjo6cGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiBsaXN0LCBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8s
IFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQogewogICAgIGlmICghbGlzdCkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzM5NSwxNiArMzM5MywxMyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExp
c3QoVmVjdG9yPFJlbmRlckxheWVyKj4qIGxpc3QsIFJlbmRlckxheWVyKiByb290TGF5ZXIsCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgewogICAgICAgICBS
ZW5kZXJMYXllciogY2hpbGRMYXllciA9IGxpc3QtPmF0KGkpOwogICAgICAgICBpZiAoIWNoaWxk
TGF5ZXItPmlzUGFnaW5hdGVkKCkpCi0gICAgICAgICAgICBjaGlsZExheWVyLT5wYWludExheWVy
KHJvb3RMYXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIExheW91dFNpemUoKSwgcGFpbnRC
ZWhhdmlvciwgcGFpbnRpbmdSb290LCByZWdpb24sIG92ZXJsYXBUZXN0UmVxdWVzdHMsIHBhaW50
RmxhZ3MpOworICAgICAgICAgICAgY2hpbGRMYXllci0+cGFpbnRMYXllcihjb250ZXh0LCBwYWlu
dGluZ0luZm8sIHBhaW50RmxhZ3MpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYWludFBh
Z2luYXRlZENoaWxkTGF5ZXIoY2hpbGRMYXllciwgcm9vdExheWVyLCBjb250ZXh0LCBwYWludERp
cnR5UmVjdCwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCByZWdpb24sIG92ZXJsYXBUZXN0
UmVxdWVzdHMsIHBhaW50RmxhZ3MpOworICAgICAgICAgICAgcGFpbnRQYWdpbmF0ZWRDaGlsZExh
eWVyKGNoaWxkTGF5ZXIsIGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiAgICAg
fQogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludFBhZ2luYXRlZENoaWxkTGF5ZXIoUmVuZGVy
TGF5ZXIqIGNoaWxkTGF5ZXIsIFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2
aW9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlck9i
amVjdCogcGFpbnRpbmdSb290LCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgT3ZlcmxhcFRlc3RSZXF1
ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRQYWdpbmF0ZWRDaGlsZExheWVyKFJlbmRlckxheWVyKiBjaGlsZExheWVyLCBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGlu
Z0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQogewogICAgIC8vIFdlIG5lZWQgdG8g
ZG8gbXVsdGlwbGUgcGFzc2VzLCBicmVha2luZyB1cCBvdXIgY2hpbGQgbGF5ZXIgaW50byBzdHJp
cHMuCiAgICAgVmVjdG9yPFJlbmRlckxheWVyKj4gY29sdW1uTGF5ZXJzOwpAQCAtMzQyMiwxMyAr
MzQxNywxMSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFBhZ2luYXRlZENoaWxkTGF5ZXIoUmVu
ZGVyTGF5ZXIqIGNoaWxkTGF5ZXIsIFJlbmRlckxheWVyKgogICAgIGlmICghY29sdW1uTGF5ZXJz
LnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFpbnRDaGlsZExheWVySW50b0NvbHVt
bnMoY2hpbGRMYXllciwgcm9vdExheWVyLCBjb250ZXh0LCBwYWludERpcnR5UmVjdCwgcGFpbnRC
ZWhhdmlvciwgcGFpbnRpbmdSb290LCByZWdpb24sIG92ZXJsYXBUZXN0UmVxdWVzdHMsIHBhaW50
RmxhZ3MsIGNvbHVtbkxheWVycywgY29sdW1uTGF5ZXJzLnNpemUoKSAtIDEpOworICAgIHBhaW50
Q2hpbGRMYXllckludG9Db2x1bW5zKGNoaWxkTGF5ZXIsIGNvbnRleHQsIHBhaW50aW5nSW5mbywg
cGFpbnRGbGFncywgY29sdW1uTGF5ZXJzLCBjb2x1bW5MYXllcnMuc2l6ZSgpIC0gMSk7CiB9CiAK
LXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Q2hpbGRMYXllckludG9Db2x1bW5zKFJlbmRlckxheWVy
KiBjaGlsZExheWVyLCBSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9y
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBwYWludGluZ1Jvb3QsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBPdmVybGFwVGVzdFJlcXVl
c3RNYXAqIG92ZXJsYXBUZXN0UmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29uc3QgVmVjdG9y
PFJlbmRlckxheWVyKj4mIGNvbHVtbkxheWVycywgc2l6ZV90IGNvbEluZGV4KQordm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRDaGlsZExheWVySW50b0NvbHVtbnMoUmVuZGVyTGF5ZXIqIGNoaWxkTGF5
ZXIsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBh
aW50aW5nSW5mbywKKyAgICBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29uc3QgVmVjdG9y
PFJlbmRlckxheWVyKj4mIGNvbHVtbkxheWVycywgc2l6ZV90IGNvbEluZGV4KQogewogICAgIFJl
bmRlckJsb2NrKiBjb2x1bW5CbG9jayA9IHRvUmVuZGVyQmxvY2soY29sdW1uTGF5ZXJzW2NvbElu
ZGV4XS0+cmVuZGVyZXIoKSk7CiAKQEAgLTM0MzksNyArMzQzMiw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50Q2hpbGRMYXllckludG9Db2x1bW5zKFJlbmRlckxheWVyKiBjaGlsZExheWVyLCBS
ZW5kZXJMYXllCiAgICAgTGF5b3V0UG9pbnQgbGF5ZXJPZmZzZXQ7CiAgICAgLy8gRklYTUU6IEl0
IGxvb2tzIHN1c3BpY2lvdXMgdG8gY2FsbCBjb252ZXJ0VG9MYXllckNvb3JkcyBoZXJlCiAgICAg
Ly8gYXMgY2FuVXNlQ29udmVydFRvTGF5ZXJDb29yZHMgaXMgdHJ1ZSBmb3IgdGhpcyBsYXllci4K
LSAgICBjb2x1bW5CbG9jay0+bGF5ZXIoKS0+Y29udmVydFRvTGF5ZXJDb29yZHMocm9vdExheWVy
LCBsYXllck9mZnNldCk7CisgICAgY29sdW1uQmxvY2stPmxheWVyKCktPmNvbnZlcnRUb0xheWVy
Q29vcmRzKHBhaW50aW5nSW5mby5yb290TGF5ZXIsIGxheWVyT2Zmc2V0KTsKICAgICAKICAgICBi
b29sIGlzSG9yaXpvbnRhbCA9IGNvbHVtbkJsb2NrLT5zdHlsZSgpLT5pc0hvcml6b250YWxXcml0
aW5nTW9kZSgpOwogCkBAIC0zNDY2LDcgKzM0NTksNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWlu
dENoaWxkTGF5ZXJJbnRvQ29sdW1ucyhSZW5kZXJMYXllciogY2hpbGRMYXllciwgUmVuZGVyTGF5
ZQogCiAgICAgICAgIGNvbFJlY3QubW92ZUJ5KGxheWVyT2Zmc2V0KTsKIAotICAgICAgICBMYXlv
dXRSZWN0IGxvY2FsRGlydHlSZWN0KHBhaW50RGlydHlSZWN0KTsKKyAgICAgICAgTGF5b3V0UmVj
dCBsb2NhbERpcnR5UmVjdChwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpOwogICAgICAgICBs
b2NhbERpcnR5UmVjdC5pbnRlcnNlY3QoY29sUmVjdCk7CiAgICAgICAgIAogICAgICAgICBpZiAo
IWxvY2FsRGlydHlSZWN0LmlzRW1wdHkoKSkgewpAQCAtMzQ4Niw3ICszNDc5LDExIEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50Q2hpbGRMYXllckludG9Db2x1bW5zKFJlbmRlckxheWVyKiBjaGls
ZExheWVyLCBSZW5kZXJMYXllCiAgICAgICAgICAgICAgICAgbmV3VHJhbnNmb3JtLnRyYW5zbGF0
ZVJpZ2h0KHJvdW5kVG9JbnQob2Zmc2V0LndpZHRoKCkpLCByb3VuZFRvSW50KG9mZnNldC5oZWln
aHQoKSkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXItPm1f
dHJhbnNmb3JtID0gYWRvcHRQdHIobmV3IFRyYW5zZm9ybWF0aW9uTWF0cml4KG5ld1RyYW5zZm9y
bSkpOwotICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXItPnBhaW50TGF5ZXIocm9vdExheWVyLCBj
b250ZXh0LCBsb2NhbERpcnR5UmVjdCwgTGF5b3V0U2l6ZSgpLCBwYWludEJlaGF2aW9yLCBwYWlu
dGluZ1Jvb3QsIHJlZ2lvbiwgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgcGFpbnRGbGFncyk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgTGF5ZXJQYWludGluZ0luZm8gbG9jYWxQYWlu
dGluZ0luZm8ocGFpbnRpbmdJbmZvKTsKKyAgICAgICAgICAgICAgICBsb2NhbFBhaW50aW5nSW5m
by5wYWludERpcnR5UmVjdCA9IGxvY2FsRGlydHlSZWN0OworICAgICAgICAgICAgICAgIGNoaWxk
TGF5ZXItPnBhaW50TGF5ZXIoY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50RmxhZ3Mp
OworCiAgICAgICAgICAgICAgICAgaWYgKG9sZEhhc1RyYW5zZm9ybSkKICAgICAgICAgICAgICAg
ICAgICAgY2hpbGRMYXllci0+bV90cmFuc2Zvcm0gPSBhZG9wdFB0cihuZXcgVHJhbnNmb3JtYXRp
b25NYXRyaXgob2xkVHJhbnNmb3JtKSk7CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAtMzQ5NSw3
ICszNDkyLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZExheWVySW50b0NvbHVtbnMo
UmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIsIFJlbmRlckxheWUKICAgICAgICAgICAgICAgICAvLyBB
ZGp1c3QgdGhlIHRyYW5zZm9ybSBzdWNoIHRoYXQgdGhlIHJlbmRlcmVyJ3MgdXBwZXIgbGVmdCBj
b3JuZXIgd2lsbCBwYWludCBhdCAoMCwwKSBpbiB1c2VyIHNwYWNlLgogICAgICAgICAgICAgICAg
IC8vIFRoaXMgaW52b2x2ZXMgc3VidHJhY3Rpbmcgb3V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgbGF5
ZXIgaW4gb3VyIGN1cnJlbnQgY29vcmRpbmF0ZSBzcGFjZS4KICAgICAgICAgICAgICAgICBMYXlv
dXRQb2ludCBjaGlsZE9mZnNldDsKLSAgICAgICAgICAgICAgICBjb2x1bW5MYXllcnNbY29sSW5k
ZXggLSAxXS0+Y29udmVydFRvTGF5ZXJDb29yZHMocm9vdExheWVyLCBjaGlsZE9mZnNldCk7Cisg
ICAgICAgICAgICAgICAgY29sdW1uTGF5ZXJzW2NvbEluZGV4IC0gMV0tPmNvbnZlcnRUb0xheWVy
Q29vcmRzKHBhaW50aW5nSW5mby5yb290TGF5ZXIsIGNoaWxkT2Zmc2V0KTsKICAgICAgICAgICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CiAgICAgICAgICAgICAgICAgdHJh
bnNmb3JtLnRyYW5zbGF0ZVJpZ2h0KHJvdW5kVG9JbnQoY2hpbGRPZmZzZXQueCgpICsgb2Zmc2V0
LndpZHRoKCkpLCByb3VuZFRvSW50KGNoaWxkT2Zmc2V0LnkoKSArIG9mZnNldC5oZWlnaHQoKSkp
OwogICAgICAgICAgICAgICAgIApAQCAtMzUwMyw5ICszNTAwLDEwIEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50Q2hpbGRMYXllckludG9Db2x1bW5zKFJlbmRlckxheWVyKiBjaGlsZExheWVyLCBS
ZW5kZXJMYXllCiAgICAgICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKHRyYW5zZm9ybS50
b0FmZmluZVRyYW5zZm9ybSgpKTsKIAogICAgICAgICAgICAgICAgIC8vIE5vdyBkbyBhIHBhaW50
IHdpdGggdGhlIHJvb3QgbGF5ZXIgc2hpZnRlZCB0byBiZSB0aGUgbmV4dCBtdWx0aWNvbCBibG9j
ay4KLSAgICAgICAgICAgICAgICBwYWludENoaWxkTGF5ZXJJbnRvQ29sdW1ucyhjaGlsZExheWVy
LCBjb2x1bW5MYXllcnNbY29sSW5kZXggLSAxXSwgY29udGV4dCwgdHJhbnNmb3JtLmludmVyc2Uo
KS5tYXBSZWN0KGxvY2FsRGlydHlSZWN0KSwgcGFpbnRCZWhhdmlvciwgCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFpbnRpbmdSb290LCByZWdpb24sIG92ZXJs
YXBUZXN0UmVxdWVzdHMsIHBhaW50RmxhZ3MsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbHVtbkxheWVycywgY29sSW5kZXggLSAxKTsKKyAgICAgICAgICAg
ICAgICBMYXllclBhaW50aW5nSW5mbyBjb2x1bW5QYWludGluZ0luZm8ocGFpbnRpbmdJbmZvKTsK
KyAgICAgICAgICAgICAgICBjb2x1bW5QYWludGluZ0luZm8ucm9vdExheWVyID0gY29sdW1uTGF5
ZXJzW2NvbEluZGV4IC0gMV07CisgICAgICAgICAgICAgICAgY29sdW1uUGFpbnRpbmdJbmZvLnBh
aW50RGlydHlSZWN0ID0gdHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KGxvY2FsRGlydHlSZWN0
KTsKKyAgICAgICAgICAgICAgICBwYWludENoaWxkTGF5ZXJJbnRvQ29sdW1ucyhjaGlsZExheWVy
LCBjb250ZXh0LCBjb2x1bW5QYWludGluZ0luZm8sIHBhaW50RmxhZ3MsIGNvbHVtbkxheWVycywg
Y29sSW5kZXggLSAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDdmZTQ0OGFmYzMyYjY2N2M1Mzc1MDM2OGFhYjdk
MGQ5MGJhNDU1ODAuLjhkZmZlMDQ5YTUzNGE3ODBjNWU5ODk4MGQ5Y2I3NDI2OWVkYjE4MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC03MzcsMjcgKzczNywzMSBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0FuZExheWVyTGlzdHNJZk5l
ZWRlZCgpOwogCi0gICAgdm9pZCBwYWludExheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlSZWN0LCBjb25zdCBM
YXlvdXRTaXplJiBzdWJQaXhlbEFjY3VtdWxhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgUGFp
bnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3QsIFJlbmRlclJlZ2lvbiogPSAw
LCBPdmVybGFwVGVzdFJlcXVlc3RNYXAqID0gMCwKLSAgICAgICAgICAgICAgICAgICAgUGFpbnRM
YXllckZsYWdzID0gMCk7Ci0gICAgdm9pZCBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9u
KFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJl
Y3QmIHBhaW50RGlydHlSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJQaXhlbEFjY3VtdWxhdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgUGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBwYWlu
dGluZ1Jvb3QsIFJlbmRlclJlZ2lvbiogPSAwLCBPdmVybGFwVGVzdFJlcXVlc3RNYXAqID0gMCwK
LSAgICAgICAgICAgICAgICAgICAgUGFpbnRMYXllckZsYWdzID0gMCk7Ci0gICAgdm9pZCBwYWlu
dExheWVyQ29udGVudHMoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1YlBp
eGVsQWNjdW11bGF0aW9uLAotICAgICAgICAgICAgICAgICAgICBQYWludEJlaGF2aW9yLCBSZW5k
ZXJPYmplY3QqIHBhaW50aW5nUm9vdCwgUmVuZGVyUmVnaW9uKiA9IDAsIE92ZXJsYXBUZXN0UmVx
dWVzdE1hcCogPSAwLAotICAgICAgICAgICAgICAgICAgICBQYWludExheWVyRmxhZ3MgPSAwKTsK
LSAgICB2b2lkIHBhaW50TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiosIFJlbmRlckxheWVyKiBy
b290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogcCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBM
YXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgUGFpbnRCZWhhdmlvciwKLSAgICAgICAgICAgICAg
ICAgICBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdCwgUmVuZGVyUmVnaW9uKiwgT3ZlcmxhcFRl
c3RSZXF1ZXN0TWFwKiwKLSAgICAgICAgICAgICAgICAgICBQYWludExheWVyRmxhZ3MpOwotICAg
IHZvaWQgcGFpbnRQYWdpbmF0ZWRDaGlsZExheWVyKFJlbmRlckxheWVyKiBjaGlsZExheWVyLCBS
ZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlSZWN0LCBQYWlu
dEJlaGF2aW9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlck9iamVj
dCogcGFpbnRpbmdSb290LCBSZW5kZXJSZWdpb24qLCBPdmVybGFwVGVzdFJlcXVlc3RNYXAqLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFncyk7Ci0gICAg
dm9pZCBwYWludENoaWxkTGF5ZXJJbnRvQ29sdW1ucyhSZW5kZXJMYXllciogY2hpbGRMYXllciwg
UmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlSZWN0LCBQ
YWludEJlaGF2aW9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVy
T2JqZWN0KiBwYWludGluZ1Jvb3QsIFJlbmRlclJlZ2lvbiosIE92ZXJsYXBUZXN0UmVxdWVzdE1h
cCosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWludExheWVyRmxhZ3Ms
IGNvbnN0IFZlY3RvcjxSZW5kZXJMYXllcio+JiBjb2x1bW5MYXllcnMsIHNpemVfdCBjb2x1bW5J
bmRleCk7CisgICAgc3RydWN0IExheWVyUGFpbnRpbmdJbmZvIHsKKyAgICAgICAgTGF5ZXJQYWlu
dGluZ0luZm8oUmVuZGVyTGF5ZXIqIGluUm9vdExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiBpbkRp
cnR5UmVjdCwgUGFpbnRCZWhhdmlvciBpblBhaW50QmVoYXZpb3IsIGNvbnN0IExheW91dFNpemUm
IGluU3ViUGl4ZWxBY2N1bXVsYXRpb24sIFJlbmRlck9iamVjdCogaW5QYWludGluZ1Jvb3QsIFJl
bmRlclJlZ2lvbippblJlZ2lvbiA9IDAsIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogaW5PdmVybGFw
VGVzdFJlcXVlc3RzID0gMCkKKyAgICAgICAgICAgIDogcm9vdExheWVyKGluUm9vdExheWVyKQor
ICAgICAgICAgICAgLCBwYWludGluZ1Jvb3QoaW5QYWludGluZ1Jvb3QpCisgICAgICAgICAgICAs
IHBhaW50RGlydHlSZWN0KGluRGlydHlSZWN0KQorICAgICAgICAgICAgLCBzdWJQaXhlbEFjY3Vt
dWxhdGlvbihpblN1YlBpeGVsQWNjdW11bGF0aW9uKQorICAgICAgICAgICAgLCByZWdpb24oaW5S
ZWdpb24pCisgICAgICAgICAgICAsIG92ZXJsYXBUZXN0UmVxdWVzdHMoaW5PdmVybGFwVGVzdFJl
cXVlc3RzKQorICAgICAgICAgICAgLCBwYWludEJlaGF2aW9yKGluUGFpbnRCZWhhdmlvcikKKyAg
ICAgICAgeyB9CisgICAgICAgIFJlbmRlckxheWVyKiByb290TGF5ZXI7CisgICAgICAgIFJlbmRl
ck9iamVjdCogcGFpbnRpbmdSb290OyAvLyBvbmx5IHBhaW50IGRlc2NlbmRhbnRzIG9mIHRoaXMg
b2JqZWN0CisgICAgICAgIExheW91dFJlY3QgcGFpbnREaXJ0eVJlY3Q7IC8vIHJlbGF0aXZlIHRv
IHJvb3RMYXllcjsKKyAgICAgICAgTGF5b3V0U2l6ZSBzdWJQaXhlbEFjY3VtdWxhdGlvbjsKKyAg
ICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb247IC8vIE1heSBiZSBudWxsLgorICAgICAgICBPdmVy
bGFwVGVzdFJlcXVlc3RNYXAqIG92ZXJsYXBUZXN0UmVxdWVzdHM7IC8vIE1heSBiZSBudWxsLgor
ICAgICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CisgICAgfTsKKyAgICAKKyAgICB2
b2lkIHBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
LCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVj
dGlvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5
ZXJGbGFncyk7CisgICAgdm9pZCBwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFp
bnRMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5
ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFpbnRQYWdpbmF0
ZWRDaGlsZExheWVyKFJlbmRlckxheWVyKiBjaGlsZExheWVyLCBHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CisgICAgdm9pZCBwYWlu
dENoaWxkTGF5ZXJJbnRvQ29sdW1ucyhSZW5kZXJMYXllciogY2hpbGRMYXllciwgR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MsIGNvbnN0
IFZlY3RvcjxSZW5kZXJMYXllcio+JiBjb2x1bW5MYXllcnMsIHNpemVfdCBjb2x1bW5JbmRleCk7
CiAKICAgICBSZW5kZXJMYXllciogaGl0VGVzdExheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIs
IFJlbmRlckxheWVyKiBjb250YWluZXJMYXllciwgY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVl
c3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IExheW91dFJlY3QmIGhpdFRlc3RSZWN0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBi
b29sIGFwcGxpZWRUcmFuc2Zvcm0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDAyMDIzMmZjMjdhMjhiNTA0M2M0ZGM0MjZlZDliZGYx
ZDZlZmFiZTMuLjdhNmRiM2Y3M2VjYTBlMzE1NmM0ZGYzNWFhZTIyZGQ1Mzk5MmMzYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0x
NTMyLDcgKzE1MzIsOCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIo
UmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KgogICAgICAgICBwYWludEZs
YWdzIHw9IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzOwog
ICAgIAogICAgIC8vIEZJWE1FOiBHcmFwaGljc0xheWVycyBuZWVkIGEgd2F5IHRvIHNwbGl0IGZv
ciBSZW5kZXJSZWdpb25zLgotICAgIG1fb3duaW5nTGF5ZXItPnBhaW50TGF5ZXJDb250ZW50cyhy
b290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBMYXlvdXRTaXplKCksIHBhaW50QmVo
YXZpb3IsIHBhaW50aW5nUm9vdCwgMCwgMCwgcGFpbnRGbGFncyk7CisgICAgUmVuZGVyTGF5ZXI6
OkxheWVyUGFpbnRpbmdJbmZvIHBhaW50aW5nSW5mbyhyb290TGF5ZXIsIHBhaW50RGlydHlSZWN0
LCBwYWludEJlaGF2aW9yLCBMYXlvdXRTaXplKCksIHBhaW50aW5nUm9vdCk7CisgICAgbV9vd25p
bmdMYXllci0+cGFpbnRMYXllckNvbnRlbnRzKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRG
bGFncyk7CiAKICAgICBpZiAobV9vd25pbmdMYXllci0+Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3Jv
bGxiYXJzKCkpCiAgICAgICAgIG1fb3duaW5nTGF5ZXItPnBhaW50T3ZlcmxheVNjcm9sbGJhcnMo
Y29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAKaW5kZXggYWQzYWNmMGJh
N2VjMzEzZTg4YzcwMWM4NTNiZjc2ZTc4MzY4YTIyMy4uYzEwYmRjYWYzOTUxOWIzNTkyOWVjMWFk
NTlhNDVmYzA5Mjc0YTViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxpY2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
aWNhLmNwcApAQCAtNjgsMTQgKzY4LDE0IEBAIHZvaWQgUmVuZGVyUmVwbGljYTo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAKICAg
ICBMYXlvdXRQb2ludCBhZGp1c3RlZFBhaW50T2Zmc2V0ID0gcGFpbnRPZmZzZXQgKyBsb2NhdGlv
bigpOwogCi0gICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkK
KyAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CiAgICAg
ICAgIC8vIFR1cm4gYXJvdW5kIGFuZCBwYWludCB0aGUgcGFyZW50IGxheWVyLiBVc2UgdGVtcG9y
YXJ5IGNsaXBSZWN0cywgc28gdGhhdCB0aGUgbGF5ZXIgZG9lc24ndCBlbmQgdXAgY2FjaGluZyBj
bGlwIHJlY3RzCiAgICAgICAgIC8vIGNvbXB1dGluZyB1c2luZyB0aGUgd3Jvbmcgcm9vdExheWVy
Ci0gICAgICAgIGxheWVyKCktPnBhcmVudCgpLT5wYWludExheWVyKGxheWVyKCktPnRyYW5zZm9y
bSgpID8gbGF5ZXIoKS0+cGFyZW50KCkgOiBsYXllcigpLT5lbmNsb3NpbmdUcmFuc2Zvcm1lZEFu
Y2VzdG9yKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LCBwYWludEluZm8ucmVjdCwgTGF5b3V0U2l6ZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQYWludEJlaGF2aW9yTm9ybWFsLCAwLCBwYWludEluZm8u
cmVuZGVyUmVnaW9uLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJMYXllcjo6UGFpbnRMYXllckhhdmVUcmFuc3BhcmVuY3kgfCBSZW5kZXJMYXllcjo6UGFp
bnRMYXllckFwcGxpZWRUcmFuc2Zvcm0gfCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclRlbXBvcmFy
eUNsaXBSZWN0cyB8IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdSZWZsZWN0aW9uKTsK
LSAgICBlbHNlIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU1hc2spCisgICAgICAg
IFJlbmRlckxheWVyKiByb290UGFpbnRpbmdMYXllciA9IGxheWVyKCktPnRyYW5zZm9ybSgpID8g
bGF5ZXIoKS0+cGFyZW50KCkgOiBsYXllcigpLT5lbmNsb3NpbmdUcmFuc2Zvcm1lZEFuY2VzdG9y
KCk7CisgICAgICAgIFJlbmRlckxheWVyOjpMYXllclBhaW50aW5nSW5mbyBwYWludGluZ0luZm8o
cm9vdFBhaW50aW5nTGF5ZXIsIHBhaW50SW5mby5yZWN0LCBQYWludEJlaGF2aW9yTm9ybWFsLCBM
YXlvdXRTaXplKCksIDAsIHBhaW50SW5mby5yZW5kZXJSZWdpb24pOworICAgICAgICBSZW5kZXJM
YXllcjo6UGFpbnRMYXllckZsYWdzIGZsYWdzID0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJIYXZl
VHJhbnNwYXJlbmN5IHwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3JtIHwg
UmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMgfCBSZW5kZXJMYXllcjo6
UGFpbnRMYXllclBhaW50aW5nUmVmbGVjdGlvbjsKKyAgICAgICAgbGF5ZXIoKS0+cGFyZW50KCkt
PnBhaW50TGF5ZXIocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50aW5nSW5mbywgZmxhZ3MpOworICAg
IH0gZWxzZSBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VNYXNrKQogICAgICAgICBw
YWludE1hc2socGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsKIH0KIAo=
</data>
<flag name="review"
          id="188424"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>