From 60aa997608054adf83be710fe50d312ecbf50007 Mon Sep 17 00:00:00 2001 From: Jan Dubois Date: Fri, 30 Aug 2024 12:49:46 -0700 Subject: [PATCH 1/5] Import sudo-prompt module into our repo The upstream repo has been archived in 2021 and no longer accepts PRs. This import is in preparation to update the bundled AppleScript applet to include aarch64 support, so it no longer requires Rosetta on M1+ machines. Signed-off-by: Jan Dubois --- package.json | 1 - pkg/rancher-desktop/backend/lima.ts | 2 +- pkg/rancher-desktop/sudo-prompt/CHANGELOG.md | 143 ++++ pkg/rancher-desktop/sudo-prompt/LICENSE | 22 + pkg/rancher-desktop/sudo-prompt/README.md | 62 ++ pkg/rancher-desktop/sudo-prompt/index.d.ts | 4 + pkg/rancher-desktop/sudo-prompt/index.js | 674 ++++++++++++++++++ pkg/rancher-desktop/sudo-prompt/linux.png | Bin 0 -> 55167 bytes pkg/rancher-desktop/sudo-prompt/macos.png | Bin 0 -> 87476 bytes pkg/rancher-desktop/sudo-prompt/package.json | 41 ++ .../sudo-prompt/test-concurrent.js | 29 + pkg/rancher-desktop/sudo-prompt/test.js | 65 ++ pkg/rancher-desktop/sudo-prompt/windows.png | Bin 0 -> 84413 bytes yarn.lock | 5 - 14 files changed, 1041 insertions(+), 7 deletions(-) create mode 100644 pkg/rancher-desktop/sudo-prompt/CHANGELOG.md create mode 100644 pkg/rancher-desktop/sudo-prompt/LICENSE create mode 100644 pkg/rancher-desktop/sudo-prompt/README.md create mode 100644 pkg/rancher-desktop/sudo-prompt/index.d.ts create mode 100644 pkg/rancher-desktop/sudo-prompt/index.js create mode 100644 pkg/rancher-desktop/sudo-prompt/linux.png create mode 100644 pkg/rancher-desktop/sudo-prompt/macos.png create mode 100644 pkg/rancher-desktop/sudo-prompt/package.json create mode 100644 pkg/rancher-desktop/sudo-prompt/test-concurrent.js create mode 100644 pkg/rancher-desktop/sudo-prompt/test.js create mode 100644 pkg/rancher-desktop/sudo-prompt/windows.png diff --git a/package.json b/package.json index 38ca834efbb..44122475c2f 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,6 @@ "proxy-agent": "^6.4.0", "rancher-icons": "rancher/icons#v2.0.21", "semver": "7.6.3", - "sudo-prompt": "9.2.1", "tar-stream": "3.1.7", "ufo": "1.5.4", "unfetch": "4.2.0", diff --git a/pkg/rancher-desktop/backend/lima.ts b/pkg/rancher-desktop/backend/lima.ts index ed07c94ea20..026090973b8 100644 --- a/pkg/rancher-desktop/backend/lima.ts +++ b/pkg/rancher-desktop/backend/lima.ts @@ -15,7 +15,6 @@ import merge from 'lodash/merge'; import omit from 'lodash/omit'; import zip from 'lodash/zip'; import semver from 'semver'; -import sudo from 'sudo-prompt'; import tar from 'tar-stream'; import yaml from 'yaml'; @@ -41,6 +40,7 @@ import NGINX_CONF from '@pkg/assets/scripts/nginx.conf'; import { ContainerEngine, MountType, VMType } from '@pkg/config/settings'; import { getServerCredentialsPath, ServerState } from '@pkg/main/credentialServer/httpCredentialHelperServer'; import mainEvents from '@pkg/main/mainEvents'; +import sudo from '@pkg/sudo-prompt'; import * as childProcess from '@pkg/utils/childProcess'; import clone from '@pkg/utils/clone'; import DockerDirManager from '@pkg/utils/dockerDirManager'; diff --git a/pkg/rancher-desktop/sudo-prompt/CHANGELOG.md b/pkg/rancher-desktop/sudo-prompt/CHANGELOG.md new file mode 100644 index 00000000000..46ba454c45e --- /dev/null +++ b/pkg/rancher-desktop/sudo-prompt/CHANGELOG.md @@ -0,0 +1,143 @@ +## [9.2.0] 2020-04-29 + +### Fixed + +- Update TypeScript types to accommodate recent changes, see +[#117](https://github.com/jorangreef/sudo-prompt/issues/117). + +## [9.1.0] 2019-11-13 + +### Added + +- Add TypeScript types. + +## [9.0.0] 2019-06-03 + +### Changed + +- Make cross-platform `stdout`, `stderr` behavior consistent, see +[#89](https://github.com/jorangreef/sudo-prompt/issues/89). + +- Preserve current working directory on all platforms. + +- Improve kdesudo dialog appearance. + +### Added + +- Add `options.env` to set environment variables on all platforms, see +[#91](https://github.com/jorangreef/sudo-prompt/issues/91). + +### Fixed + +- Always return PERMISSION_DENIED as an Error object. + +- Support multiple commands separated by semicolons on Linux, see +[#39](https://github.com/jorangreef/sudo-prompt/issues/39). + +- Distinguish between elevation errors and command errors on Linux, see +[#88](https://github.com/jorangreef/sudo-prompt/issues/88). + +- Fix Windows to return `PERMISSION_DENIED` Error even when Windows' error +messages are internationalized, see +[#96](https://github.com/jorangreef/sudo-prompt/issues/96). + +## [8.2.5] 2018-12-12 + +### Fixed + +- Whitelist package.json files. + +## [8.2.4] 2018-12-12 + +### Added + +- A CHANGELOG.md file, see +[#78](https://github.com/jorangreef/sudo-prompt/issues/78). + +## [8.2.3] 2018-09-11 + +### Fixed + +- README: Link to concurrency discussion. + +## [8.2.2] 2018-09-11 + +### Fixed + +- README: Details on concurrency. + +## [8.2.1] 2018-09-11 + +### Fixed + +- A rare idempotency edge case where a command might have been run more than +once, given a very specific OS environment setup. + +## [8.2.0] 2018-03-22 + +### Added + +- Windows: Fix `cd` when `cwd` is on another drive, see +[#70](https://github.com/jorangreef/sudo-prompt/issues/70). + +## [8.1.0] 2018-01-10 + +### Added + +- Linux: Increase `maxBuffer` limit to 128 MiB, see +[#66](https://github.com/jorangreef/sudo-prompt/issues/66). + +## [8.0.0] 2018-11-02 + +### Changed + +- Windows: Set code page of command batch script to UTF-8. + +## [7.1.1] 2017-07-18 + +### Fixed + +- README: Explicitly mention that no child process is returned. + +## [7.0.0] 2017-03-15 + +### Changed + +- Add status code to errors on Windows and macOS. + +## [6.2.1] 2016-12-16 + +### Fixed + +- README: Syntax highlighting. + +## [6.2.0] 2016-08-17 + +### Fixed + +- README: Rename OS X to macOS. + +## [6.1.0] 2016-08-02 + +### Added + +- Yield an error if no polkit authentication agent is found, see +[#29](https://github.com/jorangreef/sudo-prompt/issues/29). + +## [6.0.2] 2016-07-21 + +### Fixed + +- README: Update explanation of Linux behavior. + +## [6.0.1] 2016-07-15 + +### Fixed + +- Update keywords in package.json. + +## [6.0.0] 2016-07-15 + +### Changed + +- Add support for Windows. diff --git a/pkg/rancher-desktop/sudo-prompt/LICENSE b/pkg/rancher-desktop/sudo-prompt/LICENSE new file mode 100644 index 00000000000..e3b751f2841 --- /dev/null +++ b/pkg/rancher-desktop/sudo-prompt/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Joran Dirk Greef + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/pkg/rancher-desktop/sudo-prompt/README.md b/pkg/rancher-desktop/sudo-prompt/README.md new file mode 100644 index 00000000000..2ae7536ebb8 --- /dev/null +++ b/pkg/rancher-desktop/sudo-prompt/README.md @@ -0,0 +1,62 @@ +# sudo-prompt + +Run a non-graphical terminal command using `sudo`, prompting the user with a graphical OS dialog if necessary. Useful for background Node.js applications or native Electron apps that need `sudo`. + +## Cross-Platform +`sudo-prompt` provides a native OS dialog prompt on **macOS**, **Linux** and **Windows**. + +![macOS](https://raw.githubusercontent.com/jorangreef/sudo-prompt/master/macos.png) + +![Linux](https://raw.githubusercontent.com/jorangreef/sudo-prompt/master/linux.png) + +![Windows](https://raw.githubusercontent.com/jorangreef/sudo-prompt/master/windows.png) + +## Installation +`sudo-prompt` has no external dependencies and does not require any native bindings. +``` +npm install sudo-prompt +``` + +## Usage +Note: Your command should not start with the `sudo` prefix. +```javascript +var sudo = require('sudo-prompt'); +var options = { + name: 'Electron', + icns: '/Applications/Electron.app/Contents/Resources/Electron.icns', // (optional) +}; +sudo.exec('echo hello', options, + function(error, stdout, stderr) { + if (error) throw error; + console.log('stdout: ' + stdout); + } +); +``` + +`sudo-prompt` will use `process.title` as `options.name` if `options.name` is not provided. `options.name` must be alphanumeric only (spaces are supported) and at most 70 characters. + +`sudo-prompt` will preserve the current working directory on all platforms. Environment variables can be set explicitly using `options.env`. + +**`sudo-prompt.exec()` is different to `child-process.exec()` in that no child process is returned (due to platform and permissions constraints).** + +## Behavior +On macOS, `sudo-prompt` should behave just like the `sudo` command in the shell. If your command does not work with the `sudo` command in the shell (perhaps because it uses `>` redirection to a restricted file), then it may not work with `sudo-prompt`. However, it is still possible to use sudo-prompt to get a privileged shell, [see this closed issue for more information](https://github.com/jorangreef/sudo-prompt/issues/1). + +On Linux, `sudo-prompt` will use either `pkexec` or `kdesudo` to show the password prompt and run your command. Where possible, `sudo-prompt` will try and get these to mimic `sudo`. Depending on which binary is used, and due to the limitations of some binaries, the name of your program or the command itself may be displayed to your user. `sudo-prompt` will not use `gksudo` since `gksudo` does not support concurrent prompts. Passing `options.icns` is currently not supported by `sudo-prompt` on Linux. Patches are welcome to add support for icons based on `polkit`. + +On Windows, `sudo-prompt` will elevate your command using User Account Control (UAC). Passing `options.name` or `options.icns` is currently not supported by `sudo-prompt` on Windows. + +## Non-graphical terminal commands only +Just as you should never use `sudo` to launch any graphical applications, you should never use `sudo-prompt` to launch any graphical applications. Doing so could cause files in your home directory to become owned by root. `sudo-prompt` is explicitly designed to launch non-graphical terminal commands. For more information, [read this post](http://www.psychocats.net/ubuntu/graphicalsudo). + +## Concurrency +On systems where the user has opted to have `tty-tickets` enabled (most systems), each call to `exec()` will result in a separate password prompt. Where `tty-tickets` are disabled, subsequent calls to `exec()` will still require a password prompt, even where the user's `sudo` timestamp file remains valid, due to edge cases with `sudo` itself, [see this discussion for more information](https://github.com/jorangreef/sudo-prompt/pull/76). + +You should never rely on `sudo-prompt` to execute your calls in order. If you need to enforce ordering of calls, then you should explicitly order your calls in your application. Where your commands are short-lived, you should always queue your calls to `exec()` to make sure your user is not overloaded with password prompts. + +## Invalidating the timestamp +On macOS and Linux, you can invalidate the user's `sudo` timestamp file to force the prompt to appear by running the following command in your terminal: + +```sh +$ sudo -k +``` diff --git a/pkg/rancher-desktop/sudo-prompt/index.d.ts b/pkg/rancher-desktop/sudo-prompt/index.d.ts new file mode 100644 index 00000000000..329c12217c7 --- /dev/null +++ b/pkg/rancher-desktop/sudo-prompt/index.d.ts @@ -0,0 +1,4 @@ +export function exec(cmd: string, + options?: ((error?: Error, stdout?: string | Buffer, stderr?: string | Buffer) => void) + | { name?: string, icns?: string, env?: { [key: string]: string } }, + callback?: (error?: Error, stdout?: string | Buffer, stderr?: string | Buffer) => void): void; diff --git a/pkg/rancher-desktop/sudo-prompt/index.js b/pkg/rancher-desktop/sudo-prompt/index.js new file mode 100644 index 00000000000..acfd41ba963 --- /dev/null +++ b/pkg/rancher-desktop/sudo-prompt/index.js @@ -0,0 +1,674 @@ +var Node = { + child: require('child_process'), + crypto: require('crypto'), + fs: require('fs'), + os: require('os'), + path: require('path'), + process: process, + util: require('util') +}; + +function Attempt(instance, end) { + var platform = Node.process.platform; + if (platform === 'darwin') return Mac(instance, end); + if (platform === 'linux') return Linux(instance, end); + if (platform === 'win32') return Windows(instance, end); + end(new Error('Platform not yet supported.')); +} + +function EscapeDoubleQuotes(string) { + if (typeof string !== 'string') throw new Error('Expected a string.'); + return string.replace(/"/g, '\\"'); +} + +function Exec() { + if (arguments.length < 1 || arguments.length > 3) { + throw new Error('Wrong number of arguments.'); + } + var command = arguments[0]; + var options = {}; + var end = function() {}; + if (typeof command !== 'string') { + throw new Error('Command should be a string.'); + } + if (arguments.length === 2) { + if (Node.util.isObject(arguments[1])) { + options = arguments[1]; + } else if (Node.util.isFunction(arguments[1])) { + end = arguments[1]; + } else { + throw new Error('Expected options or callback.'); + } + } else if (arguments.length === 3) { + if (Node.util.isObject(arguments[1])) { + options = arguments[1]; + } else { + throw new Error('Expected options to be an object.'); + } + if (Node.util.isFunction(arguments[2])) { + end = arguments[2]; + } else { + throw new Error('Expected callback to be a function.'); + } + } + if (/^sudo/i.test(command)) { + return end(new Error('Command should not be prefixed with "sudo".')); + } + if (typeof options.name === 'undefined') { + var title = Node.process.title; + if (ValidName(title)) { + options.name = title; + } else { + return end(new Error('process.title cannot be used as a valid name.')); + } + } else if (!ValidName(options.name)) { + var error = ''; + error += 'options.name must be alphanumeric only '; + error += '(spaces are allowed) and <= 70 characters.'; + return end(new Error(error)); + } + if (typeof options.icns !== 'undefined') { + if (typeof options.icns !== 'string') { + return end(new Error('options.icns must be a string if provided.')); + } else if (options.icns.trim().length === 0) { + return end(new Error('options.icns must not be empty if provided.')); + } + } + if (typeof options.env !== 'undefined') { + if (typeof options.env !== 'object') { + return end(new Error('options.env must be an object if provided.')); + } else if (Object.keys(options.env).length === 0) { + return end(new Error('options.env must not be empty if provided.')); + } else { + for (var key in options.env) { + var value = options.env[key]; + if (typeof key !== 'string' || typeof value !== 'string') { + return end( + new Error('options.env environment variables must be strings.') + ); + } + // "Environment variable names used by the utilities in the Shell and + // Utilities volume of IEEE Std 1003.1-2001 consist solely of uppercase + // letters, digits, and the '_' (underscore) from the characters defined + // in Portable Character Set and do not begin with a digit. Other + // characters may be permitted by an implementation; applications shall + // tolerate the presence of such names." + if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(key)) { + return end( + new Error( + 'options.env has an invalid environment variable name: ' + + JSON.stringify(key) + ) + ); + } + if (/[\r\n]/.test(value)) { + return end( + new Error( + 'options.env has an invalid environment variable value: ' + + JSON.stringify(value) + ) + ); + } + } + } + } + var platform = Node.process.platform; + if (platform !== 'darwin' && platform !== 'linux' && platform !== 'win32') { + return end(new Error('Platform not yet supported.')); + } + var instance = { + command: command, + options: options, + uuid: undefined, + path: undefined + }; + Attempt(instance, end); +} + +function Linux(instance, end) { + LinuxBinary(instance, + function(error, binary) { + if (error) return end(error); + var command = []; + // Preserve current working directory: + command.push('cd "' + EscapeDoubleQuotes(Node.process.cwd()) + '";'); + // Export environment variables: + for (var key in instance.options.env) { + var value = instance.options.env[key]; + command.push('export ' + key + '="' + EscapeDoubleQuotes(value) + '";'); + } + command.push('"' + EscapeDoubleQuotes(binary) + '"'); + if (/kdesudo/i.test(binary)) { + command.push( + '--comment', + '"' + instance.options.name + ' wants to make changes. ' + + 'Enter your password to allow this."' + ); + command.push('-d'); // Do not show the command to be run in the dialog. + command.push('--'); + } else if (/pkexec/i.test(binary)) { + command.push('--disable-internal-agent'); + } + var magic = 'SUDOPROMPT\n'; + command.push( + '/bin/bash -c "echo ' + EscapeDoubleQuotes(magic.trim()) + '; ' + + EscapeDoubleQuotes(instance.command) + + '"' + ); + command = command.join(' '); + Node.child.exec(command, { encoding: 'utf-8', maxBuffer: MAX_BUFFER }, + function(error, stdout, stderr) { + // ISSUE 88: + // We must distinguish between elevation errors and command errors. + // + // KDESUDO: + // kdesudo provides no way to do this. We add a magic marker to know + // if elevation succeeded. Any error thereafter is a command error. + // + // PKEXEC: + // "Upon successful completion, the return value is the return value of + // PROGRAM. If the calling process is not authorized or an + // authorization could not be obtained through authentication or an + // error occured, pkexec exits with a return value of 127. If the + // authorization could not be obtained because the user dismissed the + // authentication dialog, pkexec exits with a return value of 126." + // + // However, we do not rely on pkexec's return of 127 since our magic + // marker is more reliable, and we already use it for kdesudo. + var elevated = stdout && stdout.slice(0, magic.length) === magic; + if (elevated) stdout = stdout.slice(magic.length); + // Only normalize the error if it is definitely not a command error: + // In other words, if we know that the command was never elevated. + // We do not inspect error messages beyond NO_POLKIT_AGENT. + // We cannot rely on English errors because of internationalization. + if (error && !elevated) { + if (/No authentication agent found/.test(stderr)) { + error.message = NO_POLKIT_AGENT; + } else { + error.message = PERMISSION_DENIED; + } + } + end(error, stdout, stderr); + } + ); + } + ); +} + +function LinuxBinary(instance, end) { + var index = 0; + // We used to prefer gksudo over pkexec since it enabled a better prompt. + // However, gksudo cannot run multiple commands concurrently. + var paths = ['/usr/bin/kdesudo', '/usr/bin/pkexec']; + function test() { + if (index === paths.length) { + return end(new Error('Unable to find pkexec or kdesudo.')); + } + var path = paths[index++]; + Node.fs.stat(path, + function(error) { + if (error) { + if (error.code === 'ENOTDIR') return test(); + if (error.code === 'ENOENT') return test(); + end(error); + } else { + end(undefined, path); + } + } + ); + } + test(); +} + +function Mac(instance, callback) { + var temp = Node.os.tmpdir(); + if (!temp) return callback(new Error('os.tmpdir() not defined.')); + var user = Node.process.env.USER; // Applet shell scripts require $USER. + if (!user) return callback(new Error('env[\'USER\'] not defined.')); + UUID(instance, + function(error, uuid) { + if (error) return callback(error); + instance.uuid = uuid; + instance.path = Node.path.join( + temp, + instance.uuid, + instance.options.name + '.app' + ); + function end(error, stdout, stderr) { + Remove(Node.path.dirname(instance.path), + function(errorRemove) { + if (error) return callback(error); + if (errorRemove) return callback(errorRemove); + callback(undefined, stdout, stderr); + } + ); + } + MacApplet(instance, + function(error, stdout, stderr) { + if (error) return end(error, stdout, stderr); + MacIcon(instance, + function(error) { + if (error) return end(error); + MacPropertyList(instance, + function(error, stdout, stderr) { + if (error) return end(error, stdout, stderr); + MacCommand(instance, + function(error) { + if (error) return end(error); + MacOpen(instance, + function(error, stdout, stderr) { + if (error) return end(error, stdout, stderr); + MacResult(instance, end); + } + ); + } + ); + } + ); + } + ); + } + ); + } + ); +} + +function MacApplet(instance, end) { + var parent = Node.path.dirname(instance.path); + Node.fs.mkdir(parent, + function(error) { + if (error) return end(error); + var zip = Node.path.join(parent, 'sudo-prompt-applet.zip'); + Node.fs.writeFile(zip, APPLET, 'base64', + function(error) { + if (error) return end(error); + var command = []; + command.push('/usr/bin/unzip'); + command.push('-o'); // Overwrite any existing applet. + command.push('"' + EscapeDoubleQuotes(zip) + '"'); + command.push('-d "' + EscapeDoubleQuotes(instance.path) + '"'); + command = command.join(' '); + Node.child.exec(command, { encoding: 'utf-8' }, end); + } + ); + } + ); +} + +function MacCommand(instance, end) { + var path = Node.path.join( + instance.path, + 'Contents', + 'MacOS', + 'sudo-prompt-command' + ); + var script = []; + // Preserve current working directory: + // We do this for commands that rely on relative paths. + // This runs in a subshell and will not change the cwd of sudo-prompt-script. + script.push('cd "' + EscapeDoubleQuotes(Node.process.cwd()) + '"'); + // Export environment variables: + for (var key in instance.options.env) { + var value = instance.options.env[key]; + script.push('export ' + key + '="' + EscapeDoubleQuotes(value) + '"'); + } + script.push(instance.command); + script = script.join('\n'); + Node.fs.writeFile(path, script, 'utf-8', end); +} + +function MacIcon(instance, end) { + if (!instance.options.icns) return end(); + Node.fs.readFile(instance.options.icns, + function(error, buffer) { + if (error) return end(error); + var icns = Node.path.join( + instance.path, + 'Contents', + 'Resources', + 'applet.icns' + ); + Node.fs.writeFile(icns, buffer, end); + } + ); +} + +function MacOpen(instance, end) { + // We must run the binary directly so that the cwd will apply. + var binary = Node.path.join(instance.path, 'Contents', 'MacOS', 'applet'); + // We must set the cwd so that the AppleScript can find the shell scripts. + var options = { + cwd: Node.path.dirname(binary), + encoding: 'utf-8' + }; + // We use the relative path rather than the absolute path. The instance.path + // may contain spaces which the cwd can handle, but which exec() cannot. + Node.child.exec('./' + Node.path.basename(binary), options, end); +} + +function MacPropertyList(instance, end) { + // Value must be in single quotes (not double quotes) according to man entry. + // e.g. defaults write com.companyname.appname "Default Color" '(255, 0, 0)' + // The defaults command will be changed in an upcoming major release to only + // operate on preferences domains. General plist manipulation utilities will + // be folded into a different command-line program. + var plist = Node.path.join(instance.path, 'Contents', 'Info.plist'); + var path = EscapeDoubleQuotes(plist); + var key = EscapeDoubleQuotes('CFBundleName'); + var value = instance.options.name + ' Password Prompt'; + if (/'/.test(value)) { + return end(new Error('Value should not contain single quotes.')); + } + var command = []; + command.push('/usr/bin/defaults'); + command.push('write'); + command.push('"' + path + '"'); + command.push('"' + key + '"'); + command.push("'" + value + "'"); // We must use single quotes for value. + command = command.join(' '); + Node.child.exec(command, { encoding: 'utf-8' }, end); +} + +function MacResult(instance, end) { + var cwd = Node.path.join(instance.path, 'Contents', 'MacOS'); + Node.fs.readFile(Node.path.join(cwd, 'code'), 'utf-8', + function(error, code) { + if (error) { + if (error.code === 'ENOENT') return end(new Error(PERMISSION_DENIED)); + end(error); + } else { + Node.fs.readFile(Node.path.join(cwd, 'stdout'), 'utf-8', + function(error, stdout) { + if (error) return end(error); + Node.fs.readFile(Node.path.join(cwd, 'stderr'), 'utf-8', + function(error, stderr) { + if (error) return end(error); + code = parseInt(code.trim(), 10); // Includes trailing newline. + if (code === 0) { + end(undefined, stdout, stderr); + } else { + error = new Error( + 'Command failed: ' + instance.command + '\n' + stderr + ); + error.code = code; + end(error, stdout, stderr); + } + } + ); + } + ); + } + } + ); +} + +function Remove(path, end) { + if (typeof path !== 'string' || !path.trim()) { + return end(new Error('Argument path not defined.')); + } + var command = []; + if (Node.process.platform === 'win32') { + if (/"/.test(path)) { + return end(new Error('Argument path cannot contain double-quotes.')); + } + command.push('rmdir /s /q "' + path + '"'); + } else { + command.push('/bin/rm'); + command.push('-rf'); + command.push('"' + EscapeDoubleQuotes(Node.path.normalize(path)) + '"'); + } + command = command.join(' '); + Node.child.exec(command, { encoding: 'utf-8' }, end); +} + +function UUID(instance, end) { + Node.crypto.randomBytes(256, + function(error, random) { + if (error) random = Date.now() + '' + Math.random(); + var hash = Node.crypto.createHash('SHA256'); + hash.update('sudo-prompt-3'); + hash.update(instance.options.name); + hash.update(instance.command); + hash.update(random); + var uuid = hash.digest('hex').slice(-32); + if (!uuid || typeof uuid !== 'string' || uuid.length !== 32) { + // This is critical to ensure we don't remove the wrong temp directory. + return end(new Error('Expected a valid UUID.')); + } + end(undefined, uuid); + } + ); +} + +function ValidName(string) { + // We use 70 characters as a limit to side-step any issues with Unicode + // normalization form causing a 255 character string to exceed the fs limit. + if (!/^[a-z0-9 ]+$/i.test(string)) return false; + if (string.trim().length === 0) return false; + if (string.length > 70) return false; + return true; +} + +function Windows(instance, callback) { + var temp = Node.os.tmpdir(); + if (!temp) return callback(new Error('os.tmpdir() not defined.')); + UUID(instance, + function(error, uuid) { + if (error) return callback(error); + instance.uuid = uuid; + instance.path = Node.path.join(temp, instance.uuid); + if (/"/.test(instance.path)) { + // We expect double quotes to be reserved on Windows. + // Even so, we test for this and abort if they are present. + return callback( + new Error('instance.path cannot contain double-quotes.') + ); + } + instance.pathElevate = Node.path.join(instance.path, 'elevate.vbs'); + instance.pathExecute = Node.path.join(instance.path, 'execute.bat'); + instance.pathCommand = Node.path.join(instance.path, 'command.bat'); + instance.pathStdout = Node.path.join(instance.path, 'stdout'); + instance.pathStderr = Node.path.join(instance.path, 'stderr'); + instance.pathStatus = Node.path.join(instance.path, 'status'); + Node.fs.mkdir(instance.path, + function(error) { + if (error) return callback(error); + function end(error, stdout, stderr) { + Remove(instance.path, + function(errorRemove) { + if (error) return callback(error); + if (errorRemove) return callback(errorRemove); + callback(undefined, stdout, stderr); + } + ); + } + WindowsWriteExecuteScript(instance, + function(error) { + if (error) return end(error); + WindowsWriteCommandScript(instance, + function(error) { + if (error) return end(error); + WindowsElevate(instance, + function(error, stdout, stderr) { + if (error) return end(error, stdout, stderr); + WindowsWaitForStatus(instance, + function(error) { + if (error) return end(error); + WindowsResult(instance, end); + } + ); + } + ); + } + ); + } + ); + } + ); + } + ); +} + +function WindowsElevate(instance, end) { + // We used to use this for executing elevate.vbs: + // var command = 'cscript.exe //NoLogo "' + instance.pathElevate + '"'; + var command = []; + command.push('powershell.exe'); + command.push('Start-Process'); + command.push('-FilePath'); + // Escape characters for cmd using double quotes: + // Escape characters for PowerShell using single quotes: + // Escape single quotes for PowerShell using backtick: + // See: https://ss64.com/ps/syntax-esc.html + command.push('"\'' + instance.pathExecute.replace(/'/g, "`'") + '\'"'); + command.push('-WindowStyle hidden'); + command.push('-Verb runAs'); + command = command.join(' '); + var child = Node.child.exec(command, { encoding: 'utf-8' }, + function(error, stdout, stderr) { + // We used to return PERMISSION_DENIED only for error messages containing + // the string 'canceled by the user'. However, Windows internationalizes + // error messages (issue 96) so now we must assume all errors here are + // permission errors. This seems reasonable, given that we already run the + // user's command in a subshell. + if (error) return end(new Error(PERMISSION_DENIED), stdout, stderr); + end(); + } + ); + child.stdin.end(); // Otherwise PowerShell waits indefinitely on Windows 7. +} + +function WindowsResult(instance, end) { + Node.fs.readFile(instance.pathStatus, 'utf-8', + function(error, code) { + if (error) return end(error); + Node.fs.readFile(instance.pathStdout, 'utf-8', + function(error, stdout) { + if (error) return end(error); + Node.fs.readFile(instance.pathStderr, 'utf-8', + function(error, stderr) { + if (error) return end(error); + code = parseInt(code.trim(), 10); + if (code === 0) { + end(undefined, stdout, stderr); + } else { + error = new Error( + 'Command failed: ' + instance.command + '\r\n' + stderr + ); + error.code = code; + end(error, stdout, stderr); + } + } + ); + } + ); + } + ); +} + +function WindowsWaitForStatus(instance, end) { + // VBScript cannot wait for the elevated process to finish so we have to poll. + // VBScript cannot return error code if user does not grant permission. + // PowerShell can be used to elevate and wait on Windows 10. + // PowerShell can be used to elevate on Windows 7 but it cannot wait. + // powershell.exe Start-Process cmd.exe -Verb runAs -Wait + Node.fs.stat(instance.pathStatus, + function(error, stats) { + if ((error && error.code === 'ENOENT') || stats.size < 2) { + // Retry if file does not exist or is not finished writing. + // We expect a file size of 2. That should cover at least "0\r". + // We use a 1 second timeout to keep a light footprint for long-lived + // sudo-prompt processes. + setTimeout( + function() { + // If administrator has no password and user clicks Yes, then + // PowerShell returns no error and execute (and command) never runs. + // We check that command output has been redirected to stdout file: + Node.fs.stat(instance.pathStdout, + function(error) { + if (error) return end(new Error(PERMISSION_DENIED)); + WindowsWaitForStatus(instance, end); + } + ); + }, + 1000 + ); + } else if (error) { + end(error); + } else { + end(); + } + } + ); +} + +function WindowsWriteCommandScript(instance, end) { + var cwd = Node.process.cwd(); + if (/"/.test(cwd)) { + // We expect double quotes to be reserved on Windows. + // Even so, we test for this and abort if they are present. + return end(new Error('process.cwd() cannot contain double-quotes.')); + } + var script = []; + script.push('@echo off'); + // Set code page to UTF-8: + script.push('chcp 65001>nul'); + // Preserve current working directory: + // We pass /d as an option in case the cwd is on another drive (issue 70). + script.push('cd /d "' + cwd + '"'); + // Export environment variables: + for (var key in instance.options.env) { + // "The characters <, >, |, &, ^ are special command shell characters, and + // they must be preceded by the escape character (^) or enclosed in + // quotation marks. If you use quotation marks to enclose a string that + // contains one of the special characters, the quotation marks are set as + // part of the environment variable value." + // In other words, Windows assigns everything that follows the equals sign + // to the value of the variable, whereas Unix systems ignore double quotes. + var value = instance.options.env[key]; + script.push('set ' + key + '=' + value.replace(/([<>\\|&^])/g, '^$1')); + } + script.push(instance.command); + script = script.join('\r\n'); + Node.fs.writeFile(instance.pathCommand, script, 'utf-8', end); +} + +function WindowsWriteElevateScript(instance, end) { + // We do not use VBScript to elevate since it does not return an error if + // the user does not grant permission. This is here for reference. + // var script = []; + // script.push('Set objShell = CreateObject("Shell.Application")'); + // script.push( + // 'objShell.ShellExecute "' + instance.pathExecute + '", "", "", "runas", 0' + // ); + // script = script.join('\r\n'); + // Node.fs.writeFile(instance.pathElevate, script, 'utf-8', end); +} + +function WindowsWriteExecuteScript(instance, end) { + var script = []; + script.push('@echo off'); + script.push( + 'call "' + instance.pathCommand + '"' + + ' > "' + instance.pathStdout + '" 2> "' + instance.pathStderr + '"' + ); + script.push('(echo %ERRORLEVEL%) > "' + instance.pathStatus + '"'); + script = script.join('\r\n'); + Node.fs.writeFile(instance.pathExecute, script, 'utf-8', end); +} + +module.exports.exec = Exec; + +// We used to expect that applet.app would be included with this module. +// This could not be copied when sudo-prompt was packaged within an asar file. +// We now store applet.app as a zip file in base64 within index.js instead. +// To recreate: "zip -r ../applet.zip Contents" (with applet.app as CWD). +// The zip file must not include applet.app as the root directory so that we +// can extract it directly to the target app directory. +var APPLET = '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'; + +var PERMISSION_DENIED = 'User did not grant permission.'; +var NO_POLKIT_AGENT = 'No polkit authentication agent found.'; + +// See issue 66: +var MAX_BUFFER = 134217728; diff --git a/pkg/rancher-desktop/sudo-prompt/linux.png b/pkg/rancher-desktop/sudo-prompt/linux.png new file mode 100644 index 0000000000000000000000000000000000000000..cd5b94ad698f4b7ab56cadfb59464322b0955892 GIT binary patch literal 55167 zcmZ^K1yo$kvhKzQcXt@v-Q5Na8l2z~+#yJC_rWc=LvVM806~K%5L`n@0t5+f@}G0> zJ#XFjX02IkPxr3wuBzU6O9ZF002y7h`crcz&*phL?C!r%h4KYDFC3& zImpRrD$B{yXnMHXIyl(?03BO8KOpD48 zL7;mcCmd!aBagU@ONp!H#vYP@ggX{zj&K%&!8$E$&{*7zZ7@7@xxU>ZbX55KA?SAC zpx{~RND^Q+a%vJrc!@-#1BS{YJ@DY+K}qf;0R)?$(ExlNJs}@G{RkW@^z6&Qhy;*W z-{CxN`SkGPnf0|vVLAdp5bJ@aKRqS?8?ok#h-EAWfM{dh3t^<%b4ho=Yn4t%naGx! z%We{GO-HRrd>EDgUFrk}gwEKi-T^5Enqu_PBT9QIR+{bj?vZrqKQwO+L2D-I##)7i zIXMF3a?HkMj|^DPt~@#fJnK&VVN7pGiDg4HS?A2TeoMWYc+Q-`_-&2Fr#l6&3|U5$ z+deV0KqD%jNy@gS^b_Roy?=@M zKy|N7+-JV>wCNf2X3<{x$0f?_c5X(Z?Q{b#a;NU}WAfY5r6UfKz zY2S%HjOYINh{u%*`VCJS9{X98DxBf#nueY5+IkNHw@)-v(xlk^-FC#Wex=j;EYL|@ zr1&R2(HUc~+78f^Qd>{>QZnI)4%mqbdnnIEI6pR6z@b(FWb?@PgCqt3`3_(b!gPfc zN<$!DQ~(Y`3JJe~#`-ja*b!=FB$*M72Yob=Z$g50XoTUDLXq9b@=>w|1?J%{!=j5& zeunFtg8~719K>B(H2KI@T7*f0<|qmpp-FPIh~Z*pW?Yr1yA)8G+=rqzO*Sh#X`$QZ^yjyfJ~} zJKVY$2v*_WMBBcPJHKC1`cZ^_@3k+M9cciL&pywi*-0tfI1s0UD9z4ezlY2^v=*}D~L?jkZjau8-5<{W9SwLN!s z0)`?>X$FsVl_QBIv(T2~nv1ZdwF`k`>v+}NaTCwf+N|(O=UV5O-{k0^b>8FxE(UXX1fZ?5vG z*@9=+L`$8=eZ}m0FnXSRurF3F0d8oZpm0{5&hMm;w! zmM_%23lDlfca8ndi?59zE&pUQxH2lR-ZtF!A@Pvtqc#iim3$vuYeGdHbJO1dE zVNnZ>)lg0(EBZQmGLsc_4~ot3)<&t3ZGD8LE#_Gi;s2jL7w(afM@$GU$;!ObB zZQyU^JDuClJAJ=0Y%>@h+#Wn`BsQr#1}^M6-qm6sQ!tBP)vM^PcygbbJGMD`|DxTN z%X8cz^Pe5u^^X=yLZoo0YpdQiR(j7Sj+Qi?-2ce%J1byfIH`@oSIjJ6_^14s^66CA zo2p>tC(ZDp;!2*TrXRY;)tQVRE1&}#e~i30uDpJeCi3NdOq)9_pp?i8aOpJM689^7 z+yCCi;=>3!D)D9OoP+ZKiO=`z@*-8@jcn&5&Hz)%ps~H_>RK0l@`f&x+JVc!r+v&L za;8nwjWgHo&rauV-|SEG*ZprYKi2=~KyZ20J<{!Yae3ZTaBKO^+jsWt^yJWIp!1#k z^K5uN3O%;I#IPi*U)_D@e(WW5`V0Hp+B5ePktOo^fG3BaOVL63{rUr{Z=W~b-6mYu z?RO3RI3>p7(!fT<^yM^NnZb)fZv{^RPRYvz~S{^+2${JA2cthTCa zd!;}aYkn@;;3g};9D95|4+l70jwVQO&X4*I35Pz9;(Ok8b^@9Q=+ft`!0-a8jZjSm zGjze*NiFU>Qe$bU>@&-vu2OWYfwkAhXfPRNP$de`j~e2dwy=F$bpvW>me7@H?cl(q6o7L}8n&BM9}fWVhz`02UIyxFqE@cXoEFxumNuMz z&TcT|3jpGNqOeP68!rnQKW8TwPf za=`B3@bq`_vhd?@@udIPApbRvyp5-ohl87!gR2Y8-*GK0UA?^|=;;1V^xvOiM6A{)eQ&|40h{-;)2)^BgF6pG38B>c_29q$4ae^Kz*hE;7bj3Kplvl3rRHD~vWXDhlJ{;|}A;CJa?Zmq! zuaUanBt(6g`F}*aOgITJzH;GVDGk$(f)U;3mPU%G6qV1cwpMf3%|8tusGiX{cpv12 zfZe!bf^Ay5ycnT#wu?FJH8^O6=0(lyQFBJIqTLTB9uwV5fMDgYDpe?X(dlrb@z8dV zZ_nZ?I)*O6qN`FP%cga=-h^H#dl_&rj3bNVX#xH*2Hz4Bv&3l&zE3b8lR>uz66M)W zE4FM2eFZME%=cJ@WxGF$}hjk4Ep{mx~7k7=c*4KgblOKA~Oe$!gIGp`LE z(i~j6$!a74MVZDPD?TbxF^G4ub&#D72zT1^CT-Cz#?(H|6H|2I-mFJ;dFO{t-xRQ~ z1?4`K6qxQtv2WG9nE(&^P)=3R8?N(0F+3bXxl>0RWQ^p)CI%uA5IHUknTdD~=n0%h z9U^HF-f(oLUUttjH{J_;rh9-F3*02GePvZtauQ|eDML!3^s`u#onoAplUIWB_qFm_ z69G@)E@oliJThRfWsX#Dw|iDxIYe;hA=*fX4Af_B@yVd$IiW9~UdC41F_s+WmX+_`94szpY#u0U4v`rN)brAGB`>w)1% zqQ;7eZq>|qwcLo-=$O>MyBmE^AAT}hqzk5`wAHUt-5KRUjhivly4|dkD6>6%SIblg zI~i(AJXJT{uY8kog+lX_i0*DJ#YOpTVN~;0WQcAcY8Nun$GG%{>6dL@ARYiH=V8X+ z5{6U`$>rIE=SantPOJE67_}kKFNu`uy(jQT1_<*U3Y2NkM#|EV9B>IOvP7}fV_Q=p zd6vq@fwf7VxX!rNSd~q9=ef_O2tfC^tj)K0P$%?>A>TQXh_b2BZ;<_hF3oA^{CZZD zYjO9l?=43D`tCx5QN0hr$dH6ygMg=alxZR%y{ddu&es&KiOj8TIF_=wqZJy2+tB4- zMh>~{l%`Hr{JPtSzDIG`L$;s9DoEkWw!+X?ubxGUGAG%<8z?E;GF$iCLzFw68}67- z1cI_t4AbZWV}4;l^{+~zanpijued;ps+FE?8JmHqU3vY*e3ZNObPKe)3-ND192(x+_s z?p#H`jiA2RVuBMan^5?K&{OmwmEDMu*K@#aQ* zk%x@Da_*ZvKWqmgVnD^3C8s4Vx8a6*(UE~hw15PiB&OhrKU=8r(L}fw=ykywC?w0c z)V?9|e4{pxz&lhDw48S*AdqpkWVQgM9Y@P$>Da5;fyjD8kN8XQ(ea``7TnC&-DznW z=xh<(Nt$t_JVDuWotSnFmpi>oJm|&Y0;q6mKj1Cai?Wi*Z;SCg0_@CTnkLcCI^qvsR4t;j@@grKLo^1Uw5^Bu8yNFKMY{c%%&Qjw4yX#l}+h5tQt)jcR=T#E}9Ajy36C z>GO^y2>s%%s~wm zyvR~H%bxn+7Zoi+l%!cP{*Huy(k_%SyL$39FQ^6;L0UL_+WN%lgAX5ykDIaS5H3E3 zH|Zao)Rf>NI3RdYbI)h>qO!+Sq>PxPin(l+=BVkPpu1ZWVi7t;^v1LjU`oB>Ncdz& z%S-1ovgK`)uK^#&@RLEyX^UT*phyx5doxpKGiE|?4fMYRCO?UUYi3fA)t5o((B%ae zwEqKeEOvQQ=^M^>r&XYr)ij2qir&O_(F!t)4byo)TsEL*d_@6F7I%qBI~i}+9Swxf zI+Pt;+>pPR6gq(Gr<+Ts8H3 zo-E3p6pE5J7A;Um8FPq+zrsZ3&WAJ-Q@Z^rl6Y3>&u-13V7L5=vBmNSFaN79k|u6_ zofUY{PZ^HBR(m=#e*)*XZqairDKM{qCWl+Vg+Ys0UpEXPG7!S>Ry$PLEqUGn%x`15 z%0F7as(Jutc@v;pzeTA#!9h|NCrLT5|Ye2n$7O0blRjS zODF>1@M2qV4sz0`)c!V4@@D-f8a-eFjRf%#tR-41(iq0pud*qbYK9X&4xbTx^z}Ov z$eE&9t!4jMGD}$ufwL|DiDzVf2?yXzoy$Dny~Y&2KNQG(Ark3|NFh-PuDh0$$yc$v zLSgv^P8M&66Q_^Qu)M4K6&dc{hVm9|!nXsCv471{(r1-Mu(~1BD4$bx z{kA5V;^x;ih@bp}wdSJ2%M0}ZIhN!&WvZ_1unOlBl_`LipNxg2=ZSLoi=oMyt)YBe zYMqQkF0#I+L-{M%2!uRfQVPe~m(i`0{oHyP(-hvU?nb95>X5IHs}nEL(4WxRH=f;T z++P$Rrr>;)SyJtlKs2L8YtWQa_ygWF@@3f(S`Sy{GFvaFNLn=BW2`ROi;uFHuO0?N z#j@zh4g;JOsgGZ0i;GAjNb#lY5<|8sV-${m;&~V-TYv$(-Co+|cxs?%hnItSIn0pb zbL-zYy+qv99MPUA|9cWWk~V^7V;C|HB4MPL^qI9p0UB{b3nECNE$|2-G<06L)}m_i z8Ox0q7x}zPJbQ3>Q;>+r-qf3OwS>@Fihs~ZlLegPo9PugD5LHZh-IL$Am8(T2xG7A zt77+=ECNbcMpIRHpc;AIM_9ymhp)X$=|~yVPCv^?cv++JGijNf=SvsXkB^mHn%Axi zB!*$(7AHuV2`|H|O1LaIi(Fc-5#HjTd^j1*PiwX%_~}E+Gf!t^pQ`g2PCCrKdJaQ6 zbQ8(1gA7S3A<;4(@o!+Lh}rAkza?)=8<2G`F}VG_;csw%yid4j8&9uCt0=eLro* zQ$GHgDYA1Arafu}--(&YBscbjX`yN*T8`}nyA_|*KcNv{@iT#iAa2Q_66D=yD`(-? zhnoLr-C4*+my3_a!eQ=Nfgp`3+apuR2OvzbYK}XfS_>wUO?TEsh+*!B30Cd+c$i4a zrw@SzrMO6yA5j2)vWAkcU-T8{a3U=*KCEv?2-@VSX~!_whm<_a8$`%j5TxQbyIb!^ zlbDFtZ?9fIB1D+mn-nmm*AXTNG>y%gAKgY0M6 zh(oBmV;x&J)-+LLC{AnOYDTmx^03}_JdZtoV&|=7OCgp593{VlRC`1AX%Y3MHOLN) z&ptdp#)CJaM_FvYE-MQ*dCvQvb@6$+zN)`wFq@Zi3S(+8VyI{6eB%>(Ssb=$YV!W1 z$$O(^=~r@z|O$5Dd6cPfGX`a50U<|!@WGr zpNhDNJ-}qa--0F!Fc_D(_tdBbC`Uxl!f(OhNQ)P}C-V?ASxXQo`VJYFRuG$l?O}D?eGE<9H zNoku!Wc1|pj2C==q`pmCOL^`WVZqmq`fZdkl3r(Pcx>;tNgki!EkgH1FBAbtqwzq& zx^l0VW{_`B1-&gO_3nfAa-r$FaV>fo2JTN=64o!U+;<3*u=ag{3&DC^ALV*D{?4zi zsxM-chY+PaI=H-`sS5@x;TPg>*eCXP3UBGXml3U8{As4j!7JEQ14}$AqpPJ*NV*?sNIH>}puU%!VKiI_>YcY=W>zNGR*s2G9JOaRZ+F zAZ%5+hY=IdEjppkt;4lcnt%hd6pCBnzQP9{3#M)lJq}3~BEke!mb)(NZyY71Z zYZE(;6i7jG``yn~uvlNa{4Lv@A<7-zvGw%+bK>U^GQ#jB@Phjv4$(LaM}3Vz6B{y` z(NTT00HXLBljFEbhi-t0$%_Z4O%Ro>k#pXDk6~qaUhx%wknw_-Htn$>(8-g}w6AWp z1s)`KMhk_fqCL=i1C<``WQ*|Bk+Z!!aapbQH}oJ>npA%=mCBeFwG2$&2qrFdYIv`7~2t0*njR1lwQvR^@04D8Lt zcufhUY>n~se_z!66C+k}fLog)jJ|}@a#+;M5Jf=SR?k!nN5WXTS~6xrqO7x+i=&57 z*)2?m_2{2>(r5T#;)JFkt(g(cem9Xl?M-d;`f+?xYx+>^6h1W%z>IYNJqKgRO*X_X zI-LUP*CVqcx+t}IFkV>Cne=vW_aL}a>m--X{Hv7bcKam;o}0+7b#F1rJZEl$`fzQA;tGdGWEsa3322I9N#U9LMqEPb#2bz@}oZ;$1nck zSaaGy0StymFM*{#OSNk`rC!A&6ibr9wV2{Cwiv~ZcY;0er|d8=3*Pi7vR{+mhB;3} zkO4(gyC)?qeA&UohOU@~Kt?f_C|dz>M*{<(DZlHql0W=eeZ@diL>jwIpBQiYo0gy> zHjR%^_fQkArBvq3ZG(2Y=s$3c{3(vr*8*#WZ))>I0zjjiy9O6-!o(3Njj3+?PL>ll9$<-hf{2p}k#bPKVAJ%$fL?LvywO zmm*_8ajAQ3|Hk&1L5<;rDZ^b18s&ZM*SV_x+tkczbw5OD2AXBjvT3v|&2Y|Q_0e#q zZN;E+=WZ&PmFh0Ix$;CD=If)GVeRINy0u#h29#WTzLZmM%V@}em?b1Wr(D9M2rO-q zG)VzoE7o70!e4%^D2Gg0ETi2h;0l8$vJa-PdA1s< za_X38_!WXkxp2{6F6si23}fpS#J6BXG6^9h=V`a{yq5@@)WmdOhlsM{=c_uV z20I5|T$Kou?p*&B7{Np{Y;F9Ji2DfNQ%3ddohzzhtyXpH?ux2A{j9wv;rD*b+mU|d z;zXvP^8K56Q+??=GN+muEhSqPt<1*AVWgEePJ8^@+>V@#rPC>NHU5GXmZ*unEcPp* z1Hl7A)Wz$zpUP?#nW`)Yt&zBnqn1}m%i^5Uy^Y@3Z`<*Su4%XbL)UDkU;*_kH&mop zmd72R!DK7U0j?pESEIp>GAEE2JU_I*^wTePNIb-89hCnJE@5qT2AggFJ3uF{!gySf zpD+eTx_}D-@?u}xbK_3|HGFr6Zf)}rm<`@Ri(8oEB29*!L6*~Ww)fO+!@{R}W2ZhJ z=XGm)Z)`N{SKMC?W^~`1M(!4(P}37$($Ws<^97_Se>yK@$+mZc^iGjHWz;{Ijdk9oHWwsuSmGZv~TYG5msj25seY|9#jKu1TZRRhC8R9JJrsX zwlxMat5io~kvIbj!~FVeAtkmY9Doid^O=g}Dh$G;SngRdX$i^~57HLF&g4o31>gPq zXp3U1hu>uAL2GGJh>*gU7G0Rq&Q?}fYp|F=JYDo>R^v+S5C%-G#X<(r$Ozyv^ZjB+X^DRs+j7Qrk`BG>q-Tq^_SyVQkjcYb4&kba63f!((UJGK3CS$7UK{ z$JzETJVj>uhqXz7Mou+Nq6+71!RNnh(>kVOJv!Jo-{lbelk1mHZT|IxqYItkN2Qpg zeR$I;NuMeR#_u=vxZSCef@pQY$}tREDPoypJMMi`=7! zGJZn8k0{)IDYCkfc-{P7pk=7;x7Rx!R`3%)19ZM=z;08Mdx-(NWi>*?cMpXO z*unXu&GN<{gEI9S2K3#}7KBd8(Mz;DuL-Zn&^TG6TbXy4gmeV7gxu74OAE53A&}9F zRM}5RO<3V_e~{z)(BvaTt7{RA+N6e}EtIIoi z&~JMqjck0qi5zwPZh-+bmfvoy@()!#AYPq-R%bVvPYf5+vx1JZP_4slPE_p$vjsjg ziE$`tllSz!f2wO-2o&_g0}< zXx6}IIK?m+(_Z{BpPy8D)Y(IC;k8Wen_fn9AAWB$mUY^?9O-65V^%%=(4A~>+Ulb` zd~76|6Tv{;aN!RBdwP71PXj7@2@AXX&m!){Bfb;`%T+EpT9k>_J}JP& zbqFqULry8|Y#C^z?WQ5#G8DX5#^qp$~srpnayrx`9U6}#^H8&t^R2h!HwA7Z*|^~Q)q|o{HhzXh#jk*2HMczMpslc@%Q6WlpVdwJcvMus zhyNsxARP+Do>E6lkViZJK!*aT-so%e#7?n_+hKiZrxT}TUZu5(58K%%;laC((@p3wKV^7BLiR3oGSFx zXS3btYjj^mA)vk~@_j*q;=xmPlc-^`${g>S5xaf?S8m&=$#b#Bd&C(cgzWteF68)X zOf#YNm~((nErPj)80l^sUWk&D1|5$^H7lepYYF#Db4L~Sy2qm%1~qBrPA7i z)Nr#LvM#ZSJ2k)h{=w1cjZ8$ou1ej9;hwj1o(D>}?)n1H2Iz*72|{R2xP>@)+@bu0 znpSXjhQ!5M+-XarKri!AS|}F>052M>(y2Ro*^H`7Ao$!>@@a6H#eBZ+d@)W(GH{Rzqh$lOMqoi`BH5YX%D8a^;_C$zDXyc zzGB@$szbk^M@#$EI_daQ7LI>&CN~m){ax@n<@6Owl4h(ki_=L#PDJmv+y{q*7E&%K zeUs;PRfut(6QtgdCW+2|BgD+44>|!0PxT> zVA+;Ug9~YLV?>{EC`*$?2OD!2=ZX}dn2jqna;Gqh(S7nCw-yu;n0SGX(C}kt_laBV zvrxyU-uy7ifq^(C|3)~19HE?+Bs-1R0L9sTXPyc;Z&==-fC|flJZauIY}ZnhPF*Zi zph`_>CKt|2k3`$!UhIrvl*|9So)Svg>-$L*U^?>aazUY3Nk;6{8E4jm;55jdJHCI;^-`wLjL<05c{h726X!hJHAMxx*cT~X7GbHJ@oVd=coazzE1*`|4sRN~xo zu~QkzmwlsuxxA?7(t(p(OQ^VDmf`EFw`-nYkQj)7>lpUUg&X0SH0`6$Z$SF7)s9bf z20!Q}%>$p!YUaouhhs1LtW)i(b_gLgb+qzMGW@agf_p_X*O4}S1j({LGQM> zceN)ND+Iwoy`>+FcePXfmnM?O5x~Q6V{%&wEle28%JA>iGzt*70&t1 ziD%gYLdj-Xkg1cs=m=%K`!QAR?=IxFi|MV}FF5?ew{sn4>R8~la9l$hpJrr48HA|3 zjp=<6IW{8t*PoWSjTWNHbq}@$ogj%2A~^c8P18vVsqb^#H22BaC?~2VBnVe@IT7C( zTBdCmL!K8gJs)=LyHhpLRqP2Qac16)YBqmU!;=Mv5uulOs}Ivan{C}W8Cv>UdU(nx z5J1yHw&;}(VJ1b-70WMwkOOFTZx0hE5Dg;@4?A1!evL|VgQ1OcuY2kua4Xr#wcN^b zMOdfjK9oE8WcDgFjt^S|zasWMMMPAkw$Y(DSGn?SgCw(*7G$>CnF2{p9>n1&D(fgbqwzpC=c*{&2YiMJjxZiECe+O1g)of%nLXJ#Ombpk_u4E|W zqK#6qEBQze@S44ws#;;kDw;Nue5T^PQlxOuLs;9vMOU#R)q46~NKNPRtkh+F zk{4xJbf`hAGQF;La!0~wlrHOK7|LVl95Beq<#G}w9&EWfXYICX@Rpw$@+IxlI6#V% z94*?S(>@3eN3di-Uz8zfz*~$SU0|L>MGl?%UTa;&L(N?8X@@~i@sS+Dqtr!?njcQ8 z`&B9qE~McNG)VBH6x79m8BZp|Q`jTPOW7tPQ_;w-hgpZHhkL*cjfWPg*2E(pXBv&n z5akgWIM4KZMO>v;$n*vrJC|6um;oWcr8qQOKmgQWr6n#nm0W7KX&IPha$m;@1pqhM z@P*mZQ;f0h_wv2wKZ=D_K0A&(&};czS*QmWCF--K&zrjOaT^IuR&PppLH$-$ISW20 z?$V>g?JBAuXT_1*^8ZkrHKxXso7%$cdrYrPMfRs7HlH?==52&r zP7^FrOfleIq>&&k10nWtsa8zLfQyEE_oKdEW=Z~Kyw%%-oMA(BB9d4?DGKf5Zaf~x z(wyLg3WBvZPbRg$Er+>@Q*%PS$jRZ zu5sw4WXN1b9O&@lWeudP?gs-skHVW*$BBG_7%2F|Q9mo_k%|*#qKlpQoHZB5*|ft| zS2|uF{e(!sixqzafW{N1C1fTk7=SIO@jndt9zsQK^M0JrLGS)+)I-EFCiHYe+fNlj zjfbhGFjkF57J}EgVYvcJLg9ksQSN3yD_sJ)drIBaiA&rVs%7A!-HG%dIX*qjq`91`T`%3QYq8f|D?t8r^%9{Ln>WLitLAMZL41eBB8e%U#^DO&v1yQtxt|&B9SDNfZvUpt3|bN%3<# z%)J(5L*1m&o9!4pZ@vtmr4qtm>hohsY^YF<&h&Yt!CR2KpmC0`GX0 zW(Fogo!0yUZL=*IHu?v82lz=MGQdPpz&C-e8X{0SRL9LX`2FaqJj^85;KeK!JgX?m@#ZKQlAP`x@K zQdUiA2$%d##g!pddqZHCH>PXOL+yKcuJM$+2K@;ct!o9cz(Xtyy|)6-M2QP)Gy+|f z%caLCK46Psg-tBOEiL5cnWL&M!Wv z9`h{<4-vZS-e+RoyR5W95Q;i>hgRL?nmRStBARF|vc1{0kknKWjHjC=>xAM-GjVpDUB5 zL1UJkoGwwp^Ge^!@?h0wGfu;SHV(0=4X;=H_U0k%nU1h> zT9#sQ^^T0}pn*7MRPKv0QeX>EuATBm55$PsnXul!3=J5*0vFsob7m@z#f#D^&trE$ zj$u_ln91}@H%z!D9<(9{mm{bABZacyW0DVlAdjuzu6TcCQhDP}vrjep64FZBqNFXI zAOK+a%T`sU$E+@Me{-Uq(bu4+1hNE`IDdmws27T>thG&HL$cB+`j$!zqu_)X|fNfHXZEZZmBtn(k;C`*&98@3|`K$a{Dj!XQO3 z;r?QlsenNW7%$0#mwGO_)U)hPwB#-%LSLu6`y9NS=4$Myvc=^xs^ zL$_{h>4 zrA%)tTh-sbX_&Yju`ycQj{qZwEfHWx?^$#&@BMBEIaauJF&+Cbm<&{~tpVPSMPnRz z5wOy;{4x&s*F4TvmhRU-Ao@5qBiAUW=!UlBHDhtf5T94BH+SZKRrC@zQDBX8De;Gg zr)+(#{KqR5gQl)i_dyOfmfdOWo)S#=++35{sP-$Il-~YB=k$n#GUl@7EB2G$$@T(8$e z>kXL+RbkT=5rjTRfzl^<^$xyaQv7^B`;D^E*;(qoPff+&3pK_@VP<_BUS&BD!@N&6 zvE1xt6r1g&U^^BL$jMrkAYgs?p|}Rc=i)^=iFCR)9Cjs^8n{IA&ioOZn&Gc!aZCBl`5`sH@Do~qHdft3w$}~F-wUiMm6jXHDab{=mj$TyY(hcBG3Z9 zh7(Y<_bNCxkC5gt8Tq@|xZ1c!F#{p77(nx8l)f|H;B=i@`+CxWKm~loOvbFYV4fDu zweAd@GO4$YzRlGMt%)C5KOPLWKU1CmhLTb7Z^J_ILMejonW3?YBcT;=@153L^)cQf zFRoIiJYLC(baKoz?9CGfgXJ=h{HOH$Lx|n6NEB0F4 zCcwv-m_>u4VGw2!}=~F&bJlv;MJC!x_Dki4|ftHlaW&NMDHnbI0kz5h4 zauz9_DKm<%c&wt&1snU{Do|uQOT?}UU1WCz$^|eQzj_spZPG))0%w`l;gbsQ{+oK8 z0xztZoR3CqTxdz96{sY7R_?qF=7 znmU|HA)-S$(7`Zn5G5HnnAWw?`4B;?=j=MrMQe(?eSk0sTiDocX=`~xCfa8ZSf~2a zryG1G3^Dh|6ybhis4~jpb_garx;p9hw}>Y74)%4o%{1>Pve%_rw*jgUFJZVreVVnN z-Jcq4Q6QDKUUuo@fTS;}O{`9jxD`^WMiUbpjho$D`v7~X9Y9){^6j#Wh*G~@R>-lp zAH?R`?jnLkow@^LE!xrE_RGf29m`mbn;>btlu$22;Gjo5>+);T(VOm#@dB>{Lq6GW zpC7`H^vhZ49{Fa*a+EuqUpuQJef54qUYXCD#B+Ae6VqNdFKe%EkmSTV^O=_Cgr3`< zU7n8U%=+~S5X4W^IM%Y3f?jJaX{@uxH6d>N2JMu7t>4`Im?z@#9JR!7TLnc>L$#Cf>H&C&tQ%%e2|`IrzX) z@#cATqdh8$tgoP4H1laqPBI<&ME^9!x~aa|nkxz@F01qn+*KKV!{4Q z_<*Uuw~Z+SwI8p<#dbl^oh3u5=6FHkZ@8^}z+Y5O!`(ZpBVNTGcQw8D{2?;`! zz=sE=WcCj(K{qe-xBEH8i&!_;H%_eRHdoiTKSkzYc4>l*%=8Rjk)j@Ii)};)UVd#! zrbyr|cp86=oRBB-eYWRP#b&PybNL_ zuI(iR3`9V>Lr}WA6ciB*>6T9E?hue%x>>qmmtJ<+g%6+SdB5NM zedeAybDcADU+2u3v_k0s(-+N7&sIm3m=oUV5L9O|d`{Rq*TAL=%p*~z(~xq9-r&sf zqBz?s(rQDEl*|bxAr@6ktxE~1g4=ySqD=^qj#~4#=TTD1l#BrStj16|q;of}IPV9t z?7R|YQnLXxk)_=ZA?k~KUXTCxK~_>Z#^&00(-39+%EYU9pvMlBuMzB44S>Kj{QSLjB2dT`mjnBwx)TettKl|+H(%$YNigd_>0s~& zx+2ju28+`ljPz$(>deti;^|esHW%vhjho{~L5bvGY>VPSbLQ2NxRXyqmDJqKhJC5q zU7o)SdOm*QoJHwZp}5Ot;Gm5$NG#m=YtG(|sxE_Uqph6-#h_C?2y4HQ$fQ9%@ENzt z&=DS3;=M@bHJqg?kaYhE9d!(PKE3`u*JRPEFu@Ng6QLpd*LLG+pE95i9sy9*9no=g zJ1u0w%xynZM{0RoMYi`L4FcZfQk4B6!g4Cn6Q|~sIPDKow5s+~Qx8*jj24fZRLoyp zcz9fW(|LUx5NpwYDQC#UB;^lpxaQ<*T)nxVsOj*%j1^u_86BY$$ul*nkCFi^c)ffnjB9eSui{ktsW|uEuruJ#$X6do5JUr;96clk=KP zd$tdU&jn*`R3FLRbf3w~O8kT`ETopv$m~^Cko-nrUxSUF5?#7)jGEjkjQkxiC#di~ zYg6m*n{G>>s1i7fkz7q#Lvk+k1k|G!evZsk%FK*cpf>_k`zEJvALGPe3w4t$eVUKc zdY3jfIMuJ_F?s5svS_=HkxDkp26@ z`OBjpbUCs@dD#t(2d%s-fK^O+#b|DlL%IN0Iy<{tJgB1vphEd`;(xS;i~p`m$jC*A+3q2Mfyyf%SUVj4E%ih;gQ zhx^d8CHZY+CBf>-zY+sVX0vhPI9?WB6d&+`ciZ;+B1{SzS^~gKvAKJznXiPriJD9 zX7WfmU_NT%h)#`vhC%HYIOSQ34XtN)qPf5 zy3LL?!2?KNg4~Fp(_g*KV}!Lg%tC)Ya($tFzf1E=!F{}-cbLai*VxzY={IxiPx5>F zxpD1|LX^R4KNmZg(}yfU!{FWC8N;njXr^~x_6FS^(qk_EMPz?XcC=Gl{oWXhB8UH0 z#L%TbYMu}QK8(IJagS4;BaNu*KrMutD~m#?#dDqsw{rz1Sr3LrG0iqQV18)woy;5{ z#wzj~qG&_T0%Kll@a&d3MAgYjgZEyE-N{9zmR= zDd&s1m?$+q(Co_#HC(^v)d61>3v>G98tJ*YUJg?koHz}B&77>h@kuVf8eHzCT+qhA zIcMX60f<(HFa~jNbauGlxPsXl zcjQmY@m~SqeRFY!FIknhZUta179Cf7f~`Rp&pzvQoRb)1PPeL6c!v)5_t)KdDaq4J zQ-Hp=#+f#9dr|s$+kPAAe<(W8{X&OnWz$x;B#7~VG{fs|MW=RUg;dvN?&hJK>@Uo8 z5CU=jbP#q31YB`n6^CB$GkOTeWC~xQz`rBMdF?S1b|PG5!m=MJZrkb&ubG%?@@UWB zNyk6vUduxj z9ZAG>hb_qOoqZwv^0)ia#e+20haVW!TI*J$*F(O&m9x>%1n2(opqD@U{)Ofm6r9Xjo>zDQc^&O0&7b zbvG|obWKgeNh)rCe!R<(u5ZZ2m^FF-3!-aLKH6MakJIAO0M4Ul0rk$BdvuA+F#G4~ zOmFaWV*hr(N3+t5GND%drG5C5CCxuV>#H&hG?Qmxg{gr)ZNhZ18g&vkl@==A(1Fwi z8};iaF*7e(B9_C&Lj2~T1UU- ze|gYS6qyIT*64pBB3YI{(f=H`FQUu9$m1{aOSf;tZ~K{gOJz~Djs?T=|EmRn!Sqr= z7pAnv4F|-38Rpo+^W`Ng{jO&mWXB7#C0@XnTl0m*H;*G_x}Di+KVJ{3A{cxQS2Zb< zLT5mZ#+5RX{;o1(EyumD2fP|(sQC_j_F$ZkQ@nON+n|`~s7bBZ!RoinP5ZIRMjH0e zk7M=U%u8&%`!Ow9Dc3!CbjT|-f4OuO8)+|F{CO0EgS&K9EKS?vFoP^ikEmjR&x~ns ze-TU!2B?&1J}_4nqGT{TI6F3QHg z;hznNA==B;TZDO;>pa)ZG(b(*9}&`P${$4;8@c&u6qV@0znk8|znLw|nGXCZc?n#| zy0U6k-5LM1IZ(fJ;t?bPEXaOh+_*S395a&Q*gPpMm(=Fm@S^x)XuwKfE{RyCjxDf3 z@;sqS{MDfM;e>o(Jc&vW2Ulg33SFSg{Xk7el5bV-9iv*x%J+VyCdICqIs;G5PH+wR12&ffb>C3~{DZ=tVL zUhFK<>ODYrBsvnDN+3qUIHgTu050CPOyrxcGGWXjMgYF|+OL@)<+1L+lBmhW&oPRw9_kCUPTfH^`Z%(z{DF zQp+Ql;M~3_{MtqvF5^Ziw0X-%u_GOm-v{v~qmz zp=eU)hk{!wN~*v>po7Qj=T-ha`_CS(e1auL_74pXaSQ6iEBAQuS)A?bF|}+#Kzt)Q zO1V`_ec~{fuBh`{HaQY4#&_{(H@-Ij0>kFqCBL6a#V1u`&DkF z3S0;8H*_^U-+8ApUUx|91%u$oYnDz*2E3w%8XgT{ z+S<9!*A12W6oTQ(-Br%ts%2PTJ4sHa-{4*;5Kst!UA5U_LLTAe58m0MerxMg+3#j`iZnT3XZ=^r=U;bxOUwi<8sHYRrIc+%ugxr7S`R4HI9p%6Pue@OI~oWb z;-cf~@hUEB`^`@gH8Yh^la%4b>^cBz&%_u0mehaztXC*;$gMbrp)K67sI|Ui&^u5v z?NHrW0Qj9Gq`S(?Ly~b|u{gQeH$#bV{>gC%>%)_5XNk|cy1eb2v4zrdrt`%y ziJj8qI7{mL@ckPfe?&V)+kTUV_{--Q3k{U0gV%Hg8K<`o_j^pt!qwxLU&nZmUFpnRISv9zq{q$9~zX zxXYQ1NPRc@YP~#ePV&=7yXVYlr40#;*G){!z!UB+1xs0i&Ccy!v34>tP*ET8z14Y|gg$W= z{4ci_Dk6BGUaZaYZ;l`F(U5JRIG~7I{;sS+U=s0(>(X*UTnPDSjZ&7q>Mp`5F$QZn{BGzU zg?^=^-0Ayyb@1wKHe9;bN8t}3FxY-#qkqY#r9q9hS$jt3az{pKCj$v=cVkN*$7f0d^k zSS|0G6&uCt&v$pN+j6%1?Hfes7VasxQ;Y|jzO-3NS#Px6h=brJMP${!cYAfzmVv=#q)t{OHK$Waafi!Y5)UOO@4ZB&)NgOxE~~+85zP^>lwn0qMkfYj;5-H(?bTd~V(Mnvm4ifb z&b+nwa|Lmu+fs4B+F+fo-8x&g!h;af_D}Yl2W_X{`k~=5mf`rgsC~6wJCMH~Fgz z)5p1ZOm|tL!%vjQ$CdDZv9D#K?-r1y-FJE3uUOrFlYAo$>Angf@{!A;>vSR;gT70S zbGjr{v&}Iy*6n(_j80c)c5}}*_Wat=xHBx+P^r!TU;Dh#V`C-&xEtpw%bua}pUEq= zw5aL@O>DDt_V(j7i@ zujF?15{lb<_lyGaqZ#vYq?*~J`t$#VfNsx7z2vO{M6>}Ky^@>#`HYteg+v_rW;quH z76?$lw+C}}W|nrAULq)ggdwCCL|M7&1o!`Y7|n=4N*osg<_YU;o(Hebeyn)^np|Ti zLjnTF1Isa9DD!M*OA+|v&_|LU+ zL9F6tEN}2ZkPA>_;NWf;hL0zf8c#t-N3Hc9^RU1@&WnSOGkFge$l7dAE*O&-K2Vqd z`ya<=oZBwvuOEh5-vmsnSJYCiP4m?mu+}Is&z@ZZ^$cAQ(wBHdk*@+in2pplte}S% zfPWHKbc-*@NrMcL5ry!^o&1qYPJOv4KFUD_)|H)s9EnXm$m#}+FLTRUp7#(T>O#t! zxV81+X)UNTSyx}ejQ+ycZxc5!V9uO28TCjFJ@+j8cF)rDTDs!ypdeZ|8L-(b&Kuyd zXN8phB0X|O%EfM=$7|TwtoXYCw?LS|o~o@rr|y#%PJK=)IfB>M4V4H3nhVX=oX&e| z@Gn={&qbWxvH`Zx_3dYU1_z)IQF6Fpx20;E3rR9Jt8PO;!eHs94L=*%%SQm$$-ZD& z^fcq9{{_1I+m*!Y5w8pJuUTww#=W)+dB}K4CX-Fn6jJuu>M95UTA``Sz$f-fEn#ec&`gPv+9DR3uF0EP}Cx=QLni`A(ww>-=k?b0LH*Dv8@T{bs{B zx=0X)JQK{Y2k&KdG}YWTfvJ~|S0)s*GX0`@=ZTRwo64ZFaSe@}$#(Sh*=4C1h_mov ziVo7)f4W84P^vg3v*Ygf?IpgaYd=bXkzz2CwZfI!fvrhFWczRwZA}-?1h{rk@BHM-MJPX0DsB@8Jg zU2)rfm+|J-BI8ZkR$Hwru&eV_^~D8W;k6PR@=MgAE$6V^MCdV`s$A-H(vEvx}+$i0cy!JeAp>?sM8cvYzOF*>(+f-Nzm?3$4|1^Ci>yoRxPhUv4ha zNx5wi_v{3mbwgvsq35nZsG;Y+a9~&(r0FUti-B?U;2UNeq?Ax& z>GsbgBx{Cwl4;oV-EZIB>PUnNL%PV zuETUjf<3>ujag$kc8o7Pq$aU2x$_9H)rG^(?P0Vm*yqHh2iHEUaeJFHv21>7A+D6( z=MM;cIbT(so1#N<3(wN{y-;bX?8Ij@D`T4lO?N-!`SMGta=%?Q068{zB%AW-sM0np z;ABWSsl1?dI|XaJn%!G);LD_AMMv%mb`T^a)!zye729&Wn)8Qg-PW1Hk)#}UeMKb zxXjAK{cTarzcY&8E)Q$*OS!%G_q7r16ngn~Y7Oy_{w2WHZ z)?#&Zt28d`Jd#kzKJm92dk*)El@)||$48IPn27~}=( zh~82QZHEzF4AphCc)hk;x3wOjd9rVGyWZ9SM79iW8)pjqJc`fm!*;lguEmG1UwE`V zyg4uQUbM~%fa!(xq3az;d@D@vaa*MatnK_r{yLtDvuk?r5Zt`Ekie@PaMBW2vbd58 zI;cyk4FS7s8}Wn@&FastyLFtkrHJnFRxJ7V{01A;FIHvAZu~_Lw?J0h4@7547?8nu zbjRy|=kVU6XGkw7niwLPTGwLaS7b1!PKd4!hF3E4Gf5R~>*e+HD=4rs+r@P`mFZ8) zfdnK5J$okPd#6Mwr089phpyP`xgh1n+o{|bSR1(3e6Obg=610{2lgL@)dkFurzP>j zK7lvIHPSQ_9f7BR9Uf#I=$}K4jV@lHVEth1H`9b-4~Q}NEJyUHNfHk)#e>Aq1%;Q5 z)j(Yi1W$4^wy$lk7#V=)n|!S^QT?LOyvH~DB*-rhKu(SoeoUMx0i&AMY(4V+qvFV3 zmzR|}Ox3n#^9~*D=-!(<{iO4YyYr)GFT@SK-EN24h1!;CUjF1OFuC|sJl6~}nvn)+ z{E=xvWl%8GZE!q#u=P2MzcD~EB-MJw*Y{?f*wig3!9Zc-#J*Z zk$}_5XMWCdSecq6>CDt~baluXzxpFMzN7p5aFDoy*h-Aocsv1CW#)0ZiuPh|^Fi$| z{Wb4T*lDJOc?}?piqm|%^^NV+c)*7(6bIPiXmh$6fa{*ULUpT< z!YqvP=+iRU)iAv*K^^(kK?h%W5Nf^+ib9iWxkyM`%?%tFUGHJ^W&#}DheA2wVA0B* z`JHru9!bu^+4-+q#EPkDmJ>OV4P6U~dy||ZRRa02b`UHgHJBgM_raWWD|{ntM=apB zkI+cMZg44JQ?V#ubLvIhFBunY&)#{kzqw1lDIV(AE13&&4q_F#Itz8H?Z(c~d_*4C zP)ic;ayo;wM2*>A#8NV}N-KG{GrWd?Oz&5|%k@`O1D|o4-1ldxCKr_hTAba{DjVwu zltxv@BkEan^TUB_`#2+tY4hljqut%N-{{_`Gs@%cwOBs22aUW+z^0{zMLf5J`JV>O z2K#1WGdA?;`ygD4m)I5A<4yE@Kk>AukHEM6&m0=`#-!BpLM>OQQdn9gQm&;d={{aP zpVtN4vUHMAOevT`v2c`nFse?wJni;2)2K?YrQc@s&MzNquNc~aNVj|G@o|4@p}$?9g}X`j>S*su%SJTlqc1dKtBTQqR@h;X zeU(!T#E-hkc*Nx3zjkBo86~@isi0pX0$0}!m44+;Milo#Fuabwl=81 zI~Dx=`!IViU*&=_%cVb6Y|d{NyMNu(7+%LEWuo(JNJu2ng&i`c_=s;KG?clYmOHaY z@Jz_G%I&*aIX%@Rk8T+n2$y+mBpnvJ5zA*2)mnuboJH*~g(OD45^I6z0*3IMc#am` zkky8>5g@TY{Y;Z&qh%Msj(5|#M50mi{`>e%bkyH9u|<1YoVm6WQ};!e*oc-e^PKaSoe#2db)3O6-H%AG~c^6eki)r+?rTmPv_;~=BGbg|h;aS5K>bT0(vN%x|ADcemi%7+Q-PwQW##)BxbY`lqoeUo`#YKt zI)VNpDeaQY#a~Zaik@U#p&n|aaPVobevK^6-6KYnYaD%Y*_zEHzpUPKFUyxrJ20s6 z(Q^J{x-s}LWae17#s4BTrdp6(xzY`|K+>;HpYHEGjaCb^1mAm{C@MNlKne2P!sWUq zd=*^q-k}v4-5_q!pUAJjB!(*L`Hb-QRk{9vSKrZ=2ij!Odd_RL2+IT=EJOL0#}>#- zxKsT$qfj5tym!v_ZvAVDyBYAkd(o$c2 zp{R34C=fIa5gUg`l?g&{&r2!+{^mw_(D*L!Gm&1t>SMvKm47J z7L*Y6_M=iqpZS8wvp>wt%qX(Uzxb1t%FAqb=5p{h?oBZLMo$G1LYJMa zRMqF|!wC)w)SOT|icY`ZjZoL0A6?`^B!uLgZWhz3bJy4B;-)8*#5zgtH-4ijBdzQ4T@K+N$a2vAP_BKpAQ9Q2ec0KH{ilUM!H{F~ zhmG#mnjv8tS-Q7l-Qwa*nyBs24>i!G+>73@6~iS-bep(A7&HYISem|=g+8DF)s3RN z_c)`SzIzVeUR$0$!Zo_TKKevgY{wHtUzT!{Z)_;Iv&G32a6CH1=zXlUfA70VD#Nsc1fl{s#>WrQVdXd2+-$t}s6Hy?83J+Hn;rR9u6bvb63ZEQ z2EQz5V`P#aa|-_=ac;mL6SJSq;Y#JrzN%_;5JP#~IP<#QJdxOhp-CL)^KFxf-@=Pq z5LpKB_yu*T?V}J@U+}fw#!mayRV$&>)qJaWSe9=W6~_ior}YCpQPURfM`H0CQ4JK_ z;-8Sk71-ll(!oFD0r=%gedjj_lJHGZk{v9kbK?C%{$|K02k z%vD#IJhJCZUbwqH{4%TF;LJgT-*9rW#kn`Im=ms3ziG_hTIZ2<-0gua$ci}od=TQx z1a-c6bTC`^Asi?jBU|ZNy#BmkmE7pNi+0RIxd=R{d(NxT$#0T0R10$Kk6u_&B)D)# zI4MNwht&vaV4wdiX62xZYB{L*GI^qm$f3OHA&l+nNmVqMb%-XRvY>R zdVV@GDFynee|=m*0|cq)$qwM{u}3HJ8}Y{2xg8BrIz1w$>*8;DdMP7hH!~dS!7qPt z^;M^*K)swn#^K#^^*xBp^}=?dzOb#=;1@%zqt9Hr`Qub6ADgq|amCHp7=AYa+Q@r8 zEh9$X?3E8ahQ;sxk@+>?$+rl-sIY7EK+cwy-jrwcRi~!Bc&?>Me(qZrtaV55xA$3K8$TR(}Kq5fACQH_v($t&D9CPN9i2u$u(JUdO*~bYvjP z*U^i}vz?pu9P&^{zr&M;BDNNb2X8h6zku4f%s;H;GT5&SiAlbH^rc9XEoj-U()1E% zvbsX{>@=;SV_wpV186qX5TGbpC)zZU2Gi0#DnsS9al`b}=p}CRt4?y_d#)`kM(E6UVQK zV%5}6^QB|Ue=G6_Hk2>)ICJ+^hcB7;znaeRZ@j&uAZ$kQQn+jGkC{_cK!wpx4HWM- zEk?)n`nKL~5m^inBs#R1r5r3Zx(|?fbdyJj$587V>i`p$8;^VQg-J5TYN2bsGUvYZ zNqI2~_DaA?>ml^{cSS3bhhfT$UUTuBN8e+xQ{T1|O}mmZo3D#s zUY~1xfzwq&%UJlBa>*adnw>{B+-^ZdIq5~D+P4yXoeT`6cdoO#O?_RoET%GRXc@h) zf_9VR-rEy}9$3MRu#wld4Af^K`iD#GGS0g{#@wJQ$ju*E<(Yo6wAi%$Q?f8LF_Z4} z#X>N$<0&nby?wNLGO00UcxE9MuT*i_Ue7^8nNas&=XKZVT2GqLZNPc?j=g6oeBr0V zJP3V^7qfH}Zhw1oed8adQ3m(&h4J#=1Klp*D7NWwouXf&{B}E+ay6E&{jixMqH8k_ z=gr^c?%5Y+xx!V__?uB04bknpk#U%r$Xv3rOz%H9NT3f?2Rz7715Ivzi>z0gJX|hi z2sGld0QOhA+Kd%$zYkb#Hn?%NUj18)oj5S|@lX{Lh)Fezdn{RNd9w^|D#0{1#SzBm zFN(p7Qkrh_7A_mIjK-Ela*A1J+vyv^xI=Y9+zhf>*9#kJM`Ukv%>U^4TXHVfd+z=G z9${ALI<{-tUMeI~WclfQjS3ESpL(f?wOpoO^hhvplC@kU-6H=_8{o=x z?TVcF1H-~cx_2p+Py?`A|BCK;^!1_RAw74xH8v)>$pCAv0dw96G`D)p11($LG_oua zwqmI{9cW>^uR-$>)^r}bXso6oV7BRN&N=i-hv0$yKsew(D5H4!38SjDONe zm9bN$$= zEA~>(72&N1^O;r;%C$b%DDyg;>6hxubSIL9Zqu|?#xY7>_NLuBTOM9177%l3lpE~O zY`8!c>NXB#U8s(TtSW11KeDKjORVb6qF8!Z&qlAK&ZcfI_4ZS<=cs6TjcrH?YYcpXM=C-i~B`8TlN_j7+fi6kD5i$k9y-j6KypJjn zf3@#YSXT8{WIVZKLAsky86~YpE5mMeBz>*G&qE9@)2Ag6;|18uJX&4#4V*%-!`TIB z#rvWrBSo{d+OzX}c%3)o$}A2dy-~?4E{EwiUZy$_NB?z-wlzFm;^kkNct^5HoZ@^n zs{!kA=99r33&$9PmV0J_mo|;?+Xf`Vv8Rp>40(~%`jm|M$;Y=uPd?h@xH~`L3CpbI;PZg9!#%yTpwNk-eXi<2L6_uh^%CR)R|wGKS< zvOoPKGiiot#IT};Qs!2@0tkZlu3)Ah;tkE$g=$%CHWem6n|-savrbCrZnwB^QOkwk zO{YYw`bhIH=ltHNmK)o_dn>5ZTo3iSXg3TUdkE7XFj%Hyp_#vz{Jj9HS6pUr3XCj zG_CLoZHIlUO<8RBS2aS<%s$HSJ-K&_C^VpJ)3Q4BSY2}?c=Gjm2CZiueAiyq`9d7* zveGw7^AO_ID{bsS24p}0(X-&&*)(X&IycjG*UTGeUU4IxJ0w7j$Dt7k=5NAa!kC!g zv~zB2lSUrf#n+yW81+-`g{IjmPR8?PX)*e6b72vY$a1r#`EFQF=vd5)ur~DVO;5a& zA7b&=r*}JZ8R?7WUb%?SvMNMIm-}b>&iJC+u}4GgXCXslr+Ld(49)^@4zgt;&-4y? zpZS}4h5J36A88!iSx(Z_AoI}ew?lG&Sri{NyznSFSMgU+@yxG)GOpM^W|}xziG*-g zSqo3m!$f|{3ZDk1KIWd5p|a7vr;|8#E?m%XLSjs-cDr7E&x#C1{`13d#l|w8=Gs}7 z-p%NE!pHE=QSzWzofWU^e%&nBOF|}kfsCI_@MC=b>@HLd^o2V zC2UocKKI9pQGKm{Qy^L7}k`RkB zwxDvHmIRO?OrP4>K7wDLy-tV>91Lw#&m|P6Prg@!X*3?S^8Rk0XPEI>^rv1jTs%Hp zl$lQavCq!E+~_sRj~%H8{m-=t0+psBY^c6>?rxBjUtN$?7}s2$boF&IJ|vMl`ptiR zCb=Po+R*zTk802`YAOd`c0sXW;+d_pS4V&GG5c${6(i?fCsNzWHi>dl?TiP2F?D{g zs86j|4)fjeCKJN)joo8*6NVj4rQc&E?x|$qJZDrT*_q1O_Sf8!mpu!ng<@8)#_c$qHJq2h!S3J$xhI`*=nG4u%sTOScLI~a@H%z${S3|s6PiMq zxQ{%f&+l4t5vhV4;?&wV)J2BpnpRu?zW%#Ix{r3f?j50)V_X+_Dgz9JSL;HEI1zx% zJ@d}vBYD)ibvuZBB^Hr{y>fuMdawMwjIvteB2Bg-?aUC^AIF3%Wjy(S6gFc>QHeW; zx`^<+a$4Ag@9zEiEkPFs1iH!4+*Qi-sU{5M$o$~Z)8_RAhq9y07mKeq9w~8(pqux@ z>Os*hNMm;pMmUCZS5c7vZlKiiq{k$vT&0YW^ZV?e6szmD1A-GkrFYHseJUO)CWux? z1W*FdSUTbI#SMo4_vzsPBLFw4-a5hf&&dkduZ+MN*$J;fh4qS7-uuX^$tv)YO`*Zt z2dHXsS4VOpK8kVMoJk;GzwSlc@ihQH2?T}geB&#@=`Yq;XcEa!etxbC|_LRU}D>xjH)S$~0pp5J$9H-r1Z6z)Dib))gVM5Tu$m8;;MrV`N@!kdahQ z#D`*i>?7cL>d!Vxpz$jT=CW3sul-L)AJ`Ni9S+fEr-TfD+%Q-i09i_rB*A^suH(S( zSMyk-F{%15+1xD)3v7FrgN$-~F_wVuzq8y`&>@U8;-?i&$yz)4++THCzXw-?|MhMm z63`!_b!Xyt=vInRc<3hA_%;z$(>G?K;PgCJZLZpIjAo)>&BK_#igd0Js!93f$93}y3LwvE`^99yPJGS5V zg^xemU%Y}SQ?;)mU>EJkn@R2%ZHQ%iw^fKoK|;Bth(3UAWJ`k_g^E>YCbn| zIWVbQCfcZ3D73fTNonp_nokZ@zk_JGq%sabNXz?;XRK%P;P58=XMAKh@_VbYQuTUX zZ-aSDze1+C*iM<&?x&DSkX_7mOT%HCh zzTYK%)o2+RFd0uc)?XSS;P*o@hX$%m1?mJm5kFO8$Gn0}du9BMZdmp}0zr$j;qDqK zQpFxfL`9Q7*13oK%%1NJ_^b|m4HFeFzuFL8!7k07(8f{i&L$tL>cLwvKPlWG67>AQ zc`ANj)7m;W;~c`~4#`mU0Mh=NSt*OUE1L`UzR@$-ldLKA6`L1l-YY|$T>`@pFbs+Cyv*m zEaY`IkJh;Mq-y<50KHPGQ_(%T|Z~95>}W zhajPLG$~b4JAl?k$Iauu|LI4*|G4xyQPy8V?6O-~kJD`T_U=~z6u;x`wliNS?&s^Z z4}|S!KC1JYXC!eh2==q$!&9JNWqt7)r5cIhulW~}0?*%1^<9TlM z>WfTGb`yg4lkarU@5~ju4}<{Uo#WsASB#piv-tDYfhp+W58rFHYI$SavD%k+CnZq= zR)PYHJk8v9*Er196>XZO3wVIlI-+~N#qmV{n%X&$vz7MVhqkMG47z9Xah%As(H8D9 zu~@Ma1wu6Hqg2By)7a3waa$z^g1|?GTY@1%faJIF|2EXS(bg+iwzzQ)Y59X;A`_T4d@AhZA5*Mb9>~RlC%YosKB9wPd;z_fqL_j0ieCle^Eno8vhIfquM=k5TRJqCJqgcv( z%IZ5OyS_p=;K$#aRk4vTcf~5|bO-q;(a)`n@^IV>xdW>>Y2ofdG-M!lYOo)6f75_9J zf~8nsUL*k!?0r^=zhV`T`ctB`L(cK~-@bEaAf{|j3SOqYbunC-MKD|q5dlKE+fLX5 z*(2-{$BJb>=v*SB79Rl^C+dDapKgEn+|)qn-=EFSRB`LQrqg8NKg@UjxkE&8K_UDRz_v|3z^|jr^taK}djyUy`#HCX zH5}));Fl-wTBl`MD0G|6OeFAZ+{jFRyrASZf6~$ZCVauyNnJJjKk77DQf5|*mm+-J zsND3d`MYvcac;owF3T^q93z4h1=SC8znXVA6W?(I@rM5`IY75HvHkQyNJTuN^1t$i z$_ktx<22NbrO1#dYK9q!KTPpX2fZf0e!7awqMEQ|B1P5#xVHDAUphA6{1U#1ta(5f zQSx8eR^?y$QYNP_>_m1ZliHw!05v3GTYVuw~+I3{T|`Cm@Ip3!edJqstl~ha$8$AIV-UzoZ9xP0^7h?-@yJYy(^@IcVo6H2 zw>_fxVVl^kZlK|7=-rT27jYDT4n!)sy5>PP&?;@o`GeMkZrQhXzAru3+t87S7) z1<>pZbpIYvdk0?=DhR-FoQB>`7au2F1WcnamlCfECHnXPbPKt+o;_B7NHu{6c#=5% zi!JEGUr`eReF6YY>i=xUMntS&+i$%y$^+mGz3tjy+WgtJ6CYRSvsyc_I7lYyZN@zP z(`e=q86LoB|G7tgC=Qu8YTaREWV^`QNICr9M%_8eghQ_n+SrPam8}DA1)J~_uKTxn zmEmPx>4xFp0iK--Q1r~?eX^?ZVW;#WqG9B;-ubFIVg(k{!?4&++3{%3glp_%a6dC? z`9)-4<7MM~ramj@IX@dZvm_|B4o5HiKbo#GpsuCYZrt5n3KWOp#jUuzOL3>g-L<&8 zdy7MHD-?Hkch`f%JNLWy{Xa5$b|#axlB~cKD!1xUvc^zO^0~dQ8C*V%FNPv7v}=wididAMg_Yqi7m z<1In=yvVB~DL$n@2J%v9$v%+B^9d+}6WW~VM9v$l?Xo6Ycb=4szKtyI3{p9>k!kUP zmIw{w)_YPfdOKqAb@Fl+`QL?2j3EpzhU#;|jpDj^U&kvY@!Zy`6XF$y>X!Ps#B|_o zy+8c|0Oma+Xh?gHWG;_*X5_~?rL0)3ba*|A^zfAF9G^JhoTv*|s23JV#qKu*?RrGo zOfO_hWug1spi7waxSIE4?3%M$zKu9un-6AqU_b#BSck0oXt9Thn6J0ortiV(<_xTC zrgDuLNz_vEGu}^$lNXVcd|OU`5I&wpzOwj$HzF6KJEsk0;rPL#gC0YooHKn|wI@J8 z`7k*a{`1uzpjbmOrR4r;n@YIxVugAH8HpgV--JS36~m(Lk@8>80RJ6B=?Ei{RX1!k zsw)EqkyleF-rCfXT!o?IErdu(vvh290tLOl@v1Zo4P7Kfqg zgQD_j9E2>5`#$eZS9^Z$j_#sv-`j1Ywk^Q3hA<)Y4ti1E=q$wRH2kTU%~pH?;kJfN zai}h3bZmU!VV{&jPJJo}c!+fPA3t9sh|iRVK*g|32Uu*AF-n)uBfd=v!oxY>wGTbrUG&eK{a0^mp|(N3tthy@*X z^~s)&)VVue;w)@CKw$Q=-+|2Aw#MZ87gUVb&_?IWVaHYd$$TqO=W{OJ+si(<9XXrB zX+w4WVS?pznb*l$*Ten-%hLuQDamO@>pcd`b165e^IF)(+s4esLrW8}0Kx}w|A61a zS?Z|QfrVik@&^;AyT^-%LzDrZ%|e#-rk{=HB|j#*E=w0SZnOq&AH#C4r!_l`mh97b zY}Rk;-+A6G7|uP7&i1DQJW6x!@>7WyTlT69y-zan-a)@5!#++J@Doj(Wq!#f(Yva= z_uXIiF}%;`CK1pNwIC8x9{uMY>^Ff94gD6><;b5*@kl6)NMjZ_piwaa%x?KPpH}}G z-~k-#Qr|8HA-X{|^=KDg>`}LR+({Dgi0@M^a+;rKtD>6>J=VG3cTSv8-4}-193Iy^ z3}2=SB|FYZs&g0G?i6EP&*s)F*W8v;$2)xY4d2$h(9)-tFT3~G+)lDQCKEa`yL5aM zZw~+JM^`pgwp#4gZmp16F=eiOZUuqnY)YB5c}stOa$a#0d@Lt(BYvLd?({xC?9lYP z|D)(*eb{l~H{>f&3FpuWO6h0cxJ)U$KP4b0Tr72Res$=)zN)TFd(BGie7qFUMO*XU zL$jYpjs5L7CLpk2(WZv@?=`~<8Nm)%7VKukX!-)=sJjJnpaWcM11Q#YBVlVHKuUc1 zh-+HI$=$u##Qo-plcD+vlzb0j7WDWOv&087c#7&+`reZh`*yyJq_M&N{d%-#0Nl!v z(PH^1f@I;$fy+qga&t96N=Cx-kXQW7a%jVWTk|(-Z=}Sq&U!AW@~@MQ+pp#ho4ofo zoS&pZcAy6NpBk%cev?SJuCey5plJruG`}awarbdSo^``k_lwH=*AeQ}x2;(}{shv~ z+0Qrrr6hHxY>Cl=&PO;4C}h6}*ljaF=2*FneyNk&b4e*Hr!poUiXpBueR7$J@TTzGTN` zIs+Uv-xs1;;T=icvD-E|YNAAbX7C^^6C zv~idUUDZp&iqe@EN`zf8~V>tn(gO%aAT()r_0qo z+mdqgpU!GD{dQ+QzJLx=4WF{X#KN@6#_c*cF{jD8)5g_Mul>`UB6Hj6$VJEPb(iOY zmqBxl+tt>{bJs%{5jUf@-%bDD(%jpIDh9##0o^9K&bO4Upf_uRD%u_5ir*8>8KM)` z3U_S=Xh{D62_w81VVb#1Y5&n;&crB6DpjkzShJO2ooEO<;i7%>q9B=y<$HX}fYP6g zuE?j28*e{AD{kYA*-ruXRV_E?@sA&~e6J~Ax*D zYQ9|PST_~=RR<|PX1e+Au1#dRJ}dfuWAL?G=sGPE^VEEsNbYJskB36zbG$APOXak0 z2T3j%beRn)hfRxkADqHGgR1mfwvCaY8aT-GYOVDzI+4r=?lW8`^m)2&I*A;%Q?OgT z|Baoaz(7&89J$;)09p}|2B?5c8`sYf={Q9T{Kx~aiftwxNaPXNG}>HvIPqSz>=)!3 z`kiFEZMYnW#o8QKHoYDXbhUiD%XVAy9f@}1=bdIZv-Ug57t*`>aiX#QZ6Uj9{rkvk zCLxq+>7?ac*Xd#JlYQ%M-7}t$$>VO!dQc3%=|jd3zebP8PhT}SxBp)YAnXQNVW1m> z#T|6&<@?}Z*s|TKtD$$lQ|bK-=Z?faW1RvP{Oc=HqKfCBP=+XZVC(}Wei`Sk(0hCzCz?%1rRYfvSWFwdw7}qO` z8?6h)r4(7UCXpV<`Pgxef|mW9y}EqrulNL+x0rX%v9*p zHl}@jV9|L!7%+c!|8_y0n)`ma)2k2V#q7QObDZDBP|)|n(06-^z4~#^SCWj^e=5&m z=#!+}>)ZvJ;FTjO(WcnN8;i$)&|S{`*^jP=s{z8912RxSQ`dFFmkzoE-V)-cV?W=O zQ3s#*;p!Zxt$B%!*|h^^K6eeY=uaFZYAOGotqcs|{=88N+zf5hBD%DiS{!7+d2j-j z#4yc|YB&Po@1G#iC>w&Ufz zZ2ihsvzwCVbe)t#Q2NTNp$VCFTt`%b9i+~mFH_GAGC?XThm z!t-r$DNFC`o4)(JsH9}7=Ao?;&V`$J;CYdpER3FHk>XRKO{8^xl-+QO0H&6_Rvv^f z3Y1m=ok)N9r5N>{QbyHH8G4K90HO&tLR7)8e-Rdq0d#-Dm#Js9P&wjSs1#9}Kcyx9 zv-o*)d|v^hV=z+w(?d!BFHSDQn8c!TX-kzk0jq90)0r0F2*B*xxb^|v>q!vZXilxG zQ)@wnn{@i=AnAcJDOqUOVfaM>H{^8+_Lw~?^5pqX09C&~HrrMz4@mQg4WQa?*!kkV z0oDdYB5m7AA=yx~`Ufl;@ks(Kt{0hZ!fQ|tT~`_98S-q4cErGR*WF(rZu3S!!;I7M zOW55fbW9MD(oxqhY7{pNV++lNTfD4q_bp_rO;c&VH&mV@2lR`ci!;H=3=T-1W53gJ z95=%!!}^IAEhO$b+ulHN9hM(~M0D&SU;d!RuCPlT81gHYU za(KW0Cp2KKB_I0KWdgu|3WoK!LtKDnFUV}+1)H1qYJ-?!6!$6giS3a>M0ao`V6W@I zIgs{Lc)AAC(hp^XAzJ~u2j1ui=O(q_fFpz7{iU?tG;txP1(7r?ZI%bJP2kvG@m+RS^Wx!o^VkpfoKX%>ie*OiRmt$TU;CE&}LWYRCT} zR2AqP@E|aXJ12gU=VupfgdIaze^$!k{~&iie0Wl3J&YyeM+iEFEQlgS$jK6~pL~pK zhac$kZSVn1Z;HrQ*Qi<@DHUHN;s2*zi{OhA4Cqb10(k=+b2@D4LQnOu5PVM zzHVJzHELC6%f!6^dY0Dgu_#3Hzl=l%hSc7w9SPu=wLZ5LA%tr7b-UlpkNi&-3oLZ) zr(;y0Rohtie@^M2rHA{=w48}4e+J6<*Orz7#A8dv7=ByggJtZ22A#s*v68{JVYyvz zWekNFux9B($hZF%mjv$!tzrVyHDRd|?la27zFnMle_TgVB55ag+WE5cL4NloMd(M; z;2SwkN&%$~@eDxDC|mp=MHDUU=7!fXTP)(>c66k6;XdWynLoOohu1~k=H?u=?ZZN= zoc?y$$YNI~7>511ZON8mrI6-o8<{-&)%e5r&a!YOu26_>vJq&>|5kG%Jr{6_$g^P-2c@>pMHYx7)(XvI1AEKWEZ-9Aagk=m3gNB zF;5JslAZ|*xLsHb})ZKgzi!*2h) z`MpoNaN6?c-Q@5IS%=BqV2V5zA9+V2tU0qD|4CjiU)#4KS3bre)9lT?mfH%u&85Ed zHa=VrcTH^8J)IJHK`147iyYdkZgr?sRwgh3l+6S=Xn()%RO#bL#^QCD04 z*zEHnqR8#A-mw4neBO3n<#B_z>lr!Qbv%4=A8l*E<(3;zuKH>#;?&0#7BzwGf37v4 zyx8zhYa|ex6uTGGEvtpBu?V_B+0gH6%!XdQ%fO)i#u!O45^4b zF@u?pTqjNNPA6eLuMP;@CK8d1+^?U+qW$u-oI~+q`P^P9%Y3$1Uxt`G(iD@F>7wo` zs*iOUl3r)6GgV<6X}?_F0$)@H4@n9HQ|S&Rn#xBOfRk)Lx|bVc&)MAsv+9m8msFFl ztY$ixPEF5|+%}7@>;E_b`=gm%AVojS6ob7jT?aiLuj;8rG*@!IuUiAr%G1goGG}+* zB3PA1TR$@S)=KYCRuTjx(HiQV-vSMkN_s2ibe_8dJMO*R=g2znXBjkTgzYKzm6ui$ zW51!R+bw&%w^{&}=>OQ!RlBk=g>7^(X$7ouKoUGZCk8$taUVvl9T9;jwUU%tkH(x; zz?XA1m^fBFkvjVeDKd*c}Q3OY;)tArRX-k4(&_-(XPwZ?U&wb2FDVf zT)6Y*LJ2&Qy=JLgF^#;^pXP9@S_O7u74sP?lA%e$Ns9_M7K zM+=SeFuxwlth~LdLcq=b7~fSN*87Xc#L3xN<3nk)KNZ*0VB^M1wb1F!HFs8ftlxX&cu-bp zd8Rj4o@e%Ly07oDEo4L>q1pr1jIh*e^pr+o>>Him_GzF{B8Ot_q+HqL5)$qMVnk#> z#r0+Aj&J8^uTZPmCcdDaxmwR)X36boyaVLBbuPqZZI_YyD{@z#U>6e-pK>j_{^kfE zoK!4s^i`sJJiTmn(@jO1)c0Wv&F`Vt>%8UQ#NfUa3XLD#f5pD-EJ2pJ<$9Q5cJ(!mq`*T_{W^ z5=P}anS1`EW5a(RjEjexpr<%@K=DJ0U_TEfd8O!j71BX1b5U;@C=yA zPt{LN<>ylry@io_9^P4G)p{?n73;T}BE0!t29bFmijnaisOBCY9bstb5v+M`Gzz_p z7k54Fke~?&PV@PI3W8#VUL6d+KaA4C^p&j8Pj!A^x(R|wBH~IetD2hP1CvZbsE=1g zpLl<1hJoahj0%VkAosl_Xl)3$@QF#Se+&BFRVKFb;gKosSk^?LIy{aIKeM!X^_~%h z=?eHfk7qn)6+7iLdT}=icwUTg=QLUm3*~lh7<)6BoGf#ay*~O7;W58;&y*-4g}2k+ z;l>0ONc#+=NF>jD8tr~UKHxnB>-w`grO@tiJIWw5)R%x-=0Q~5rhX=yjlAG1?T&jd zV+OPBc6uiHYee@$H1M6ebLn{G%fkoEMkz%gPyfz$}cg@++4+Wvu z6dVTTwwLP}1->yvbz|q5u>-%&(+i=R=lBVaDNjmV%wl1?S8efM0# z9s5ZNA;YoXZQtfb(a4Z?9Mb{|zVn+8igXW*j#ek2kd^Nz>aT)1*I0cYT|c*jl^FfS zZh$g%s%K#Q_3`)z_Z=DdPY%Wp&xlvA!}v&_wv%JmzmJN%vsR}P=YK;IyMvDuJ0W|U zRll#wZ90SsLy`MY7M?~-{XQhJhB5qB7Epk60N{&))kASuXBwFX-e#d$`hMajU4N3M zJLCF#{-*on1P!)oPL?@3!<& zTnjI|S@kUKTU!HRttI0E4@sKYkJF`NeNlZSM9dGTk6oQ70g_y{c6SQ7Zih|=PW`f| z={;@cHm~w{+0SES?{DKS9}-m|n%BC`IFHYx zbM|r>k}u1w9$G&@-S?3M)`X_-R_F1+XSzG@pl3+x0wk5b-wsg-=r#$6-boQf=kFgb zEv#})&bK<<@eg3%96p>ets3u(JGng=J&p1VL0n?ZLU{u1zyo{5Vz%hB#^dn!p>zVcx8~syFa9H1`RSfo0(RDm>Y%?S5e_+wXk5Bv9ZxYw zuL2IAzx!&IUgQOEbHAMC9#=PMf2 z@5lS#w!ep4wYlLJ<$tqrRXgEGUm{2tZ%g_Hj_aQ_uS%|!W17K#Mss^n9g zdD3Z)16VIZWl4ytiVp~OCAh%HZ8>by9sXZ|89mxG3Uk8+<-v>$Q^g?tFxyB9lh4Y^ zy65=kgDjW%m02LK1SwEDXuj~ia%uLn!&Ik0dCRW!4VnjR{YBH}-o4(*p{N$6#&_vt`_XSpL)<5k}2r^D)tWgnFZAweJekCv)U8o#;h zwb`fBx^xY>OE!}U{9F}|3@14~4?>y7_NjP{3Dz$!G^u`HkpMNHL%>PajWgcCyv9L*m}%8CgSHZEuAt4t zdi)&`7k3z0=j(XST5hMQMwkk^{K*#Ig|F={$f12N`G9U-!>OqDa>`{)gN*Ndxp>DV z8;T$TapO#SI?}YX;dV%MtIwa3Y~(wL<1vCag8KMtVeNwO#B){aE7V8EEcQkRoBF$W z8?cb|vnDzRDa$6GFzDY!WV0n*{8cCQrH;(?s5o!aB{w1ju~6g z2r#OfmE8S`sAftH$>#?>Tj`smPiv)`5ioI#6|xhrH(7Kh^v>ksd)UwwK0`bxJ z=^KflNFw5LzUG6lIwlDgrE3nMVgvfLqG2eAEE$sLTz)^om-p^Dx6YF?55u;r{3TV- zx3|j(=PD@foZyhEYOW^BNr z^`x-Z>HR`vy}AKPVXurkrA*pa)HpcgfP=$HZ3?DcK7L@$|3lSuYA=)Rc|}#9@=gWA z=SoAFBN2v`2w1?ym`d2A;ZGK9N5&6udzdgVZhHV_S)Kxa+JKQ)6cHjAZ>PMIHIggU zS(^32DEDf3+e=n41QFP%)4X;w_WlrSk^5SULd3;?Qk0l9>Ep`s85C}HQuVl{ctPeY z%0=Az4Dyo1%e_t=V9{l@IPXNdC*Aaxp!M?9V-!M93I>+(R!8d!?z8l$sCIU1MM(r^CXCLirr1)BBQe2vdksaZ zqi7!OWrQEO!mEJOc!MV6(v5)T+Gh)y3nH{NqMKvsG%PNfY@Rl+H6OpHD^K6b%0Fmm zZ{BlHaGtOVi&!RM$E5NyXKfd@t6*7?`R8$i77wS;bb$pDVX{qj{?a$c`>XOl@;d~{ zM+5X@N|OXYkyX*akAe+k^=mFOATFMv z@d^)O`B7c4u)Vt_00gm&a7l*N=Xb!jeifnUjhV<_D)>J8ipvabd3QXAXZZc-6g&&y zP0?bDwIkw#S?w*!b%G{o2UrpKVKeN)dpwuqw~@J_&CUn6YG3zxr+4e|)egz(hogJn zmX#@|Qr9XkclJFJM(3&cEa7-puBxrguB8mu2d8)22}SRV`do+3%ZFDBXS=tV%^XS6 z+TEoIZO60wu9x(;E*_6ZgT&BbYwa$iI;pV$?@<9ENvu@q4#4vo7=Kg zPk)+NlRT3nC%;F3I@ZuP&YPI%uvIp}>~|17jLeSDtF<^%Grhi!J@qTw#f`&_>4 zHz~XE_?r&T``+Tf7u41)?F?c!=)Ar3xKZRgA@RZUJs3vndMF$l>pXHo^_@zR*R(@Zk%oAM;Wr8q?qFqN2jKcTUNP&zmtWLY)_ixrS@jE-qu4pD$Yr&9nFm6H9z* zlpF_L%mf`av@PtLFJ`y}8*GPV`TXN9=$%lyetARR?ZL(%JguP!F2?coS2om9_=Zk}*|x6|0Qz!+Cnc*g>z@fl@wSH@wlIllApNzDgEI+Rx> zG%xa|D@@6p6Q#E)EeT1NeRy6_hOHHE)Z5h9r@m0gkG{CdR1fK&kMX)c^(s(M99Xp} zx0c#THG$#|c*U`)Lh_slco(Khu^C5w%RWu)3x6@5Oqqdi=Zsq(PUdf6+$_BkSZI3*@ni~IeFke#H6{qc@weiH$>rSzD+tus&WAzFf zM>NRem?d*6Z23aFyA%%_9n(H_&n$IAeaxxn23HLVlBq>X@FqiO(C;al4JNQ4AX)nT zqzM(In1jixrv4dsRE!oea2-&iR5mx}n{QEp%ur4kK+GO{lgX~Na5^AG0jg3QKYS2X z%KtWQY6SKyHQ;$u9;8eQ(Na1Ehx|T;hp$`v_vz=#hxh|d?cC5L?^t9T?Rh=Ku zz9ta>t}(a})F}?@w2wM5bgrZ!XU09|vHDJIjOd+%hsWxv zz#>bl6boA~ds|(Zs63LFex7m}{pccgB)iHqYL~b8<1*L4TO^g)C}BQ0AI6nYdBjfF z-zx`AZlm^(**HKuVvW`gsIA<#)jAJ9@pV z%YD|vv7gqfkml>teb@TS!xKKMF%=I(28YX2U~jCzW|_q?dlAUzMgdCI2;2ug3n(!> z_X@-x__&2o3IJLgE-9ruluviuQgpCJaXxoPvMu69?czXK(=%BOzTeK@Et0d3Dq8^q zS;1W-Ym?18O)X@Pitpv+SZbq`Y&K);z@jH|sB|?o1;SCSzd1b%5H@EUiHmsr10CNj zNpqgN%g6+SOZ&eh4Hh$G5_J#)C;P(wy*jl@BK_F1q@(t(E|`l7NMJTFSwe;KC#R8g z8t=c>`lFB>`)`Uff&jwQixW`lIVqrj#w<3KW}HtM>|};$OBk?;?8IC$WEY%*08YQc z=8glxm5UwUVxVR08)40e8BhNG0euQcdZ7&DGHcgsadmadVk4zB{Gz}ewl)T8M~(8B zSI!+*aE1T89Luj>et37z<0x)c_mX0*e~UFmJ{Wx`ue5{3E(Pj#xD4wTwPd3zJ{N(% zDpPLZdm5+W2Mi`4g$P0kKRYhbc)F5to>wQ+WHJ7KwI(ivso;3nxs*Y%IJH^_=fHUD z1!ZN0ZAL_-SgQ&oV)59UQaw~-HAHt_!s_pjp7|@6ycceZ%SodD)=P;;1MahBPR01tbwaZlRr>@0a>8z(DB?*Lb6N5+>+rrJN^p1T zfBBwmNuV6fAy^Fx@U+1!B!nq@X56~!G1Ce`RH?%4r*Lwu!Y+6*@hfJx+qHv?VVtDv zE`PJMW8gqmf>zUnnpa`^H`khmq2#f_2bI@eeNDY5_HvJxD%Gfl2nnXYSv9}wByFFf z<(I6KumcB(GHJK@ieP=_<3uc>pR~{=U$%7qKd06Qp9bY82%3}ZHXheZS1pw-a`+~> z$CV8sZX(R~{9(Oh%CidwYMISOwqqJ`R?DAsIwR&uy8!jwNkOjf%;4#tdik24lE6}I zjOS;f47oDYM|IC4WGj;*fQnUG<48^(f@GbrBG5lV=4o+b+NwX}BSgYdLe0zzpLzD} z7`a8MkNYK(H}ikBDPZGjrxURd@_ovd_m^rOjNy%^xoMHBt4ra?10eU~s%GB^a*e2X zV1dMjpTFVqhGEQb+j@bo+mHe`xbI^oBtD?2~^NMom zZ30&a{LAIfyDiT6HTPOxv7=YHY0f*d8(jxgF8K@>%=6{4U}`&t;Ednn>lIor^Iom3 zNsejjqtpk4^vg-~xk}c5bjC=2`x-Vw;Au^fw#_Zft*s^J*a$OZ!iEJSXo|bFM>17F zl8q#mKE=Aqd9p*&c;tzSs2>@Zl0-98t62c^eMO7@pKl>w>*3$5Jvp)2*Y4v(^H;F9 z4Rj;Si&%mdV$|Va7Tiw}K9R4?h;>}m!P7gwKMH&=%r;$`I>!If?v9=3pRXLQU5J$Q zw1k2g>Jy!5smjB&m3+IBD3FG||kzwrcwBhAZGhbQyB znSUNDkz=CBIiE3g&C7R9F)Uy^PDF(Ls3>tcYYX@9>7G^hcNF11V6YMUSc+N4(Pt#I zLag*b!t5l;%;&{bd4f=fs6G2ju{?ORXQRM5dYO})mfv5Lc($Bu%XWnGZRl@Q`v<_1 zQ|V65hK)mNRqW2$%&7=SG^6@Rp5La z`4PVnLX-LlP`e>8mhY;m1 zN1i@(S!3cD)KJU;M$kG6x{Fvt87l4@5GKKmVlf%%WH7gj{LRdw(q*ea-W)ROaHMdP z46k^|8#_hJgYIpoQt~~;4$WbrB2xKh)p`C?hKNscmj#*?qPgKFR8BhD+qlKF`X*sB z6~a21)AoYrrrq1>D8_g+)L^kWXJ(aA%0?`F(T_vP#~(PwP@oV*1;+01_phNWiVvu6YUvNu(Dq4YfuE3Ayav%bzf|zVUCp%TG=xy${BJB+tk6#r! z$9;ewFcW?aDSP$&jf{=5}vXPvFDdKW>%5VY6gVp+S~j2QnMi74mt2SMMi? za?&abylRsFcG3Cb=d2eiJy;Lvmh&0tPh=LeV`_TIo+wn=ey0J&Fu&WtFfe( zOY5rk(~JsBx;`OuJnGWKBaDmB%)_1$HEQeXD>+ut#33jf<^1|1H&X$f2z}>zyyQp> z`LiK8I6iK5vTF9ej1-d=FW?uH61n88nR8a+v*#RkqzM<*;xPROKJ`x1C|k8ge~l~& zB_j;|HFdKuF>JDfZt8gq*~rCP0o_H{?+tjPCN=RE;0@@86ZsmzG5RJfy|XAcqYRR$ zJuB#k_~WU7F3AH-jtSzELQw+PYBj<5`-I8hvdZXtKFR6@0RQmFPZgl^$sJtvX zWKwCa=Ez#j02&tSc_8Yn&9G2pCsS8*idR(gdx~#)^t!6omt1njQlmKPPJph+yq82s zU@eKZwY4==;^EpMT*F0#NEC7*YWWvbV}F*lsh+xym@Dj6Y0+L49rzx%n{9vV{feNr z`gJw9{UKm37$#_UFjz+U@Ft#d94BLof`irU%mpBzlbj$)JV4zaB{WII-MBOfYcrO(^oX(7#i#2rJr zO_5%R!Na^M2aLFaa<562%8DTUW!!TZL3}Ben3ZvyHEq#zKWz9JdMcP&a)hr_ z<359r{L_I+>nY=nJRLW2X?;0kNU*U!L897Tqzs$Nlh05&-`ns)9wPozcuhT9xenRWZAL4U#9k1>rv_jWR%^s$USq zDq%|-BD9MQ=BO$~(p*Liv!Ct~rD|ex`ARl&&F>1Kvy_GF@ z?n6;Q${tsB4@L)jHP8R%zOXhH_`A zwv7Y(f!~|8L5u1{?IrXMvK7>L=JHm~Gj!@yBYgsYdX&F&rVJ$fGQ=Ea6)$`R06sa! z)(@&fVw{L{j}|FhRi08NQ@;8^iECx%kr^osq+-FNm>=VA#}K$RAp4VeFuwSTe^YVe zMvYdU9GoQIMZT*If;FC(7C*FrAI7)no7b74R4reRF9;dQ!9~ZtCJa&YEU*ik9fgGD zQ@+=&UY{VTBjj!=T@VfGa5<^Tx%wzPk79F%D5&u*A^7=gb^x(xh`4leV_dPs2rKoc zDOS(O3Vkh0n+i@%7izHrs)~K^gdKzWFI{`Cnm)w=AEpJaVZIR<#HU&Van{aJDm=K5 z`6v8<;}oQ}NrF(ZA7ny^!Kb*>@NiDyn#uP`#PB>P9I`+*>{=`TE&4=Lt0EYOC2TuW zG6bsl@=tQcD^U=@R&&XiU0$9UUOFi*o#vOBk_1DBgQ)dp>*F3B@X7I4R!4~EB#-L; zl}Id_COqA#fdgR^d+LC?bg6!7Tc;ivhb%gdJnDGUB&&Wc)syb;K^3Z5jb#)z+0fxV zhSr1M@1SRAN+Op;k1*#t)nFGF$_XJGj@>%nUr?E$sa4)W%!vr)m=; zaPY*ftjP{l;u;VjR9+c!S_H?H`H3S@4BeSGW>lQpFlvwdRow)p1iPWgR|ky<)`;V* z)axAO^OFY@3!_5#Nk*5( z&(_QfXHY^|!odFD({8Pc!h$siSRBLx1Kb*ucU`!)%Y&$b33ritVpkVjuZm%0>#)3Npx%DlIP zK4Gk*^O%*(h_%I#JZZy1H}iAd@xzPAiXx{XIc&iV@~k7XE_)}eun7beheDcgH(Wt2 z&s^YF4YSg(64X(G1D8H33gXCC5PYX?y{rd`zaycoxTFXoVnG%_wp}#@YqnL!=lZcw zjBzL^Q=CfsW%ru1Ebs-wkk&vS63n=&LWhrvCh6t=R@x;y@$R1#7r~+xSU>zZmSTxx zg+AJeQ{0nEM3-V()dVrkrm**ee7EiIYx0P%F!>R%)fsad2!!P+O{6ahum2I|n*NWK9vWL62EX@(^+jO_{##MYrL;1Sx{ zt?N-|E9fo3@kTgu;@8%#SnYU>({HuQXzC_&xzY-DqP#Dq=;}SDP!w#x7#fD)rn$81 zp_`}JQ#Y)1VyBhNuR2W-|TB@k6ssJu;LI+fYPX`NgcoH}n- zca*B0*@GHzLIqVOULGj(W0x@orEHpfB7=XEjn*pNs~zvP9#yNbK^j~GMm4iegm6*Q z*vxaXiB32hY2g-kX)@tLaU7x4{TW zjmJgi$nf%f?I8RLqib0lN&!rfDiE1su$X8TjWvXT9*Nv(#rhh*Whee``}k#)vGfq_ zb~^Zf?1BJrce_IKl~?tAeYj-(XmVzqH>bXZ>tG*|=vmrJT7rdiz=*>BoZXlJQ$-N9 zgE<9+a;K=aB|yT4y|`;pRN0{qa+Np%L#ypwmR~rx2+-#lA+3VfmzxJo@WK}9U6hCg z;36;uL}vBS5oIn~hIF1bXJDsrQu@ip@43!1&ahRX6Wn{Df$Cwc86*ZbK`Ujdn#r2H zZ7~chir%_uV1`cI)QlSXKs9|b@ckt)G+`P~ia z?Rfo@$CzEC-IdX9_3!)?3et1lAF3GkNr|~WAnscs&BtDz?`Oyl$o_CIgA7dQJ`noq z_bZM2%W;E*4e9->j#dInK{MX6P^_AFl6flp3XAqYw{X};?rs^* zJ=8~^uqYy#&&JRTDD|;!jF@kLO`({ zB&wiD{R44Oz9gMP@8QTx>PbfS?g23`L%wy90Z)vGv`RYZ*B2^@$~D$3ljl%4suKEn zJ6A0#H>X;Ow0y|iP~C6$6mIK?nY2YB)j<_CoDt(2%&-$S3O4363TcFC82fO*g@G^R z&!M47y{W;@MKB=|nt&UCfm6JY>k%Ciz{LjueU&POw;K)%^jcNU4PM7zW-_cZ8|!~w zH;>&9HTF=&%+O&L_i4(waMr~_BXEV|hgKu!!W2{JwE9c{ax=;DbtbH zE}bn%llQw?GQS**YA4D}%Esg9enC#g`tf`vcVK_-XPvMzdII16@JNT`ZkAAZp8e5+H9N~N|3^VB7{gETj|9vgjZyQOK)nE6 zRRzh>Di+i1ds#;YT&};8a{xdkgj9A-2sH2g%CMBvIQF9T>bFa~NG`hdBv~?z*Xdci z7XgO_KKiX$!V*vbBa>~>T;C5vDM|;R@s!XCr2*2VaZPV6qX-H7DHAmm1ru8q5b90> zr$uwxxKvU!C`FRDaHv|Ij{v%yvj}AxeKvT?H7)=~#LwaK#(>0YCG{An(XeGaQ#)QE zdm@;3X(F+R6u;`_sOI?ALx@&+Qd?b+4+@nCRXtCTPKm?$1{U1;{()_r?dVdH5x-ql?hlB9-bk8THlt!=tQ0TTgT+^Gm5s+q`Kl27Hb0sN3|*~)6Dkqd}F zvj_lp-x{HfNzSEwdj8hWV959!NXVOI0G}Qy5mg0tcvOrf-xAQJsp3MabQbekAh6*K z-%#>W;^T5YN*MgL`p4pH# zSo*X>ZsD;88>l_|st8x41&+9RM7uoPrS3QU6Hof8j(3WP>h^c^(xCwI=khGG`o)y^ zaaLO6rx@P?V^o1}ccem+_w26zlAN+q_s=DG2g%>n3&p7$eyKtJ`h4`T#)w`HF0!ye zquu?ko9RT4AUzMAUk1<9d8sZrD~OxfQ>~Fga0L0YHr|J7FoDqYau4mwe+!vB3D(75 z+>la8pxtT#%PbOuP4;JeyoemJ2vw=_|Fv~pVNGq_b|-`$YC;t-6ltP{5{d{?Lyxr3 zRHTWtC_zAh1B5CiR24B4Y0@Jdr1$0#M5K37kt!-u1oZqH&wn58cW++vvc@;p8e@(* z*P1)S&zRkiQ=ikoZXsUATuqD_wW~@ZnRUy|lpr#3d{5vJw*3reh_$ku%^6vAo#giC zF)3CznJ5#BjtSCLx3!DMd#35uhz|xTU*!H?@Ca>RdAlkS-SIxf|8pn#lm9hKZRxe> z@+h0DN|`$G|8Pl(8^pw_UL#buc4Mb6URoxMv^4xAS&Px?Nwjcq&0?+>Tb9}*HgOZ%YTCA>F%R7nErU z(B%L}?YDF*L^^$+BwhcW>K~BNSFPdxm<2~Q^4ajpIE#m5(lVx&lS6LuEjkaHnu zsp9cEVc*@{I`aS&ul7{@2q&D-GsNxPF>_WB{Z4;Y-*>+-v-R;M+gVy z^Bsnv93(S2YaUmqltO8q%DCb{Rut`=CcY*v4O#F-CRr3IR@MC8;3gTx_)vLRVZZ?K z`LUEzpB94;9PsDyCj2~;39)Qt$7<@{Sc0xk-y{p!W%JjTkZgkR$y6iUr#i4GpuujX z&HFRQ#gQG=>-gm2*P^S`H6DLqx=j~jF-L6~&I4Eve*heh_UI!@i>Z(I+Pi&qSj-H- z4WHK-tUd6-FPFDVx`Z`dpvW`tG?Edx71|!g5}js^Uib5?X@2p}tMTi#%;lc4KKZWq zrf_C(PDGDxD`l@S5(^Kr7a}?8uupvg~1URbRW6WKgdFR-Y`+iTp z`6x0>nCNZs$`h&8OyOUGM_se#@DL&wCVx$O!xk}0(Ly8?6=&0|9~;wy3qH^jp?rFcQfWvuwi3>M$Cor_Vf{)Vz7 z|M(L0JOwOCKs0Skz{*x&S+f5!Mj2bvLUPBoR#TGYbN8zf2iOnotoM!;`q%XZ0<)zT zvG)1J7{X91mm)sWPA^l^O89!ah|Mc<15{4KNh|2xNTnXOS9Y(Lx%`UQd@|-VPa2=Q zvYI@Shz?7X6f8Z^UP!vLiX?+cxtHg8V=FOzKiX_wy$I@KrN2GBm?>W5C;6b)Od;-U$vrU#TADD`ax%p5Z7ZMTX#QxfQNoeVFy zgM~Vp@Jc2dr~!E1(8dQ-DyM_2Zw|OIB3i=bbJ1`#xpC8)r!*QNWk5_lreyTC2{2Tw-gQ*P-7%$aPE> zco!R@m%RVYI=*HP0IZS1_Rqe|eUHPfJ|^e)*_3^E4M?~-o{3SSVW`Q}GP?(mPXCMO z{&zakh{X8C;QH(2BXEop88Um1i6QZ6;p_o#=T}#r8A!DY#}DuSv_g<+)FZQ7kwh&Q;iQ5)^|c$^i# zx6w|D2z&rKZg3<`ot^Rj6~57;5f_(KfuJ2y=^H}Xz2$n}cfb!^bFc^&e!7}TcgBju z_wha-FcM#URCufDLZJ~h(?*Yd&>ie4IWXujip7eZ(+i59HcGksi>5)rG2Gf){D-?p zb1n^La7#28t(;3)GLDIn5Un@qz;6-2)+nOBA?*4p1SV27<(I~OE!IY=Uc-`mza^Q6i8E@ zGsxdWw?{J^&^(p=-%LX7sRR?rz9FE)zPV#PJFYDmq$XjGn-OyyG#Vd^CaXcAdLBp8 z9gv}7v2?OTSV|_AFd?fcX@D{ibDwrAYkVxUbB?i2cp{R~-VqiIb<%eujJa-Y@UMuE zC8ngkYfkMI*HLfi?WH{dqxdc{cidyyE8>R?)Ft%ZA@)ipB>5pmfC|Z7X}n%lMYbq^ zczcjSQ<_Ry)LT%>6zm@2##wkP5g9PMpJsdhdpqK22<%)%gr4;n~cScx^c`C?VhSaoB(4D7UDfaueB(2jeiZ zPHLJ3mE!V1?&m3ozstb0zJ#o0jJc`VSv*AXUFm3le|^(0Q{7ztj84H|OdUss0^wJI zZEuNRk1g%atdjmU;@jl`PHFWtMZjHXa((~IlzF&e)B8zpgv6K6-*(z4pEVcg$tivK zMdQlJ#4F8$R<5Dr(UYatkG3p^?z`8AVLQa{q)keC4!Miws_c}>>=;(e}qnH!bvmacmw zlPb?rbwA(A(`TSS>mJI$;d4<{C351_l`dTr!Xa$57V}WtxQwALQMt^a3!;VlvgIe| zUJ{BhiaZZx&6FPBWS(&xhEsiMuF@JTF7%gB>H-$`!?)nKG?w3g=Vyy_`UE6{?_-=* zq%&mg`>vh^7hkN1k#N{mirBS6#&q!**FrRWhqsGmPEGBlL!oy+?GN6WuHE>1^b^Bc zn{`zfot`2@Zd5Pxzv|I}5-D-$qs2z)aM!a=a|Y4> z=Kidl5QV1=ij$}ql}sNh0oKn^B` z)e+3V?z5wMYFq1(6$CB*zUhTPc9zsEAFkp8Yv=P8EObZJOZ=#N?!#VO>JyJXqk49I zGmhwhgz&KcrH+h;%OWVGChe?-SG2~t(m6YwjPJr{5SFD*4p%w>2MX@~r+5*Yv0ygp zzhY8AUsQkrBgD|K+fQ=^K(P_{mu#rzDe8ItfT#D zLQU1Odiugg3|;Po$PTaFwOwlUzOTL6cXJlsL^G7GF7FD4yHLe5YCeKplB7u6dUfd-!Ju3L2}($F-GRQ-|V z-V03F2HugHq=*>P!q8otM!d}=$L$PO_e+fUlN<~ zP*>eTbYV|r(9egpF9w2y?W#w9a1lB+=aH(%cD%_Q?JV|djPdFA6Umyam2w6MSP!91 zC@Ju_xwuy$x94mB79CedR6xDX_=HKb28j%gdhNrcI}bs@6H!$-^W2qv1I--;h(zi6 zQXCI>*X6;k5nUe*spJ5__uZ}jZpfB>s2<>9R<4^q_19{MH1stUy!fMi`j2GReZ6E0 zGWAEds)n*tTf)>fAm;$%7(PjaJ{>t56c~;W)msB<_@#~&R-Cfj#YO82hsO_9%Q39X zZpICIwOl4g5oK%6GY(K z?{K^{cOQAnT6Qa>l&qFztw44n2(Z*!Eyz?m*=pVk7?7rpqS(9Nvb@dlto5e&|s z<=3<}kKfWMY7t0%pNOc0$q9=zlhdWvXlf~qE3C88re(46vE&;cog5j|10tKa%;wMS z(v#NPUPc5r9Xm8#shG<%5c+j>W8i`QlE97;{9R^aqU2xav{ZnX0slxlU-`@xEJ2u7 z=I^<5ht9;l#LYxw_I)|RHpi5l0U?31GCq$C7Pb|u{KmkX2(F&`M=kHSVc2>EW0P&| z63B3vsI^GUM+J|XL`E%xKOkU{qD0!+HX04Esk6!VkphUT0++MO7+th$5n@6pQYEANI2N5Xw)kb8=k-#yi#9btT?Nfg-7mr1H_>v@^gw_>%c1 zwWT|5lP&nMtZ(+r*}#@2w-zL~=9$`3F__KWiR1rA9>;$f#uo6U!u)QJ&{}z(cvFoJ zrF4yIbU@{alWB6@z-CCP$xFMs``xINYh{ulU`CB_`7b&Pq!OYCnm?D^wlFrRXJ0XZ zUi_ZryS+AZwMj=o+3crvco=Q}NuS>(o8#y;rGAB#xl0;H6~!^vOa}e3!UuS#XMgre z;b)(qPU&jIo1eXA+nJFm8#zlliwrSM;1l`>Cv^J{#5&7v85-k}m7(wa2E$36%&lI| znh5xzLt6*FlzJDpXlJ8vA3{ask5pL%>l&I#0Ct5d=k!v92IzJ}~mSwcpCA zjP;oD-%PRh(IT+B3Mz0}A<&#}_YF1YE&9B*W9~6K=)0_gsY{s~3#$^xD9!vTFYCFe z>C@)j4im$sY1d$!V6e)Chuvfv3aKi9B+gTS+t<0Lgu+@~nbZJbQ-g2J6g%Cidv|y^ zVct!WzxenE!f{fl3(sS-*oyLwHrGhy!txJ;TTj$xysAA{zErUf3=_X|gMY2COu1@C z3)WFV!U5B6ZmX5&z2&4DOQ}e?2|;khiU#t8nSP$^HLI!6f7I9+qv%5uuAk-*G0-92 z#YfsmT*EiLc`<4AjKy75d?=ZusblWc7n+geeYGu=?d2{?(oM^RQ!=X|eaB4y=us}< zq2x^&%oQvGM>TMMt9}KWS})FV_xwUd7mJKtTrSuDHC8@pug^Qdm>9Kh#RC&qD_au` zwR`5sGS?l^vc1^X4U1*F{ffvG>8m{fLl-lgK>Bd-`*OqFg0fDLmofnU40LfiFSH!O F{{uv|Z&v^S literal 0 HcmV?d00001 diff --git a/pkg/rancher-desktop/sudo-prompt/macos.png b/pkg/rancher-desktop/sudo-prompt/macos.png new file mode 100644 index 0000000000000000000000000000000000000000..d32dffaa41a1f76b43acd9b587952182786b5ab9 GIT binary patch literal 87476 zcmZ^~WmH_<(ly$+L*p7~q@i(l39gO1ySsaWySux)Cunej(>Mfomjnoqklg2-^WN`0 zV|@4SKf88S&6*{D)>v!pSTz+nEOat-004lcATO-}0Koqv!m*+L>*cE@>H`3v57$Nm90ODMjnNnIuxjg%E&`b z6HY5YBrPreF10i!%o5IuB?gH(4C@ynDPo3qO9)bC@F1R#&-_i%+v(Pi4=*0OKL>6H z0_R^)0E-;y^Qw`@aPo(-h@}IR4`(@gLMrf}BPqa1$dnb@%MCSkC;+zg*qrAVG9%-) z<|MTCcV+qe|gXEno=j1s*joDk-6rJfiho_^AD}6 zK7I`<0-nEyxTPSDhM=s2;84Xy z6^QgO_`)RBFnvO{OW-L0(c+>4=tDk(j?KpKwCpa z7P=#0YDNGJt8GDc0M5o@`{u${d~3I>%s!amIQkcm`wx zA3wI(5~U~HK*figpI{um9k(6rJnmx_*ov_3PJvw=$2}%^80HQwK-G=;7B3tooZK5u zJ{mkcz1MlC<3|<5QWQNuk-d*|IKO|p7k!tG=pQCFlnR8J;d`KdL*tF`8Fn59nWxo= z^Uw+5kHk)nCXRYo;NNrIGv4`A$vuZSdCbK)r=Kl;1)Dw>8-adEvglq_)7hle{o2bM>aqf zl-N&3%qz=lpXZV{nOB*2$|KhSF<>(=YSd`_VbFZ0=;a&0)L-x+R;;SA>AISARjg*a zQMA^w2ER1Dd8y$CG`q&JIlsoR?pv*JRdpqC#V4I+_1ji4iCvTT3Lld{WdD&vkP3%{ z&muP>k3=y=VU8G$$c|LYTG8s3W0pIV2afAm1|AX|29JxkuVy&* z%y;-w+mwz-?hIc<2HVha`?f>dW!pb^=J}WS5BS%=ZuafWD<-K)J`)Lti zUM1uL?}FSpltM6@SGGWQu`ylKW)pPHVU5_O$HnQB!6#~8%b!+1X>VLbSVRyht3|{D zgaVp=T-{0fzXTBadj~QH$oc8|z5fZj-+$(LO?cUSZo0p|8+k^0zJ9p0wByiAKpxNe zQutTsuM%8ENJ~gu2yrNVXxQKrNZ{*xJKcq)%2y?SCBtwD4q89myLRA6Nef-#%?D*<<68le+fxwqN^nAidX37R0qul=Qn@pYBwe@pNS%$Ml!8F+T#Du;A zH_Y5Q`m+?twxhaZ$*m&#fqKmwE>{{)@?oBm3d3q;o)!uR922?i@!V-gd0JUKQ;$bF zZoBlqz*O>oa_|Z?vbi$JGB*pNRO6L|XEl#1@7O9Gt8A-(eph~p3{r@)9KT86ln5!& zK}FL=|0b<9`g@CjJoY2-r)`gwj?IUuxEZ0;#+2FVfn3Y9cCamEjp1iD?-_3cZ=qx7 znv2o5FLS}$Lyrru&yR)VUi<`3Br`u|>v!e1a@y{724p@c{E1dp&)>x0LH~}9{Ne7c zv{kK3O>O1$cDdYf z=?(sieTBV~gd%M0yP6HjILgAjLf>4`P-JIidTR-Mym7RSpT@qTzQMgs%|OZebiMMe z*Yb8Pt|IPNCS~TV_Jy`#o!E`#ZEyRo^T#E)M1(Pvf!{N4FZ&X^;jAmjE7s91(OfwF z4Y3X9uVa6*qYOGX4>n!B`-BvN?cOSpd!wR8E}}p24<{asr_wSfJy1LfZLV6adbQ-P z8UaJFoaNS*MwyDZ{F!q%y7Ns8L_RTGjZo3 zqtBP#Kc_^;`^kT1@7x9h@Au4i|xw5w$}42#kzl8 zeh0RX>UebR*8e?;Zy{Di)RNGO@D5g1B&+8$r%gyHMVav`bC@9Fz!NtzS#rls2tEaz|I?z|B7pF;p*)rN<;H6qW|;!Cr@iX`~PKf@%*2%{wa|CUlw*wHV*dxFPN9T z&HoSVUzY#C{$1C9=tTY%Oi0b%&)P{}+TPjP#q*!k#JKr5MgC3me_8%F(f>l~{V$S_ zljpyY|7H0vf3*Y@^9@wQxQWKVgEl9 z7DK-a!Jq&D!~qJ@5?X$6SN+Nj&V~U+-g6tLJ50Kn*Q1<7UHFkesS)Xz6e?7EY6<*G zb3?DQ3S1d`X?X2qY|)5_loDbzSPZZ%6&Xuui03SVCj?Rm;gX1vt$@UaA2NMAuKU&g zQ%q$3M^g8^_t;av3Mlf9BJjF7X z_xnO2gTHyVFTH_hw-3%3(I5kUW(_CpI$}v+-9$;P8Ryu|&R^U|eeB(aHl<(SE{(e0 zBK%Q)jp&Fb>VxFnNU8~41hy5sgKN=YCR{S9T}#MA(O4ilt;UzcxOYcL_YDVG{H~_W zlE&cGKQsxMYk8O2H1>_Q)~%w=pqpc zFqxN0dF-Y(il;XkafomtW|w%M?ShFORlCuUtJF5`jXb6{KE8XWCo^ce&kr`qSNxsRZ{cRtm9DSd%z5 z+W|0XJ-hTBZibHg1*54E7=!Mf#VbDdmhyXK5>d;bFtIjH_lc+c5+b+8PM^ETnOPs= ziew-em&mdO(MVL7`U#BtwWV}0T%vDn-j&C{HF_2QOh31n?MuzcFgeHa5HfIWpxNDd zwL||Ati}C{+wsDwmuIWLq({7MZ=Z(QuWoV3bJHD@tRWqkM&@R;@E zWsttGbPPEnoo)ek2d*nB&U$m6z^G~MpkX~zOzl`$@N8(XI6SYfnq&d=eNKw#kX6fA zT&nJret2-8UBG`El1|VP@<>7U$^ic!2*}$Za59@oGGOj?fWx0)d=ZCb{BhXoWyF~} z(Kw|ho6z&8GsCD5a4FDRJHemw!J=4s+1E=>N-?#mnp3%Ow_>bC8LEqm9S{ucO&Z)qyw1h{JkcSG4Xu((df? z_?X0klRs#gTDbFN>2rrioH|*hZKHZrll#(l%q=IDMR3z>6ST&2h`2*f=$S5x37jTh zMk;w|ut+`sVB6ooWjYNLOf*?G){2H*%-<6`e&iuPK|TW_ELDqq4Y zyPszQbQvIhFp#y(!{u4Tx0%cIW|kenYr(P&c1U8Tqk}M`LC&eazG!89Mp*Je8ew5! zazhYFqYNROEHhL1!bn)qt&|TqG$gzd9$O2OIClosd`AZ$@wlFS&pJW7<=NY6msh$W z!M_-=G=tN&nK&C;IDcC71Vn4Mn4x7>+WGys8wEtCD>6~6Mndor2tCcZd__TD7@#

?cg;u+IR|GS%tbunTaLWZTK0Ik^Ku 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

b zntip@-V>vxsKn#*>`(>fw-0%vQp77IS#NEjO7oUKWl@%sg^hi7>O|J!n-J1MG~!t! zbp8Lqiz>c7yLxN`#c;PCA?0X*H}Me>N}YFqc~0_-_C z&_kD5pXTW>G1FIIN5eVmJS*qisj$GZIf1QaF7g12NWLZ&m|sPIpWt7O!2!Ha5?5m` z;9{j(Xr2*Eo=qlPv8?`;8xull)zi`0dJmeAb!uvFwgMYgv>9&AJMD4$WI7e9RX*7ADf8mA#AGi%ydaVg~a-6~(|-nPpS0BSHMk*+{9 zkq^tKjyo3>OnjyS?)SuD&c|7B+r*oKz8cIUN>wZ)$1DxNVu41^^1f4j0J|xH8v#7>TNJO%=^~uNv}4jv5st&FVD6 z4bSgfR8;sTg6C=jIrPO$Wgtwjv`a7d!qg-5=p>GdXP!nmAVWt3YNBTIx#o=u|?Id-os%umU!sO~%1{ zi9B=U$MdrirPvGCT7t1kVWUb|V;kLct+h-4pDX>rlYIHdN2PS0DLWw?u(^fZFja8Y zf9{DKFok%PaTLeQHu1bhN`mP^M+@B4n~{;XC@?!{%NjQpnm zMT^^7N>=C;zn*9K*v>Fnk~X>L@L7MrkL5R>a%lf>m!(eW+~}@?ZSncIcW?aaskLN{ zal6;9A21&CcwNZN%BwS_yMMnnp2UDgqk!EWt$}q^RhS^=p7-iri$H>FxJpuD1O_gF zW=^W&=API2*@?9eKFyVOc@iLzikgb`{wIx-6@1#P$gCy%hdlk3yU?QFcJ8`?XS|Bt zaG|;XR+m*;w&>F58*SKz7t`fkYtq)s&7KCyITaIZgbzPuE@UMz^w zpYu$!b&T1{Jlf6A>K$JNk*Ig)O0z9qNFJtt;wD(bY(YW+GyS;DFh>uGW|Jn=comjb z!7+jIw;pX(H9HL5bRPM{T%zuLo#rqFysu$c)7w_pR|m*?=%9xD zwi#jUwnV-Eh*1{HzvVUZ7RSIw{njL`M4YJ|+jF^UoGBbKmjKi?rYn168s5KU%R^}_*PO1u z%wF>oF1TwUX>6J|t#uFbL#nacxU6gtRU}Rgck^XCYU=0BKM(tFhL7LYP4c(2tM{E` zqhn~+L918UG`QrPr2>Q;PV=eh;-%n`DOi_pW6ao_j&z+@n_`~cicKJ9jT2Av)sz&Z zWsCspr4mHNf0yvB=%+P-_RZ7GNda~}5DYgf0cmK-7|_*aZfY>2E+7-ER!CJA?566x zi8|+-Y@1@WSRF|X^GAQPXd>-#obw;^+%ZY&?qgtdVXHfj%rPitau^OS04I7ZF*q z2fIeiVZHae5#%a_K$5|S2B=^yBfP25P+pgvB48+-N)upJ%3$KfS*|%z%)&6yJbz-> zmto_gk(I$k{JK_`sTMKjbAN~KaKvF7uVtt~2mc@|K@uaL+TM4h!! zK%Jf$OvW3K0NQI*_cJq1$b;_ZVBpG%KDMi2J@^B;N38gef^2XnxnGLAE?&ztN8e(qf)!-owZr24QPK4V^w4~7rFVz^~!oqySexo2)CTJ|4b$i(ow z=J4D(pcqi^%KV%+rETT>f@oWWa?l}*0Igdx1<36(0pP)zKt}btWe9fy!JpzN0or6!S@-AxaI=$I;Tv?M0YT7wqk%So>XUDC-aHVRmk>3l&g>72D$z!>G4*KP-|T=9QxcF) z1rgBfVD50Es$jjkqDWQXt(ZD_h`Wi}Q3Q6YrjjMoj?{Q=A>L^U@~9d$LiIfnmZn%>KvG8>>d^dRqwloHDl zUv5VVk^$cW1S2~?fCh*c2R@7IH$|Ig$ePnj?Ck8E`*`mroJ1bC@v?RPvHg8Ds{zM*3&q#%;hM{Z zJ88h2&lxk1+?z$3n*vctfvMFtV+rii@Ivu4^ZPc^+=Af?uOmL z?ufDi=_taV3{I=sJ`k*0Mi|s%EGQj_Oa>t{>U)XiG1$MXDa|=_@6aRjRuwzQ`+#v;uEJlN?4ek7kzD z0L2RE^4B1Y1gc2zjVU<5xQDCJF1Ahk>dR@wC{7{(BO~RO%H?hE zi4)OK2Y+4qak728^%6_1-|XaDk9q(RT?xU|oZ6Vma7=F!*@r0kKEG0mIh8tD*aWyy z5;CMbkcmN*W>8n@@Jn0o{TA#;U$pRlXN~3+kPchmDy0uLLxqZCIN?-FxQpBzA}f7_ zyJ88*M%5s^_l?h6tQdB0Ef~=P4IMIdr|6u=lyfURKt;_F^wOIZn1LW5IHqYaMZ$OE zv*DNTf@)7ZAui8G0r_o$d01i*X8g>``+NMJusTqYYlNu}{SFJ&giT7}M%bqotyT~> zQOLl?xUJ5oU zJ&iuRkYgaLhXtX0VM7s497d64irjku)EXyn;@126%3-+aWF>5ziUpAWr9>Dmj!?MK z7pvY++){!gZIl>pEWXqLe*kKc?>a?1+^8kY8hU>l(2UpN)xCM${SXJ&{W90NnbmdJ zdfoN-^xXa48FJlav9c7x`>`wA`F7vwE!*MJS`uFdjbCnEFRzb6!d)ERw-0X9`MJN0 zgv{gEaM|-wBrguLGmZV-ONn`diYiwy;ncRtyHU7!hR=<=?Q`?88S)trfcDcF6tF(c zkp*kdAO&po2L|MfIur&jZdRPH-_5*3j*o@j;v)VSY+8vjzJ#C#6Ekv`^O5mv&`#`y zvhU9BRl_7?q}R5XelZSFgIrkpcR}!+%Z(<&X^?8Fn~@*j>BT_!^qwO=F7+la^Z9K; z*e`d?rRaofrwQV;MhzLGR zq-T*Tmi};KXTIEc)M!nRod&0Acgo-Iv~ylM$FcR$ia*ZWEO+9y5#W z>>-kyGr&Z(?A+d-ZGoMWJx$o}fRJ5xOTN&n{_RU3B{r|(NyklxSYiX23e#+L zr0TV}%1{aFRl|ecvD^rBScaA@n=eoc+ zF$gV#7o=o?+DYl2h21u^@#Dv0C8CgmhZ1`6FW#JorHfB6wU)rJ1)yh(@rREKEWt+% z(;;q3X5+~4x24LgLMbZ(=Od*~s(=dTG6|{Z@tq8rIECRu-IwQoWkZF!YwJEpk))~! z@^Ej1!^U>wo31wTWHAIDtBql}Ejn`gjr?Yx>oSlpi7cyHH*Zb@2_%r2?I#aUt;qF@ z;{f;P;ts*fr1saCP*!&y6b7w~!fqSz%mPK`!G+a%um8Sz%kgPmzgz(exzAFJLRHM; z_PO`i_Be0E!`*Cid%nv0%nwj5o^%Xc>OHzSf^ZXRzF*6Dj@kC+icysGEgZeAay8b& zBnXFHKzM*y7&K}mrJN_0o}S8H_=J6K6j4;l(0Gct5kxo|EX3JRon=II29;b zBUwe7?QXGkiuKb&PwDfDA}Juj=vz|n305KuOqI65p>5rmKYQ~q?92m!+QXjU1h9+4${qwjunA}pOwagI5|?H2D>ZBF%}f>h(mAtdgmkw( zh78YLZ~C#*7BM@fI5L0pQ^TY_uwO@N-)}YCyZX== zL$>Z0@fMTTxQV)&`4>d{Y+$km1UWxD4AgoEOE|Px%0iY{vv^iYCymzN;tbm2&vZVg zS<)dICPxV|)+QM)_U?Ze`(f)yjuar)P!3AQRu zE1a~*!UHNKYvMP49rK?-Nz^ckR%VpbLOAw+N6Ocl!U_4+hD_~E@8aMEn*V$pDdIRH zhyv~YId}_`pgPEQW7{*VB8azjWY#ZANEB~ha~*R3vvKY0+hKbp;5CgGxMm zy)Ogu$<9a({6m2`B~X9?DK=mbY8R=cKF(0rr>|S5FjfOLOo5C8?MnBOdtNe#Aw>Z! zJ3_stTIY}8O6_K^N#O!SV@hA^2!#OC;m7IAyhE3R%vKUQS|e4yF~Hs@TqbHpw2kjG za#krh@VZLv|A&4f^{;HPBC(hG_LZ}(AJEwzZp7`3e&NLJ2#rK4@(3}QHlgwyHOaYq zY95e(Fa00_YACai#*S(vK@0pi?w`zw1;Dnk-@VL=}J;kUmJbh$1aDkz+qo6Tt%tCBT|g+{{4 zVc~*-`v9{6Vh)!Tt{yiBlX%|WOFv^WMt}I2n@+>1A<5B`$kWwCbzg>d{xTpj`B z)%3w)iA=-9$I;JH$m1Omn)r)2yT-&02almrw>=eGsFTnx-4e$4?#o!q+)Z`uQCUm$ zci9Ksxx%(p|2>4Ek~PaS>8HlZGP?<#j2-LnF+Ooz+mKI;YD zdD#udFQ_w^z#qAsQOO*Cch5s&b4fFfKlVX;C0NxU60w73P1QziSaI-({g(0#SHK+y z8X%fMLJks|r;z(_cb(H?oX(Tpp_u1F;8PuhCx=8i1U@W^Ebz~2$0rJhk1r|!>y2xZ zoD@wKys6GBz08Z$>uS^C_v_uB^4le@7ZjuIJrk@icQ&D;oOr+H7LaXSK0}$WzzX#6 zdf(+}>2su5jwgg;xnLE|S6mQ)hAx^E@s~4#1_NF?l$@YV#cfm-K7|u=FdrY_`z6GI zl!{uV)i=zKy?8iB6Co2%doa#O8-)zAUvDTE@_V9@mlWQ3Boy&ahVSpch$N-Rf%pNE znQa$Fs1_^)d!$1hWWce|q22_e?#_54^#Hnnh}o{?<>WB(t_|7{1Wxs=Kq(UGJy4T| z8`VB#4kg#|e~~G<^_{F(TaWO5*OaN2e;hd725Qc;?nN`ORcoWlt5WRbCI$n-h7 z@^(4c7E7vbihzu<^xJDhQiCt@JXF`WlRff_`TbU7WRdT$qsEE~pOs)<+q^7pLm{I` zOxYz`NF$k-YPhEnzC|ssR>G`PAF!K%5EvbZL{EfoqdSLTOpsx!28+~1e7hURMl)kLgRrXwPhwSV6np8Q^M(67bF_c2QW+t zu_NsqLY`Dzr12MXw5jgQ@T^ zsNq?&FO9pQ7+~s*7eyubf`?aAv_bOBi6L{d{s?|x3LX#YbFzsxvncvUM9LK8Rz{1m z%t*-T5m$ZCroa!KWrkyWRMj)jm2$R~m*mlH6q+_KhnxkPO;~i+#PG7pAgb|dsG?#>Uf2oNLn;^bX zIpSG8if#{Hv~aSB&k$Z%mDEFEjytoSpmF4^WslUjF)kg|%`&GMGx4SDiSD^)Pp1u- zUs|_Uh0;``<(x8RnJ0Sa7O2g%^~LalD5Mfe$mAsyxXfYFM7wkkQFhs%+b$iM0YSxq zFVPV2P!MvFlf&_UYI@*7HU5||1qjIW++s#N)04}~%xS}G51_kZSSa~#Vv4dgBo@+0 zMG5Z`W7BM(t9!vZEX>7hcOXg2;_`Bev4lY|X4usjEZ8)wqVkK!FH(a)N;70;JF`^o zt9kj(&Ci#4_;|V>JI`D>X}^zZq_5kLbf*%SLyIBRWGx~s$ZX1h_siBexZ3ye|N1}` zXU3B*5QL;T%QnZAFCjmO{n8|3gN#z*ldQwUQBokx8;#F6AehCJMk-H*u2Ailx`q_vW6!krbc2^IVy1?olrB( zDEf+-Q$C6f#=v0zW#=>^qX;j#o%b0#Bx!g_yyU>z2_Ze0w;Cv($=Cr?12xj&;{Ae~ zEAH=&00tn)_@uDkcMAjTKyR=qwS-crs+P9c(+>S=!B^maHGIi-=Dp~2<>U$daV?5L zMwR&G9m+hZo8Q!$=~T*+nAQ>rRP-a=MXEZ+yPnuE4b)Ey?g!)k(D$yu4S?6zGFE^Q# z?oBnnLWkmKCb4b4#X3!00kp^Zw zFcInoa><-pZm6o40JhUQMwD?I?npGLS>}w#BFF#}Infi$L-!33zo2=VAU&%T>Abu8 zQK}n3-i*hbpw=)51UA4de5x*TZeaxwTAYoFR`J>TU>1)j$Nanj=dTE&%{yr>-P3KC zj#a~(y`OFUSbsry_N4EZhp-A3w4~wP+dobQ)ne!8Xr zKscc3m}W|huK=mS`ti3~eB&VEesZEv-)9zS?e0jXjGhIqPQQXHwBl{=%Y@EM&!;nL zm2FZSTI2>O&*rnw$`(+RSd?3G(^rT|?x`d#d8=`M_`aru($8q_)Vg#)1}Mu1=iQ@I z&U4+9U=w%se*yFNxQspd`P}FClbL*aW~)$?_wz&(u;5JPnKnNk%n%6UCQID5d=xx zzvoy>`Tqb(K(@aWL66zAOt&@k*QhuoCIgQUh8nvOAiaXTG8}WrGLu}0GC4DX8IVv= ztU|$TaEk42Efn@bBkX5}{hhSO{z_of6hU?S#s+ zMgTHf=!g;9Wx#Vm6Bd~x_A$2MG<8QKlS`d*_(O>yH#=nLEMf&E%aHV$LfXTyJe^`7us<5o31Vx*G7Gqb zm_QvdO#q3I*`;YLn^Xm=dTbzYk07g*mc_g@Qvxep0Z*5;^vWFGr{r+eh>x9o1m4M%gP*7yOPCKF7HlQ;=yMdj$G z-?Q=r2G;BJd#zSH!xk=_Mp1WXH(;^YwTEXzh5&9t8T&F@S-%?UE5^{&d;O9(6~axS zj{MdUq~isB`KKNQLIR!!W9W5-UVN`3D)a-EiwxvRfUC+N3qih%R};DUP>0l!*PojR z7alI>aAiRkQeF2d^;H0<89n`6x3NKMGQV8nb-As=6}hZmo9Z>KQ}EjCnI#PCBsD;r zekAZh9f+WoZUn+2*CH6}T7;1Ab~<-oKK|kNvUG-ZSliceE@gNf6ZU{9GJ^-UkmN1R za}X_2dtzG5Sh3w~j{O4E(gp){JM%fZD4fn>W%D4$)M5#T0E_ZN#B|L3So<|i>`8OS z0XK!RQ$UsgMo1Ns8gc8zGz44Ogr#9Uj^N@*d)k?FUO1rgb@ zqe}2i+4T!40*WXbZS*rtKD?^JSVSTqaH>^@C=5~c_yH3Dl-~02(Ba zQ3OO$AIQvu#bgmvU`MEUkX(f+32B4PpwP$W39=6VASXsIoJ^MZ#F$4E_p=$6JS`9f z>LW`CVo8NK%4|y3OC+-B!Gz&Kab!fXxy-`EN)~s;bX*`+1uc&h#6++QvDRWKCXMI_ z^yIGeDD#N&PyYCiKJ>~*{1yhOvYZZ%EKvewG?kUB9&t#9JPDH(x}%d~Z3dYp$vMiN5`Z}O#efPy58ROGCNkkkOmNpGUOE4A@-;8$s@h51&T!OM>=>o;f~BlcQ+cW@n;i3;Z3V32 zDnn3V?KaPBpn;uKF=hjP4P9d*4bowr@>pl9!P&Ap>;nMaHy<`B~?3w(@1yFoTUcyLX- z-}WC2GXvvJnL$xKb2^#%HVbz?3u`G|DAQqgXMaDMPQk;`@SGh3f)9012oeZUllR5^ z7Vs#MTt3l!I!DDJilC2rCb^>RLf91zR2fJNx|O@ii4O~ENG6hkuL`UZgVJl-StpRB zYgdh0%hJ|9$fG1*UhB`xu#3OX66a!?jd#VOnvkZcga}nu*>4V$izV`YAxN6vK()zQ zz_NH*j1%=HfUEm#6>}MH8Pe3M&bF>rQv|UYj)*R*1X&0mf7Cu1b{72`_kQ6&Pk-?5 zZgq;oJ|aE%WT9978M3I zb_l9*notau2UHo~Rmk3@%nXPDnX3E>%yh$fgyH<*!Qps3J|7GrfoQyiMpOlIE_IVj zvvW2XblOl$$ZL`&%&#G?{?kfSv&fTsFQzn-R~kJ3l?1h1mT#ZjUNU<7zX%#!csc3uSwf1*&xNNAh0^4L8eL4P`j1+)>p*;_3_{VW9uFcAO(kZReP zC0ZOXU#5~EISM3}qyQ{kHH#7$21+$*L*D==_MBlN!u6WF9>^INZ1G1O+Ry97Gya zVOzfARMdhz;ux02Nycn_cdyS80xU|5=Hb!7;c5m@_y3~Dq~}xsErV7l1fj#0 z-Klz4%_;dVQH6pD=G2+geZP1U$N+P>5hA31fdnFTG=cylmb8l`%VO$Z36#W(8f|{u zd}}JW8T>)MNfVn^u4POZl~mV8E0%#xRF(c>4(mx)!=?de^PtKG92*0!$yzDigiXt_zDN6mqzt(v&ooah z%|0IvSsw29*_O#BUlwfH_sG(p;|HzrXv{-|v40e!=Rx#k(8>xb`#jm=+i4>vBi#$J zRry1FvA{r8gNV<%6tI;Eh3sg92C*cH+Ea)xE7Y1TssqA3i+vAb3~HvZIw4=s2Fr#e zAaWw}BlJT@gtCY8P^fT)b?MY|Q`=@HBQ%^#bs`JanQWw1;D&KPwS`b9hIL2 zp|=r4%H58Cu-j$5hshxdI4z5I+It;w$}@8i%{$&$D^jgst`SFbrmgHvZu>3vz+j+& zHVgb`4~tAVr|?r2C9s@MigL<{Fllb~`)Bj`3I@=0z2LASy!;3au0L#0 zG|)j}Dbh|1iQOaz%JNCBIu~M+O&ub4HDnYnGJ@3d*BTm11TtKrh?K7|MZ&MU=+3qB zuZXp%?G;~EL5mVs0T-TVpEPl;9gAn-lImKoLlamRP39_n1Ef{vP2HLbG!Lst>PbmU z7s57PoAC^eHXl|sk;+392w)tr6P@XHhBSigiuR=lI&si@^zgNtoG*cd&swb54hYp` z%#afNM?-k0-Y^lrlG6=Bbu{*EB2uDG6WK77PK5r zMo3XetRnwv?2C%n=yY&+=y`s-(|Pm$n`mYz0!dm_GwhOuTc8M%%?XHKtWhKC28`b6 zbcT!%E)kW90H|0C8mbpW>q5goGUyi;glry=feTtum$LNQNaUEGVyXmH$T3N(kyeC4 zwK&0M0zNU5Ky@T@0*r#tAi=ZHn4uhEI>6?8h&y~hYAGrMX!bIDGJ^my6GFu-H3aao zT8rs7hEFJp#Zr)M0T3uY2vz|Nsjb9?kgGa~^(jjlV)+Rlk^zLS4JyK1MhK>Ct7h&1 zldwDs7RB*UQY0I;QIBaA2T7rMLf;ECzzPKuDNE2osv~#^9;jhSB_v3V;hMxRBEc$Z z>MxNc8O6${2Dhk^%8o#}qyv^EEW=5+h)yweG>NG)B3BG-d%C$Q1{Y{dDwbOYP9ghRk&VaYHeX2|po-A)6Ue?hU> zuPZUwBqH>@+Uro}SJoqnXBhE@2>?mdz1?sO^q2W?aHiAk|s5`g% zl?V9mGHltI1kiL~R(}%Ean-j~>}3ZpaEQo@UKZq1XueEEN3ZQ7(n(FB&4YYy zuC>P|ta;#Ljp9wn`*_$W?uzuP5Ct*Sa*07u^DM9H6<+_KK3!Q!1tq?0TpRhUeUUa^ zjJx_wfdEkr?agYf)r6dxejy@fNa;F?4(u5tbeEbP#F(@1-#PuBZD+}&lNp*vbngg+ z?H0Q)k#@A-g69?txUodSU!RVheEd? zC@EW))ntUNzapE8EYILVslZqeOC*$9Oloif!5|TiBho%e;Ign%jHXysByXkxXr55D zu^uh+j!K)&CRJ#;y$+1mvz#bno*|cDh2VgWin^{RLz5?kkSatCXc?qRPF8X1n5rH1 z5SK>^k?;kMNw&*uR2rhdws_=$ONFUo)Ki^J9k}?ac#c#F^fP>7FB78 z39Q);bid`CjFHf>Hehy;kEYH+XBXvP3vWSrywhugjqInLr{>9ciU7g%k6m#BUIDQ9 zw7}M0s>@Ui9XSQcTBuO-GEYzv;#-0}2ADi!i^bZqhzklFGJjL78ZjC?WVINpe=+qD z+yByW&D~z-ux+trkhR_k77?Ykv$w|t0jnFV=1@B!UPNV%;t(edGCg+MC0ZK`VW>o$ ziFMYUvw2!zc^CBd)2y0~NBJ;h7Tsri8~Z)*dg3^vY~py`cOH!x1fUx(Es_vxz3Pwu z!<(J4J7hw{vIj(ea6X#jT~P*7q?vOz>@2!Rnkise zzVgc}mxRdwnvO5}TzG(tkec(ab*V~IbBJYDV1tSP9(9QD{PR0tHLgucg!i ziq!du7`1uT)l^|Bk4q8OqpwwUJ$U_jg|h3R*F7&w~CG!}1b3BCR@diPvL%S|(>*&lpc=oD5uA zu_`T;S44G$IL5t@Y8l8#u0Dwr|_Wcf@CfmQIAu3MZ2F2r?^W$8a1m6~K*;n0kl@I+u9>;8V2_s}iy$ zCMqr@cD~9Kr&crwazJhc@Q`hm9J4rLFA{6(fDs}`r!i2VED(C4L8{bpIXkiO3?WpC z#gI(gg|T|c$_D_GU0{f?xa#xG3d)6@H5EYagCSt~bNBfdb}(`+pisi3X$BRh3W5yM z`GO--shSw7AugX5$fL+`^UfjwVxQm*;lj3MVk2*L49IJZsp?(6Q-nMdSGBADTHja5 zDG};~qGOWWi6MMSbWlPxD2%0-cE6R*Fh+B_eGiupXnpb#8-;x={;k3U#l|>qz@evG zo=u+UMS>~@k2!fVgrc)adpcx_CUl$<90YbUhxm&9KB^Y64r1jU^CA`mrsHrI7ZG5d zG84dG6-^ddK`;TgC9+wMKaY)QOsr&Q7{>L!%k%^kXX}6s^l`&b7$6lpv5Lxf0tQVn z!#gv^s~(<5rebnrCz@!cT%+ByaXC7-#Tk`0nvJK?bTo+*B&cC(W9($Q3EPyD@r~UM z_SST5)^;#`#bOQ%C?-f)7?AcnnzFy}d=h@|C--mMzGZ~WY_%WXKb|v!{0_U|%lr&Q zm+et#$;=z9c3V9bx~K3-CX4^gzxo$~o5IckI-Rn()*hEZ^1J9o)s2!w5JviqPoyA3 z-T6?5aA(8`ax3<(!sS_gh2bmNL_SHNbiaCNqAe0he91=sL}*z=Ru47DU;yzTIXwMu zkx^5~`h%pFx~;Ain%7~fmaAe&u)O%bd|drr8MyjPT{crKUZozZ3);7ygz>W8hE=@g zY1w&F+2vnTImR+;LS!h0ArL``3$9Y=e4$qOYjZJ4p8VtoftKFBx!d+C^bO*g3L+~M z1cMwLy`dk+yhLjS-6%p<1+Q856ln>bq8HJfn|s(=M5r3Y_7VM&?4w7>V)rc0H6d=$ zaRv=zouS7k5oEEli81vN3J97iX$@l`>+r@AozD(3BzatTA`;UhP&CACTFK6|B2SRZ zA@uMA(XnG5!vsK9l5G?;fJ7|w;8kKHC|m(8Ic*oHt62tx3w2WlsjNt|!oi$CpjOGc z0!7!w2@T~5h9%}VRxo)Q5gT&=eK1sA$yY9~D^lpJ*Hy3!puONHpEh zB5?&HeW5Uc{CSo&2Ph1TLDdA%kRh$0Ef7jBwEt2S^+-BqKIBP*WCDhV)F6OhjYgw4 z-*|&5+Q&co5l9?a0%M^xi?WC<3`wwnzj}nKk-#$?XNfifDxL{s9Rm>XM084%@u+|Z zU{vAU(c}mPK)a|S2%{l?)pjzGCaT=PJ$Y70EfG|>tQbiP*kvLRqZ5qbJFn-HQ=EN| zrnqWGX{M)U?@4GJPvS5unal;Y-tlm#HuR1B_F?b#!A_M{U<9V3um9w@@>-SCdVDr< z-GJVtn{ccR;sHOA0E8o;Riki}_(&Vt4)eo8A4cV@@-y3I!6_I5aK3zrJJ?I4fm_3*(RNDgJkZx2QdAX|zJf(JVujYD*Y=o(psa;uP0AaPP{ zGQq4VWe(AzQZVnTWR5d0&9HJ3%|Ww+%Pgym?%nPmve8*)xwwaB&S-{7gy~qya6>-Qx}EW*GGS+$jMvIvoGtnoty5L{!9!~`AWRfRBm7MDT?o);lt2ro4~ zUq;#dWdz8OQiDX&p&J$4SwvbCznSF18%2qTas36Dn+)q%6t@{&v7NOb86x%7Jgj|P zPrQn`89~)*kqLBR?c?IH9&Bsj8%?;JWI3~6OR@1N0~5N7lTUWGb?4yxgWrk?tqmAV+MnAesbQ?^@ z2g4!N>h}6{1cLu`JYi_}4v5-de5 zFG#$ElYvSA040JvtCSK=z(U=~1`P^Lr**uxZ@e@){=t0wZj_a6sA=H5dm5f#10$*} z)z1#zI3_oD&AT^lur5x<=vL@u=w!EZa6XBTCj&A~V^B2qnalE0RQR|8p;5wN9|=I2 zeBRjG@3Pz*hSO<;UK712LNtp-u34c{Vv`Dvso7K=6w`Zmy50R7s5{R`6C9!FtU5Dq zMm>m&IVT8Ze-|hj;kW{^iJ`)zm-8xEFk)KRW7BqusFdTkh#Ac!9wPLxKs*?-;|z_Z z9ijbq+*y<}%fyw%j^Do7@%DR;XX~>GHWvnKYPSx$amEaJ6l+c*eu@PBJv(FHJ_3

{nS+Q>d(t+U-wn8cD*jbkuJooAyWr#mL|kPMc=3|an_Su$W6U&#J^C1tK(lt zaWRtWN~xT(1rd%R4?+^DAPSS|0B?)EcFU+_krVk>6fK&@<}ajA5wK;cQb&rB7BR+T z+Z3Y_O%6F*kjS0>&Jo(7(=mJouMK!!V33SPCW?EM=!{i{o7mStIAtFIUU0av4U^3T zXxwFa6=g0q_@nc&NV;X|GwGL+i5Xq-@Zm9a$Kiyq3ctl*rjo4ZLVlr*Vg;lwK@xx^ zM4l}_0%S-g)n}zo`izZZ4qJ9u8x#U0mx8SPq9A5QA&M4nJf1*vML1>Fj~uQ%V_?b$ z(_&EohR5uK9H98}6^%7sCD{EYE--{Fi|(G0X$ZZBXpuR<o*51dKm>2Ze5DOrvAfU9k2wq*JqM+5g67zX&MuKFwyr{Mm z#;a=kBH>zc$xNKU(M*{|03fkY(90V)4q~RBcx6Uu=Gv(iJRZzKh`Hb>J_=oSz`k(n za4*PQDIpopLuN{a;lK6H_>H$GCs}#U4A8;_p~0pq)PN2+%q&9I}Cb%53{IdA1BSXfYvi`mPsKV9oxa!-L36=@p&o5OGIt_^t3L}MM$AB&ZR2FY2 z(fE8mIyLug=ET@mK%<0`fhb6fXsDr!vXsh5#r^$|cbpqwN6*R@>QoNq632!m(#jC; zvxpdl)nWrDByDeRr_%|BL(Z-kqvtjw8MU~ofpb71Wzzw+9VT8%*yOJF9h<2u^+7KL z^{2w9pA+0L7=C40hsE97-JWXJvvh>EqjJluj$%D{4xp-B73q_Nl3`!q0eW7~72AR#& zogp2aniwOLV1j>XUqy>%u6gUsr+DU@aOYH=l&(37e8ON&h!*+>z3?fx+F&nF{1+{5=c(zaz7J=Zww`ktQR!3|5w5E_W}yVV)T zr|08j&e3wFkHnJUQ>MaSTpicLyl*6V6RbyLR07eP_qQZ_pDAlykf~YVA&oDMdJ$ac1A% z!9If7fUUo{%jopdGC3VgZrwbvt%Uss)I`u!x(!Cpqna}57m2tYX7B;Q18ftulo>J8-f%X+ zvGZQnN5AQqV#bcCJ_8BI^jIpO*TAe09RsRq^#Ay^oyQ4_a&3IDU@r}=WYCBc2bB8E zJ5e5CRBeZ_h`A^|(Xu0UVE%}y8pbn|>3lpv#%Gr=G#zyil@r+;@`}?42x;oOlko_A zrejc(bFf58u51&i%Llzd!r4J1@TY&wlBbx_kW=hrfw! z2z*00v0T(?9Xl7&TaCE1x<)A#Re?(pYLW@?RC1MrdRoIiC1H>?=_M9rsUInf9MzpC zh`KNUS?#Flzw`}0@Pb`*6lRo-|4bugMlb!m($4*d?5Jiqhk9X#e9viA=IXH1Li+-!+?ur*JLp4yCpd=y|Q zh6MyCZ82=%{bhd8We2jjLBs)1tJ?`tnHEekSd+y*E3ec@@?9}=XLFpAfxIVY0UvyMbD`pZv06Hs;efu zb>QW@L;;nSSDmB|Yo3X){#VD9ud8rXr zjJB#sQ&aM5o+U#yv0pax^6zGI)>29>$x78}BS#h5gw&Cm*Q*~k>vVOT&7#-i&<5$& zTIa*FjDJkc@k)$KNjnK2eg7}K;oG-+?qOf;>|$XK#doPAi_c@(?#s^n2r-DeI8)d0 z1mSghcy2=v#O5OeU92QRF-AkA$Duu9kf{4#Be9U>!x3DKm83oDCTbZ%o$KPQoxTgCxSrqySfyHhK zJqLdxdMcPvgisbGJc!Pm^omT2BBT;Sd-4Y{c$S{!i6ugzk{F3{&>%;z3Ni@e5J{Z9 z{o*N-l!$c@WAY<+G2Mi}QE8Pkt0O|m6%$flWD~TILKGdSbf9}uHDp1l2_OP8d?SPg zNL88EK%iyvAWb3)>%)?OOR0dcG$Iv=;hMBmM!760a7N2C;k!%@QH>Qrjv&viK4)rLg zr>ab_YP^IJL=6?B_$(M&v^{sf8%)m5P9Hzct(~{d5r@Tq9aT%;(O ze!D#dr%k)PvkxW>hR0Pj_=OkypZ?U{BR|y=OlFeDgSge*!=2Dhzk6eUH^YrHK2+vY z5FB)2Ab@I^x6zZbe^S{)_mJ69K^5_C$L%up5Hn5LmJCuM5CufjvNneo6s$tCeUg}% z2&Y;;L1Qn-@1etK)4{$~w%p{f#}USeKaR8is%xECLI*VH4O~YKYWt^o)EI#T5Z{ zU&E1f9zSq6YxB8(;*(3zN*V79wEO2E#cY7hb=QUf%QRaZ93wCd*B7@u&M%jb|M{OdzT$1@z2_~RJODqfn!Bp(3>4GHorTUQz3 z5KTOl(?rg_Qv_RRH`Rnn%qLUqhJ=nGV(aDJ{tgzRIG66U1GogsxM))m|2a?t=E2gd zQm|-hPgcx!0U(CVPR9 z;mw_y4Q8Dj(*zG=VgZ@v0r1t?Qgb2P?BEXqIGN-xx*b{45c{-cR(1Yj;Um=(f==nO zZlGp7%VJmEO%7Cpn0%^%Q+K1vP|R?7r6C0~FFEr-#xKKM4(Wk&$%<%55mCqinKaI& z9%#*AQ>eoK^xyws$M=8k7hZ)lKrz4s07N~cJ|Yq*j@b;A4MdeHP%kLKGFVELP=#6Q zm+GirVycf4mx>BLs|f*b3;hBQis}1PU*4+ zkBrXJK@!aq`C$SFN0IrTxSLL}PrxJ&Z&>}nZaF#!5AV5{{Nr&D{ZoM2eHgMD zop;+eIQ@3*rTpx&WlJYbR)^) zL-W&oT$a4ZN#>G*v_dbNI8Cax66O0<5!T{fox?JMnuM(7@ScQrnP~GDkyOt4%)`ag@S;{@8ggOI{Y1Z5DRT zBB!8+VbU7SSp2Pq(*!e729*fwW`L-9c0Td&GoHg6@F$9Kg&ZQEv%Sn^hhY`xC`K`f z#$IjCAzYM)@?6zSG)`b7ODCjjR5jc5)lhjpvGxmFVNQU$iOn^HDD03J3F@~H;(I$<9@$mvCGwJDVmBTi;`V-xyo;GQkBYg z@T*_^@mzVxXNVu{2g_F3vLcEKMTVAZr*U2QeL@BmFE&jq zp_0=m>SExev0?Ws8@4G_o60Z(xD^&FR{CyZ@HBq)RTO^9ZVL@LRBf+%jk8)NnFm*A zgKANTb&`z`vmAQE!PPr|_~M&MnDc{7wNph#5_3AO+P2$7>7sP|orhQ#yDT3L4?0lD z+QXgaBqg^E;KooU4DnazKl$k5XCDn7Rgz5L!JuU9L@``Ytbjnjv;U~V(UER=wM}{F zh%B>*ph?$eK~y4GGWU(3bP$E*?XsFFwOS4QI%9o^n2mND0nJCX;;k3f8*PZG$dfHk zBz2fO{ie2ZmHIhGC~j`25@SvlO`H@bxqtn|KfihTr_a84)jg}d`woV)LT{W2e5S*! z)W}EiyntiS9%e*2sNO6??MWEm0kbzAp)$8z33T7i8_d92dko+%y{VVmT z`pNoMJ)w7X7emb6b~lCXuhWnF4@zyx4?^tmC%qeNW0D*t~TfaY4)5|UQr5gE9&JnO+=y7sY0 zSGwKZm0|bh(jL6gmu^Yi0VNONob(cOso#Pzq!?)h0FP0Uq`qBcM|b|$UtD*}7rhp$ z=WrrtK?rvhGv!!(!z#0H% zHFmsMBA{ciB&0VIqSV8%vrNKK9;jMOW^x_?7X?I1AO`_t4FpgmQ_`{cX+3Z;Br1p) zP(&jk@;u`2SSGctd~rx@T-qClqs2Y_4@jJ<_Ai{`f; zba>l^Td~D8a>Kxl0m`HGly;-mwwAbOnuP_x6_sZ#m+1iIJIy1qnjH3ABgO+QFCdIA zT9i*n;%2rlzWmCcO&&jfPXhe3iQ1J#(~UrZa>W3cdrpJ&W0z`SHL;j3=>AdfyZYES z_8Gg{S-3v)LD{(vIH_VBS}N!h4xbPT-L7YM+0p-uFmDr=s)h2SGi=nZ%4`3;R=nt7 z%LCg9ak0|IoGs#&7}b37%A1C{?%*+$JA&_+O}@COTwlNY^7S1$0q`$5%4eBDEu1xh z!xX9x*PeY4o2*tT`QdwwkMXjcnPsCXF642k5-zh-pL7u1c=>OO(8^?-@t%jf!`-Q#}8~8C+L-z4I(~ z3%lI`UhmLMMj3(uCq+-uG$;&K>s5TqV5*T#;T&1mGxh<9;4!)sMOWGp>TPvw+UwTI z+|oX?j}P2jeD~pdqCSxN9}lwevP(`OTD7D60H)M}-W-xApIXN+7pw2;;;$liU44jJs52R{>e2z1)-0#=N zqp@LH*?5Mc=b23mwEu93Y$zLG(#gMy7#$*U#kdCvQX2xn-Nw=}LQXfd$e2?$4X(MWkkLk-%vSS$&=5{w9;g9RKRefB;=c|-&yiS*Xd zuq>cq=Pdi>pZ@aR)2AQ)^hcDRthF|hoEB%mrz4&&5{e)ZVC|PTT|jgXy1UqEfctUj z(~nRffaXOFrzJ|jEWjY!{Gwp2268hki^|5eMt}=WUq0?OO6O~=b7NaIu4Ln0z3@(} zwTgmODIYA*zAbpIwxX?WCfgq!LF=V3ft1nBmjD`7{JV5CWs4fZ-x=egpW_kY8_SF#ms|_D3s&u z%?L}moYz8Ja6rK6w5CyB7M)xezn`jJ1N#d z2KL3K&_Pk94So-f9xYTGR)i=mLg5p2i7NbqT(fT4Lo24D)vc5o*Mo-_-5!puBm>cM7g zMUCu6aT1Ta8zeZ{T_bN-+!Q!!0~VkNl*m8$R0ct-Fyc8-&}nh0Ea80VBV+9cG><`e z2gS3}fWhJRfC|CmP`gY))lrAH9Ms897`7oO zKZm?B|v<-5&Jqmn>OW4Nc@tl|b>j(c=Q zQ*T?q)Y-CsR*n{Tt$qa^b_U;Q;{ESSFGL4X4&LZcvW9C1PcY&}j@!t)Y?eQ{Zaq1N zVjgdo;g&70tT9Qi4&kzPr+snWJZO>Kbu5o5D115+qs8ZkJrtg?pdv_*Y#iB<8%YJ8hrSI|2fbY`<5r1 z?M72l8Jk5Ij=S|PKHN7!f{J~=y?t_-Z9HkRp65$Vq%Jb~7M4e5v!uI0Oz3N-7A0Cr zD-9iH&O6YR!HiI4;UiLqkN7R>?s$iU39t+ftbw{7vR-k0=Xy~AyQgF9x$9;3yNlzx z)qznT--pxfHW+LKC_*}_TwLXu7GXE4m{<3yEf%jwAxxlMYW*I)*arv7-EHU*NgHIr zF-V}ieZoCxpz_S9zmMl$TvW@(MJ70XP+WU<@GRU)r<;r8ey#cj!g6p=ieRO5G1K_z z&vCPZ8dL>W2~8%;`S?cIE?B=Q9L2FvD8dIT zD5ia&mJrB;bsx`g`=^N3S8b`PM(&=wW7Du_})k_x9_R2N)k42mpFBo2Hb zk09oWQ7NPDyM-7872@xGxkP~g8;}cH4NDHeJi_N9f3z-Glbt(Et5&CX&V2U#*EhGt zQjMx%l^T`kw)Bm~1=1b|%wWi!0+SZBtCL-(c!F#wHPGOM=;jX9OvCb-PcW3Uq8R=q z5IH|0lL!cO7!bJgkDWM;Z?rrsul4~{jcln1iz~PrJWNi+C8m-7JYca-C%tSC1cl=k zhxq|3irr8@D=RxTD~Z8`mZt&L)#`hV6^6T3NkrEJlo(hER;%0BH=q62?|<=c|AH67 zU=d(so4o?VB2C7kK{+h_{^ni*x_{6%L$k(ZL`3&R1y#lhu&V1_(04P}eGwNzqZ-Z$ z%e;%rasWB4R!*9Q?O7$6cwV;HVt9aBe1l0&40DFj6jf_BfMUVH<6;ZNV$Fhu!G%qnk0$RS>-p@mnhP@PIoVdQp{5<( z0%T4#K<>>t?2~GQ+-Ip6M@Unmi!kRXsDY`b?E1qGo}iiw@BZ7@9@6%Mt*rBL(!ZGJ z>NVV5ut;D;6s`-rLX249m?h^gHdE{qvb&L4Q^xjcBL~9S^>hNyrZ|OQ5PF!+F*r-S8cK!^Br=+yJyf_h>_QgRLJef7tpvm}f)rVH z4`>6R)RjXULA)lT)A0znWydYKOfYc{2OT%JqrqUn?wG1GAW6h5zzRh!=R+&iY7Lem zBu#Op2jN5^`N|psV&y@K25@FnDVgnrJ4Ru2B&*VbuGG*VWE8=m(`i8CJE`;{u1%PS zRZwvFv5VaZsaQFvAT=X7U|DI107x2*!syW;i(d!ZiMgwFhsbIeus?T9hbAaB8zyx? zfWj!JMJ4hj2;y1M?#PcYu3=Xp$DL3S_y`|IbAFW>*9~qgw5??-WpjT++r0*E1h_97R4s>E*N<}5?@;I~;I3t1_o8_WUEyhIPbQ;b z1M#668sSyH(EIHdHyEN7>xPXiWz3ctPixfJYK?U`tJR86ud=Qm)x5=%ynw|o{shO&EgA!>(l#C0XcX(1akPC zMmbJ>5`k_z{;n}~09(T+#p}D!`v@+gA#?}!1o$q6eh(w;s|f%j#i`BF5^$K%J(Jv} z`WsoiooXLq&3xEq`!D~<1I0dsmA2Pz&Oy_<+QP;L<7089kK@qA1m8g@r89brAVuP( z0&a)oL4y}+opW7HPPnN$WtBCDHCp)4Zut_X;NcI#C>F~-kB@^D_9sG`H$_B;`7E$E93|tKJhY+NWsGo$cA>Hi= z7pYKWF>M@3wgougP=~U4c3lI53klR#rwf+Fz&!0^yd6YwaM?JYM>;|PS!4E-#l}IV zoGvX{bE!y%sVNv65osA)x4CGpB-%%;6K@{59RL7bS`somfJUi^z`8*QO@W&*iUDH+ zAV9Ny0MP(OUfO)9NK%f|(#CNN)#aQ*pKaMt?Z7`$sS=|J_=G4>D3GN>dltgo$YjOR zW`znHaI6JCfByXGvwsr1E}dlHZUf;rRJ*4rgVG9=2HHAVI&U6c>XFPpgi^#{aUM7ZDvDQlKJIw?t{D; zR_rcIID5d?7InuG19s!^;st97!>&QUwEF2)`Qyv}1yV6lFqus&)i%px$a(4-E>7+I zQ4dSY!nUPi6vR{C=TMpaSgbJ!iY-pgS@9t8`qczqT-#!O$+5BNgu^9dt--Ak%t`KG=3N>tOq;G=Py^GeWdHK6Pf5U17?;jFeJ37pc=OjUZ`^$PK|LpqmNiRwK6&Ahe z_+XKPCF+IS&tDAR%%+elD5KGltyaND2X2{Q!kxy!+W~t*jv?UBG70EMcw~%D_Q;$p zu!u9-rGAhs>z!5;EjiD}0Q>F`m_51r%#M2;lCX)YRo-3dzr+4km-1yFMDNk3`&T~g zlL~;v<+dj!4mw`ncbEHq2xj+1zf6^5s7FIkBT_{E!KDDJ0muS3{h7-SRT+KO(B2Ke z<0Zu590x!-sgm~q6{7g}Ar7pIzrSmGyEsRMP0Rjv5?8`QuzOGsKF|sR;;M2|{s$AB z1X6sZ6+b{FWn6G{3#%GCaPew18a|TYn%vCu>a_|)H*yo0KW8Yz@|nS5MQBdApQBh# zVbP_>@{BkpoVbR|Iqrv02e_L~k%lIkwxMt&nTk2l_`;9YgA9344-zyWC9t6TLL+<4=R^1U`!6Pyp0G<7kP}R(`{3rq; zjs>I+*Pu$rpx8jP67!l7ZaXjnlm$#KP^Y_Wv84&gSM$J%N;IfiE{;GcFL~KYlexRQ zWluuA?6klJhAL^}ME4!c6!huO$w=RScHtC^Whk8hyKf5HT`n5@0cZf_Mb6mgN#c4Y zEUYG(XnfVx@9AD?yeVK9wuqa_#}%*lYCj>EyAi{bB9xBcba%X(+PnY%Zg zd3n%D;vj}Mm2D$Kw9TM+ELj58814_XF3Vsz+ZHyrbQ2b=y;&G8yqoWQbP1k)^aJK; zr(TM}pw{Vs_SbJ_$qG9lW(5zYmeP`;3t69{brQlaTP0}E7?&}YYmH)I?0a|+!^{LH c8Iwuyf0NsjVl)YhcmMzZ07*qoM6N<$f=}1i(EtDd literal 0 HcmV?d00001 diff --git a/yarn.lock b/yarn.lock index 59c962c3936..4475d09ce09 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12084,11 +12084,6 @@ stylehacks@^5.1.1: browserslist "^4.21.4" postcss-selector-parser "^6.0.4" -sudo-prompt@9.2.1: - version "9.2.1" - resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.2.1.tgz#77efb84309c9ca489527a4e749f287e6bdd52afd" - integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== - sumchecker@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" From 4bde0c7699e5e69f1950c503eb7dd7c15c29c798 Mon Sep 17 00:00:00 2001 From: Jan Dubois Date: Fri, 30 Aug 2024 12:52:02 -0700 Subject: [PATCH 2/5] Running `yarn lint:fix` Signed-off-by: Jan Dubois --- pkg/rancher-desktop/sudo-prompt/index.js | 534 +++++++++++------- .../sudo-prompt/test-concurrent.js | 26 +- pkg/rancher-desktop/sudo-prompt/test.js | 60 +- 3 files changed, 379 insertions(+), 241 deletions(-) diff --git a/pkg/rancher-desktop/sudo-prompt/index.js b/pkg/rancher-desktop/sudo-prompt/index.js index acfd41ba963..bbb50cfb1e7 100644 --- a/pkg/rancher-desktop/sudo-prompt/index.js +++ b/pkg/rancher-desktop/sudo-prompt/index.js @@ -1,23 +1,33 @@ -var Node = { - child: require('child_process'), +const Node = { + child: require('child_process'), crypto: require('crypto'), - fs: require('fs'), - os: require('os'), - path: require('path'), - process: process, - util: require('util') + fs: require('fs'), + os: require('os'), + path: require('path'), + process, + util: require('util'), }; function Attempt(instance, end) { - var platform = Node.process.platform; - if (platform === 'darwin') return Mac(instance, end); - if (platform === 'linux') return Linux(instance, end); - if (platform === 'win32') return Windows(instance, end); + const platform = Node.process.platform; + + if (platform === 'darwin') { + return Mac(instance, end); + } + if (platform === 'linux') { + return Linux(instance, end); + } + if (platform === 'win32') { + return Windows(instance, end); + } end(new Error('Platform not yet supported.')); } function EscapeDoubleQuotes(string) { - if (typeof string !== 'string') throw new Error('Expected a string.'); + if (typeof string !== 'string') { + throw new TypeError('Expected a string.'); + } + return string.replace(/"/g, '\\"'); } @@ -25,11 +35,12 @@ function Exec() { if (arguments.length < 1 || arguments.length > 3) { throw new Error('Wrong number of arguments.'); } - var command = arguments[0]; - var options = {}; - var end = function() {}; + const command = arguments[0]; + let options = {}; + let end = function() {}; + if (typeof command !== 'string') { - throw new Error('Command should be a string.'); + throw new TypeError('Command should be a string.'); } if (arguments.length === 2) { if (Node.util.isObject(arguments[1])) { @@ -37,34 +48,37 @@ function Exec() { } else if (Node.util.isFunction(arguments[1])) { end = arguments[1]; } else { - throw new Error('Expected options or callback.'); + throw new TypeError('Expected options or callback.'); } } else if (arguments.length === 3) { if (Node.util.isObject(arguments[1])) { options = arguments[1]; } else { - throw new Error('Expected options to be an object.'); + throw new TypeError('Expected options to be an object.'); } if (Node.util.isFunction(arguments[2])) { end = arguments[2]; } else { - throw new Error('Expected callback to be a function.'); + throw new TypeError('Expected callback to be a function.'); } } if (/^sudo/i.test(command)) { return end(new Error('Command should not be prefixed with "sudo".')); } if (typeof options.name === 'undefined') { - var title = Node.process.title; + const title = Node.process.title; + if (ValidName(title)) { options.name = title; } else { return end(new Error('process.title cannot be used as a valid name.')); } } else if (!ValidName(options.name)) { - var error = ''; + let error = ''; + error += 'options.name must be alphanumeric only '; error += '(spaces are allowed) and <= 70 characters.'; + return end(new Error(error)); } if (typeof options.icns !== 'undefined') { @@ -80,11 +94,12 @@ function Exec() { } else if (Object.keys(options.env).length === 0) { return end(new Error('options.env must not be empty if provided.')); } else { - for (var key in options.env) { - var value = options.env[key]; + for (const key in options.env) { + const value = options.env[key]; + if (typeof key !== 'string' || typeof value !== 'string') { return end( - new Error('options.env environment variables must be strings.') + new Error('options.env environment variables must be strings.'), ); } // "Environment variable names used by the utilities in the Shell and @@ -96,68 +111,75 @@ function Exec() { if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(key)) { return end( new Error( - 'options.env has an invalid environment variable name: ' + - JSON.stringify(key) - ) + `options.env has an invalid environment variable name: ${ + JSON.stringify(key) }`, + ), ); } if (/[\r\n]/.test(value)) { return end( new Error( - 'options.env has an invalid environment variable value: ' + - JSON.stringify(value) - ) + `options.env has an invalid environment variable value: ${ + JSON.stringify(value) }`, + ), ); } } } } - var platform = Node.process.platform; + const platform = Node.process.platform; + if (platform !== 'darwin' && platform !== 'linux' && platform !== 'win32') { return end(new Error('Platform not yet supported.')); } - var instance = { - command: command, - options: options, + const instance = { + command, + options, uuid: undefined, - path: undefined + path: undefined, }; + Attempt(instance, end); } function Linux(instance, end) { LinuxBinary(instance, - function(error, binary) { - if (error) return end(error); - var command = []; + (error, binary) => { + if (error) { + return end(error); + } + let command = []; + // Preserve current working directory: - command.push('cd "' + EscapeDoubleQuotes(Node.process.cwd()) + '";'); + command.push(`cd "${ EscapeDoubleQuotes(Node.process.cwd()) }";`); // Export environment variables: - for (var key in instance.options.env) { - var value = instance.options.env[key]; - command.push('export ' + key + '="' + EscapeDoubleQuotes(value) + '";'); + for (const key in instance.options.env) { + const value = instance.options.env[key]; + + command.push(`export ${ key }="${ EscapeDoubleQuotes(value) }";`); } - command.push('"' + EscapeDoubleQuotes(binary) + '"'); + command.push(`"${ EscapeDoubleQuotes(binary) }"`); if (/kdesudo/i.test(binary)) { command.push( '--comment', - '"' + instance.options.name + ' wants to make changes. ' + - 'Enter your password to allow this."' + `"${ instance.options.name } wants to make changes. ` + + `Enter your password to allow this."`, ); command.push('-d'); // Do not show the command to be run in the dialog. command.push('--'); } else if (/pkexec/i.test(binary)) { command.push('--disable-internal-agent'); } - var magic = 'SUDOPROMPT\n'; + const magic = 'SUDOPROMPT\n'; + command.push( - '/bin/bash -c "echo ' + EscapeDoubleQuotes(magic.trim()) + '; ' + - EscapeDoubleQuotes(instance.command) + - '"' + `/bin/bash -c "echo ${ EscapeDoubleQuotes(magic.trim()) }; ${ + EscapeDoubleQuotes(instance.command) + }"`, ); command = command.join(' '); Node.child.exec(command, { encoding: 'utf-8', maxBuffer: MAX_BUFFER }, - function(error, stdout, stderr) { + (error, stdout, stderr) => { // ISSUE 88: // We must distinguish between elevation errors and command errors. // @@ -175,8 +197,11 @@ function Linux(instance, end) { // // However, we do not rely on pkexec's return of 127 since our magic // marker is more reliable, and we already use it for kdesudo. - var elevated = stdout && stdout.slice(0, magic.length) === magic; - if (elevated) stdout = stdout.slice(magic.length); + const elevated = stdout && stdout.slice(0, magic.length) === magic; + + if (elevated) { + stdout = stdout.slice(magic.length); + } // Only normalize the error if it is definitely not a command error: // In other words, if we know that the command was never elevated. // We do not inspect error messages beyond NO_POLKIT_AGENT. @@ -189,128 +214,165 @@ function Linux(instance, end) { } } end(error, stdout, stderr); - } + }, ); - } + }, ); } function LinuxBinary(instance, end) { - var index = 0; + let index = 0; // We used to prefer gksudo over pkexec since it enabled a better prompt. // However, gksudo cannot run multiple commands concurrently. - var paths = ['/usr/bin/kdesudo', '/usr/bin/pkexec']; + const paths = ['/usr/bin/kdesudo', '/usr/bin/pkexec']; + function test() { if (index === paths.length) { return end(new Error('Unable to find pkexec or kdesudo.')); } - var path = paths[index++]; + const path = paths[index++]; + Node.fs.stat(path, - function(error) { + (error) => { if (error) { - if (error.code === 'ENOTDIR') return test(); - if (error.code === 'ENOENT') return test(); + if (error.code === 'ENOTDIR') { + return test(); + } + if (error.code === 'ENOENT') { + return test(); + } end(error); } else { end(undefined, path); } - } + }, ); } test(); } function Mac(instance, callback) { - var temp = Node.os.tmpdir(); - if (!temp) return callback(new Error('os.tmpdir() not defined.')); - var user = Node.process.env.USER; // Applet shell scripts require $USER. - if (!user) return callback(new Error('env[\'USER\'] not defined.')); + const temp = Node.os.tmpdir(); + + if (!temp) { + return callback(new Error('os.tmpdir() not defined.')); + } + const user = Node.process.env.USER; // Applet shell scripts require $USER. + + if (!user) { + return callback(new Error('env[\'USER\'] not defined.')); + } UUID(instance, - function(error, uuid) { - if (error) return callback(error); + (error, uuid) => { + if (error) { + return callback(error); + } instance.uuid = uuid; instance.path = Node.path.join( temp, instance.uuid, - instance.options.name + '.app' + `${ instance.options.name }.app`, ); function end(error, stdout, stderr) { Remove(Node.path.dirname(instance.path), - function(errorRemove) { - if (error) return callback(error); - if (errorRemove) return callback(errorRemove); + (errorRemove) => { + if (error) { + return callback(error); + } + if (errorRemove) { + return callback(errorRemove); + } callback(undefined, stdout, stderr); - } + }, ); } MacApplet(instance, - function(error, stdout, stderr) { - if (error) return end(error, stdout, stderr); + (error, stdout, stderr) => { + if (error) { + return end(error, stdout, stderr); + } MacIcon(instance, - function(error) { - if (error) return end(error); + (error) => { + if (error) { + return end(error); + } MacPropertyList(instance, - function(error, stdout, stderr) { - if (error) return end(error, stdout, stderr); + (error, stdout, stderr) => { + if (error) { + return end(error, stdout, stderr); + } MacCommand(instance, - function(error) { - if (error) return end(error); + (error) => { + if (error) { + return end(error); + } MacOpen(instance, - function(error, stdout, stderr) { - if (error) return end(error, stdout, stderr); + (error, stdout, stderr) => { + if (error) { + return end(error, stdout, stderr); + } MacResult(instance, end); - } + }, ); - } + }, ); - } + }, ); - } + }, ); - } + }, ); - } + }, ); } function MacApplet(instance, end) { - var parent = Node.path.dirname(instance.path); + const parent = Node.path.dirname(instance.path); + Node.fs.mkdir(parent, - function(error) { - if (error) return end(error); - var zip = Node.path.join(parent, 'sudo-prompt-applet.zip'); + (error) => { + if (error) { + return end(error); + } + const zip = Node.path.join(parent, 'sudo-prompt-applet.zip'); + Node.fs.writeFile(zip, APPLET, 'base64', - function(error) { - if (error) return end(error); - var command = []; + (error) => { + if (error) { + return end(error); + } + let command = []; + command.push('/usr/bin/unzip'); command.push('-o'); // Overwrite any existing applet. - command.push('"' + EscapeDoubleQuotes(zip) + '"'); - command.push('-d "' + EscapeDoubleQuotes(instance.path) + '"'); + command.push(`"${ EscapeDoubleQuotes(zip) }"`); + command.push(`-d "${ EscapeDoubleQuotes(instance.path) }"`); command = command.join(' '); Node.child.exec(command, { encoding: 'utf-8' }, end); - } + }, ); - } + }, ); } function MacCommand(instance, end) { - var path = Node.path.join( + const path = Node.path.join( instance.path, 'Contents', 'MacOS', - 'sudo-prompt-command' + 'sudo-prompt-command', ); - var script = []; + let script = []; + // Preserve current working directory: // We do this for commands that rely on relative paths. // This runs in a subshell and will not change the cwd of sudo-prompt-script. - script.push('cd "' + EscapeDoubleQuotes(Node.process.cwd()) + '"'); + script.push(`cd "${ EscapeDoubleQuotes(Node.process.cwd()) }"`); // Export environment variables: - for (var key in instance.options.env) { - var value = instance.options.env[key]; - script.push('export ' + key + '="' + EscapeDoubleQuotes(value) + '"'); + for (const key in instance.options.env) { + const value = instance.options.env[key]; + + script.push(`export ${ key }="${ EscapeDoubleQuotes(value) }"`); } script.push(instance.command); script = script.join('\n'); @@ -318,32 +380,38 @@ function MacCommand(instance, end) { } function MacIcon(instance, end) { - if (!instance.options.icns) return end(); + if (!instance.options.icns) { + return end(); + } Node.fs.readFile(instance.options.icns, - function(error, buffer) { - if (error) return end(error); - var icns = Node.path.join( + (error, buffer) => { + if (error) { + return end(error); + } + const icns = Node.path.join( instance.path, 'Contents', 'Resources', - 'applet.icns' + 'applet.icns', ); + Node.fs.writeFile(icns, buffer, end); - } + }, ); } function MacOpen(instance, end) { // We must run the binary directly so that the cwd will apply. - var binary = Node.path.join(instance.path, 'Contents', 'MacOS', 'applet'); + const binary = Node.path.join(instance.path, 'Contents', 'MacOS', 'applet'); // We must set the cwd so that the AppleScript can find the shell scripts. - var options = { - cwd: Node.path.dirname(binary), - encoding: 'utf-8' + const options = { + cwd: Node.path.dirname(binary), + encoding: 'utf-8', }; + // We use the relative path rather than the absolute path. The instance.path // may contain spaces which the cwd can handle, but which exec() cannot. - Node.child.exec('./' + Node.path.basename(binary), options, end); + Node.child.exec(`./${ Node.path.basename(binary) }`, options, end); } function MacPropertyList(instance, end) { @@ -352,53 +420,62 @@ function MacPropertyList(instance, end) { // The defaults command will be changed in an upcoming major release to only // operate on preferences domains. General plist manipulation utilities will // be folded into a different command-line program. - var plist = Node.path.join(instance.path, 'Contents', 'Info.plist'); - var path = EscapeDoubleQuotes(plist); - var key = EscapeDoubleQuotes('CFBundleName'); - var value = instance.options.name + ' Password Prompt'; + const plist = Node.path.join(instance.path, 'Contents', 'Info.plist'); + const path = EscapeDoubleQuotes(plist); + const key = EscapeDoubleQuotes('CFBundleName'); + const value = `${ instance.options.name } Password Prompt`; + if (/'/.test(value)) { return end(new Error('Value should not contain single quotes.')); } - var command = []; + let command = []; + command.push('/usr/bin/defaults'); command.push('write'); - command.push('"' + path + '"'); - command.push('"' + key + '"'); - command.push("'" + value + "'"); // We must use single quotes for value. + command.push(`"${ path }"`); + command.push(`"${ key }"`); + command.push(`'${ value }'`); // We must use single quotes for value. command = command.join(' '); Node.child.exec(command, { encoding: 'utf-8' }, end); } function MacResult(instance, end) { - var cwd = Node.path.join(instance.path, 'Contents', 'MacOS'); + const cwd = Node.path.join(instance.path, 'Contents', 'MacOS'); + Node.fs.readFile(Node.path.join(cwd, 'code'), 'utf-8', - function(error, code) { + (error, code) => { if (error) { - if (error.code === 'ENOENT') return end(new Error(PERMISSION_DENIED)); + if (error.code === 'ENOENT') { + return end(new Error(PERMISSION_DENIED)); + } end(error); } else { Node.fs.readFile(Node.path.join(cwd, 'stdout'), 'utf-8', - function(error, stdout) { - if (error) return end(error); + (error, stdout) => { + if (error) { + return end(error); + } Node.fs.readFile(Node.path.join(cwd, 'stderr'), 'utf-8', - function(error, stderr) { - if (error) return end(error); + (error, stderr) => { + if (error) { + return end(error); + } code = parseInt(code.trim(), 10); // Includes trailing newline. if (code === 0) { end(undefined, stdout, stderr); } else { error = new Error( - 'Command failed: ' + instance.command + '\n' + stderr + `Command failed: ${ instance.command }\n${ stderr }`, ); error.code = code; end(error, stdout, stderr); } - } + }, ); - } + }, ); } - } + }, ); } @@ -406,16 +483,17 @@ function Remove(path, end) { if (typeof path !== 'string' || !path.trim()) { return end(new Error('Argument path not defined.')); } - var command = []; + let command = []; + if (Node.process.platform === 'win32') { if (/"/.test(path)) { return end(new Error('Argument path cannot contain double-quotes.')); } - command.push('rmdir /s /q "' + path + '"'); + command.push(`rmdir /s /q "${ path }"`); } else { command.push('/bin/rm'); command.push('-rf'); - command.push('"' + EscapeDoubleQuotes(Node.path.normalize(path)) + '"'); + command.push(`"${ EscapeDoubleQuotes(Node.path.normalize(path)) }"`); } command = command.join(' '); Node.child.exec(command, { encoding: 'utf-8' }, end); @@ -423,45 +501,61 @@ function Remove(path, end) { function UUID(instance, end) { Node.crypto.randomBytes(256, - function(error, random) { - if (error) random = Date.now() + '' + Math.random(); - var hash = Node.crypto.createHash('SHA256'); + (error, random) => { + if (error) { + random = `${ Date.now() }${ Math.random() }`; + } + const hash = Node.crypto.createHash('SHA256'); + hash.update('sudo-prompt-3'); hash.update(instance.options.name); hash.update(instance.command); hash.update(random); - var uuid = hash.digest('hex').slice(-32); + const uuid = hash.digest('hex').slice(-32); + if (!uuid || typeof uuid !== 'string' || uuid.length !== 32) { // This is critical to ensure we don't remove the wrong temp directory. return end(new Error('Expected a valid UUID.')); } end(undefined, uuid); - } + }, ); } function ValidName(string) { // We use 70 characters as a limit to side-step any issues with Unicode // normalization form causing a 255 character string to exceed the fs limit. - if (!/^[a-z0-9 ]+$/i.test(string)) return false; - if (string.trim().length === 0) return false; - if (string.length > 70) return false; + if (!/^[a-z0-9 ]+$/i.test(string)) { + return false; + } + if (string.trim().length === 0) { + return false; + } + if (string.length > 70) { + return false; + } + return true; } function Windows(instance, callback) { - var temp = Node.os.tmpdir(); - if (!temp) return callback(new Error('os.tmpdir() not defined.')); + const temp = Node.os.tmpdir(); + + if (!temp) { + return callback(new Error('os.tmpdir() not defined.')); + } UUID(instance, - function(error, uuid) { - if (error) return callback(error); + (error, uuid) => { + if (error) { + return callback(error); + } instance.uuid = uuid; instance.path = Node.path.join(temp, instance.uuid); if (/"/.test(instance.path)) { // We expect double quotes to be reserved on Windows. // Even so, we test for this and abort if they are present. return callback( - new Error('instance.path cannot contain double-quotes.') + new Error('instance.path cannot contain double-quotes.'), ); } instance.pathElevate = Node.path.join(instance.path, 'elevate.vbs'); @@ -471,48 +565,63 @@ function Windows(instance, callback) { instance.pathStderr = Node.path.join(instance.path, 'stderr'); instance.pathStatus = Node.path.join(instance.path, 'status'); Node.fs.mkdir(instance.path, - function(error) { - if (error) return callback(error); + (error) => { + if (error) { + return callback(error); + } function end(error, stdout, stderr) { Remove(instance.path, - function(errorRemove) { - if (error) return callback(error); - if (errorRemove) return callback(errorRemove); + (errorRemove) => { + if (error) { + return callback(error); + } + if (errorRemove) { + return callback(errorRemove); + } callback(undefined, stdout, stderr); - } + }, ); } WindowsWriteExecuteScript(instance, - function(error) { - if (error) return end(error); + (error) => { + if (error) { + return end(error); + } WindowsWriteCommandScript(instance, - function(error) { - if (error) return end(error); + (error) => { + if (error) { + return end(error); + } WindowsElevate(instance, - function(error, stdout, stderr) { - if (error) return end(error, stdout, stderr); + (error, stdout, stderr) => { + if (error) { + return end(error, stdout, stderr); + } WindowsWaitForStatus(instance, - function(error) { - if (error) return end(error); + (error) => { + if (error) { + return end(error); + } WindowsResult(instance, end); - } + }, ); - } + }, ); - } + }, ); - } + }, ); - } + }, ); - } + }, ); } function WindowsElevate(instance, end) { // We used to use this for executing elevate.vbs: // var command = 'cscript.exe //NoLogo "' + instance.pathElevate + '"'; - var command = []; + let command = []; + command.push('powershell.exe'); command.push('Start-Process'); command.push('-FilePath'); @@ -520,49 +629,58 @@ function WindowsElevate(instance, end) { // Escape characters for PowerShell using single quotes: // Escape single quotes for PowerShell using backtick: // See: https://ss64.com/ps/syntax-esc.html - command.push('"\'' + instance.pathExecute.replace(/'/g, "`'") + '\'"'); + command.push(`"'${ instance.pathExecute.replace(/'/g, "`'") }'"`); command.push('-WindowStyle hidden'); command.push('-Verb runAs'); command = command.join(' '); - var child = Node.child.exec(command, { encoding: 'utf-8' }, - function(error, stdout, stderr) { + const child = Node.child.exec(command, { encoding: 'utf-8' }, + (error, stdout, stderr) => { // We used to return PERMISSION_DENIED only for error messages containing // the string 'canceled by the user'. However, Windows internationalizes // error messages (issue 96) so now we must assume all errors here are // permission errors. This seems reasonable, given that we already run the // user's command in a subshell. - if (error) return end(new Error(PERMISSION_DENIED), stdout, stderr); + if (error) { + return end(new Error(PERMISSION_DENIED), stdout, stderr); + } end(); - } + }, ); + child.stdin.end(); // Otherwise PowerShell waits indefinitely on Windows 7. } function WindowsResult(instance, end) { Node.fs.readFile(instance.pathStatus, 'utf-8', - function(error, code) { - if (error) return end(error); + (error, code) => { + if (error) { + return end(error); + } Node.fs.readFile(instance.pathStdout, 'utf-8', - function(error, stdout) { - if (error) return end(error); + (error, stdout) => { + if (error) { + return end(error); + } Node.fs.readFile(instance.pathStderr, 'utf-8', - function(error, stderr) { - if (error) return end(error); + (error, stderr) => { + if (error) { + return end(error); + } code = parseInt(code.trim(), 10); if (code === 0) { end(undefined, stdout, stderr); } else { error = new Error( - 'Command failed: ' + instance.command + '\r\n' + stderr + `Command failed: ${ instance.command }\r\n${ stderr }`, ); error.code = code; end(error, stdout, stderr); } - } + }, ); - } + }, ); - } + }, ); } @@ -573,51 +691,55 @@ function WindowsWaitForStatus(instance, end) { // PowerShell can be used to elevate on Windows 7 but it cannot wait. // powershell.exe Start-Process cmd.exe -Verb runAs -Wait Node.fs.stat(instance.pathStatus, - function(error, stats) { + (error, stats) => { if ((error && error.code === 'ENOENT') || stats.size < 2) { // Retry if file does not exist or is not finished writing. // We expect a file size of 2. That should cover at least "0\r". // We use a 1 second timeout to keep a light footprint for long-lived // sudo-prompt processes. setTimeout( - function() { + () => { // If administrator has no password and user clicks Yes, then // PowerShell returns no error and execute (and command) never runs. // We check that command output has been redirected to stdout file: Node.fs.stat(instance.pathStdout, - function(error) { - if (error) return end(new Error(PERMISSION_DENIED)); + (error) => { + if (error) { + return end(new Error(PERMISSION_DENIED)); + } WindowsWaitForStatus(instance, end); - } + }, ); }, - 1000 + 1000, ); } else if (error) { end(error); } else { end(); } - } + }, ); } function WindowsWriteCommandScript(instance, end) { - var cwd = Node.process.cwd(); + const cwd = Node.process.cwd(); + if (/"/.test(cwd)) { // We expect double quotes to be reserved on Windows. // Even so, we test for this and abort if they are present. return end(new Error('process.cwd() cannot contain double-quotes.')); } - var script = []; + let script = []; + script.push('@echo off'); // Set code page to UTF-8: script.push('chcp 65001>nul'); // Preserve current working directory: // We pass /d as an option in case the cwd is on another drive (issue 70). - script.push('cd /d "' + cwd + '"'); + script.push(`cd /d "${ cwd }"`); // Export environment variables: - for (var key in instance.options.env) { + for (const key in instance.options.env) { // "The characters <, >, |, &, ^ are special command shell characters, and // they must be preceded by the escape character (^) or enclosed in // quotation marks. If you use quotation marks to enclose a string that @@ -625,8 +747,9 @@ function WindowsWriteCommandScript(instance, end) { // part of the environment variable value." // In other words, Windows assigns everything that follows the equals sign // to the value of the variable, whereas Unix systems ignore double quotes. - var value = instance.options.env[key]; - script.push('set ' + key + '=' + value.replace(/([<>\\|&^])/g, '^$1')); + const value = instance.options.env[key]; + + script.push(`set ${ key }=${ value.replace(/([<>\\|&^])/g, '^$1') }`); } script.push(instance.command); script = script.join('\r\n'); @@ -646,13 +769,14 @@ function WindowsWriteElevateScript(instance, end) { } function WindowsWriteExecuteScript(instance, end) { - var script = []; + let script = []; + script.push('@echo off'); script.push( - 'call "' + instance.pathCommand + '"' + - ' > "' + instance.pathStdout + '" 2> "' + instance.pathStderr + '"' + `call "${ instance.pathCommand }"` + + ` > "${ instance.pathStdout }" 2> "${ instance.pathStderr }"`, ); - script.push('(echo %ERRORLEVEL%) > "' + instance.pathStatus + '"'); + script.push(`(echo %ERRORLEVEL%) > "${ instance.pathStatus }"`); script = script.join('\r\n'); Node.fs.writeFile(instance.pathExecute, script, 'utf-8', end); } diff --git a/pkg/rancher-desktop/sudo-prompt/test-concurrent.js b/pkg/rancher-desktop/sudo-prompt/test-concurrent.js index 808540c98fe..f904211a2cd 100644 --- a/pkg/rancher-desktop/sudo-prompt/test-concurrent.js +++ b/pkg/rancher-desktop/sudo-prompt/test-concurrent.js @@ -1,29 +1,31 @@ -var sudo = require('./'); -var exec = require('child_process').exec; +const sudo = require('./'); + +const exec = require('child_process').exec; function kill(end) { - if (process.platform === 'win32') return end(); + if (process.platform === 'win32') { + return end(); + } exec('sudo -k', end); } kill( - function() { - var options = { - name: 'Sudo Prompt' - }; + () => { + const options = { name: 'Sudo Prompt' }; + if (process.platform === 'win32') { var sleep = 'timeout /t 10\r\necho world'; } else { var sleep = 'sleep 10 && echo world'; } sudo.exec(sleep, options, - function(error, stdout, stderr) { + (error, stdout, stderr) => { console.log(error, stdout, stderr); - } + }, ); sudo.exec('echo hello', options, - function(error, stdout, stderr) { + (error, stdout, stderr) => { console.log(error, stdout, stderr); - } + }, ); - } + }, ); diff --git a/pkg/rancher-desktop/sudo-prompt/test.js b/pkg/rancher-desktop/sudo-prompt/test.js index 31477eeb419..91a321bc49d 100644 --- a/pkg/rancher-desktop/sudo-prompt/test.js +++ b/pkg/rancher-desktop/sudo-prompt/test.js @@ -1,30 +1,40 @@ -var assert = require('assert'); -var fs = require('fs'); -var sudo = require('./'); -var exec = require('child_process').exec; +const assert = require('assert'); +const fs = require('fs'); + +const sudo = require('./'); + +const exec = require('child_process').exec; function kill(end) { - if (process.platform === 'win32') return end(); + if (process.platform === 'win32') { + return end(); + } exec('sudo -k', end); } function icns() { - if (process.platform !== 'darwin') return undefined; - var path = '/Applications/Electron.app/Contents/Resources/Electron.icns'; + if (process.platform !== 'darwin') { + return undefined; + } + const path = '/Applications/Electron.app/Contents/Resources/Electron.icns'; + try { fs.statSync(path); + return path; } catch (error) {} + return undefined; } kill( - function() { - var options = { - env: { 'SUDO_PROMPT_TEST_ENV': 'hello world' }, + () => { + const options = { + env: { SUDO_PROMPT_TEST_ENV: 'hello world' }, icns: icns(), - name: 'Electron' + name: 'Electron', }; + if (process.platform === 'win32') { var command = 'echo %SUDO_PROMPT_TEST_ENV%'; var expected = 'hello world\r\n'; @@ -34,32 +44,34 @@ kill( var expected = 'hello world\n'; } console.log( - 'sudo.exec(' + - JSON.stringify(command) + ', ' + - JSON.stringify(options) + - ')' + `sudo.exec(${ + JSON.stringify(command) }, ${ + JSON.stringify(options) + })`, ); sudo.exec(command, options, - function(error, stdout, stderr) { + (error, stdout, stderr) => { console.log('error:', error); - console.log('stdout: ' + JSON.stringify(stdout)); - console.log('stderr: ' + JSON.stringify(stderr)); + console.log(`stdout: ${ JSON.stringify(stdout) }`); + console.log(`stderr: ${ JSON.stringify(stderr) }`); assert(error === undefined || typeof error === 'object'); assert(stdout === undefined || typeof stdout === 'string'); assert(stderr === undefined || typeof stderr === 'string'); kill( - function() { - if (error) throw error; + () => { + if (error) { + throw error; + } if (stdout !== expected) { - throw new Error('stdout != ' + JSON.stringify(expected)); + throw new Error(`stdout != ${ JSON.stringify(expected) }`); } if (stderr !== '') { throw new Error('stderr != ""'); } console.log('OK'); - } + }, ); - } + }, ); - } + }, ); From 64f9a634b4cc59e954361f0591499042ab9b96f8 Mon Sep 17 00:00:00 2001 From: Jan Dubois Date: Fri, 30 Aug 2024 13:16:50 -0700 Subject: [PATCH 3/5] Manual linter fixes Signed-off-by: Jan Dubois --- pkg/rancher-desktop/backend/lima.ts | 4 +- pkg/rancher-desktop/sudo-prompt/index.js | 41 ++++++------------- .../sudo-prompt/test-concurrent.js | 15 ++++--- pkg/rancher-desktop/sudo-prompt/test.js | 27 ++++++------ 4 files changed, 39 insertions(+), 48 deletions(-) diff --git a/pkg/rancher-desktop/backend/lima.ts b/pkg/rancher-desktop/backend/lima.ts index 026090973b8..f7c6aca16e1 100644 --- a/pkg/rancher-desktop/backend/lima.ts +++ b/pkg/rancher-desktop/backend/lima.ts @@ -40,7 +40,7 @@ import NGINX_CONF from '@pkg/assets/scripts/nginx.conf'; import { ContainerEngine, MountType, VMType } from '@pkg/config/settings'; import { getServerCredentialsPath, ServerState } from '@pkg/main/credentialServer/httpCredentialHelperServer'; import mainEvents from '@pkg/main/mainEvents'; -import sudo from '@pkg/sudo-prompt'; +import { exec as sudo } from '@pkg/sudo-prompt'; import * as childProcess from '@pkg/utils/childProcess'; import clone from '@pkg/utils/clone'; import DockerDirManager from '@pkg/utils/dockerDirManager'; @@ -1383,7 +1383,7 @@ export default class LimaBackend extends events.EventEmitter implements VMBacken await new Promise((resolve, reject) => { const iconPath = path.join(paths.resources, 'icons', 'logo-square-512.png'); - sudo.exec(command, { name: 'Rancher Desktop', icns: iconPath }, (error, stdout, stderr) => { + sudo(command, { name: 'Rancher Desktop', icns: iconPath }, (error, stdout, stderr) => { if (stdout) { console.log(`Prompt for sudo: stdout: ${ stdout }`); } diff --git a/pkg/rancher-desktop/sudo-prompt/index.js b/pkg/rancher-desktop/sudo-prompt/index.js index bbb50cfb1e7..4c4555b480f 100644 --- a/pkg/rancher-desktop/sudo-prompt/index.js +++ b/pkg/rancher-desktop/sudo-prompt/index.js @@ -43,20 +43,20 @@ function Exec() { throw new TypeError('Command should be a string.'); } if (arguments.length === 2) { - if (Node.util.isObject(arguments[1])) { + if (arguments[1] !== null && typeof arguments[1] === 'object') { options = arguments[1]; - } else if (Node.util.isFunction(arguments[1])) { + } else if (typeof arguments[1] === 'function') { end = arguments[1]; } else { throw new TypeError('Expected options or callback.'); } } else if (arguments.length === 3) { - if (Node.util.isObject(arguments[1])) { + if (arguments[1] !== null && typeof arguments[1] === 'object') { options = arguments[1]; } else { throw new TypeError('Expected options to be an object.'); } - if (Node.util.isFunction(arguments[2])) { + if (typeof arguments[2] === 'function') { end = arguments[2]; } else { throw new TypeError('Expected callback to be a function.'); @@ -220,7 +220,7 @@ function Linux(instance, end) { ); } -function LinuxBinary(instance, end) { +function LinuxBinary(_, end) { let index = 0; // We used to prefer gksudo over pkexec since it enabled a better prompt. // However, gksudo cannot run multiple commands concurrently. @@ -467,7 +467,7 @@ function MacResult(instance, end) { error = new Error( `Command failed: ${ instance.command }\n${ stderr }`, ); - error.code = code; + error.code = String(code); end(error, stdout, stderr); } }, @@ -531,11 +531,8 @@ function ValidName(string) { if (string.trim().length === 0) { return false; } - if (string.length > 70) { - return false; - } - return true; + return string.length <= 70; } function Windows(instance, callback) { @@ -673,7 +670,7 @@ function WindowsResult(instance, end) { error = new Error( `Command failed: ${ instance.command }\r\n${ stderr }`, ); - error.code = code; + error.code = String(code); end(error, stdout, stderr); } }, @@ -756,18 +753,6 @@ function WindowsWriteCommandScript(instance, end) { Node.fs.writeFile(instance.pathCommand, script, 'utf-8', end); } -function WindowsWriteElevateScript(instance, end) { - // We do not use VBScript to elevate since it does not return an error if - // the user does not grant permission. This is here for reference. - // var script = []; - // script.push('Set objShell = CreateObject("Shell.Application")'); - // script.push( - // 'objShell.ShellExecute "' + instance.pathExecute + '", "", "", "runas", 0' - // ); - // script = script.join('\r\n'); - // Node.fs.writeFile(instance.pathElevate, script, 'utf-8', end); -} - function WindowsWriteExecuteScript(instance, end) { let script = []; @@ -781,7 +766,7 @@ function WindowsWriteExecuteScript(instance, end) { Node.fs.writeFile(instance.pathExecute, script, 'utf-8', end); } -module.exports.exec = Exec; +export const exec = Exec; // We used to expect that applet.app would be included with this module. // This could not be copied when sudo-prompt was packaged within an asar file. @@ -789,10 +774,10 @@ module.exports.exec = Exec; // To recreate: "zip -r ../applet.zip Contents" (with applet.app as CWD). // The zip file must not include applet.app as the root directory so that we // can extract it directly to the target app directory. -var APPLET = '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'; +const APPLET = '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'; -var PERMISSION_DENIED = 'User did not grant permission.'; -var NO_POLKIT_AGENT = 'No polkit authentication agent found.'; +const PERMISSION_DENIED = 'User did not grant permission.'; +const NO_POLKIT_AGENT = 'No polkit authentication agent found.'; // See issue 66: -var MAX_BUFFER = 134217728; +const MAX_BUFFER = 134217728; diff --git a/pkg/rancher-desktop/sudo-prompt/test-concurrent.js b/pkg/rancher-desktop/sudo-prompt/test-concurrent.js index f904211a2cd..1424009b78e 100644 --- a/pkg/rancher-desktop/sudo-prompt/test-concurrent.js +++ b/pkg/rancher-desktop/sudo-prompt/test-concurrent.js @@ -1,6 +1,6 @@ -const sudo = require('./'); +import { exec } from 'child_process'; -const exec = require('child_process').exec; +import { exec as sudo } from './'; function kill(end) { if (process.platform === 'win32') { @@ -8,21 +8,24 @@ function kill(end) { } exec('sudo -k', end); } + kill( () => { const options = { name: 'Sudo Prompt' }; + let sleep; + if (process.platform === 'win32') { - var sleep = 'timeout /t 10\r\necho world'; + sleep = 'timeout /t 10\r\necho world'; } else { - var sleep = 'sleep 10 && echo world'; + sleep = 'sleep 10 && echo world'; } - sudo.exec(sleep, options, + sudo(sleep, options, (error, stdout, stderr) => { console.log(error, stdout, stderr); }, ); - sudo.exec('echo hello', options, + sudo('echo hello', options, (error, stdout, stderr) => { console.log(error, stdout, stderr); }, diff --git a/pkg/rancher-desktop/sudo-prompt/test.js b/pkg/rancher-desktop/sudo-prompt/test.js index 91a321bc49d..39d987a013a 100644 --- a/pkg/rancher-desktop/sudo-prompt/test.js +++ b/pkg/rancher-desktop/sudo-prompt/test.js @@ -1,9 +1,8 @@ -const assert = require('assert'); -const fs = require('fs'); +import assert from 'assert'; +import { exec } from 'child_process'; +import { statSync } from 'fs'; -const sudo = require('./'); - -const exec = require('child_process').exec; +import { exec as sudo } from './'; function kill(end) { if (process.platform === 'win32') { @@ -19,10 +18,11 @@ function icns() { const path = '/Applications/Electron.app/Contents/Resources/Electron.icns'; try { - fs.statSync(path); + statSync(path); return path; - } catch (error) {} + } catch (error) { + } return undefined; } @@ -35,13 +35,16 @@ kill( name: 'Electron', }; + let command; + let expected; + if (process.platform === 'win32') { - var command = 'echo %SUDO_PROMPT_TEST_ENV%'; - var expected = 'hello world\r\n'; + command = 'echo %SUDO_PROMPT_TEST_ENV%'; + expected = 'hello world\r\n'; } else { // We use double quotes to tell echo to preserve internal space: - var command = 'echo "$SUDO_PROMPT_TEST_ENV"'; - var expected = 'hello world\n'; + command = 'echo "$SUDO_PROMPT_TEST_ENV"'; + expected = 'hello world\n'; } console.log( `sudo.exec(${ @@ -49,7 +52,7 @@ kill( JSON.stringify(options) })`, ); - sudo.exec(command, options, + sudo(command, options, (error, stdout, stderr) => { console.log('error:', error); console.log(`stdout: ${ JSON.stringify(stdout) }`); From 681dacd9a10d6e073e6ecf967571bb1e30fb9b1e Mon Sep 17 00:00:00 2001 From: Jan Dubois Date: Fri, 30 Aug 2024 13:20:00 -0700 Subject: [PATCH 4/5] Exclude sudo-prompt from spell-checking Signed-off-by: Jan Dubois --- .github/actions/spelling/excludes.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/actions/spelling/excludes.txt b/.github/actions/spelling/excludes.txt index 14615df8fc2..2fcd2d584ef 100644 --- a/.github/actions/spelling/excludes.txt +++ b/.github/actions/spelling/excludes.txt @@ -89,6 +89,7 @@ ^\QSECURITY.md\E$ ^pkg/rancher-desktop/assets/scripts/logrotate-k3s$ ^pkg/rancher-desktop/assets/scripts/logrotate-lima-guestagent$ +^pkg/rancher-desktop/sudo-prompt/ ignore$ /translations/(?!en) ^\Qpkg/rancher-desktop/router.js\E$ From 38ab7ba0878dad3fa716c27b2b8e36e4dbe76ec3 Mon Sep 17 00:00:00 2001 From: Jan Dubois Date: Fri, 30 Aug 2024 16:39:10 -0700 Subject: [PATCH 5/5] Skip sudo-prompt tests because they require user input Signed-off-by: Jan Dubois --- jest.config.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/jest.config.js b/jest.config.js index c68f3d8bc61..0830014bb3e 100644 --- a/jest.config.js +++ b/jest.config.js @@ -30,5 +30,9 @@ module.exports = { setupFiles: [ '/pkg/rancher-desktop/utils/testUtils/setupElectron.ts', ], - testEnvironment: 'jsdom', + testEnvironment: 'jsdom', + testPathIgnorePatterns: [ + '/node_modules/', + '/pkg/rancher-desktop/sudo-prompt/', + ], };