miniprogram-ci 2.0.11 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/README.md +4 -0
- package/dist/@types/ci/build-apk.d.ts +54 -0
- package/dist/@types/ci/build-ipa.d.ts +46 -0
- package/dist/@types/ci/getcompiler.d.ts +3 -0
- package/dist/@types/ci/index.d.ts +4 -0
- package/dist/@types/ci/miniapp/androidCloudBuild.d.ts +36 -0
- package/dist/@types/ci/miniapp/archive.d.ts +27 -0
- package/dist/@types/ci/miniapp/checkBuildArgument.d.ts +21 -0
- package/dist/@types/ci/miniapp/iosCloudBuild.d.ts +36 -0
- package/dist/@types/ci/miniapp/iosLocalBuild.d.ts +13 -0
- package/dist/@types/ci/miniapp/iosTheme.d.ts +4 -0
- package/dist/@types/ci/miniapp/miniappPlugin.d.ts +33 -0
- package/dist/@types/ci/miniapp/sdkManager.d.ts +5 -0
- package/dist/@types/ci/miniapp/upload.d.ts +25 -0
- package/dist/@types/ci/miniappattr.d.ts +1 -0
- package/dist/@types/ci/upload.d.ts +1 -1
- package/dist/@types/ci/utils/ciRequest.d.ts +7 -0
- package/dist/@types/ci/utils/tools.d.ts +4 -0
- package/dist/@types/ci/utils/unpack.d.ts +3 -0
- package/dist/@types/ci/utils/wxvpkg/unpack/config.d.ts +40 -0
- package/dist/@types/ci/utils/wxvpkg/unpack/version0.d.ts +15 -0
- package/dist/@types/ci/utils/wxvpkg/unpack/version10.d.ts +18 -0
- package/dist/@types/ci/utils/wxvpkg/utils.d.ts +3 -0
- package/dist/@types/config/config.d.ts +1 -1
- package/dist/@types/config/url.config.d.ts +8 -0
- package/dist/@types/index.d.ts +3 -0
- package/dist/@types/modules/fullcompiler/app/app.d.ts +82 -0
- package/dist/@types/modules/fullcompiler/app/contactandlaunch/originalcontactbase64.d.ts +2 -0
- package/dist/@types/modules/fullcompiler/app/contactandlaunch/originallaunchbase64.d.ts +2 -0
- package/dist/@types/modules/fullcompiler/app/contactandlaunch/updateContactForSubpkg.d.ts +2 -0
- package/dist/@types/modules/fullcompiler/app/contactandlaunch/updatecontactandlaunch.d.ts +3 -0
- package/dist/@types/modules/index.d.ts +1 -2
- package/dist/@types/project/ciProject.d.ts +3 -0
- package/dist/@types/types/ci.d.ts +5 -0
- package/dist/@types/types/miniapp/index.d.ts +88 -0
- package/dist/@types/utils/locales/locales.d.ts +1 -0
- package/dist/@types/utils/locales/zh.d.ts +1 -0
- package/dist/@types/utils/miniAppI18N.d.ts +15 -0
- package/dist/@types/utils/miniappJson.d.ts +2 -0
- package/dist/@types/utils/report.d.ts +3 -1
- package/dist/@types/utils/request.d.ts +2 -0
- package/dist/@types/utils/tools.d.ts +1 -0
- package/dist/ci/android-miniapp-toolkit/dist/index.js +1 -0
- package/dist/ci/android-miniapp-toolkit/lib/apkcert.jar +0 -0
- package/dist/ci/android-miniapp-toolkit/lib/apksigner.jar +0 -0
- package/dist/ci/android-miniapp-toolkit/lib/libwinpthread-1.dll +0 -0
- package/dist/ci/android-miniapp-toolkit/lib/zipalign +0 -0
- package/dist/ci/android-miniapp-toolkit/lib/zipalign.exe +0 -0
- package/dist/ci/build-apk.js +1 -0
- package/dist/ci/build-ipa.js +1 -0
- package/dist/ci/getcompiler.js +1 -1
- package/dist/ci/index.js +1 -1
- package/dist/ci/miniapp/androidCloudBuild.js +1 -0
- package/dist/ci/miniapp/archive.js +1 -0
- package/dist/ci/miniapp/checkBuildArgument.js +1 -0
- package/dist/ci/miniapp/iosCloudBuild.js +1 -0
- package/dist/ci/miniapp/iosLocalBuild.js +1 -0
- package/dist/ci/miniapp/iosTheme.js +1 -0
- package/dist/ci/miniapp/miniappPlugin.js +1 -0
- package/dist/ci/miniapp/sdkManager.js +1 -0
- package/dist/ci/miniapp/upload.js +1 -0
- package/dist/ci/miniappattr.js +1 -0
- package/dist/ci/utils/ciRequest.js +1 -0
- package/dist/ci/utils/tools.js +1 -1
- package/dist/ci/utils/unpack.js +1 -0
- package/dist/ci/utils/wxvpkg/unpack/config.js +1 -0
- package/dist/ci/utils/wxvpkg/unpack/version0.js +1 -0
- package/dist/ci/utils/wxvpkg/unpack/version10.js +1 -0
- package/dist/ci/utils/wxvpkg/utils.js +1 -0
- package/dist/config/config.js +1 -1
- package/dist/config/url.config.js +1 -1
- package/dist/index.js +1 -1
- package/dist/modules/corecompiler/summer/graph/basegraph.js +1 -1
- package/dist/modules/corecompiler/summerCompiler.js +1 -1
- package/dist/modules/fullcompiler/app/app.js +1 -0
- package/dist/modules/fullcompiler/app/contactandlaunch/originalcontactbase64.js +1 -0
- package/dist/modules/fullcompiler/app/contactandlaunch/originallaunchbase64.js +1 -0
- package/dist/modules/fullcompiler/app/contactandlaunch/updateContactForSubpkg.js +1 -0
- package/dist/modules/fullcompiler/app/contactandlaunch/updatecontactandlaunch.js +1 -0
- package/dist/modules/nativecompiler/ios/buildCloud.js +1 -1
- package/dist/modules/nativecompiler/ios/index.js +1 -1
- package/dist/project/ciProject.js +1 -1
- package/dist/utils/locales/en.js +1 -1
- package/dist/utils/locales/zh.js +1 -1
- package/dist/utils/miniAppI18N.js +1 -0
- package/dist/utils/miniappJson.js +1 -1
- package/dist/utils/report.js +1 -1
- package/dist/utils/request.js +1 -1
- package/dist/utils/tools.js +1 -1
- package/dist/utils/zip.js +1 -1
- package/package.json +7 -5
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { MiniProgramCI } from '../types';
|
|
2
|
+
import type { CIProject } from '../project/ciProject';
|
|
3
|
+
import { IUploadOptions } from './upload';
|
|
4
|
+
export interface IBuildApkOptions extends IUploadOptions {
|
|
5
|
+
project: CIProject;
|
|
6
|
+
keyStore: string;
|
|
7
|
+
keyPass: string;
|
|
8
|
+
storePass: string;
|
|
9
|
+
keyAlias: string;
|
|
10
|
+
output: string;
|
|
11
|
+
resourceDir?: string;
|
|
12
|
+
useAab?: boolean;
|
|
13
|
+
desc?: string;
|
|
14
|
+
isUploadResourceBundle?: boolean;
|
|
15
|
+
resourceBundleVersion?: string;
|
|
16
|
+
resourceBundleDesc?: string;
|
|
17
|
+
disableCache?: boolean;
|
|
18
|
+
}
|
|
19
|
+
interface IBuildApkResult {
|
|
20
|
+
errmsg: string;
|
|
21
|
+
success: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface IBuildArchiveOpts {
|
|
24
|
+
version: string;
|
|
25
|
+
desc: string;
|
|
26
|
+
miniappPkgType: MiniProgramCI.IMiniappPkgType;
|
|
27
|
+
useCloudSync: boolean;
|
|
28
|
+
remoteDebugEnable: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface IAndroidCloudBuildInfo {
|
|
31
|
+
certificateInfo: {
|
|
32
|
+
androidCertificate: {
|
|
33
|
+
keyStore: string;
|
|
34
|
+
keyPass: string;
|
|
35
|
+
storePass: string;
|
|
36
|
+
keyAlias: string;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
miniappPkgType: MiniProgramCI.IMiniappPkgType;
|
|
40
|
+
remoteDebugEnable: boolean;
|
|
41
|
+
useCloudUpload: boolean;
|
|
42
|
+
useAab: boolean;
|
|
43
|
+
packageVersion: string;
|
|
44
|
+
packageDesc: string;
|
|
45
|
+
recordInfo: string;
|
|
46
|
+
uploadAppInfo: {
|
|
47
|
+
uploadBetaVersion: boolean;
|
|
48
|
+
userVersion: string;
|
|
49
|
+
userDesc: string;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export declare function buildApk(options: IBuildApkOptions): Promise<IBuildApkResult>;
|
|
53
|
+
export declare function generateCloudAndroidApk(ciOpts: IBuildApkOptions, buildArchiveOpts: IBuildArchiveOpts, cloudBuildInfo: IAndroidCloudBuildInfo): Promise<IBuildApkResult>;
|
|
54
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { IMiniApp } from '~/types';
|
|
2
|
+
import type { CIProject } from '../project/ciProject';
|
|
3
|
+
import { MiniProgramCI } from '../types';
|
|
4
|
+
import { IUploadOptions } from './upload';
|
|
5
|
+
export interface IBuildIpaOptions extends IUploadOptions {
|
|
6
|
+
project: CIProject;
|
|
7
|
+
output: string;
|
|
8
|
+
isDistribute?: boolean;
|
|
9
|
+
isRemoteBuild?: boolean;
|
|
10
|
+
profilePath: string;
|
|
11
|
+
certificateName: string;
|
|
12
|
+
p12Path: string;
|
|
13
|
+
p12Password: string;
|
|
14
|
+
tpnsProfilePath?: string;
|
|
15
|
+
desc?: string;
|
|
16
|
+
isUploadBeta?: boolean;
|
|
17
|
+
isUploadResourceBundle?: boolean;
|
|
18
|
+
resourceBundleVersion?: string;
|
|
19
|
+
resourceBundleDesc?: string;
|
|
20
|
+
resourceDir?: string;
|
|
21
|
+
disableCache?: boolean;
|
|
22
|
+
}
|
|
23
|
+
interface IBuildIpaResult {
|
|
24
|
+
errmsg: string;
|
|
25
|
+
success: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface IIOSCloudBuildInfo {
|
|
28
|
+
certificateInfo: {
|
|
29
|
+
signType: IMiniApp.ISignType;
|
|
30
|
+
selfCertificate: IMiniApp.ISelfCertificate;
|
|
31
|
+
};
|
|
32
|
+
miniappPkgType: MiniProgramCI.IMiniappPkgType;
|
|
33
|
+
remoteDebugEnable: boolean;
|
|
34
|
+
useCloudUpload: boolean;
|
|
35
|
+
packageVersion: string;
|
|
36
|
+
packageDesc: string;
|
|
37
|
+
recordInfo: string;
|
|
38
|
+
uploadAppInfo: {
|
|
39
|
+
uploadBetaVersion: boolean;
|
|
40
|
+
userVersion: string;
|
|
41
|
+
userDesc: string;
|
|
42
|
+
};
|
|
43
|
+
useRemoteCloudBuild: boolean;
|
|
44
|
+
}
|
|
45
|
+
export declare function buildIpa(options: IBuildIpaOptions): Promise<IBuildIpaResult>;
|
|
46
|
+
export {};
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { BaseCoreCompiler } from '../modules/corecompiler/baseCompiler';
|
|
2
2
|
import { MiniProgramCI } from '../types/ci';
|
|
3
3
|
import { OriginalCompiler } from '../modules/corecompiler/originalCompiler';
|
|
4
|
+
import { Builder } from '../modules/index';
|
|
5
|
+
import { IBuilderOptions } from '../modules';
|
|
4
6
|
export declare const getOriginalCompiler: (project: MiniProgramCI.IProject) => Promise<OriginalCompiler>;
|
|
7
|
+
export declare function getBuilder(proxyProject: MiniProgramCI.IProject, opts?: IBuilderOptions): Promise<Builder>;
|
|
5
8
|
export declare const getCompiler: (project: MiniProgramCI.IProject, setting: MiniProgramCI.ICompileSettings) => Promise<BaseCoreCompiler>;
|
|
@@ -14,6 +14,8 @@ import { getCompiledResult } from './getCompiledResult';
|
|
|
14
14
|
import { getLatestVersion } from './getLatestVersion';
|
|
15
15
|
import { getWhiteExtList } from '../utils/white_ext_list';
|
|
16
16
|
import { checkCodeQuality } from './checkCodeQuality';
|
|
17
|
+
import { buildApk } from './build-apk';
|
|
18
|
+
import { buildIpa } from './build-ipa';
|
|
17
19
|
export { Project };
|
|
18
20
|
export type { IUploadOptions };
|
|
19
21
|
export declare const upload: typeof _upload;
|
|
@@ -35,5 +37,7 @@ export { getLatestVersion };
|
|
|
35
37
|
export { analyseCode };
|
|
36
38
|
export { checkCodeQuality };
|
|
37
39
|
export { getWhiteExtList };
|
|
40
|
+
export { buildApk };
|
|
41
|
+
export { buildIpa };
|
|
38
42
|
export declare const workletVersion: any;
|
|
39
43
|
export declare function cleanCache(): void;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { IBuildArchiveOpts, IAndroidCloudBuildInfo, IBuildApkOptions } from '../build-apk';
|
|
2
|
+
declare class AndroidCloudBuild {
|
|
3
|
+
private baseDir;
|
|
4
|
+
private aab;
|
|
5
|
+
private infoPath;
|
|
6
|
+
private androidDir;
|
|
7
|
+
private res;
|
|
8
|
+
private md5;
|
|
9
|
+
private output;
|
|
10
|
+
private skipCheckRemote;
|
|
11
|
+
private packageName;
|
|
12
|
+
private project;
|
|
13
|
+
private ciOpts;
|
|
14
|
+
constructor(aab: boolean, ciOpts: IBuildApkOptions);
|
|
15
|
+
build(options: IBuildArchiveOpts, output: string, certificate: IAndroidCloudBuildInfo['certificateInfo']['androidCertificate']): Promise<string>;
|
|
16
|
+
private init;
|
|
17
|
+
private buildCode;
|
|
18
|
+
private checkBase;
|
|
19
|
+
private checkLocal;
|
|
20
|
+
private checkRemote;
|
|
21
|
+
private buildBase;
|
|
22
|
+
private buildResult;
|
|
23
|
+
private genZip;
|
|
24
|
+
private createTask;
|
|
25
|
+
private waitForRemoteReady;
|
|
26
|
+
private getTask;
|
|
27
|
+
private getTaskList;
|
|
28
|
+
private downloadBase;
|
|
29
|
+
private downloadRes;
|
|
30
|
+
private downloadPkg;
|
|
31
|
+
private getTaskResultUrl;
|
|
32
|
+
private getPackageName;
|
|
33
|
+
}
|
|
34
|
+
export declare const getAndroidApkBuild: (ciOpts: IBuildApkOptions) => AndroidCloudBuild;
|
|
35
|
+
export declare const getAndroidAabBuild: (ciOpts: IBuildApkOptions) => AndroidCloudBuild;
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { IBuildApkOptions } from '../build-apk';
|
|
2
|
+
import { MiniProgramCI } from '../../types';
|
|
3
|
+
import { IBuildIpaOptions } from '../build-ipa';
|
|
4
|
+
interface IMiniappOptions {
|
|
5
|
+
miniappPkgType: MiniProgramCI.IMiniappPkgType;
|
|
6
|
+
lanIpPort?: string;
|
|
7
|
+
useCloudSync?: boolean;
|
|
8
|
+
remoteDebugEnable: boolean;
|
|
9
|
+
archVersion?: 0 | 1;
|
|
10
|
+
needClientJsExtInfo?: 0 | 1;
|
|
11
|
+
}
|
|
12
|
+
interface IUploadArchiveInfo {
|
|
13
|
+
useSubPkg: boolean;
|
|
14
|
+
devtoolsUrl?: string;
|
|
15
|
+
remoteDebugConfig?: any;
|
|
16
|
+
body?: any;
|
|
17
|
+
}
|
|
18
|
+
export interface IBuildArchiveOptions {
|
|
19
|
+
version: string;
|
|
20
|
+
desc: string;
|
|
21
|
+
targetPlatform: 'mini-android' | 'mini-ios';
|
|
22
|
+
outputDir: string;
|
|
23
|
+
miniappOptions: IMiniappOptions;
|
|
24
|
+
uploadArchiveInfo?: IUploadArchiveInfo;
|
|
25
|
+
}
|
|
26
|
+
export declare function buildProjectArchive(ciOpts: IBuildApkOptions | IBuildIpaOptions, opts: IBuildArchiveOptions): Promise<void>;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { IBuildApkOptions, IAndroidCloudBuildInfo, IBuildArchiveOpts } from '../build-apk';
|
|
2
|
+
import type { IIOSCloudBuildInfo, IBuildIpaOptions } from '../build-ipa';
|
|
3
|
+
export declare const defaulPasswordPlaceHolderForCache = "*******";
|
|
4
|
+
export declare const publicKeyForP12password = "-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRsmgcQqaCjlFVITfAzIWsjpxj\nynoXetXQhmIspi86V6rtq2BENl9HrrX18XsQ8Qn6jsNJ6mtvSUUflvpLnEQMM1M7\nwagNazL0A2KFw97Br9sE+CVJdctC/dmportNjrbekNYHacT1bL+GDpatAaD4Pnwy\nx3yJsmqx3tJun1G++wIDAQAB\n-----END PUBLIC KEY-----\n";
|
|
5
|
+
export interface IIOSRemoteCloudBuildInfo {
|
|
6
|
+
useRemote?: boolean;
|
|
7
|
+
p12?: string;
|
|
8
|
+
p12password?: string;
|
|
9
|
+
p12passwordEncrypted?: string;
|
|
10
|
+
certificate?: string;
|
|
11
|
+
profile?: string;
|
|
12
|
+
tpnsProfile?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const transformAndroidBuildArgument: (opts: IBuildApkOptions) => {
|
|
15
|
+
buildArchiveOpts: IBuildArchiveOpts;
|
|
16
|
+
cloudBuildInfo: IAndroidCloudBuildInfo;
|
|
17
|
+
};
|
|
18
|
+
export declare const transformIOSBuildArgument: (opts: IBuildIpaOptions) => {
|
|
19
|
+
buildArchiveOpts: IBuildArchiveOpts;
|
|
20
|
+
cloudBuildInfo: IIOSCloudBuildInfo;
|
|
21
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { IMiniApp } from '~/types';
|
|
2
|
+
import { IBuildIpaOptions } from '../build-ipa';
|
|
3
|
+
import { IBuildArchiveOpts } from '../build-apk';
|
|
4
|
+
declare class IOSCloudBuild {
|
|
5
|
+
private baseDir;
|
|
6
|
+
private materialDir;
|
|
7
|
+
private iOSDir;
|
|
8
|
+
private iPADir;
|
|
9
|
+
private res;
|
|
10
|
+
private md5;
|
|
11
|
+
private output;
|
|
12
|
+
private cloudBuildOptions?;
|
|
13
|
+
private buildSuccess;
|
|
14
|
+
private logAbPath;
|
|
15
|
+
private project;
|
|
16
|
+
private ciOpts;
|
|
17
|
+
constructor(ciOpts: IBuildIpaOptions);
|
|
18
|
+
build(options: IBuildArchiveOpts, cloudBuildOptions: IMiniApp.IIOSBuildCloudArgs, output?: string): Promise<string>;
|
|
19
|
+
private init;
|
|
20
|
+
private packAllFilesInDir;
|
|
21
|
+
private buildMaterial;
|
|
22
|
+
private buildCode;
|
|
23
|
+
private buildBase;
|
|
24
|
+
private buildResult;
|
|
25
|
+
private createTask;
|
|
26
|
+
private waitForRemoteReady;
|
|
27
|
+
private getTask;
|
|
28
|
+
private getTaskList;
|
|
29
|
+
private downloadBase;
|
|
30
|
+
private downloadIPA;
|
|
31
|
+
private getTaskResultUrl;
|
|
32
|
+
private getBundleId;
|
|
33
|
+
private getFinalIpaName;
|
|
34
|
+
}
|
|
35
|
+
export declare const getIOSCloudBuild: (ciOpts: IBuildIpaOptions) => IOSCloudBuild;
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IMiniApp } from '~/types';
|
|
2
|
+
import { IBuildIpaOptions } from '../build-ipa';
|
|
3
|
+
import { IBuildArchiveOpts } from '../build-apk';
|
|
4
|
+
declare class IOSLocalBuild {
|
|
5
|
+
private iosDir;
|
|
6
|
+
private project;
|
|
7
|
+
private ciOpts;
|
|
8
|
+
constructor(ciOpts: IBuildIpaOptions);
|
|
9
|
+
buildArchive(demoIpaPath: string, opts: IBuildArchiveOpts): Promise<void>;
|
|
10
|
+
build(archiveOpts: IBuildArchiveOpts, buildArgs: IMiniApp.IIOSBuildCloudArgs, demoIpaPath: string): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export declare const getIOSLocalBuild: (ciOpts: IBuildIpaOptions) => IOSLocalBuild;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { IBuildIpaOptions } from '../build-ipa';
|
|
2
|
+
export declare enum OS_TYPE_ENUM {
|
|
3
|
+
IOS = "1",
|
|
4
|
+
ANDROID = "2"
|
|
5
|
+
}
|
|
6
|
+
declare class MiniappPluginManager {
|
|
7
|
+
private WeappMiniApp;
|
|
8
|
+
private project;
|
|
9
|
+
private ciOpts;
|
|
10
|
+
constructor(ciOpts: IBuildIpaOptions);
|
|
11
|
+
getUsedPluginVersionInfo(data: {
|
|
12
|
+
osType: OS_TYPE_ENUM;
|
|
13
|
+
pluginList: Array<{
|
|
14
|
+
plugin_id: string;
|
|
15
|
+
version: string;
|
|
16
|
+
}>;
|
|
17
|
+
}): Promise<any>;
|
|
18
|
+
downloadMiniAppPlugin(data: {
|
|
19
|
+
osType: OS_TYPE_ENUM;
|
|
20
|
+
pluginList: Array<{
|
|
21
|
+
plugin_id: string;
|
|
22
|
+
version: string;
|
|
23
|
+
}>;
|
|
24
|
+
}): Promise<unknown>;
|
|
25
|
+
removePluginDir(type: OS_TYPE_ENUM, pluginId: string): Promise<void>;
|
|
26
|
+
downloadPlugin(type: OS_TYPE_ENUM): Promise<void>;
|
|
27
|
+
getPluginDirList(type: OS_TYPE_ENUM): Promise<{
|
|
28
|
+
dir: string;
|
|
29
|
+
pluginId: any;
|
|
30
|
+
}[]>;
|
|
31
|
+
}
|
|
32
|
+
export declare const getMiniappPluginManager: (ciOpts: IBuildIpaOptions) => MiniappPluginManager;
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { IBuildArchiveOptions } from './archive';
|
|
2
|
+
import { IBuildApkOptions } from '../build-apk';
|
|
3
|
+
import { IBuildIpaOptions } from '../build-ipa';
|
|
4
|
+
export declare const SIGNATURE_FILE_NAME = "ci.signature";
|
|
5
|
+
type IMiniAppUploadArchiveOptions = (IBuildApkOptions | IBuildIpaOptions) & IBuildArchiveOptions;
|
|
6
|
+
type TSubPackageInfo = Array<{
|
|
7
|
+
name: string;
|
|
8
|
+
size: number;
|
|
9
|
+
}>;
|
|
10
|
+
type TPluginInfo = Array<{
|
|
11
|
+
pluginProviderAppid: string;
|
|
12
|
+
version: string;
|
|
13
|
+
size: number;
|
|
14
|
+
}>;
|
|
15
|
+
interface IUploadResult {
|
|
16
|
+
subPackageInfo?: TSubPackageInfo;
|
|
17
|
+
pluginInfo?: TPluginInfo;
|
|
18
|
+
devPluginId?: string;
|
|
19
|
+
useSubPkg?: boolean;
|
|
20
|
+
}
|
|
21
|
+
interface IInnerUploadResult extends IUploadResult {
|
|
22
|
+
respBody?: any;
|
|
23
|
+
}
|
|
24
|
+
export declare function upload(options: IMiniAppUploadArchiveOptions): Promise<IInnerUploadResult>;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getMiniappAttr(privateKey: string, appid: string): Promise<any>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function ciSimpleRequest({ privateKey, appid, cgi, robot }: {
|
|
2
|
+
privateKey: string;
|
|
3
|
+
appid: string;
|
|
4
|
+
cgi: string;
|
|
5
|
+
robot: number;
|
|
6
|
+
}, data?: any): Promise<any>;
|
|
7
|
+
export declare function ciCustomRequest(url: string, body: any, headers?: any): Promise<any>;
|
|
@@ -4,3 +4,7 @@ export declare function isGameApp(project: MiniProgramCI.IProject): boolean;
|
|
|
4
4
|
export declare const checkIsUseCompilerPlugins: (project: MiniProgramCI.IProject) => boolean | undefined;
|
|
5
5
|
export declare function isUndefined(value: any): boolean;
|
|
6
6
|
export declare function formatCISetting(project: MiniProgramCI.IProject, setting: MiniProgramCI.ICompileSettings): MiniProgramDevtools.IProjectSetting;
|
|
7
|
+
export declare function getMiniappCacheDir(): string;
|
|
8
|
+
export declare function getMiniappIOSCacheDir(): string;
|
|
9
|
+
export declare function clearIOSCacheDir(): void;
|
|
10
|
+
export declare function clearAndroidCacheDir(): void;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare const ConfigCommon: {
|
|
2
|
+
SPECIAL_START_BEGIN: number;
|
|
3
|
+
SPECIAL_START_END: number;
|
|
4
|
+
VERSION_BEGIN: number;
|
|
5
|
+
VERSION_END: number;
|
|
6
|
+
INFO_LENGTH_BEGIN: number;
|
|
7
|
+
INFO_LENGTH_END: number;
|
|
8
|
+
};
|
|
9
|
+
export declare const ConfigV0: {
|
|
10
|
+
FILE_LENGTH_BEGIN: number;
|
|
11
|
+
FILE_LENGTH_END: number;
|
|
12
|
+
SPECIAL_END_BEGIN: number;
|
|
13
|
+
SPECIAL_END_END: number;
|
|
14
|
+
FILE_COUNT_BEGIN: number;
|
|
15
|
+
FILE_COUNT_END: number;
|
|
16
|
+
FILF_INFO_BEGIN: number;
|
|
17
|
+
SPECIAL_START_BEGIN: number;
|
|
18
|
+
SPECIAL_START_END: number;
|
|
19
|
+
VERSION_BEGIN: number;
|
|
20
|
+
VERSION_END: number;
|
|
21
|
+
INFO_LENGTH_BEGIN: number;
|
|
22
|
+
INFO_LENGTH_END: number;
|
|
23
|
+
};
|
|
24
|
+
export declare const ConfigV10: {
|
|
25
|
+
INDEX_LENGTH_BEGIN: number;
|
|
26
|
+
INDEX_LENGTH_END: number;
|
|
27
|
+
FILE_LENGTH_BEGIN: number;
|
|
28
|
+
FILE_LENGTH_END: number;
|
|
29
|
+
SPECIAL_END_BEGIN: number;
|
|
30
|
+
SPECIAL_END_END: number;
|
|
31
|
+
FILE_COUNT_BEGIN: number;
|
|
32
|
+
FILE_COUNT_END: number;
|
|
33
|
+
FILF_INFO_BEGIN: number;
|
|
34
|
+
SPECIAL_START_BEGIN: number;
|
|
35
|
+
SPECIAL_START_END: number;
|
|
36
|
+
VERSION_BEGIN: number;
|
|
37
|
+
VERSION_END: number;
|
|
38
|
+
INFO_LENGTH_BEGIN: number;
|
|
39
|
+
INFO_LENGTH_END: number;
|
|
40
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
interface IFileInfo {
|
|
3
|
+
name: string;
|
|
4
|
+
offset: number;
|
|
5
|
+
length: number;
|
|
6
|
+
}
|
|
7
|
+
interface IFileCache {
|
|
8
|
+
[path: string]: Buffer;
|
|
9
|
+
}
|
|
10
|
+
export declare function getFileInfoLength(buffer: Buffer): number;
|
|
11
|
+
export declare function getFileContentLength(buffer: Buffer): number;
|
|
12
|
+
export declare function getFileCount(buffer: Buffer): number;
|
|
13
|
+
export declare function getFileInfo(buffer: Buffer): IFileInfo[];
|
|
14
|
+
export default function unpack(buffer: Buffer, dist?: string): IFileCache;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
interface IFileInfo {
|
|
3
|
+
name: string;
|
|
4
|
+
encType: number;
|
|
5
|
+
mode: number;
|
|
6
|
+
offset: number;
|
|
7
|
+
length: number;
|
|
8
|
+
}
|
|
9
|
+
interface IFileCache {
|
|
10
|
+
[path: string]: Buffer;
|
|
11
|
+
}
|
|
12
|
+
export declare function getFileInfoLength(buffer: Buffer): number;
|
|
13
|
+
export declare function getFileIndexLength(buffer: Buffer): number;
|
|
14
|
+
export declare function getFileContentLength(buffer: Buffer): number;
|
|
15
|
+
export declare function getFileCount(buffer: Buffer): number;
|
|
16
|
+
export declare function getFileInfo(buffer: Buffer): IFileInfo[];
|
|
17
|
+
export default function unpack(buffer: Buffer, dist?: string): IFileCache;
|
|
18
|
+
export {};
|
|
@@ -23,3 +23,11 @@ export declare const getUploadToken: string;
|
|
|
23
23
|
export declare const testSourceURL: string;
|
|
24
24
|
export declare const testSourceNewFeatureURL: string;
|
|
25
25
|
export declare const getAsyncResult: string;
|
|
26
|
+
export declare const getSdkIntInfo: string;
|
|
27
|
+
export declare const uploadCloudBuildResourcePack: string;
|
|
28
|
+
export declare const getCloudBuildTaskList: string;
|
|
29
|
+
export declare const getCloudBuildPkgUrl: string;
|
|
30
|
+
export declare const miniappUpload: string;
|
|
31
|
+
export declare const getPkgWxapkg: string;
|
|
32
|
+
export declare const downloadMiniAppPlugin: string;
|
|
33
|
+
export declare const getUsedPluginVersionInfo: string;
|
package/dist/@types/index.d.ts
CHANGED
|
@@ -19,6 +19,8 @@ import * as adroidDeviceUtils from './modules/nativecompiler/android/device';
|
|
|
19
19
|
import * as iosDeviceUtils from './modules/nativecompiler/ios/device';
|
|
20
20
|
import * as miniappBuilder from './utils/miniapp-builder';
|
|
21
21
|
import packOptionsHelper from './utils/packOptionsHelper';
|
|
22
|
+
import MiniAppI18N from './utils/miniAppI18N';
|
|
23
|
+
import * as MiniAppJson from './utils/miniappJson';
|
|
22
24
|
export { BaseProject, CIProject as Project, CIProject, DevtoolsProject, WebProject, PreCompileProject, };
|
|
23
25
|
export { BaseCoreCompiler, OriginalCompiler, SummerCompiler, ICompilerStatus, ICompileOptions, Builder, };
|
|
24
26
|
export * from './modules/corecompiler/original';
|
|
@@ -26,3 +28,4 @@ export declare const workletVersion: any;
|
|
|
26
28
|
export { getWhiteExtList, proxy, locales, isHexColor, DefaultProjectAttr, JSON_CONTENT_ERR, compileTypeConfig, generateMD5, mkdirSync, normalizePath, checkIsInSubPackage, getHelperOutputPath, isValidHelperFunc, getHelperName, getHelperContent, getHelperDeps, getBabelHelperVersion, getBabelHelperDepMap, escapeQuot, escapeScript, getSummerPluginConfig, packOptionsHelper, };
|
|
27
29
|
export { adroidDeviceUtils, iosDeviceUtils, miniappBuilder, };
|
|
28
30
|
export * from './ci/index';
|
|
31
|
+
export { MiniAppI18N, MiniAppJson, };
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { AppJSON, BaseInfo } from '../../../types';
|
|
2
|
+
interface IStandaloneAppJson {
|
|
3
|
+
miniModuleId: string;
|
|
4
|
+
nickname: string;
|
|
5
|
+
device_orientation: string;
|
|
6
|
+
appVersion: string | number;
|
|
7
|
+
pkgInfos: Array<{
|
|
8
|
+
miniModuleId: string;
|
|
9
|
+
pkgType: number;
|
|
10
|
+
appVersion: number;
|
|
11
|
+
versionType: number;
|
|
12
|
+
moduleName?: string;
|
|
13
|
+
pkgMd5: string;
|
|
14
|
+
assetPath: string;
|
|
15
|
+
signVersion: number;
|
|
16
|
+
signFilePath: string;
|
|
17
|
+
}>;
|
|
18
|
+
contactBase64: string;
|
|
19
|
+
launchBase64: string;
|
|
20
|
+
cpfWxaAttrSyncResponse: string;
|
|
21
|
+
version: number;
|
|
22
|
+
devtoolsLocalServerUrl?: string;
|
|
23
|
+
remoteDebugWsEndpoint?: string;
|
|
24
|
+
miniappPkgType: IMiniappPkgType;
|
|
25
|
+
devtoolsPlatform: 'Windows' | 'Mac';
|
|
26
|
+
appClientPortForRemoteDebugServer?: string;
|
|
27
|
+
appClientPortForotReloadServer?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface IPkgModule {
|
|
30
|
+
name: string;
|
|
31
|
+
filePath: string;
|
|
32
|
+
pkgType: number;
|
|
33
|
+
md5: string;
|
|
34
|
+
size: number;
|
|
35
|
+
independent: boolean;
|
|
36
|
+
page_count: number;
|
|
37
|
+
alias: string[];
|
|
38
|
+
wxacode_lib_info_list: string[];
|
|
39
|
+
without_lib_md5: string;
|
|
40
|
+
separated_plugin_list: string[];
|
|
41
|
+
md5_list: string[];
|
|
42
|
+
widget_list: [];
|
|
43
|
+
buildVersion?: number;
|
|
44
|
+
signVersion?: number;
|
|
45
|
+
signFilePath?: string;
|
|
46
|
+
}
|
|
47
|
+
export declare enum IMiniappPkgType {
|
|
48
|
+
'Release' = "Release",
|
|
49
|
+
'Debug' = "Debug",
|
|
50
|
+
'HotReload' = "HotReload"
|
|
51
|
+
}
|
|
52
|
+
export declare enum IMiniappConnectType {
|
|
53
|
+
'USB' = "USB",
|
|
54
|
+
'LAN' = "LAN"
|
|
55
|
+
}
|
|
56
|
+
export interface ISubPkg {
|
|
57
|
+
file: string;
|
|
58
|
+
type: number;
|
|
59
|
+
name: string;
|
|
60
|
+
signVersion: number;
|
|
61
|
+
signFile: string;
|
|
62
|
+
md5: string;
|
|
63
|
+
versionType?: IMiniappPkgType;
|
|
64
|
+
}
|
|
65
|
+
export declare function packAllPackagesToWxapkg(distPath: string, appJson: AppJSON.IAppJSON, appid: string): Promise<{
|
|
66
|
+
wholePkgMd5: string;
|
|
67
|
+
moduleListConfig: IPkgModule[];
|
|
68
|
+
}>;
|
|
69
|
+
interface ISubPackageAppInfo {
|
|
70
|
+
miniModuleId: string;
|
|
71
|
+
nickName: string;
|
|
72
|
+
brandIconURL: string;
|
|
73
|
+
pageOrientation: BaseInfo.PageOrientation;
|
|
74
|
+
buildVersion: number;
|
|
75
|
+
subpkgs: ISubPkg[];
|
|
76
|
+
contact: string;
|
|
77
|
+
cpfWxaAttrSyncResponse: string;
|
|
78
|
+
miniappPkgType: IMiniappPkgType;
|
|
79
|
+
miniappConnectType?: IMiniappConnectType;
|
|
80
|
+
}
|
|
81
|
+
export declare function generateSubPkgAppInfoJson(data: ISubPackageAppInfo): Promise<IStandaloneAppJson>;
|
|
82
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const originalContactBase64 = "CgYIABICCgASFwiEAhCFroDAARjX44GVBiDX44GVBihXGmIKCVNpZ25hdHVyZRJV5bCP56iL5bqP5a6Y5pa556S65L6LRGVtb++8jOWwseW9k+WJjeW3suaUr+aMgeeahOaOpeWPo+iDveWKm+WPiue7hOS7tui/m+ihjOWxleekuuOAghoQCgpWZXJpZnlGbGFnEgIyNBpjCgpWZXJpZnlJbmZvElXlsI/nqIvluo/lrpjmlrnnpLrkvotEZW1v77yM5bCx5b2T5YmN5bey5pSv5oyB55qE5o6l5Y+j6IO95Yqb5Y+K57uE5Lu26L+b6KGM5bGV56S644CCGhsKCE5pY2tOYW1lEg/lsI/nqIvluo/npLrkvosaHwoIVXNlck5hbWUSE2doX2Q0M2Y2OTNjYTMxZkBhcHAaCQoFQWxpYXMSABqlAQoMQnJhbmRJY29uVVJMEpQBaHR0cDovL21tYml6LnFwaWMuY24vbW1iaXpfcG5nL0NyNVZ4WmZZZ0FLTW9UZUVwdVhpYUs3QXNUMVJXQjBpYTBhbjlXRDhQVE9GcVdYM2ljSzU2bU5rM3hNVExpY0llV3dqY05Qa0U1MU1IS0ZzaWFUdjBwSXNyY1EvNjQwP3d4X2ZtdD1wbmcmd3hmcm9tPTIwMBoOCglCaW5kS0ZVaW4SATAaEgoJUFlJbml0aWFsEgVYQ1hTTBobCgdRdWFuUGluEhB4aWFvY2hlbmd4dXNoaWxpGmUKDUJpZ0hlYWRJbWdVcmwSVGh0dHA6Ly93eC5xbG9nby5jbi9tbWhlYWQvUTNhdUhnend6TTdGbGwzRjcxYk9XdVV2SkNaV28xeWlhMmd0WG1pYURNY0FDMGhJc0FnSjJVbFEvMBppCg9TbWFsbEhlYWRJbWdVcmwSVmh0dHA6Ly93eC5xbG9nby5jbi9tbWhlYWQvUTNhdUhnend6TTdGbGwzRjcxYk9XdVV2SkNaV28xeWlhMmd0WG1pYURNY0FDMGhJc0FnSjJVbFEvMTMyGg0KCFd4QXBwT3B0EgEwGq4BCgxWZXJpZnlTb3VyY2USnQF7IkRlc2NyaXB0aW9uIjoiIiwiSW50cm9VcmwiOiIiLCJOYW1lIjoiIiwiVHlwZSI6MCwiVmVyaWZ5Qml6VHlwZSI6MCwiSXNTaG93VmVyaWZ5Qml6VHlwZSI6MCwiSXNTaG93VmVyaWZ5SWNvbiI6MCwiVmVyaWZ5U3ViVGl0bGUiOiIiLCJWZXJpZnlDdXN0b21lclR5cGUiOjF9GnoKDlJlZ2lzdGVyU291cmNlEmh7IlJlZ2lzdGVyQm9keSI6Iua3seWcs+W4guiFvuiur+iuoeeul+acuuezu+e7n+aciemZkOWFrOWPuCIsIkludHJvVXJsIjoiIiwiSXNDbG9zZSI6MCwiQWJvdXRCaXpVcmwiOiIifRrCHQoKV3hhQXBwSW5mbxKzHXsiQXBwaWQiOiJ3eGU1ZjUyOTAyY2Y0ZGU4OTYiLCJBcHBTdGF0ZSI6MCwiRXh0ZXJuSW5mbyI6IiIsIk5ldHdvcmsiOnsiUmVxdWVzdERvbWFpbiI6WyJodHRwczpcL1wvc3RyZWFtLndlaXhpbi5xcS5jb20iLCJodHRwczpcL1wvNTQzMzA2NzkucWNsb3VkLmxhIiwiaHR0cHM6XC9cLzE0NTkyNjE5LnFjbG91ZC5sYSIsImh0dHBzOlwvXC9vcGVuLndlaXhpbi5xcS5jb20iLCJodHRwczpcL1wvd2VhcHAubGlua3FqLmNvbSIsImh0dHBzOlwvXC9tcC53ZWl4aW4ucXEuY29tIiwiaHR0cHM6XC9cL3d4YXJkbS53ZWl4aW4ucXEuY29tIiwiaHR0cHM6XC9cLzE0NTkyNjE5LnFjbG91ZC5sYSIsImh0dHBzOlwvXC9zZXJ2aWNld2VjaGF0LmNvbSIsImh0dHA6XC9cLzEwOS4yNDQuMTQ1LjE5OSIsImh0dHA6XC9cLzE3NS4yNC4yMTguMTYyIiwiaHR0cHM6XC9cL2Nsb3VkYmFzZS5zZXJ2aWNld2VjaGF0LmNvbSJdLCJXc1JlcXVlc3REb21haW4iOlsid3NzOlwvXC9zdHJlYW0ud2VpeGluLnFxLmNvbSIsIndzczpcL1wvd3MucWNsb3VkLmNvbSIsIndzczpcL1wvMTQ1OTI2MTkucWNsb3VkLmxhIiwid3NzOlwvXC8xNDU5MjYxOS53cy5xY2xvdWQubGEiLCJ3c3M6XC9cL2VjaG8ud2Vic29ja2V0Lm9yZyIsIndzczpcL1wvdGNiLXdzLnRlbmNlbnRjbG91ZGFwaS5jb20iLCJ3c3M6XC9cL2FwLXNoYW5naGFpLnRjYi13cy50ZW5jZW50Y2xvdWRhcGkuY29tIiwid3NzOlwvXC9ncmF5LmFwLXNoYW5naGFpLnRjYi13cy50ZW5jZW50Y2xvdWRhcGkuY29tIiwid3NzOlwvXC92aXAuYXAtc2hhbmdoYWkudGNiLXdzLnRlbmNlbnRjbG91ZGFwaS5jb20iXSwiVXBsb2FkRG9tYWluIjpbImh0dHBzOlwvXC9zdHJlYW0ud2VpeGluLnFxLmNvbSIsImh0dHBzOlwvXC81NDMzMDY3OS5xY2xvdWQubGEiLCJodHRwczpcL1wvMTQ1OTI2MTkucWNsb3VkLmxhIiwiaHR0cHM6XC9cL3RjYi1hcGkudGVuY2VudGNsb3VkYXBpLmNvbSJdLCJEb3dubG9hZERvbWFpbiI6WyJodHRwczpcL1wvc3RyZWFtLndlaXhpbi5xcS5jb20iLCJodHRwczpcL1wvNTQzMzA2NzkucWNsb3VkLmxhIiwiaHR0cHM6XC9cLzE0NTkyNjE5LnFjbG91ZC5sYSIsImh0dHBzOlwvXC9zZXJ2aWNld2VjaGF0LmNvbSIsImh0dHBzOlwvXC83NDY1LXRlc3QtZjBiMTAyLTEyNTgyMTE4MTgudGNiLnFjbG91ZC5sYSIsImh0dHBzOlwvXC83MjY1LXJlbGVhc2UtYjg2MDk2LTEyNTgyMTE4MTgudGNiLnFjbG91ZC5sYSIsImh0dHBzOlwvXC83MDZmLXBvc3RwYXktMmc1aG0yb3hiYmI3MjFhNC0xMjU4MjExODE4LnRjYi5xY2xvdWQubGEiLCJodHRwczpcL1wvNjM2Zi1jb250YWluZXJ0ZXN0LTBnbXczdWxuZDhkOWJjN2ItMTI1ODIxMTgxOC50Y2IucWNsb3VkLmxhIiwiaHR0cHM6XC9cLzc0NjUtdGVzdC1wYXktOGdlNDZ1eXRhODZhZjc0OC0xMjU4MjExODE4LnRjYi5xY2xvdWQubGEiXSwiQml6RG9tYWluIjpbImh0dHBzOlwvXC9kZXZlbG9wZXJzLndlaXhpbi5xcS5jb20iXSwiVURQRG9tYWluIjpbInVkcDpcL1wvcXEuY29tIl0sIlRDUERvbWFpbiI6W10sIlByZWZldGNoRE5TRG9tYWluIjpbXSwiTmV3UmVxdWVzdERvbWFpbiI6W10sIk5ld1dzUmVxdWVzdERvbWFpbiI6W10sIk5ld1VwbG9hZERvbWFpbiI6W10sIk5ld0Rvd25sb2FkRG9tYWluIjpbXSwiTmV3Qml6RG9tYWluIjpbXSwiTmV3VURQRG9tYWluIjpbXSwiTmV3VENQRG9tYWluIjpbXSwiTmV3UHJlZmV0Y2hETlNEb21haW4iOltdfSwiUnVubmluZ0ZsYWdJbmZvIjp7IlJ1bm5pbmdGbGFnIjowLCJTdG9wU2VydmljZVRpbWUiOjE0NzIwNDE3NjksIkFwcEZvcmJpZGRlblJlYXNvbiI6MCwiU2Vzc2lvbk9wZW5Gb3JiaWRkZW5SZWFzb24iOjAsIlRpbWVsaW5lT3BlbkZvcmJpZGRlblJlYXNvbiI6MCwiQmVlblByb21wdFRpbWVzIjowLCJRcmNvZGVPcGVuRm9yYmlkZGVuUmVhc29uIjowLCJBcHBPcGVuRm9yYmlkZGVuVXJsIjoiIiwiQ2FuTm90U3Rhcld4YUJlZm9yZVRpbWUiOjB9LCJBcHBDb25maWciOnsiVmVyc2lvbkxpc3QiOlt7InR5cGUiOjEsInZlcnNpb24iOjYyfV19LCJPcmlnaW5JY29uSW1hZ2VVcmwiOiIiLCJSb3VuZGVkU3F1YXJlSWNvblVybCI6Imh0dHA6XC9cL21tYml6LnFwaWMuY25cL21tYml6X3BuZ1wvQ3I1VnhaZllnQUtNb1RlRXB1WGlhSzdBc1QxUldCMGlhMHFSdWlhaHBvUXhBYlNuaWJ5QjkzcjNYZzBIMm01UEdQUU5MRzl2N2E3RlpaSG91b25RRjNGd1pRXC8wP3d4X2ZtdD1wbmciLCJBcHBSb2xlIjowLCJBcHBTZXJ2aWNlVHlwZSI6MCwiVGVtcGxhdGUiOlt7ImJ1c2luZXNzX2lkIjoxLCJrZXkiOiJ0ZXN0a2V5MDAxIiwidmFsdWUiOiJDdXJyZW50VGltZSB7e3RpbWV9fSJ9XSwiUHJvZmlsZUNvbW1lbnRGb3JiaWQiOjAsIldlY2hhdFBsdWdpbkFwcCI6MCwiaW50cm9kdWN0aW9uIjoiIiwiZnJvbUJ1c2luZXNzVXNlcm5hbWUiOiIiLCJHYW1lQXBwIjowLCJNaW5QdWJWZXJzaW9uIjowLCJNaW5QdWJTdHJpbmdWZXJzaW9uIjoiMi40LjAiLCJPcGVuU2VhcmNoV2lkZ2V0IjowLCJQbHVnaW5JbmZvIjp7InBsdWdpbl9saXN0IjpbeyJpZCI6MzI0NDUwNzE1OCwibmlja25hbWUiOiLmtYvor5XmoLfkvosiLCJoZWFkaW1ndXJsIjoiaHR0cDpcL1wvd3gucWxvZ28uY25cL21taGVhZFwvUTNhdUhnend6TTdGbGwzRjcxYk9XdVV2SkNaV28xeWlhNWpybGVBV1Fic3I0R05nVUVkamJzdyIsImJyYW5kaWNvbnVybCI6Imh0dHA6XC9cL21tYml6LnFwaWMuY25cL21tYml6X3BuZ1wvQ3I1VnhaZllnQUlpY3hIeVBRMjA0dTdrVGFERFZTaWNpYXJEa2liSEdpYm8zbWxCTTJrZlN1RlNMMlhFaGlhNTE3VEY5T0luQXFER1JsTEUyaWNPRHBGRmtyTEF3XC8wP3d4X2ZtdD1wbmciLCJQbHVnaW5OZXRXb3JrIjp7IlJlcXVlc3REb21haW4iOlsiaHR0cHM6XC9cLzE0NTkyNjE5LnFjbG91ZC5sYSJdLCJXc1JlcXVlc3REb21haW4iOltdLCJVcGxvYWREb21haW4iOltdLCJEb3dubG9hZERvbWFpbiI6W10sIkJpekRvbWFpbiI6W10sIlVEUERvbWFpbiI6W10sIlRDUERvbWFpbiI6W10sIlByZWZldGNoRE5TRG9tYWluIjpbXSwiTmV3UmVxdWVzdERvbWFpbiI6W10sIk5ld1dzUmVxdWVzdERvbWFpbiI6W10sIk5ld1VwbG9hZERvbWFpbiI6W10sIk5ld0Rvd25sb2FkRG9tYWluIjpbXSwiTmV3Qml6RG9tYWluIjpbXSwiTmV3VURQRG9tYWluIjpbXSwiTmV3VENQRG9tYWluIjpbXSwiTmV3UHJlZmV0Y2hETlNEb21haW4iOltdfSwic2lnbmF0dXJlIjoiIiwicGx1Z2luX3R5cGUiOiJrUGx1Z2luVHlwZU5vcm1hbCJ9XX0sIlNob3J0Tmlja05hbWUiOiIiLCJUY2JDZG5Eb21haW4iOlsiaHR0cHM6XC9cLzc0NjUtdGVzdC1mMGIxMDItMTI1ODIxMTgxOC50Y2IucWNsb3VkLmxhIiwiaHR0cHM6XC9cLzcyNjUtcmVsZWFzZS1iODYwOTYtMTI1ODIxMTgxOC50Y2IucWNsb3VkLmxhIiwiaHR0cHM6XC9cLzcwNmYtcG9zdHBheS0yZzVobTJveGJiYjcyMWE0LTEyNTgyMTE4MTgudGNiLnFjbG91ZC5sYSIsImh0dHBzOlwvXC82MzZmLWNvbnRhaW5lcnRlc3QtMGdtdzN1bG5kOGQ5YmM3Yi0xMjU4MjExODE4LnRjYi5xY2xvdWQubGEiLCJodHRwczpcL1wvNzQ2NS10ZXN0LXBheS04Z2U0NnV5dGE4NmFmNzQ4LTEyNTgyMTE4MTgudGNiLnFjbG91ZC5sYSJdLCJPcmlnaW5hbEZsYWciOjAsIk9yaWdpbmFsUmVkaXJlY3RVcmwiOiIiLCJQY09wZW5BcHBGbGFnIjowLCJTZW5zaXRpdmVUYWdzIjpbXSwic2Vuc2l0aXZlX2NvbnRlbnRfc3RhdHVzIjowLCJTaG93UmVsaWV2ZWRCdXlGbGFnIjo1MzgsIlN5c3RlbUF1dGhCaXpTY2VuZSI6MH0auiwKEVd4YUFwcFZlcnNpb25JbmZvEqQseyJBcHBWZXJzaW9uIjo4NywiVmVyc2lvblN0YXRlIjowLCJWZXJzaW9uTUQ1IjoiZTJkZTg4YzRhZDBiOWUzMTVhZTJiNDRiOTA3ZTQ3MDQiLCJBcHBDRE5Eb3dubG9hZFVybCI6IiIsIkNETlVybExpZmVzcGFuIjowLCJDYXRlZ29yaWVzIjpbXSwiVGFncyI6W10sIm1vZHVsZV9saXN0IjpbeyJuYW1lIjoiXC9wYWNrYWdlQ29tcG9uZW50XC8iLCJtZDUiOiJlZjI2MGZmMzg5N2M4NTdhNTYyMjJlMTU5Mzk1ZDlhYSIsInNpemUiOjEyNjAyMzUsImluZGVwZW5kZW50IjpmYWxzZSwicGFnZV9jb3VudCI6MzcsImFsaWFzIjpbXSwid3hhY29kZV9saWJfaW5mb19saXN0IjpbXSwid2l0aG91dF9saWJfbWQ1IjoiIiwic2VwYXJhdGVkX3BsdWdpbl9saXN0IjpbXSwibWQ1X2xpc3QiOltdLCJ3aWRnZXRfbGlzdCI6W3sicGFja2FnZV90eXBlIjo0LCJ3eGFwa2dfbWQ1IjoiZWYyNjBmZjM4OTdjODU3YTU2MjIyZTE1OTM5NWQ5YWEiLCJ3eGFwa2dfc2l6ZSI6MTI2MDIzNSwic2VwYXJhdGVkX3BsdWdpbl9saXN0IjpbXSwid3hhcGtnX3NoYTI1NiI6IiJ9LHsicGFja2FnZV90eXBlIjoxNywid3hhcGtnX21kNSI6ImVkYzZiZWY5NTMyNzM0ZDNlZjc3NmQ4NTU1Y2Q5ZjdjIiwid3hhcGtnX3NpemUiOjE0MDU2MzMsInNlcGFyYXRlZF9wbHVnaW5fbGlzdCI6W10sInd4YXBrZ19zaGEyNTYiOiIifV19LHsibmFtZSI6IlwvcGFja2FnZUV4dGVuZFwvIiwibWQ1IjoiZTM4MmQ3NDBhZmY1NDFjOTVhODFiOGE2YjVhYjE0MDMiLCJzaXplIjo5MDYwMjksImluZGVwZW5kZW50IjpmYWxzZSwicGFnZV9jb3VudCI6NDQsImFsaWFzIjpbXSwid3hhY29kZV9saWJfaW5mb19saXN0IjpbXSwid2l0aG91dF9saWJfbWQ1IjoiIiwic2VwYXJhdGVkX3BsdWdpbl9saXN0IjpbXSwibWQ1X2xpc3QiOltdLCJ3aWRnZXRfbGlzdCI6W3sicGFja2FnZV90eXBlIjo0LCJ3eGFwa2dfbWQ1IjoiZTM4MmQ3NDBhZmY1NDFjOTVhODFiOGE2YjVhYjE0MDMiLCJ3eGFwa2dfc2l6ZSI6OTA2MDI5LCJzZXBhcmF0ZWRfcGx1Z2luX2xpc3QiOltdLCJ3eGFwa2dfc2hhMjU2IjoiIn0seyJwYWNrYWdlX3R5cGUiOjE3LCJ3eGFwa2dfbWQ1IjoiZWNhMGQ3ZjU1NWQ5M2U3Yzc2NTk0NDFlNWM3ZDVjOWMiLCJ3eGFwa2dfc2l6ZSI6MTEyNDA4OSwic2VwYXJhdGVkX3BsdWdpbl9saXN0IjpbXSwid3hhcGtnX3NoYTI1NiI6IiJ9XX0seyJuYW1lIjoiXC9wYWNrYWdlQ2xvdWRcLyIsIm1kNSI6IjJiNzNkYjZjZmM0MGY2ODNhMmI4ZTJmNmM4OTgzYzQ2Iiwic2l6ZSI6MjI1NDQzLCJpbmRlcGVuZGVudCI6ZmFsc2UsInBhZ2VfY291bnQiOjEzLCJhbGlhcyI6W10sInd4YWNvZGVfbGliX2luZm9fbGlzdCI6W10sIndpdGhvdXRfbGliX21kNSI6IiIsInNlcGFyYXRlZF9wbHVnaW5fbGlzdCI6W10sIm1kNV9saXN0IjpbXSwid2lkZ2V0X2xpc3QiOlt7InBhY2thZ2VfdHlwZSI6NCwid3hhcGtnX21kNSI6IjJiNzNkYjZjZmM0MGY2ODNhMmI4ZTJmNmM4OTgzYzQ2Iiwid3hhcGtnX3NpemUiOjIyNTQ0Mywic2VwYXJhdGVkX3BsdWdpbl9saXN0IjpbXSwid3hhcGtnX3NoYTI1NiI6IiJ9LHsicGFja2FnZV90eXBlIjoxNywid3hhcGtnX21kNSI6ImIxNzM1ODcyYWQ0ZjFkZDU1MzM0N2NkZjg3MjUxMzdiIiwid3hhcGtnX3NpemUiOjI3NDA2NCwic2VwYXJhdGVkX3BsdWdpbl9saXN0IjpbXSwid3hhcGtnX3NoYTI1NiI6IiJ9XX0seyJuYW1lIjoiXC9wYWNrYWdlQVBJXC8iLCJtZDUiOiI3NjMyY2MwNGZkODkyMjI0NjI5NWU3ZmUzNDBjZjFhNSIsInNpemUiOjEzODY4NzIsImluZGVwZW5kZW50IjpmYWxzZSwicGFnZV9jb3VudCI6NzAsImFsaWFzIjpbXSwid3hhY29kZV9saWJfaW5mb19saXN0IjpbXSwid2l0aG91dF9saWJfbWQ1IjoiIiwic2VwYXJhdGVkX3BsdWdpbl9saXN0IjpbXSwibWQ1X2xpc3QiOltdLCJ3aWRnZXRfbGlzdCI6W3sicGFja2FnZV90eXBlIjo0LCJ3eGFwa2dfbWQ1IjoiNzYzMmNjMDRmZDg5MjIyNDYyOTVlN2ZlMzQwY2YxYTUiLCJ3eGFwa2dfc2l6ZSI6MTM4Njg3Miwic2VwYXJhdGVkX3BsdWdpbl9saXN0IjpbXSwid3hhcGtnX3NoYTI1NiI6IiJ9LHsicGFja2FnZV90eXBlIjoxNywid3hhcGtnX21kNSI6IjM3MDExYzM0NTA4YjZmODg5NjZlYmVmNTJiYjM2MjBiIiwid3hhcGtnX3NpemUiOjE2NjQ0OTEsInNlcGFyYXRlZF9wbHVnaW5fbGlzdCI6W10sInd4YXBrZ19zaGEyNTYiOiIifV19LHsibmFtZSI6Il9fQVBQX18iLCJtZDUiOiI3MTZjZmMxMDcyMTEyNmU4OTQ3NTNjZDk3NWY5OTIwZCIsInNpemUiOjM1MTM0NDAsImluZGVwZW5kZW50IjpmYWxzZSwicGFnZV9jb3VudCI6NCwiYWxpYXMiOlsicGx1Z2luOlwvXC93ZXVpIiwicGx1Z2luLXByaXZhdGU6XC9cL3d4ZmE0M2E0YTcwNDFhODRkZSJdLCJ3eGFjb2RlX2xpYl9pbmZvX2xpc3QiOltdLCJ3aXRob3V0X2xpYl9tZDUiOiIiLCJzZXBhcmF0ZWRfcGx1Z2luX2xpc3QiOltdLCJtZDVfbGlzdCI6W10sIndpZGdldF9saXN0IjpbeyJwYWNrYWdlX3R5cGUiOjQsInd4YXBrZ19tZDUiOiI3MTZjZmMxMDcyMTEyNmU4OTQ3NTNjZDk3NWY5OTIwZCIsInd4YXBrZ19zaXplIjozNTEzNDQwLCJzZXBhcmF0ZWRfcGx1Z2luX2xpc3QiOltdLCJ3eGFwa2dfc2hhMjU2IjoiIn0seyJwYWNrYWdlX3R5cGUiOjE3LCJ3eGFwa2dfbWQ1IjoiYzE5NGViOWQ2NTM4OTJiMmNmZjQxZmYyOTZiOTNhYTUiLCJ3eGFwa2dfc2l6ZSI6MzY0MzQyNCwic2VwYXJhdGVkX3BsdWdpbl9saXN0IjpbXSwid3hhcGtnX3NoYTI1NiI6IiJ9LHsicGFja2FnZV90eXBlIjoyMywid3hhcGtnX21kNSI6IjllOTFkMGJmODFlNDBmZjRjYjM1YmViN2MyOTMzNzU2Iiwid3hhcGtnX3NpemUiOjE0MjU2MDUsInNlcGFyYXRlZF9wbHVnaW5fbGlzdCI6W3sicGx1Z2luX2lkIjoid3hmYTQzYTRhNzA0MWE4NGRlIiwiaW5uZXJfdmVyc2lvbiI6MTYsIm1kNSI6ImZmMWMzZTQ4ZmE3Njc4NmRkM2UwNTdkMjA3ZTE2NzliIiwiY29udGV4dHMiOlswXSwicHJlZml4X3BhdGgiOiIiLCJtZDVfbGlzdCI6W10sImF1dG9fdXBkYXRlIjoxfV0sInd4YXBrZ19zaGEyNTYiOiIifSx7InBhY2thZ2VfdHlwZSI6MjUsInd4YXBrZ19tZDUiOiJlZjE3MDhmOGE1YmU2ZDBmM2I0MjE4NGRlZTBhY2ViMiIsInd4YXBrZ19zaXplIjoxNDY5MzIwLCJzZXBhcmF0ZWRfcGx1Z2luX2xpc3QiOltdLCJ3eGFwa2dfc2hhMjU2IjoiIn1dfV0sIlVzZU1vZHVsZSI6dHJ1ZSwiTGFzdF9WZXJzaW9uX0NhdGVnb3JpZXMiOlt7ImZpcnN0Ijoi55S15ZWG5bmz5Y+wIiwic2Vjb25kIjoi55S15ZWG5bmz5Y+wIiwiZmlyc3RfaWQiOjc4MCwic2Vjb25kX2lkIjo3ODIsInRoaXJkIjoiIiwidGhpcmRfaWQiOjB9XSwiRW50cmFuY2VNb2R1bGUiOiJfX0FQUF9fIiwiY29kZV9zaXplIjo3MjQzODI4LCJjbGllbnRfanNfZXh0X2luZm8iOnsiY2FsbF9wbHVnaW5faW5mbyI6W3sicGx1Z2luX2lkIjoid3hmYTQzYTRhNzA0MWE4NGRlIiwicGx1Z2luX3ZlcnNpb24iOjEwMDAwMTUsImlubmVyX3ZlcnNpb24iOjE2LCJwbHVnaW5fdXNlcl9uYW1lIjoid2V1aeaJqeWxleW6kyIsImFsaWFzIjoid2V1aSIsImNvbnRleHRzIjpbXSwibWQ1X2xpc3QiOltdfV0sInVzZXJfdmVyc2lvbiI6IjEuNi40MiJ9LCJ2ZXJzaW9uX2luZm8iOnsib2ZmaWNpYWxfdmVyc2lvbiI6NjQsIm1pbl9zdG9yZV9hcHBfdmVyc2lvbiI6ODF9LCJVc2VQcmVsb2FkUnVsZSI6dHJ1ZSwibG9hZGluZ19pbWFnZV91cmwiOiIiLCJsb2FkaW5nX2ltYWdlX2luZm8iOnsidXJsIjoiIn0sImRhdGFfdHlwZV9kZWNsYXJhdGlvbnMiOltdLCJ3eGFjb2RlX2xpYl9pbmZvX2xpc3QiOltdLCJ3aXRob3V0X2xpYl9tZDUiOiIiLCJzZXBhcmF0ZWRfcGx1Z2luX2xpc3QiOltdLCJmb3JjZV9zeW5jX3VwZGF0ZV93aGVuX2xhdW5jaF9sYXN0X2ludGVydmFsIjo2MDQ4MDAsImlzX2VuY3J5cHRlZCI6ZmFsc2UsImVuY3J5cHRlZF92ZXJzaW9uX21kNSI6IiIsImVuY3J5cHRlZF9jb2RlX3NpemUiOjAsImVuY3J5cHRlZF93aXRob3V0X2xpYl9tZDUiOiIiLCJtZDVfbGlzdCI6W10sIndpZGdldF9saXN0IjpbeyJwYWNrYWdlX3R5cGUiOjAsInd4YXBrZ19tZDUiOiJlMmRlODhjNGFkMGI5ZTMxNWFlMmI0NGI5MDdlNDcwNCIsInd4YXBrZ19zaXplIjo3MjQzODI4LCJzZXBhcmF0ZWRfcGx1Z2luX2xpc3QiOltdLCJ3eGFwa2dfc2hhMjU2IjoiIn0seyJwYWNrYWdlX3R5cGUiOjgsInd4YXBrZ19tZDUiOiJiNGY1MzljZTdhZjUxNTNhNDhiMDcxOTNkNWVkMTYwZSIsInd4YXBrZ19zaXplIjozNTY1NDc2LCJzZXBhcmF0ZWRfcGx1Z2luX2xpc3QiOltdLCJ3eGFwa2dfc2hhMjU2IjoiIn0seyJwYWNrYWdlX3R5cGUiOjE1LCJ3eGFwa2dfbWQ1IjoiNGJjMzAwN2FkYjQ1ZTRjMzY1YjcxNmNkZWRlYTZmMjUiLCJ3eGFwa2dfc2l6ZSI6MTcxLCJzZXBhcmF0ZWRfcGx1Z2luX2xpc3QiOltdLCJ3eGFwa2dfc2hhMjU2IjoiIn0seyJwYWNrYWdlX3R5cGUiOjE2LCJ3eGFwa2dfbWQ1IjoiNTc2ZTZlMTBjYjA1OTcwNGVmNjA2ODVlY2QxZTA3NGQiLCJ3eGFwa2dfc2l6ZSI6ODA3NDA1MCwic2VwYXJhdGVkX3BsdWdpbl9saXN0IjpbXSwid3hhcGtnX3NoYTI1NiI6IiJ9LHsicGFja2FnZV90eXBlIjoyMiwid3hhcGtnX21kNSI6IjE0OTViZDI4MGY1OWFkNjk4MmZiYzkyMDVlZjMwZTU2Iiwid3hhcGtnX3NpemUiOjUxNTYxMDEsInNlcGFyYXRlZF9wbHVnaW5fbGlzdCI6W3sicGx1Z2luX2lkIjoid3hmYTQzYTRhNzA0MWE4NGRlIiwiaW5uZXJfdmVyc2lvbiI6MTYsIm1kNSI6ImZmMWMzZTQ4ZmE3Njc4NmRkM2UwNTdkMjA3ZTE2NzliIiwiY29udGV4dHMiOlswXSwicHJlZml4X3BhdGgiOiIiLCJtZDVfbGlzdCI6W10sImF1dG9fdXBkYXRlIjoxfV0sInd4YXBrZ19zaGEyNTYiOiIifSx7InBhY2thZ2VfdHlwZSI6MjQsInd4YXBrZ19tZDUiOiJhMjNiNTJjMmI4ZmI3ZjhjYTQxM2YxNTJlNmEwOTVmOCIsInd4YXBrZ19zaXplIjo1OTAwNzU4LCJzZXBhcmF0ZWRfcGx1Z2luX2xpc3QiOltdLCJ3eGFwa2dfc2hhMjU2IjoiIn0seyJwYWNrYWdlX3R5cGUiOjI4LCJ3eGFwa2dfbWQ1IjoiMTQ4YWRjNDhmZWUxNzA4ZjFjOGFlMDY1Y2VlMjdhZTEiLCJ3eGFwa2dfc2l6ZSI6ODc1NSwic2VwYXJhdGVkX3BsdWdpbl9saXN0IjpbXSwid3hhcGtnX3NoYTI1NiI6IiJ9LHsicGFja2FnZV90eXBlIjo5OTksInd4YXBrZ19tZDUiOiI2YmE2ZTY4NjEwODQ0NGU0YWQ5YjFmNWUyNTIwNmJjMyIsInd4YXBrZ19zaXplIjo0Mzk1NDMyLCJzZXBhcmF0ZWRfcGx1Z2luX2xpc3QiOltdLCJ3eGFwa2dfc2hhMjU2IjoiIn1dLCJyZXNpemFibGUiOnRydWUsIm9ubHlfcnVuX3d4d29yayI6ZmFsc2UsIm1hdGVyaWFsX2NvbmYiOnsic3VwcG9ydF9tYXRlcmlhbF9saXN0IjpbXSwicHJldmlld19tYXRlcmlhbF9saXN0IjpbXX0sImN1c3RvbV9kYXRhX2NvbmYiOnsic3ViX2Rlc2MiOiIiLCJwcmV2aWV3X3N1Yl9kZXNjIjoiIn0sInRlbXBsYXRlX2lkIjowLCJoYWxmUGFnZSI6eyJmaXJzdFBhZ2VOYXZpZ2F0aW9uU3R5bGUiOiIifSwid2V3b3JrX2N1c3RvbWVyX3NlcnZpY2VfaW5mbyI6eyJlbnRlcnByaXNlX2lkX2xpc3QiOltdLCJjb3JwaWRfaXRlbV9saXN0IjpbeyJjb3JwaWQiOiJ3d2VlODk2ODRhZmVlNGExYjEiLCJiaW5kX3RpbWUiOiIxNjI0NTE2NTc0In1dfSwicmVuZGVyZXJzIjpbXSwiY3VzdG9tX3ZlcnNpb24iOiIxLjYuNDIifRpZCgtCaW5kV3hhSW5mbxJKeyJ3eGFFbnRyeUluZm8iOltdLCJiaXpFbnRyeUluZm8iOltdLCJ1c2VybmFtZSI6IiIsIm9wZW5XeGFCeUJpelFSQ29kZSI6MH0avwsKDVd4YUFwcER5bmFtaWMSrQt7Ik5ld1NldHRpbmciOnsiTWF4TG9jYWxzdG9yYWdlU2l6ZSI6MTAsIk1heENvZGVTaXplIjoyLCJNYXhXZWJ2aWV3RGVwdGgiOjUsIk1heEJhY2tncm91bmRMaWZlc3BhbiI6MzAwLCJNYXhSZXF1ZXN0Q29uY3VycmVudCI6MTAsIk1heFVwbG9hZENvbmN1cnJlbnQiOjEwLCJNYXhEb3dubG9hZENvbmN1cnJlbnQiOjEwLCJNYXhGaWxlU3RvcmFnZVNpemUiOjIwMCwiRXhwaXJlc0F0TGlzdCI6NDMyMDAwLCJCYWNrZ3JvdW5kTmV0d29ya0ludGVycnVwdGVkVGltZW91dCI6MzAwLCJDYW5LZWVwQWxpdmVCeUF1ZGlvUGxheSI6MSwiTGlmZVNwYW5CZWZvcmVTdXNwZW5kIjo1LCJMaWZlU3BhbkFmdGVyU3VzcGVuZCI6MTgwMCwiTWF4V2Vic29ja2V0Q29ubmVjdCI6NSwiRXhwZW5kZWRNYXhXZWJ2aWV3RGVwdGgiOjEwLCJBY3R1YWxXZWJ2aWV3RGVwdGgiOjUsIldlYnNvY2tldFNraXBQb3J0Q2hlY2siOjEsIk1heFN1YnBhY2thZ2VTdWJDb2RlU2l6ZSI6MiwiTWF4U3VicGFja2FnZUZ1bGxDb2RlU2l6ZSI6MjAsIk1heFdvcmtlckNvbmN1cnJlbnQiOjEsIlNjYW5Db2RlRW5hYmxlWlpNIjowLCJNYXhQbHVnaW5TZGtSZWFkbWVTaXplIjoyLCJDYW5QcmVGZXRjaERhdGEiOjEsIkNhblBlcmlvZEZldGNoRGF0YSI6MSwiUGVyaW9kRmV0Y2hEYXRhIjoxMiwiVExTU2tpcEhvc3RuYW1lQ2hlY2siOjAsIk5hdmlnYXRlTWluaXByb2dyYW1MaW1pdCI6OTk5OTk5LCJPcGVuZGF0YU1heExvY2Fsc3RvcmFnZVNpemUiOjEwLCJPcGVuZGF0YU1heEZpbGVTdG9yYWdlU2l6ZSI6MTAsIk1heFRlbXBGaWxlU3RvcmFnZVNpemUiOjIwNDgsIk9wZW5XeGFJYXAiOjEsIkd1YXJhbnRlZUZsYWciOjEsIkNhblNob3dMb2FkaW5nQWR2ZXJ0IjowLCJNYXhTdWJQYWNrYWdlTGltaXQiOjEwMCwiUGVyaW9kRmV0Y2hEYXRhRGF5Ijo3LCJPcGVuV3hhV2FpdFVwZGF0ZU1heE1pY1NlYyI6MTMwMDAsIk9wZW5XeGFXYWl0VXBkYXRlTWF4TWljU2VjRm9yV2Vha05ldCI6MTMwMDAsIk1pblRlbXBGaWxlU3RvcmFnZVNpemUiOjIwNDgsIlVpbnQzMk1heExvY2Fsc3RvcmFnZVNpemVJbk1CIjoxMCwiVWludDMyT3BlbmRhdGFNYXhMb2NhbHN0b3JhZ2VTaXplSW5NQiI6MTAsIlVpbnQzMk1heEZpbGVTdG9yYWdlU2l6ZUluTUIiOjIwMCwiVWludDMyT3BlbmRhdGFNYXhGaWxlU3RvcmFnZVNpemVJbk1CIjoxMCwiVWludDMyTWF4VGVtcEZpbGVTdG9yYWdlU2l6ZUluTUIiOjQwOTYsIlVpbnQzMk1pblRlbXBGaWxlU3RvcmFnZVNpemVJbk1CIjoyMDQ4LCJPcGVuUHJvZHVjdEZsYWciOjAsIlVzZVBhY2thZ2VDb25maXJtU3ViRGVzY1Njb3BlTGlzdCI6W10sIlByZUNnaUNhbGxCeXRlQmVmb3JlTGF1bmNoIjoiXHUwMDAxIiwiQ2FuU2hvd0dhbWVMb2FkaW5nQWR2ZXJ0IjowfSwiTmV3Q2F0ZWdvcmllcyI6W3siZmlyc3QiOiLnlLXllYblubPlj7AiLCJzZWNvbmQiOiLnlLXllYblubPlj7AifV19GrkECg9QYXNzVGhyb3VnaEluZm8SpQR7ImZvcmNlVXBkYXRlIjp0cnVlLCJleHB0X2luZm8iOnsiZXhwdF9wYXJhbV9saXN0IjpbeyJwYXJhbV9uYW1lIjoiZXhwdF8xNjQ4NzE2MjU5IiwicGFyYW1fdmFsdWUiOiIwIiwiZXhwdF9pZCI6MCwiZXhwdF9ncm91cF9pZCI6MH0seyJwYXJhbV9uYW1lIjoiZXhwdF8xNjQ4MTkzMzgxIiwicGFyYW1fdmFsdWUiOiIwIiwiZXhwdF9pZCI6MCwiZXhwdF9ncm91cF9pZCI6MH0seyJwYXJhbV9uYW1lIjoiZXhwdF8xNjI4MDgzOTI1NTQ5IiwicGFyYW1fdmFsdWUiOiIwIiwiZXhwdF9pZCI6MCwiZXhwdF9ncm91cF9pZCI6MH0seyJwYXJhbV9uYW1lIjoiZXhwdF9hcmdzXzIiLCJwYXJhbV92YWx1ZSI6IjEiLCJleHB0X2lkIjo0ODMsImV4cHRfZ3JvdXBfaWQiOjQ4NX0seyJwYXJhbV9uYW1lIjoiZXhwdF9hcmdzXzMiLCJwYXJhbV92YWx1ZSI6IjIiLCJleHB0X2lkIjoxNTksImV4cHRfZ3JvdXBfaWQiOjE2Mn1dfSwib3BlblByb2R1Y3RGbGFnIjowLCJ3eGFfbWdyIjp7Im1ncl9saXN0IjpbeyJpZCI6ODMzLCJ2YWx1ZSI6MX0seyJpZCI6ODM0LCJ2YWx1ZSI6MH1dfX0a2gQKFVN0YWJsZVBhc3NUaHJvdWdoSW5mbxLABHsid3hhX3ByaXZhY3lfbGlzdCI6W3sic2NvcGUiOiJqc2FwaV9jYW1lcmEiLCJzdWJfZGVzYyI6Iua8lOekumxpdmUtcHVzaGVy57uE5Lu255u45YWz6IO95YqbIn0seyJzY29wZSI6ImpzYXBpX2xvY2F0aW9uIiwic3ViX2Rlc2MiOiLmvJTnpLp3eC5nZXRMb2NhdGlvbuiOt+WPlueUqOaIt+WumuS9jeeahOiDveWKmyJ9LHsic2NvcGUiOiJqc2FwaV9sb2NhdGlvbl9iYWNrZ3JvdW5kIiwic3ViX2Rlc2MiOiLmvJTnpLp3eC5nZXRMb2NhdGlvbuiOt+WPlueUqOaIt+WumuS9jeeahOiDveWKmyJ9LHsic2NvcGUiOiJqc2FwaV9waG90b3NfYWxidW0iLCJzdWJfZGVzYyI6Iua8lOekund4LnNhdmVJbWFnZVRvUGhvdG9zQWxidW3kv53lrZjlm77niYfliLDns7vnu5/nm7jlhoznmoTog73lipsifSx7InNjb3BlIjoianNhcGlfcmVjb3JkIiwic3ViX2Rlc2MiOiLmvJTnpLpsaXZlLXB1c2hlcue7hOS7tuebuOWFs+iDveWKmyJ9LHsic2NvcGUiOiJ3ZWJhcGlfYmx1ZXRvb3RoIiwic3ViX2Rlc2MiOiLmvJTnpLrok53niZnjgIFpQmVhY29u55u45YWz6IO95YqbIn1dLCJ3eGFfb3Blbl91cmxfZG9tYWluX2xpc3QiOltdfSITZ2hfZDQzZjY5M2NhMzFmQGFwcA==";
|
|
2
|
+
export default originalContactBase64;
|