<?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>172060</bug_id>
          
          <creation_ts>2017-05-12 16:45:04 -0700</creation_ts>
          <short_desc>Web Automation: upstream safaridriver&apos;s JavaScript atom implementations</short_desc>
          <delta_ts>2017-07-12 03:56:33 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=174024</see_also>
          <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>
          
          <blocked>166679</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>cgarcia</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1308155</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-05-12 16:45:04 -0700</bug_when>
    <thetext>Carlos would like to use these and we have no reason to not put this into the tree. For safaridriver&apos;s purposes, I think we can load these from WebKit2&apos;s bundle resources at runtime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308156</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-12 16:45:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/32168187&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314108</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-31 00:18:16 -0700</bug_when>
    <thetext>Ping :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327430</commentid>
    <comment_count>3</comment_count>
      <attachid>315098</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-07-11 05:44:07 -0700</bug_when>
    <thetext>Created attachment 315098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327522</commentid>
    <comment_count>4</comment_count>
      <attachid>315098</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-07-11 09:32:10 -0700</bug_when>
    <thetext>Comment on attachment 315098
Patch

r=me, but I have changed my mind about where these should go. It would be better to put these in Source/WebKit2/UIProcess/Automation/atoms/, so they can be bulk copied without having to specify each by name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327600</commentid>
    <comment_count>5</comment_count>
      <attachid>315098</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-07-11 11:11:20 -0700</bug_when>
    <thetext>Comment on attachment 315098
Patch

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

&gt; Source/WebKit2/ChangeLog:16
&gt; +        * UIProcess/Automation/ElementAttribute.js: Added.
&gt; +        (lowercaseAttributeName.string_appeared_here.lowercaseAttributeName.string_appeared_here.switch):
&gt; +        (tagName.string_appeared_here.lowercaseAttributeName.string_appeared_here):
&gt; +        (catch):
&gt; +        * UIProcess/Automation/ElementDisplayed.js: Added.
&gt; +        (isShown.nodeIsElement):
&gt; +        (isShown.parentElementForElement):
&gt; +        (isShown.enclosingNodeOrSelfMatchingPredicate):

You can probably stop this to just the file names. I don&apos;t think the functions add value here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327617</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-07-11 11:32:14 -0700</bug_when>
    <thetext>&gt; You can probably stop this...

I meant strip this =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327994</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-07-12 03:56:33 -0700</bug_when>
    <thetext>Committed r219388: &lt;http://trac.webkit.org/changeset/219388&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315098</attachid>
            <date>2017-07-11 05:44:07 -0700</date>
            <delta_ts>2017-07-11 09:32:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-webdriver-atoms.diff</filename>
            <type>text/plain</type>
            <size>23495</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiMTU3YmZmZjc2Ny4uMjJhOTgxYmVkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxNy0wNy0xMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgV2ViIEF1dG9tYXRpb246IHVwc3RyZWFtIHNhZmFyaWRyaXZl
cidzIEphdmFTY3JpcHQgYXRvbSBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjA2MAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzIxNjgxODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9FbGVtZW50QXR0cmlidXRlLmpzOiBBZGRlZC4K
KyAgICAgICAgKGxvd2VyY2FzZUF0dHJpYnV0ZU5hbWUuc3RyaW5nX2FwcGVhcmVkX2hlcmUubG93
ZXJjYXNlQXR0cmlidXRlTmFtZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zd2l0Y2gpOgorICAgICAg
ICAodGFnTmFtZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5sb3dlcmNhc2VBdHRyaWJ1dGVOYW1lLnN0
cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQXV0b21hdGlvbi9FbGVtZW50RGlzcGxheWVkLmpzOiBBZGRlZC4KKyAgICAgICAgKGlzU2hv
d24ubm9kZUlzRWxlbWVudCk6CisgICAgICAgIChpc1Nob3duLnBhcmVudEVsZW1lbnRGb3JFbGVt
ZW50KToKKyAgICAgICAgKGlzU2hvd24uZW5jbG9zaW5nTm9kZU9yU2VsZk1hdGNoaW5nUHJlZGlj
YXRlKToKKyAgICAgICAgKGlzU2hvd24uZW5jbG9zaW5nRWxlbWVudE9yU2VsZk1hdGNoaW5nUHJl
ZGljYXRlKToKKyAgICAgICAgKGlzU2hvd24uY2FzY2FkZWRTdHlsZVByb3BlcnR5Rm9yRWxlbWVu
dCk6CisgICAgICAgIChpc1Nob3duLmVsZW1lbnRTdWJ0cmVlSGFzTm9uWmVyb0RpbWVuc2lvbnMp
OgorICAgICAgICAoaXNTaG93bik6CisgICAgICAgIChpc1Nob3duLmlzRWxlbWVudFN1YnRyZWVI
aWRkZW5CeU92ZXJmbG93KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9GaW5kTm9k
ZXMuanM6IEFkZGVkLgorICAgICAgICAoc3dpdGNoKToKKyAgICAgICAgKGVzY2FwZSk6CisgICAg
ICAgICh0cnlUb0ZpbmROb2RlKToKKyAgICAgICAgKHBvbGxGb3JOb2RlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXV0b21hdGlvbi9Gb3JtRWxlbWVudENsZWFyLmpzOiBBZGRlZC4KKyAgICAgICAg
KGVsZW1lbnQuaW5zdGFuY2VvZi5IVE1MSW5wdXRFbGVtZW50LnN3aXRjaCk6CisgICAgICAgICog
VUlQcm9jZXNzL0F1dG9tYXRpb24vRm9ybVN1Ym1pdC5qczogQWRkZWQuCisKIDIwMTctMDctMTAg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2Ug
TG9hZCBTdGF0aXN0aWNzOiBQcnVuZSBzdGF0aXN0aWNzIGluIG9yZGVycyBvZiBpbXBvcnRhbmNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9FbGVtZW50
QXR0cmlidXRlLmpzIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vRWxlbWVu
dEF0dHJpYnV0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2E0
MWY2OWZjMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b21hdGlvbi9FbGVtZW50QXR0cmlidXRlLmpzCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitmdW5jdGlvbihlbGVtZW50LCBhdHRyaWJ1dGVOYW1lKSB7CisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgbGV0IGxvd2VyY2FzZUF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGVOYW1lLnRvTG93ZXJD
YXNlKCk7CisgICAgbGV0IHRhZ05hbWUgPSBlbGVtZW50LnRhZ05hbWUudG9VcHBlckNhc2UoKTsK
KworICAgIC8vIFNwZWNpYWwgQ2FzZTogInNlbGVjdGVkIiAvICJjaGVja2VkIiB3b3JrIGFuYWxv
Z291c2x5CisgICAgLy8gb24gb3B0aW9ucyBhbmQgY2hlY2tib3hlcy4KKyAgICBpZiAobG93ZXJj
YXNlQXR0cmlidXRlTmFtZSA9PT0gInNlbGVjdGVkIiB8fCBsb3dlcmNhc2VBdHRyaWJ1dGVOYW1l
ID09PSAiY2hlY2tlZCIpIHsKKyAgICAgICAgc3dpdGNoICh0YWdOYW1lKSB7CisgICAgICAgIGNh
c2UgIk9QVElPTiI6CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudC5zZWxlY3RlZCA/ICJ0cnVl
IiA6IG51bGw7CisgICAgICAgIGNhc2UgIklOUFVUIjoKKyAgICAgICAgICAgIGlmIChlbGVtZW50
LnR5cGUgPT09ICJjaGVja2JveCIgfHwgZWxlbWVudC50eXBlID09PSAicmFkaW8iKQorICAgICAg
ICAgICAgICAgIHJldHVybiBlbGVtZW50LmNoZWNrZWQgPyAidHJ1ZSIgOiBudWxsOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBTcGVjaWFsIENhc2U6IEZv
ciBpbWFnZXMgYW5kIGxpbmtzLCByZXF1aXJlIHRoZSBleGlzdGVuY2Ugb2YKKyAgICAvLyB0aGUg
YXR0cmlidXRlIGJlZm9yZSBhY2Nlc3NpbmcgdGhlIHByb3BlcnR5LgorICAgIGlmICgodGFnTmFt
ZSA9PT0gIklNRyIgJiYgbG93ZXJjYXNlQXR0cmlidXRlTmFtZSA9PT0gInNyYyIpIHx8ICh0YWdO
YW1lID09PSAiQSIgJiYgbG93ZXJjYXNlQXR0cmlidXRlTmFtZSA9PT0gImhyZWYiKSkgeworICAg
ICAgICBsZXQgdmFsdWUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShsb3dlcmNhc2VBdHRyaWJ1dGVO
YW1lKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlID8gZWxlbWVudFtsb3dlcmNhc2VBdHRyaWJ1dGVO
YW1lXSA6IHZhbHVlOworICAgIH0KKworICAgIC8vIFByZWZlciB0aGUgZWxlbWVudCdzIHByb3Bl
cnR5IG92ZXIgdGhlIGF0dHJpYnV0ZSBpZiB0aGUKKyAgICAvLyBwcm9wZXJ0eSB2YWx1ZSBpcyBu
b3QgbnVsbCBhbmQgbm90IGFuIG9iamVjdC4gRm9yIGJvb2xlYW4KKyAgICAvLyBwcm9wZXJ0aWVz
IHJldHVybiBudWxsIGlmIGZhbHNlLgorICAgIHRyeSB7CisgICAgICAgIGNvbnN0IHByb3BlcnR5
TmFtZUFsaWFzZXMgPSB7ImNsYXNzIjogImNsYXNzTmFtZSIsICJyZWFkb25seSI6ICJyZWFkT25s
eSJ9OworICAgICAgICBsZXQgcHJvcGVydHlOYW1lID0gcHJvcGVydHlOYW1lQWxpYXNlc1thdHRy
aWJ1dGVOYW1lXSB8fCBhdHRyaWJ1dGVOYW1lOworICAgICAgICBsZXQgdmFsdWUgPSBlbGVtZW50
W3Byb3BlcnR5TmFtZV07CisgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1
ZSAhPT0gIm9iamVjdCIpIHsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICJib29s
ZWFuIikKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPyAidHJ1ZSIgOiBudWxsOworICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICB9IGNhdGNo
IChlKSB7IH0KKworICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0Vs
ZW1lbnREaXNwbGF5ZWQuanMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9F
bGVtZW50RGlzcGxheWVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li4yYWY0OWJhMWNjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL0VsZW1lbnREaXNwbGF5ZWQuanMKQEAgLTAsMCArMSwyMDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitmdW5jdGlvbiBpc1Nob3duKGVsZW1lbnQpIHsKKyAgICAidXNlIHN0cmljdCI7CisK
KyAgICBmdW5jdGlvbiBub2RlSXNFbGVtZW50KG5vZGUpIHsKKyAgICAgICAgaWYgKCFub2RlKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHN3aXRjaCAobm9kZS5ub2RlVHlw
ZSkgeworICAgICAgICBjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOgorICAgICAgICBjYXNlIE5vZGUu
RE9DVU1FTlRfTk9ERToKKyAgICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gcGFyZW50
RWxlbWVudEZvckVsZW1lbnQoZWxlbWVudCkgeworICAgICAgICBpZiAoIWVsZW1lbnQpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICByZXR1cm4gZW5jbG9zaW5nTm9kZU9yU2Vs
Zk1hdGNoaW5nUHJlZGljYXRlKGVsZW1lbnQucGFyZW50Tm9kZSwgbm9kZUlzRWxlbWVudCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gZW5jbG9zaW5nTm9kZU9yU2VsZk1hdGNoaW5nUHJlZGljYXRl
KHRhcmdldE5vZGUsIHByZWRpY2F0ZSkgeworICAgICAgICBmb3IgKGxldCBub2RlID0gdGFyZ2V0
Tm9kZTsgbm9kZSAmJiBub2RlICE9PSB0YXJnZXROb2RlLm93bmVyRG9jdW1lbnQ7IG5vZGUgPSBu
b2RlLnBhcmVudE5vZGUpCisgICAgICAgICAgICBpZiAocHJlZGljYXRlKG5vZGUpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBub2RlOworCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGVuY2xvc2luZ0VsZW1lbnRPclNlbGZNYXRjaGluZ1ByZWRpY2F0ZSh0YXJn
ZXRFbGVtZW50LCBwcmVkaWNhdGUpIHsKKyAgICAgICAgZm9yIChsZXQgZWxlbWVudCA9IHRhcmdl
dEVsZW1lbnQ7IGVsZW1lbnQgJiYgZWxlbWVudCAhPT0gdGFyZ2V0RWxlbWVudC5vd25lckRvY3Vt
ZW50OyBlbGVtZW50ID0gcGFyZW50RWxlbWVudEZvckVsZW1lbnQoZWxlbWVudCkpCisgICAgICAg
ICAgICBpZiAocHJlZGljYXRlKGVsZW1lbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBlbGVt
ZW50OworCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNhc2Nh
ZGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQoZWxlbWVudCwgcHJvcGVydHkpIHsKKyAgICAgICAg
aWYgKCFlbGVtZW50IHx8ICFwcm9wZXJ0eSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisg
ICAgICAgIGxldCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVu
dCk7CisgICAgICAgIGxldCBjb21wdXRlZFN0eWxlUHJvcGVydHkgPSBjb21wdXRlZFN0eWxlLmdl
dFByb3BlcnR5VmFsdWUocHJvcGVydHkpOworICAgICAgICBpZiAoY29tcHV0ZWRTdHlsZVByb3Bl
cnR5ICYmIGNvbXB1dGVkU3R5bGVQcm9wZXJ0eSAhPT0gImluaGVyaXQiKQorICAgICAgICAgICAg
cmV0dXJuIGNvbXB1dGVkU3R5bGVQcm9wZXJ0eTsKKworICAgICAgICAvLyBJZGVhbGx5IGdldFBy
b3BlcnR5VmFsdWUgd291bGQgcmV0dXJuIHRoZSAndXNlZCcgb3IgJ2FjdHVhbCcgdmFsdWUsIGJ1
dAorICAgICAgICAvLyBpdCBkb2Vzbid0IGZvciBsZWdhY3kgcmVhc29ucy4gU28gd2UgbmVlZCB0
byBkbyBvdXIgb3duIHBvb3IgbWFuJ3MgY2FzY2FkZS4KKyAgICAgICAgLy8gRmFsbCBiYWNrIHRv
IHRoZSBmaXJzdCBub24tJ2luaGVyaXQnIHZhbHVlIGZvdW5kIGluIGFuIGFuY2VzdG9yLgorICAg
ICAgICAvLyBJbiBhbnkgY2FzZSwgZ2V0UHJvcGVydHlWYWx1ZSB3aWxsIG5vdCByZXR1cm4gJ2lu
aXRpYWwnLgorCisgICAgICAgIC8vIEZJWE1FOiB3aWxsIHRoaXMgaW5jb3JyZWN0bHkgaW5oZXJp
dCBub24taW5oZXJpdGFibGUgQ1NTIHByb3BlcnRpZXM/CisgICAgICAgIC8vIEkgdGhpbmsgYWxs
IGltcG9ydGFudCBub24taW5oZXJpdGFibGUgcHJvcGVydGllcyAod2lkdGgsIGhlaWdodCwgZXRj
LikKKyAgICAgICAgLy8gZm9yIG91ciBwdXJwb3NlcyBoZXJlIGFyZSBzcGVjaWFsbHkgcmVzb2x2
ZWQsIHNvIHRoaXMgbWF5IG5vdCBiZSBhbiBpc3N1ZS4KKyAgICAgICAgLy8gU3BlY2lmaWNhdGlv
biBpcyBoZXJlOiBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3Jlc29sdmVkLXZhbHVl
cworICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IHBhcmVudEVsZW1lbnRGb3JFbGVtZW50KGVs
ZW1lbnQpOworICAgICAgICByZXR1cm4gY2FzY2FkZWRTdHlsZVByb3BlcnR5Rm9yRWxlbWVudChw
YXJlbnRFbGVtZW50LCBwcm9wZXJ0eSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZWxlbWVudFN1
YnRyZWVIYXNOb25aZXJvRGltZW5zaW9ucyhlbGVtZW50KSB7CisgICAgICAgIGxldCBib3VuZGlu
Z0JveCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIGlmIChib3Vu
ZGluZ0JveC53aWR0aCA+IDAgJiYgYm91bmRpbmdCb3guaGVpZ2h0ID4gMCkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgICAgIC8vIFBhdGhzIGNhbiBoYXZlIGEgemVybyB3aWR0aCBv
ciBoZWlnaHQuIFRyZWF0IHRoZW0gYXMgc2hvd24gaWYgdGhlIHN0cm9rZSB3aWR0aCBpcyBwb3Np
dGl2ZS4KKyAgICAgICAgaWYgKGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpID09PSAiUEFU
SCIgJiYgYm91bmRpbmdCb3gud2lkdGggKyBib3VuZGluZ0JveC5oZWlnaHQgPiAwKSB7CisgICAg
ICAgICAgICBsZXQgc3Ryb2tlV2lkdGggPSBjYXNjYWRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50
KGVsZW1lbnQsICJzdHJva2Utd2lkdGgiKTsKKyAgICAgICAgICAgIHJldHVybiAhIXN0cm9rZVdp
ZHRoICYmIChwYXJzZUludChzdHJva2VXaWR0aCwgMTApID4gMCk7CisgICAgICAgIH0KKworICAg
ICAgICBsZXQgY2FzY2FkZWRPdmVyZmxvdyA9IGNhc2NhZGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1l
bnQoZWxlbWVudCwgIm92ZXJmbG93Iik7CisgICAgICAgIGlmIChjYXNjYWRlZE92ZXJmbG93ID09
PSAiaGlkZGVuIikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBJZiB0
aGUgY29udGFpbmVyJ3Mgb3ZlcmZsb3cgaXMgbm90IGhpZGRlbiBhbmQgaXQgaGFzIHplcm8gc2l6
ZSwgY29uc2lkZXIgdGhlCisgICAgICAgIC8vIGNvbnRhaW5lciB0byBoYXZlIG5vbi16ZXJvIGRp
bWVuc2lvbnMgaWYgYSBjaGlsZCBub2RlIGhhcyBub24temVybyBkaW1lbnNpb25zLgorICAgICAg
ICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmNoaWxkTm9kZXMpLnNvbWUoKGNoaWxkTm9kZSkg
PT4geworICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05P
REUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIGlmIChub2Rl
SXNFbGVtZW50KGNoaWxkTm9kZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRTdWJ0
cmVlSGFzTm9uWmVyb0RpbWVuc2lvbnMoY2hpbGROb2RlKTsKKworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBlbGVtZW50T3ZlcmZs
b3dzQ29udGFpbmVyKGVsZW1lbnQpIHsKKyAgICAgICAgbGV0IGNhc2NhZGVkT3ZlcmZsb3cgPSBj
YXNjYWRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50KGVsZW1lbnQsICJvdmVyZmxvdyIpOworICAg
ICAgICBpZiAoY2FzY2FkZWRPdmVyZmxvdyAhPT0gImhpZGRlbiIpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgLy8gRklYTUU6IHRoaXMgbmVlZHMgdG8gdGFrZSBpbnRvIGFj
Y291bnQgdGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgZWxlbWVudCwKKyAgICAgICAgLy8gdGhl
IGRpc3BsYXkgbW9kZXMgb2YgaXQgYW5kIGl0cyBhbmNlc3RvcnMsIGFuZCB0aGUgY29udGFpbmVy
IGl0IG92ZXJmbG93cy4KKyAgICAgICAgLy8gU2VlIFNlbGVuaXVtJ3MgYm90LmRvbS5nZXRPdmVy
Zmxvd1N0YXRlIGF0b20gZm9yIGFuIGV4aGF1c3RpdmUgbGlzdCBvZiBlZGdlIGNhc2VzLgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBpc0VsZW1lbnRTdWJ0cmVl
SGlkZGVuQnlPdmVyZmxvdyhlbGVtZW50KSB7CisgICAgICAgIGlmICghZWxlbWVudCkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoIWVsZW1lbnRPdmVyZmxvd3NDb250
YWluZXIoZWxlbWVudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8g
VGhpcyBlbGVtZW50J3Mgc3VidHJlZSBpcyBoaWRkZW4gYnkgb3ZlcmZsb3cgaWYgYWxsIGNoaWxk
IHN1YnRyZWVzIGFyZSBhcyB3ZWxsLgorICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50
LmNoaWxkTm9kZXMpLmV2ZXJ5KChjaGlsZE5vZGUpID0+IHsKKyAgICAgICAgICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgY2hpbGQgbm9kZSBpcyBvdmVyZmxvd2VkIG9yIG90aGVyd2lzZSBoaWRk
ZW4uCisgICAgICAgICAgICAvLyBCYXNlIGNhc2U6IG5vdCBhbiBlbGVtZW50LCBoYXMgemVybyBz
aXplLCBzY3JvbGxlZCBvdXQsIG9yIGRvZXNuJ3Qgb3ZlcmZsb3cgY29udGFpbmVyLgorICAgICAg
ICAgICAgaWYgKCFub2RlSXNFbGVtZW50KGNoaWxkTm9kZSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICAgICAgICAgIGlmICghZWxlbWVudFN1YnRyZWVIYXNOb25aZXJvRGlt
ZW5zaW9ucyhjaGlsZE5vZGUpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
ICAgICAgICAvLyBSZWN1cnNlLgorICAgICAgICAgICAgcmV0dXJuIGlzRWxlbWVudFN1YnRyZWVI
aWRkZW5CeU92ZXJmbG93KGNoaWxkTm9kZSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIC8v
IFRoaXMgaXMgYSBwYXJ0aWFsIHJlaW1wbGVtZW50YXRpb24gb2YgU2VsZW5pdW0ncyAiZWxlbWVu
dCBpcyBkaXNwbGF5ZWQiIGFsZ29yaXRobS4KKyAgICAvLyBXaGVuIHRoZSBXM0Mgc3BlY2lmaWNh
dGlvbidzIGFsZ29yaXRobSBzdGFiaWxpemVzLCB3ZSBzaG91bGQgaW1wbGVtZW50IHRoYXQuCisK
KyAgICBpZiAoIShlbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudCkpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiQ2Fubm90IGNoZWNrIHRoZSBkaXNwbGF5ZWRuZXNzIG9mIGEgbm9uLUVsZW1lbnQg
YXJndW1lbnQuIik7CisKKyAgICAvLyBJZiB0aGlzIGNvbW1hbmQgaXMgbWlzZGlyZWN0ZWQgdG8g
dGhlIHdyb25nIGRvY3VtZW50LCB0cmVhdCBpdCBhcyBub3Qgc2hvd24uCisgICAgaWYgKCFkb2N1
bWVudC5jb250YWlucyhlbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
U3BlY2lhbCBjYXNlcyBmb3Igc3BlY2lmaWMgdGFnIG5hbWVzLgorICAgIHN3aXRjaCAoZWxlbWVu
dC50YWdOYW1lLnRvVXBwZXJDYXNlKCkpIHsKKyAgICBjYXNlICJCT0RZIjoKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICBjYXNlICJTQ1JJUFQiOgorICAgIGNhc2UgIk5PU0NSSVBUIjoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2FzZSAiT1BUR1JPVVAiOgorICAgIGNhc2UgIk9Q
VElPTiI6CisgICAgICAgIC8vIE9wdGlvbi9vcHRncm91cCBhcmUgY29uc2lkZXJlZCBzaG93biBp
ZiB0aGUgY29udGFpbmluZyA8c2VsZWN0PiBpcyBzaG93bi4KKyAgICAgICAgbGV0IGVuY2xvc2lu
Z1NlbGVjdEVsZW1lbnQgPSBlbmNsb3NpbmdOb2RlT3JTZWxmTWF0Y2hpbmdQcmVkaWNhdGUoZWxl
bWVudCwgKGUpID0+IGUudGFnTmFtZS50b1VwcGVyQ2FzZSgpID09PSAiU0VMRUNUIik7CisgICAg
ICAgIHJldHVybiBpc1Nob3duKGVuY2xvc2luZ1NlbGVjdEVsZW1lbnQpOworCisgICAgY2FzZSAi
SU5QVVQiOgorICAgICAgICAvLyA8aW5wdXQgdHlwZT0iaGlkZGVuIj4gaXMgY29uc2lkZXJlZCBu
b3Qgc2hvd24uCisgICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICJoaWRkZW4iKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgIk1BUCI6Cisg
ICAgICAgIC8vIEZJWE1FOiBTZWxlbml1bSBoYXMgc3BlY2lhbCBoYW5kbGluZyBmb3IgPG1hcD4g
ZWxlbWVudHMuIFdlIGRvbid0IGRvIGFueXRoaW5nIG5vdy4KKworICAgIGRlZmF1bHQ6CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChjYXNjYWRlZFN0eWxlUHJvcGVydHlGb3JFbGVt
ZW50KGVsZW1lbnQsICJ2aXNpYmlsaXR5IikgIT09ICJ2aXNpYmxlIikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgbGV0IGhhc0FuY2VzdG9yV2l0aFplcm9PcGFjaXR5ID0gISFlbmNsb3Np
bmdFbGVtZW50T3JTZWxmTWF0Y2hpbmdQcmVkaWNhdGUoZWxlbWVudCwgKGUpID0+IHsKKyAgICAg
ICAgcmV0dXJuIE51bWJlcihjYXNjYWRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50KGUsICJvcGFj
aXR5IikpID09PSAwOworICAgIH0pOworICAgIGxldCBoYXNBbmNlc3RvcldpdGhEaXNwbGF5Tm9u
ZSA9ICEhZW5jbG9zaW5nRWxlbWVudE9yU2VsZk1hdGNoaW5nUHJlZGljYXRlKGVsZW1lbnQsIChl
KSA9PiB7CisgICAgICAgIHJldHVybiBjYXNjYWRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50KGUs
ICJkaXNwbGF5IikgPT09ICJub25lIjsKKyAgICB9KTsKKyAgICBpZiAoaGFzQW5jZXN0b3JXaXRo
WmVyb09wYWNpdHkgfHwgaGFzQW5jZXN0b3JXaXRoRGlzcGxheU5vbmUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghZWxlbWVudFN1YnRyZWVIYXNOb25aZXJvRGltZW5zaW9ucyhl
bGVtZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzRWxlbWVudFN1YnRy
ZWVIaWRkZW5CeU92ZXJmbG93KGVsZW1lbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL0ZpbmROb2Rlcy5qcyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL0ZpbmROb2Rlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
NWM4ZGNmZWZjZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9GaW5kTm9kZXMuanMKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitm
dW5jdGlvbihzdHJhdGVneSwgYW5jZXN0b3JFbGVtZW50LCBxdWVyeSwgZmlyc3RSZXN1bHRPbmx5
LCB0aW1lb3V0RHVyYXRpb24sIGNhbGxiYWNrKSB7CisgICAgYW5jZXN0b3JFbGVtZW50ID0gYW5j
ZXN0b3JFbGVtZW50IHx8IGRvY3VtZW50OworCisgICAgc3dpdGNoIChzdHJhdGVneSkgeworICAg
IGNhc2UgImlkIjoKKyAgICAgICAgc3RyYXRlZ3kgPSAiY3NzIHNlbGVjdG9yIjsKKyAgICAgICAg
cXVlcnkgPSAiW2lkPVwiIiArIGVzY2FwZShxdWVyeSkgKyAiXCJdIjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSAibmFtZSI6CisgICAgICAgIHN0cmF0ZWd5ID0gImNzcyBzZWxlY3RvciI7Cisg
ICAgICAgIHF1ZXJ5ID0gIltuYW1lPVwiIiArIGVzY2FwZShxdWVyeSkgKyAiXCJdIjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSAibGluayB0ZXh0IjoKKyAgICAgICAgc3RyYXRlZ3kgPSAieHBh
dGgiOworICAgICAgICBxdWVyeSA9ICIuLy9hW0BocmVmXVt0ZXh0KCkgPSBcIiIgKyBlc2NhcGUo
cXVlcnkpICsgIlwiXSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgInBhcnRpYWwgbGluayB0
ZXh0IjoKKyAgICAgICAgc3RyYXRlZ3kgPSAieHBhdGgiOworICAgICAgICBxdWVyeSA9ICIuLy9h
W0BocmVmXVtjb250YWlucyh0ZXh0KCksIFwiIiArIGVzY2FwZShxdWVyeSkgKyAiXCIpXSI7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHsKKyAgICBjYXNl
ICJjc3Mgc2VsZWN0b3IiOgorICAgIGNhc2UgInRhZyBuYW1lIjoKKyAgICBjYXNlICJjbGFzcyBu
YW1lIjoKKyAgICBjYXNlICJ4cGF0aCI6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIC8vIFVua25vd24gc3RyYXRlZ3kuCisgICAgICAgIGNhbGxiYWNrKGZpcnN0UmVzdWx0
T25seSA/IG51bGwgOiBbXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBlc2NhcGUoc3RyaW5nKSB7CisgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFwvZywg
IlxcXFwiKS5yZXBsYWNlKC8iL2csICJcXFwiIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gdHJ5
VG9GaW5kTm9kZSgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHN3aXRjaCAoc3RyYXRl
Z3kpIHsKKyAgICAgICAgICAgIGNhc2UgImNzcyBzZWxlY3RvciI6CisgICAgICAgICAgICAgICAg
aWYgKGZpcnN0UmVzdWx0T25seSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFuY2VzdG9y
RWxlbWVudC5xdWVyeVNlbGVjdG9yKHF1ZXJ5KSB8fCBudWxsOworICAgICAgICAgICAgICAgIHJl
dHVybiBBcnJheS5mcm9tKGFuY2VzdG9yRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKHF1ZXJ5KSk7
CisKKyAgICAgICAgICAgIGNhc2UgInRhZyBuYW1lIjoKKyAgICAgICAgICAgICAgICBsZXQgdGFn
TmFtZVJlc3VsdCA9IGFuY2VzdG9yRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShxdWVyeSk7
CisgICAgICAgICAgICAgICAgaWYgKGZpcnN0UmVzdWx0T25seSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRhZ05hbWVSZXN1bHRbMF0gfHwgbnVsbDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gQXJyYXkuZnJvbSh0YWdOYW1lUmVzdWx0KTsKKworICAgICAgICAgICAgY2FzZSAiY2xhc3Mg
bmFtZSI6CisgICAgICAgICAgICAgICAgbGV0IGNsYXNzTmFtZVJlc3VsdCA9IGFuY2VzdG9yRWxl
bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHF1ZXJ5KTsKKyAgICAgICAgICAgICAgICBpZiAo
Zmlyc3RSZXN1bHRPbmx5KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xhc3NOYW1lUmVz
dWx0WzBdIHx8IG51bGw7CisgICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oY2xhc3NO
YW1lUmVzdWx0KTsKKworICAgICAgICAgICAgY2FzZSAieHBhdGgiOgorICAgICAgICAgICAgICAg
IGlmIChmaXJzdFJlc3VsdE9ubHkpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHhwYXRoUmVz
dWx0ID0gZG9jdW1lbnQuZXZhbHVhdGUocXVlcnksIGFuY2VzdG9yRWxlbWVudCwgbnVsbCwgWFBh
dGhSZXN1bHQuRklSU1RfT1JERVJFRF9OT0RFX1RZUEUsIG51bGwpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoIXhwYXRoUmVzdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGw7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB4cGF0aFJlc3VsdC5zaW5nbGVOb2RlVmFs
dWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbGV0IHhwYXRoUmVzdWx0
ID0gZG9jdW1lbnQuZXZhbHVhdGUocXVlcnksIGFuY2VzdG9yRWxlbWVudCwgbnVsbCwgWFBhdGhS
ZXN1bHQuT1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZUEUsIG51bGwpOworICAgICAgICAgICAgICAg
IGlmICgheHBhdGhSZXN1bHQgfHwgIXhwYXRoUmVzdWx0LnNuYXBzaG90TGVuZ3RoKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gW107CisKKyAgICAgICAgICAgICAgICBsZXQgYXJyYXlSZXN1
bHQgPSBbXTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHhwYXRoUmVzdWx0
LnNuYXBzaG90TGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgICAgIGFycmF5UmVzdWx0LnB1
c2goeHBhdGhSZXN1bHQuc25hcHNob3RJdGVtKGkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
YXJyYXlSZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7Cisg
ICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBYUGF0aEV4Y2VwdGlvbiAmJiBlcnJvci5j
b2RlID09PSBYUGF0aEV4Y2VwdGlvbi5JTlZBTElEX0VYUFJFU1NJT05fRVJSKQorICAgICAgICAg
ICAgICAgIHJldHVybiAiSW52YWxpZFhQYXRoRXhwcmVzc2lvbiI7CisgICAgICAgICAgICAvLyBG
SVhNRTogQmFkIENTUyBjYW4gdGhyb3cgYW4gZXJyb3IgdGhhdCB3ZSBzaG91bGQgcmVwb3J0IGJh
Y2sgdG8gdGhlIGVuZHBvaW50LiBUaGVyZSBpcyBubworICAgICAgICAgICAgLy8gc3BlY2lhbCBl
cnJvciBjb2RlIGZvciB0aGF0IHRob3VnaCwgc28gd2UganVzdCByZXR1cm4gYW4gZW1wdHkgbWF0
Y2guCisgICAgICAgICAgICByZXR1cm4gZmlyc3RSZXN1bHRPbmx5ID8gbnVsbCA6IFtdOworICAg
ICAgICB9CisgICAgfQorCisgICAgY29uc3QgcG9sbEludGVydmFsID0gNTA7CisgICAgbGV0IHBv
bGxVbnRpbCA9IHBlcmZvcm1hbmNlLm5vdygpICsgdGltZW91dER1cmF0aW9uOworCisgICAgZnVu
Y3Rpb24gcG9sbEZvck5vZGUoKSB7CisgICAgICAgIGxldCByZXN1bHQgPSB0cnlUb0ZpbmROb2Rl
KCk7CisKKyAgICAgICAgLy8gUmVwb3J0IGFueSB2YWxpZCByZXN1bHRzLgorICAgICAgICBpZiAo
dHlwZW9mIHJlc3VsdCA9PT0gInN0cmluZyIgfHwgcmVzdWx0IGluc3RhbmNlb2YgTm9kZSB8fCAo
cmVzdWx0IGluc3RhbmNlb2YgQXJyYXkgJiYgcmVzdWx0Lmxlbmd0aCkpIHsKKyAgICAgICAgICAg
IGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICAvLyBTY2hlZHVsZSBhbm90aGVyIGF0dGVtcHQgaWYgd2UgaGF2ZSB0aW1lIHJlbWFpbmlu
Zy4KKyAgICAgICAgbGV0IGR1cmF0aW9uUmVtYWluaW5nID0gcG9sbFVudGlsIC0gcGVyZm9ybWFu
Y2Uubm93KCk7CisgICAgICAgIGlmIChkdXJhdGlvblJlbWFpbmluZyA8IHBvbGxJbnRlcnZhbCkg
eworICAgICAgICAgICAgY2FsbGJhY2soZmlyc3RSZXN1bHRPbmx5ID8gbnVsbCA6IFtdKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNldFRpbWVvdXQocG9sbEZv
ck5vZGUsIHBvbGxJbnRlcnZhbCk7CisgICAgfQorCisgICAgcG9sbEZvck5vZGUoKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0Zvcm1FbGVtZW50
Q2xlYXIuanMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9Gb3JtRWxlbWVu
dENsZWFyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44NzAyZGMx
MjJkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL0Zvcm1FbGVtZW50Q2xlYXIuanMKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1
bmN0aW9uKGVsZW1lbnQpIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoZWxlbWVudC5k
aXNhYmxlZCB8fCBlbGVtZW50LnJlYWRPbmx5KQorICAgICAgICB0aHJvdyB7bmFtZTogIkludmFs
aWRFbGVtZW50U3RhdGUiLCBtZXNzYWdlOiAiRWxlbWVudCBtdXN0IGJlIHVzZXItZWRpdGFibGUg
aW4gb3JkZXIgdG8gY2xlYXIuIn07CisKKyAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxU
ZXh0QXJlYUVsZW1lbnQgfHwgZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50KSB7
CisgICAgICAgIGVsZW1lbnQudmFsdWUgPSAiIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkgeworICAgICAgICBz
d2l0Y2ggKGVsZW1lbnQudHlwZSkgeworICAgICAgICBjYXNlICJidXR0b24iOgorICAgICAgICBj
YXNlICJzdWJtaXQiOgorICAgICAgICBjYXNlICJyZXNldCI6CisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgY2FzZSAicmFkaW8iOgorICAgICAgICBjYXNlICJjaGVja2JveCI6CisgICAg
ICAgICAgICBlbGVtZW50LmNoZWNrZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9ICIiOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGVsZW1lbnQuaXNDb250
ZW50RWRpdGFibGUpIHsKKyAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSAiIjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL0Zvcm1TdWJtaXQuanMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21h
dGlvbi9Gb3JtU3VibWl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li5kNDMxODc0ZDVlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL0Zvcm1TdWJtaXQuanMKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K2Z1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICBmb3IgKGxldCBjdXJyZW50RWxlbWVudCA9IGVsZW1l
bnQ7IGN1cnJlbnRFbGVtZW50ICYmIGN1cnJlbnRFbGVtZW50ICE9PSBkb2N1bWVudDsgY3VycmVu
dEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5wYXJlbnROb2RlKSB7CisgICAgICAgIGlmICghKGN1
cnJlbnRFbGVtZW50IGluc3RhbmNlb2YgSFRNTEZvcm1FbGVtZW50KSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBjdXJyZW50RWxlbWVudC5zdWJtaXQoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQo=
</data>
<flag name="review"
          id="335957"
          type_id="1"
          status="+"
          setter="bburg"
    />
          </attachment>
      

    </bug>

</bugzilla>