<?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>72105</bug_id>
          
          <creation_ts>2011-11-11 02:49:30 -0800</creation_ts>
          <short_desc>Finish SVGLengthContext conversion in svg/</short_desc>
          <delta_ts>2011-11-12 02:51:12 -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>SVG</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>71780</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>abarth</cc>
    
    <cc>japhet</cc>
    
    <cc>macpherson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>500611</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-11-11 02:49:30 -0800</bug_when>
    <thetext>Remove the operator SVGLengthContext() from SVGElement, and move the last call-sites to pass SVGLengthContext instead of const SVGElement*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500788</commentid>
    <comment_count>1</comment_count>
      <attachid>114703</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-11-11 08:23:00 -0800</bug_when>
    <thetext>Created attachment 114703
Patch

This finished the introduction of SVGLengthContext. Doesn&apos;t affect any tests yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501401</commentid>
    <comment_count>2</comment_count>
      <attachid>114703</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-11-12 02:36:03 -0800</bug_when>
    <thetext>Comment on attachment 114703
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501402</commentid>
    <comment_count>3</comment_count>
      <attachid>114703</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-11-12 02:39:37 -0800</bug_when>
    <thetext>Comment on attachment 114703
Patch

Clearing flags, landed in r100075.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501404</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-11-12 02:51:12 -0800</bug_when>
    <thetext>The build is broken. My patch does touch CodeGeneratorObjC.pm, but it is NOT my patch fault.
paroga said on IRC that his build failed as well, locally, before my patch, with a fresh checkout.


Public API change. There are missing public properties and/or methods from the &quot;DOMHTMLAreaElement&quot; class.
@property(copy) NSString *accessKey;
Died at WebCore/bindings/scripts//CodeGeneratorObjC.pm line 323.
Public API change. There are missing public properties and/or methods from the &quot;DOMHTMLAnchorElement&quot; class.
@property(copy) NSString *accessKey;
Died at WebCore/bindings/scripts//CodeGeneratorObjC.pm line 323.
....</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114703</attachid>
            <date>2011-11-11 08:23:00 -0800</date>
            <delta_ts>2011-11-12 02:39:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>FinishSVGLengthContext.diff</filename>
            <type>text/plain</type>
            <size>36909</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5OTY4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTEtMTEtMTEgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgRmluaXNoIFNWR0xl
bmd0aENvbnRleHQgY29udmVyc2lvbiBpbiBzdmcvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjEwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU1ZHTGVuZ3RoQ29udGV4dChjb25zdCBTVkdFbGVt
ZW50KikgZXhwbGljaXQsIGFkYXB0IGFsbCByZW1haW5pbmcgY2FsbCBzaXRlcy4KKyAgICAgICAg
Tm93IHRoYXQgdGhpcyBwcm9jZXNzIGlzIGZpbmlzaGVkLCBTVkdMZW5ndGhDb250ZXh0IGNhbiBi
ZSBzaGFyZWQgYWNyb3NzIHJlbmRlcnMsCisgICAgICAgIHNvIHRoYXQgaXRzIHBvc3NpYmxlIHRv
IG92ZXJyaWRlIHRoZSBsZW5ndGggY29udGV4dCBpbiBhIHNpbmdsZSBwbGFjZS4gVGhpcyB3aWxs
CisgICAgICAgIGJlIGRvbmUgaW4gZnV0dXJlIHBhdGNoZXMuCisKKyAgICAgICAgRG9lc24ndCBh
ZmZlY3QgYW55IHRlc3RzIHlldC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1ZHTGVuZ3Ro
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTGVuZ3RoOjp2YWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1NWR0xlbmd0aDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4U1ZHTGVuZ3RoOjp2YWx1ZUFjY2Vzc29yR2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4U1ZHTGVuZ3RoOjp2YWx1ZUFjY2Vzc29yU2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4U1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0c0Nh
bGxiYWNrKToKKyAgICAgICAgKiBjc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjp1cGRhdGVJZlNWR0N1cnNvcklzVXNlZCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmxheW91dCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdJbWFnZTo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQYXRoOjp6
ZXJvTGVuZ3RoU3VicGF0aFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUGF0aDo6
Y2FsY3VsYXRlTWFya2VyQm91bmRzSWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VNYXJrZXI6OnJlZmVyZW5jZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlTWFya2VyOjpjYWxjVmlld3BvcnQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpz
dHJva2VCb3VuZGluZ0JveCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3
cG9ydENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lcjo6Y2FsY1ZpZXdwb3J0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
clN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3VwcG9ydDo6YXBwbHlT
dHJva2VTdHlsZVRvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJU
cmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdTaGFkb3dU
cmVlRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2hhZG93VHJlZUNvbnRhaW5l
ckVsZW1lbnQ6OmNvbnRhaW5lclRyYW5zbGF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1RleHRDaHVua0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENodW5r
QnVpbGRlcjo6YWRkVGV4dENodW5rKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRM
YXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0Rmxv
YXRWYWx1ZXNGcm9tU1ZHTGVuZ3RoTGlzdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TGF5b3V0RW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRMYXlvdXRFbmdp
bmU6OnBhcmVudERlZmluZXNUZXh0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRM
YXlvdXRFbmdpbmU6OmJlZ2luVGV4dFBhdGhMYXlvdXQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxpbmVTaGlmdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZzo6Y2FsY3VsYXRlQ1NTS2Vy
bmluZ0FuZFNwYWNpbmcpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29u
dGV4dDo6ZGV0ZXJtaW5lVmlld3BvcnQpOgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGhDb250ZXh0
Lmg6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU1ZHRWxlbWVudDo6dmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVu
dDo6bG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U1ZHRWxlbWVudDo6Y3VycmVudFZpZXdCb3hSZWN0KToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp0b0NsaXBQYXRoKToK
KwogMjAxMS0xMS0xMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk5OTY0LgpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcAkocmV2aXNp
b24gOTk5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIlNW
R0V4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIlNWR0xlbmd0aENvbnRleHQuaCIKICNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC0zNSw3ICszNiw4IEBA
IEpTVmFsdWUgSlNTVkdMZW5ndGg6OnZhbHVlKEV4ZWNTdGF0ZSogZXgKIHsKICAgICBTVkdMZW5n
dGgmIHBvZEltcCA9IGltcGwoKS0+cHJvcGVydHlSZWZlcmVuY2UoKTsKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBmbG9hdCB2YWx1ZSA9IHBvZEltcC52YWx1ZShpbXBsKCktPmNvbnRl
eHRFbGVtZW50KCksIGVjKTsKKyAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoaW1w
bCgpLT5jb250ZXh0RWxlbWVudCgpKTsKKyAgICBmbG9hdCB2YWx1ZSA9IHBvZEltcC52YWx1ZShs
ZW5ndGhDb250ZXh0LCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBlYyk7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNTksNyArNjEs
OCBAQCB2b2lkIEpTU1ZHTGVuZ3RoOjpzZXRWYWx1ZShFeGVjU3RhdGUqIGV4CiAgICAgU1ZHTGVu
Z3RoJiBwb2RJbXAgPSBpbXBsKCktPnByb3BlcnR5UmVmZXJlbmNlKCk7CiAKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBwb2RJbXAuc2V0VmFsdWUodmFsdWUudG9GbG9hdChleGVjKSwg
aW1wbCgpLT5jb250ZXh0RWxlbWVudCgpLCBlYyk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5n
dGhDb250ZXh0KGltcGwoKS0+Y29udGV4dEVsZW1lbnQoKSk7CisgICAgcG9kSW1wLnNldFZhbHVl
KHZhbHVlLnRvRmxvYXQoZXhlYyksIGxlbmd0aENvbnRleHQsIGVjKTsKICAgICBpZiAoZWMpIHsK
ICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
ODYsNyArODksOCBAQCBKU1ZhbHVlIEpTU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVCiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgcG9kSW1wLmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuaXRUeXBlLCBpbXBsKCktPmNv
bnRleHRFbGVtZW50KCksIGVjKTsKKyAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQo
aW1wbCgpLT5jb250ZXh0RWxlbWVudCgpKTsKKyAgICBwb2RJbXAuY29udmVydFRvU3BlY2lmaWVk
VW5pdHModW5pdFR5cGUsIGxlbmd0aENvbnRleHQsIGVjKTsKICAgICBpZiAoZWMpIHsKICAgICAg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JP
YmpDLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvck9iakMucG0JKHJldmlzaW9uIDk5OTMxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQkod29ya2luZyBjb3B5KQpAQCAtMTIw
NCw3ICsxMjA0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAg
ICAgICMgVE9ETzogSGFuZGxlIHNwZWNpYWwgY2FzZSBmb3IgRE9NU1ZHTGVuZ3RoLiBXZSBkbyBu
ZWVkIEN1c3RvbSBjb2RlIHN1cHBvcnQgZm9yIHRoaXMuCiAgICAgICAgICAgICAgICAgaWYgKCRz
dmdQcm9wZXJ0eVR5cGUgZXEgIldlYkNvcmU6OlNWR0xlbmd0aCIgYW5kICRhdHRyaWJ1dGVOYW1l
IGVxICJ2YWx1ZSIpIHsKLSAgICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0g
InZhbHVlKElNUEwtPmNvbnRleHRFbGVtZW50KCksICI7CisgICAgICAgICAgICAgICAgICAgICRn
ZXR0ZXJDb250ZW50SGVhZCA9ICJ2YWx1ZShXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0KElNUEwt
PmNvbnRleHRFbGVtZW50KCkpLCAiOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IApAQCAtMTQwNiw3ICsxNDA2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6
IFNwZWNpYWwgY2FzZSBmb3IgRE9NU1ZHTGVuZ3RoLiBXZSBkbyBuZWVkIEN1c3RvbSBjb2RlIHN1
cHBvcnQgZm9yIHRoaXMuCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5
VHlwZSBlcSAiV2ViQ29yZTo6U1ZHTGVuZ3RoIiBhbmQgJGF0dHJpYnV0ZU5hbWUgZXEgInZhbHVl
IikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHBvZEltcGwuJGNvcmVTZXR0ZXJOYW1lKCRhcmcsIElNUEwtPmNvbnRleHRFbGVtZW50KCkkZWMp
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcG9kSW1wbC4kY29yZVNldHRlck5hbWUoJGFyZywgV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4
dChJTVBMLT5jb250ZXh0RWxlbWVudCgpKSRlYyk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgcG9kSW1wbC4kY29yZVNldHRlck5hbWUoJGFyZyRlYyk7XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KQEAgLTE1NDAsNyArMTU0MCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICAjIEZJWE1FISBXZSBuZWVkIFtDdXN0b21dIHN1cHBvcnQg
Zm9yIE9iakMsIHRvIG1vdmUgdGhlc2UgaGFja3MgaW50byBET01TVkdMZW5ndGgvTWF0cml4Q3Vz
dG9tLm1tCiAgICAgICAgICAgICBteSAkc3ZnTGVuZ3RoQ29udmVydFRvU3BlY2lmaWVkVW5pdHMg
PSAoJHN2Z1Byb3BlcnR5VHlwZSBhbmQgJHN2Z1Byb3BlcnR5VHlwZSBlcSAiV2ViQ29yZTo6U1ZH
TGVuZ3RoIiBhbmQgJGZ1bmN0aW9uTmFtZSBlcSAiY29udmVydFRvU3BlY2lmaWVkVW5pdHMiKTsK
IAotICAgICAgICAgICAgcHVzaChAcGFyYW1ldGVyTmFtZXMsICJJTVBMLT5jb250ZXh0RWxlbWVu
dCgpIikgaWYgJHN2Z0xlbmd0aENvbnZlcnRUb1NwZWNpZmllZFVuaXRzOyAKKyAgICAgICAgICAg
IHB1c2goQHBhcmFtZXRlck5hbWVzLCAiV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4dChJTVBMLT5j
b250ZXh0RWxlbWVudCgpKSIpIGlmICRzdmdMZW5ndGhDb252ZXJ0VG9TcGVjaWZpZWRVbml0czsg
CiAgICAgICAgICAgICBwdXNoKEBwYXJhbWV0ZXJOYW1lcywgImVjIikgaWYgJHJhaXNlc0V4Y2Vw
dGlvbnM7CiAKICAgICAgICAgICAgICMgSGFuZGxlIGFyZ3VtZW50cyB0aGF0IGFyZSAnU1ZHUHJv
cGVydHknIGJhc2VkIChTVkdBbmdsZS9TVkdMZW5ndGgpLiBXZSBuZWVkIHRvIGNvbnZlcnQgZnJv
bSBTVkdQcm9wZXJ0eVRlYXJPZmY8VHlwZT4qIHRvIFR5cGUsCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAJ
KHJldmlzaW9uIDk5OTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U1ZHTGVuZ3RoQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIlY4U1ZHTGVuZ3RoLmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSAiU1ZHTGVuZ3RoQ29udGV4dC5oIgogI2luY2x1ZGUgIlNWR1Byb3BlcnR5VGVhck9mZi5o
IgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgpA
QCAtNDYsNyArNDcsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTVkdMZW5ndGg6OnZhbHVl
CiAgICAgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0xlbmd0aD4qIHdyYXBwZXIgPSBWOFNWR0xlbmd0
aDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgU1ZHTGVuZ3RoJiBpbXAgPSB3cmFwcGVy
LT5wcm9wZXJ0eVJlZmVyZW5jZSgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGZs
b2F0IHZhbHVlID0gaW1wLnZhbHVlKHdyYXBwZXItPmNvbnRleHRFbGVtZW50KCksIGVjKTsKKyAg
ICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQod3JhcHBlci0+Y29udGV4dEVsZW1lbnQo
KSk7CisgICAgZmxvYXQgdmFsdWUgPSBpbXAudmFsdWUobGVuZ3RoQ29udGV4dCwgZWMpOwogICAg
IGlmIChVTkxJS0VMWShlYykpIHsKICAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVj
KTsKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwpAQCAtNzAsNyArNzIs
OCBAQCB2b2lkIFY4U1ZHTGVuZ3RoOjp2YWx1ZUFjY2Vzc29yU2V0dGVyKHY4CiAKICAgICBTVkdM
ZW5ndGgmIGltcCA9IHdyYXBwZXItPnByb3BlcnR5UmVmZXJlbmNlKCk7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgaW1wLnNldFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZS0+
TnVtYmVyVmFsdWUoKSksIHdyYXBwZXItPmNvbnRleHRFbGVtZW50KCksIGVjKTsKKyAgICBTVkdM
ZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQod3JhcHBlci0+Y29udGV4dEVsZW1lbnQoKSk7Cisg
ICAgaW1wLnNldFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZS0+TnVtYmVyVmFsdWUoKSks
IGxlbmd0aENvbnRleHQsIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKQogICAgICAgICBWOFBy
b3h5OjpzZXRET01FeGNlcHRpb24oZWMpOwogICAgIGVsc2UKQEAgLTkyLDcgKzk1LDggQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1ZHTGVuZ3RoOjpjb252ZQogICAgIFNWR0xlbmd0aCYgaW1w
ID0gd3JhcHBlci0+cHJvcGVydHlSZWZlcmVuY2UoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBFWENFUFRJT05fQkxPQ0soaW50LCB1bml0VHlwZSwgdG9VSW50MzIoYXJnc1swXSkp
OwotICAgIGltcC5jb252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bml0VHlwZSwgd3JhcHBlci0+Y29u
dGV4dEVsZW1lbnQoKSwgZWMpOworICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCh3
cmFwcGVyLT5jb250ZXh0RWxlbWVudCgpKTsKKyAgICBpbXAuY29udmVydFRvU3BlY2lmaWVkVW5p
dHModW5pdFR5cGUsIGxlbmd0aENvbnRleHQsIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKQog
ICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOwogICAgIGVsc2UKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDk5OTMx
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNW
R0N1cnNvckVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdMZW5ndGhDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKICNlbmRpZgpAQCAt
OTIsMTAgKzkzLDExIEBAIGJvb2wgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6dXBkYXRlSWZTVkdDdXIK
IAogICAgIGlmIChTVkdDdXJzb3JFbGVtZW50KiBjdXJzb3JFbGVtZW50ID0gcmVzb3VyY2VSZWZl
cmVuY2VkQnlDdXJzb3JFbGVtZW50KHVybCwgZWxlbWVudC0+ZG9jdW1lbnQoKSkpIHsKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgd2lsbCBvdmVycmlkZSBob3Qgc3BvdCBzcGVjaWZpZWQgaW4gQ1NT
LCB3aGljaCBpcyBwcm9iYWJseSBpbmNvcnJlY3QuCi0gICAgICAgIGZsb2F0IHggPSByb3VuZGYo
Y3Vyc29yRWxlbWVudC0+eCgpLnZhbHVlKDApKTsKKyAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBs
ZW5ndGhDb250ZXh0KDApOworICAgICAgICBmbG9hdCB4ID0gcm91bmRmKGN1cnNvckVsZW1lbnQt
PngoKS52YWx1ZShsZW5ndGhDb250ZXh0KSk7CiAgICAgICAgIG1faG90U3BvdC5zZXRYKHN0YXRp
Y19jYXN0PGludD4oeCkpOwogCi0gICAgICAgIGZsb2F0IHkgPSByb3VuZGYoY3Vyc29yRWxlbWVu
dC0+eSgpLnZhbHVlKDApKTsKKyAgICAgICAgZmxvYXQgeSA9IHJvdW5kZihjdXJzb3JFbGVtZW50
LT55KCkudmFsdWUobGVuZ3RoQ29udGV4dCkpOwogICAgICAgICBtX2hvdFNwb3Quc2V0WShzdGF0
aWNfY2FzdDxpbnQ+KHkpKTsKIAogICAgICAgICBpZiAoY2FjaGVkSW1hZ2VVUkwoKSAhPSBlbGVt
ZW50LT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChjdXJzb3JFbGVtZW50LT5ocmVmKCkpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Zv
cmVpZ25PYmplY3QuY3BwCShyZXZpc2lvbiA5OTkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
Miw4ICsxMzIsOSBAQCB2b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmxheW91dCgpCiAgICAg
RmxvYXRSZWN0IG9sZFZpZXdwb3J0ID0gbV92aWV3cG9ydDsKIAogICAgIC8vIENhY2hlIHZpZXdw
b3J0IGJvdW5kYXJpZXMKLSAgICBGbG9hdFBvaW50IHZpZXdwb3J0TG9jYXRpb24oZm9yZWlnbi0+
eCgpLnZhbHVlKGZvcmVpZ24pLCBmb3JlaWduLT55KCkudmFsdWUoZm9yZWlnbikpOwotICAgIG1f
dmlld3BvcnQgPSBGbG9hdFJlY3Qodmlld3BvcnRMb2NhdGlvbiwgRmxvYXRTaXplKGZvcmVpZ24t
PndpZHRoKCkudmFsdWUoZm9yZWlnbiksIGZvcmVpZ24tPmhlaWdodCgpLnZhbHVlKGZvcmVpZ24p
KSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KGZvcmVpZ24pOworICAgIEZs
b2F0UG9pbnQgdmlld3BvcnRMb2NhdGlvbihmb3JlaWduLT54KCkudmFsdWUobGVuZ3RoQ29udGV4
dCksIGZvcmVpZ24tPnkoKS52YWx1ZShsZW5ndGhDb250ZXh0KSk7CisgICAgbV92aWV3cG9ydCA9
IEZsb2F0UmVjdCh2aWV3cG9ydExvY2F0aW9uLCBGbG9hdFNpemUoZm9yZWlnbi0+d2lkdGgoKS52
YWx1ZShsZW5ndGhDb250ZXh0KSwgZm9yZWlnbi0+aGVpZ2h0KCkudmFsdWUobGVuZ3RoQ29udGV4
dCkpKTsKICAgICBpZiAoIXVwZGF0ZUNhY2hlZEJvdW5kYXJpZXNJblBhcmVudHMpCiAgICAgICAg
IHVwZGF0ZUNhY2hlZEJvdW5kYXJpZXNJblBhcmVudHMgPSBvbGRWaWV3cG9ydCAhPSBtX3ZpZXdw
b3J0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ltYWdlLmNwcAkocmV2aXNpb24gOTk5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsOCBAQCB2
b2lkIFJlbmRlclNWR0ltYWdlOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgU1ZHSW1hZ2VFbGVt
ZW50KiBpbWFnZSA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KG5vZGUoKSk7CiAKICAg
ICBGbG9hdFJlY3Qgb2xkQm91bmRhcmllcyA9IG1fb2JqZWN0Qm91bmRpbmdCb3g7Ci0gICAgbV9v
YmplY3RCb3VuZGluZ0JveCA9IEZsb2F0UmVjdChpbWFnZS0+eCgpLnZhbHVlKGltYWdlKSwgaW1h
Z2UtPnkoKS52YWx1ZShpbWFnZSksIGltYWdlLT53aWR0aCgpLnZhbHVlKGltYWdlKSwgaW1hZ2Ut
PmhlaWdodCgpLnZhbHVlKGltYWdlKSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250
ZXh0KGltYWdlKTsKKyAgICBtX29iamVjdEJvdW5kaW5nQm94ID0gRmxvYXRSZWN0KGltYWdlLT54
KCkudmFsdWUobGVuZ3RoQ29udGV4dCksIGltYWdlLT55KCkudmFsdWUobGVuZ3RoQ29udGV4dCks
IGltYWdlLT53aWR0aCgpLnZhbHVlKGxlbmd0aENvbnRleHQpLCBpbWFnZS0+aGVpZ2h0KCkudmFs
dWUobGVuZ3RoQ29udGV4dCkpOwogICAgIGlmIChtX29iamVjdEJvdW5kaW5nQm94ICE9IG9sZEJv
dW5kYXJpZXMpIHsKICAgICAgICAgbV91cGRhdGVDYWNoZWRSZXBhaW50UmVjdCA9IHRydWU7CiAg
ICAgICAgIHNldE5lZWRzTGF5b3V0KHRydWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCShyZXZpc2lvbiA5OTkzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2Myw3ICsxNjMsOCBAQCBib29sIFJlbmRlclNWR1BhdGg6OnNob3VsZFN0cm9rZVplcm9M
ZW5nCiBGbG9hdFJlY3QgUmVuZGVyU1ZHUGF0aDo6emVyb0xlbmd0aFN1YnBhdGhSZWN0KCkgY29u
c3QKIHsKICAgICBTVkdFbGVtZW50KiBzdmdFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVu
dCo+KG5vZGUoKSk7Ci0gICAgZmxvYXQgc3Ryb2tlV2lkdGggPSBzdHlsZSgpLT5zdmdTdHlsZSgp
LT5zdHJva2VXaWR0aCgpLnZhbHVlKHN2Z0VsZW1lbnQpOworICAgIFNWR0xlbmd0aENvbnRleHQg
bGVuZ3RoQ29udGV4dChzdmdFbGVtZW50KTsKKyAgICBmbG9hdCBzdHJva2VXaWR0aCA9IHN0eWxl
KCktPnN2Z1N0eWxlKCktPnN0cm9rZVdpZHRoKCkudmFsdWUobGVuZ3RoQ29udGV4dCk7CiAgICAg
cmV0dXJuIEZsb2F0UmVjdChtX2ZpbGxCb3VuZGluZ0JveC54KCkgLSBzdHJva2VXaWR0aCAvIDIs
IG1fZmlsbEJvdW5kaW5nQm94LnkoKSAtIHN0cm9rZVdpZHRoIC8gMiwgc3Ryb2tlV2lkdGgsIHN0
cm9rZVdpZHRoKTsKIH0KIApAQCAtMzQ1LDcgKzM0Niw4IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdQ
YXRoOjpjYWxjdWxhdGVNYXJrZXIKICAgICBpZiAoIW1hcmtlclN0YXJ0ICYmICFtYXJrZXJNaWQg
JiYgIW1hcmtlckVuZCkKICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogCi0gICAgcmV0dXJu
IG1fbWFya2VyTGF5b3V0SW5mby5jYWxjdWxhdGVCb3VuZGFyaWVzKG1hcmtlclN0YXJ0LCBtYXJr
ZXJNaWQsIG1hcmtlckVuZCwgc3ZnU3R5bGUtPnN0cm9rZVdpZHRoKCkudmFsdWUoc3ZnRWxlbWVu
dCksIG1fcGF0aCk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHN2Z0VsZW1l
bnQpOworICAgIHJldHVybiBtX21hcmtlckxheW91dEluZm8uY2FsY3VsYXRlQm91bmRhcmllcyht
YXJrZXJTdGFydCwgbWFya2VyTWlkLCBtYXJrZXJFbmQsIHN2Z1N0eWxlLT5zdHJva2VXaWR0aCgp
LnZhbHVlKGxlbmd0aENvbnRleHQpLCBtX3BhdGgpOwogfQogCiB2b2lkIFJlbmRlclNWR1BhdGg6
OnVwZGF0ZUNhY2hlZEJvdW5kYXJpZXMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAJKHJldmlzaW9u
IDk5OTMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDggQEAgRmxvYXRQb2ludCBS
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6cmVmZQogICAgIFNWR01hcmtlckVsZW1lbnQqIG1hcmtl
ciA9IHN0YXRpY19jYXN0PFNWR01hcmtlckVsZW1lbnQqPihub2RlKCkpOwogICAgIEFTU0VSVCht
YXJrZXIpOwogCi0gICAgcmV0dXJuIEZsb2F0UG9pbnQobWFya2VyLT5yZWZYKCkudmFsdWUobWFy
a2VyKSwgbWFya2VyLT5yZWZZKCkudmFsdWUobWFya2VyKSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4
dCBsZW5ndGhDb250ZXh0KG1hcmtlcik7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQobWFya2VyLT5y
ZWZYKCkudmFsdWUobGVuZ3RoQ29udGV4dCksIG1hcmtlci0+cmVmWSgpLnZhbHVlKGxlbmd0aENv
bnRleHQpKTsKIH0KIAogZmxvYXQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OmFuZ2xlKCkgY29u
c3QKQEAgLTE2Myw5ICsxNjQsMTAgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6Y2Fs
Y1ZpZXdwbwogCiAgICAgU1ZHTWFya2VyRWxlbWVudCogbWFya2VyID0gc3RhdGljX2Nhc3Q8U1ZH
TWFya2VyRWxlbWVudCo+KG5vZGUoKSk7CiAgICAgQVNTRVJUKG1hcmtlcik7Ci0KLSAgICBmbG9h
dCB3ID0gbWFya2VyLT5tYXJrZXJXaWR0aCgpLnZhbHVlKG1hcmtlcik7Ci0gICAgZmxvYXQgaCA9
IG1hcmtlci0+bWFya2VySGVpZ2h0KCkudmFsdWUobWFya2VyKTsKKyAgICAKKyAgICBTVkdMZW5n
dGhDb250ZXh0IGxlbmd0aENvbnRleHQobWFya2VyKTsKKyAgICBmbG9hdCB3ID0gbWFya2VyLT5t
YXJrZXJXaWR0aCgpLnZhbHVlKGxlbmd0aENvbnRleHQpOworICAgIGZsb2F0IGggPSBtYXJrZXIt
Pm1hcmtlckhlaWdodCgpLnZhbHVlKGxlbmd0aENvbnRleHQpOwogICAgIG1fdmlld3BvcnQgPSBG
bG9hdFJlY3QoMCwgMCwgdywgaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAkocmV2aXNpb24gOTk5MzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTUsNyArMjU1LDggQEAgRmxvYXRSZWN0IFJlbmRlclNWR1RleHQ6OnN0cm9rZUJvdW5kaW5n
QgogCiAgICAgQVNTRVJUKG5vZGUoKSk7CiAgICAgQVNTRVJUKG5vZGUoKS0+aXNTVkdFbGVtZW50
KCkpOwotICAgIHN0cm9rZUJvdW5kYXJpZXMuaW5mbGF0ZShzdmdTdHlsZS0+c3Ryb2tlV2lkdGgo
KS52YWx1ZShzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4obm9kZSgpKSkpOworICAgIFNWR0xlbmd0
aENvbnRleHQgbGVuZ3RoQ29udGV4dChzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4obm9kZSgpKSk7
CisgICAgc3Ryb2tlQm91bmRhcmllcy5pbmZsYXRlKHN2Z1N0eWxlLT5zdHJva2VXaWR0aCgpLnZh
bHVlKGxlbmd0aENvbnRleHQpKTsKICAgICByZXR1cm4gc3Ryb2tlQm91bmRhcmllczsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRh
aW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAJKHJldmlzaW9uIDk5OTMxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDE5ICs0NSwxNyBAQCB2b2lkIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFp
bmVyOjphcHBseVZpCiAKIHZvaWQgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OmNhbGNWaWV3
cG9ydCgpCiB7Ci0gICAgIFNWR0VsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVt
ZW50Kj4obm9kZSgpKTsKLSAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN2
Z1RhZykpIHsKLSAgICAgICAgIFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PFNWR1NW
R0VsZW1lbnQqPihlbGVtZW50KTsKLQotICAgICAgICAgRmxvYXRSZWN0IG9sZFZpZXdwb3J0ID0g
bV92aWV3cG9ydDsKLSAgICAgICAgIG1fdmlld3BvcnQgPSBGbG9hdFJlY3Qoc3ZnLT54KCkudmFs
dWUoc3ZnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHN2Zy0+eSgpLnZhbHVl
KHN2ZykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBzdmctPndpZHRoKCkudmFs
dWUoc3ZnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHN2Zy0+aGVpZ2h0KCku
dmFsdWUoc3ZnKSk7CisgICAgU1ZHRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0Vs
ZW1lbnQqPihub2RlKCkpOworICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6
c3ZnVGFnKSkKKyAgICAgICAgcmV0dXJuOworICAgIFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRp
Y19jYXN0PFNWR1NWR0VsZW1lbnQqPihlbGVtZW50KTsKKyAgICBGbG9hdFJlY3Qgb2xkVmlld3Bv
cnQgPSBtX3ZpZXdwb3J0OwogCi0gICAgICAgIGlmIChvbGRWaWV3cG9ydCAhPSBtX3ZpZXdwb3J0
KQotICAgICAgICAgICAgc2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCk7Ci0gICAgfQorICAgIFNW
R0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChlbGVtZW50KTsKKyAgICBtX3ZpZXdwb3J0ID0g
RmxvYXRSZWN0KHN2Zy0+eCgpLnZhbHVlKGxlbmd0aENvbnRleHQpLCBzdmctPnkoKS52YWx1ZShs
ZW5ndGhDb250ZXh0KSwgc3ZnLT53aWR0aCgpLnZhbHVlKGxlbmd0aENvbnRleHQpLCBzdmctPmhl
aWdodCgpLnZhbHVlKGxlbmd0aENvbnRleHQpKTsKKworICAgIGlmIChvbGRWaWV3cG9ydCAhPSBt
X3ZpZXdwb3J0KQorICAgICAgICBzZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKTsKIH0KIAogQWZm
aW5lVHJhbnNmb3JtIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjp2aWV3cG9ydFRyYW5zZm9y
bSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1
cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyU3VwcG9ydC5jcHAJKHJldmlzaW9uIDk5OTMxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMwLDcg
KzMzMCw3IEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6YXBwbHlTdHJva2VTdHlsZVQKICAgICBj
b25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnU3R5bGUgPSBzdHlsZS0+c3ZnU3R5bGUoKTsKICAgICBB
U1NFUlQoc3ZnU3R5bGUpOwogCi0gICAgU1ZHRWxlbWVudCogbGVuZ3RoQ29udGV4dCA9IHN0YXRp
Y19jYXN0PFNWR0VsZW1lbnQqPihvYmplY3QtPm5vZGUoKSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4
dCBsZW5ndGhDb250ZXh0KHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihvYmplY3QtPm5vZGUoKSkp
OwogICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhzdmdTdHlsZS0+c3Ryb2tlV2lkdGgo
KS52YWx1ZShsZW5ndGhDb250ZXh0KSk7CiAgICAgY29udGV4dC0+c2V0TGluZUNhcChzdmdTdHls
ZS0+Y2FwU3R5bGUoKSk7CiAgICAgY29udGV4dC0+c2V0TGluZUpvaW4oc3ZnU3R5bGUtPmpvaW5T
dHlsZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJl
ZUFzVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJUcmVlQXNUZXh0LmNwcAkocmV2aXNpb24gOTk5MzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMDAsMTUgKzMwMCwxNSBAQCBzdGF0aWMgdm9pZCB3cml0ZVN0eWxlKFRleHRTdHJlYW0mIHRz
LCBjCiAgICAgICAgICAgICB0cyA8PCAiIFtzdHJva2U9eyIgPDwgczsKICAgICAgICAgICAgIHdy
aXRlU1ZHUGFpbnRpbmdSZXNvdXJjZSh0cywgc3Ryb2tlUGFpbnRpbmdSZXNvdXJjZSk7CiAKLSAg
ICAgICAgICAgIFNWR0VsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4o
cGF0aC5ub2RlKCkpOwotICAgICAgICAgICAgZG91YmxlIGRhc2hPZmZzZXQgPSBzdmdTdHlsZS0+
c3Ryb2tlRGFzaE9mZnNldCgpLnZhbHVlKGVsZW1lbnQpOwotICAgICAgICAgICAgZG91YmxlIHN0
cm9rZVdpZHRoID0gc3ZnU3R5bGUtPnN0cm9rZVdpZHRoKCkudmFsdWUoZWxlbWVudCk7CisgICAg
ICAgICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoc3RhdGljX2Nhc3Q8U1ZHRWxl
bWVudCo+KHBhdGgubm9kZSgpKSk7CisgICAgICAgICAgICBkb3VibGUgZGFzaE9mZnNldCA9IHN2
Z1N0eWxlLT5zdHJva2VEYXNoT2Zmc2V0KCkudmFsdWUobGVuZ3RoQ29udGV4dCk7CisgICAgICAg
ICAgICBkb3VibGUgc3Ryb2tlV2lkdGggPSBzdmdTdHlsZS0+c3Ryb2tlV2lkdGgoKS52YWx1ZShs
ZW5ndGhDb250ZXh0KTsKICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTVkdMZW5ndGg+JiBkYXNo
ZXMgPSBzdmdTdHlsZS0+c3Ryb2tlRGFzaEFycmF5KCk7CiAKICAgICAgICAgICAgIERhc2hBcnJh
eSBkYXNoQXJyYXk7CiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoPjo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gZGFzaGVzLmVuZCgpOwogICAgICAgICAgICAgZm9yIChWZWN0b3I8U1ZH
TGVuZ3RoPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBkYXNoZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQotICAgICAgICAgICAgICAgIGRhc2hBcnJheS5hcHBlbmQoKCppdCkudmFsdWUoZWxlbWVu
dCkpOworICAgICAgICAgICAgICAgIGRhc2hBcnJheS5hcHBlbmQoKCppdCkudmFsdWUobGVuZ3Ro
Q29udGV4dCkpOwogCiAgICAgICAgICAgICB3cml0ZUlmTm90RGVmYXVsdCh0cywgIm9wYWNpdHki
LCBzdmdTdHlsZS0+c3Ryb2tlT3BhY2l0eSgpLCAxLjBmKTsKICAgICAgICAgICAgIHdyaXRlSWZO
b3REZWZhdWx0KHRzLCAic3Ryb2tlIHdpZHRoIiwgc3Ryb2tlV2lkdGgsIDEuMCk7CkBAIC0zNTIs
MzAgKzM1MiwzMSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtCiAK
ICAgICBBU1NFUlQocGF0aC5ub2RlKCktPmlzU1ZHRWxlbWVudCgpKTsKICAgICBTVkdFbGVtZW50
KiBzdmdFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KHBhdGgubm9kZSgpKTsKKyAg
ICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoc3ZnRWxlbWVudCk7CiAKICAgICBpZiAo
c3ZnRWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6cmVjdFRhZykpIHsKICAgICAgICAgU1ZH
UmVjdEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdSZWN0RWxlbWVudCo+KHN2Z0Vs
ZW1lbnQpOwotICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJ4IiwgZWxlbWVudC0+eCgp
LnZhbHVlKGVsZW1lbnQpKTsKLSAgICAgICAgd3JpdGVOYW1lVmFsdWVQYWlyKHRzLCAieSIsIGVs
ZW1lbnQtPnkoKS52YWx1ZShlbGVtZW50KSk7Ci0gICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0
cywgIndpZHRoIiwgZWxlbWVudC0+d2lkdGgoKS52YWx1ZShlbGVtZW50KSk7Ci0gICAgICAgIHdy
aXRlTmFtZVZhbHVlUGFpcih0cywgImhlaWdodCIsIGVsZW1lbnQtPmhlaWdodCgpLnZhbHVlKGVs
ZW1lbnQpKTsKKyAgICAgICAgd3JpdGVOYW1lVmFsdWVQYWlyKHRzLCAieCIsIGVsZW1lbnQtPngo
KS52YWx1ZShsZW5ndGhDb250ZXh0KSk7CisgICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywg
InkiLCBlbGVtZW50LT55KCkudmFsdWUobGVuZ3RoQ29udGV4dCkpOworICAgICAgICB3cml0ZU5h
bWVWYWx1ZVBhaXIodHMsICJ3aWR0aCIsIGVsZW1lbnQtPndpZHRoKCkudmFsdWUobGVuZ3RoQ29u
dGV4dCkpOworICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJoZWlnaHQiLCBlbGVtZW50
LT5oZWlnaHQoKS52YWx1ZShsZW5ndGhDb250ZXh0KSk7CiAgICAgfSBlbHNlIGlmIChzdmdFbGVt
ZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpsaW5lVGFnKSkgewogICAgICAgICBTVkdMaW5lRWxl
bWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0xpbmVFbGVtZW50Kj4oc3ZnRWxlbWVudCk7
Ci0gICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywgIngxIiwgZWxlbWVudC0+eDEoKS52YWx1
ZShlbGVtZW50KSk7Ci0gICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywgInkxIiwgZWxlbWVu
dC0+eTEoKS52YWx1ZShlbGVtZW50KSk7Ci0gICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywg
IngyIiwgZWxlbWVudC0+eDIoKS52YWx1ZShlbGVtZW50KSk7Ci0gICAgICAgIHdyaXRlTmFtZVZh
bHVlUGFpcih0cywgInkyIiwgZWxlbWVudC0+eTIoKS52YWx1ZShlbGVtZW50KSk7CisgICAgICAg
IHdyaXRlTmFtZVZhbHVlUGFpcih0cywgIngxIiwgZWxlbWVudC0+eDEoKS52YWx1ZShsZW5ndGhD
b250ZXh0KSk7CisgICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywgInkxIiwgZWxlbWVudC0+
eTEoKS52YWx1ZShsZW5ndGhDb250ZXh0KSk7CisgICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0
cywgIngyIiwgZWxlbWVudC0+eDIoKS52YWx1ZShsZW5ndGhDb250ZXh0KSk7CisgICAgICAgIHdy
aXRlTmFtZVZhbHVlUGFpcih0cywgInkyIiwgZWxlbWVudC0+eTIoKS52YWx1ZShsZW5ndGhDb250
ZXh0KSk7CiAgICAgfSBlbHNlIGlmIChzdmdFbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpl
bGxpcHNlVGFnKSkgewogICAgICAgICBTVkdFbGxpcHNlRWxlbWVudCogZWxlbWVudCA9IHN0YXRp
Y19jYXN0PFNWR0VsbGlwc2VFbGVtZW50Kj4oc3ZnRWxlbWVudCk7Ci0gICAgICAgIHdyaXRlTmFt
ZVZhbHVlUGFpcih0cywgImN4IiwgZWxlbWVudC0+Y3goKS52YWx1ZShlbGVtZW50KSk7Ci0gICAg
ICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywgImN5IiwgZWxlbWVudC0+Y3koKS52YWx1ZShlbGVt
ZW50KSk7Ci0gICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywgInJ4IiwgZWxlbWVudC0+cngo
KS52YWx1ZShlbGVtZW50KSk7Ci0gICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywgInJ5Iiwg
ZWxlbWVudC0+cnkoKS52YWx1ZShlbGVtZW50KSk7CisgICAgICAgIHdyaXRlTmFtZVZhbHVlUGFp
cih0cywgImN4IiwgZWxlbWVudC0+Y3goKS52YWx1ZShsZW5ndGhDb250ZXh0KSk7CisgICAgICAg
IHdyaXRlTmFtZVZhbHVlUGFpcih0cywgImN5IiwgZWxlbWVudC0+Y3koKS52YWx1ZShsZW5ndGhD
b250ZXh0KSk7CisgICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywgInJ4IiwgZWxlbWVudC0+
cngoKS52YWx1ZShsZW5ndGhDb250ZXh0KSk7CisgICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0
cywgInJ5IiwgZWxlbWVudC0+cnkoKS52YWx1ZShsZW5ndGhDb250ZXh0KSk7CiAgICAgfSBlbHNl
IGlmIChzdmdFbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpjaXJjbGVUYWcpKSB7CiAgICAg
ICAgIFNWR0NpcmNsZUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdDaXJjbGVFbGVt
ZW50Kj4oc3ZnRWxlbWVudCk7Ci0gICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywgImN4Iiwg
ZWxlbWVudC0+Y3goKS52YWx1ZShlbGVtZW50KSk7Ci0gICAgICAgIHdyaXRlTmFtZVZhbHVlUGFp
cih0cywgImN5IiwgZWxlbWVudC0+Y3koKS52YWx1ZShlbGVtZW50KSk7Ci0gICAgICAgIHdyaXRl
TmFtZVZhbHVlUGFpcih0cywgInIiLCBlbGVtZW50LT5yKCkudmFsdWUoZWxlbWVudCkpOworICAg
ICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJjeCIsIGVsZW1lbnQtPmN4KCkudmFsdWUobGVu
Z3RoQ29udGV4dCkpOworICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJjeSIsIGVsZW1l
bnQtPmN5KCkudmFsdWUobGVuZ3RoQ29udGV4dCkpOworICAgICAgICB3cml0ZU5hbWVWYWx1ZVBh
aXIodHMsICJyIiwgZWxlbWVudC0+cigpLnZhbHVlKGxlbmd0aENvbnRleHQpKTsKICAgICB9IGVs
c2UgaWYgKHN2Z0VsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBvbHlnb25UYWcpIHx8IHN2
Z0VsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBvbHlsaW5lVGFnKSkgewogICAgICAgICBT
VkdQb2x5RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR1BvbHlFbGVtZW50Kj4oc3Zn
RWxlbWVudCk7CiAgICAgICAgIHdyaXRlTmFtZUFuZFF1b3RlZFZhbHVlKHRzLCAicG9pbnRzIiwg
ZWxlbWVudC0+cG9pbnRMaXN0KCkudmFsdWVBc1N0cmluZygpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1NoYWRvd1RyZWVFbGVtZW50cy5jcHAJ
KHJldmlzaW9uIDk5OTMxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdTaGFk
b3dUcmVlRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw4IEBAIHZvaWQg
U1ZHU2hhZG93VHJlZUNvbnRhaW5lckVsZW1lbnQ6OnNldEMKIAogRmxvYXRTaXplIFNWR1NoYWRv
d1RyZWVDb250YWluZXJFbGVtZW50Ojpjb250YWluZXJUcmFuc2xhdGlvbigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIEZsb2F0U2l6ZShtX3hPZmZzZXQudmFsdWUodGhpcyksIG1feU9mZnNldC52YWx1
ZSh0aGlzKSk7CisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHRoaXMpOworICAg
IHJldHVybiBGbG9hdFNpemUobV94T2Zmc2V0LnZhbHVlKGxlbmd0aENvbnRleHQpLCBtX3lPZmZz
ZXQudmFsdWUobGVuZ3RoQ29udGV4dCkpOwogfQogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IFNWR1No
YWRvd1RyZWVDb250YWluZXJFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0Fu
ZENoaWxkcmVuKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dENo
dW5rQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0Q2h1bmtCdWlsZGVyLmNwcAkocmV2aXNpb24gOTk5MzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRDaHVua0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgogI2lu
Y2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdJbmxpbmVUZXh0Qm94LmgiCisjaW5j
bHVkZSAiU1ZHTGVuZ3RoQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEy
Nyw3ICsxMjgsOCBAQCB2b2lkIFNWR1RleHRDaHVua0J1aWxkZXI6OmFkZFRleHRDaHVuayhWCiAg
ICAgLy8gSGFuZGxlICdsZW5ndGhBZGp1c3QnIHByb3BlcnR5LgogICAgIGZsb2F0IGRlc2lyZWRU
ZXh0TGVuZ3RoID0gMDsKICAgICBpZiAoU1ZHVGV4dENvbnRlbnRFbGVtZW50KiB0ZXh0Q29udGVu
dEVsZW1lbnQgPSBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmVsZW1lbnRGcm9tUmVuZGVyZXIodGV4
dFJlbmRlcmVyLT5wYXJlbnQoKSkpIHsKLSAgICAgICAgZGVzaXJlZFRleHRMZW5ndGggPSB0ZXh0
Q29udGVudEVsZW1lbnQtPnNwZWNpZmllZFRleHRMZW5ndGgoKS52YWx1ZSh0ZXh0Q29udGVudEVs
ZW1lbnQpOworICAgICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGV4dENvbnRl
bnRFbGVtZW50KTsKKyAgICAgICAgZGVzaXJlZFRleHRMZW5ndGggPSB0ZXh0Q29udGVudEVsZW1l
bnQtPnNwZWNpZmllZFRleHRMZW5ndGgoKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKIAogICAgICAg
ICBzd2l0Y2ggKHRleHRDb250ZW50RWxlbWVudC0+bGVuZ3RoQWRqdXN0KCkpIHsKICAgICAgICAg
Y2FzZSBTVkdMZW5ndGhBZGp1c3RVbmtub3duOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWls
ZGVyLmNwcAkocmV2aXNpb24gOTk5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDE1ICs2MCwxNiBAQCB2b2lkIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpCiAg
ICAgcHJvcGFnYXRlTGF5b3V0QXR0cmlidXRlcyh0ZXh0Um9vdCwgYWxsQXR0cmlidXRlcywgYXRD
aGFyYWN0ZXIsIGxhc3RDaGFyYWN0ZXIpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgZXh0cmFj
dEZsb2F0VmFsdWVzRnJvbVNWR0xlbmd0aExpc3QoU1ZHRWxlbWVudCogbGVuZ3RoQ29udGV4dCwg
Y29uc3QgU1ZHTGVuZ3RoTGlzdCYgbGlzdCwgVmVjdG9yPGZsb2F0PiYgZmxvYXRWYWx1ZXMsIHVu
c2lnbmVkIHRleHRDb250ZW50TGVuZ3RoKQorc3RhdGljIGlubGluZSB2b2lkIGV4dHJhY3RGbG9h
dFZhbHVlc0Zyb21TVkdMZW5ndGhMaXN0KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25z
dCBTVkdMZW5ndGhMaXN0JiBsaXN0LCBWZWN0b3I8ZmxvYXQ+JiBmbG9hdFZhbHVlcywgdW5zaWdu
ZWQgdGV4dENvbnRlbnRMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGxlbmd0aENvbnRleHQpOworICAg
IEFTU0VSVChjb250ZXh0RWxlbWVudCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSBsaXN0LnNp
emUoKTsKICAgICBpZiAobGVuZ3RoID4gdGV4dENvbnRlbnRMZW5ndGgpCiAgICAgICAgIGxlbmd0
aCA9IHRleHRDb250ZW50TGVuZ3RoOwogICAgIGZsb2F0VmFsdWVzLnJlc2VydmVDYXBhY2l0eShs
ZW5ndGgpOwogCisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KGNvbnRleHRFbGVt
ZW50KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAg
ICAgY29uc3QgU1ZHTGVuZ3RoJiBsZW5ndGggPSBsaXN0LmF0KGkpOwogICAgICAgICBmbG9hdFZh
bHVlcy5hcHBlbmQobGVuZ3RoLnZhbHVlKGxlbmd0aENvbnRleHQpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lLmNwcAko
cmV2aXNpb24gOTk5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRM
YXlvdXRFbmdpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiUmVuZGVyU1ZHVGV4dFBhdGguaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIlNWR0xlbmd0aENvbnRleHQuaCIKICNp
bmNsdWRlICJTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuaCIKICNpbmNsdWRlICJTVkdUZXh0
TGF5b3V0RW5naW5lU3BhY2luZy5oIgogCkBAIC0xNTUsNyArMTU2LDggQEAgYm9vbCBTVkdUZXh0
TGF5b3V0RW5naW5lOjpwYXJlbnREZWZpbmVzVAogICAgIFJlbmRlck9iamVjdCogY3VycmVudFBh
cmVudCA9IHBhcmVudDsKICAgICB3aGlsZSAoY3VycmVudFBhcmVudCkgewogICAgICAgICBpZiAo
U1ZHVGV4dENvbnRlbnRFbGVtZW50KiB0ZXh0Q29udGVudEVsZW1lbnQgPSBTVkdUZXh0Q29udGVu
dEVsZW1lbnQ6OmVsZW1lbnRGcm9tUmVuZGVyZXIoY3VycmVudFBhcmVudCkpIHsKLSAgICAgICAg
ICAgIGlmICh0ZXh0Q29udGVudEVsZW1lbnQtPmxlbmd0aEFkanVzdCgpID09IFNWR0xlbmd0aEFk
anVzdFNwYWNpbmcgJiYgdGV4dENvbnRlbnRFbGVtZW50LT5zcGVjaWZpZWRUZXh0TGVuZ3RoKCku
dmFsdWUodGV4dENvbnRlbnRFbGVtZW50KSA+IDApCisgICAgICAgICAgICBTVkdMZW5ndGhDb250
ZXh0IGxlbmd0aENvbnRleHQodGV4dENvbnRlbnRFbGVtZW50KTsKKyAgICAgICAgICAgIGlmICh0
ZXh0Q29udGVudEVsZW1lbnQtPmxlbmd0aEFkanVzdCgpID09IFNWR0xlbmd0aEFkanVzdFNwYWNp
bmcgJiYgdGV4dENvbnRlbnRFbGVtZW50LT5zcGVjaWZpZWRUZXh0TGVuZ3RoKCkudmFsdWUobGVu
Z3RoQ29udGV4dCkgPiAwKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAKQEAgLTIxMCw4ICsyMTIsOSBAQCB2b2lkIFNWR1RleHRMYXlvdXRFbmdpbmU6OmJlZ2luVGV4
dFBhdGhMCiAgICAgZmxvYXQgZGVzaXJlZFRleHRMZW5ndGggPSAwOwogCiAgICAgaWYgKFNWR1Rl
eHRDb250ZW50RWxlbWVudCogdGV4dENvbnRlbnRFbGVtZW50ID0gU1ZHVGV4dENvbnRlbnRFbGVt
ZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKHRleHRQYXRoKSkgeworICAgICAgICBTVkdMZW5ndGhD
b250ZXh0IGxlbmd0aENvbnRleHQodGV4dENvbnRlbnRFbGVtZW50KTsKICAgICAgICAgbGVuZ3Ro
QWRqdXN0ID0gdGV4dENvbnRlbnRFbGVtZW50LT5sZW5ndGhBZGp1c3QoKTsKLSAgICAgICAgZGVz
aXJlZFRleHRMZW5ndGggPSB0ZXh0Q29udGVudEVsZW1lbnQtPnNwZWNpZmllZFRleHRMZW5ndGgo
KS52YWx1ZSh0ZXh0Q29udGVudEVsZW1lbnQpOworICAgICAgICBkZXNpcmVkVGV4dExlbmd0aCA9
IHRleHRDb250ZW50RWxlbWVudC0+c3BlY2lmaWVkVGV4dExlbmd0aCgpLnZhbHVlKGxlbmd0aENv
bnRleHQpOwogICAgIH0KIAogICAgIGlmICghZGVzaXJlZFRleHRMZW5ndGgpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0
RW5naW5lQmFzZWxpbmUuY3BwCShyZXZpc2lvbiA5OTkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgorI2luY2x1ZGUgIlNWR0xlbmd0aENvbnRleHQuaCIKICNpbmNsdWRlICJTVkdS
ZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlNWR1RleHRNZXRyaWNzLmgiCiAjaW5jbHVkZSAiVW5p
Y29kZVJhbmdlLmgiCkBAIC0zNSwxMyArMzYsMTQgQEAgU1ZHVGV4dExheW91dEVuZ2luZUJhc2Vs
aW5lOjpTVkdUZXh0TGF5bwogewogfQogCi1mbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxp
bmU6OmNhbGN1bGF0ZUJhc2VsaW5lU2hpZnQoY29uc3QgU1ZHUmVuZGVyU3R5bGUqIHN0eWxlLCBT
VkdFbGVtZW50KiBsZW5ndGhDb250ZXh0KSBjb25zdAorZmxvYXQgU1ZHVGV4dExheW91dEVuZ2lu
ZUJhc2VsaW5lOjpjYWxjdWxhdGVCYXNlbGluZVNoaWZ0KGNvbnN0IFNWR1JlbmRlclN0eWxlKiBz
dHlsZSwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKHN0eWxl
LT5iYXNlbGluZVNoaWZ0KCkgPT0gQlNfTEVOR1RIKSB7CiAgICAgICAgIFNWR0xlbmd0aCBiYXNl
bGluZVNoaWZ0VmFsdWVMZW5ndGggPSBzdHlsZS0+YmFzZWxpbmVTaGlmdFZhbHVlKCk7CiAgICAg
ICAgIGlmIChiYXNlbGluZVNoaWZ0VmFsdWVMZW5ndGgudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBl
UGVyY2VudGFnZSkKICAgICAgICAgICAgIHJldHVybiBiYXNlbGluZVNoaWZ0VmFsdWVMZW5ndGgu
dmFsdWVBc1BlcmNlbnRhZ2UoKSAqIG1fZm9udC5waXhlbFNpemUoKTsKIAorICAgICAgICBTVkdM
ZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoY29udGV4dEVsZW1lbnQpOwogICAgICAgICByZXR1
cm4gYmFzZWxpbmVTaGlmdFZhbHVlTGVuZ3RoLnZhbHVlKGxlbmd0aENvbnRleHQpOwogICAgIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5l
U3BhY2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHAJKHJldmlzaW9uIDk5OTMxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJTVkdUZXh0TGF5b3V0RW5n
aW5lU3BhY2luZy5oIgogCiAjaW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIlNWR0xlbmd0aENv
bnRleHQuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdHlsZS5oIgogCiAjaWYgRU5BQkxFKFNWR19G
T05UUykKQEAgLTgyLDE0ICs4MywxNiBAQCBmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2lu
Zzo6Y2FsY3VsCiAjZW5kaWYKIH0KIAotZmxvYXQgU1ZHVGV4dExheW91dEVuZ2luZVNwYWNpbmc6
OmNhbGN1bGF0ZUNTU0tlcm5pbmdBbmRTcGFjaW5nKGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdHls
ZSwgU1ZHRWxlbWVudCogbGVuZ3RoQ29udGV4dCwgY29uc3QgVUNoYXIqIGN1cnJlbnRDaGFyYWN0
ZXIpCitmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZzo6Y2FsY3VsYXRlQ1NTS2Vybmlu
Z0FuZFNwYWNpbmcoY29uc3QgU1ZHUmVuZGVyU3R5bGUqIHN0eWxlLCBTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCwgY29uc3QgVUNoYXIqIGN1cnJlbnRDaGFyYWN0ZXIpCiB7CiAgICAgZmxvYXQg
a2VybmluZyA9IDA7CiAgICAgU1ZHTGVuZ3RoIGtlcm5pbmdMZW5ndGggPSBzdHlsZS0+a2Vybmlu
ZygpOwogICAgIGlmIChrZXJuaW5nTGVuZ3RoLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNl
bnRhZ2UpCiAgICAgICAgIGtlcm5pbmcgPSBrZXJuaW5nTGVuZ3RoLnZhbHVlQXNQZXJjZW50YWdl
KCkgKiBtX2ZvbnQucGl4ZWxTaXplKCk7Ci0gICAgZWxzZQorICAgIGVsc2UgeworICAgICAgICBT
VkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoY29udGV4dEVsZW1lbnQpOwogICAgICAgICBr
ZXJuaW5nID0ga2VybmluZ0xlbmd0aC52YWx1ZShsZW5ndGhDb250ZXh0KTsKKyAgICB9CiAKICAg
ICBjb25zdCBVQ2hhciogbGFzdENoYXJhY3RlciA9IG1fbGFzdENoYXJhY3RlcjsKICAgICBtX2xh
c3RDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5oCShyZXZpc2lvbiA5OTkzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDYgQEAKICNkZWZpbmUgU1ZHRWxlbWVudF9oCiAK
ICNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIlNWR0xlbmd0aENvbnRleHQuaCIKICNpbmNsdWRl
ICJTVkdMb2NhdGFibGUuaCIKICNpbmNsdWRlICJTVkdQYXJzaW5nRXJyb3IuaCIKICNpbmNsdWRl
ICJTVkdQcm9wZXJ0eUluZm8uaCIKQEAgLTYzLDEwICs2Miw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNHcmFkaWVudFN0b3AoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc1RleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAg
IC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IGNvbnN0cnVjdCB0byBhaWQgcmVkdWNpbmcg
dGhlIGltcGFjdCBvZiBpbnRyb2R1Y2luZyBTVkdMZW5ndGhDb250ZXh0LgotICAgIC8vIEl0IHdp
bGwgYmUgcmVtb3ZlZCBvbmNlIGFsbCBjb2RlIHRoYXQgdXNlcyB4KCkudmFsdWUodGhpcykgaXMg
Z29uZS4KLSAgICBvcGVyYXRvciBTVkdMZW5ndGhDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gU1ZH
TGVuZ3RoQ29udGV4dCh0aGlzKTsgfQotCiAgICAgLy8gRm9yIFNWR1Rlc3RzCiAgICAgdmlydHVh
bCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAJKHJldmlzaW9uIDk5OTMxKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEs
OCArMzExLDkgQEAgYm9vbCBTVkdMZW5ndGhDb250ZXh0OjpkZXRlcm1pbmVWaWV3cG9ydAogICAg
ICAgICBjb25zdCBTVkdTVkdFbGVtZW50KiBzdmcgPSBzdGF0aWNfY2FzdDxjb25zdCBTVkdTVkdF
bGVtZW50Kj4odmlld3BvcnRFbGVtZW50KTsKICAgICAgICAgRmxvYXRSZWN0IHZpZXdCb3ggPSBz
dmctPmN1cnJlbnRWaWV3Qm94UmVjdCgpOwogICAgICAgICBpZiAodmlld0JveC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIHdpZHRoID0gc3ZnLT53aWR0aCgpLnZhbHVlKHN2Zyk7Ci0gICAgICAg
ICAgICBoZWlnaHQgPSBzdmctPmhlaWdodCgpLnZhbHVlKHN2Zyk7CisgICAgICAgICAgICBTVkdM
ZW5ndGhDb250ZXh0IHZpZXdwb3J0Q29udGV4dChzdmcpOworICAgICAgICAgICAgd2lkdGggPSBz
dmctPndpZHRoKCkudmFsdWUodmlld3BvcnRDb250ZXh0KTsKKyAgICAgICAgICAgIGhlaWdodCA9
IHN2Zy0+aGVpZ2h0KCkudmFsdWUodmlld3BvcnRDb250ZXh0KTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIHdpZHRoID0gdmlld0JveC53aWR0aCgpOwogICAgICAgICAgICAgaGVpZ2h0
ID0gdmlld0JveC5oZWlnaHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhD
b250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRl
eHQuaAkocmV2aXNpb24gOTk5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29u
dGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIGVudW0gU1ZHTGVuZ3RoTW9k
ZSB7CiAKIGNsYXNzIFNWR0xlbmd0aENvbnRleHQgewogcHVibGljOgotICAgIFNWR0xlbmd0aENv
bnRleHQoY29uc3QgU1ZHRWxlbWVudCopOworICAgIGV4cGxpY2l0IFNWR0xlbmd0aENvbnRleHQo
Y29uc3QgU1ZHRWxlbWVudCopOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0
aWMgRmxvYXRSZWN0IHJlc29sdmVSZWN0YW5nbGUoY29uc3QgVCogY29udGV4dCwgU1ZHVW5pdFR5
cGVzOjpTVkdVbml0VHlwZSB0eXBlLCBjb25zdCBGbG9hdFJlY3QmIHZpZXdwb3J0KQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gOTk5MzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCwx
MSArMTQ0LDEzIEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0Q29udGVudFN0eWxlVHlwZSgKIAog
RmxvYXRSZWN0IFNWR1NWR0VsZW1lbnQ6OnZpZXdwb3J0KCkgY29uc3QKIHsKKyAgICAvLyBGSVhN
RTogVGhpcyBtZXRob2QgZG9lc24ndCBmb2xsb3cgdGhlIHNwZWMgYW5kIGlzIGJhc2ljYWxseSB1
bnRlc3RlZC4gUGFyZW50IGRvY3VtZW50cyBhcmUgbm90IGNvbnNpZGVyZWQgaGVyZS4KKyAgICBT
VkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGhpcyk7CiAgICAgRmxvYXRSZWN0IHZpZXdS
ZWN0YW5nbGU7CiAgICAgaWYgKCFpc091dGVybW9zdFNWRygpKQotICAgICAgICB2aWV3UmVjdGFu
Z2xlLnNldExvY2F0aW9uKEZsb2F0UG9pbnQoeCgpLnZhbHVlKHRoaXMpLCB5KCkudmFsdWUodGhp
cykpKTsKKyAgICAgICAgdmlld1JlY3RhbmdsZS5zZXRMb2NhdGlvbihGbG9hdFBvaW50KHgoKS52
YWx1ZShsZW5ndGhDb250ZXh0KSwgeSgpLnZhbHVlKGxlbmd0aENvbnRleHQpKSk7CiAKLSAgICB2
aWV3UmVjdGFuZ2xlLnNldFNpemUoRmxvYXRTaXplKHdpZHRoKCkudmFsdWUodGhpcyksIGhlaWdo
dCgpLnZhbHVlKHRoaXMpKSk7ICAgIAorICAgIHZpZXdSZWN0YW5nbGUuc2V0U2l6ZShGbG9hdFNp
emUod2lkdGgoKS52YWx1ZShsZW5ndGhDb250ZXh0KSwgaGVpZ2h0KCkudmFsdWUobGVuZ3RoQ29u
dGV4dCkpKTsgICAgCiAgICAgcmV0dXJuIHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0odmlld1JlY3Rh
bmdsZS53aWR0aCgpLCB2aWV3UmVjdGFuZ2xlLmhlaWdodCgpKS5tYXBSZWN0KHZpZXdSZWN0YW5n
bGUpOwogfQogCkBAIC00NTIsMTMgKzQ1NCwxNiBAQCBTVkdUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVu
dDo6Y3JlYXRlU1ZHVHJhCiAKIEFmZmluZVRyYW5zZm9ybSBTVkdTVkdFbGVtZW50Ojpsb2NhbENv
b3JkaW5hdGVTcGFjZVRyYW5zZm9ybShTVkdMb2NhdGFibGU6OkNUTVNjb3BlIG1vZGUpIGNvbnN0
CiB7CisgICAgLy8gVGhpcyBtZXRob2QgcmVzb2x2ZXMgbGVuZ3RoIG1hbnVhbGx5LCB3L28gaW52
b2x2aW5nIHRoZSByZW5kZXIgdHJlZS4gVGhpcyBpcyBkZXNpcmVkLCBhcyBnZXRDVE0oKS9nZXRT
Y3JlZW5DVE0oKS8uLiBoYXZlIHRvIHdvcmsgd2l0aG91dCBhIHJlbmRlcmVyLgorICAgIFNWR0xl
bmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCh0aGlzKTsKKwogICAgIEFmZmluZVRyYW5zZm9ybSB2
aWV3Qm94VHJhbnNmb3JtOwogICAgIGlmIChhdHRyaWJ1dGVzKCktPmdldEF0dHJpYnV0ZUl0ZW0o
U1ZHTmFtZXM6OnZpZXdCb3hBdHRyKSkKLSAgICAgICAgdmlld0JveFRyYW5zZm9ybSA9IHZpZXdC
b3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS52YWx1ZSh0aGlzKSwgaGVpZ2h0KCkudmFsdWUodGhp
cykpOworICAgICAgICB2aWV3Qm94VHJhbnNmb3JtID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3
aWR0aCgpLnZhbHVlKGxlbmd0aENvbnRleHQpLCBoZWlnaHQoKS52YWx1ZShsZW5ndGhDb250ZXh0
KSk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgIGlmICghaXNPdXRlcm1v
c3RTVkcoKSkKLSAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSh4KCkudmFsdWUodGhpcyksIHko
KS52YWx1ZSh0aGlzKSk7CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoeCgpLnZhbHVlKGxl
bmd0aENvbnRleHQpLCB5KCkudmFsdWUobGVuZ3RoQ29udGV4dCkpOwogICAgIGVsc2UgaWYgKG1v
ZGUgPT0gU1ZHTG9jYXRhYmxlOjpTY3JlZW5TY29wZSkgewogICAgICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIFRyYW5z
bGF0ZSBpbiBvdXIgQ1NTIHBhcmVudCBjb29yZGluYXRlIHNwYWNlCkBAIC01NTMsNiArNTU4LDkg
QEAgYm9vbCBTVkdTVkdFbGVtZW50Ojppc091dGVybW9zdFNWRygpIGNvbgogCiBGbG9hdFJlY3Qg
U1ZHU1ZHRWxlbWVudDo6Y3VycmVudFZpZXdCb3hSZWN0KENhbGN1bGF0ZVZpZXdCb3hNb2RlIG1v
ZGUpIGNvbnN0CiB7CisgICAgLy8gVGhpcyBtZXRob2QgcmVzb2x2ZXMgbGVuZ3RoIG1hbnVhbGx5
LCB3L28gaW52b2x2aW5nIHRoZSByZW5kZXIgdHJlZS4gVGhpcyBpcyBkZXNpcmVkLCBhcyBnZXRD
VE0oKS9nZXRTY3JlZW5DVE0oKS8uLiBoYXZlIHRvIHdvcmsgd2l0aG91dCBhIHJlbmRlcmVyLgor
ICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCh0aGlzKTsKKwogICAgIC8vIEZJWE1F
OiBUaGUgaW50ZXJhY3Rpb24gb2YgJ2N1cnJlbnRWaWV3JyBhbmQgZW1iZWRkaW5nIFNWR3MgaW4g
b3RoZXIgZG9jdW1lbnRzLCBpcyB1bnRlc3RlZCBhbmQgdW5zcGVjaWZpZWQuCiAgICAgaWYgKHVz
ZUN1cnJlbnRWaWV3KCkpIHsKICAgICAgICAgaWYgKFNWR1ZpZXdTcGVjKiB2aWV3ID0gY3VycmVu
dFZpZXcoKSkgLy8gd2hhdCBpZiB3ZSBzaG91bGQgdXNlIGl0IGJ1dCBpdCBpcyBub3Qgc2V0PwpA
QCAtNTY4LDcgKzU3Niw3IEBAIEZsb2F0UmVjdCBTVkdTVkdFbGVtZW50OjpjdXJyZW50Vmlld0Jv
eFIKICAgICAgICAgLy8gSWYgbm8gdmlld0JveCBpcyBzcGVjaWZpZWQgYnV0IG5vbi1yZWxhdGl2
ZSB3aWR0aC9oZWlnaHQgdmFsdWVzLCB0aGVuIHdlCiAgICAgICAgIC8vIHNob3VsZCBhbHdheXMg
c3ludGhlc2l6ZSBhIHZpZXdCb3ggaWYgd2UncmUgZW1iZWRkZWQgdGhyb3VnaCBhIFNWR0ltYWdl
LgogICAgICAgICBpZiAoaGFzRml4ZWRTaXplICYmIGlzRW1iZWRkZWRUaHJvdWdoU1ZHSW1hZ2Up
Ci0gICAgICAgICAgICByZXR1cm4gRmxvYXRSZWN0KDAsIDAsIHdpZHRoKCkudmFsdWUodGhpcyks
IGhlaWdodCgpLnZhbHVlKHRoaXMpKTsKKyAgICAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoMCwg
MCwgd2lkdGgoKS52YWx1ZShsZW5ndGhDb250ZXh0KSwgaGVpZ2h0KCkudmFsdWUobGVuZ3RoQ29u
dGV4dCkpOwogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiAgICAgfQogCkBAIC01NzYsNyAr
NTg0LDcgQEAgRmxvYXRSZWN0IFNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRWaWV3Qm94UgogICAgIC8v
IHVzZXMgdGhlIHdpZHRoL2hlaWdodCB2YWx1ZXMgdG8gZmlndXJlIG91dCB0aGUgaW50cmluc2lj
IHNpemUgd2hlbiBlbWJlZGRpbmcgdXMsIHdoZXJlYXMgdGhlCiAgICAgLy8gZW1iZWRkZWQgZG9j
dW1lbnQgc2VlcyBzcGVjaWZpZWQgdmlld0JveCBvbmx5LgogICAgIGlmIChoYXNGaXhlZFNpemUg
JiYgbW9kZSA9PSBDYWxjdWxhdGVWaWV3Qm94SW5Ib3N0RG9jdW1lbnQpCi0gICAgICAgIHJldHVy
biBGbG9hdFJlY3QoMCwgMCwgd2lkdGgoKS52YWx1ZSh0aGlzKSwgaGVpZ2h0KCkudmFsdWUodGhp
cykpOworICAgICAgICByZXR1cm4gRmxvYXRSZWN0KDAsIDAsIHdpZHRoKCkudmFsdWUobGVuZ3Ro
Q29udGV4dCksIGhlaWdodCgpLnZhbHVlKGxlbmd0aENvbnRleHQpKTsKIAogICAgIHJldHVybiB1
c2VWaWV3Qm94OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2
aXNpb24gOTk5MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJTVkdFbGVtZW50UmFyZURh
dGEuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2VMaXN0LmgiCiAjaW5jbHVkZSAiU1ZH
R0VsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdMZW5ndGhDb250ZXh0LmgiCiAjaW5jbHVkZSAiU1ZH
TmFtZXMuaCIKICNpbmNsdWRlICJTVkdTTUlMRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1NWR0Vs
ZW1lbnQuaCIKQEAgLTY3OSw3ICs2ODAsOSBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRvQ2xpcFBh
dGgoUGF0aCYgcGF0CiAgICAgICAgICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25z
KCktPnJlcG9ydEVycm9yKCJOb3QgYWxsb3dlZCB0byB1c2UgaW5kaXJlY3QgcmVmZXJlbmNlIGlu
IDxjbGlwLXBhdGg+Iik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqPihuKS0+dG9DbGlwUGF0aChwYXRoKTsKLSAg
ICAgICAgICAgIHBhdGgudHJhbnNsYXRlKEZsb2F0U2l6ZSh4KCkudmFsdWUodGhpcyksIHkoKS52
YWx1ZSh0aGlzKSkpOworICAgICAgICAgICAgLy8gRklYTUU6IEF2b2lkIG1hbnVhbCByZXNvbHV0
aW9uIG9mIHgveSBoZXJlLiBJdHMgcG90ZW50aWFsbHkgaGFybWZ1bC4KKyAgICAgICAgICAgIFNW
R0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCh0aGlzKTsKKyAgICAgICAgICAgIHBhdGgudHJh
bnNsYXRlKEZsb2F0U2l6ZSh4KCkudmFsdWUobGVuZ3RoQ29udGV4dCksIHkoKS52YWx1ZShsZW5n
dGhDb250ZXh0KSkpOwogICAgICAgICAgICAgcGF0aC50cmFuc2Zvcm0oYW5pbWF0ZWRMb2NhbFRy
YW5zZm9ybSgpKTsKICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>