<?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>190745</bug_id>
          
          <creation_ts>2018-10-18 22:09:55 -0700</creation_ts>
          <short_desc>[LFC][IFC] Add (right, center)text-align support.</short_desc>
          <delta_ts>2018-10-22 09:43:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1470803</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-10-18 22:09:55 -0700</bug_when>
    <thetext>ssia.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470805</commentid>
    <comment_count>1</comment_count>
      <attachid>352769</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-10-18 22:14:25 -0700</bug_when>
    <thetext>Created attachment 352769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470915</commentid>
    <comment_count>2</comment_count>
      <attachid>352799</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-10-19 10:32:48 -0700</bug_when>
    <thetext>Created attachment 352799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471215</commentid>
    <comment_count>3</comment_count>
      <attachid>352799</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-22 08:07:37 -0700</bug_when>
    <thetext>Comment on attachment 352799
Patch

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

&gt; Source/WebCore/layout/inlineformatting/Line.cpp:147
&gt; +    auto alignRuns = [&amp;]() {
&gt; +

Extra empty line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471228</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-10-22 09:02:54 -0700</bug_when>
    <thetext>Committed r237323: &lt;https://trac.webkit.org/changeset/237323&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471244</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-22 09:43:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/45455545&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352769</attachid>
            <date>2018-10-18 22:14:25 -0700</date>
            <delta_ts>2018-10-19 10:32:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>24466</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MzBmNmVmODY5Ny4uOTJjMGM0YjkwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxOC0xMC0xOCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIFtMRkNdW0lGQ10gQWRkIChyaWdodCwgY2VudGVyKXRleHQtYWxpZ24gc3VwcG9y
dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc0
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkanVz
dCB0aGUgbG9naWNhbCBsZWZ0IG9mIGVhY2ggcnVuIHdoaWxlIGNsb3NpbmcgdGhlIGxpbmUuCisK
KyAgICAgICAgKiBsYXlvdXQvVmVyaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdTaW1wbGVMaW5lSW5mb3JtYXRpb25JZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZv
cm1hdGlvbklmTmVlZGVkKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OnRyaW1M
ZWFkaW5nUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmxheW91dElubGluZUNvbnRlbnQgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjpoYXNDb250ZW50IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okxp
bmU6OmNvbnRlbnRMb2dpY2FsTGVmdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVMaW5lQnJlYWtlcjo6bmV4dFJ1bik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUxpbmVCcmVha2VyOjpzcGxpdFJ1bik6CisgICAgICAgICogbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuaDoKKyAgICAgICAgKiBsYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVSdW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lUnVuOjpzZXRMb2dpY2FsTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZVJ1bjo6VGV4dENvbnRleHQ6OnN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lUnVuOjpjcmVhdGVSdW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVSdW46OmNyZWF0ZVRleHRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVSdW46OklubGluZVJ1bik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVJ1bjo6
VGV4dENvbnRleHQ6OlRleHRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lUnVuOjpUZXh0Q29udGV4dDo6cG9zaXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6TGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjppbml0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6YWRqdXN0ZWRMaW5lTG9naWNhbExlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6Y29udGVudExv
Z2ljYWxSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdD
b250ZXh0OjpMaW5lOjphcHBlbmRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmU6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmU6OnNldENvbnN0cmFpbnRzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dElubGluZVJ1bnMpOgorCiAyMDE4
LTEwLTE4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11b
SUZDXSBCbG9jayBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdHMgYXZvaWQgZmxvYXRzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAppbmRleCAxODBkMjQ4NDRhMi4uZTBiY2U0ZmE3
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCkBAIC03MywxMSArNzMs
MTEgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdTaW1wbGVMaW5lSW5mb3JtYXRpb25J
Zk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGMKIAogICAgICAgICBhdXRvIG1hdGNoaW5nUnVu
cyA9IGFyZUVzc2VudGlhbGx5RXF1YWwoc2ltcGxlUnVuLmxvZ2ljYWxMZWZ0LCBpbmxpbmVSdW4u
bG9naWNhbExlZnQoKSkgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChzaW1wbGVSdW4ubG9naWNhbFJp
Z2h0LCBpbmxpbmVSdW4ubG9naWNhbFJpZ2h0KCkpOwogICAgICAgICBpZiAobWF0Y2hpbmdSdW5z
KQotICAgICAgICAgICAgbWF0Y2hpbmdSdW5zID0gKHNpbXBsZVJ1bi5zdGFydCA9PSBpbmxpbmVS
dW4udGV4dENvbnRleHQoKS0+cG9zaXRpb24oKSAmJiBzaW1wbGVSdW4uZW5kID09IChpbmxpbmVS
dW4udGV4dENvbnRleHQoKS0+cG9zaXRpb24oKSArIGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5s
ZW5ndGgoKSkpOworICAgICAgICAgICAgbWF0Y2hpbmdSdW5zID0gKHNpbXBsZVJ1bi5zdGFydCA9
PSBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+c3RhcnQoKSAmJiBzaW1wbGVSdW4uZW5kID09IChp
bmxpbmVSdW4udGV4dENvbnRleHQoKS0+c3RhcnQoKSArIGlubGluZVJ1bi50ZXh0Q29udGV4dCgp
LT5sZW5ndGgoKSkpOwogICAgICAgICBpZiAobWF0Y2hpbmdSdW5zKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgc3RyZWFtIDw8ICJNaXNtYXRjaGluZzogc2ltcGxlIHJ1bigiIDw8
IHNpbXBsZVJ1bi5zdGFydCA8PCAiLCAiIDw8IHNpbXBsZVJ1bi5lbmQgPDwgIikgKCIgPDwgc2lt
cGxlUnVuLmxvZ2ljYWxMZWZ0IDw8ICIsICIgPDwgc2ltcGxlUnVuLmxvZ2ljYWxSaWdodCA8PCAi
KSBsYXlvdXQgcnVuKCIgPDwgaW5saW5lUnVuLnRleHRDb250ZXh0KCktPnBvc2l0aW9uKCkgPDwg
IiwgIiA8PCBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+cG9zaXRpb24oKSArIGlubGluZVJ1bi50
ZXh0Q29udGV4dCgpLT5sZW5ndGgoKSA8PCAiKSAoIiA8PCBpbmxpbmVSdW4ubG9naWNhbExlZnQo
KSA8PCAiLCAiIDw8IGlubGluZVJ1bi5sb2dpY2FsUmlnaHQoKSA8PCAiKSI7CisgICAgICAgIHN0
cmVhbSA8PCAiTWlzbWF0Y2hpbmc6IHNpbXBsZSBydW4oIiA8PCBzaW1wbGVSdW4uc3RhcnQgPDwg
IiwgIiA8PCBzaW1wbGVSdW4uZW5kIDw8ICIpICgiIDw8IHNpbXBsZVJ1bi5sb2dpY2FsTGVmdCA8
PCAiLCAiIDw8IHNpbXBsZVJ1bi5sb2dpY2FsUmlnaHQgPDwgIikgbGF5b3V0IHJ1bigiIDw8IGlu
bGluZVJ1bi50ZXh0Q29udGV4dCgpLT5zdGFydCgpIDw8ICIsICIgPDwgaW5saW5lUnVuLnRleHRD
b250ZXh0KCktPnN0YXJ0KCkgKyBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+bGVuZ3RoKCkgPDwg
IikgKCIgPDwgaW5saW5lUnVuLmxvZ2ljYWxMZWZ0KCkgPDwgIiwgIiA8PCBpbmxpbmVSdW4ubG9n
aWNhbFJpZ2h0KCkgPDwgIikiOwogICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsKICAgICAgICAg
bWlzbWF0Y2hlZCA9IHRydWU7CiAgICAgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBib29s
IG91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJl
YW0mIHN0cmVhbSwKICAgICAgICAgICAgIGF1dG8gbWF0Y2hpbmdSdW5zID0gYXJlRXNzZW50aWFs
bHlFcXVhbChsaW5lQm94LT5sb2dpY2FsTGVmdCgpLCBpbmxpbmVSdW4ubG9naWNhbExlZnQoKSkg
JiYgYXJlRXNzZW50aWFsbHlFcXVhbChsaW5lQm94LT5sb2dpY2FsUmlnaHQoKSwgaW5saW5lUnVu
LmxvZ2ljYWxSaWdodCgpKTsKICAgICAgICAgICAgIGlmIChtYXRjaGluZ1J1bnMgJiYgaW5saW5l
VGV4dEJveCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChpbmxpbmVSdW4udGV4dENvbnRleHQo
KSk7Ci0gICAgICAgICAgICAgICAgbWF0Y2hpbmdSdW5zID0gaW5saW5lVGV4dEJveC0+c3RhcnQo
KSA9PSBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+cG9zaXRpb24oKSAmJiBpbmxpbmVUZXh0Qm94
LT5lbmQoKSArIDEgPT0gKGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5wb3NpdGlvbigpICsgaW5s
aW5lUnVuLnRleHRDb250ZXh0KCktPmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBtYXRjaGlu
Z1J1bnMgPSBpbmxpbmVUZXh0Qm94LT5zdGFydCgpID09IGlubGluZVJ1bi50ZXh0Q29udGV4dCgp
LT5zdGFydCgpICYmIGlubGluZVRleHRCb3gtPmVuZCgpICsgMSA9PSAoaW5saW5lUnVuLnRleHRD
b250ZXh0KCktPnN0YXJ0KCkgKyBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+bGVuZ3RoKCkpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIW1hdGNoaW5nUnVucykgewpAQCAtMTE5
LDcgKzExOSw3IEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZv
cm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwKIAogICAgICAgICAgICAgICAgIHN0
cmVhbSA8PCAibGF5b3V0IHJ1biAiOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVSdW4udGV4
dENvbnRleHQoKSkKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIoIiA8PCBpbmxpbmVS
dW4udGV4dENvbnRleHQoKS0+cG9zaXRpb24oKSA8PCAiLCAiIDw8IGlubGluZVJ1bi50ZXh0Q29u
dGV4dCgpLT5wb3NpdGlvbigpICsgaW5saW5lUnVuLnRleHRDb250ZXh0KCktPmxlbmd0aCgpIDw8
ICIpICI7CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiKCIgPDwgaW5saW5lUnVuLnRl
eHRDb250ZXh0KCktPnN0YXJ0KCkgPDwgIiwgIiA8PCBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+
c3RhcnQoKSArIGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5sZW5ndGgoKSA8PCAiKSAiOwogICAg
ICAgICAgICAgICAgIHN0cmVhbSA8PCAiKCIgPDwgaW5saW5lUnVuLmxvZ2ljYWxMZWZ0KCkgPDwg
IiwgIiA8PCBpbmxpbmVSdW4ubG9naWNhbFJpZ2h0KCkgPDwgIikiOwogICAgICAgICAgICAgICAg
IHN0cmVhbS5uZXh0TGluZSgpOwogICAgICAgICAgICAgICAgIG1pc21hdGNoZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGVkN2U1YmQxN2JlLi44MTQz
NmQ5OGNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtOTUsMTEg
Kzk1LDEwIEBAIHN0YXRpYyBib29sIHRyaW1MZWFkaW5nUnVuKGNvbnN0IElubGluZUxpbmVCcmVh
a2VyOjpSdW4mIHJ1bikKIHsKICAgICBBU1NFUlQocnVuLnBvc2l0aW9uID09IElubGluZUxpbmVC
cmVha2VyOjpSdW46OlBvc2l0aW9uOjpMaW5lQmVnaW4pOwogCi0gICAgYXV0byYgaW5saW5lUnVu
ID0gcnVuLmlubGluZVJ1bjsKLSAgICBpZiAoIWlubGluZVJ1bi5pc1doaXRlc3BhY2UoKSkKKyAg
ICBpZiAoIXJ1bi5jb250ZW50LmlzV2hpdGVzcGFjZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICByZXR1cm4gaW5saW5lUnVuLnN0eWxlKCkuY29sbGFwc2VXaGl0ZVNwYWNlKCk7Cisg
ICAgcmV0dXJuIHJ1bi5jb250ZW50LnN0eWxlKCkuY29sbGFwc2VXaGl0ZVNwYWNlKCk7CiB9CiAK
IHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQoY29uc3Qg
TGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgSW5saW5lRm9ybWF0dGluZ1N0YXRlJiBpbmxp
bmVGb3JtYXR0aW5nU3RhdGUsIGNvbnN0IElubGluZVJ1blByb3ZpZGVyJiBpbmxpbmVSdW5Qcm92
aWRlcikgY29uc3QKQEAgLTExMSwxMSArMTEwLDExIEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmxheW91dElubGluZUNvbnRlbnQoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29u
CiAgICAgYXV0byBhdmFpbGFibGVXaWR0aCA9IGZvcm1hdHRpbmdSb290RGlzcGxheUJveC5jb250
ZW50Qm94V2lkdGgoKTsKICAgICBhdXRvIHByZXZpb3VzUnVuUG9zaXRpb25Jc0xpbmVFbmQgPSBm
YWxzZTsKIAotICAgIExpbmUgbGluZShpbmxpbmVGb3JtYXR0aW5nU3RhdGUpOwotICAgIGxpbmUu
c2V0Q29uc3RyYWludHMobGluZUxvZ2ljYWxMZWZ0LCBhdmFpbGFibGVXaWR0aCk7CisgICAgTGlu
ZSBsaW5lKGlubGluZUZvcm1hdHRpbmdTdGF0ZSwgcm9vdCgpKTsKKyAgICBsaW5lLmluaXQobGlu
ZUxvZ2ljYWxMZWZ0LCBhdmFpbGFibGVXaWR0aCk7CiAKICAgICBJbmxpbmVMaW5lQnJlYWtlciBs
aW5lQnJlYWtlcihsYXlvdXRDb250ZXh0LCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUuaW5saW5lQ29u
dGVudCgpLCBpbmxpbmVSdW5Qcm92aWRlci5ydW5zKCkpOwotICAgIHdoaWxlIChhdXRvIHJ1biA9
IGxpbmVCcmVha2VyLm5leHRSdW4obGluZS5jb250ZW50TG9naWNhbExlZnQoKSwgbGluZS5hdmFp
bGFibGVXaWR0aCgpLCAhbGluZS5oYXNDb250ZW50KCkpKSB7CisgICAgd2hpbGUgKGF1dG8gcnVu
ID0gbGluZUJyZWFrZXIubmV4dFJ1bihsaW5lLmNvbnRlbnRMb2dpY2FsUmlnaHQoKSwgbGluZS5h
dmFpbGFibGVXaWR0aCgpLCAhbGluZS5oYXNDb250ZW50KCkpKSB7CiAKICAgICAgICAgaWYgKHJ1
bi0+cG9zaXRpb24gPT0gSW5saW5lTGluZUJyZWFrZXI6OlJ1bjo6UG9zaXRpb246OkxpbmVCZWdp
bikgewogICAgICAgICAgICAgLy8gRmlyc3QgcnVuIG9uIGxpbmUuCkBAIC0xMjMsNyArMTIyLDcg
QEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5saW5lQ29udGVudChjb25z
dCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb24KICAgICAgICAgICAgIC8vIFByZXZpb3VzIHJ1biBl
bmRlZCB1cCBiZWluZyBhdCB0aGUgbGluZSBlbmQuIEFkanVzdCB0aGUgbGluZSBhY2NvcmRpbmds
eS4KICAgICAgICAgICAgIGlmICghcHJldmlvdXNSdW5Qb3NpdGlvbklzTGluZUVuZCkgewogICAg
ICAgICAgICAgICAgIGxpbmUuY2xvc2UoKTsKLSAgICAgICAgICAgICAgICBsaW5lLnNldENvbnN0
cmFpbnRzKGxpbmVMb2dpY2FsTGVmdCwgYXZhaWxhYmxlV2lkdGgpOworICAgICAgICAgICAgICAg
IGxpbmUuaW5pdChsaW5lTG9naWNhbExlZnQsIGF2YWlsYWJsZVdpZHRoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIC8vIFNraXAgbGVhZGluZyB3aGl0ZXNwYWNlLgogICAgICAgICAgICAg
aWYgKCF0cmltTGVhZGluZ1J1bigqcnVuKSkKQEAgLTEzNyw3ICsxMzYsNyBAQCB2b2lkIElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExheW91dENvbnRl
eHQmIGxheW91dENvbgogICAgICAgICAgICAgbGluZS5hcHBlbmRDb250ZW50KCpydW4pOwogICAg
ICAgICAgICAgLy8gTW92ZSBvdmVyIHRvIHRoZSBuZXh0IGxpbmUuCiAgICAgICAgICAgICBsaW5l
LmNsb3NlKCk7Ci0gICAgICAgICAgICBsaW5lLnNldENvbnN0cmFpbnRzKGxpbmVMb2dpY2FsTGVm
dCwgYXZhaWxhYmxlV2lkdGgpOworICAgICAgICAgICAgbGluZS5pbml0KGxpbmVMb2dpY2FsTGVm
dCwgYXZhaWxhYmxlV2lkdGgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggMTM4NGMxZDRkYTQuLjJkOWZjZjQ5
YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTQ5LDEzICs0OSwxNCBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGNsYXNzIExpbmUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgTGluZShJbmxpbmVGb3JtYXR0aW5nU3RhdGUmKTsKKyAgICAgICAgTGluZShJbmxpbmVGb3Jt
YXR0aW5nU3RhdGUmLCBjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KTsKIAotICAgICAgICB2b2lk
IHNldENvbnN0cmFpbnRzKExheW91dFVuaXQgbGluZUxvZ2ljYWxMZWZ0LCBMYXlvdXRVbml0IGF2
YWlsYWJsZVdpZHRoKTsKKyAgICAgICAgdm9pZCBpbml0KExheW91dFVuaXQgbGluZUxvZ2ljYWxM
ZWZ0LCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKTsKICAgICAgICAgdm9pZCBhcHBlbmRDb250
ZW50KGNvbnN0IElubGluZUxpbmVCcmVha2VyOjpSdW4mKTsKICAgICAgICAgdm9pZCBjbG9zZSgp
OwotICAgICAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiAhbV9pc0VtcHR5OyB9
Ci0gICAgICAgIExheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50TG9naWNhbExlZnQ7IH0KKworICAgICAgICBib29sIGhhc0NvbnRlbnQoKSBjb25z
dCB7IHJldHVybiBtX2ZpcnN0UnVuSW5kZXguaGFzX3ZhbHVlKCk7IH0KKyAgICAgICAgTGF5b3V0
VW5pdCBjb250ZW50TG9naWNhbFJpZ2h0KCk7CiAgICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxl
V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2F2YWlsYWJsZVdpZHRoOyB9CiAKICAgICBwcml2YXRl
OgpAQCAtNjQsMTEgKzY1LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1bnNpZ25lZCBsZW5n
dGg7CiAgICAgICAgIH07CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VHJhaWxpbmdUcmltbWFibGVD
b250ZW50PiBtX3RyYWlsaW5nVHJpbW1hYmxlQ29udGVudDsKLSAgICAgICAgSW5saW5lRm9ybWF0
dGluZ1N0YXRlJiBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZTsKLSAgICAgICAgTGF5b3V0VW5pdCBt
X2NvbnRlbnRMb2dpY2FsTGVmdDsKLSAgICAgICAgTGF5b3V0VW5pdCBtX2F2YWlsYWJsZVdpZHRo
OwotICAgICAgICBib29sIG1faXNFbXB0eSB7IHRydWUgfTsKICAgICAgICAgYm9vbCBtX2xhc3RS
dW5Jc05vdENvbGxhcHNlZFRleHQgeyB0cnVlIH07CisKKyAgICAgICAgSW5saW5lRm9ybWF0dGlu
Z1N0YXRlJiBtX2Zvcm1hdHRpbmdTdGF0ZTsKKyAgICAgICAgY29uc3QgQm94JiBtX2Zvcm1hdHRp
bmdSb290OworCisgICAgICAgIExheW91dFVuaXQgbV9saW5lTG9naWNhbExlZnQ7CisgICAgICAg
IExheW91dFVuaXQgbV9hdmFpbGFibGVXaWR0aDsKKyAgICAgICAgTGF5b3V0VW5pdCBtX2xpbmVX
aWR0aDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX2ZpcnN0UnVuSW5kZXg7
CiAgICAgfTsKIAogICAgIHZvaWQgbGF5b3V0SW5saW5lQ29udGVudChjb25zdCBMYXlvdXRDb250
ZXh0JiwgSW5saW5lRm9ybWF0dGluZ1N0YXRlJiwgY29uc3QgSW5saW5lUnVuUHJvdmlkZXImKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmVCcmVha2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcAppbmRleCBkNDM3MzBhYzRkMy4uZDYzMWE2ODVh
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmVCcmVha2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5jcHAKQEAgLTYwLDMyICs2MCwzMiBAQCBzdGQ6Om9w
dGlvbmFsPElubGluZUxpbmVCcmVha2VyOjpSdW4+IElubGluZUxpbmVCcmVha2VyOjpuZXh0UnVu
KExheW91dFVuaXQgY29udAogCiAgICAgaWYgKGN1cnJlbnRJbmxpbmVSdW4uaXNMaW5lQnJlYWso
KSkgewogICAgICAgICArK21fY3VycmVudFJ1bkluZGV4OwotICAgICAgICByZXR1cm4gUnVuIHsg
UnVuOjpQb3NpdGlvbjo6TGluZUVuZCwgY3VycmVudElubGluZVJ1biwgMCB9OworICAgICAgICBy
ZXR1cm4gUnVuIHsgUnVuOjpQb3NpdGlvbjo6TGluZUVuZCwgMCwgY3VycmVudElubGluZVJ1biB9
OwogICAgIH0KIAogICAgIGF1dG8gY29udGVudFdpZHRoID0gcnVuV2lkdGgoY3VycmVudElubGlu
ZVJ1biwgY29udGVudExvZ2ljYWxMZWZ0KTsKICAgICAvLyAxLiBQbGVudHkgb2Ygc3BhY2UgbGVm
dC4KICAgICBpZiAoY29udGVudFdpZHRoIDw9IGF2YWlsYWJsZVdpZHRoKSB7CiAgICAgICAgICsr
bV9jdXJyZW50UnVuSW5kZXg7Ci0gICAgICAgIHJldHVybiBSdW4geyBsaW5lSXNFbXB0eSA/IFJ1
bjo6UG9zaXRpb246OkxpbmVCZWdpbiA6IFJ1bjo6UG9zaXRpb246OlVuZGV0ZXJtaW5lZCwgY3Vy
cmVudElubGluZVJ1biwgY29udGVudFdpZHRoIH07CisgICAgICAgIHJldHVybiBSdW4geyBsaW5l
SXNFbXB0eSA/IFJ1bjo6UG9zaXRpb246OkxpbmVCZWdpbiA6IFJ1bjo6UG9zaXRpb246OlVuZGV0
ZXJtaW5lZCwgY29udGVudFdpZHRoLCBjdXJyZW50SW5saW5lUnVuIH07CiAgICAgfQogCiAgICAg
Ly8gMi4gTm8gc3BhY2UgbGVmdCB3aGF0c29ldmVyLgogICAgIGlmIChhdmFpbGFibGVXaWR0aCA8
PSAwKSB7CiAgICAgICAgICsrbV9jdXJyZW50UnVuSW5kZXg7Ci0gICAgICAgIHJldHVybiBSdW4g
eyBSdW46OlBvc2l0aW9uOjpMaW5lQmVnaW4sIGN1cnJlbnRJbmxpbmVSdW4sIGNvbnRlbnRXaWR0
aCB9OworICAgICAgICByZXR1cm4gUnVuIHsgUnVuOjpQb3NpdGlvbjo6TGluZUJlZ2luLCBjb250
ZW50V2lkdGgsIGN1cnJlbnRJbmxpbmVSdW4gfTsKICAgICB9CiAKICAgICAvLyAzLiBTb21lIHNw
YWNlIGxlZnQuIExldCdzIGZpbmQgb3V0IHdoYXQgd2UgbmVlZCB0byBkbyB3aXRoIHRoaXMgcnVu
LgogICAgIGF1dG8gYnJlYWtpbmdCZWhhdmlvciA9IGxpbmVCcmVha2luZ0JlaGF2aW9yKGN1cnJl
bnRJbmxpbmVSdW4sIGxpbmVJc0VtcHR5KTsKICAgICBpZiAoYnJlYWtpbmdCZWhhdmlvciA9PSBM
aW5lQnJlYWtpbmdCZWhhdmlvcjo6S2VlcCkgewogICAgICAgICArK21fY3VycmVudFJ1bkluZGV4
OwotICAgICAgICByZXR1cm4gUnVuIHsgbGluZUlzRW1wdHkgPyBSdW46OlBvc2l0aW9uOjpMaW5l
QmVnaW4gOiBSdW46OlBvc2l0aW9uOjpVbmRldGVybWluZWQsIGN1cnJlbnRJbmxpbmVSdW4sIGNv
bnRlbnRXaWR0aCB9OworICAgICAgICByZXR1cm4gUnVuIHsgbGluZUlzRW1wdHkgPyBSdW46OlBv
c2l0aW9uOjpMaW5lQmVnaW4gOiBSdW46OlBvc2l0aW9uOjpVbmRldGVybWluZWQsIGNvbnRlbnRX
aWR0aCwgY3VycmVudElubGluZVJ1biB9OwogICAgIH0KIAogICAgIGlmIChicmVha2luZ0JlaGF2
aW9yID09IExpbmVCcmVha2luZ0JlaGF2aW9yOjpXcmFwVG9OZXh0TGluZSkgewogICAgICAgICAr
K21fY3VycmVudFJ1bkluZGV4OwotICAgICAgICByZXR1cm4gUnVuIHsgUnVuOjpQb3NpdGlvbjo6
TGluZUJlZ2luLCBjdXJyZW50SW5saW5lUnVuLCBjb250ZW50V2lkdGggfTsKKyAgICAgICAgcmV0
dXJuIFJ1biB7IFJ1bjo6UG9zaXRpb246OkxpbmVCZWdpbiwgY29udGVudFdpZHRoLCBjdXJyZW50
SW5saW5lUnVuIH07CiAgICAgfQogCiAgICAgQVNTRVJUKGJyZWFraW5nQmVoYXZpb3IgPT0gTGlu
ZUJyZWFraW5nQmVoYXZpb3I6OkJyZWFrKTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBMYXlvdXRVbml0
IElubGluZUxpbmVCcmVha2VyOjpydW5XaWR0aChjb25zdCBJbmxpbmVSdW5Qcm92aWRlcjo6UnVu
JiBpbmxpbmVSdW4sCiAKIElubGluZUxpbmVCcmVha2VyOjpSdW4gSW5saW5lTGluZUJyZWFrZXI6
OnNwbGl0UnVuKGNvbnN0IElubGluZVJ1blByb3ZpZGVyOjpSdW4mIGlubGluZVJ1biwgTGF5b3V0
VW5pdCwgTGF5b3V0VW5pdCwgYm9vbCkKIHsKLSAgICByZXR1cm4geyBSdW46OlBvc2l0aW9uOjpV
bmRldGVybWluZWQsIGlubGluZVJ1biwgeyB9IH07CisgICAgcmV0dXJuIHsgUnVuOjpQb3NpdGlv
bjo6VW5kZXRlcm1pbmVkLCB7IH0sIGlubGluZVJ1biB9OwogfQogCiBzdGQ6Om9wdGlvbmFsPEl0
ZW1Qb3NpdGlvbj4gSW5saW5lTGluZUJyZWFrZXI6OmFkanVzdFNwbGl0UG9zaXRpb25XaXRoSHlw
aGVuYXRpb24oY29uc3QgSW5saW5lUnVuUHJvdmlkZXI6OlJ1biYsIEl0ZW1Qb3NpdGlvbiwgTGF5
b3V0VW5pdCwgTGF5b3V0VW5pdCwgYm9vbCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5oCmluZGV4
IGRjZWY2YWJjZGE0Li45YTA3NmYzNWVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5oCkBAIC00Miw4
ICs0Miw4IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgUnVuIHsKICAgICAgICAgZW51bSBjbGFzcyBQ
b3NpdGlvbiB7IFVuZGV0ZXJtaW5lZCwgTGluZUJlZ2luLCBMaW5lRW5kIH07CiAgICAgICAgIFBv
c2l0aW9uIHBvc2l0aW9uOwotICAgICAgICBJbmxpbmVSdW5Qcm92aWRlcjo6UnVuIGlubGluZVJ1
bjsKICAgICAgICAgTGF5b3V0VW5pdCB3aWR0aDsKKyAgICAgICAgSW5saW5lUnVuUHJvdmlkZXI6
OlJ1biBjb250ZW50OwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxSdW4+IG5leHRSdW4oTGF5
b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgsIGJv
b2wgbGluZUlzRW1wdHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZVJ1bi5oCmluZGV4IGMyNzc3NThlNGI4Li4yODBlNjhiZGVmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUnVu
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUnVu
LmgKQEAgLTM0LDMzICszNCwzNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5
b3V0IHsKIAogc3RydWN0IElubGluZVJ1biB7Ci0gICAgSW5saW5lUnVuKExheW91dFVuaXQgbG9n
Y2lhbExlZnQsIExheW91dFVuaXQgd2lkdGgsIGNvbnN0IElubGluZUl0ZW0mKTsKLSAgICBJbmxp
bmVSdW4oTGF5b3V0VW5pdCBsb2djaWFsTGVmdCwgTGF5b3V0VW5pdCB3aWR0aCwgSXRlbVBvc2l0
aW9uLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IElubGluZUl0ZW0mKTsKKyAgICBzdGF0aWMgSW5s
aW5lUnVuIGNyZWF0ZVJ1bihMYXlvdXRVbml0IGxvZ2NpYWxMZWZ0LCBMYXlvdXRVbml0IHdpZHRo
LCBjb25zdCBJbmxpbmVJdGVtJik7CisgICAgc3RhdGljIElubGluZVJ1biBjcmVhdGVUZXh0UnVu
KExheW91dFVuaXQgbG9nY2lhbExlZnQsIExheW91dFVuaXQgd2lkdGgsIEl0ZW1Qb3NpdGlvbiwg
dW5zaWduZWQgbGVuZ3RoLCBjb25zdCBJbmxpbmVJdGVtJik7CiAKICAgICBMYXlvdXRVbml0IGxv
Z2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsTGVmdDsgfQogICAgIExheW91dFVu
aXQgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbExlZnQoKSArIHdpZHRoKCk7
IH0KICAgICBMYXlvdXRVbml0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQogCiAg
ICAgdm9pZCBzZXRXaWR0aChMYXlvdXRVbml0IHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsgfQor
ICAgIHZvaWQgc2V0TG9naWNhbExlZnQoTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCkgeyBtX2xvZ2lj
YWxMZWZ0ID0gbG9naWNhbExlZnQ7IH0KICAgICB2b2lkIHNldExvZ2ljYWxSaWdodChMYXlvdXRV
bml0IGxvZ2ljYWxSaWdodCkgeyBtX3dpZHRoIC09ICh0aGlzLT5sb2dpY2FsUmlnaHQoKSAtIGxv
Z2ljYWxSaWdodCk7IH0KIAogICAgIHN0cnVjdCBUZXh0Q29udGV4dCB7CiAgICAgcHVibGljOgog
ICAgICAgICBUZXh0Q29udGV4dChJdGVtUG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CiAKLSAg
ICAgICAgSXRlbVBvc2l0aW9uIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsg
fQorICAgICAgICBJdGVtUG9zaXRpb24gc3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0OyB9
CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAK
ICAgICAgICAgdm9pZCBzZXRMZW5ndGgodW5zaWduZWQgbGVuZ3RoKSB7IG1fbGVuZ3RoID0gbGVu
Z3RoOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBJdGVtUG9zaXRpb24gbV9wb3NpdGlvbjsK
KyAgICAgICAgSXRlbVBvc2l0aW9uIG1fc3RhcnQ7CiAgICAgICAgIHVuc2lnbmVkIG1fbGVuZ3Ro
OwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxUZXh0Q29udGV4dD4mIHRleHRDb250ZXh0KCkg
eyByZXR1cm4gbV90ZXh0Q29udGV4dDsgfQogICAgIGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0
ZW0oKSBjb25zdCB7IHJldHVybiBtX2lubGluZUl0ZW07IH0KIAogcHJpdmF0ZToKKyAgICBJbmxp
bmVSdW4oTGF5b3V0VW5pdCBsb2djaWFsTGVmdCwgTGF5b3V0VW5pdCB3aWR0aCwgY29uc3QgSW5s
aW5lSXRlbSYpOworICAgIElubGluZVJ1bihMYXlvdXRVbml0IGxvZ2NpYWxMZWZ0LCBMYXlvdXRV
bml0IHdpZHRoLCBJdGVtUG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgSW5saW5lSXRl
bSYpOworCiAgICAgTGF5b3V0VW5pdCBtX2xvZ2ljYWxMZWZ0OwogICAgIExheW91dFVuaXQgbV93
aWR0aDsKIApAQCAtNzAsNiArNzQsMTYgQEAgcHJpdmF0ZToKIAogdXNpbmcgSW5saW5lUnVucyA9
IFZlY3RvcjxJbmxpbmVSdW4+OwogCitpbmxpbmUgSW5saW5lUnVuIElubGluZVJ1bjo6Y3JlYXRl
UnVuKExheW91dFVuaXQgbG9naWNhbExlZnQsIExheW91dFVuaXQgd2lkdGgsIGNvbnN0IElubGlu
ZUl0ZW0mIGlubGluZUl0ZW0pCit7CisgICAgcmV0dXJuIHsgbG9naWNhbExlZnQsIHdpZHRoLCBp
bmxpbmVJdGVtIH07Cit9CisKK2lubGluZSBJbmxpbmVSdW4gSW5saW5lUnVuOjpjcmVhdGVUZXh0
UnVuKExheW91dFVuaXQgbG9naWNhbExlZnQsIExheW91dFVuaXQgd2lkdGgsIEl0ZW1Qb3NpdGlv
biBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKQor
eworICAgIHJldHVybiB7IGxvZ2ljYWxMZWZ0LCB3aWR0aCwgc3RhcnQsIGxlbmd0aCwgaW5saW5l
SXRlbSB9OworfQorCiBpbmxpbmUgSW5saW5lUnVuOjpJbmxpbmVSdW4oTGF5b3V0VW5pdCBsb2dp
Y2FsTGVmdCwgTGF5b3V0VW5pdCB3aWR0aCwgY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSkK
ICAgICA6IG1fbG9naWNhbExlZnQobG9naWNhbExlZnQpCiAgICAgLCBtX3dpZHRoKHdpZHRoKQpA
QCAtNzcsMTYgKzkxLDE2IEBAIGlubGluZSBJbmxpbmVSdW46OklubGluZVJ1bihMYXlvdXRVbml0
IGxvZ2ljYWxMZWZ0LCBMYXlvdXRVbml0IHdpZHRoLCBjb25zdCBJbmxpCiB7CiB9CiAKLWlubGlu
ZSBJbmxpbmVSdW46OklubGluZVJ1bihMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBMYXlvdXRVbml0
IHdpZHRoLCBJdGVtUG9zaXRpb24gcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgSW5s
aW5lSXRlbSYgaW5saW5lSXRlbSkKK2lubGluZSBJbmxpbmVSdW46OklubGluZVJ1bihMYXlvdXRV
bml0IGxvZ2ljYWxMZWZ0LCBMYXlvdXRVbml0IHdpZHRoLCBJdGVtUG9zaXRpb24gc3RhcnQsIHVu
c2lnbmVkIGxlbmd0aCwgY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSkKICAgICA6IG1fbG9n
aWNhbExlZnQobG9naWNhbExlZnQpCiAgICAgLCBtX3dpZHRoKHdpZHRoKQogICAgICwgbV9pbmxp
bmVJdGVtKGlubGluZUl0ZW0pCi0gICAgLCBtX3RleHRDb250ZXh0KFRleHRDb250ZXh0IHsgcG9z
aXRpb24sIGxlbmd0aCB9KQorICAgICwgbV90ZXh0Q29udGV4dChUZXh0Q29udGV4dCB7IHN0YXJ0
LCBsZW5ndGggfSkKIHsKIH0KIAotaW5saW5lIElubGluZVJ1bjo6VGV4dENvbnRleHQ6OlRleHRD
b250ZXh0KEl0ZW1Qb3NpdGlvbiBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQotICAgIDogbV9w
b3NpdGlvbihwb3NpdGlvbikKK2lubGluZSBJbmxpbmVSdW46OlRleHRDb250ZXh0OjpUZXh0Q29u
dGV4dChJdGVtUG9zaXRpb24gc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IG1fc3RhcnQo
c3RhcnQpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmUuY3BwCmluZGV4IDIzNDJiZWVjZjJhLi4xMWM4
OWFiM2Y2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
TGluZS5jcHAKQEAgLTMzLDE1ICszMyw0MCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIExheW91dCB7CiAKLUlubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjpMaW5lKElubGlu
ZUZvcm1hdHRpbmdTdGF0ZSYgaW5saW5lRm9ybWF0dGluZ1N0YXRlKQotICAgIDogbV9pbmxpbmVG
b3JtYXR0aW5nU3RhdGUoaW5saW5lRm9ybWF0dGluZ1N0YXRlKQorSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OkxpbmU6OkxpbmUoSW5saW5lRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUs
IGNvbnN0IEJveCYgZm9ybWF0dGluZ1Jvb3QpCisgICAgOiBtX2Zvcm1hdHRpbmdTdGF0ZShmb3Jt
YXR0aW5nU3RhdGUpCisgICAgLCBtX2Zvcm1hdHRpbmdSb290KGZvcm1hdHRpbmdSb290KQogewog
fQogCi12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjpzZXRDb25zdHJhaW50cyhM
YXlvdXRVbml0IGxpbmVMb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCkKK3Zv
aWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmU6OmluaXQoTGF5b3V0VW5pdCBsaW5lTG9n
aWNhbExlZnQsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpCiB7Ci0gICAgbV9jb250ZW50TG9n
aWNhbExlZnQgPSBsaW5lTG9naWNhbExlZnQ7CisgICAgbV9saW5lTG9naWNhbExlZnQgPSBsaW5l
TG9naWNhbExlZnQ7CisgICAgbV9saW5lV2lkdGggPSBhdmFpbGFibGVXaWR0aDsKICAgICBtX2F2
YWlsYWJsZVdpZHRoID0gYXZhaWxhYmxlV2lkdGg7CisgICAgbV9maXJzdFJ1bkluZGV4ID0geyB9
OworfQorCitzdGF0aWMgTGF5b3V0VW5pdCBhZGp1c3RlZExpbmVMb2dpY2FsTGVmdChUZXh0QWxp
Z25Nb2RlIGFsaWduLCBMYXlvdXRVbml0IGxpbmVMb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCByZW1h
aW5pbmdXaWR0aCkKK3sKKyAgICBzd2l0Y2ggKGFsaWduKSB7CisgICAgY2FzZSBUZXh0QWxpZ25N
b2RlOjpMZWZ0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdDoKKyAgICBjYXNl
IFRleHRBbGlnbk1vZGU6OlN0YXJ0OgorICAgICAgICByZXR1cm4gbGluZUxvZ2ljYWxMZWZ0Owor
ICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpX
ZWJLaXRSaWdodDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkVuZDoKKyAgICAgICAgcmV0dXJu
IGxpbmVMb2dpY2FsTGVmdCArIHN0ZDo6bWF4KHJlbWFpbmluZ1dpZHRoLCBMYXlvdXRVbml0KCkp
OworICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOgorICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0Q2VudGVyOgorICAgICAgICByZXR1cm4gbGluZUxvZ2ljYWxMZWZ0ICsgc3RkOjpt
YXgocmVtYWluaW5nV2lkdGggLyAyLCBMYXlvdXRVbml0KCkpOworICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6SnVzdGlmeToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbGluZUxv
Z2ljYWxMZWZ0OwogfQogCiBzdGF0aWMgYm9vbCBpc05vbkNvbGxhcHNlZFRleHQoY29uc3QgSW5s
aW5lUnVuUHJvdmlkZXI6OlJ1biYgaW5saW5lUnVuKQpAQCAtNTQsMzggKzc5LDQ2IEBAIHN0YXRp
YyBib29sIGlzVHJpbW1hYmxlQ29udGVudChjb25zdCBJbmxpbmVSdW5Qcm92aWRlcjo6UnVuJiBp
bmxpbmVSdW4pCiAgICAgcmV0dXJuIGlubGluZVJ1bi5pc1doaXRlc3BhY2UoKSAmJiBpbmxpbmVS
dW4uc3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKTsKIH0KIAorTGF5b3V0VW5pdCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6TGluZTo6Y29udGVudExvZ2ljYWxSaWdodCgpCit7CisgICAgaWYg
KCFtX2ZpcnN0UnVuSW5kZXguaGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiBtX2xpbmVMb2dp
Y2FsTGVmdDsKKworICAgIHJldHVybiBtX2Zvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5zKCkubGFz
dCgpLmxvZ2ljYWxSaWdodCgpOworfQorCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpM
aW5lOjphcHBlbmRDb250ZW50KGNvbnN0IElubGluZUxpbmVCcmVha2VyOjpSdW4mIHJ1bikKIHsK
ICAgICBhdXRvIGxhc3RSdW5XYXNOb3RDb2xsYXBzZWRUZXh0ID0gbV9sYXN0UnVuSXNOb3RDb2xs
YXBzZWRUZXh0OwotICAgIGF1dG8gaGFkQ29udGVudCA9IGhhc0NvbnRlbnQoKTsKLSAgICBhdXRv
IGNvbnRlbnRMb2dpY2FsTGVmdCA9IG1fY29udGVudExvZ2ljYWxMZWZ0OwogICAgIG1fdHJhaWxp
bmdUcmltbWFibGVDb250ZW50ID0geyB9OwotCi0gICAgYXV0byYgaW5saW5lUnVuID0gcnVuLmlu
bGluZVJ1bjsKICAgICBtX2F2YWlsYWJsZVdpZHRoIC09IHJ1bi53aWR0aDsKLSAgICBtX2xhc3RS
dW5Jc05vdENvbGxhcHNlZFRleHQgPSBpc05vbkNvbGxhcHNlZFRleHQoaW5saW5lUnVuKTsKLSAg
ICBtX2lzRW1wdHkgPSBmYWxzZTsKLSAgICBtX2NvbnRlbnRMb2dpY2FsTGVmdCArPSBydW4ud2lk
dGg7CisKKyAgICBhdXRvJiBjb250ZW50ID0gcnVuLmNvbnRlbnQ7CisgICAgbV9sYXN0UnVuSXNO
b3RDb2xsYXBzZWRUZXh0ID0gaXNOb25Db2xsYXBzZWRUZXh0KGNvbnRlbnQpOwogCiAgICAgLy8g
QXBwZW5kIHRoaXMgdGV4dCBydW4gdG8gdGhlIGVuZCBvZiB0aGUgbGFzdCB0ZXh0IHJ1biwgaWYg
dGhlIGxhc3QgcnVuIGlzIGNvbnRpbnVvdXMuCi0gICAgaWYgKGlubGluZVJ1bi5pc1RleHQoKSkg
ewotICAgICAgICBhdXRvIHRleHRDb250ZXh0ID0gaW5saW5lUnVuLnRleHRDb250ZXh0KCk7Cisg
ICAgc3RkOjpvcHRpb25hbDxJbmxpbmVSdW46OlRleHRDb250ZXh0PiB0ZXh0UnVuOworICAgIGlm
IChjb250ZW50LmlzVGV4dCgpKSB7CisgICAgICAgIGF1dG8gdGV4dENvbnRleHQgPSBjb250ZW50
LnRleHRDb250ZXh0KCk7CiAgICAgICAgIGF1dG8gcnVuTGVuZ3RoID0gdGV4dENvbnRleHQtPmlz
Q29sbGFwc2VkKCkgPyAxIDogdGV4dENvbnRleHQtPmxlbmd0aCgpOwogCi0gICAgICAgIGlmIChp
c1RyaW1tYWJsZUNvbnRlbnQoaW5saW5lUnVuKSkKKyAgICAgICAgaWYgKGlzVHJpbW1hYmxlQ29u
dGVudChjb250ZW50KSkKICAgICAgICAgICAgIG1fdHJhaWxpbmdUcmltbWFibGVDb250ZW50ID0g
VHJhaWxpbmdUcmltbWFibGVDb250ZW50IHsgcnVuLndpZHRoLCBydW5MZW5ndGggfTsKIAotICAg
ICAgICBpZiAoaGFkQ29udGVudCAmJiBsYXN0UnVuV2FzTm90Q29sbGFwc2VkVGV4dCkgewotICAg
ICAgICAgICAgYXV0byYgaW5saW5lUnVuID0gbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUuaW5saW5l
UnVucygpLmxhc3QoKTsKKyAgICAgICAgaWYgKGhhc0NvbnRlbnQoKSAmJiBsYXN0UnVuV2FzTm90
Q29sbGFwc2VkVGV4dCkgeworICAgICAgICAgICAgYXV0byYgaW5saW5lUnVuID0gbV9mb3JtYXR0
aW5nU3RhdGUuaW5saW5lUnVucygpLmxhc3QoKTsKICAgICAgICAgICAgIGlubGluZVJ1bi5zZXRX
aWR0aChpbmxpbmVSdW4ud2lkdGgoKSArIHJ1bi53aWR0aCk7CiAgICAgICAgICAgICBpbmxpbmVS
dW4udGV4dENvbnRleHQoKS0+c2V0TGVuZ3RoKGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5sZW5n
dGgoKSArIHJ1bkxlbmd0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUuYXBwZW5kSW5saW5lUnVuKHsgY29u
dGVudExvZ2ljYWxMZWZ0LCBydW4ud2lkdGgsIHRleHRDb250ZXh0LT5zdGFydCgpLCBydW5MZW5n
dGgsIGlubGluZVJ1bi5pbmxpbmVJdGVtKCl9KTsKKyAgICAgICAgdGV4dFJ1biA9IElubGluZVJ1
bjo6VGV4dENvbnRleHQgeyB0ZXh0Q29udGV4dC0+c3RhcnQoKSwgcnVuTGVuZ3RoIH07CiAgICAg
fQogCi0gICAgbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUuYXBwZW5kSW5saW5lUnVuKHsgY29udGVu
dExvZ2ljYWxMZWZ0LCBydW4ud2lkdGgsIGlubGluZVJ1bi5pbmxpbmVJdGVtKCkgfSk7CisgICAg
aWYgKHRleHRSdW4pCisgICAgICAgIG1fZm9ybWF0dGluZ1N0YXRlLmFwcGVuZElubGluZVJ1bihJ
bmxpbmVSdW46OmNyZWF0ZVRleHRSdW4oY29udGVudExvZ2ljYWxSaWdodCgpLCBydW4ud2lkdGgs
IHRleHRSdW4tPnN0YXJ0KCksIHRleHRSdW4tPmxlbmd0aCgpLCBjb250ZW50LmlubGluZUl0ZW0o
KSkpOworICAgIGVsc2UKKyAgICAgICAgbV9mb3JtYXR0aW5nU3RhdGUuYXBwZW5kSW5saW5lUnVu
KElubGluZVJ1bjo6Y3JlYXRlUnVuKGNvbnRlbnRMb2dpY2FsUmlnaHQoKSwgcnVuLndpZHRoLCBj
b250ZW50LmlubGluZUl0ZW0oKSkpOworICAgIG1fZmlyc3RSdW5JbmRleCA9IG1fZmlyc3RSdW5J
bmRleC52YWx1ZV9vcihtX2Zvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5zKCkuc2l6ZSgpIC0gMSk7
CiB9CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmU6OmNsb3NlKCkKQEAgLTk1
LDE4ICsxMjgsNDEgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6Y2xvc2Uo
KQogICAgICAgICBpZiAoIW1fdHJhaWxpbmdUcmltbWFibGVDb250ZW50KQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGF1dG8mIGxhc3RJbmxpbmVSdW4gPSBtX2lubGluZUZvcm1hdHRp
bmdTdGF0ZS5pbmxpbmVSdW5zKCkubGFzdCgpOworICAgICAgICBhdXRvJiBsYXN0SW5saW5lUnVu
ID0gbV9mb3JtYXR0aW5nU3RhdGUuaW5saW5lUnVucygpLmxhc3QoKTsKICAgICAgICAgbGFzdElu
bGluZVJ1bi5zZXRXaWR0aChsYXN0SW5saW5lUnVuLndpZHRoKCkgLSBtX3RyYWlsaW5nVHJpbW1h
YmxlQ29udGVudC0+d2lkdGgpOwogICAgICAgICBsYXN0SW5saW5lUnVuLnRleHRDb250ZXh0KCkt
PnNldExlbmd0aChsYXN0SW5saW5lUnVuLnRleHRDb250ZXh0KCktPmxlbmd0aCgpIC0gbV90cmFp
bGluZ1RyaW1tYWJsZUNvbnRlbnQtPmxlbmd0aCk7CiAKLSAgICAgICAgaWYgKCFsYXN0SW5saW5l
UnVuLnRleHRDb250ZXh0KCktPmxlbmd0aCgpKQotICAgICAgICAgICAgbV9pbmxpbmVGb3JtYXR0
aW5nU3RhdGUuaW5saW5lUnVucygpLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgaWYgKCFsYXN0SW5s
aW5lUnVuLnRleHRDb250ZXh0KCktPmxlbmd0aCgpKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRp
bmdTdGF0ZS5pbmxpbmVSdW5zKCkucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgaWYgKG1fZmly
c3RSdW5JbmRleC52YWx1ZSgpKQorICAgICAgICAgICAgICAgIC0tKm1fZmlyc3RSdW5JbmRleDsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2ZpcnN0UnVuSW5kZXggPSB7IH07
CisgICAgICAgIH0KICAgICAgICAgbV9hdmFpbGFibGVXaWR0aCArPSBtX3RyYWlsaW5nVHJpbW1h
YmxlQ29udGVudC0+d2lkdGg7CiAgICAgICAgIG1fdHJhaWxpbmdUcmltbWFibGVDb250ZW50ID0g
eyB9OwogICAgIH07CiAKKyAgICBhdXRvIGFsaWduUnVucyA9IFsmXSgpIHsKKworICAgICAgICBp
ZiAoIWhhc0NvbnRlbnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIGFk
anVzdGVkTG9naWNhbExlZnQgPSBhZGp1c3RlZExpbmVMb2dpY2FsTGVmdChtX2Zvcm1hdHRpbmdS
b290LnN0eWxlKCkudGV4dEFsaWduKCksIG1fbGluZUxvZ2ljYWxMZWZ0LCBtX2F2YWlsYWJsZVdp
ZHRoKTsKKyAgICAgICAgaWYgKG1fbGluZUxvZ2ljYWxMZWZ0ID09IGFkanVzdGVkTG9naWNhbExl
ZnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byYgaW5saW5lUnVucyA9IG1f
Zm9ybWF0dGluZ1N0YXRlLmlubGluZVJ1bnMoKTsKKyAgICAgICAgYXV0byBkZWx0YSA9IGFkanVz
dGVkTG9naWNhbExlZnQgLSBtX2xpbmVMb2dpY2FsTGVmdDsKKyAgICAgICAgZm9yIChhdXRvIHJ1
bkluZGV4ID0gKm1fZmlyc3RSdW5JbmRleDsgcnVuSW5kZXggPCBpbmxpbmVSdW5zLnNpemUoKTsg
KytydW5JbmRleCkKKyAgICAgICAgICAgIGlubGluZVJ1bnNbcnVuSW5kZXhdLnNldExvZ2ljYWxM
ZWZ0KGlubGluZVJ1bnNbcnVuSW5kZXhdLmxvZ2ljYWxMZWZ0KCkgKyBkZWx0YSk7CisgICAgfTsK
KworICAgIGlmICghaGFzQ29udGVudCgpKQorICAgICAgICByZXR1cm47CisKICAgICB0cmltVHJh
aWxpbmdDb250ZW50KCk7Ci0gICAgbV9pc0VtcHR5ID0gdHJ1ZTsKKyAgICBhbGlnblJ1bnMoKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDMwNDc0ZTdhZTdlLi43YzgzOTkxYmMwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWls
ZGVyLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0YXRpYyB2b2lkIG91dHB1dElubGluZVJ1bnMo
VGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250CiAgICAg
ICAgICAgICBzdHJlYW0gPDwgIiAiOwogICAgICAgICBzdHJlYW0gPDwgInJ1biI7CiAgICAgICAg
IGlmIChpbmxpbmVSdW4udGV4dENvbnRleHQoKSkKLSAgICAgICAgICAgIHN0cmVhbSA8PCAiKCIg
PDwgaW5saW5lUnVuLnRleHRDb250ZXh0KCktPnBvc2l0aW9uKCkgPDwgIiwgIiA8PCBpbmxpbmVS
dW4udGV4dENvbnRleHQoKS0+cG9zaXRpb24oKSArIGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5s
ZW5ndGgoKSA8PCAiKSAiOworICAgICAgICAgICAgc3RyZWFtIDw8ICIoIiA8PCBpbmxpbmVSdW4u
dGV4dENvbnRleHQoKS0+c3RhcnQoKSA8PCAiLCAiIDw8IGlubGluZVJ1bi50ZXh0Q29udGV4dCgp
LT5zdGFydCgpICsgaW5saW5lUnVuLnRleHRDb250ZXh0KCktPmxlbmd0aCgpIDw8ICIpICI7CiAg
ICAgICAgIHN0cmVhbSA8PCAiKCIgPDwgaW5saW5lUnVuLmxvZ2ljYWxMZWZ0KCkgPDwgIiwgIiA8
PCBpbmxpbmVSdW4ubG9naWNhbFJpZ2h0KCkgPDwgIikiOwogICAgICAgICBzdHJlYW0ubmV4dExp
bmUoKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352799</attachid>
            <date>2018-10-19 10:32:48 -0700</date>
            <delta_ts>2018-10-22 08:07:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190745-20181019103247.patch</filename>
            <type>text/plain</type>
            <size>25019</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ4M2QyZmU0N2E4ODVm
NjA0ODZlYjJlMWJjNGYzNTY5YTBjYzk3Yy4uMWRmZDk0OGM5MjZlNTkzODkyOTY3OTM2Yzk0YjZi
N2Y5NzY3OGYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTEwLTE5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBBZGQgKHJp
Z2h0LCBjZW50ZXIpdGV4dC1hbGlnbiBzdXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0IHRoZSBsb2dpY2FsIGxlZnQgb2YgZWFjaCBy
dW4gd2hpbGUgY2xvc2luZyB0aGUgbGluZS4KKworICAgICAgICAqIGxheW91dC9WZXJpZmljYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRNaXNtYXRjaGluZ1NpbXBs
ZUxpbmVJbmZvcm1hdGlvbklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0
cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGluZUluZm9ybWF0aW9uSWZOZWVkZWQpOgorICAgICAgICAq
IGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6dHJpbUxlYWRpbmdSdW4pOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5saW5lQ29udGVudCBj
b25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OkxpbmU6Omhhc0NvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6Y29udGVudExvZ2ljYWxMZWZ0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
QnJlYWtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxpbmVCcmVha2Vy
OjpuZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGluZUJyZWFrZXI6
OnNwbGl0UnVuKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
QnJlYWtlci5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVJ1bi5o
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVSdW46OnNldExvZ2ljYWxMZWZ0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lUnVuOjpUZXh0Q29udGV4dDo6c3RhcnQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVSdW46OmNyZWF0ZVJ1bik6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVJ1bjo6Y3JlYXRlVGV4dFJ1bik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVJ1bjo6SW5saW5lUnVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lUnVuOjpUZXh0Q29udGV4dDo6VGV4dENvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVSdW46OlRleHRDb250ZXh0Ojpwb3NpdGlv
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpMaW5lOjpMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OkxpbmU6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjphZGp1c3Rl
ZExpbmVMb2dpY2FsTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpMaW5lOjpjb250ZW50TG9naWNhbFJpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmU6OmFwcGVuZENvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGlu
ZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6TGluZTo6c2V0Q29uc3RyYWludHMpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9s
YXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6b3V0cHV0SW5saW5lUnVucyk6CisKIDIwMTgtMTAtMTkgIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFJlbmRlclJlcGxhY2VkIHJlbmRlcmVy
IHNob3VsZCBjcmVhdGUgSW5saW5lQm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvVmVyaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24u
Y3BwCmluZGV4IDE4MGQyNDg0NGEyNTBhMjRlYTQwZmU3NGJhZDQzY2EyYzcyMjkyYTQuLmUwYmNl
NGZhN2M0YWJiYjk1MWYzMDQxZGE5MDAwZDQxOTAyMThhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9WZXJpZmljYXRpb24uY3BwCkBAIC03MywxMSArNzMsMTEgQEAgc3RhdGljIGJvb2wgb3V0cHV0
TWlzbWF0Y2hpbmdTaW1wbGVMaW5lSW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJl
YW0sIGMKIAogICAgICAgICBhdXRvIG1hdGNoaW5nUnVucyA9IGFyZUVzc2VudGlhbGx5RXF1YWwo
c2ltcGxlUnVuLmxvZ2ljYWxMZWZ0LCBpbmxpbmVSdW4ubG9naWNhbExlZnQoKSkgJiYgYXJlRXNz
ZW50aWFsbHlFcXVhbChzaW1wbGVSdW4ubG9naWNhbFJpZ2h0LCBpbmxpbmVSdW4ubG9naWNhbFJp
Z2h0KCkpOwogICAgICAgICBpZiAobWF0Y2hpbmdSdW5zKQotICAgICAgICAgICAgbWF0Y2hpbmdS
dW5zID0gKHNpbXBsZVJ1bi5zdGFydCA9PSBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+cG9zaXRp
b24oKSAmJiBzaW1wbGVSdW4uZW5kID09IChpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+cG9zaXRp
b24oKSArIGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5sZW5ndGgoKSkpOworICAgICAgICAgICAg
bWF0Y2hpbmdSdW5zID0gKHNpbXBsZVJ1bi5zdGFydCA9PSBpbmxpbmVSdW4udGV4dENvbnRleHQo
KS0+c3RhcnQoKSAmJiBzaW1wbGVSdW4uZW5kID09IChpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+
c3RhcnQoKSArIGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5sZW5ndGgoKSkpOwogICAgICAgICBp
ZiAobWF0Y2hpbmdSdW5zKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgc3RyZWFt
IDw8ICJNaXNtYXRjaGluZzogc2ltcGxlIHJ1bigiIDw8IHNpbXBsZVJ1bi5zdGFydCA8PCAiLCAi
IDw8IHNpbXBsZVJ1bi5lbmQgPDwgIikgKCIgPDwgc2ltcGxlUnVuLmxvZ2ljYWxMZWZ0IDw8ICIs
ICIgPDwgc2ltcGxlUnVuLmxvZ2ljYWxSaWdodCA8PCAiKSBsYXlvdXQgcnVuKCIgPDwgaW5saW5l
UnVuLnRleHRDb250ZXh0KCktPnBvc2l0aW9uKCkgPDwgIiwgIiA8PCBpbmxpbmVSdW4udGV4dENv
bnRleHQoKS0+cG9zaXRpb24oKSArIGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5sZW5ndGgoKSA8
PCAiKSAoIiA8PCBpbmxpbmVSdW4ubG9naWNhbExlZnQoKSA8PCAiLCAiIDw8IGlubGluZVJ1bi5s
b2dpY2FsUmlnaHQoKSA8PCAiKSI7CisgICAgICAgIHN0cmVhbSA8PCAiTWlzbWF0Y2hpbmc6IHNp
bXBsZSBydW4oIiA8PCBzaW1wbGVSdW4uc3RhcnQgPDwgIiwgIiA8PCBzaW1wbGVSdW4uZW5kIDw8
ICIpICgiIDw8IHNpbXBsZVJ1bi5sb2dpY2FsTGVmdCA8PCAiLCAiIDw8IHNpbXBsZVJ1bi5sb2dp
Y2FsUmlnaHQgPDwgIikgbGF5b3V0IHJ1bigiIDw8IGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5z
dGFydCgpIDw8ICIsICIgPDwgaW5saW5lUnVuLnRleHRDb250ZXh0KCktPnN0YXJ0KCkgKyBpbmxp
bmVSdW4udGV4dENvbnRleHQoKS0+bGVuZ3RoKCkgPDwgIikgKCIgPDwgaW5saW5lUnVuLmxvZ2lj
YWxMZWZ0KCkgPDwgIiwgIiA8PCBpbmxpbmVSdW4ubG9naWNhbFJpZ2h0KCkgPDwgIikiOwogICAg
ICAgICBzdHJlYW0ubmV4dExpbmUoKTsKICAgICAgICAgbWlzbWF0Y2hlZCA9IHRydWU7CiAgICAg
fQpAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nQ29tcGxl
eExpbmVJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwKICAgICAgICAgICAg
IGF1dG8gbWF0Y2hpbmdSdW5zID0gYXJlRXNzZW50aWFsbHlFcXVhbChsaW5lQm94LT5sb2dpY2Fs
TGVmdCgpLCBpbmxpbmVSdW4ubG9naWNhbExlZnQoKSkgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChs
aW5lQm94LT5sb2dpY2FsUmlnaHQoKSwgaW5saW5lUnVuLmxvZ2ljYWxSaWdodCgpKTsKICAgICAg
ICAgICAgIGlmIChtYXRjaGluZ1J1bnMgJiYgaW5saW5lVGV4dEJveCkgewogICAgICAgICAgICAg
ICAgIEFTU0VSVChpbmxpbmVSdW4udGV4dENvbnRleHQoKSk7Ci0gICAgICAgICAgICAgICAgbWF0
Y2hpbmdSdW5zID0gaW5saW5lVGV4dEJveC0+c3RhcnQoKSA9PSBpbmxpbmVSdW4udGV4dENvbnRl
eHQoKS0+cG9zaXRpb24oKSAmJiBpbmxpbmVUZXh0Qm94LT5lbmQoKSArIDEgPT0gKGlubGluZVJ1
bi50ZXh0Q29udGV4dCgpLT5wb3NpdGlvbigpICsgaW5saW5lUnVuLnRleHRDb250ZXh0KCktPmxl
bmd0aCgpKTsKKyAgICAgICAgICAgICAgICBtYXRjaGluZ1J1bnMgPSBpbmxpbmVUZXh0Qm94LT5z
dGFydCgpID09IGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5zdGFydCgpICYmIGlubGluZVRleHRC
b3gtPmVuZCgpICsgMSA9PSAoaW5saW5lUnVuLnRleHRDb250ZXh0KCktPnN0YXJ0KCkgKyBpbmxp
bmVSdW4udGV4dENvbnRleHQoKS0+bGVuZ3RoKCkpOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBpZiAoIW1hdGNoaW5nUnVucykgewpAQCAtMTE5LDcgKzExOSw3IEBAIHN0YXRpYyBib29s
IG91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJl
YW0mIHN0cmVhbSwKIAogICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAibGF5b3V0IHJ1biAiOwog
ICAgICAgICAgICAgICAgIGlmIChpbmxpbmVSdW4udGV4dENvbnRleHQoKSkKLSAgICAgICAgICAg
ICAgICAgICAgc3RyZWFtIDw8ICIoIiA8PCBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+cG9zaXRp
b24oKSA8PCAiLCAiIDw8IGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5wb3NpdGlvbigpICsgaW5s
aW5lUnVuLnRleHRDb250ZXh0KCktPmxlbmd0aCgpIDw8ICIpICI7CisgICAgICAgICAgICAgICAg
ICAgIHN0cmVhbSA8PCAiKCIgPDwgaW5saW5lUnVuLnRleHRDb250ZXh0KCktPnN0YXJ0KCkgPDwg
IiwgIiA8PCBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+c3RhcnQoKSArIGlubGluZVJ1bi50ZXh0
Q29udGV4dCgpLT5sZW5ndGgoKSA8PCAiKSAiOwogICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAi
KCIgPDwgaW5saW5lUnVuLmxvZ2ljYWxMZWZ0KCkgPDwgIiwgIiA8PCBpbmxpbmVSdW4ubG9naWNh
bFJpZ2h0KCkgPDwgIikiOwogICAgICAgICAgICAgICAgIHN0cmVhbS5uZXh0TGluZSgpOwogICAg
ICAgICAgICAgICAgIG1pc21hdGNoZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCmluZGV4IGVkN2U1YmQxN2JlNWZkODUyMDllZGFhZWY4MzlhMzUxNjI2OTBhMDgu
LjgxNDM2ZDk4Y2I4Mzc2MzM0ZTdhYjQwNmMzMGRmYmYwYWM2Y2I5NTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTk1LDExICs5NSwxMCBAQCBzdGF0aWMgYm9vbCB0
cmltTGVhZGluZ1J1bihjb25zdCBJbmxpbmVMaW5lQnJlYWtlcjo6UnVuJiBydW4pCiB7CiAgICAg
QVNTRVJUKHJ1bi5wb3NpdGlvbiA9PSBJbmxpbmVMaW5lQnJlYWtlcjo6UnVuOjpQb3NpdGlvbjo6
TGluZUJlZ2luKTsKIAotICAgIGF1dG8mIGlubGluZVJ1biA9IHJ1bi5pbmxpbmVSdW47Ci0gICAg
aWYgKCFpbmxpbmVSdW4uaXNXaGl0ZXNwYWNlKCkpCisgICAgaWYgKCFydW4uY29udGVudC5pc1do
aXRlc3BhY2UoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGlubGluZVJ1
bi5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpOworICAgIHJldHVybiBydW4uY29udGVudC5z
dHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpOwogfQogCiB2b2lkIElubGluZUZvcm1hdHRpbmdD
b250ZXh0OjpsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExheW91dENvbnRleHQmIGxheW91dENv
bnRleHQsIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgaW5saW5lRm9ybWF0dGluZ1N0YXRlLCBjb25z
dCBJbmxpbmVSdW5Qcm92aWRlciYgaW5saW5lUnVuUHJvdmlkZXIpIGNvbnN0CkBAIC0xMTEsMTEg
KzExMCwxMSBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbmxpbmVDb250
ZW50KGNvbnN0IExheW91dENvbnRleHQmIGxheW91dENvbgogICAgIGF1dG8gYXZhaWxhYmxlV2lk
dGggPSBmb3JtYXR0aW5nUm9vdERpc3BsYXlCb3guY29udGVudEJveFdpZHRoKCk7CiAgICAgYXV0
byBwcmV2aW91c1J1blBvc2l0aW9uSXNMaW5lRW5kID0gZmFsc2U7CiAKLSAgICBMaW5lIGxpbmUo
aW5saW5lRm9ybWF0dGluZ1N0YXRlKTsKLSAgICBsaW5lLnNldENvbnN0cmFpbnRzKGxpbmVMb2dp
Y2FsTGVmdCwgYXZhaWxhYmxlV2lkdGgpOworICAgIExpbmUgbGluZShpbmxpbmVGb3JtYXR0aW5n
U3RhdGUsIHJvb3QoKSk7CisgICAgbGluZS5pbml0KGxpbmVMb2dpY2FsTGVmdCwgYXZhaWxhYmxl
V2lkdGgpOwogCiAgICAgSW5saW5lTGluZUJyZWFrZXIgbGluZUJyZWFrZXIobGF5b3V0Q29udGV4
dCwgaW5saW5lRm9ybWF0dGluZ1N0YXRlLmlubGluZUNvbnRlbnQoKSwgaW5saW5lUnVuUHJvdmlk
ZXIucnVucygpKTsKLSAgICB3aGlsZSAoYXV0byBydW4gPSBsaW5lQnJlYWtlci5uZXh0UnVuKGxp
bmUuY29udGVudExvZ2ljYWxMZWZ0KCksIGxpbmUuYXZhaWxhYmxlV2lkdGgoKSwgIWxpbmUuaGFz
Q29udGVudCgpKSkgeworICAgIHdoaWxlIChhdXRvIHJ1biA9IGxpbmVCcmVha2VyLm5leHRSdW4o
bGluZS5jb250ZW50TG9naWNhbFJpZ2h0KCksIGxpbmUuYXZhaWxhYmxlV2lkdGgoKSwgIWxpbmUu
aGFzQ29udGVudCgpKSkgewogCiAgICAgICAgIGlmIChydW4tPnBvc2l0aW9uID09IElubGluZUxp
bmVCcmVha2VyOjpSdW46OlBvc2l0aW9uOjpMaW5lQmVnaW4pIHsKICAgICAgICAgICAgIC8vIEZp
cnN0IHJ1biBvbiBsaW5lLgpAQCAtMTIzLDcgKzEyMiw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0
Q29uCiAgICAgICAgICAgICAvLyBQcmV2aW91cyBydW4gZW5kZWQgdXAgYmVpbmcgYXQgdGhlIGxp
bmUgZW5kLiBBZGp1c3QgdGhlIGxpbmUgYWNjb3JkaW5nbHkuCiAgICAgICAgICAgICBpZiAoIXBy
ZXZpb3VzUnVuUG9zaXRpb25Jc0xpbmVFbmQpIHsKICAgICAgICAgICAgICAgICBsaW5lLmNsb3Nl
KCk7Ci0gICAgICAgICAgICAgICAgbGluZS5zZXRDb25zdHJhaW50cyhsaW5lTG9naWNhbExlZnQs
IGF2YWlsYWJsZVdpZHRoKTsKKyAgICAgICAgICAgICAgICBsaW5lLmluaXQobGluZUxvZ2ljYWxM
ZWZ0LCBhdmFpbGFibGVXaWR0aCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBTa2lw
IGxlYWRpbmcgd2hpdGVzcGFjZS4KICAgICAgICAgICAgIGlmICghdHJpbUxlYWRpbmdSdW4oKnJ1
bikpCkBAIC0xMzcsNyArMTM2LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5
b3V0SW5saW5lQ29udGVudChjb25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb24KICAgICAgICAg
ICAgIGxpbmUuYXBwZW5kQ29udGVudCgqcnVuKTsKICAgICAgICAgICAgIC8vIE1vdmUgb3ZlciB0
byB0aGUgbmV4dCBsaW5lLgogICAgICAgICAgICAgbGluZS5jbG9zZSgpOwotICAgICAgICAgICAg
bGluZS5zZXRDb25zdHJhaW50cyhsaW5lTG9naWNhbExlZnQsIGF2YWlsYWJsZVdpZHRoKTsKKyAg
ICAgICAgICAgIGxpbmUuaW5pdChsaW5lTG9naWNhbExlZnQsIGF2YWlsYWJsZVdpZHRoKTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5oCmluZGV4IDEzODRjMWQ0ZGE0M2NmZDJjOWMzYTZhMGVmY2FlMTE1Yjg5NDc4MTkuLjJk
OWZjZjQ5YjQ3NDE1MTA1OWU0MDlmN2ZmNzNkMmQyN2FmZDVkODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuaApAQCAtNDksMTMgKzQ5LDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgY2xhc3MgTGluZSB7CiAgICAgcHVibGljOgotICAgICAgICBMaW5lKElubGluZUZvcm1hdHRp
bmdTdGF0ZSYpOworICAgICAgICBMaW5lKElubGluZUZvcm1hdHRpbmdTdGF0ZSYsIGNvbnN0IEJv
eCYgZm9ybWF0dGluZ1Jvb3QpOwogCi0gICAgICAgIHZvaWQgc2V0Q29uc3RyYWludHMoTGF5b3V0
VW5pdCBsaW5lTG9naWNhbExlZnQsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpOworICAgICAg
ICB2b2lkIGluaXQoTGF5b3V0VW5pdCBsaW5lTG9naWNhbExlZnQsIExheW91dFVuaXQgYXZhaWxh
YmxlV2lkdGgpOwogICAgICAgICB2b2lkIGFwcGVuZENvbnRlbnQoY29uc3QgSW5saW5lTGluZUJy
ZWFrZXI6OlJ1biYpOwogICAgICAgICB2b2lkIGNsb3NlKCk7Ci0gICAgICAgIGJvb2wgaGFzQ29u
dGVudCgpIGNvbnN0IHsgcmV0dXJuICFtX2lzRW1wdHk7IH0KLSAgICAgICAgTGF5b3V0VW5pdCBj
b250ZW50TG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMb2dpY2FsTGVmdDsg
fQorCisgICAgICAgIGJvb2wgaGFzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RSdW5J
bmRleC5oYXNfdmFsdWUoKTsgfQorICAgICAgICBMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsUmln
aHQoKTsKICAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fYXZhaWxhYmxlV2lkdGg7IH0KIAogICAgIHByaXZhdGU6CkBAIC02NCwxMSArNjUsMTYgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aDsKICAgICAgICAgfTsKICAgICAg
ICAgc3RkOjpvcHRpb25hbDxUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQ+IG1fdHJhaWxpbmdUcmlt
bWFibGVDb250ZW50OwotICAgICAgICBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIG1faW5saW5lRm9y
bWF0dGluZ1N0YXRlOwotICAgICAgICBMYXlvdXRVbml0IG1fY29udGVudExvZ2ljYWxMZWZ0Owot
ICAgICAgICBMYXlvdXRVbml0IG1fYXZhaWxhYmxlV2lkdGg7Ci0gICAgICAgIGJvb2wgbV9pc0Vt
cHR5IHsgdHJ1ZSB9OwogICAgICAgICBib29sIG1fbGFzdFJ1bklzTm90Q29sbGFwc2VkVGV4dCB7
IHRydWUgfTsKKworICAgICAgICBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIG1fZm9ybWF0dGluZ1N0
YXRlOworICAgICAgICBjb25zdCBCb3gmIG1fZm9ybWF0dGluZ1Jvb3Q7CisKKyAgICAgICAgTGF5
b3V0VW5pdCBtX2xpbmVMb2dpY2FsTGVmdDsKKyAgICAgICAgTGF5b3V0VW5pdCBtX2F2YWlsYWJs
ZVdpZHRoOworICAgICAgICBMYXlvdXRVbml0IG1fbGluZVdpZHRoOworCisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IG1fZmlyc3RSdW5JbmRleDsKICAgICB9OwogCiAgICAgdm9pZCBs
YXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExheW91dENvbnRleHQmLCBJbmxpbmVGb3JtYXR0aW5n
U3RhdGUmLCBjb25zdCBJbmxpbmVSdW5Qcm92aWRlciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFr
ZXIuY3BwCmluZGV4IDJiNGNlNTk2MTkxZjA0ZjRlZjFjYjUxY2EwZGMyM2U2NzMyMTA4MDMuLmZi
YjA1YzNiMDM2NzA0Y2U2YjczZjgxODhjMTFmN2IzNmZiMTI1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnJl
YWtlci5jcHAKQEAgLTYwLDMyICs2MCwzMiBAQCBzdGQ6Om9wdGlvbmFsPElubGluZUxpbmVCcmVh
a2VyOjpSdW4+IElubGluZUxpbmVCcmVha2VyOjpuZXh0UnVuKExheW91dFVuaXQgY29udAogCiAg
ICAgaWYgKGN1cnJlbnRJbmxpbmVSdW4uaXNMaW5lQnJlYWsoKSkgewogICAgICAgICArK21fY3Vy
cmVudFJ1bkluZGV4OwotICAgICAgICByZXR1cm4gUnVuIHsgUnVuOjpQb3NpdGlvbjo6TGluZUVu
ZCwgY3VycmVudElubGluZVJ1biwgMCB9OworICAgICAgICByZXR1cm4gUnVuIHsgUnVuOjpQb3Np
dGlvbjo6TGluZUVuZCwgMCwgY3VycmVudElubGluZVJ1biB9OwogICAgIH0KIAogICAgIGF1dG8g
Y29udGVudFdpZHRoID0gcnVuV2lkdGgoY3VycmVudElubGluZVJ1biwgY29udGVudExvZ2ljYWxM
ZWZ0KTsKICAgICAvLyAxLiBQbGVudHkgb2Ygc3BhY2UgbGVmdC4KICAgICBpZiAoY29udGVudFdp
ZHRoIDw9IGF2YWlsYWJsZVdpZHRoKSB7CiAgICAgICAgICsrbV9jdXJyZW50UnVuSW5kZXg7Ci0g
ICAgICAgIHJldHVybiBSdW4geyBsaW5lSXNFbXB0eSA/IFJ1bjo6UG9zaXRpb246OkxpbmVCZWdp
biA6IFJ1bjo6UG9zaXRpb246OlVuZGV0ZXJtaW5lZCwgY3VycmVudElubGluZVJ1biwgY29udGVu
dFdpZHRoIH07CisgICAgICAgIHJldHVybiBSdW4geyBsaW5lSXNFbXB0eSA/IFJ1bjo6UG9zaXRp
b246OkxpbmVCZWdpbiA6IFJ1bjo6UG9zaXRpb246OlVuZGV0ZXJtaW5lZCwgY29udGVudFdpZHRo
LCBjdXJyZW50SW5saW5lUnVuIH07CiAgICAgfQogCiAgICAgLy8gMi4gTm8gc3BhY2UgbGVmdCB3
aGF0c29ldmVyLgogICAgIGlmIChhdmFpbGFibGVXaWR0aCA8PSAwKSB7CiAgICAgICAgICsrbV9j
dXJyZW50UnVuSW5kZXg7Ci0gICAgICAgIHJldHVybiBSdW4geyBSdW46OlBvc2l0aW9uOjpMaW5l
QmVnaW4sIGN1cnJlbnRJbmxpbmVSdW4sIGNvbnRlbnRXaWR0aCB9OworICAgICAgICByZXR1cm4g
UnVuIHsgUnVuOjpQb3NpdGlvbjo6TGluZUJlZ2luLCBjb250ZW50V2lkdGgsIGN1cnJlbnRJbmxp
bmVSdW4gfTsKICAgICB9CiAKICAgICAvLyAzLiBTb21lIHNwYWNlIGxlZnQuIExldCdzIGZpbmQg
b3V0IHdoYXQgd2UgbmVlZCB0byBkbyB3aXRoIHRoaXMgcnVuLgogICAgIGF1dG8gYnJlYWtpbmdC
ZWhhdmlvciA9IGxpbmVCcmVha2luZ0JlaGF2aW9yKGN1cnJlbnRJbmxpbmVSdW4sIGxpbmVJc0Vt
cHR5KTsKICAgICBpZiAoYnJlYWtpbmdCZWhhdmlvciA9PSBMaW5lQnJlYWtpbmdCZWhhdmlvcjo6
S2VlcCkgewogICAgICAgICArK21fY3VycmVudFJ1bkluZGV4OwotICAgICAgICByZXR1cm4gUnVu
IHsgbGluZUlzRW1wdHkgPyBSdW46OlBvc2l0aW9uOjpMaW5lQmVnaW4gOiBSdW46OlBvc2l0aW9u
OjpVbmRldGVybWluZWQsIGN1cnJlbnRJbmxpbmVSdW4sIGNvbnRlbnRXaWR0aCB9OworICAgICAg
ICByZXR1cm4gUnVuIHsgbGluZUlzRW1wdHkgPyBSdW46OlBvc2l0aW9uOjpMaW5lQmVnaW4gOiBS
dW46OlBvc2l0aW9uOjpVbmRldGVybWluZWQsIGNvbnRlbnRXaWR0aCwgY3VycmVudElubGluZVJ1
biB9OwogICAgIH0KIAogICAgIGlmIChicmVha2luZ0JlaGF2aW9yID09IExpbmVCcmVha2luZ0Jl
aGF2aW9yOjpXcmFwVG9OZXh0TGluZSkgewogICAgICAgICArK21fY3VycmVudFJ1bkluZGV4Owot
ICAgICAgICByZXR1cm4gUnVuIHsgUnVuOjpQb3NpdGlvbjo6TGluZUJlZ2luLCBjdXJyZW50SW5s
aW5lUnVuLCBjb250ZW50V2lkdGggfTsKKyAgICAgICAgcmV0dXJuIFJ1biB7IFJ1bjo6UG9zaXRp
b246OkxpbmVCZWdpbiwgY29udGVudFdpZHRoLCBjdXJyZW50SW5saW5lUnVuIH07CiAgICAgfQog
CiAgICAgQVNTRVJUKGJyZWFraW5nQmVoYXZpb3IgPT0gTGluZUJyZWFraW5nQmVoYXZpb3I6OkJy
ZWFrKTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBMYXlvdXRVbml0IElubGluZUxpbmVCcmVha2VyOjpy
dW5XaWR0aChjb25zdCBJbmxpbmVSdW5Qcm92aWRlcjo6UnVuJiBpbmxpbmVSdW4sCiAKIElubGlu
ZUxpbmVCcmVha2VyOjpSdW4gSW5saW5lTGluZUJyZWFrZXI6OnNwbGl0UnVuKGNvbnN0IElubGlu
ZVJ1blByb3ZpZGVyOjpSdW4mIGlubGluZVJ1biwgTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCwgYm9v
bCkKIHsKLSAgICByZXR1cm4geyBSdW46OlBvc2l0aW9uOjpVbmRldGVybWluZWQsIGlubGluZVJ1
biwgeyB9IH07CisgICAgcmV0dXJuIHsgUnVuOjpQb3NpdGlvbjo6VW5kZXRlcm1pbmVkLCB7IH0s
IGlubGluZVJ1biB9OwogfQogCiBzdGQ6Om9wdGlvbmFsPEl0ZW1Qb3NpdGlvbj4gSW5saW5lTGlu
ZUJyZWFrZXI6OmFkanVzdFNwbGl0UG9zaXRpb25XaXRoSHlwaGVuYXRpb24oY29uc3QgSW5saW5l
UnVuUHJvdmlkZXI6OlJ1biYsIEl0ZW1Qb3NpdGlvbiwgTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCwg
Ym9vbCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5oCmluZGV4IDE5YTUzZWMwODdkNWU2NjQyNzA1
YmY5NDMyYTczYzk1NGU4MzY4MTAuLjE1M2RkYTg2NDhhOWZiNzA1MjlmNDk4MTdlM2UxMDM4ZDdi
ZTNlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmVCcmVha2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuaApAQCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAg
ICAgc3RydWN0IFJ1biB7CiAgICAgICAgIGVudW0gY2xhc3MgUG9zaXRpb24geyBVbmRldGVybWlu
ZWQsIExpbmVCZWdpbiwgTGluZUVuZCB9OwogICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbjsKLSAg
ICAgICAgSW5saW5lUnVuUHJvdmlkZXI6OlJ1biBpbmxpbmVSdW47CiAgICAgICAgIExheW91dFVu
aXQgd2lkdGg7CisgICAgICAgIElubGluZVJ1blByb3ZpZGVyOjpSdW4gY29udGVudDsKICAgICB9
OwogICAgIHN0ZDo6b3B0aW9uYWw8UnVuPiBuZXh0UnVuKExheW91dFVuaXQgY29udGVudExvZ2lj
YWxMZWZ0LCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoLCBib29sIGxpbmVJc0VtcHR5KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVSdW4u
aAppbmRleCBjMjc3NzU4ZTRiOGYyYjNkNTRjYjQzNjM5NWZmYmVhZmFlOGQyOWJkLi4yODBlNjhi
ZGVmYjlhN2NkMGJiOWYwMTdhZTYwYTgwYmM0MTY1Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVSdW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVSdW4uaApAQCAtMzQsMzMgKzM0LDM3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCiBzdHJ1Y3QgSW5s
aW5lUnVuIHsKLSAgICBJbmxpbmVSdW4oTGF5b3V0VW5pdCBsb2djaWFsTGVmdCwgTGF5b3V0VW5p
dCB3aWR0aCwgY29uc3QgSW5saW5lSXRlbSYpOwotICAgIElubGluZVJ1bihMYXlvdXRVbml0IGxv
Z2NpYWxMZWZ0LCBMYXlvdXRVbml0IHdpZHRoLCBJdGVtUG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0
aCwgY29uc3QgSW5saW5lSXRlbSYpOworICAgIHN0YXRpYyBJbmxpbmVSdW4gY3JlYXRlUnVuKExh
eW91dFVuaXQgbG9nY2lhbExlZnQsIExheW91dFVuaXQgd2lkdGgsIGNvbnN0IElubGluZUl0ZW0m
KTsKKyAgICBzdGF0aWMgSW5saW5lUnVuIGNyZWF0ZVRleHRSdW4oTGF5b3V0VW5pdCBsb2djaWFs
TGVmdCwgTGF5b3V0VW5pdCB3aWR0aCwgSXRlbVBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGgsIGNv
bnN0IElubGluZUl0ZW0mKTsKIAogICAgIExheW91dFVuaXQgbG9naWNhbExlZnQoKSBjb25zdCB7
IHJldHVybiBtX2xvZ2ljYWxMZWZ0OyB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQoKSBj
b25zdCB7IHJldHVybiBsb2dpY2FsTGVmdCgpICsgd2lkdGgoKTsgfQogICAgIExheW91dFVuaXQg
d2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CiAKICAgICB2b2lkIHNldFdpZHRoKExh
eW91dFVuaXQgd2lkdGgpIHsgbV93aWR0aCA9IHdpZHRoOyB9CisgICAgdm9pZCBzZXRMb2dpY2Fs
TGVmdChMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0KSB7IG1fbG9naWNhbExlZnQgPSBsb2dpY2FsTGVm
dDsgfQogICAgIHZvaWQgc2V0TG9naWNhbFJpZ2h0KExheW91dFVuaXQgbG9naWNhbFJpZ2h0KSB7
IG1fd2lkdGggLT0gKHRoaXMtPmxvZ2ljYWxSaWdodCgpIC0gbG9naWNhbFJpZ2h0KTsgfQogCiAg
ICAgc3RydWN0IFRleHRDb250ZXh0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHRDb250ZXh0
KEl0ZW1Qb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKIAotICAgICAgICBJdGVtUG9zaXRpb24g
cG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisgICAgICAgIEl0ZW1Qb3Np
dGlvbiBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7IH0KICAgICAgICAgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KIAogICAgICAgICB2b2lkIHNldExl
bmd0aCh1bnNpZ25lZCBsZW5ndGgpIHsgbV9sZW5ndGggPSBsZW5ndGg7IH0KIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIEl0ZW1Qb3NpdGlvbiBtX3Bvc2l0aW9uOworICAgICAgICBJdGVtUG9zaXRp
b24gbV9zdGFydDsKICAgICAgICAgdW5zaWduZWQgbV9sZW5ndGg7CiAgICAgfTsKICAgICBzdGQ6
Om9wdGlvbmFsPFRleHRDb250ZXh0PiYgdGV4dENvbnRleHQoKSB7IHJldHVybiBtX3RleHRDb250
ZXh0OyB9CiAgICAgY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSgpIGNvbnN0IHsgcmV0dXJu
IG1faW5saW5lSXRlbTsgfQogCiBwcml2YXRlOgorICAgIElubGluZVJ1bihMYXlvdXRVbml0IGxv
Z2NpYWxMZWZ0LCBMYXlvdXRVbml0IHdpZHRoLCBjb25zdCBJbmxpbmVJdGVtJik7CisgICAgSW5s
aW5lUnVuKExheW91dFVuaXQgbG9nY2lhbExlZnQsIExheW91dFVuaXQgd2lkdGgsIEl0ZW1Qb3Np
dGlvbiwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBJbmxpbmVJdGVtJik7CisKICAgICBMYXlvdXRV
bml0IG1fbG9naWNhbExlZnQ7CiAgICAgTGF5b3V0VW5pdCBtX3dpZHRoOwogCkBAIC03MCw2ICs3
NCwxNiBAQCBwcml2YXRlOgogCiB1c2luZyBJbmxpbmVSdW5zID0gVmVjdG9yPElubGluZVJ1bj47
CiAKK2lubGluZSBJbmxpbmVSdW4gSW5saW5lUnVuOjpjcmVhdGVSdW4oTGF5b3V0VW5pdCBsb2dp
Y2FsTGVmdCwgTGF5b3V0VW5pdCB3aWR0aCwgY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSkK
K3sKKyAgICByZXR1cm4geyBsb2dpY2FsTGVmdCwgd2lkdGgsIGlubGluZUl0ZW0gfTsKK30KKwor
aW5saW5lIElubGluZVJ1biBJbmxpbmVSdW46OmNyZWF0ZVRleHRSdW4oTGF5b3V0VW5pdCBsb2dp
Y2FsTGVmdCwgTGF5b3V0VW5pdCB3aWR0aCwgSXRlbVBvc2l0aW9uIHN0YXJ0LCB1bnNpZ25lZCBs
ZW5ndGgsIGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0pCit7CisgICAgcmV0dXJuIHsgbG9n
aWNhbExlZnQsIHdpZHRoLCBzdGFydCwgbGVuZ3RoLCBpbmxpbmVJdGVtIH07Cit9CisKIGlubGlu
ZSBJbmxpbmVSdW46OklubGluZVJ1bihMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBMYXlvdXRVbml0
IHdpZHRoLCBjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKQogICAgIDogbV9sb2dpY2FsTGVm
dChsb2dpY2FsTGVmdCkKICAgICAsIG1fd2lkdGgod2lkdGgpCkBAIC03NywxNiArOTEsMTYgQEAg
aW5saW5lIElubGluZVJ1bjo6SW5saW5lUnVuKExheW91dFVuaXQgbG9naWNhbExlZnQsIExheW91
dFVuaXQgd2lkdGgsIGNvbnN0IElubGkKIHsKIH0KIAotaW5saW5lIElubGluZVJ1bjo6SW5saW5l
UnVuKExheW91dFVuaXQgbG9naWNhbExlZnQsIExheW91dFVuaXQgd2lkdGgsIEl0ZW1Qb3NpdGlv
biBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVt
KQoraW5saW5lIElubGluZVJ1bjo6SW5saW5lUnVuKExheW91dFVuaXQgbG9naWNhbExlZnQsIExh
eW91dFVuaXQgd2lkdGgsIEl0ZW1Qb3NpdGlvbiBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25z
dCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKQogICAgIDogbV9sb2dpY2FsTGVmdChsb2dpY2FsTGVm
dCkKICAgICAsIG1fd2lkdGgod2lkdGgpCiAgICAgLCBtX2lubGluZUl0ZW0oaW5saW5lSXRlbSkK
LSAgICAsIG1fdGV4dENvbnRleHQoVGV4dENvbnRleHQgeyBwb3NpdGlvbiwgbGVuZ3RoIH0pCisg
ICAgLCBtX3RleHRDb250ZXh0KFRleHRDb250ZXh0IHsgc3RhcnQsIGxlbmd0aCB9KQogewogfQog
Ci1pbmxpbmUgSW5saW5lUnVuOjpUZXh0Q29udGV4dDo6VGV4dENvbnRleHQoSXRlbVBvc2l0aW9u
IHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBtX3Bvc2l0aW9uKHBvc2l0aW9uKQor
aW5saW5lIElubGluZVJ1bjo6VGV4dENvbnRleHQ6OlRleHRDb250ZXh0KEl0ZW1Qb3NpdGlvbiBz
dGFydCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogbV9zdGFydChzdGFydCkKICAgICAsIG1fbGVu
Z3RoKGxlbmd0aCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0xpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvTGluZS5jcHAKaW5kZXggMjM0MmJlZWNmMmE0YzU0NGMzNWYxZjVmMTAzMjM4MzI3OGIw
NDQ3NC4uMTFjODlhYjNmNmFiOTc5MGY5YjNkN2NlZDVjMDU0Y2E0NDliOTQ5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZS5jcHAKQEAgLTMzLDE1
ICszMyw0MCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLUlu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjpMaW5lKElubGluZUZvcm1hdHRpbmdTdGF0ZSYg
aW5saW5lRm9ybWF0dGluZ1N0YXRlKQotICAgIDogbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUoaW5s
aW5lRm9ybWF0dGluZ1N0YXRlKQorSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmU6OkxpbmUo
SW5saW5lRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUsIGNvbnN0IEJveCYgZm9ybWF0
dGluZ1Jvb3QpCisgICAgOiBtX2Zvcm1hdHRpbmdTdGF0ZShmb3JtYXR0aW5nU3RhdGUpCisgICAg
LCBtX2Zvcm1hdHRpbmdSb290KGZvcm1hdHRpbmdSb290KQogewogfQogCi12b2lkIElubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpMaW5lOjpzZXRDb25zdHJhaW50cyhMYXlvdXRVbml0IGxpbmVMb2dp
Y2FsTGVmdCwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCkKK3ZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OkxpbmU6OmluaXQoTGF5b3V0VW5pdCBsaW5lTG9naWNhbExlZnQsIExheW91dFVu
aXQgYXZhaWxhYmxlV2lkdGgpCiB7Ci0gICAgbV9jb250ZW50TG9naWNhbExlZnQgPSBsaW5lTG9n
aWNhbExlZnQ7CisgICAgbV9saW5lTG9naWNhbExlZnQgPSBsaW5lTG9naWNhbExlZnQ7CisgICAg
bV9saW5lV2lkdGggPSBhdmFpbGFibGVXaWR0aDsKICAgICBtX2F2YWlsYWJsZVdpZHRoID0gYXZh
aWxhYmxlV2lkdGg7CisgICAgbV9maXJzdFJ1bkluZGV4ID0geyB9OworfQorCitzdGF0aWMgTGF5
b3V0VW5pdCBhZGp1c3RlZExpbmVMb2dpY2FsTGVmdChUZXh0QWxpZ25Nb2RlIGFsaWduLCBMYXlv
dXRVbml0IGxpbmVMb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCByZW1haW5pbmdXaWR0aCkKK3sKKyAg
ICBzd2l0Y2ggKGFsaWduKSB7CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgorICAgIGNh
c2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0
YXJ0OgorICAgICAgICByZXR1cm4gbGluZUxvZ2ljYWxMZWZ0OworICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6UmlnaHQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoKKyAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OkVuZDoKKyAgICAgICAgcmV0dXJuIGxpbmVMb2dpY2FsTGVmdCAr
IHN0ZDo6bWF4KHJlbWFpbmluZ1dpZHRoLCBMYXlvdXRVbml0KCkpOworICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6Q2VudGVyOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgor
ICAgICAgICByZXR1cm4gbGluZUxvZ2ljYWxMZWZ0ICsgc3RkOjptYXgocmVtYWluaW5nV2lkdGgg
LyAyLCBMYXlvdXRVbml0KCkpOworICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbGluZUxvZ2ljYWxMZWZ0OwogfQogCiBz
dGF0aWMgYm9vbCBpc05vbkNvbGxhcHNlZFRleHQoY29uc3QgSW5saW5lUnVuUHJvdmlkZXI6OlJ1
biYgaW5saW5lUnVuKQpAQCAtNTQsMzggKzc5LDQ2IEBAIHN0YXRpYyBib29sIGlzVHJpbW1hYmxl
Q29udGVudChjb25zdCBJbmxpbmVSdW5Qcm92aWRlcjo6UnVuJiBpbmxpbmVSdW4pCiAgICAgcmV0
dXJuIGlubGluZVJ1bi5pc1doaXRlc3BhY2UoKSAmJiBpbmxpbmVSdW4uc3R5bGUoKS5jb2xsYXBz
ZVdoaXRlU3BhY2UoKTsKIH0KIAorTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
TGluZTo6Y29udGVudExvZ2ljYWxSaWdodCgpCit7CisgICAgaWYgKCFtX2ZpcnN0UnVuSW5kZXgu
aGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiBtX2xpbmVMb2dpY2FsTGVmdDsKKworICAgIHJl
dHVybiBtX2Zvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5zKCkubGFzdCgpLmxvZ2ljYWxSaWdodCgp
OworfQorCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjphcHBlbmRDb250ZW50
KGNvbnN0IElubGluZUxpbmVCcmVha2VyOjpSdW4mIHJ1bikKIHsKICAgICBhdXRvIGxhc3RSdW5X
YXNOb3RDb2xsYXBzZWRUZXh0ID0gbV9sYXN0UnVuSXNOb3RDb2xsYXBzZWRUZXh0OwotICAgIGF1
dG8gaGFkQ29udGVudCA9IGhhc0NvbnRlbnQoKTsKLSAgICBhdXRvIGNvbnRlbnRMb2dpY2FsTGVm
dCA9IG1fY29udGVudExvZ2ljYWxMZWZ0OwogICAgIG1fdHJhaWxpbmdUcmltbWFibGVDb250ZW50
ID0geyB9OwotCi0gICAgYXV0byYgaW5saW5lUnVuID0gcnVuLmlubGluZVJ1bjsKICAgICBtX2F2
YWlsYWJsZVdpZHRoIC09IHJ1bi53aWR0aDsKLSAgICBtX2xhc3RSdW5Jc05vdENvbGxhcHNlZFRl
eHQgPSBpc05vbkNvbGxhcHNlZFRleHQoaW5saW5lUnVuKTsKLSAgICBtX2lzRW1wdHkgPSBmYWxz
ZTsKLSAgICBtX2NvbnRlbnRMb2dpY2FsTGVmdCArPSBydW4ud2lkdGg7CisKKyAgICBhdXRvJiBj
b250ZW50ID0gcnVuLmNvbnRlbnQ7CisgICAgbV9sYXN0UnVuSXNOb3RDb2xsYXBzZWRUZXh0ID0g
aXNOb25Db2xsYXBzZWRUZXh0KGNvbnRlbnQpOwogCiAgICAgLy8gQXBwZW5kIHRoaXMgdGV4dCBy
dW4gdG8gdGhlIGVuZCBvZiB0aGUgbGFzdCB0ZXh0IHJ1biwgaWYgdGhlIGxhc3QgcnVuIGlzIGNv
bnRpbnVvdXMuCi0gICAgaWYgKGlubGluZVJ1bi5pc1RleHQoKSkgewotICAgICAgICBhdXRvIHRl
eHRDb250ZXh0ID0gaW5saW5lUnVuLnRleHRDb250ZXh0KCk7CisgICAgc3RkOjpvcHRpb25hbDxJ
bmxpbmVSdW46OlRleHRDb250ZXh0PiB0ZXh0UnVuOworICAgIGlmIChjb250ZW50LmlzVGV4dCgp
KSB7CisgICAgICAgIGF1dG8gdGV4dENvbnRleHQgPSBjb250ZW50LnRleHRDb250ZXh0KCk7CiAg
ICAgICAgIGF1dG8gcnVuTGVuZ3RoID0gdGV4dENvbnRleHQtPmlzQ29sbGFwc2VkKCkgPyAxIDog
dGV4dENvbnRleHQtPmxlbmd0aCgpOwogCi0gICAgICAgIGlmIChpc1RyaW1tYWJsZUNvbnRlbnQo
aW5saW5lUnVuKSkKKyAgICAgICAgaWYgKGlzVHJpbW1hYmxlQ29udGVudChjb250ZW50KSkKICAg
ICAgICAgICAgIG1fdHJhaWxpbmdUcmltbWFibGVDb250ZW50ID0gVHJhaWxpbmdUcmltbWFibGVD
b250ZW50IHsgcnVuLndpZHRoLCBydW5MZW5ndGggfTsKIAotICAgICAgICBpZiAoaGFkQ29udGVu
dCAmJiBsYXN0UnVuV2FzTm90Q29sbGFwc2VkVGV4dCkgewotICAgICAgICAgICAgYXV0byYgaW5s
aW5lUnVuID0gbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUuaW5saW5lUnVucygpLmxhc3QoKTsKKyAg
ICAgICAgaWYgKGhhc0NvbnRlbnQoKSAmJiBsYXN0UnVuV2FzTm90Q29sbGFwc2VkVGV4dCkgewor
ICAgICAgICAgICAgYXV0byYgaW5saW5lUnVuID0gbV9mb3JtYXR0aW5nU3RhdGUuaW5saW5lUnVu
cygpLmxhc3QoKTsKICAgICAgICAgICAgIGlubGluZVJ1bi5zZXRXaWR0aChpbmxpbmVSdW4ud2lk
dGgoKSArIHJ1bi53aWR0aCk7CiAgICAgICAgICAgICBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+
c2V0TGVuZ3RoKGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5sZW5ndGgoKSArIHJ1bkxlbmd0aCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbV9pbmxp
bmVGb3JtYXR0aW5nU3RhdGUuYXBwZW5kSW5saW5lUnVuKHsgY29udGVudExvZ2ljYWxMZWZ0LCBy
dW4ud2lkdGgsIHRleHRDb250ZXh0LT5zdGFydCgpLCBydW5MZW5ndGgsIGlubGluZVJ1bi5pbmxp
bmVJdGVtKCl9KTsKKyAgICAgICAgdGV4dFJ1biA9IElubGluZVJ1bjo6VGV4dENvbnRleHQgeyB0
ZXh0Q29udGV4dC0+c3RhcnQoKSwgcnVuTGVuZ3RoIH07CiAgICAgfQogCi0gICAgbV9pbmxpbmVG
b3JtYXR0aW5nU3RhdGUuYXBwZW5kSW5saW5lUnVuKHsgY29udGVudExvZ2ljYWxMZWZ0LCBydW4u
d2lkdGgsIGlubGluZVJ1bi5pbmxpbmVJdGVtKCkgfSk7CisgICAgaWYgKHRleHRSdW4pCisgICAg
ICAgIG1fZm9ybWF0dGluZ1N0YXRlLmFwcGVuZElubGluZVJ1bihJbmxpbmVSdW46OmNyZWF0ZVRl
eHRSdW4oY29udGVudExvZ2ljYWxSaWdodCgpLCBydW4ud2lkdGgsIHRleHRSdW4tPnN0YXJ0KCks
IHRleHRSdW4tPmxlbmd0aCgpLCBjb250ZW50LmlubGluZUl0ZW0oKSkpOworICAgIGVsc2UKKyAg
ICAgICAgbV9mb3JtYXR0aW5nU3RhdGUuYXBwZW5kSW5saW5lUnVuKElubGluZVJ1bjo6Y3JlYXRl
UnVuKGNvbnRlbnRMb2dpY2FsUmlnaHQoKSwgcnVuLndpZHRoLCBjb250ZW50LmlubGluZUl0ZW0o
KSkpOworICAgIG1fZmlyc3RSdW5JbmRleCA9IG1fZmlyc3RSdW5JbmRleC52YWx1ZV9vcihtX2Zv
cm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5zKCkuc2l6ZSgpIC0gMSk7CiB9CiAKIHZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OkxpbmU6OmNsb3NlKCkKQEAgLTk1LDE4ICsxMjgsNDEgQEAgdm9p
ZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6Y2xvc2UoKQogICAgICAgICBpZiAoIW1f
dHJhaWxpbmdUcmltbWFibGVDb250ZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGF1dG8mIGxhc3RJbmxpbmVSdW4gPSBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5z
KCkubGFzdCgpOworICAgICAgICBhdXRvJiBsYXN0SW5saW5lUnVuID0gbV9mb3JtYXR0aW5nU3Rh
dGUuaW5saW5lUnVucygpLmxhc3QoKTsKICAgICAgICAgbGFzdElubGluZVJ1bi5zZXRXaWR0aChs
YXN0SW5saW5lUnVuLndpZHRoKCkgLSBtX3RyYWlsaW5nVHJpbW1hYmxlQ29udGVudC0+d2lkdGgp
OwogICAgICAgICBsYXN0SW5saW5lUnVuLnRleHRDb250ZXh0KCktPnNldExlbmd0aChsYXN0SW5s
aW5lUnVuLnRleHRDb250ZXh0KCktPmxlbmd0aCgpIC0gbV90cmFpbGluZ1RyaW1tYWJsZUNvbnRl
bnQtPmxlbmd0aCk7CiAKLSAgICAgICAgaWYgKCFsYXN0SW5saW5lUnVuLnRleHRDb250ZXh0KCkt
Pmxlbmd0aCgpKQotICAgICAgICAgICAgbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUuaW5saW5lUnVu
cygpLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgaWYgKCFsYXN0SW5saW5lUnVuLnRleHRDb250ZXh0
KCktPmxlbmd0aCgpKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5z
KCkucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgaWYgKG1fZmlyc3RSdW5JbmRleC52YWx1ZSgp
KQorICAgICAgICAgICAgICAgIC0tKm1fZmlyc3RSdW5JbmRleDsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBtX2ZpcnN0UnVuSW5kZXggPSB7IH07CisgICAgICAgIH0KICAgICAg
ICAgbV9hdmFpbGFibGVXaWR0aCArPSBtX3RyYWlsaW5nVHJpbW1hYmxlQ29udGVudC0+d2lkdGg7
CiAgICAgICAgIG1fdHJhaWxpbmdUcmltbWFibGVDb250ZW50ID0geyB9OwogICAgIH07CiAKKyAg
ICBhdXRvIGFsaWduUnVucyA9IFsmXSgpIHsKKworICAgICAgICBpZiAoIWhhc0NvbnRlbnQoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIGFkanVzdGVkTG9naWNhbExlZnQg
PSBhZGp1c3RlZExpbmVMb2dpY2FsTGVmdChtX2Zvcm1hdHRpbmdSb290LnN0eWxlKCkudGV4dEFs
aWduKCksIG1fbGluZUxvZ2ljYWxMZWZ0LCBtX2F2YWlsYWJsZVdpZHRoKTsKKyAgICAgICAgaWYg
KG1fbGluZUxvZ2ljYWxMZWZ0ID09IGFkanVzdGVkTG9naWNhbExlZnQpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgYXV0byYgaW5saW5lUnVucyA9IG1fZm9ybWF0dGluZ1N0YXRlLmlu
bGluZVJ1bnMoKTsKKyAgICAgICAgYXV0byBkZWx0YSA9IGFkanVzdGVkTG9naWNhbExlZnQgLSBt
X2xpbmVMb2dpY2FsTGVmdDsKKyAgICAgICAgZm9yIChhdXRvIHJ1bkluZGV4ID0gKm1fZmlyc3RS
dW5JbmRleDsgcnVuSW5kZXggPCBpbmxpbmVSdW5zLnNpemUoKTsgKytydW5JbmRleCkKKyAgICAg
ICAgICAgIGlubGluZVJ1bnNbcnVuSW5kZXhdLnNldExvZ2ljYWxMZWZ0KGlubGluZVJ1bnNbcnVu
SW5kZXhdLmxvZ2ljYWxMZWZ0KCkgKyBkZWx0YSk7CisgICAgfTsKKworICAgIGlmICghaGFzQ29u
dGVudCgpKQorICAgICAgICByZXR1cm47CisKICAgICB0cmltVHJhaWxpbmdDb250ZW50KCk7Ci0g
ICAgbV9pc0VtcHR5ID0gdHJ1ZTsKKyAgICBhbGlnblJ1bnMoKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3Bw
CmluZGV4IGY0ZmMyZjk4ZWM2MDUwNDBjZTA0OTYzODA1YjBiZjMzNzFlODY3NTMuLjM3ZGYzY2E3
MDUwOTJkMWE1ODQwZmU5ZTdkZDZlNzlmOWUxYmU3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTE0NSw3
ICsxNDUsNyBAQCBzdGF0aWMgdm9pZCBvdXRwdXRJbmxpbmVSdW5zKFRleHRTdHJlYW0mIHN0cmVh
bSwgY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udAogICAgICAgICAgICAgc3RyZWFtIDw8
ICIgIjsKICAgICAgICAgc3RyZWFtIDw8ICJydW4iOwogICAgICAgICBpZiAoaW5saW5lUnVuLnRl
eHRDb250ZXh0KCkpCi0gICAgICAgICAgICBzdHJlYW0gPDwgIigiIDw8IGlubGluZVJ1bi50ZXh0
Q29udGV4dCgpLT5wb3NpdGlvbigpIDw8ICIsICIgPDwgaW5saW5lUnVuLnRleHRDb250ZXh0KCkt
PnBvc2l0aW9uKCkgKyBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+bGVuZ3RoKCkgPDwgIikgIjsK
KyAgICAgICAgICAgIHN0cmVhbSA8PCAiKCIgPDwgaW5saW5lUnVuLnRleHRDb250ZXh0KCktPnN0
YXJ0KCkgPDwgIiwgIiA8PCBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+c3RhcnQoKSArIGlubGlu
ZVJ1bi50ZXh0Q29udGV4dCgpLT5sZW5ndGgoKSA8PCAiKSAiOwogICAgICAgICBzdHJlYW0gPDwg
IigiIDw8IGlubGluZVJ1bi5sb2dpY2FsTGVmdCgpIDw8ICIsICIgPDwgaW5saW5lUnVuLmxvZ2lj
YWxSaWdodCgpIDw8ICIpIjsKICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAgfQo=
</data>
<flag name="review"
          id="370045"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>