| @@ -2,11 +2,13 @@ | |||
| <JUCERPROJECT id="NTe0XB0ij" name="AudioPluginHost" projectType="guiapp" version="1.0.0" | |||
| juceFolder="../../../juce" vstFolderMac="~/SDKs/vstsdk2.4" vstFolderPC="c:\SDKs\vstsdk2.4" | |||
| bundleIdentifier="com.roli.pluginhost" jucerVersion="5.3.0" companyName="ROLI Ltd." | |||
| displaySplashScreen="0" reportAppUsage="0" companyCopyright="ROLI Ltd."> | |||
| bundleIdentifier="com.roli.juce.pluginhost" jucerVersion="5.3.0" | |||
| companyName="ROLI Ltd." displaySplashScreen="0" reportAppUsage="0" | |||
| companyCopyright="ROLI Ltd."> | |||
| <EXPORTFORMATS> | |||
| <XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="" rtasFolder="~/SDKs/PT_80_SDK" | |||
| objCExtraSuffix="M73TRi" vst3Folder="" extraCompilerFlags="-Wall -Wshadow -Wstrict-aliasing -Wconversion -Wsign-compare -Woverloaded-virtual -Wextra-semi"> | |||
| objCExtraSuffix="M73TRi" vst3Folder="" extraCompilerFlags="-Wall -Wshadow -Wstrict-aliasing -Wconversion -Wsign-compare -Woverloaded-virtual -Wextra-semi" | |||
| smallIcon="c97aUr" bigIcon="c97aUr"> | |||
| <CONFIGURATIONS> | |||
| <CONFIGURATION name="Debug" isDebug="1" targetName="AudioPluginHost"/> | |||
| <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="AudioPluginHost"/> | |||
| @@ -28,7 +30,8 @@ | |||
| <MODULEPATH id="juce_audio_basics" path="../../modules"/> | |||
| </MODULEPATHS> | |||
| </XCODE_MAC> | |||
| <LINUX_MAKE targetFolder="Builds/LinuxMakefile" vstFolder="" vst3Folder=""> | |||
| <LINUX_MAKE targetFolder="Builds/LinuxMakefile" vstFolder="" vst3Folder="" | |||
| smallIcon="c97aUr" bigIcon="c97aUr"> | |||
| <CONFIGURATIONS> | |||
| <CONFIGURATION name="Debug" isDebug="1" targetName="AudioPluginHost" libraryPath="/usr/X11R6/lib/"/> | |||
| <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="AudioPluginHost" | |||
| @@ -51,7 +54,8 @@ | |||
| <MODULEPATH id="juce_audio_basics" path="../../modules"/> | |||
| </MODULEPATHS> | |||
| </LINUX_MAKE> | |||
| <VS2013 targetFolder="Builds/VisualStudio2013" vstFolder="" vst3Folder=""> | |||
| <VS2013 targetFolder="Builds/VisualStudio2013" vstFolder="" vst3Folder="" | |||
| smallIcon="c97aUr" bigIcon="c97aUr"> | |||
| <CONFIGURATIONS> | |||
| <CONFIGURATION name="Debug" winArchitecture="32-bit" isDebug="1" optimisation="1" | |||
| targetName="AudioPluginHost"/> | |||
| @@ -75,7 +79,8 @@ | |||
| <MODULEPATH id="juce_audio_basics" path="../../modules"/> | |||
| </MODULEPATHS> | |||
| </VS2013> | |||
| <VS2015 targetFolder="Builds/VisualStudio2015" vstFolder="" vst3Folder=""> | |||
| <VS2015 targetFolder="Builds/VisualStudio2015" vstFolder="" vst3Folder="" | |||
| smallIcon="c97aUr" bigIcon="c97aUr"> | |||
| <CONFIGURATIONS> | |||
| <CONFIGURATION name="Debug" isDebug="1" targetName="AudioPluginHost"/> | |||
| <CONFIGURATION name="Release" isDebug="0" targetName="AudioPluginHost" debugInformationFormat="ProgramDatabase"/> | |||
| @@ -97,7 +102,8 @@ | |||
| <MODULEPATH id="juce_audio_basics" path="../../modules"/> | |||
| </MODULEPATHS> | |||
| </VS2015> | |||
| <VS2017 targetFolder="Builds/VisualStudio2017" vst3Folder=""> | |||
| <VS2017 targetFolder="Builds/VisualStudio2017" vst3Folder="" smallIcon="c97aUr" | |||
| bigIcon="c97aUr"> | |||
| <CONFIGURATIONS> | |||
| <CONFIGURATION name="Debug" isDebug="1" targetName="AudioPluginHost"/> | |||
| <CONFIGURATION name="Release" isDebug="0" targetName="AudioPluginHost" debugInformationFormat="ProgramDatabase"/> | |||
| @@ -119,36 +125,93 @@ | |||
| <MODULEPATH id="juce_audio_basics" path="../../modules"/> | |||
| </MODULEPATHS> | |||
| </VS2017> | |||
| <XCODE_IPHONE targetFolder="Builds/iOS" iosScreenOrientation="portraitlandscape" | |||
| iPadScreenOrientation="portraitlandscape" iosDeviceFamily="1,2" | |||
| vst3Folder="" microphonePermissionNeeded="1" iosBackgroundAudio="1" | |||
| iosBackgroundBle="1" smallIcon="c97aUr" bigIcon="c97aUr"> | |||
| <CONFIGURATIONS> | |||
| <CONFIGURATION name="Debug" enablePluginBinaryCopyStep="1" isDebug="1" optimisation="1" | |||
| linkTimeOptimisation="0" targetName="Plugin Host"/> | |||
| <CONFIGURATION name="Release" enablePluginBinaryCopyStep="1" isDebug="0" optimisation="3" | |||
| linkTimeOptimisation="1" targetName="Plugin Host"/> | |||
| </CONFIGURATIONS> | |||
| <MODULEPATHS> | |||
| <MODULEPATH id="juce_video" path="../../modules"/> | |||
| <MODULEPATH id="juce_opengl" path="../../modules"/> | |||
| <MODULEPATH id="juce_gui_extra" path="../../modules"/> | |||
| <MODULEPATH id="juce_gui_basics" path="../../modules"/> | |||
| <MODULEPATH id="juce_graphics" path="../../modules"/> | |||
| <MODULEPATH id="juce_events" path="../../modules"/> | |||
| <MODULEPATH id="juce_data_structures" path="../../modules"/> | |||
| <MODULEPATH id="juce_cryptography" path="../../modules"/> | |||
| <MODULEPATH id="juce_core" path="../../modules"/> | |||
| <MODULEPATH id="juce_audio_utils" path="../../modules"/> | |||
| <MODULEPATH id="juce_audio_processors" path="../../modules"/> | |||
| <MODULEPATH id="juce_audio_formats" path="../../modules"/> | |||
| <MODULEPATH id="juce_audio_devices" path="../../modules"/> | |||
| <MODULEPATH id="juce_audio_basics" path="../../modules"/> | |||
| </MODULEPATHS> | |||
| </XCODE_IPHONE> | |||
| <ANDROIDSTUDIO targetFolder="Builds/Android" androidSDKPath="" androidNDKPath="" | |||
| androidMinimumSDK="23" androidInternetNeeded="1" microphonePermissionNeeded="1" | |||
| androidBluetoothNeeded="1" smallIcon="c97aUr" bigIcon="c97aUr"> | |||
| <CONFIGURATIONS> | |||
| <CONFIGURATION name="Debug" androidArchitectures="armeabi x86" isDebug="1" optimisation="1" | |||
| linkTimeOptimisation="0" targetName="Plugin Host"/> | |||
| <CONFIGURATION name="Release" androidArchitectures="" isDebug="0" optimisation="3" | |||
| linkTimeOptimisation="1" targetName="Plugin Host"/> | |||
| </CONFIGURATIONS> | |||
| <MODULEPATHS> | |||
| <MODULEPATH id="juce_video" path="../../modules"/> | |||
| <MODULEPATH id="juce_opengl" path="../../modules"/> | |||
| <MODULEPATH id="juce_gui_extra" path="../../modules"/> | |||
| <MODULEPATH id="juce_gui_basics" path="../../modules"/> | |||
| <MODULEPATH id="juce_graphics" path="../../modules"/> | |||
| <MODULEPATH id="juce_events" path="../../modules"/> | |||
| <MODULEPATH id="juce_data_structures" path="../../modules"/> | |||
| <MODULEPATH id="juce_cryptography" path="../../modules"/> | |||
| <MODULEPATH id="juce_core" path="../../modules"/> | |||
| <MODULEPATH id="juce_audio_utils" path="../../modules"/> | |||
| <MODULEPATH id="juce_audio_processors" path="../../modules"/> | |||
| <MODULEPATH id="juce_audio_formats" path="../../modules"/> | |||
| <MODULEPATH id="juce_audio_devices" path="../../modules"/> | |||
| <MODULEPATH id="juce_audio_basics" path="../../modules"/> | |||
| </MODULEPATHS> | |||
| </ANDROIDSTUDIO> | |||
| </EXPORTFORMATS> | |||
| <MAINGROUP id="YdWL7hi7p" name="AudioPluginHost"> | |||
| <FILE id="8tLeuntR4" name="FilterGraph.cpp" compile="1" resource="0" | |||
| file="Source/FilterGraph.cpp"/> | |||
| <FILE id="auGSxnlTU" name="FilterGraph.h" compile="0" resource="0" | |||
| file="Source/FilterGraph.h"/> | |||
| <FILE id="cnfPX5" name="FilterIOConfiguration.cpp" compile="1" resource="0" | |||
| file="Source/FilterIOConfiguration.cpp"/> | |||
| <FILE id="ZVUq7Q" name="FilterIOConfiguration.h" compile="0" resource="0" | |||
| file="Source/FilterIOConfiguration.h"/> | |||
| <FILE id="2b09bSUt" name="GraphEditorPanel.cpp" compile="1" resource="0" | |||
| file="Source/GraphEditorPanel.cpp"/> | |||
| <FILE id="sj8Yug8cu" name="GraphEditorPanel.h" compile="0" resource="0" | |||
| file="Source/GraphEditorPanel.h"/> | |||
| <FILE id="nehnGjkrX" name="HostStartup.cpp" compile="1" resource="0" | |||
| file="Source/HostStartup.cpp"/> | |||
| <FILE id="J6HWWSQP1" name="InternalFilters.cpp" compile="1" resource="0" | |||
| file="Source/InternalFilters.cpp"/> | |||
| <FILE id="AplCcJ0La" name="InternalFilters.h" compile="0" resource="0" | |||
| file="Source/InternalFilters.h"/> | |||
| <FILE id="mFVSjbHfN" name="MainHostWindow.cpp" compile="1" resource="0" | |||
| file="Source/MainHostWindow.cpp"/> | |||
| <FILE id="h1kpxyzHi" name="MainHostWindow.h" compile="0" resource="0" | |||
| file="Source/MainHostWindow.h"/> | |||
| <FILE id="ZwQDmm" name="PluginWindow.h" compile="0" resource="0" file="Source/PluginWindow.h"/> | |||
| <GROUP id="{CFED5B3D-D1D8-0F3F-4D67-B2A810D057EF}" name="Source"> | |||
| <GROUP id="{AE20356E-1F78-F99D-7D44-08529665AEDA}" name="Filters"> | |||
| <FILE id="CogQ5Q" name="FilterGraph.cpp" compile="1" resource="0" file="Source/Filters/FilterGraph.cpp"/> | |||
| <FILE id="pfZWFw" name="FilterGraph.h" compile="0" resource="0" file="Source/Filters/FilterGraph.h"/> | |||
| <FILE id="BltUzI" name="FilterIOConfiguration.cpp" compile="1" resource="0" | |||
| file="Source/Filters/FilterIOConfiguration.cpp"/> | |||
| <FILE id="r9SuL8" name="FilterIOConfiguration.h" compile="0" resource="0" | |||
| file="Source/Filters/FilterIOConfiguration.h"/> | |||
| <FILE id="UcOOog" name="InternalFilters.cpp" compile="1" resource="0" | |||
| file="Source/Filters/InternalFilters.cpp"/> | |||
| <FILE id="Bll6sn" name="InternalFilters.h" compile="0" resource="0" | |||
| file="Source/Filters/InternalFilters.h"/> | |||
| </GROUP> | |||
| <GROUP id="{D892BFB2-FE85-B70F-10D3-450F407E2B3D}" name="UI"> | |||
| <FILE id="wPgLS9" name="GraphEditorPanel.cpp" compile="1" resource="0" | |||
| file="Source/UI/GraphEditorPanel.cpp"/> | |||
| <FILE id="BDMvfT" name="GraphEditorPanel.h" compile="0" resource="0" | |||
| file="Source/UI/GraphEditorPanel.h"/> | |||
| <FILE id="AVGs2y" name="MainHostWindow.cpp" compile="1" resource="0" | |||
| file="Source/UI/MainHostWindow.cpp"/> | |||
| <FILE id="Ia6Vec" name="MainHostWindow.h" compile="0" resource="0" | |||
| file="Source/UI/MainHostWindow.h"/> | |||
| <FILE id="ygZQZ1" name="PluginWindow.h" compile="0" resource="0" file="Source/UI/PluginWindow.h"/> | |||
| </GROUP> | |||
| <FILE id="OmIhwQ" name="HostStartup.cpp" compile="1" resource="0" file="Source/HostStartup.cpp"/> | |||
| <FILE id="c97aUr" name="JUCEAppIcon.png" compile="0" resource="1" file="Source/JUCEAppIcon.png"/> | |||
| </GROUP> | |||
| </MAINGROUP> | |||
| <JUCEOPTIONS JUCE_WASAPI="1" JUCE_DIRECTSOUND="1" JUCE_ALSA="1" JUCE_USE_FLAC="0" | |||
| JUCE_USE_OGGVORBIS="0" JUCE_USE_CDBURNER="0" JUCE_USE_CDREADER="0" | |||
| JUCE_USE_CAMERA="0" JUCE_PLUGINHOST_VST="1" JUCE_PLUGINHOST_AU="1" | |||
| JUCE_WEB_BROWSER="0" JUCE_PLUGINHOST_VST3="1"/> | |||
| <JUCEOPTIONS JUCE_WASAPI="1" JUCE_DIRECTSOUND="1" JUCE_ALSA="1" JUCE_QUICKTIME="disabled" | |||
| JUCE_USE_FLAC="0" JUCE_USE_OGGVORBIS="0" JUCE_USE_CDBURNER="0" | |||
| JUCE_USE_CDREADER="0" JUCE_USE_CAMERA="0" JUCE_PLUGINHOST_VST="1" | |||
| JUCE_PLUGINHOST_AU="1" JUCE_WEB_BROWSER="0" JUCE_PLUGINHOST_VST3="1"/> | |||
| <MODULES> | |||
| <MODULE id="juce_audio_basics" showAllCode="1"/> | |||
| <MODULE id="juce_audio_devices" showAllCode="1"/> | |||
| @@ -0,0 +1,94 @@ | |||
| apply plugin: 'com.android.application' | |||
| android { | |||
| compileSdkVersion 23 | |||
| buildToolsVersion "27.0.0" | |||
| externalNativeBuild { | |||
| cmake { | |||
| path "CMakeLists.txt" | |||
| } | |||
| } | |||
| signingConfigs { | |||
| juceSigning { | |||
| storeFile file("${System.properties['user.home']}${File.separator}.android${File.separator}debug.keystore") | |||
| storePassword "android" | |||
| keyAlias "androiddebugkey" | |||
| keyPassword "android" | |||
| storeType "jks" | |||
| } | |||
| } | |||
| defaultConfig { | |||
| applicationId "com.roli.juce.pluginhost" | |||
| minSdkVersion 23 | |||
| targetSdkVersion 23 | |||
| externalNativeBuild { | |||
| cmake { | |||
| arguments "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-23", "-DANDROID_STL=c++_static", "-DANDROID_CPP_FEATURES=exceptions rtti", "-DANDROID_ARM_MODE=arm", "-DANDROID_ARM_NEON=TRUE" | |||
| cFlags "-fsigned-char" | |||
| cppFlags "-fsigned-char", "-std=c++14" | |||
| } | |||
| } | |||
| } | |||
| buildTypes { | |||
| debug { | |||
| initWith debug | |||
| debuggable true | |||
| jniDebuggable true | |||
| signingConfig signingConfigs.juceSigning | |||
| } | |||
| release { | |||
| initWith release | |||
| debuggable false | |||
| jniDebuggable false | |||
| signingConfig signingConfigs.juceSigning | |||
| } | |||
| } | |||
| flavorDimensions "default" | |||
| productFlavors { | |||
| debug_ { | |||
| ndk { | |||
| abiFilters "armeabi", "x86" | |||
| } | |||
| externalNativeBuild { | |||
| cmake { | |||
| arguments "-DJUCE_BUILD_CONFIGURATION=DEBUG", "-DCMAKE_CXX_FLAGS_DEBUG=-O0", "-DCMAKE_C_FLAGS_DEBUG=-O0" | |||
| } | |||
| } | |||
| dimension "default" | |||
| } | |||
| release_ { | |||
| externalNativeBuild { | |||
| cmake { | |||
| arguments "-DJUCE_BUILD_CONFIGURATION=RELEASE", "-DCMAKE_CXX_FLAGS_RELEASE=-O3", "-DCMAKE_C_FLAGS_RELEASE=-O3" | |||
| } | |||
| } | |||
| dimension "default" | |||
| } | |||
| } | |||
| variantFilter { variant -> | |||
| def names = variant.flavors*.name | |||
| if (names.contains ("debug_") | |||
| && variant.buildType.name != "debug") { | |||
| setIgnore(true) | |||
| } | |||
| if (names.contains ("release_") | |||
| && variant.buildType.name != "release") { | |||
| setIgnore(true) | |||
| } | |||
| } | |||
| repositories { | |||
| } | |||
| dependencies { | |||
| } | |||
| } | |||
| @@ -0,0 +1,5 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <resources> | |||
| <string name="app_name">AudioPluginHost</string> | |||
| </resources> | |||
| @@ -0,0 +1,24 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0.0" | |||
| package="com.roli.juce.pluginhost"> | |||
| <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:anyDensity="true"/> | |||
| <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="23"/> | |||
| <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> | |||
| <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> | |||
| <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> | |||
| <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> | |||
| <uses-permission android:name="android.permission.BLUETOOTH"/> | |||
| <uses-permission android:name="android.permission.RECORD_AUDIO"/> | |||
| <uses-permission android:name="android.permission.INTERNET"/> | |||
| <uses-feature android:glEsVersion="0x00030000" android:required="true"/> | |||
| <application android:label="@string/app_name" android:icon="@drawable/icon" android:hardwareAccelerated="false"> | |||
| <activity android:name="AudioPluginHost" android:label="@string/app_name" android:configChanges="keyboardHidden|orientation|screenSize" | |||
| android:screenOrientation="unspecified" android:launchMode="singleTask" android:hardwareAccelerated="true"> | |||
| <intent-filter> | |||
| <action android:name="android.intent.action.MAIN"/> | |||
| <category android:name="android.intent.category.LAUNCHER"/> | |||
| </intent-filter> | |||
| </activity> | |||
| </application> | |||
| </manifest> | |||
| @@ -0,0 +1,971 @@ | |||
| /* | |||
| ============================================================================== | |||
| This file is part of the JUCE library. | |||
| Copyright (c) 2017 - ROLI Ltd. | |||
| JUCE is an open source library subject to commercial or open-source | |||
| licensing. | |||
| The code included in this file is provided under the terms of the ISC license | |||
| http://www.isc.org/downloads/software-support-policy/isc-license. Permission | |||
| To use, copy, modify, and/or distribute this software for any purpose with or | |||
| without fee is hereby granted provided that the above copyright notice and | |||
| this permission notice appear in all copies. | |||
| JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER | |||
| EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE | |||
| DISCLAIMED. | |||
| ============================================================================== | |||
| */ | |||
| package com.android.vending.billing; | |||
| /** | |||
| * InAppBillingService is the service that provides in-app billing version 3 and beyond. | |||
| * This service provides the following features: | |||
| * 1. Provides a new API to get details of in-app items published for the app including | |||
| * price, type, title and description. | |||
| * 2. The purchase flow is synchronous and purchase information is available immediately | |||
| * after it completes. | |||
| * 3. Purchase information of in-app purchases is maintained within the Google Play system | |||
| * till the purchase is consumed. | |||
| * 4. An API to consume a purchase of an inapp item. All purchases of one-time | |||
| * in-app items are consumable and thereafter can be purchased again. | |||
| * 5. An API to get current purchases of the user immediately. This will not contain any | |||
| * consumed purchases. | |||
| * | |||
| * All calls will give a response code with the following possible values | |||
| * RESULT_OK = 0 - success | |||
| * RESULT_USER_CANCELED = 1 - User pressed back or canceled a dialog | |||
| * RESULT_SERVICE_UNAVAILABLE = 2 - The network connection is down | |||
| * RESULT_BILLING_UNAVAILABLE = 3 - This billing API version is not supported for the type requested | |||
| * RESULT_ITEM_UNAVAILABLE = 4 - Requested SKU is not available for purchase | |||
| * RESULT_DEVELOPER_ERROR = 5 - Invalid arguments provided to the API | |||
| * RESULT_ERROR = 6 - Fatal error during the API action | |||
| * RESULT_ITEM_ALREADY_OWNED = 7 - Failure to purchase since item is already owned | |||
| * RESULT_ITEM_NOT_OWNED = 8 - Failure to consume since item is not owned | |||
| */ | |||
| public interface IInAppBillingService extends android.os.IInterface | |||
| { | |||
| /** Local-side IPC implementation stub class. */ | |||
| public static abstract class Stub extends android.os.Binder implements com.android.vending.billing.IInAppBillingService | |||
| { | |||
| private static final java.lang.String DESCRIPTOR = "com.android.vending.billing.IInAppBillingService"; | |||
| /** Construct the stub at attach it to the interface. */ | |||
| public Stub() | |||
| { | |||
| this.attachInterface(this, DESCRIPTOR); | |||
| } | |||
| /** | |||
| * Cast an IBinder object into an com.android.vending.billing.IInAppBillingService interface, | |||
| * generating a proxy if needed. | |||
| */ | |||
| public static com.android.vending.billing.IInAppBillingService asInterface(android.os.IBinder obj) | |||
| { | |||
| if ((obj==null)) { | |||
| return null; | |||
| } | |||
| android.os.IInterface iin = obj.queryLocalInterface(DESCRIPTOR); | |||
| if (((iin!=null)&&(iin instanceof com.android.vending.billing.IInAppBillingService))) { | |||
| return ((com.android.vending.billing.IInAppBillingService)iin); | |||
| } | |||
| return new com.android.vending.billing.IInAppBillingService.Stub.Proxy(obj); | |||
| } | |||
| @Override public android.os.IBinder asBinder() | |||
| { | |||
| return this; | |||
| } | |||
| @Override public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) throws android.os.RemoteException | |||
| { | |||
| switch (code) | |||
| { | |||
| case INTERFACE_TRANSACTION: | |||
| { | |||
| reply.writeString(DESCRIPTOR); | |||
| return true; | |||
| } | |||
| case TRANSACTION_isBillingSupported: | |||
| { | |||
| data.enforceInterface(DESCRIPTOR); | |||
| int _arg0; | |||
| _arg0 = data.readInt(); | |||
| java.lang.String _arg1; | |||
| _arg1 = data.readString(); | |||
| java.lang.String _arg2; | |||
| _arg2 = data.readString(); | |||
| int _result = this.isBillingSupported(_arg0, _arg1, _arg2); | |||
| reply.writeNoException(); | |||
| reply.writeInt(_result); | |||
| return true; | |||
| } | |||
| case TRANSACTION_getSkuDetails: | |||
| { | |||
| data.enforceInterface(DESCRIPTOR); | |||
| int _arg0; | |||
| _arg0 = data.readInt(); | |||
| java.lang.String _arg1; | |||
| _arg1 = data.readString(); | |||
| java.lang.String _arg2; | |||
| _arg2 = data.readString(); | |||
| android.os.Bundle _arg3; | |||
| if ((0!=data.readInt())) { | |||
| _arg3 = android.os.Bundle.CREATOR.createFromParcel(data); | |||
| } | |||
| else { | |||
| _arg3 = null; | |||
| } | |||
| android.os.Bundle _result = this.getSkuDetails(_arg0, _arg1, _arg2, _arg3); | |||
| reply.writeNoException(); | |||
| if ((_result!=null)) { | |||
| reply.writeInt(1); | |||
| _result.writeToParcel(reply, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); | |||
| } | |||
| else { | |||
| reply.writeInt(0); | |||
| } | |||
| return true; | |||
| } | |||
| case TRANSACTION_getBuyIntent: | |||
| { | |||
| data.enforceInterface(DESCRIPTOR); | |||
| int _arg0; | |||
| _arg0 = data.readInt(); | |||
| java.lang.String _arg1; | |||
| _arg1 = data.readString(); | |||
| java.lang.String _arg2; | |||
| _arg2 = data.readString(); | |||
| java.lang.String _arg3; | |||
| _arg3 = data.readString(); | |||
| java.lang.String _arg4; | |||
| _arg4 = data.readString(); | |||
| android.os.Bundle _result = this.getBuyIntent(_arg0, _arg1, _arg2, _arg3, _arg4); | |||
| reply.writeNoException(); | |||
| if ((_result!=null)) { | |||
| reply.writeInt(1); | |||
| _result.writeToParcel(reply, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); | |||
| } | |||
| else { | |||
| reply.writeInt(0); | |||
| } | |||
| return true; | |||
| } | |||
| case TRANSACTION_getPurchases: | |||
| { | |||
| data.enforceInterface(DESCRIPTOR); | |||
| int _arg0; | |||
| _arg0 = data.readInt(); | |||
| java.lang.String _arg1; | |||
| _arg1 = data.readString(); | |||
| java.lang.String _arg2; | |||
| _arg2 = data.readString(); | |||
| java.lang.String _arg3; | |||
| _arg3 = data.readString(); | |||
| android.os.Bundle _result = this.getPurchases(_arg0, _arg1, _arg2, _arg3); | |||
| reply.writeNoException(); | |||
| if ((_result!=null)) { | |||
| reply.writeInt(1); | |||
| _result.writeToParcel(reply, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); | |||
| } | |||
| else { | |||
| reply.writeInt(0); | |||
| } | |||
| return true; | |||
| } | |||
| case TRANSACTION_consumePurchase: | |||
| { | |||
| data.enforceInterface(DESCRIPTOR); | |||
| int _arg0; | |||
| _arg0 = data.readInt(); | |||
| java.lang.String _arg1; | |||
| _arg1 = data.readString(); | |||
| java.lang.String _arg2; | |||
| _arg2 = data.readString(); | |||
| int _result = this.consumePurchase(_arg0, _arg1, _arg2); | |||
| reply.writeNoException(); | |||
| reply.writeInt(_result); | |||
| return true; | |||
| } | |||
| case TRANSACTION_stub: | |||
| { | |||
| data.enforceInterface(DESCRIPTOR); | |||
| int _arg0; | |||
| _arg0 = data.readInt(); | |||
| java.lang.String _arg1; | |||
| _arg1 = data.readString(); | |||
| java.lang.String _arg2; | |||
| _arg2 = data.readString(); | |||
| int _result = this.stub(_arg0, _arg1, _arg2); | |||
| reply.writeNoException(); | |||
| reply.writeInt(_result); | |||
| return true; | |||
| } | |||
| case TRANSACTION_getBuyIntentToReplaceSkus: | |||
| { | |||
| data.enforceInterface(DESCRIPTOR); | |||
| int _arg0; | |||
| _arg0 = data.readInt(); | |||
| java.lang.String _arg1; | |||
| _arg1 = data.readString(); | |||
| java.util.List<java.lang.String> _arg2; | |||
| _arg2 = data.createStringArrayList(); | |||
| java.lang.String _arg3; | |||
| _arg3 = data.readString(); | |||
| java.lang.String _arg4; | |||
| _arg4 = data.readString(); | |||
| java.lang.String _arg5; | |||
| _arg5 = data.readString(); | |||
| android.os.Bundle _result = this.getBuyIntentToReplaceSkus(_arg0, _arg1, _arg2, _arg3, _arg4, _arg5); | |||
| reply.writeNoException(); | |||
| if ((_result!=null)) { | |||
| reply.writeInt(1); | |||
| _result.writeToParcel(reply, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); | |||
| } | |||
| else { | |||
| reply.writeInt(0); | |||
| } | |||
| return true; | |||
| } | |||
| case TRANSACTION_getBuyIntentExtraParams: | |||
| { | |||
| data.enforceInterface(DESCRIPTOR); | |||
| int _arg0; | |||
| _arg0 = data.readInt(); | |||
| java.lang.String _arg1; | |||
| _arg1 = data.readString(); | |||
| java.lang.String _arg2; | |||
| _arg2 = data.readString(); | |||
| java.lang.String _arg3; | |||
| _arg3 = data.readString(); | |||
| java.lang.String _arg4; | |||
| _arg4 = data.readString(); | |||
| android.os.Bundle _arg5; | |||
| if ((0!=data.readInt())) { | |||
| _arg5 = android.os.Bundle.CREATOR.createFromParcel(data); | |||
| } | |||
| else { | |||
| _arg5 = null; | |||
| } | |||
| android.os.Bundle _result = this.getBuyIntentExtraParams(_arg0, _arg1, _arg2, _arg3, _arg4, _arg5); | |||
| reply.writeNoException(); | |||
| if ((_result!=null)) { | |||
| reply.writeInt(1); | |||
| _result.writeToParcel(reply, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); | |||
| } | |||
| else { | |||
| reply.writeInt(0); | |||
| } | |||
| return true; | |||
| } | |||
| case TRANSACTION_getPurchaseHistory: | |||
| { | |||
| data.enforceInterface(DESCRIPTOR); | |||
| int _arg0; | |||
| _arg0 = data.readInt(); | |||
| java.lang.String _arg1; | |||
| _arg1 = data.readString(); | |||
| java.lang.String _arg2; | |||
| _arg2 = data.readString(); | |||
| java.lang.String _arg3; | |||
| _arg3 = data.readString(); | |||
| android.os.Bundle _arg4; | |||
| if ((0!=data.readInt())) { | |||
| _arg4 = android.os.Bundle.CREATOR.createFromParcel(data); | |||
| } | |||
| else { | |||
| _arg4 = null; | |||
| } | |||
| android.os.Bundle _result = this.getPurchaseHistory(_arg0, _arg1, _arg2, _arg3, _arg4); | |||
| reply.writeNoException(); | |||
| if ((_result!=null)) { | |||
| reply.writeInt(1); | |||
| _result.writeToParcel(reply, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); | |||
| } | |||
| else { | |||
| reply.writeInt(0); | |||
| } | |||
| return true; | |||
| } | |||
| case TRANSACTION_isBillingSupportedExtraParams: | |||
| { | |||
| data.enforceInterface(DESCRIPTOR); | |||
| int _arg0; | |||
| _arg0 = data.readInt(); | |||
| java.lang.String _arg1; | |||
| _arg1 = data.readString(); | |||
| java.lang.String _arg2; | |||
| _arg2 = data.readString(); | |||
| android.os.Bundle _arg3; | |||
| if ((0!=data.readInt())) { | |||
| _arg3 = android.os.Bundle.CREATOR.createFromParcel(data); | |||
| } | |||
| else { | |||
| _arg3 = null; | |||
| } | |||
| int _result = this.isBillingSupportedExtraParams(_arg0, _arg1, _arg2, _arg3); | |||
| reply.writeNoException(); | |||
| reply.writeInt(_result); | |||
| return true; | |||
| } | |||
| } | |||
| return super.onTransact(code, data, reply, flags); | |||
| } | |||
| private static class Proxy implements com.android.vending.billing.IInAppBillingService | |||
| { | |||
| private android.os.IBinder mRemote; | |||
| Proxy(android.os.IBinder remote) | |||
| { | |||
| mRemote = remote; | |||
| } | |||
| @Override public android.os.IBinder asBinder() | |||
| { | |||
| return mRemote; | |||
| } | |||
| public java.lang.String getInterfaceDescriptor() | |||
| { | |||
| return DESCRIPTOR; | |||
| } | |||
| @Override public int isBillingSupported(int apiVersion, java.lang.String packageName, java.lang.String type) throws android.os.RemoteException | |||
| { | |||
| android.os.Parcel _data = android.os.Parcel.obtain(); | |||
| android.os.Parcel _reply = android.os.Parcel.obtain(); | |||
| int _result; | |||
| try { | |||
| _data.writeInterfaceToken(DESCRIPTOR); | |||
| _data.writeInt(apiVersion); | |||
| _data.writeString(packageName); | |||
| _data.writeString(type); | |||
| mRemote.transact(Stub.TRANSACTION_isBillingSupported, _data, _reply, 0); | |||
| _reply.readException(); | |||
| _result = _reply.readInt(); | |||
| } | |||
| finally { | |||
| _reply.recycle(); | |||
| _data.recycle(); | |||
| } | |||
| return _result; | |||
| } | |||
| /** | |||
| * Provides details of a list of SKUs | |||
| * Given a list of SKUs of a valid type in the skusBundle, this returns a bundle | |||
| * with a list JSON strings containing the productId, price, title and description. | |||
| * This API can be called with a maximum of 20 SKUs. | |||
| * @param apiVersion billing API version that the app is using | |||
| * @param packageName the package name of the calling app | |||
| * @param type of the in-app items ("inapp" for one-time purchases | |||
| * and "subs" for subscriptions) | |||
| * @param skusBundle bundle containing a StringArrayList of SKUs with key "ITEM_ID_LIST" | |||
| * @return Bundle containing the following key-value pairs | |||
| * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response codes | |||
| * on failures. | |||
| * "DETAILS_LIST" with a StringArrayList containing purchase information | |||
| * in JSON format similar to: | |||
| * '{ "productId" : "exampleSku", | |||
| * "type" : "inapp", | |||
| * "price" : "$5.00", | |||
| * "price_currency": "USD", | |||
| * "price_amount_micros": 5000000, | |||
| * "title : "Example Title", | |||
| * "description" : "This is an example description" }' | |||
| */ | |||
| @Override public android.os.Bundle getSkuDetails(int apiVersion, java.lang.String packageName, java.lang.String type, android.os.Bundle skusBundle) throws android.os.RemoteException | |||
| { | |||
| android.os.Parcel _data = android.os.Parcel.obtain(); | |||
| android.os.Parcel _reply = android.os.Parcel.obtain(); | |||
| android.os.Bundle _result; | |||
| try { | |||
| _data.writeInterfaceToken(DESCRIPTOR); | |||
| _data.writeInt(apiVersion); | |||
| _data.writeString(packageName); | |||
| _data.writeString(type); | |||
| if ((skusBundle!=null)) { | |||
| _data.writeInt(1); | |||
| skusBundle.writeToParcel(_data, 0); | |||
| } | |||
| else { | |||
| _data.writeInt(0); | |||
| } | |||
| mRemote.transact(Stub.TRANSACTION_getSkuDetails, _data, _reply, 0); | |||
| _reply.readException(); | |||
| if ((0!=_reply.readInt())) { | |||
| _result = android.os.Bundle.CREATOR.createFromParcel(_reply); | |||
| } | |||
| else { | |||
| _result = null; | |||
| } | |||
| } | |||
| finally { | |||
| _reply.recycle(); | |||
| _data.recycle(); | |||
| } | |||
| return _result; | |||
| } | |||
| /** | |||
| * Returns a pending intent to launch the purchase flow for an in-app item by providing a SKU, | |||
| * the type, a unique purchase token and an optional developer payload. | |||
| * @param apiVersion billing API version that the app is using | |||
| * @param packageName package name of the calling app | |||
| * @param sku the SKU of the in-app item as published in the developer console | |||
| * @param type of the in-app item being purchased ("inapp" for one-time purchases | |||
| * and "subs" for subscriptions) | |||
| * @param developerPayload optional argument to be sent back with the purchase information | |||
| * @return Bundle containing the following key-value pairs | |||
| * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response codes | |||
| * on failures. | |||
| * "BUY_INTENT" - PendingIntent to start the purchase flow | |||
| * | |||
| * The Pending intent should be launched with startIntentSenderForResult. When purchase flow | |||
| * has completed, the onActivityResult() will give a resultCode of OK or CANCELED. | |||
| * If the purchase is successful, the result data will contain the following key-value pairs | |||
| * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response | |||
| * codes on failures. | |||
| * "INAPP_PURCHASE_DATA" - String in JSON format similar to | |||
| * '{"orderId":"12999763169054705758.1371079406387615", | |||
| * "packageName":"com.example.app", | |||
| * "productId":"exampleSku", | |||
| * "purchaseTime":1345678900000, | |||
| * "purchaseToken" : "122333444455555", | |||
| * "developerPayload":"example developer payload" }' | |||
| * "INAPP_DATA_SIGNATURE" - String containing the signature of the purchase data that | |||
| * was signed with the private key of the developer | |||
| */ | |||
| @Override public android.os.Bundle getBuyIntent(int apiVersion, java.lang.String packageName, java.lang.String sku, java.lang.String type, java.lang.String developerPayload) throws android.os.RemoteException | |||
| { | |||
| android.os.Parcel _data = android.os.Parcel.obtain(); | |||
| android.os.Parcel _reply = android.os.Parcel.obtain(); | |||
| android.os.Bundle _result; | |||
| try { | |||
| _data.writeInterfaceToken(DESCRIPTOR); | |||
| _data.writeInt(apiVersion); | |||
| _data.writeString(packageName); | |||
| _data.writeString(sku); | |||
| _data.writeString(type); | |||
| _data.writeString(developerPayload); | |||
| mRemote.transact(Stub.TRANSACTION_getBuyIntent, _data, _reply, 0); | |||
| _reply.readException(); | |||
| if ((0!=_reply.readInt())) { | |||
| _result = android.os.Bundle.CREATOR.createFromParcel(_reply); | |||
| } | |||
| else { | |||
| _result = null; | |||
| } | |||
| } | |||
| finally { | |||
| _reply.recycle(); | |||
| _data.recycle(); | |||
| } | |||
| return _result; | |||
| } | |||
| /** | |||
| * Returns the current SKUs owned by the user of the type and package name specified along with | |||
| * purchase information and a signature of the data to be validated. | |||
| * This will return all SKUs that have been purchased in V3 and managed items purchased using | |||
| * V1 and V2 that have not been consumed. | |||
| * @param apiVersion billing API version that the app is using | |||
| * @param packageName package name of the calling app | |||
| * @param type of the in-app items being requested ("inapp" for one-time purchases | |||
| * and "subs" for subscriptions) | |||
| * @param continuationToken to be set as null for the first call, if the number of owned | |||
| * skus are too many, a continuationToken is returned in the response bundle. | |||
| * This method can be called again with the continuation token to get the next set of | |||
| * owned skus. | |||
| * @return Bundle containing the following key-value pairs | |||
| * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response codes | |||
| on failures. | |||
| * "INAPP_PURCHASE_ITEM_LIST" - StringArrayList containing the list of SKUs | |||
| * "INAPP_PURCHASE_DATA_LIST" - StringArrayList containing the purchase information | |||
| * "INAPP_DATA_SIGNATURE_LIST"- StringArrayList containing the signatures | |||
| * of the purchase information | |||
| * "INAPP_CONTINUATION_TOKEN" - String containing a continuation token for the | |||
| * next set of in-app purchases. Only set if the | |||
| * user has more owned skus than the current list. | |||
| */ | |||
| @Override public android.os.Bundle getPurchases(int apiVersion, java.lang.String packageName, java.lang.String type, java.lang.String continuationToken) throws android.os.RemoteException | |||
| { | |||
| android.os.Parcel _data = android.os.Parcel.obtain(); | |||
| android.os.Parcel _reply = android.os.Parcel.obtain(); | |||
| android.os.Bundle _result; | |||
| try { | |||
| _data.writeInterfaceToken(DESCRIPTOR); | |||
| _data.writeInt(apiVersion); | |||
| _data.writeString(packageName); | |||
| _data.writeString(type); | |||
| _data.writeString(continuationToken); | |||
| mRemote.transact(Stub.TRANSACTION_getPurchases, _data, _reply, 0); | |||
| _reply.readException(); | |||
| if ((0!=_reply.readInt())) { | |||
| _result = android.os.Bundle.CREATOR.createFromParcel(_reply); | |||
| } | |||
| else { | |||
| _result = null; | |||
| } | |||
| } | |||
| finally { | |||
| _reply.recycle(); | |||
| _data.recycle(); | |||
| } | |||
| return _result; | |||
| } | |||
| @Override public int consumePurchase(int apiVersion, java.lang.String packageName, java.lang.String purchaseToken) throws android.os.RemoteException | |||
| { | |||
| android.os.Parcel _data = android.os.Parcel.obtain(); | |||
| android.os.Parcel _reply = android.os.Parcel.obtain(); | |||
| int _result; | |||
| try { | |||
| _data.writeInterfaceToken(DESCRIPTOR); | |||
| _data.writeInt(apiVersion); | |||
| _data.writeString(packageName); | |||
| _data.writeString(purchaseToken); | |||
| mRemote.transact(Stub.TRANSACTION_consumePurchase, _data, _reply, 0); | |||
| _reply.readException(); | |||
| _result = _reply.readInt(); | |||
| } | |||
| finally { | |||
| _reply.recycle(); | |||
| _data.recycle(); | |||
| } | |||
| return _result; | |||
| } | |||
| @Override public int stub(int apiVersion, java.lang.String packageName, java.lang.String type) throws android.os.RemoteException | |||
| { | |||
| android.os.Parcel _data = android.os.Parcel.obtain(); | |||
| android.os.Parcel _reply = android.os.Parcel.obtain(); | |||
| int _result; | |||
| try { | |||
| _data.writeInterfaceToken(DESCRIPTOR); | |||
| _data.writeInt(apiVersion); | |||
| _data.writeString(packageName); | |||
| _data.writeString(type); | |||
| mRemote.transact(Stub.TRANSACTION_stub, _data, _reply, 0); | |||
| _reply.readException(); | |||
| _result = _reply.readInt(); | |||
| } | |||
| finally { | |||
| _reply.recycle(); | |||
| _data.recycle(); | |||
| } | |||
| return _result; | |||
| } | |||
| /** | |||
| * Returns a pending intent to launch the purchase flow for upgrading or downgrading a | |||
| * subscription. The existing owned SKU(s) should be provided along with the new SKU that | |||
| * the user is upgrading or downgrading to. | |||
| * @param apiVersion billing API version that the app is using, must be 5 or later | |||
| * @param packageName package name of the calling app | |||
| * @param oldSkus the SKU(s) that the user is upgrading or downgrading from, | |||
| * if null or empty this method will behave like {@link #getBuyIntent} | |||
| * @param newSku the SKU that the user is upgrading or downgrading to | |||
| * @param type of the item being purchased, currently must be "subs" | |||
| * @param developerPayload optional argument to be sent back with the purchase information | |||
| * @return Bundle containing the following key-value pairs | |||
| * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response codes | |||
| * on failures. | |||
| * "BUY_INTENT" - PendingIntent to start the purchase flow | |||
| * | |||
| * The Pending intent should be launched with startIntentSenderForResult. When purchase flow | |||
| * has completed, the onActivityResult() will give a resultCode of OK or CANCELED. | |||
| * If the purchase is successful, the result data will contain the following key-value pairs | |||
| * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response | |||
| * codes on failures. | |||
| * "INAPP_PURCHASE_DATA" - String in JSON format similar to | |||
| * '{"orderId":"12999763169054705758.1371079406387615", | |||
| * "packageName":"com.example.app", | |||
| * "productId":"exampleSku", | |||
| * "purchaseTime":1345678900000, | |||
| * "purchaseToken" : "122333444455555", | |||
| * "developerPayload":"example developer payload" }' | |||
| * "INAPP_DATA_SIGNATURE" - String containing the signature of the purchase data that | |||
| * was signed with the private key of the developer | |||
| */ | |||
| @Override public android.os.Bundle getBuyIntentToReplaceSkus(int apiVersion, java.lang.String packageName, java.util.List<java.lang.String> oldSkus, java.lang.String newSku, java.lang.String type, java.lang.String developerPayload) throws android.os.RemoteException | |||
| { | |||
| android.os.Parcel _data = android.os.Parcel.obtain(); | |||
| android.os.Parcel _reply = android.os.Parcel.obtain(); | |||
| android.os.Bundle _result; | |||
| try { | |||
| _data.writeInterfaceToken(DESCRIPTOR); | |||
| _data.writeInt(apiVersion); | |||
| _data.writeString(packageName); | |||
| _data.writeStringList(oldSkus); | |||
| _data.writeString(newSku); | |||
| _data.writeString(type); | |||
| _data.writeString(developerPayload); | |||
| mRemote.transact(Stub.TRANSACTION_getBuyIntentToReplaceSkus, _data, _reply, 0); | |||
| _reply.readException(); | |||
| if ((0!=_reply.readInt())) { | |||
| _result = android.os.Bundle.CREATOR.createFromParcel(_reply); | |||
| } | |||
| else { | |||
| _result = null; | |||
| } | |||
| } | |||
| finally { | |||
| _reply.recycle(); | |||
| _data.recycle(); | |||
| } | |||
| return _result; | |||
| } | |||
| /** | |||
| * Returns a pending intent to launch the purchase flow for an in-app item. This method is | |||
| * a variant of the {@link #getBuyIntent} method and takes an additional {@code extraParams} | |||
| * parameter. This parameter is a Bundle of optional keys and values that affect the | |||
| * operation of the method. | |||
| * @param apiVersion billing API version that the app is using, must be 6 or later | |||
| * @param packageName package name of the calling app | |||
| * @param sku the SKU of the in-app item as published in the developer console | |||
| * @param type of the in-app item being purchased ("inapp" for one-time purchases | |||
| * and "subs" for subscriptions) | |||
| * @param developerPayload optional argument to be sent back with the purchase information | |||
| * @extraParams a Bundle with the following optional keys: | |||
| * "skusToReplace" - List<String> - an optional list of SKUs that the user is | |||
| * upgrading or downgrading from. | |||
| * Pass this field if the purchase is upgrading or downgrading | |||
| * existing subscriptions. | |||
| * The specified SKUs are replaced with the SKUs that the user is | |||
| * purchasing. Google Play replaces the specified SKUs at the start of | |||
| * the next billing cycle. | |||
| * "replaceSkusProration" - Boolean - whether the user should be credited for any unused | |||
| * subscription time on the SKUs they are upgrading or downgrading. | |||
| * If you set this field to true, Google Play swaps out the old SKUs | |||
| * and credits the user with the unused value of their subscription | |||
| * time on a pro-rated basis. | |||
| * Google Play applies this credit to the new subscription, and does | |||
| * not begin billing the user for the new subscription until after | |||
| * the credit is used up. | |||
| * If you set this field to false, the user does not receive credit for | |||
| * any unused subscription time and the recurrence date does not | |||
| * change. | |||
| * Default value is true. Ignored if you do not pass skusToReplace. | |||
| * "accountId" - String - an optional obfuscated string that is uniquely | |||
| * associated with the user's account in your app. | |||
| * If you pass this value, Google Play can use it to detect irregular | |||
| * activity, such as many devices making purchases on the same | |||
| * account in a short period of time. | |||
| * Do not use the developer ID or the user's Google ID for this field. | |||
| * In addition, this field should not contain the user's ID in | |||
| * cleartext. | |||
| * We recommend that you use a one-way hash to generate a string from | |||
| * the user's ID, and store the hashed string in this field. | |||
| * "vr" - Boolean - an optional flag indicating whether the returned intent | |||
| * should start a VR purchase flow. The apiVersion must also be 7 or | |||
| * later to use this flag. | |||
| */ | |||
| @Override public android.os.Bundle getBuyIntentExtraParams(int apiVersion, java.lang.String packageName, java.lang.String sku, java.lang.String type, java.lang.String developerPayload, android.os.Bundle extraParams) throws android.os.RemoteException | |||
| { | |||
| android.os.Parcel _data = android.os.Parcel.obtain(); | |||
| android.os.Parcel _reply = android.os.Parcel.obtain(); | |||
| android.os.Bundle _result; | |||
| try { | |||
| _data.writeInterfaceToken(DESCRIPTOR); | |||
| _data.writeInt(apiVersion); | |||
| _data.writeString(packageName); | |||
| _data.writeString(sku); | |||
| _data.writeString(type); | |||
| _data.writeString(developerPayload); | |||
| if ((extraParams!=null)) { | |||
| _data.writeInt(1); | |||
| extraParams.writeToParcel(_data, 0); | |||
| } | |||
| else { | |||
| _data.writeInt(0); | |||
| } | |||
| mRemote.transact(Stub.TRANSACTION_getBuyIntentExtraParams, _data, _reply, 0); | |||
| _reply.readException(); | |||
| if ((0!=_reply.readInt())) { | |||
| _result = android.os.Bundle.CREATOR.createFromParcel(_reply); | |||
| } | |||
| else { | |||
| _result = null; | |||
| } | |||
| } | |||
| finally { | |||
| _reply.recycle(); | |||
| _data.recycle(); | |||
| } | |||
| return _result; | |||
| } | |||
| /** | |||
| * Returns the most recent purchase made by the user for each SKU, even if that purchase is | |||
| * expired, canceled, or consumed. | |||
| * @param apiVersion billing API version that the app is using, must be 6 or later | |||
| * @param packageName package name of the calling app | |||
| * @param type of the in-app items being requested ("inapp" for one-time purchases | |||
| * and "subs" for subscriptions) | |||
| * @param continuationToken to be set as null for the first call, if the number of owned | |||
| * skus is too large, a continuationToken is returned in the response bundle. | |||
| * This method can be called again with the continuation token to get the next set of | |||
| * owned skus. | |||
| * @param extraParams a Bundle with extra params that would be appended into http request | |||
| * query string. Not used at this moment. Reserved for future functionality. | |||
| * @return Bundle containing the following key-value pairs | |||
| * "RESPONSE_CODE" with int value: RESULT_OK(0) if success, | |||
| * {@link IabHelper#BILLING_RESPONSE_RESULT_*} response codes on failures. | |||
| * | |||
| * "INAPP_PURCHASE_ITEM_LIST" - ArrayList<String> containing the list of SKUs | |||
| * "INAPP_PURCHASE_DATA_LIST" - ArrayList<String> containing the purchase information | |||
| * "INAPP_DATA_SIGNATURE_LIST"- ArrayList<String> containing the signatures | |||
| * of the purchase information | |||
| * "INAPP_CONTINUATION_TOKEN" - String containing a continuation token for the | |||
| * next set of in-app purchases. Only set if the | |||
| * user has more owned skus than the current list. | |||
| */ | |||
| @Override public android.os.Bundle getPurchaseHistory(int apiVersion, java.lang.String packageName, java.lang.String type, java.lang.String continuationToken, android.os.Bundle extraParams) throws android.os.RemoteException | |||
| { | |||
| android.os.Parcel _data = android.os.Parcel.obtain(); | |||
| android.os.Parcel _reply = android.os.Parcel.obtain(); | |||
| android.os.Bundle _result; | |||
| try { | |||
| _data.writeInterfaceToken(DESCRIPTOR); | |||
| _data.writeInt(apiVersion); | |||
| _data.writeString(packageName); | |||
| _data.writeString(type); | |||
| _data.writeString(continuationToken); | |||
| if ((extraParams!=null)) { | |||
| _data.writeInt(1); | |||
| extraParams.writeToParcel(_data, 0); | |||
| } | |||
| else { | |||
| _data.writeInt(0); | |||
| } | |||
| mRemote.transact(Stub.TRANSACTION_getPurchaseHistory, _data, _reply, 0); | |||
| _reply.readException(); | |||
| if ((0!=_reply.readInt())) { | |||
| _result = android.os.Bundle.CREATOR.createFromParcel(_reply); | |||
| } | |||
| else { | |||
| _result = null; | |||
| } | |||
| } | |||
| finally { | |||
| _reply.recycle(); | |||
| _data.recycle(); | |||
| } | |||
| return _result; | |||
| } | |||
| @Override public int isBillingSupportedExtraParams(int apiVersion, java.lang.String packageName, java.lang.String type, android.os.Bundle extraParams) throws android.os.RemoteException | |||
| { | |||
| android.os.Parcel _data = android.os.Parcel.obtain(); | |||
| android.os.Parcel _reply = android.os.Parcel.obtain(); | |||
| int _result; | |||
| try { | |||
| _data.writeInterfaceToken(DESCRIPTOR); | |||
| _data.writeInt(apiVersion); | |||
| _data.writeString(packageName); | |||
| _data.writeString(type); | |||
| if ((extraParams!=null)) { | |||
| _data.writeInt(1); | |||
| extraParams.writeToParcel(_data, 0); | |||
| } | |||
| else { | |||
| _data.writeInt(0); | |||
| } | |||
| mRemote.transact(Stub.TRANSACTION_isBillingSupportedExtraParams, _data, _reply, 0); | |||
| _reply.readException(); | |||
| _result = _reply.readInt(); | |||
| } | |||
| finally { | |||
| _reply.recycle(); | |||
| _data.recycle(); | |||
| } | |||
| return _result; | |||
| } | |||
| } | |||
| static final int TRANSACTION_isBillingSupported = (android.os.IBinder.FIRST_CALL_TRANSACTION + 0); | |||
| static final int TRANSACTION_getSkuDetails = (android.os.IBinder.FIRST_CALL_TRANSACTION + 1); | |||
| static final int TRANSACTION_getBuyIntent = (android.os.IBinder.FIRST_CALL_TRANSACTION + 2); | |||
| static final int TRANSACTION_getPurchases = (android.os.IBinder.FIRST_CALL_TRANSACTION + 3); | |||
| static final int TRANSACTION_consumePurchase = (android.os.IBinder.FIRST_CALL_TRANSACTION + 4); | |||
| static final int TRANSACTION_stub = (android.os.IBinder.FIRST_CALL_TRANSACTION + 5); | |||
| static final int TRANSACTION_getBuyIntentToReplaceSkus = (android.os.IBinder.FIRST_CALL_TRANSACTION + 6); | |||
| static final int TRANSACTION_getBuyIntentExtraParams = (android.os.IBinder.FIRST_CALL_TRANSACTION + 7); | |||
| static final int TRANSACTION_getPurchaseHistory = (android.os.IBinder.FIRST_CALL_TRANSACTION + 8); | |||
| static final int TRANSACTION_isBillingSupportedExtraParams = (android.os.IBinder.FIRST_CALL_TRANSACTION + 9); | |||
| } | |||
| public int isBillingSupported(int apiVersion, java.lang.String packageName, java.lang.String type) throws android.os.RemoteException; | |||
| /** | |||
| * Provides details of a list of SKUs | |||
| * Given a list of SKUs of a valid type in the skusBundle, this returns a bundle | |||
| * with a list JSON strings containing the productId, price, title and description. | |||
| * This API can be called with a maximum of 20 SKUs. | |||
| * @param apiVersion billing API version that the app is using | |||
| * @param packageName the package name of the calling app | |||
| * @param type of the in-app items ("inapp" for one-time purchases | |||
| * and "subs" for subscriptions) | |||
| * @param skusBundle bundle containing a StringArrayList of SKUs with key "ITEM_ID_LIST" | |||
| * @return Bundle containing the following key-value pairs | |||
| * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response codes | |||
| * on failures. | |||
| * "DETAILS_LIST" with a StringArrayList containing purchase information | |||
| * in JSON format similar to: | |||
| * '{ "productId" : "exampleSku", | |||
| * "type" : "inapp", | |||
| * "price" : "$5.00", | |||
| * "price_currency": "USD", | |||
| * "price_amount_micros": 5000000, | |||
| * "title : "Example Title", | |||
| * "description" : "This is an example description" }' | |||
| */ | |||
| public android.os.Bundle getSkuDetails(int apiVersion, java.lang.String packageName, java.lang.String type, android.os.Bundle skusBundle) throws android.os.RemoteException; | |||
| /** | |||
| * Returns a pending intent to launch the purchase flow for an in-app item by providing a SKU, | |||
| * the type, a unique purchase token and an optional developer payload. | |||
| * @param apiVersion billing API version that the app is using | |||
| * @param packageName package name of the calling app | |||
| * @param sku the SKU of the in-app item as published in the developer console | |||
| * @param type of the in-app item being purchased ("inapp" for one-time purchases | |||
| * and "subs" for subscriptions) | |||
| * @param developerPayload optional argument to be sent back with the purchase information | |||
| * @return Bundle containing the following key-value pairs | |||
| * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response codes | |||
| * on failures. | |||
| * "BUY_INTENT" - PendingIntent to start the purchase flow | |||
| * | |||
| * The Pending intent should be launched with startIntentSenderForResult. When purchase flow | |||
| * has completed, the onActivityResult() will give a resultCode of OK or CANCELED. | |||
| * If the purchase is successful, the result data will contain the following key-value pairs | |||
| * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response | |||
| * codes on failures. | |||
| * "INAPP_PURCHASE_DATA" - String in JSON format similar to | |||
| * '{"orderId":"12999763169054705758.1371079406387615", | |||
| * "packageName":"com.example.app", | |||
| * "productId":"exampleSku", | |||
| * "purchaseTime":1345678900000, | |||
| * "purchaseToken" : "122333444455555", | |||
| * "developerPayload":"example developer payload" }' | |||
| * "INAPP_DATA_SIGNATURE" - String containing the signature of the purchase data that | |||
| * was signed with the private key of the developer | |||
| */ | |||
| public android.os.Bundle getBuyIntent(int apiVersion, java.lang.String packageName, java.lang.String sku, java.lang.String type, java.lang.String developerPayload) throws android.os.RemoteException; | |||
| /** | |||
| * Returns the current SKUs owned by the user of the type and package name specified along with | |||
| * purchase information and a signature of the data to be validated. | |||
| * This will return all SKUs that have been purchased in V3 and managed items purchased using | |||
| * V1 and V2 that have not been consumed. | |||
| * @param apiVersion billing API version that the app is using | |||
| * @param packageName package name of the calling app | |||
| * @param type of the in-app items being requested ("inapp" for one-time purchases | |||
| * and "subs" for subscriptions) | |||
| * @param continuationToken to be set as null for the first call, if the number of owned | |||
| * skus are too many, a continuationToken is returned in the response bundle. | |||
| * This method can be called again with the continuation token to get the next set of | |||
| * owned skus. | |||
| * @return Bundle containing the following key-value pairs | |||
| * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response codes | |||
| on failures. | |||
| * "INAPP_PURCHASE_ITEM_LIST" - StringArrayList containing the list of SKUs | |||
| * "INAPP_PURCHASE_DATA_LIST" - StringArrayList containing the purchase information | |||
| * "INAPP_DATA_SIGNATURE_LIST"- StringArrayList containing the signatures | |||
| * of the purchase information | |||
| * "INAPP_CONTINUATION_TOKEN" - String containing a continuation token for the | |||
| * next set of in-app purchases. Only set if the | |||
| * user has more owned skus than the current list. | |||
| */ | |||
| public android.os.Bundle getPurchases(int apiVersion, java.lang.String packageName, java.lang.String type, java.lang.String continuationToken) throws android.os.RemoteException; | |||
| public int consumePurchase(int apiVersion, java.lang.String packageName, java.lang.String purchaseToken) throws android.os.RemoteException; | |||
| public int stub(int apiVersion, java.lang.String packageName, java.lang.String type) throws android.os.RemoteException; | |||
| /** | |||
| * Returns a pending intent to launch the purchase flow for upgrading or downgrading a | |||
| * subscription. The existing owned SKU(s) should be provided along with the new SKU that | |||
| * the user is upgrading or downgrading to. | |||
| * @param apiVersion billing API version that the app is using, must be 5 or later | |||
| * @param packageName package name of the calling app | |||
| * @param oldSkus the SKU(s) that the user is upgrading or downgrading from, | |||
| * if null or empty this method will behave like {@link #getBuyIntent} | |||
| * @param newSku the SKU that the user is upgrading or downgrading to | |||
| * @param type of the item being purchased, currently must be "subs" | |||
| * @param developerPayload optional argument to be sent back with the purchase information | |||
| * @return Bundle containing the following key-value pairs | |||
| * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response codes | |||
| * on failures. | |||
| * "BUY_INTENT" - PendingIntent to start the purchase flow | |||
| * | |||
| * The Pending intent should be launched with startIntentSenderForResult. When purchase flow | |||
| * has completed, the onActivityResult() will give a resultCode of OK or CANCELED. | |||
| * If the purchase is successful, the result data will contain the following key-value pairs | |||
| * "RESPONSE_CODE" with int value, RESULT_OK(0) if success, appropriate response | |||
| * codes on failures. | |||
| * "INAPP_PURCHASE_DATA" - String in JSON format similar to | |||
| * '{"orderId":"12999763169054705758.1371079406387615", | |||
| * "packageName":"com.example.app", | |||
| * "productId":"exampleSku", | |||
| * "purchaseTime":1345678900000, | |||
| * "purchaseToken" : "122333444455555", | |||
| * "developerPayload":"example developer payload" }' | |||
| * "INAPP_DATA_SIGNATURE" - String containing the signature of the purchase data that | |||
| * was signed with the private key of the developer | |||
| */ | |||
| public android.os.Bundle getBuyIntentToReplaceSkus(int apiVersion, java.lang.String packageName, java.util.List<java.lang.String> oldSkus, java.lang.String newSku, java.lang.String type, java.lang.String developerPayload) throws android.os.RemoteException; | |||
| /** | |||
| * Returns a pending intent to launch the purchase flow for an in-app item. This method is | |||
| * a variant of the {@link #getBuyIntent} method and takes an additional {@code extraParams} | |||
| * parameter. This parameter is a Bundle of optional keys and values that affect the | |||
| * operation of the method. | |||
| * @param apiVersion billing API version that the app is using, must be 6 or later | |||
| * @param packageName package name of the calling app | |||
| * @param sku the SKU of the in-app item as published in the developer console | |||
| * @param type of the in-app item being purchased ("inapp" for one-time purchases | |||
| * and "subs" for subscriptions) | |||
| * @param developerPayload optional argument to be sent back with the purchase information | |||
| * @extraParams a Bundle with the following optional keys: | |||
| * "skusToReplace" - List<String> - an optional list of SKUs that the user is | |||
| * upgrading or downgrading from. | |||
| * Pass this field if the purchase is upgrading or downgrading | |||
| * existing subscriptions. | |||
| * The specified SKUs are replaced with the SKUs that the user is | |||
| * purchasing. Google Play replaces the specified SKUs at the start of | |||
| * the next billing cycle. | |||
| * "replaceSkusProration" - Boolean - whether the user should be credited for any unused | |||
| * subscription time on the SKUs they are upgrading or downgrading. | |||
| * If you set this field to true, Google Play swaps out the old SKUs | |||
| * and credits the user with the unused value of their subscription | |||
| * time on a pro-rated basis. | |||
| * Google Play applies this credit to the new subscription, and does | |||
| * not begin billing the user for the new subscription until after | |||
| * the credit is used up. | |||
| * If you set this field to false, the user does not receive credit for | |||
| * any unused subscription time and the recurrence date does not | |||
| * change. | |||
| * Default value is true. Ignored if you do not pass skusToReplace. | |||
| * "accountId" - String - an optional obfuscated string that is uniquely | |||
| * associated with the user's account in your app. | |||
| * If you pass this value, Google Play can use it to detect irregular | |||
| * activity, such as many devices making purchases on the same | |||
| * account in a short period of time. | |||
| * Do not use the developer ID or the user's Google ID for this field. | |||
| * In addition, this field should not contain the user's ID in | |||
| * cleartext. | |||
| * We recommend that you use a one-way hash to generate a string from | |||
| * the user's ID, and store the hashed string in this field. | |||
| * "vr" - Boolean - an optional flag indicating whether the returned intent | |||
| * should start a VR purchase flow. The apiVersion must also be 7 or | |||
| * later to use this flag. | |||
| */ | |||
| public android.os.Bundle getBuyIntentExtraParams(int apiVersion, java.lang.String packageName, java.lang.String sku, java.lang.String type, java.lang.String developerPayload, android.os.Bundle extraParams) throws android.os.RemoteException; | |||
| /** | |||
| * Returns the most recent purchase made by the user for each SKU, even if that purchase is | |||
| * expired, canceled, or consumed. | |||
| * @param apiVersion billing API version that the app is using, must be 6 or later | |||
| * @param packageName package name of the calling app | |||
| * @param type of the in-app items being requested ("inapp" for one-time purchases | |||
| * and "subs" for subscriptions) | |||
| * @param continuationToken to be set as null for the first call, if the number of owned | |||
| * skus is too large, a continuationToken is returned in the response bundle. | |||
| * This method can be called again with the continuation token to get the next set of | |||
| * owned skus. | |||
| * @param extraParams a Bundle with extra params that would be appended into http request | |||
| * query string. Not used at this moment. Reserved for future functionality. | |||
| * @return Bundle containing the following key-value pairs | |||
| * "RESPONSE_CODE" with int value: RESULT_OK(0) if success, | |||
| * {@link IabHelper#BILLING_RESPONSE_RESULT_*} response codes on failures. | |||
| * | |||
| * "INAPP_PURCHASE_ITEM_LIST" - ArrayList<String> containing the list of SKUs | |||
| * "INAPP_PURCHASE_DATA_LIST" - ArrayList<String> containing the purchase information | |||
| * "INAPP_DATA_SIGNATURE_LIST"- ArrayList<String> containing the signatures | |||
| * of the purchase information | |||
| * "INAPP_CONTINUATION_TOKEN" - String containing a continuation token for the | |||
| * next set of in-app purchases. Only set if the | |||
| * user has more owned skus than the current list. | |||
| */ | |||
| public android.os.Bundle getPurchaseHistory(int apiVersion, java.lang.String packageName, java.lang.String type, java.lang.String continuationToken, android.os.Bundle extraParams) throws android.os.RemoteException; | |||
| public int isBillingSupportedExtraParams(int apiVersion, java.lang.String packageName, java.lang.String type, android.os.Bundle extraParams) throws android.os.RemoteException; | |||
| } | |||
| @@ -0,0 +1,138 @@ | |||
| package com.roli.juce.pluginhost; | |||
| import android.content.ContentProvider; | |||
| import android.content.ContentValues; | |||
| import android.content.res.AssetFileDescriptor; | |||
| import android.content.res.Resources; | |||
| import android.database.Cursor; | |||
| import android.database.MatrixCursor; | |||
| import android.net.Uri; | |||
| import android.os.FileObserver; | |||
| import android.os.ParcelFileDescriptor; | |||
| import java.lang.String; | |||
| public final class SharingContentProvider extends ContentProvider | |||
| { | |||
| private Object lock = new Object(); | |||
| private native void contentSharerFileObserverEvent (long host, int event, String path); | |||
| private native Cursor contentSharerQuery (Uri uri, String[] projection, String selection, | |||
| String[] selectionArgs, String sortOrder); | |||
| private native void contentSharerCursorClosed (long host); | |||
| private native AssetFileDescriptor contentSharerOpenFile (Uri uri, String mode); | |||
| private native String[] contentSharerGetStreamTypes (Uri uri, String mimeTypeFilter); | |||
| public final class ProviderFileObserver extends FileObserver | |||
| { | |||
| public ProviderFileObserver (long hostToUse, String path, int mask) | |||
| { | |||
| super (path, mask); | |||
| host = hostToUse; | |||
| } | |||
| public void onEvent (int event, String path) | |||
| { | |||
| contentSharerFileObserverEvent (host, event, path); | |||
| } | |||
| private long host; | |||
| } | |||
| public final class ProviderCursor extends MatrixCursor | |||
| { | |||
| ProviderCursor (long hostToUse, String[] columnNames) | |||
| { | |||
| super (columnNames); | |||
| host = hostToUse; | |||
| } | |||
| @Override | |||
| public void close() | |||
| { | |||
| super.close(); | |||
| contentSharerCursorClosed (host); | |||
| } | |||
| private long host; | |||
| } | |||
| @Override | |||
| public boolean onCreate() | |||
| { | |||
| return true; | |||
| } | |||
| @Override | |||
| public Cursor query (Uri url, String[] projection, String selection, | |||
| String[] selectionArgs, String sortOrder) | |||
| { | |||
| synchronized (lock) | |||
| { | |||
| return contentSharerQuery (url, projection, selection, selectionArgs, sortOrder); | |||
| } | |||
| } | |||
| @Override | |||
| public Uri insert (Uri uri, ContentValues values) | |||
| { | |||
| return null; | |||
| } | |||
| @Override | |||
| public int update (Uri uri, ContentValues values, String selection, | |||
| String[] selectionArgs) | |||
| { | |||
| return 0; | |||
| } | |||
| @Override | |||
| public int delete (Uri uri, String selection, String[] selectionArgs) | |||
| { | |||
| return 0; | |||
| } | |||
| @Override | |||
| public String getType (Uri uri) | |||
| { | |||
| return null; | |||
| } | |||
| @Override | |||
| public AssetFileDescriptor openAssetFile (Uri uri, String mode) | |||
| { | |||
| synchronized (lock) | |||
| { | |||
| return contentSharerOpenFile (uri, mode); | |||
| } | |||
| } | |||
| @Override | |||
| public ParcelFileDescriptor openFile (Uri uri, String mode) | |||
| { | |||
| synchronized (lock) | |||
| { | |||
| AssetFileDescriptor result = contentSharerOpenFile (uri, mode); | |||
| if (result != null) | |||
| return result.getParcelFileDescriptor(); | |||
| return null; | |||
| } | |||
| } | |||
| @Override | |||
| public String[] getStreamTypes (Uri uri, String mimeTypeFilter) | |||
| { | |||
| synchronized (lock) | |||
| { | |||
| return contentSharerGetStreamTypes (uri, mimeTypeFilter); | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,5 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <resources> | |||
| <string name="app_name">AudioPluginHost</string> | |||
| </resources> | |||
| @@ -0,0 +1,15 @@ | |||
| buildscript { | |||
| repositories { | |||
| jcenter() | |||
| google() | |||
| } | |||
| dependencies { | |||
| classpath 'com.android.tools.build:gradle:3.0.1' | |||
| } | |||
| } | |||
| allprojects { | |||
| repositories { | |||
| jcenter() | |||
| } | |||
| } | |||
| @@ -0,0 +1,202 @@ | |||
| Apache License | |||
| Version 2.0, January 2004 | |||
| http://www.apache.org/licenses/ | |||
| TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | |||
| 1. Definitions. | |||
| "License" shall mean the terms and conditions for use, reproduction, | |||
| and distribution as defined by Sections 1 through 9 of this document. | |||
| "Licensor" shall mean the copyright owner or entity authorized by | |||
| the copyright owner that is granting the License. | |||
| "Legal Entity" shall mean the union of the acting entity and all | |||
| other entities that control, are controlled by, or are under common | |||
| control with that entity. For the purposes of this definition, | |||
| "control" means (i) the power, direct or indirect, to cause the | |||
| direction or management of such entity, whether by contract or | |||
| otherwise, or (ii) ownership of fifty percent (50%) or more of the | |||
| outstanding shares, or (iii) beneficial ownership of such entity. | |||
| "You" (or "Your") shall mean an individual or Legal Entity | |||
| exercising permissions granted by this License. | |||
| "Source" form shall mean the preferred form for making modifications, | |||
| including but not limited to software source code, documentation | |||
| source, and configuration files. | |||
| "Object" form shall mean any form resulting from mechanical | |||
| transformation or translation of a Source form, including but | |||
| not limited to compiled object code, generated documentation, | |||
| and conversions to other media types. | |||
| "Work" shall mean the work of authorship, whether in Source or | |||
| Object form, made available under the License, as indicated by a | |||
| copyright notice that is included in or attached to the work | |||
| (an example is provided in the Appendix below). | |||
| "Derivative Works" shall mean any work, whether in Source or Object | |||
| form, that is based on (or derived from) the Work and for which the | |||
| editorial revisions, annotations, elaborations, or other modifications | |||
| represent, as a whole, an original work of authorship. For the purposes | |||
| of this License, Derivative Works shall not include works that remain | |||
| separable from, or merely link (or bind by name) to the interfaces of, | |||
| the Work and Derivative Works thereof. | |||
| "Contribution" shall mean any work of authorship, including | |||
| the original version of the Work and any modifications or additions | |||
| to that Work or Derivative Works thereof, that is intentionally | |||
| submitted to Licensor for inclusion in the Work by the copyright owner | |||
| or by an individual or Legal Entity authorized to submit on behalf of | |||
| the copyright owner. For the purposes of this definition, "submitted" | |||
| means any form of electronic, verbal, or written communication sent | |||
| to the Licensor or its representatives, including but not limited to | |||
| communication on electronic mailing lists, source code control systems, | |||
| and issue tracking systems that are managed by, or on behalf of, the | |||
| Licensor for the purpose of discussing and improving the Work, but | |||
| excluding communication that is conspicuously marked or otherwise | |||
| designated in writing by the copyright owner as "Not a Contribution." | |||
| "Contributor" shall mean Licensor and any individual or Legal Entity | |||
| on behalf of whom a Contribution has been received by Licensor and | |||
| subsequently incorporated within the Work. | |||
| 2. Grant of Copyright License. Subject to the terms and conditions of | |||
| this License, each Contributor hereby grants to You a perpetual, | |||
| worldwide, non-exclusive, no-charge, royalty-free, irrevocable | |||
| copyright license to reproduce, prepare Derivative Works of, | |||
| publicly display, publicly perform, sublicense, and distribute the | |||
| Work and such Derivative Works in Source or Object form. | |||
| 3. Grant of Patent License. Subject to the terms and conditions of | |||
| this License, each Contributor hereby grants to You a perpetual, | |||
| worldwide, non-exclusive, no-charge, royalty-free, irrevocable | |||
| (except as stated in this section) patent license to make, have made, | |||
| use, offer to sell, sell, import, and otherwise transfer the Work, | |||
| where such license applies only to those patent claims licensable | |||
| by such Contributor that are necessarily infringed by their | |||
| Contribution(s) alone or by combination of their Contribution(s) | |||
| with the Work to which such Contribution(s) was submitted. If You | |||
| institute patent litigation against any entity (including a | |||
| cross-claim or counterclaim in a lawsuit) alleging that the Work | |||
| or a Contribution incorporated within the Work constitutes direct | |||
| or contributory patent infringement, then any patent licenses | |||
| granted to You under this License for that Work shall terminate | |||
| as of the date such litigation is filed. | |||
| 4. Redistribution. You may reproduce and distribute copies of the | |||
| Work or Derivative Works thereof in any medium, with or without | |||
| modifications, and in Source or Object form, provided that You | |||
| meet the following conditions: | |||
| (a) You must give any other recipients of the Work or | |||
| Derivative Works a copy of this License; and | |||
| (b) You must cause any modified files to carry prominent notices | |||
| stating that You changed the files; and | |||
| (c) You must retain, in the Source form of any Derivative Works | |||
| that You distribute, all copyright, patent, trademark, and | |||
| attribution notices from the Source form of the Work, | |||
| excluding those notices that do not pertain to any part of | |||
| the Derivative Works; and | |||
| (d) If the Work includes a "NOTICE" text file as part of its | |||
| distribution, then any Derivative Works that You distribute must | |||
| include a readable copy of the attribution notices contained | |||
| within such NOTICE file, excluding those notices that do not | |||
| pertain to any part of the Derivative Works, in at least one | |||
| of the following places: within a NOTICE text file distributed | |||
| as part of the Derivative Works; within the Source form or | |||
| documentation, if provided along with the Derivative Works; or, | |||
| within a display generated by the Derivative Works, if and | |||
| wherever such third-party notices normally appear. The contents | |||
| of the NOTICE file are for informational purposes only and | |||
| do not modify the License. You may add Your own attribution | |||
| notices within Derivative Works that You distribute, alongside | |||
| or as an addendum to the NOTICE text from the Work, provided | |||
| that such additional attribution notices cannot be construed | |||
| as modifying the License. | |||
| You may add Your own copyright statement to Your modifications and | |||
| may provide additional or different license terms and conditions | |||
| for use, reproduction, or distribution of Your modifications, or | |||
| for any such Derivative Works as a whole, provided Your use, | |||
| reproduction, and distribution of the Work otherwise complies with | |||
| the conditions stated in this License. | |||
| 5. Submission of Contributions. Unless You explicitly state otherwise, | |||
| any Contribution intentionally submitted for inclusion in the Work | |||
| by You to the Licensor shall be under the terms and conditions of | |||
| this License, without any additional terms or conditions. | |||
| Notwithstanding the above, nothing herein shall supersede or modify | |||
| the terms of any separate license agreement you may have executed | |||
| with Licensor regarding such Contributions. | |||
| 6. Trademarks. This License does not grant permission to use the trade | |||
| names, trademarks, service marks, or product names of the Licensor, | |||
| except as required for reasonable and customary use in describing the | |||
| origin of the Work and reproducing the content of the NOTICE file. | |||
| 7. Disclaimer of Warranty. Unless required by applicable law or | |||
| agreed to in writing, Licensor provides the Work (and each | |||
| Contributor provides its Contributions) on an "AS IS" BASIS, | |||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | |||
| implied, including, without limitation, any warranties or conditions | |||
| of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | |||
| PARTICULAR PURPOSE. You are solely responsible for determining the | |||
| appropriateness of using or redistributing the Work and assume any | |||
| risks associated with Your exercise of permissions under this License. | |||
| 8. Limitation of Liability. In no event and under no legal theory, | |||
| whether in tort (including negligence), contract, or otherwise, | |||
| unless required by applicable law (such as deliberate and grossly | |||
| negligent acts) or agreed to in writing, shall any Contributor be | |||
| liable to You for damages, including any direct, indirect, special, | |||
| incidental, or consequential damages of any character arising as a | |||
| result of this License or out of the use or inability to use the | |||
| Work (including but not limited to damages for loss of goodwill, | |||
| work stoppage, computer failure or malfunction, or any and all | |||
| other commercial damages or losses), even if such Contributor | |||
| has been advised of the possibility of such damages. | |||
| 9. Accepting Warranty or Additional Liability. While redistributing | |||
| the Work or Derivative Works thereof, You may choose to offer, | |||
| and charge a fee for, acceptance of support, warranty, indemnity, | |||
| or other liability obligations and/or rights consistent with this | |||
| License. However, in accepting such obligations, You may act only | |||
| on Your own behalf and on Your sole responsibility, not on behalf | |||
| of any other Contributor, and only if You agree to indemnify, | |||
| defend, and hold each Contributor harmless for any liability | |||
| incurred by, or claims asserted against, such Contributor by reason | |||
| of your accepting any such warranty or additional liability. | |||
| END OF TERMS AND CONDITIONS | |||
| APPENDIX: How to apply the Apache License to your work. | |||
| To apply the Apache License to your work, attach the following | |||
| boilerplate notice, with the fields enclosed by brackets "{}" | |||
| replaced with your own identifying information. (Don't include | |||
| the brackets!) The text should be enclosed in the appropriate | |||
| comment syntax for the file format. We also recommend that a | |||
| file or class name and description of purpose be included on the | |||
| same "printed page" as the copyright notice for easier | |||
| identification within third-party archives. | |||
| Copyright {yyyy} {name of copyright owner} | |||
| Licensed under the Apache License, Version 2.0 (the "License"); | |||
| you may not use this file except in compliance with the License. | |||
| You may obtain a copy of the License at | |||
| http://www.apache.org/licenses/LICENSE-2.0 | |||
| Unless required by applicable law or agreed to in writing, software | |||
| distributed under the License is distributed on an "AS IS" BASIS, | |||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| See the License for the specific language governing permissions and | |||
| limitations under the License. | |||
| @@ -0,0 +1 @@ | |||
| distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip | |||
| @@ -0,0 +1,160 @@ | |||
| #!/usr/bin/env bash | |||
| ############################################################################## | |||
| ## | |||
| ## Gradle start up script for UN*X | |||
| ## | |||
| ############################################################################## | |||
| # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | |||
| DEFAULT_JVM_OPTS="" | |||
| APP_NAME="Gradle" | |||
| APP_BASE_NAME=`basename "$0"` | |||
| # Use the maximum available, or set MAX_FD != -1 to use that value. | |||
| MAX_FD="maximum" | |||
| warn ( ) { | |||
| echo "$*" | |||
| } | |||
| die ( ) { | |||
| echo | |||
| echo "$*" | |||
| echo | |||
| exit 1 | |||
| } | |||
| # OS specific support (must be 'true' or 'false'). | |||
| cygwin=false | |||
| msys=false | |||
| darwin=false | |||
| case "`uname`" in | |||
| CYGWIN* ) | |||
| cygwin=true | |||
| ;; | |||
| Darwin* ) | |||
| darwin=true | |||
| ;; | |||
| MINGW* ) | |||
| msys=true | |||
| ;; | |||
| esac | |||
| # Attempt to set APP_HOME | |||
| # Resolve links: $0 may be a link | |||
| PRG="$0" | |||
| # Need this for relative symlinks. | |||
| while [ -h "$PRG" ] ; do | |||
| ls=`ls -ld "$PRG"` | |||
| link=`expr "$ls" : '.*-> \(.*\)$'` | |||
| if expr "$link" : '/.*' > /dev/null; then | |||
| PRG="$link" | |||
| else | |||
| PRG=`dirname "$PRG"`"/$link" | |||
| fi | |||
| done | |||
| SAVED="`pwd`" | |||
| cd "`dirname \"$PRG\"`/" >/dev/null | |||
| APP_HOME="`pwd -P`" | |||
| cd "$SAVED" >/dev/null | |||
| CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | |||
| # Determine the Java command to use to start the JVM. | |||
| if [ -n "$JAVA_HOME" ] ; then | |||
| if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | |||
| # IBM's JDK on AIX uses strange locations for the executables | |||
| JAVACMD="$JAVA_HOME/jre/sh/java" | |||
| else | |||
| JAVACMD="$JAVA_HOME/bin/java" | |||
| fi | |||
| if [ ! -x "$JAVACMD" ] ; then | |||
| die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | |||
| Please set the JAVA_HOME variable in your environment to match the | |||
| location of your Java installation." | |||
| fi | |||
| else | |||
| JAVACMD="java" | |||
| which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | |||
| Please set the JAVA_HOME variable in your environment to match the | |||
| location of your Java installation." | |||
| fi | |||
| # Increase the maximum file descriptors if we can. | |||
| if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then | |||
| MAX_FD_LIMIT=`ulimit -H -n` | |||
| if [ $? -eq 0 ] ; then | |||
| if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then | |||
| MAX_FD="$MAX_FD_LIMIT" | |||
| fi | |||
| ulimit -n $MAX_FD | |||
| if [ $? -ne 0 ] ; then | |||
| warn "Could not set maximum file descriptor limit: $MAX_FD" | |||
| fi | |||
| else | |||
| warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" | |||
| fi | |||
| fi | |||
| # For Darwin, add options to specify how the application appears in the dock | |||
| if $darwin; then | |||
| GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" | |||
| fi | |||
| # For Cygwin, switch paths to Windows format before running java | |||
| if $cygwin ; then | |||
| APP_HOME=`cygpath --path --mixed "$APP_HOME"` | |||
| CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` | |||
| JAVACMD=`cygpath --unix "$JAVACMD"` | |||
| # We build the pattern for arguments to be converted via cygpath | |||
| ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` | |||
| SEP="" | |||
| for dir in $ROOTDIRSRAW ; do | |||
| ROOTDIRS="$ROOTDIRS$SEP$dir" | |||
| SEP="|" | |||
| done | |||
| OURCYGPATTERN="(^($ROOTDIRS))" | |||
| # Add a user-defined pattern to the cygpath arguments | |||
| if [ "$GRADLE_CYGPATTERN" != "" ] ; then | |||
| OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" | |||
| fi | |||
| # Now convert the arguments - kludge to limit ourselves to /bin/sh | |||
| i=0 | |||
| for arg in "$@" ; do | |||
| CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` | |||
| CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option | |||
| if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition | |||
| eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` | |||
| else | |||
| eval `echo args$i`="\"$arg\"" | |||
| fi | |||
| i=$((i+1)) | |||
| done | |||
| case $i in | |||
| (0) set -- ;; | |||
| (1) set -- "$args0" ;; | |||
| (2) set -- "$args0" "$args1" ;; | |||
| (3) set -- "$args0" "$args1" "$args2" ;; | |||
| (4) set -- "$args0" "$args1" "$args2" "$args3" ;; | |||
| (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; | |||
| (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; | |||
| (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; | |||
| (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; | |||
| (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; | |||
| esac | |||
| fi | |||
| # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules | |||
| function splitJvmOpts() { | |||
| JVM_OPTS=("$@") | |||
| } | |||
| eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS | |||
| JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" | |||
| exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" | |||
| @@ -0,0 +1,90 @@ | |||
| @if "%DEBUG%" == "" @echo off | |||
| @rem ########################################################################## | |||
| @rem | |||
| @rem Gradle startup script for Windows | |||
| @rem | |||
| @rem ########################################################################## | |||
| @rem Set local scope for the variables with windows NT shell | |||
| if "%OS%"=="Windows_NT" setlocal | |||
| @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | |||
| set DEFAULT_JVM_OPTS= | |||
| set DIRNAME=%~dp0 | |||
| if "%DIRNAME%" == "" set DIRNAME=. | |||
| set APP_BASE_NAME=%~n0 | |||
| set APP_HOME=%DIRNAME% | |||
| @rem Find java.exe | |||
| if defined JAVA_HOME goto findJavaFromJavaHome | |||
| set JAVA_EXE=java.exe | |||
| %JAVA_EXE% -version >NUL 2>&1 | |||
| if "%ERRORLEVEL%" == "0" goto init | |||
| echo. | |||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | |||
| echo. | |||
| echo Please set the JAVA_HOME variable in your environment to match the | |||
| echo location of your Java installation. | |||
| goto fail | |||
| :findJavaFromJavaHome | |||
| set JAVA_HOME=%JAVA_HOME:"=% | |||
| set JAVA_EXE=%JAVA_HOME%/bin/java.exe | |||
| if exist "%JAVA_EXE%" goto init | |||
| echo. | |||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | |||
| echo. | |||
| echo Please set the JAVA_HOME variable in your environment to match the | |||
| echo location of your Java installation. | |||
| goto fail | |||
| :init | |||
| @rem Get command-line arguments, handling Windowz variants | |||
| if not "%OS%" == "Windows_NT" goto win9xME_args | |||
| if "%@eval[2+2]" == "4" goto 4NT_args | |||
| :win9xME_args | |||
| @rem Slurp the command line arguments. | |||
| set CMD_LINE_ARGS= | |||
| set _SKIP=2 | |||
| :win9xME_args_slurp | |||
| if "x%~1" == "x" goto execute | |||
| set CMD_LINE_ARGS=%* | |||
| goto execute | |||
| :4NT_args | |||
| @rem Get arguments from the 4NT Shell from JP Software | |||
| set CMD_LINE_ARGS=%$ | |||
| :execute | |||
| @rem Setup the command line | |||
| set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | |||
| @rem Execute Gradle | |||
| "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% | |||
| :end | |||
| @rem End local scope for the variables with windows NT shell | |||
| if "%ERRORLEVEL%"=="0" goto mainEnd | |||
| :fail | |||
| rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | |||
| rem the _cmd.exe /c_ return code! | |||
| if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 | |||
| exit /b 1 | |||
| :mainEnd | |||
| if "%OS%"=="Windows_NT" endlocal | |||
| :omega | |||
| @@ -0,0 +1 @@ | |||
| include ':app' | |||
| @@ -35,7 +35,7 @@ ifeq ($(CONFIG),Debug) | |||
| TARGET_ARCH := -march=native | |||
| endif | |||
| JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I$(HOME)/SDKs/VST_SDK/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) | |||
| JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) | |||
| JUCE_CPPFLAGS_APP := -DJucePlugin_Build_VST=0 -DJucePlugin_Build_VST3=0 -DJucePlugin_Build_AU=0 -DJucePlugin_Build_AUv3=0 -DJucePlugin_Build_RTAS=0 -DJucePlugin_Build_AAX=0 -DJucePlugin_Build_Standalone=0 | |||
| JUCE_TARGET_APP := AudioPluginHost | |||
| @@ -56,7 +56,7 @@ ifeq ($(CONFIG),Release) | |||
| TARGET_ARCH := -march=native | |||
| endif | |||
| JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I$(HOME)/SDKs/VST_SDK/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) | |||
| JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) | |||
| JUCE_CPPFLAGS_APP := -DJucePlugin_Build_VST=0 -DJucePlugin_Build_VST3=0 -DJucePlugin_Build_AU=0 -DJucePlugin_Build_AUv3=0 -DJucePlugin_Build_RTAS=0 -DJucePlugin_Build_AAX=0 -DJucePlugin_Build_Standalone=0 | |||
| JUCE_TARGET_APP := AudioPluginHost | |||
| @@ -68,12 +68,13 @@ ifeq ($(CONFIG),Release) | |||
| endif | |||
| OBJECTS_APP := \ | |||
| $(JUCE_OBJDIR)/FilterGraph_62e9c017.o \ | |||
| $(JUCE_OBJDIR)/FilterIOConfiguration_1cc9b659.o \ | |||
| $(JUCE_OBJDIR)/GraphEditorPanel_3dbd4872.o \ | |||
| $(JUCE_OBJDIR)/FilterGraph_769715e3.o \ | |||
| $(JUCE_OBJDIR)/FilterIOConfiguration_d1cf3d25.o \ | |||
| $(JUCE_OBJDIR)/InternalFilters_eceadbab.o \ | |||
| $(JUCE_OBJDIR)/GraphEditorPanel_2223d925.o \ | |||
| $(JUCE_OBJDIR)/MainHostWindow_b3494acd.o \ | |||
| $(JUCE_OBJDIR)/HostStartup_5ce96f96.o \ | |||
| $(JUCE_OBJDIR)/InternalFilters_beb54bdf.o \ | |||
| $(JUCE_OBJDIR)/MainHostWindow_e920295a.o \ | |||
| $(JUCE_OBJDIR)/BinaryData_ce4232d4.o \ | |||
| $(JUCE_OBJDIR)/include_juce_audio_basics_8a4e984a.o \ | |||
| $(JUCE_OBJDIR)/include_juce_audio_devices_63111d02.o \ | |||
| $(JUCE_OBJDIR)/include_juce_audio_formats_15f82001.o \ | |||
| @@ -100,34 +101,39 @@ $(JUCE_OUTDIR)/$(JUCE_TARGET_APP) : check-pkg-config $(OBJECTS_APP) $(RESOURCES) | |||
| -$(V_AT)mkdir -p $(JUCE_OUTDIR) | |||
| $(V_AT)$(CXX) -o $(JUCE_OUTDIR)/$(JUCE_TARGET_APP) $(OBJECTS_APP) $(JUCE_LDFLAGS) $(JUCE_LDFLAGS_APP) $(RESOURCES) $(TARGET_ARCH) | |||
| $(JUCE_OBJDIR)/FilterGraph_62e9c017.o: ../../Source/FilterGraph.cpp | |||
| $(JUCE_OBJDIR)/FilterGraph_769715e3.o: ../../Source/Filters/FilterGraph.cpp | |||
| -$(V_AT)mkdir -p $(JUCE_OBJDIR) | |||
| @echo "Compiling FilterGraph.cpp" | |||
| $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" | |||
| $(JUCE_OBJDIR)/FilterIOConfiguration_1cc9b659.o: ../../Source/FilterIOConfiguration.cpp | |||
| $(JUCE_OBJDIR)/FilterIOConfiguration_d1cf3d25.o: ../../Source/Filters/FilterIOConfiguration.cpp | |||
| -$(V_AT)mkdir -p $(JUCE_OBJDIR) | |||
| @echo "Compiling FilterIOConfiguration.cpp" | |||
| $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" | |||
| $(JUCE_OBJDIR)/GraphEditorPanel_3dbd4872.o: ../../Source/GraphEditorPanel.cpp | |||
| $(JUCE_OBJDIR)/InternalFilters_eceadbab.o: ../../Source/Filters/InternalFilters.cpp | |||
| -$(V_AT)mkdir -p $(JUCE_OBJDIR) | |||
| @echo "Compiling InternalFilters.cpp" | |||
| $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" | |||
| $(JUCE_OBJDIR)/GraphEditorPanel_2223d925.o: ../../Source/UI/GraphEditorPanel.cpp | |||
| -$(V_AT)mkdir -p $(JUCE_OBJDIR) | |||
| @echo "Compiling GraphEditorPanel.cpp" | |||
| $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" | |||
| $(JUCE_OBJDIR)/HostStartup_5ce96f96.o: ../../Source/HostStartup.cpp | |||
| $(JUCE_OBJDIR)/MainHostWindow_b3494acd.o: ../../Source/UI/MainHostWindow.cpp | |||
| -$(V_AT)mkdir -p $(JUCE_OBJDIR) | |||
| @echo "Compiling HostStartup.cpp" | |||
| @echo "Compiling MainHostWindow.cpp" | |||
| $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" | |||
| $(JUCE_OBJDIR)/InternalFilters_beb54bdf.o: ../../Source/InternalFilters.cpp | |||
| $(JUCE_OBJDIR)/HostStartup_5ce96f96.o: ../../Source/HostStartup.cpp | |||
| -$(V_AT)mkdir -p $(JUCE_OBJDIR) | |||
| @echo "Compiling InternalFilters.cpp" | |||
| @echo "Compiling HostStartup.cpp" | |||
| $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" | |||
| $(JUCE_OBJDIR)/MainHostWindow_e920295a.o: ../../Source/MainHostWindow.cpp | |||
| $(JUCE_OBJDIR)/BinaryData_ce4232d4.o: ../../JuceLibraryCode/BinaryData.cpp | |||
| -$(V_AT)mkdir -p $(JUCE_OBJDIR) | |||
| @echo "Compiling MainHostWindow.cpp" | |||
| @echo "Compiling BinaryData.cpp" | |||
| $(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" | |||
| $(JUCE_OBJDIR)/include_juce_audio_basics_8a4e984a.o: ../../JuceLibraryCode/include_juce_audio_basics.cpp | |||
| @@ -24,12 +24,14 @@ | |||
| A02C9F4C4B840C27B6CAFEBD = {isa = PBXBuildFile; fileRef = 89309C0C5F3269BD06BE7F27; }; | |||
| 4DB15177DDC357F4503F88CF = {isa = PBXBuildFile; fileRef = B457EE687507BF1DEEA7581F; }; | |||
| D92C7BF86C9CCF6B4D14F809 = {isa = PBXBuildFile; fileRef = 7DA35787B5F6F7440D667CC8; }; | |||
| 4C88899EB7993A76A97643FE = {isa = PBXBuildFile; fileRef = 9BA1DD697B98005D24F7EC3C; }; | |||
| 485A37478F7EAA352DD1A86A = {isa = PBXBuildFile; fileRef = 01FE7ED58992BC9683BA3C94; }; | |||
| 040EB574807E8A86F124D851 = {isa = PBXBuildFile; fileRef = B1C6B9E4B9FDC17AA298E541; }; | |||
| 443244451A0F2064D4767337 = {isa = PBXBuildFile; fileRef = 2A6983F82B13F9E8B10299AE; }; | |||
| 2E74188531792924F0C73142 = {isa = PBXBuildFile; fileRef = 05863BDFC582C9552A86DF49; }; | |||
| C8423A9611C8AAF27468847D = {isa = PBXBuildFile; fileRef = 336FD30C38BD0A176161B8AE; }; | |||
| 786AF545C1C1E4D11140C3DF = {isa = PBXBuildFile; fileRef = 43647951ECC7F030B9953965; }; | |||
| 3E1689E23B9C85F03209DCEF = {isa = PBXBuildFile; fileRef = 3D78A731234A833CA112AE45; }; | |||
| F635D974599DEC2ED91E6A88 = {isa = PBXBuildFile; fileRef = 04AABCD3491318FB32E844B4; }; | |||
| A1B0416DA378BB0C3AD6F74B = {isa = PBXBuildFile; fileRef = A66EFAC64B1B67B536C73415; }; | |||
| D493393499E0822C70009A63 = {isa = PBXBuildFile; fileRef = 362BB539489999164C3A3D5B; }; | |||
| 6CD3B433544911DA879170AE = {isa = PBXBuildFile; fileRef = 1EC0F33A3BABE58138317375; }; | |||
| A0144A682BF4843C8CF53FE4 = {isa = PBXBuildFile; fileRef = 6D107D7946DC5976B766345B; }; | |||
| 15CCE43D7DCFC649638919D4 = {isa = PBXBuildFile; fileRef = 4C7D82F9274A4F9DBF11235C; }; | |||
| 5C4D406B924230F83E3580AD = {isa = PBXBuildFile; fileRef = 65968EA1B476D71F14DE1D58; }; | |||
| F4DD98B9310B679D50A2C8A6 = {isa = PBXBuildFile; fileRef = 5D250A57C7DEA80248F30EED; }; | |||
| @@ -44,21 +46,25 @@ | |||
| C38D14DC58F1941DD5E4BF60 = {isa = PBXBuildFile; fileRef = 2BE6C2DFD6EBB9A89109AEB5; }; | |||
| 2727A191DB1BAAC9C04B9081 = {isa = PBXBuildFile; fileRef = 37E4D5C341406B7072120006; }; | |||
| 84BAFE82A102D9C350672689 = {isa = PBXBuildFile; fileRef = 29D746FC68F69751796671A2; }; | |||
| 01FE7ED58992BC9683BA3C94 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterIOConfiguration.cpp; path = ../../Source/FilterIOConfiguration.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| 18DD15714443AFC3BAAE211C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterIOConfiguration.h; path = ../../Source/FilterIOConfiguration.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 1EC0F33A3BABE58138317375 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MainHostWindow.cpp; path = ../../Source/MainHostWindow.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| 04AABCD3491318FB32E844B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MainHostWindow.cpp; path = ../../Source/UI/MainHostWindow.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| 04DB9A49969ECC740CC25665 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GraphEditorPanel.h; path = ../../Source/UI/GraphEditorPanel.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 05863BDFC582C9552A86DF49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterGraph.cpp; path = ../../Source/Filters/FilterGraph.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| 1DADAD8E34AAF4AFF1C69DC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BinaryData.h; path = ../../JuceLibraryCode/BinaryData.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 29D746FC68F69751796671A2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_video.mm"; path = "../../JuceLibraryCode/include_juce_video.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 2B143B5431318DDB2104B46E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterGraph.h; path = ../../Source/FilterGraph.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 2A6983F82B13F9E8B10299AE = {isa = PBXFileReference; lastKnownFileType = file.icns; name = Icon.icns; path = Icon.icns; sourceTree = "SOURCE_ROOT"; }; | |||
| 2BE6C2DFD6EBB9A89109AEB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_gui_extra.mm"; path = "../../JuceLibraryCode/include_juce_gui_extra.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 30F22843EFEBF7AA841EB4D6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppConfig.h; path = ../../JuceLibraryCode/AppConfig.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 31D55A751C790CB81F58DDB7 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; | |||
| 362BB539489999164C3A3D5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = InternalFilters.cpp; path = ../../Source/InternalFilters.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| 336FD30C38BD0A176161B8AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterIOConfiguration.cpp; path = ../../Source/Filters/FilterIOConfiguration.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| 37E4D5C341406B7072120006 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_opengl.mm"; path = "../../JuceLibraryCode/include_juce_opengl.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 3C070DD522CDD11FFC87425D = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_audio_utils"; path = "../../../../modules/juce_audio_utils"; sourceTree = "SOURCE_ROOT"; }; | |||
| 3D57FE2A8877F12A61054726 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_core"; path = "../../../../modules/juce_core"; sourceTree = "SOURCE_ROOT"; }; | |||
| 3D78A731234A833CA112AE45 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GraphEditorPanel.cpp; path = ../../Source/UI/GraphEditorPanel.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| 43647951ECC7F030B9953965 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = InternalFilters.cpp; path = ../../Source/Filters/InternalFilters.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| 4C7D82F9274A4F9DBF11235C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_audio_basics.mm"; path = "../../JuceLibraryCode/include_juce_audio_basics.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 4DF6E6E41E10965AD169143B = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; | |||
| 5313EB852E41EE58B199B9A2 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_audio_devices"; path = "../../../../modules/juce_audio_devices"; sourceTree = "SOURCE_ROOT"; }; | |||
| 545D57A6AA801B38548B0CAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterGraph.h; path = ../../Source/Filters/FilterGraph.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 57DF618F1DE781556B7AFC32 = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info-App.plist"; path = "Info-App.plist"; sourceTree = "SOURCE_ROOT"; }; | |||
| 59842A98E5EBBC54B50C04CD = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_events"; path = "../../../../modules/juce_events"; sourceTree = "SOURCE_ROOT"; }; | |||
| 5ACC21AA45BBF48C3C64D56D = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; | |||
| @@ -67,10 +73,10 @@ | |||
| 5EF1D381F42AA8764597F189 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_data_structures.mm"; path = "../../JuceLibraryCode/include_juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 5FBD6C402617272052BB4D81 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_audio_processors.mm"; path = "../../JuceLibraryCode/include_juce_audio_processors.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 65968EA1B476D71F14DE1D58 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_audio_devices.mm"; path = "../../JuceLibraryCode/include_juce_audio_devices.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 6692043E22BB181F01767845 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainHostWindow.h; path = ../../Source/MainHostWindow.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 683CEE986A2467C850FE99E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_core.mm"; path = "../../JuceLibraryCode/include_juce_core.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 6A71B2BCAC4239072BC2BD7E = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_audio_basics"; path = "../../../../modules/juce_audio_basics"; sourceTree = "SOURCE_ROOT"; }; | |||
| 714C53257417E615916687E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PluginWindow.h; path = ../../Source/PluginWindow.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 6D107D7946DC5976B766345B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| 725D0D9C8C7FF7B3FB3020ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterIOConfiguration.h; path = ../../Source/Filters/FilterIOConfiguration.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 7DA35787B5F6F7440D667CC8 = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = RecentFilesMenuTemplate.nib; sourceTree = "SOURCE_ROOT"; }; | |||
| 81C1A7770E082F56FE5A90A7 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_opengl"; path = "../../../../modules/juce_opengl"; sourceTree = "SOURCE_ROOT"; }; | |||
| 82800DBA287EF4BAB13B42FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_graphics.mm"; path = "../../JuceLibraryCode/include_juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| @@ -82,42 +88,49 @@ | |||
| 938AE72315C6C93949F6220E = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_gui_basics"; path = "../../../../modules/juce_gui_basics"; sourceTree = "SOURCE_ROOT"; }; | |||
| 942A0F04EFB8D0B2FF9780BA = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; | |||
| 94CB96C8E4B51F52776C2638 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_graphics"; path = "../../../../modules/juce_graphics"; sourceTree = "SOURCE_ROOT"; }; | |||
| 97918AB43AD460AFA8FA2FFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PluginWindow.h; path = ../../Source/UI/PluginWindow.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 9794142D24966F93FFDE51A1 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; | |||
| 9BA1DD697B98005D24F7EC3C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterGraph.cpp; path = ../../Source/FilterGraph.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| 9EBEE3AE5856E877478607C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = InternalFilters.h; path = ../../Source/Filters/InternalFilters.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 9F9B445E6755CAA19E4344ED = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; | |||
| A4B568E26157FC282214976F = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVKit.framework; path = System/Library/Frameworks/AVKit.framework; sourceTree = SDKROOT; }; | |||
| A5DFC13E4F09134B0D226A3E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainHostWindow.h; path = ../../Source/UI/MainHostWindow.h; sourceTree = "SOURCE_ROOT"; }; | |||
| A5E7CA8A71D049BE2BD33861 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = "SOURCE_ROOT"; }; | |||
| A66EFAC64B1B67B536C73415 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = HostStartup.cpp; path = ../../Source/HostStartup.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| B0935EBBA4F6E2B05F3D1C0A = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; | |||
| B1C6B9E4B9FDC17AA298E541 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GraphEditorPanel.cpp; path = ../../Source/GraphEditorPanel.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| B285CAB91AE928C476CA4F9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_audio_utils.mm"; path = "../../JuceLibraryCode/include_juce_audio_utils.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| B2A1E626CC120982805754F6 = {isa = PBXFileReference; lastKnownFileType = image.png; name = JUCEAppIcon.png; path = ../../Source/JUCEAppIcon.png; sourceTree = "SOURCE_ROOT"; }; | |||
| B457EE687507BF1DEEA7581F = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; | |||
| B86B918291E1090C6A720971 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_data_structures"; path = "../../../../modules/juce_data_structures"; sourceTree = "SOURCE_ROOT"; }; | |||
| B8774D8AD307D798831C0DF7 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DiscRecording.framework; path = System/Library/Frameworks/DiscRecording.framework; sourceTree = SDKROOT; }; | |||
| B8E24A5CEE6B7055537725CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_cryptography.mm"; path = "../../JuceLibraryCode/include_juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| D313CF37B25D7FD313C4F336 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; | |||
| D4EBC17BDB7F88CCBC76730B = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; | |||
| DD8E5D0C88FA2C287F824357 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GraphEditorPanel.h; path = ../../Source/GraphEditorPanel.h; sourceTree = "SOURCE_ROOT"; }; | |||
| DDE115D3084ACA6DD6AA4471 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_video"; path = "../../../../modules/juce_video"; sourceTree = "SOURCE_ROOT"; }; | |||
| E68018DE199135B7F738FB17 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; | |||
| EE1BEF4055936CD0C543687C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = InternalFilters.h; path = ../../Source/InternalFilters.h; sourceTree = "SOURCE_ROOT"; }; | |||
| F299BECFB2AEA6105F014848 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_gui_extra"; path = "../../../../modules/juce_gui_extra"; sourceTree = "SOURCE_ROOT"; }; | |||
| F9AC862E9A3583B6C1488EE0 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_audio_formats"; path = "../../../../modules/juce_audio_formats"; sourceTree = "SOURCE_ROOT"; }; | |||
| FA21631C5536EA3DF55C7FA6 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_cryptography"; path = "../../../../modules/juce_cryptography"; sourceTree = "SOURCE_ROOT"; }; | |||
| FAF867E9E731D0880D40511F = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_audio_processors"; path = "../../../../modules/juce_audio_processors"; sourceTree = "SOURCE_ROOT"; }; | |||
| 97790EAEA01CFA5C3CA9737A = {isa = PBXGroup; children = ( | |||
| 9BA1DD697B98005D24F7EC3C, | |||
| 2B143B5431318DDB2104B46E, | |||
| 01FE7ED58992BC9683BA3C94, | |||
| 18DD15714443AFC3BAAE211C, | |||
| B1C6B9E4B9FDC17AA298E541, | |||
| DD8E5D0C88FA2C287F824357, | |||
| AA37F82D57C9BB4BE78FCCB9 = {isa = PBXGroup; children = ( | |||
| 05863BDFC582C9552A86DF49, | |||
| 545D57A6AA801B38548B0CAC, | |||
| 336FD30C38BD0A176161B8AE, | |||
| 725D0D9C8C7FF7B3FB3020ED, | |||
| 43647951ECC7F030B9953965, | |||
| 9EBEE3AE5856E877478607C7, ); name = Filters; sourceTree = "<group>"; }; | |||
| DE7B77306553B1204071B39A = {isa = PBXGroup; children = ( | |||
| 3D78A731234A833CA112AE45, | |||
| 04DB9A49969ECC740CC25665, | |||
| 04AABCD3491318FB32E844B4, | |||
| A5DFC13E4F09134B0D226A3E, | |||
| 97918AB43AD460AFA8FA2FFE, ); name = UI; sourceTree = "<group>"; }; | |||
| B225B7F2CAABD28A41E7C339 = {isa = PBXGroup; children = ( | |||
| AA37F82D57C9BB4BE78FCCB9, | |||
| DE7B77306553B1204071B39A, | |||
| A66EFAC64B1B67B536C73415, | |||
| 362BB539489999164C3A3D5B, | |||
| EE1BEF4055936CD0C543687C, | |||
| 1EC0F33A3BABE58138317375, | |||
| 6692043E22BB181F01767845, | |||
| 714C53257417E615916687E5, ); name = AudioPluginHost; sourceTree = "<group>"; }; | |||
| B2A1E626CC120982805754F6, ); name = Source; sourceTree = "<group>"; }; | |||
| 97790EAEA01CFA5C3CA9737A = {isa = PBXGroup; children = ( | |||
| B225B7F2CAABD28A41E7C339, ); name = AudioPluginHost; sourceTree = "<group>"; }; | |||
| 9D8FE1F65CAD416AA606C47A = {isa = PBXGroup; children = ( | |||
| 6A71B2BCAC4239072BC2BD7E, | |||
| 5313EB852E41EE58B199B9A2, | |||
| @@ -135,6 +148,8 @@ | |||
| DDE115D3084ACA6DD6AA4471, ); name = "JUCE Modules"; sourceTree = "<group>"; }; | |||
| 7E30376DDAD775FEFE64944C = {isa = PBXGroup; children = ( | |||
| 30F22843EFEBF7AA841EB4D6, | |||
| 6D107D7946DC5976B766345B, | |||
| 1DADAD8E34AAF4AFF1C69DC4, | |||
| 4C7D82F9274A4F9DBF11235C, | |||
| 65968EA1B476D71F14DE1D58, | |||
| 5D250A57C7DEA80248F30EED, | |||
| @@ -152,7 +167,8 @@ | |||
| A5E7CA8A71D049BE2BD33861, ); name = "JUCE Library Code"; sourceTree = "<group>"; }; | |||
| A97EE73C79DA3F729D46AF48 = {isa = PBXGroup; children = ( | |||
| 57DF618F1DE781556B7AFC32, | |||
| 7DA35787B5F6F7440D667CC8, ); name = Resources; sourceTree = "<group>"; }; | |||
| 7DA35787B5F6F7440D667CC8, | |||
| 2A6983F82B13F9E8B10299AE, ); name = Resources; sourceTree = "<group>"; }; | |||
| D1C4804CD275CB57A5C89A2D = {isa = PBXGroup; children = ( | |||
| 86CA337014D3F67E906FFD28, | |||
| D4EBC17BDB7F88CCBC76730B, | |||
| @@ -208,7 +224,7 @@ | |||
| MACOSX_DEPLOYMENT_TARGET = 10.11; | |||
| MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; | |||
| OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wstrict-aliasing -Wconversion -Wsign-compare -Woverloaded-virtual -Wextra-semi"; | |||
| PRODUCT_BUNDLE_IDENTIFIER = com.roli.pluginhost; | |||
| PRODUCT_BUNDLE_IDENTIFIER = com.roli.juce.pluginhost; | |||
| SDKROOT_ppc = macosx10.5; | |||
| USE_HEADERMAP = NO; }; name = Debug; }; | |||
| 49453CC5AD9F08D2738464AC = {isa = XCBuildConfiguration; buildSettings = { | |||
| @@ -242,7 +258,7 @@ | |||
| MACOSX_DEPLOYMENT_TARGET = 10.11; | |||
| MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; | |||
| OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wstrict-aliasing -Wconversion -Wsign-compare -Woverloaded-virtual -Wextra-semi"; | |||
| PRODUCT_BUNDLE_IDENTIFIER = com.roli.pluginhost; | |||
| PRODUCT_BUNDLE_IDENTIFIER = com.roli.juce.pluginhost; | |||
| SDKROOT_ppc = macosx10.5; | |||
| USE_HEADERMAP = NO; }; name = Release; }; | |||
| 8D1CA827F1EFD443BDCF198A = {isa = XCBuildConfiguration; buildSettings = { | |||
| @@ -327,14 +343,16 @@ | |||
| C8B793AC1BEFBE7A99BE8352, | |||
| 49453CC5AD9F08D2738464AC, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; | |||
| 2429BB4D705CC57F49418CFB = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( | |||
| D92C7BF86C9CCF6B4D14F809, ); runOnlyForDeploymentPostprocessing = 0; }; | |||
| D92C7BF86C9CCF6B4D14F809, | |||
| 443244451A0F2064D4767337, ); runOnlyForDeploymentPostprocessing = 0; }; | |||
| E8E94B3C187DA578BFCBDA98 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( | |||
| 4C88899EB7993A76A97643FE, | |||
| 485A37478F7EAA352DD1A86A, | |||
| 040EB574807E8A86F124D851, | |||
| 2E74188531792924F0C73142, | |||
| C8423A9611C8AAF27468847D, | |||
| 786AF545C1C1E4D11140C3DF, | |||
| 3E1689E23B9C85F03209DCEF, | |||
| F635D974599DEC2ED91E6A88, | |||
| A1B0416DA378BB0C3AD6F74B, | |||
| D493393499E0822C70009A63, | |||
| 6CD3B433544911DA879170AE, | |||
| A0144A682BF4843C8CF53FE4, | |||
| 15CCE43D7DCFC649638919D4, | |||
| 5C4D406B924230F83E3580AD, | |||
| F4DD98B9310B679D50A2C8A6, | |||
| @@ -6,9 +6,9 @@ | |||
| <key>CFBundleExecutable</key> | |||
| <string>${EXECUTABLE_NAME}</string> | |||
| <key>CFBundleIconFile</key> | |||
| <string></string> | |||
| <string>Icon.icns</string> | |||
| <key>CFBundleIdentifier</key> | |||
| <string>com.roli.pluginhost</string> | |||
| <string>com.roli.juce.pluginhost</string> | |||
| <key>CFBundleName</key> | |||
| <string>AudioPluginHost</string> | |||
| <key>CFBundleDisplayName</key> | |||
| @@ -148,12 +148,12 @@ | |||
| <Lib/> | |||
| </ItemDefinitionGroup> | |||
| <ItemGroup> | |||
| <ClCompile Include="..\..\Source\FilterGraph.cpp"/> | |||
| <ClCompile Include="..\..\Source\FilterIOConfiguration.cpp"/> | |||
| <ClCompile Include="..\..\Source\GraphEditorPanel.cpp"/> | |||
| <ClCompile Include="..\..\Source\Filters\FilterGraph.cpp"/> | |||
| <ClCompile Include="..\..\Source\Filters\FilterIOConfiguration.cpp"/> | |||
| <ClCompile Include="..\..\Source\Filters\InternalFilters.cpp"/> | |||
| <ClCompile Include="..\..\Source\UI\GraphEditorPanel.cpp"/> | |||
| <ClCompile Include="..\..\Source\UI\MainHostWindow.cpp"/> | |||
| <ClCompile Include="..\..\Source\HostStartup.cpp"/> | |||
| <ClCompile Include="..\..\Source\InternalFilters.cpp"/> | |||
| <ClCompile Include="..\..\Source\MainHostWindow.cpp"/> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioChannelSet.cpp"> | |||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||
| </ClCompile> | |||
| @@ -493,6 +493,9 @@ | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_LADSPAPluginFormat.cpp"> | |||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_LegacyAudioParameter.cpp"> | |||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.cpp"> | |||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||
| </ClCompile> | |||
| @@ -1795,6 +1798,7 @@ | |||
| <ClCompile Include="..\..\..\..\modules\juce_video\juce_video.cpp"> | |||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\JuceLibraryCode\BinaryData.cpp"/> | |||
| <ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_basics.cpp"/> | |||
| <ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_devices.cpp"/> | |||
| <ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_formats.cpp"/> | |||
| @@ -1811,12 +1815,12 @@ | |||
| <ClCompile Include="..\..\JuceLibraryCode\include_juce_video.cpp"/> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ClInclude Include="..\..\Source\FilterGraph.h"/> | |||
| <ClInclude Include="..\..\Source\FilterIOConfiguration.h"/> | |||
| <ClInclude Include="..\..\Source\GraphEditorPanel.h"/> | |||
| <ClInclude Include="..\..\Source\InternalFilters.h"/> | |||
| <ClInclude Include="..\..\Source\MainHostWindow.h"/> | |||
| <ClInclude Include="..\..\Source\PluginWindow.h"/> | |||
| <ClInclude Include="..\..\Source\Filters\FilterGraph.h"/> | |||
| <ClInclude Include="..\..\Source\Filters\FilterIOConfiguration.h"/> | |||
| <ClInclude Include="..\..\Source\Filters\InternalFilters.h"/> | |||
| <ClInclude Include="..\..\Source\UI\GraphEditorPanel.h"/> | |||
| <ClInclude Include="..\..\Source\UI\MainHostWindow.h"/> | |||
| <ClInclude Include="..\..\Source\UI\PluginWindow.h"/> | |||
| <ClInclude Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.h"/> | |||
| <ClInclude Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioChannelSet.h"/> | |||
| <ClInclude Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioDataConverters.h"/> | |||
| @@ -2436,13 +2440,16 @@ | |||
| <ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_VideoComponent.h"/> | |||
| <ClInclude Include="..\..\..\..\modules\juce_video\juce_video.h"/> | |||
| <ClInclude Include="..\..\JuceLibraryCode\AppConfig.h"/> | |||
| <ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"/> | |||
| <ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"/> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <None Include="..\..\Source\JUCEAppIcon.png"/> | |||
| <None Include="..\..\..\..\modules\juce_audio_formats\codecs\flac\Flac Licence.txt"/> | |||
| <None Include="..\..\..\..\modules\juce_audio_formats\codecs\oggvorbis\Ogg Vorbis Licence.txt"/> | |||
| <None Include="..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt"/> | |||
| <None Include="..\..\..\..\modules\juce_graphics\image_formats\pnglib\libpng_readme.txt"/> | |||
| <None Include=".\icon.ico"/> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ResourceCompile Include=".\resources.rc"/> | |||
| @@ -2,6 +2,15 @@ | |||
| <Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||
| <ItemGroup> | |||
| <Filter Include="AudioPluginHost\Source\Filters"> | |||
| <UniqueIdentifier>{01436C03-42F4-5952-30EF-7F9E81D997C6}</UniqueIdentifier> | |||
| </Filter> | |||
| <Filter Include="AudioPluginHost\Source\UI"> | |||
| <UniqueIdentifier>{8C61EB30-11E6-7029-4CC8-56C52EB1F1C3}</UniqueIdentifier> | |||
| </Filter> | |||
| <Filter Include="AudioPluginHost\Source"> | |||
| <UniqueIdentifier>{57E59C1B-8971-243F-9A1A-8EABFD456232}</UniqueIdentifier> | |||
| </Filter> | |||
| <Filter Include="AudioPluginHost"> | |||
| <UniqueIdentifier>{297DEAC9-184C-CA1D-D75C-DAA34116691C}</UniqueIdentifier> | |||
| </Filter> | |||
| @@ -370,23 +379,23 @@ | |||
| </Filter> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ClCompile Include="..\..\Source\FilterGraph.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\Filters\FilterGraph.cpp"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\Source\FilterIOConfiguration.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\Filters\FilterIOConfiguration.cpp"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\Source\GraphEditorPanel.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\Filters\InternalFilters.cpp"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\Source\HostStartup.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\UI\GraphEditorPanel.cpp"> | |||
| <Filter>AudioPluginHost\Source\UI</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\Source\InternalFilters.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\UI\MainHostWindow.cpp"> | |||
| <Filter>AudioPluginHost\Source\UI</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\Source\MainHostWindow.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\HostStartup.cpp"> | |||
| <Filter>AudioPluginHost\Source</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioChannelSet.cpp"> | |||
| <Filter>JUCE Modules\juce_audio_basics\buffers</Filter> | |||
| @@ -739,6 +748,9 @@ | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_LADSPAPluginFormat.cpp"> | |||
| <Filter>JUCE Modules\juce_audio_processors\format_types</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_LegacyAudioParameter.cpp"> | |||
| <Filter>JUCE Modules\juce_audio_processors\format_types</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.cpp"> | |||
| <Filter>JUCE Modules\juce_audio_processors\format_types</Filter> | |||
| </ClCompile> | |||
| @@ -2149,6 +2161,9 @@ | |||
| <ClCompile Include="..\..\..\..\modules\juce_video\juce_video.mm"> | |||
| <Filter>JUCE Modules\juce_video</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\JuceLibraryCode\BinaryData.cpp"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_basics.cpp"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </ClCompile> | |||
| @@ -2193,23 +2208,23 @@ | |||
| </ClCompile> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ClInclude Include="..\..\Source\FilterGraph.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\Filters\FilterGraph.h"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\Source\FilterIOConfiguration.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\Filters\FilterIOConfiguration.h"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\Source\GraphEditorPanel.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\Filters\InternalFilters.h"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\Source\InternalFilters.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\UI\GraphEditorPanel.h"> | |||
| <Filter>AudioPluginHost\Source\UI</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\Source\MainHostWindow.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\UI\MainHostWindow.h"> | |||
| <Filter>AudioPluginHost\Source\UI</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\Source\PluginWindow.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\UI\PluginWindow.h"> | |||
| <Filter>AudioPluginHost\Source\UI</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.h"> | |||
| <Filter>JUCE Modules\juce_audio_basics\audio_play_head</Filter> | |||
| @@ -4068,11 +4083,17 @@ | |||
| <ClInclude Include="..\..\JuceLibraryCode\AppConfig.h"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </ClInclude> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <None Include="..\..\Source\JUCEAppIcon.png"> | |||
| <Filter>AudioPluginHost\Source</Filter> | |||
| </None> | |||
| <None Include="..\..\..\..\modules\juce_audio_formats\codecs\flac\Flac Licence.txt"> | |||
| <Filter>JUCE Modules\juce_audio_formats\codecs\flac</Filter> | |||
| </None> | |||
| @@ -4085,6 +4106,9 @@ | |||
| <None Include="..\..\..\..\modules\juce_graphics\image_formats\pnglib\libpng_readme.txt"> | |||
| <Filter>JUCE Modules\juce_graphics\image_formats\pnglib</Filter> | |||
| </None> | |||
| <None Include=".\icon.ico"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </None> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ResourceCompile Include=".\resources.rc"> | |||
| @@ -29,3 +29,6 @@ BEGIN | |||
| END | |||
| #endif | |||
| IDI_ICON1 ICON DISCARDABLE "icon.ico" | |||
| IDI_ICON2 ICON DISCARDABLE "icon.ico" | |||
| @@ -148,12 +148,12 @@ | |||
| <Lib/> | |||
| </ItemDefinitionGroup> | |||
| <ItemGroup> | |||
| <ClCompile Include="..\..\Source\FilterGraph.cpp"/> | |||
| <ClCompile Include="..\..\Source\FilterIOConfiguration.cpp"/> | |||
| <ClCompile Include="..\..\Source\GraphEditorPanel.cpp"/> | |||
| <ClCompile Include="..\..\Source\Filters\FilterGraph.cpp"/> | |||
| <ClCompile Include="..\..\Source\Filters\FilterIOConfiguration.cpp"/> | |||
| <ClCompile Include="..\..\Source\Filters\InternalFilters.cpp"/> | |||
| <ClCompile Include="..\..\Source\UI\GraphEditorPanel.cpp"/> | |||
| <ClCompile Include="..\..\Source\UI\MainHostWindow.cpp"/> | |||
| <ClCompile Include="..\..\Source\HostStartup.cpp"/> | |||
| <ClCompile Include="..\..\Source\InternalFilters.cpp"/> | |||
| <ClCompile Include="..\..\Source\MainHostWindow.cpp"/> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioChannelSet.cpp"> | |||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||
| </ClCompile> | |||
| @@ -493,6 +493,9 @@ | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_LADSPAPluginFormat.cpp"> | |||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_LegacyAudioParameter.cpp"> | |||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.cpp"> | |||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||
| </ClCompile> | |||
| @@ -1795,6 +1798,7 @@ | |||
| <ClCompile Include="..\..\..\..\modules\juce_video\juce_video.cpp"> | |||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\JuceLibraryCode\BinaryData.cpp"/> | |||
| <ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_basics.cpp"/> | |||
| <ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_devices.cpp"/> | |||
| <ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_formats.cpp"/> | |||
| @@ -1811,12 +1815,12 @@ | |||
| <ClCompile Include="..\..\JuceLibraryCode\include_juce_video.cpp"/> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ClInclude Include="..\..\Source\FilterGraph.h"/> | |||
| <ClInclude Include="..\..\Source\FilterIOConfiguration.h"/> | |||
| <ClInclude Include="..\..\Source\GraphEditorPanel.h"/> | |||
| <ClInclude Include="..\..\Source\InternalFilters.h"/> | |||
| <ClInclude Include="..\..\Source\MainHostWindow.h"/> | |||
| <ClInclude Include="..\..\Source\PluginWindow.h"/> | |||
| <ClInclude Include="..\..\Source\Filters\FilterGraph.h"/> | |||
| <ClInclude Include="..\..\Source\Filters\FilterIOConfiguration.h"/> | |||
| <ClInclude Include="..\..\Source\Filters\InternalFilters.h"/> | |||
| <ClInclude Include="..\..\Source\UI\GraphEditorPanel.h"/> | |||
| <ClInclude Include="..\..\Source\UI\MainHostWindow.h"/> | |||
| <ClInclude Include="..\..\Source\UI\PluginWindow.h"/> | |||
| <ClInclude Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.h"/> | |||
| <ClInclude Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioChannelSet.h"/> | |||
| <ClInclude Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioDataConverters.h"/> | |||
| @@ -2436,13 +2440,16 @@ | |||
| <ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_VideoComponent.h"/> | |||
| <ClInclude Include="..\..\..\..\modules\juce_video\juce_video.h"/> | |||
| <ClInclude Include="..\..\JuceLibraryCode\AppConfig.h"/> | |||
| <ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"/> | |||
| <ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"/> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <None Include="..\..\Source\JUCEAppIcon.png"/> | |||
| <None Include="..\..\..\..\modules\juce_audio_formats\codecs\flac\Flac Licence.txt"/> | |||
| <None Include="..\..\..\..\modules\juce_audio_formats\codecs\oggvorbis\Ogg Vorbis Licence.txt"/> | |||
| <None Include="..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt"/> | |||
| <None Include="..\..\..\..\modules\juce_graphics\image_formats\pnglib\libpng_readme.txt"/> | |||
| <None Include=".\icon.ico"/> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ResourceCompile Include=".\resources.rc"/> | |||
| @@ -2,6 +2,15 @@ | |||
| <Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||
| <ItemGroup> | |||
| <Filter Include="AudioPluginHost\Source\Filters"> | |||
| <UniqueIdentifier>{01436C03-42F4-5952-30EF-7F9E81D997C6}</UniqueIdentifier> | |||
| </Filter> | |||
| <Filter Include="AudioPluginHost\Source\UI"> | |||
| <UniqueIdentifier>{8C61EB30-11E6-7029-4CC8-56C52EB1F1C3}</UniqueIdentifier> | |||
| </Filter> | |||
| <Filter Include="AudioPluginHost\Source"> | |||
| <UniqueIdentifier>{57E59C1B-8971-243F-9A1A-8EABFD456232}</UniqueIdentifier> | |||
| </Filter> | |||
| <Filter Include="AudioPluginHost"> | |||
| <UniqueIdentifier>{297DEAC9-184C-CA1D-D75C-DAA34116691C}</UniqueIdentifier> | |||
| </Filter> | |||
| @@ -370,23 +379,23 @@ | |||
| </Filter> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ClCompile Include="..\..\Source\FilterGraph.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\Filters\FilterGraph.cpp"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\Source\FilterIOConfiguration.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\Filters\FilterIOConfiguration.cpp"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\Source\GraphEditorPanel.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\Filters\InternalFilters.cpp"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\Source\HostStartup.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\UI\GraphEditorPanel.cpp"> | |||
| <Filter>AudioPluginHost\Source\UI</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\Source\InternalFilters.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\UI\MainHostWindow.cpp"> | |||
| <Filter>AudioPluginHost\Source\UI</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\Source\MainHostWindow.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\HostStartup.cpp"> | |||
| <Filter>AudioPluginHost\Source</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioChannelSet.cpp"> | |||
| <Filter>JUCE Modules\juce_audio_basics\buffers</Filter> | |||
| @@ -739,6 +748,9 @@ | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_LADSPAPluginFormat.cpp"> | |||
| <Filter>JUCE Modules\juce_audio_processors\format_types</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_LegacyAudioParameter.cpp"> | |||
| <Filter>JUCE Modules\juce_audio_processors\format_types</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.cpp"> | |||
| <Filter>JUCE Modules\juce_audio_processors\format_types</Filter> | |||
| </ClCompile> | |||
| @@ -2149,6 +2161,9 @@ | |||
| <ClCompile Include="..\..\..\..\modules\juce_video\juce_video.mm"> | |||
| <Filter>JUCE Modules\juce_video</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\JuceLibraryCode\BinaryData.cpp"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_basics.cpp"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </ClCompile> | |||
| @@ -2193,23 +2208,23 @@ | |||
| </ClCompile> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ClInclude Include="..\..\Source\FilterGraph.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\Filters\FilterGraph.h"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\Source\FilterIOConfiguration.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\Filters\FilterIOConfiguration.h"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\Source\GraphEditorPanel.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\Filters\InternalFilters.h"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\Source\InternalFilters.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\UI\GraphEditorPanel.h"> | |||
| <Filter>AudioPluginHost\Source\UI</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\Source\MainHostWindow.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\UI\MainHostWindow.h"> | |||
| <Filter>AudioPluginHost\Source\UI</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\Source\PluginWindow.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\UI\PluginWindow.h"> | |||
| <Filter>AudioPluginHost\Source\UI</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.h"> | |||
| <Filter>JUCE Modules\juce_audio_basics\audio_play_head</Filter> | |||
| @@ -4068,11 +4083,17 @@ | |||
| <ClInclude Include="..\..\JuceLibraryCode\AppConfig.h"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </ClInclude> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <None Include="..\..\Source\JUCEAppIcon.png"> | |||
| <Filter>AudioPluginHost\Source</Filter> | |||
| </None> | |||
| <None Include="..\..\..\..\modules\juce_audio_formats\codecs\flac\Flac Licence.txt"> | |||
| <Filter>JUCE Modules\juce_audio_formats\codecs\flac</Filter> | |||
| </None> | |||
| @@ -4085,6 +4106,9 @@ | |||
| <None Include="..\..\..\..\modules\juce_graphics\image_formats\pnglib\libpng_readme.txt"> | |||
| <Filter>JUCE Modules\juce_graphics\image_formats\pnglib</Filter> | |||
| </None> | |||
| <None Include=".\icon.ico"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </None> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ResourceCompile Include=".\resources.rc"> | |||
| @@ -29,3 +29,6 @@ BEGIN | |||
| END | |||
| #endif | |||
| IDI_ICON1 ICON DISCARDABLE "icon.ico" | |||
| IDI_ICON2 ICON DISCARDABLE "icon.ico" | |||
| @@ -148,12 +148,12 @@ | |||
| <Lib/> | |||
| </ItemDefinitionGroup> | |||
| <ItemGroup> | |||
| <ClCompile Include="..\..\Source\FilterGraph.cpp"/> | |||
| <ClCompile Include="..\..\Source\FilterIOConfiguration.cpp"/> | |||
| <ClCompile Include="..\..\Source\GraphEditorPanel.cpp"/> | |||
| <ClCompile Include="..\..\Source\Filters\FilterGraph.cpp"/> | |||
| <ClCompile Include="..\..\Source\Filters\FilterIOConfiguration.cpp"/> | |||
| <ClCompile Include="..\..\Source\Filters\InternalFilters.cpp"/> | |||
| <ClCompile Include="..\..\Source\UI\GraphEditorPanel.cpp"/> | |||
| <ClCompile Include="..\..\Source\UI\MainHostWindow.cpp"/> | |||
| <ClCompile Include="..\..\Source\HostStartup.cpp"/> | |||
| <ClCompile Include="..\..\Source\InternalFilters.cpp"/> | |||
| <ClCompile Include="..\..\Source\MainHostWindow.cpp"/> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioChannelSet.cpp"> | |||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||
| </ClCompile> | |||
| @@ -493,6 +493,9 @@ | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_LADSPAPluginFormat.cpp"> | |||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_LegacyAudioParameter.cpp"> | |||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.cpp"> | |||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||
| </ClCompile> | |||
| @@ -1795,6 +1798,7 @@ | |||
| <ClCompile Include="..\..\..\..\modules\juce_video\juce_video.cpp"> | |||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\JuceLibraryCode\BinaryData.cpp"/> | |||
| <ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_basics.cpp"/> | |||
| <ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_devices.cpp"/> | |||
| <ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_formats.cpp"/> | |||
| @@ -1811,12 +1815,12 @@ | |||
| <ClCompile Include="..\..\JuceLibraryCode\include_juce_video.cpp"/> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ClInclude Include="..\..\Source\FilterGraph.h"/> | |||
| <ClInclude Include="..\..\Source\FilterIOConfiguration.h"/> | |||
| <ClInclude Include="..\..\Source\GraphEditorPanel.h"/> | |||
| <ClInclude Include="..\..\Source\InternalFilters.h"/> | |||
| <ClInclude Include="..\..\Source\MainHostWindow.h"/> | |||
| <ClInclude Include="..\..\Source\PluginWindow.h"/> | |||
| <ClInclude Include="..\..\Source\Filters\FilterGraph.h"/> | |||
| <ClInclude Include="..\..\Source\Filters\FilterIOConfiguration.h"/> | |||
| <ClInclude Include="..\..\Source\Filters\InternalFilters.h"/> | |||
| <ClInclude Include="..\..\Source\UI\GraphEditorPanel.h"/> | |||
| <ClInclude Include="..\..\Source\UI\MainHostWindow.h"/> | |||
| <ClInclude Include="..\..\Source\UI\PluginWindow.h"/> | |||
| <ClInclude Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.h"/> | |||
| <ClInclude Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioChannelSet.h"/> | |||
| <ClInclude Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioDataConverters.h"/> | |||
| @@ -2436,13 +2440,16 @@ | |||
| <ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_VideoComponent.h"/> | |||
| <ClInclude Include="..\..\..\..\modules\juce_video\juce_video.h"/> | |||
| <ClInclude Include="..\..\JuceLibraryCode\AppConfig.h"/> | |||
| <ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"/> | |||
| <ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"/> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <None Include="..\..\Source\JUCEAppIcon.png"/> | |||
| <None Include="..\..\..\..\modules\juce_audio_formats\codecs\flac\Flac Licence.txt"/> | |||
| <None Include="..\..\..\..\modules\juce_audio_formats\codecs\oggvorbis\Ogg Vorbis Licence.txt"/> | |||
| <None Include="..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt"/> | |||
| <None Include="..\..\..\..\modules\juce_graphics\image_formats\pnglib\libpng_readme.txt"/> | |||
| <None Include=".\icon.ico"/> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ResourceCompile Include=".\resources.rc"/> | |||
| @@ -2,6 +2,15 @@ | |||
| <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||
| <ItemGroup> | |||
| <Filter Include="AudioPluginHost\Source\Filters"> | |||
| <UniqueIdentifier>{01436C03-42F4-5952-30EF-7F9E81D997C6}</UniqueIdentifier> | |||
| </Filter> | |||
| <Filter Include="AudioPluginHost\Source\UI"> | |||
| <UniqueIdentifier>{8C61EB30-11E6-7029-4CC8-56C52EB1F1C3}</UniqueIdentifier> | |||
| </Filter> | |||
| <Filter Include="AudioPluginHost\Source"> | |||
| <UniqueIdentifier>{57E59C1B-8971-243F-9A1A-8EABFD456232}</UniqueIdentifier> | |||
| </Filter> | |||
| <Filter Include="AudioPluginHost"> | |||
| <UniqueIdentifier>{297DEAC9-184C-CA1D-D75C-DAA34116691C}</UniqueIdentifier> | |||
| </Filter> | |||
| @@ -370,23 +379,23 @@ | |||
| </Filter> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ClCompile Include="..\..\Source\FilterGraph.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\Filters\FilterGraph.cpp"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\Source\FilterIOConfiguration.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\Filters\FilterIOConfiguration.cpp"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\Source\GraphEditorPanel.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\Filters\InternalFilters.cpp"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\Source\HostStartup.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\UI\GraphEditorPanel.cpp"> | |||
| <Filter>AudioPluginHost\Source\UI</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\Source\InternalFilters.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\UI\MainHostWindow.cpp"> | |||
| <Filter>AudioPluginHost\Source\UI</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\Source\MainHostWindow.cpp"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClCompile Include="..\..\Source\HostStartup.cpp"> | |||
| <Filter>AudioPluginHost\Source</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioChannelSet.cpp"> | |||
| <Filter>JUCE Modules\juce_audio_basics\buffers</Filter> | |||
| @@ -739,6 +748,9 @@ | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_LADSPAPluginFormat.cpp"> | |||
| <Filter>JUCE Modules\juce_audio_processors\format_types</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_LegacyAudioParameter.cpp"> | |||
| <Filter>JUCE Modules\juce_audio_processors\format_types</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.cpp"> | |||
| <Filter>JUCE Modules\juce_audio_processors\format_types</Filter> | |||
| </ClCompile> | |||
| @@ -2149,6 +2161,9 @@ | |||
| <ClCompile Include="..\..\..\..\modules\juce_video\juce_video.mm"> | |||
| <Filter>JUCE Modules\juce_video</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\JuceLibraryCode\BinaryData.cpp"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_basics.cpp"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </ClCompile> | |||
| @@ -2193,23 +2208,23 @@ | |||
| </ClCompile> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ClInclude Include="..\..\Source\FilterGraph.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\Filters\FilterGraph.h"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\Source\FilterIOConfiguration.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\Filters\FilterIOConfiguration.h"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\Source\GraphEditorPanel.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\Filters\InternalFilters.h"> | |||
| <Filter>AudioPluginHost\Source\Filters</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\Source\InternalFilters.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\UI\GraphEditorPanel.h"> | |||
| <Filter>AudioPluginHost\Source\UI</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\Source\MainHostWindow.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\UI\MainHostWindow.h"> | |||
| <Filter>AudioPluginHost\Source\UI</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\Source\PluginWindow.h"> | |||
| <Filter>AudioPluginHost</Filter> | |||
| <ClInclude Include="..\..\Source\UI\PluginWindow.h"> | |||
| <Filter>AudioPluginHost\Source\UI</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.h"> | |||
| <Filter>JUCE Modules\juce_audio_basics\audio_play_head</Filter> | |||
| @@ -4068,11 +4083,17 @@ | |||
| <ClInclude Include="..\..\JuceLibraryCode\AppConfig.h"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\JuceLibraryCode\BinaryData.h"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\JuceLibraryCode\JuceHeader.h"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </ClInclude> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <None Include="..\..\Source\JUCEAppIcon.png"> | |||
| <Filter>AudioPluginHost\Source</Filter> | |||
| </None> | |||
| <None Include="..\..\..\..\modules\juce_audio_formats\codecs\flac\Flac Licence.txt"> | |||
| <Filter>JUCE Modules\juce_audio_formats\codecs\flac</Filter> | |||
| </None> | |||
| @@ -4085,6 +4106,9 @@ | |||
| <None Include="..\..\..\..\modules\juce_graphics\image_formats\pnglib\libpng_readme.txt"> | |||
| <Filter>JUCE Modules\juce_graphics\image_formats\pnglib</Filter> | |||
| </None> | |||
| <None Include=".\icon.ico"> | |||
| <Filter>JUCE Library Code</Filter> | |||
| </None> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ResourceCompile Include=".\resources.rc"> | |||
| @@ -29,3 +29,6 @@ BEGIN | |||
| END | |||
| #endif | |||
| IDI_ICON1 ICON DISCARDABLE "icon.ico" | |||
| IDI_ICON2 ICON DISCARDABLE "icon.ico" | |||
| @@ -0,0 +1,398 @@ | |||
| // !$*UTF8*$! | |||
| { | |||
| archiveVersion = 1; | |||
| classes = { | |||
| }; | |||
| objectVersion = 46; | |||
| objects = { | |||
| FCDB1F8A93F59E0F97821456 = {isa = PBXBuildFile; fileRef = 8D8BBC353637DA442C5575DA; }; | |||
| 73E371F1B912FCCAE0CD7E5D = {isa = PBXBuildFile; fileRef = 86CA337014D3F67E906FFD28; }; | |||
| 21D330A5B13178B12BEAFC3C = {isa = PBXBuildFile; fileRef = D4EBC17BDB7F88CCBC76730B; }; | |||
| 851C1165C9E4ACDD19C56A96 = {isa = PBXBuildFile; fileRef = 942A0F04EFB8D0B2FF9780BA; }; | |||
| AF42316D915057E930A5624E = {isa = PBXBuildFile; fileRef = A4B568E26157FC282214976F; }; | |||
| E3CB85BA817BC9E3942A8AB0 = {isa = PBXBuildFile; fileRef = 9F9B445E6755CAA19E4344ED; }; | |||
| 70580743C3D5695F065FF698 = {isa = PBXBuildFile; fileRef = E68018DE199135B7F738FB17; }; | |||
| 1570FCC5CDB7A44DF0077E39 = {isa = PBXBuildFile; fileRef = 2F7D965A1284CEF0B20EB657; }; | |||
| B0D5475F716126465FCE1586 = {isa = PBXBuildFile; fileRef = CFFA8E9A7820C5A27B4393C9; }; | |||
| 3470F40DA5D68EC217872906 = {isa = PBXBuildFile; fileRef = 31D55A751C790CB81F58DDB7; }; | |||
| E092A70431B046BF1F50A482 = {isa = PBXBuildFile; fileRef = 5AF0CA7CDFCA90B4DE1F55C3; }; | |||
| 92EE84159C7027A137F06204 = {isa = PBXBuildFile; fileRef = 66643EDF46AE8C5B7956B91D; }; | |||
| 9056B642BEF870098DE344E5 = {isa = PBXBuildFile; fileRef = 03FA420AACDD03D50AA16E4A; }; | |||
| 7DE81C004B0FBC563040CC5F = {isa = PBXBuildFile; fileRef = B1CD9599EB12D77E8AF9241D; }; | |||
| 2AB9A26C9359C40CA0A937ED = {isa = PBXBuildFile; fileRef = D0026F0A29B486D87E92BB8B; }; | |||
| A02C9F4C4B840C27B6CAFEBD = {isa = PBXBuildFile; fileRef = 89309C0C5F3269BD06BE7F27; }; | |||
| 50AFD116DCA6EC228EFB322D = {isa = PBXBuildFile; fileRef = F9EDC54DFBCF3A63E0AA5D73; }; | |||
| 59F4F23BFFDAB414B4801F85 = {isa = PBXBuildFile; fileRef = 29E0972229FB44D969035B4E; }; | |||
| 443244451A0F2064D4767337 = {isa = PBXBuildFile; fileRef = 2A6983F82B13F9E8B10299AE; }; | |||
| 2E74188531792924F0C73142 = {isa = PBXBuildFile; fileRef = 05863BDFC582C9552A86DF49; }; | |||
| C8423A9611C8AAF27468847D = {isa = PBXBuildFile; fileRef = 336FD30C38BD0A176161B8AE; }; | |||
| 786AF545C1C1E4D11140C3DF = {isa = PBXBuildFile; fileRef = 43647951ECC7F030B9953965; }; | |||
| 3E1689E23B9C85F03209DCEF = {isa = PBXBuildFile; fileRef = 3D78A731234A833CA112AE45; }; | |||
| F635D974599DEC2ED91E6A88 = {isa = PBXBuildFile; fileRef = 04AABCD3491318FB32E844B4; }; | |||
| A1B0416DA378BB0C3AD6F74B = {isa = PBXBuildFile; fileRef = A66EFAC64B1B67B536C73415; }; | |||
| A0144A682BF4843C8CF53FE4 = {isa = PBXBuildFile; fileRef = 6D107D7946DC5976B766345B; }; | |||
| 15CCE43D7DCFC649638919D4 = {isa = PBXBuildFile; fileRef = 4C7D82F9274A4F9DBF11235C; }; | |||
| 5C4D406B924230F83E3580AD = {isa = PBXBuildFile; fileRef = 65968EA1B476D71F14DE1D58; }; | |||
| F4DD98B9310B679D50A2C8A6 = {isa = PBXBuildFile; fileRef = 5D250A57C7DEA80248F30EED; }; | |||
| CAF0DE157C8F7D9F168AA3B6 = {isa = PBXBuildFile; fileRef = 5FBD6C402617272052BB4D81; }; | |||
| 0F20A4AE04736634F097F5A6 = {isa = PBXBuildFile; fileRef = B285CAB91AE928C476CA4F9C; }; | |||
| 76A80851698FC773D2479B4E = {isa = PBXBuildFile; fileRef = 683CEE986A2467C850FE99E6; }; | |||
| E4A926EF695823F0F13268FF = {isa = PBXBuildFile; fileRef = B8E24A5CEE6B7055537725CF; }; | |||
| A09E93F1B354E1FF8B3E9ABE = {isa = PBXBuildFile; fileRef = 5EF1D381F42AA8764597F189; }; | |||
| 7DE202DC1D876F49266D9E7D = {isa = PBXBuildFile; fileRef = 8290D7BAC160B3A56B66891A; }; | |||
| 075C54DDDBDEA5AAD2F60154 = {isa = PBXBuildFile; fileRef = 82800DBA287EF4BAB13B42FB; }; | |||
| 2C3D221D2AA87F07B3F1044D = {isa = PBXBuildFile; fileRef = 8FE7B37CDE0818DB27BDDEBD; }; | |||
| C38D14DC58F1941DD5E4BF60 = {isa = PBXBuildFile; fileRef = 2BE6C2DFD6EBB9A89109AEB5; }; | |||
| 2727A191DB1BAAC9C04B9081 = {isa = PBXBuildFile; fileRef = 37E4D5C341406B7072120006; }; | |||
| 84BAFE82A102D9C350672689 = {isa = PBXBuildFile; fileRef = 29D746FC68F69751796671A2; }; | |||
| 03FA420AACDD03D50AA16E4A = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; | |||
| 04AABCD3491318FB32E844B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MainHostWindow.cpp; path = ../../Source/UI/MainHostWindow.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| 04DB9A49969ECC740CC25665 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GraphEditorPanel.h; path = ../../Source/UI/GraphEditorPanel.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 05863BDFC582C9552A86DF49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterGraph.cpp; path = ../../Source/Filters/FilterGraph.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| 1DADAD8E34AAF4AFF1C69DC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BinaryData.h; path = ../../JuceLibraryCode/BinaryData.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 29D746FC68F69751796671A2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_video.mm"; path = "../../JuceLibraryCode/include_juce_video.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 29E0972229FB44D969035B4E = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = AudioPluginHost/Images.xcassets; sourceTree = "SOURCE_ROOT"; }; | |||
| 2A6983F82B13F9E8B10299AE = {isa = PBXFileReference; lastKnownFileType = file.icns; name = Icon.icns; path = Icon.icns; sourceTree = "SOURCE_ROOT"; }; | |||
| 2BE6C2DFD6EBB9A89109AEB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_gui_extra.mm"; path = "../../JuceLibraryCode/include_juce_gui_extra.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 2F7D965A1284CEF0B20EB657 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; | |||
| 30F22843EFEBF7AA841EB4D6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppConfig.h; path = ../../JuceLibraryCode/AppConfig.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 31D55A751C790CB81F58DDB7 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; | |||
| 336FD30C38BD0A176161B8AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FilterIOConfiguration.cpp; path = ../../Source/Filters/FilterIOConfiguration.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| 37E4D5C341406B7072120006 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_opengl.mm"; path = "../../JuceLibraryCode/include_juce_opengl.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 3C070DD522CDD11FFC87425D = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_audio_utils"; path = "../../../../modules/juce_audio_utils"; sourceTree = "SOURCE_ROOT"; }; | |||
| 3D57FE2A8877F12A61054726 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_core"; path = "../../../../modules/juce_core"; sourceTree = "SOURCE_ROOT"; }; | |||
| 3D78A731234A833CA112AE45 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GraphEditorPanel.cpp; path = ../../Source/UI/GraphEditorPanel.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| 43647951ECC7F030B9953965 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = InternalFilters.cpp; path = ../../Source/Filters/InternalFilters.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| 4C7D82F9274A4F9DBF11235C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_audio_basics.mm"; path = "../../JuceLibraryCode/include_juce_audio_basics.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 5313EB852E41EE58B199B9A2 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_audio_devices"; path = "../../../../modules/juce_audio_devices"; sourceTree = "SOURCE_ROOT"; }; | |||
| 545D57A6AA801B38548B0CAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterGraph.h; path = ../../Source/Filters/FilterGraph.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 57DF618F1DE781556B7AFC32 = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info-App.plist"; path = "Info-App.plist"; sourceTree = "SOURCE_ROOT"; }; | |||
| 59842A98E5EBBC54B50C04CD = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_events"; path = "../../../../modules/juce_events"; sourceTree = "SOURCE_ROOT"; }; | |||
| 5AF0CA7CDFCA90B4DE1F55C3 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; }; | |||
| 5D250A57C7DEA80248F30EED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_audio_formats.mm"; path = "../../JuceLibraryCode/include_juce_audio_formats.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 5EF1D381F42AA8764597F189 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_data_structures.mm"; path = "../../JuceLibraryCode/include_juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 5FBD6C402617272052BB4D81 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_audio_processors.mm"; path = "../../JuceLibraryCode/include_juce_audio_processors.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 65968EA1B476D71F14DE1D58 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_audio_devices.mm"; path = "../../JuceLibraryCode/include_juce_audio_devices.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 66643EDF46AE8C5B7956B91D = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; }; | |||
| 683CEE986A2467C850FE99E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_core.mm"; path = "../../JuceLibraryCode/include_juce_core.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 6A71B2BCAC4239072BC2BD7E = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_audio_basics"; path = "../../../../modules/juce_audio_basics"; sourceTree = "SOURCE_ROOT"; }; | |||
| 6D107D7946DC5976B766345B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| 725D0D9C8C7FF7B3FB3020ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FilterIOConfiguration.h; path = ../../Source/Filters/FilterIOConfiguration.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 81C1A7770E082F56FE5A90A7 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_opengl"; path = "../../../../modules/juce_opengl"; sourceTree = "SOURCE_ROOT"; }; | |||
| 82800DBA287EF4BAB13B42FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_graphics.mm"; path = "../../JuceLibraryCode/include_juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 8290D7BAC160B3A56B66891A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_events.mm"; path = "../../JuceLibraryCode/include_juce_events.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 86CA337014D3F67E906FFD28 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; | |||
| 89309C0C5F3269BD06BE7F27 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; | |||
| 8D8BBC353637DA442C5575DA = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Plugin Host.app"; sourceTree = "BUILT_PRODUCTS_DIR"; }; | |||
| 8FE7B37CDE0818DB27BDDEBD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_gui_basics.mm"; path = "../../JuceLibraryCode/include_juce_gui_basics.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| 938AE72315C6C93949F6220E = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_gui_basics"; path = "../../../../modules/juce_gui_basics"; sourceTree = "SOURCE_ROOT"; }; | |||
| 942A0F04EFB8D0B2FF9780BA = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; | |||
| 94CB96C8E4B51F52776C2638 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_graphics"; path = "../../../../modules/juce_graphics"; sourceTree = "SOURCE_ROOT"; }; | |||
| 97918AB43AD460AFA8FA2FFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PluginWindow.h; path = ../../Source/UI/PluginWindow.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 9EBEE3AE5856E877478607C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = InternalFilters.h; path = ../../Source/Filters/InternalFilters.h; sourceTree = "SOURCE_ROOT"; }; | |||
| 9F9B445E6755CAA19E4344ED = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; | |||
| A4B568E26157FC282214976F = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVKit.framework; path = System/Library/Frameworks/AVKit.framework; sourceTree = SDKROOT; }; | |||
| A5DFC13E4F09134B0D226A3E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainHostWindow.h; path = ../../Source/UI/MainHostWindow.h; sourceTree = "SOURCE_ROOT"; }; | |||
| A5E7CA8A71D049BE2BD33861 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = "SOURCE_ROOT"; }; | |||
| A66EFAC64B1B67B536C73415 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = HostStartup.cpp; path = ../../Source/HostStartup.cpp; sourceTree = "SOURCE_ROOT"; }; | |||
| B1CD9599EB12D77E8AF9241D = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; | |||
| B285CAB91AE928C476CA4F9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_audio_utils.mm"; path = "../../JuceLibraryCode/include_juce_audio_utils.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| B2A1E626CC120982805754F6 = {isa = PBXFileReference; lastKnownFileType = image.png; name = JUCEAppIcon.png; path = ../../Source/JUCEAppIcon.png; sourceTree = "SOURCE_ROOT"; }; | |||
| B86B918291E1090C6A720971 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_data_structures"; path = "../../../../modules/juce_data_structures"; sourceTree = "SOURCE_ROOT"; }; | |||
| B8E24A5CEE6B7055537725CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "include_juce_cryptography.mm"; path = "../../JuceLibraryCode/include_juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| CFFA8E9A7820C5A27B4393C9 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; }; | |||
| D0026F0A29B486D87E92BB8B = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; | |||
| D4EBC17BDB7F88CCBC76730B = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; | |||
| DDE115D3084ACA6DD6AA4471 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_video"; path = "../../../../modules/juce_video"; sourceTree = "SOURCE_ROOT"; }; | |||
| E68018DE199135B7F738FB17 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; | |||
| F299BECFB2AEA6105F014848 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_gui_extra"; path = "../../../../modules/juce_gui_extra"; sourceTree = "SOURCE_ROOT"; }; | |||
| F9AC862E9A3583B6C1488EE0 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_audio_formats"; path = "../../../../modules/juce_audio_formats"; sourceTree = "SOURCE_ROOT"; }; | |||
| F9EDC54DFBCF3A63E0AA5D73 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; | |||
| FA21631C5536EA3DF55C7FA6 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_cryptography"; path = "../../../../modules/juce_cryptography"; sourceTree = "SOURCE_ROOT"; }; | |||
| FAF867E9E731D0880D40511F = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_audio_processors"; path = "../../../../modules/juce_audio_processors"; sourceTree = "SOURCE_ROOT"; }; | |||
| AA37F82D57C9BB4BE78FCCB9 = {isa = PBXGroup; children = ( | |||
| 05863BDFC582C9552A86DF49, | |||
| 545D57A6AA801B38548B0CAC, | |||
| 336FD30C38BD0A176161B8AE, | |||
| 725D0D9C8C7FF7B3FB3020ED, | |||
| 43647951ECC7F030B9953965, | |||
| 9EBEE3AE5856E877478607C7, ); name = Filters; sourceTree = "<group>"; }; | |||
| DE7B77306553B1204071B39A = {isa = PBXGroup; children = ( | |||
| 3D78A731234A833CA112AE45, | |||
| 04DB9A49969ECC740CC25665, | |||
| 04AABCD3491318FB32E844B4, | |||
| A5DFC13E4F09134B0D226A3E, | |||
| 97918AB43AD460AFA8FA2FFE, ); name = UI; sourceTree = "<group>"; }; | |||
| B225B7F2CAABD28A41E7C339 = {isa = PBXGroup; children = ( | |||
| AA37F82D57C9BB4BE78FCCB9, | |||
| DE7B77306553B1204071B39A, | |||
| A66EFAC64B1B67B536C73415, | |||
| B2A1E626CC120982805754F6, ); name = Source; sourceTree = "<group>"; }; | |||
| 97790EAEA01CFA5C3CA9737A = {isa = PBXGroup; children = ( | |||
| B225B7F2CAABD28A41E7C339, ); name = AudioPluginHost; sourceTree = "<group>"; }; | |||
| 9D8FE1F65CAD416AA606C47A = {isa = PBXGroup; children = ( | |||
| 6A71B2BCAC4239072BC2BD7E, | |||
| 5313EB852E41EE58B199B9A2, | |||
| F9AC862E9A3583B6C1488EE0, | |||
| FAF867E9E731D0880D40511F, | |||
| 3C070DD522CDD11FFC87425D, | |||
| 3D57FE2A8877F12A61054726, | |||
| FA21631C5536EA3DF55C7FA6, | |||
| B86B918291E1090C6A720971, | |||
| 59842A98E5EBBC54B50C04CD, | |||
| 94CB96C8E4B51F52776C2638, | |||
| 938AE72315C6C93949F6220E, | |||
| F299BECFB2AEA6105F014848, | |||
| 81C1A7770E082F56FE5A90A7, | |||
| DDE115D3084ACA6DD6AA4471, ); name = "JUCE Modules"; sourceTree = "<group>"; }; | |||
| 7E30376DDAD775FEFE64944C = {isa = PBXGroup; children = ( | |||
| 30F22843EFEBF7AA841EB4D6, | |||
| 6D107D7946DC5976B766345B, | |||
| 1DADAD8E34AAF4AFF1C69DC4, | |||
| 4C7D82F9274A4F9DBF11235C, | |||
| 65968EA1B476D71F14DE1D58, | |||
| 5D250A57C7DEA80248F30EED, | |||
| 5FBD6C402617272052BB4D81, | |||
| B285CAB91AE928C476CA4F9C, | |||
| 683CEE986A2467C850FE99E6, | |||
| B8E24A5CEE6B7055537725CF, | |||
| 5EF1D381F42AA8764597F189, | |||
| 8290D7BAC160B3A56B66891A, | |||
| 82800DBA287EF4BAB13B42FB, | |||
| 8FE7B37CDE0818DB27BDDEBD, | |||
| 2BE6C2DFD6EBB9A89109AEB5, | |||
| 37E4D5C341406B7072120006, | |||
| 29D746FC68F69751796671A2, | |||
| A5E7CA8A71D049BE2BD33861, ); name = "JUCE Library Code"; sourceTree = "<group>"; }; | |||
| A97EE73C79DA3F729D46AF48 = {isa = PBXGroup; children = ( | |||
| 57DF618F1DE781556B7AFC32, | |||
| 29E0972229FB44D969035B4E, | |||
| 2A6983F82B13F9E8B10299AE, ); name = Resources; sourceTree = "<group>"; }; | |||
| D1C4804CD275CB57A5C89A2D = {isa = PBXGroup; children = ( | |||
| 86CA337014D3F67E906FFD28, | |||
| D4EBC17BDB7F88CCBC76730B, | |||
| 942A0F04EFB8D0B2FF9780BA, | |||
| A4B568E26157FC282214976F, | |||
| 9F9B445E6755CAA19E4344ED, | |||
| E68018DE199135B7F738FB17, | |||
| 2F7D965A1284CEF0B20EB657, | |||
| CFFA8E9A7820C5A27B4393C9, | |||
| 31D55A751C790CB81F58DDB7, | |||
| 5AF0CA7CDFCA90B4DE1F55C3, | |||
| 66643EDF46AE8C5B7956B91D, | |||
| 03FA420AACDD03D50AA16E4A, | |||
| B1CD9599EB12D77E8AF9241D, | |||
| D0026F0A29B486D87E92BB8B, | |||
| 89309C0C5F3269BD06BE7F27, | |||
| F9EDC54DFBCF3A63E0AA5D73, ); name = Frameworks; sourceTree = "<group>"; }; | |||
| D85C0D11EE4F6C73B9EB5BCD = {isa = PBXGroup; children = ( | |||
| 8D8BBC353637DA442C5575DA, ); name = Products; sourceTree = "<group>"; }; | |||
| 65BEFC705A89E5C8A9E35C97 = {isa = PBXGroup; children = ( | |||
| 97790EAEA01CFA5C3CA9737A, | |||
| 9D8FE1F65CAD416AA606C47A, | |||
| 7E30376DDAD775FEFE64944C, | |||
| A97EE73C79DA3F729D46AF48, | |||
| D1C4804CD275CB57A5C89A2D, | |||
| D85C0D11EE4F6C73B9EB5BCD, ); name = Source; sourceTree = "<group>"; }; | |||
| C8B793AC1BEFBE7A99BE8352 = {isa = XCBuildConfiguration; buildSettings = { | |||
| ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | |||
| ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; | |||
| CLANG_CXX_LANGUAGE_STANDARD = "c++14"; | |||
| CLANG_LINK_OBJC_RUNTIME = NO; | |||
| COMBINE_HIDPI_IMAGES = YES; | |||
| CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; | |||
| COPY_PHASE_STRIP = NO; | |||
| GCC_DYNAMIC_NO_PIC = NO; | |||
| GCC_OPTIMIZATION_LEVEL = 0; | |||
| GCC_PREPROCESSOR_DEFINITIONS = ( | |||
| "_DEBUG=1", | |||
| "DEBUG=1", | |||
| "JUCER_XCODE_IPHONE_5BC26AE3=1", | |||
| "JUCE_APP_VERSION=1.0.0", | |||
| "JUCE_APP_VERSION_HEX=0x10000", | |||
| "JucePlugin_Build_VST=0", | |||
| "JucePlugin_Build_VST3=0", | |||
| "JucePlugin_Build_AU=0", | |||
| "JucePlugin_Build_AUv3=0", | |||
| "JucePlugin_Build_RTAS=0", | |||
| "JucePlugin_Build_AAX=0", | |||
| "JucePlugin_Build_Standalone=0", ); | |||
| GCC_VERSION = com.apple.compilers.llvm.clang.1_0; | |||
| HEADER_SEARCH_PATHS = ("~/SDKs/VST_SDK/VST3_SDK", "../../JuceLibraryCode", "../../../../modules", "$(inherited)"); | |||
| INFOPLIST_FILE = Info-App.plist; | |||
| INFOPLIST_PREPROCESS = NO; | |||
| INSTALL_PATH = "$(HOME)/Applications"; | |||
| PRODUCT_BUNDLE_IDENTIFIER = com.roli.juce.pluginhost; | |||
| USE_HEADERMAP = NO; }; name = Debug; }; | |||
| 49453CC5AD9F08D2738464AC = {isa = XCBuildConfiguration; buildSettings = { | |||
| ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | |||
| ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; | |||
| CLANG_CXX_LANGUAGE_STANDARD = "c++14"; | |||
| CLANG_LINK_OBJC_RUNTIME = NO; | |||
| COMBINE_HIDPI_IMAGES = YES; | |||
| CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; | |||
| DEAD_CODE_STRIPPING = YES; | |||
| GCC_GENERATE_DEBUGGING_SYMBOLS = NO; | |||
| GCC_OPTIMIZATION_LEVEL = 3; | |||
| GCC_PREPROCESSOR_DEFINITIONS = ( | |||
| "_NDEBUG=1", | |||
| "NDEBUG=1", | |||
| "JUCER_XCODE_IPHONE_5BC26AE3=1", | |||
| "JUCE_APP_VERSION=1.0.0", | |||
| "JUCE_APP_VERSION_HEX=0x10000", | |||
| "JucePlugin_Build_VST=0", | |||
| "JucePlugin_Build_VST3=0", | |||
| "JucePlugin_Build_AU=0", | |||
| "JucePlugin_Build_AUv3=0", | |||
| "JucePlugin_Build_RTAS=0", | |||
| "JucePlugin_Build_AAX=0", | |||
| "JucePlugin_Build_Standalone=0", ); | |||
| GCC_SYMBOLS_PRIVATE_EXTERN = YES; | |||
| GCC_VERSION = com.apple.compilers.llvm.clang.1_0; | |||
| HEADER_SEARCH_PATHS = ("~/SDKs/VST_SDK/VST3_SDK", "../../JuceLibraryCode", "../../../../modules", "$(inherited)"); | |||
| INFOPLIST_FILE = Info-App.plist; | |||
| INFOPLIST_PREPROCESS = NO; | |||
| INSTALL_PATH = "$(HOME)/Applications"; | |||
| LLVM_LTO = YES; | |||
| PRODUCT_BUNDLE_IDENTIFIER = com.roli.juce.pluginhost; | |||
| USE_HEADERMAP = NO; }; name = Release; }; | |||
| 8D1CA827F1EFD443BDCF198A = {isa = XCBuildConfiguration; buildSettings = { | |||
| "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | |||
| ALWAYS_SEARCH_USER_PATHS = NO; | |||
| CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | |||
| CLANG_WARN_BOOL_CONVERSION = YES; | |||
| CLANG_WARN_COMMA = YES; | |||
| CLANG_WARN_CONSTANT_CONVERSION = YES; | |||
| CLANG_WARN_EMPTY_BODY = YES; | |||
| CLANG_WARN_ENUM_CONVERSION = YES; | |||
| CLANG_WARN_INFINITE_RECURSION = YES; | |||
| CLANG_WARN_INT_CONVERSION = YES; | |||
| CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | |||
| CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | |||
| CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | |||
| CLANG_WARN_STRICT_PROTOTYPES = YES; | |||
| CLANG_WARN_SUSPICIOUS_MOVE = YES; | |||
| CLANG_WARN_UNREACHABLE_CODE = YES; | |||
| CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | |||
| DEBUG_INFORMATION_FORMAT = "dwarf"; | |||
| ENABLE_STRICT_OBJC_MSGSEND = YES; | |||
| ENABLE_TESTABILITY = YES; | |||
| GCC_C_LANGUAGE_STANDARD = c11; | |||
| GCC_INLINES_ARE_PRIVATE_EXTERN = YES; | |||
| GCC_MODEL_TUNING = G5; | |||
| GCC_NO_COMMON_BLOCKS = YES; | |||
| GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | |||
| GCC_WARN_ABOUT_RETURN_TYPE = YES; | |||
| GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; | |||
| GCC_WARN_MISSING_PARENTHESES = YES; | |||
| GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; | |||
| GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; | |||
| GCC_WARN_UNDECLARED_SELECTOR = YES; | |||
| GCC_WARN_UNINITIALIZED_AUTOS = YES; | |||
| GCC_WARN_UNUSED_FUNCTION = YES; | |||
| GCC_WARN_UNUSED_VARIABLE = YES; | |||
| IPHONEOS_DEPLOYMENT_TARGET = 9.3; | |||
| ONLY_ACTIVE_ARCH = YES; | |||
| PRODUCT_NAME = "Plugin Host"; | |||
| SDKROOT = iphoneos; | |||
| TARGETED_DEVICE_FAMILY = "1,2"; | |||
| WARNING_CFLAGS = -Wreorder; | |||
| ZERO_LINK = NO; }; name = Debug; }; | |||
| C9295196717FABE454A210B7 = {isa = XCBuildConfiguration; buildSettings = { | |||
| "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | |||
| ALWAYS_SEARCH_USER_PATHS = NO; | |||
| CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | |||
| CLANG_WARN_BOOL_CONVERSION = YES; | |||
| CLANG_WARN_COMMA = YES; | |||
| CLANG_WARN_CONSTANT_CONVERSION = YES; | |||
| CLANG_WARN_EMPTY_BODY = YES; | |||
| CLANG_WARN_ENUM_CONVERSION = YES; | |||
| CLANG_WARN_INFINITE_RECURSION = YES; | |||
| CLANG_WARN_INT_CONVERSION = YES; | |||
| CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | |||
| CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | |||
| CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | |||
| CLANG_WARN_STRICT_PROTOTYPES = YES; | |||
| CLANG_WARN_SUSPICIOUS_MOVE = YES; | |||
| CLANG_WARN_UNREACHABLE_CODE = YES; | |||
| CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | |||
| DEBUG_INFORMATION_FORMAT = "dwarf"; | |||
| ENABLE_STRICT_OBJC_MSGSEND = YES; | |||
| GCC_C_LANGUAGE_STANDARD = c11; | |||
| GCC_INLINES_ARE_PRIVATE_EXTERN = YES; | |||
| GCC_MODEL_TUNING = G5; | |||
| GCC_NO_COMMON_BLOCKS = YES; | |||
| GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | |||
| GCC_WARN_ABOUT_RETURN_TYPE = YES; | |||
| GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; | |||
| GCC_WARN_MISSING_PARENTHESES = YES; | |||
| GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; | |||
| GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; | |||
| GCC_WARN_UNDECLARED_SELECTOR = YES; | |||
| GCC_WARN_UNINITIALIZED_AUTOS = YES; | |||
| GCC_WARN_UNUSED_FUNCTION = YES; | |||
| GCC_WARN_UNUSED_VARIABLE = YES; | |||
| IPHONEOS_DEPLOYMENT_TARGET = 9.3; | |||
| PRODUCT_NAME = "Plugin Host"; | |||
| SDKROOT = iphoneos; | |||
| TARGETED_DEVICE_FAMILY = "1,2"; | |||
| WARNING_CFLAGS = -Wreorder; | |||
| ZERO_LINK = NO; }; name = Release; }; | |||
| B9D79D85AC7DE5BED1B6547C = {isa = PBXTargetDependency; target = DE12B7643D374BFF7E4FEB1C; }; | |||
| 493C2C5E457692E5149C5525 = {isa = XCConfigurationList; buildConfigurations = ( | |||
| 8D1CA827F1EFD443BDCF198A, | |||
| C9295196717FABE454A210B7, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; | |||
| E4ECAE24A646A7D1585F776C = {isa = XCConfigurationList; buildConfigurations = ( | |||
| C8B793AC1BEFBE7A99BE8352, | |||
| 49453CC5AD9F08D2738464AC, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; | |||
| 2429BB4D705CC57F49418CFB = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( | |||
| 59F4F23BFFDAB414B4801F85, | |||
| 443244451A0F2064D4767337, ); runOnlyForDeploymentPostprocessing = 0; }; | |||
| E8E94B3C187DA578BFCBDA98 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( | |||
| 2E74188531792924F0C73142, | |||
| C8423A9611C8AAF27468847D, | |||
| 786AF545C1C1E4D11140C3DF, | |||
| 3E1689E23B9C85F03209DCEF, | |||
| F635D974599DEC2ED91E6A88, | |||
| A1B0416DA378BB0C3AD6F74B, | |||
| A0144A682BF4843C8CF53FE4, | |||
| 15CCE43D7DCFC649638919D4, | |||
| 5C4D406B924230F83E3580AD, | |||
| F4DD98B9310B679D50A2C8A6, | |||
| CAF0DE157C8F7D9F168AA3B6, | |||
| 0F20A4AE04736634F097F5A6, | |||
| 76A80851698FC773D2479B4E, | |||
| E4A926EF695823F0F13268FF, | |||
| A09E93F1B354E1FF8B3E9ABE, | |||
| 7DE202DC1D876F49266D9E7D, | |||
| 075C54DDDBDEA5AAD2F60154, | |||
| 2C3D221D2AA87F07B3F1044D, | |||
| C38D14DC58F1941DD5E4BF60, | |||
| 2727A191DB1BAAC9C04B9081, | |||
| 84BAFE82A102D9C350672689, ); runOnlyForDeploymentPostprocessing = 0; }; | |||
| C515A1FE1A53D3968C22FAEF = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( | |||
| 73E371F1B912FCCAE0CD7E5D, | |||
| 21D330A5B13178B12BEAFC3C, | |||
| 851C1165C9E4ACDD19C56A96, | |||
| AF42316D915057E930A5624E, | |||
| E3CB85BA817BC9E3942A8AB0, | |||
| 70580743C3D5695F065FF698, | |||
| 1570FCC5CDB7A44DF0077E39, | |||
| B0D5475F716126465FCE1586, | |||
| 3470F40DA5D68EC217872906, | |||
| E092A70431B046BF1F50A482, | |||
| 92EE84159C7027A137F06204, | |||
| 9056B642BEF870098DE344E5, | |||
| 7DE81C004B0FBC563040CC5F, | |||
| 2AB9A26C9359C40CA0A937ED, | |||
| A02C9F4C4B840C27B6CAFEBD, | |||
| 50AFD116DCA6EC228EFB322D, ); runOnlyForDeploymentPostprocessing = 0; }; | |||
| DE12B7643D374BFF7E4FEB1C = {isa = PBXNativeTarget; buildConfigurationList = E4ECAE24A646A7D1585F776C; buildPhases = ( | |||
| 2429BB4D705CC57F49418CFB, | |||
| E8E94B3C187DA578BFCBDA98, | |||
| C515A1FE1A53D3968C22FAEF, ); buildRules = ( ); dependencies = ( ); name = "AudioPluginHost - App"; productName = AudioPluginHost; productReference = 8D8BBC353637DA442C5575DA; productType = "com.apple.product-type.application"; }; | |||
| ADE6E539DB98A302483A82D0 = {isa = PBXProject; buildConfigurationList = 493C2C5E457692E5149C5525; attributes = { LastUpgradeCheck = 0830; ORGANIZATIONNAME = "ROLI Ltd."; TargetAttributes = { DE12B7643D374BFF7E4FEB1C = { SystemCapabilities = {com.apple.ApplicationGroups.iOS = { enabled = 0; }; com.apple.InAppPurchase = { enabled = 0; }; com.apple.InterAppAudio = { enabled = 0; }; com.apple.Push = { enabled = 0; }; com.apple.Sandbox = { enabled = 0; }; }; }; }; }; compatibilityVersion = "Xcode 3.2"; hasScannedForEncodings = 0; mainGroup = 65BEFC705A89E5C8A9E35C97; projectDirPath = ""; projectRoot = ""; targets = (DE12B7643D374BFF7E4FEB1C); }; | |||
| }; | |||
| rootObject = ADE6E539DB98A302483A82D0; | |||
| } | |||
| @@ -0,0 +1,158 @@ | |||
| { | |||
| "images": [ | |||
| { | |||
| "idiom": "iphone", | |||
| "size": "20x20", | |||
| "filename": "Icon-Notification-20@2x.png", | |||
| "scale": "2x" | |||
| }, | |||
| { | |||
| "idiom": "iphone", | |||
| "size": "20x20", | |||
| "filename": "Icon-Notification-20@3x.png", | |||
| "scale": "3x" | |||
| }, | |||
| { | |||
| "idiom": "iphone", | |||
| "size": "29x29", | |||
| "filename": "Icon-29.png", | |||
| "scale": "1x" | |||
| }, | |||
| { | |||
| "idiom": "iphone", | |||
| "size": "29x29", | |||
| "filename": "Icon-29@2x.png", | |||
| "scale": "2x" | |||
| }, | |||
| { | |||
| "idiom": "iphone", | |||
| "size": "29x29", | |||
| "filename": "Icon-29@3x.png", | |||
| "scale": "3x" | |||
| }, | |||
| { | |||
| "idiom": "iphone", | |||
| "size": "40x40", | |||
| "filename": "Icon-Spotlight-40@2x.png", | |||
| "scale": "2x" | |||
| }, | |||
| { | |||
| "idiom": "iphone", | |||
| "size": "40x40", | |||
| "filename": "Icon-Spotlight-40@3x.png", | |||
| "scale": "3x" | |||
| }, | |||
| { | |||
| "idiom": "iphone", | |||
| "size": "57x57", | |||
| "filename": "Icon.png", | |||
| "scale": "1x" | |||
| }, | |||
| { | |||
| "idiom": "iphone", | |||
| "size": "57x57", | |||
| "filename": "Icon@2x.png", | |||
| "scale": "2x" | |||
| }, | |||
| { | |||
| "idiom": "iphone", | |||
| "size": "60x60", | |||
| "filename": "Icon-60@2x.png", | |||
| "scale": "2x" | |||
| }, | |||
| { | |||
| "idiom": "iphone", | |||
| "size": "60x60", | |||
| "filename": "Icon-@3x.png", | |||
| "scale": "3x" | |||
| }, | |||
| { | |||
| "idiom": "ipad", | |||
| "size": "20x20", | |||
| "filename": "Icon-Notifications-20.png", | |||
| "scale": "1x" | |||
| }, | |||
| { | |||
| "idiom": "ipad", | |||
| "size": "20x20", | |||
| "filename": "Icon-Notifications-20@2x.png", | |||
| "scale": "2x" | |||
| }, | |||
| { | |||
| "idiom": "ipad", | |||
| "size": "29x29", | |||
| "filename": "Icon-Small-1.png", | |||
| "scale": "1x" | |||
| }, | |||
| { | |||
| "idiom": "ipad", | |||
| "size": "29x29", | |||
| "filename": "Icon-Small@2x-1.png", | |||
| "scale": "2x" | |||
| }, | |||
| { | |||
| "idiom": "ipad", | |||
| "size": "40x40", | |||
| "filename": "Icon-Spotlight-40.png", | |||
| "scale": "1x" | |||
| }, | |||
| { | |||
| "idiom": "ipad", | |||
| "size": "40x40", | |||
| "filename": "Icon-Spotlight-40@2x-1.png", | |||
| "scale": "2x" | |||
| }, | |||
| { | |||
| "idiom": "ipad", | |||
| "size": "50x50", | |||
| "filename": "Icon-Small-50.png", | |||
| "scale": "1x" | |||
| }, | |||
| { | |||
| "idiom": "ipad", | |||
| "size": "50x50", | |||
| "filename": "Icon-Small-50@2x.png", | |||
| "scale": "2x" | |||
| }, | |||
| { | |||
| "idiom": "ipad", | |||
| "size": "72x72", | |||
| "filename": "Icon-72.png", | |||
| "scale": "1x" | |||
| }, | |||
| { | |||
| "idiom": "ipad", | |||
| "size": "72x72", | |||
| "filename": "Icon-72@2x.png", | |||
| "scale": "2x" | |||
| }, | |||
| { | |||
| "idiom": "ipad", | |||
| "size": "76x76", | |||
| "filename": "Icon-76.png", | |||
| "scale": "1x" | |||
| }, | |||
| { | |||
| "idiom": "ipad", | |||
| "size": "76x76", | |||
| "filename": "Icon-76@2x.png", | |||
| "scale": "2x" | |||
| }, | |||
| { | |||
| "idiom": "ipad", | |||
| "size": "83.5x83.5", | |||
| "filename": "Icon-83.5@2x.png", | |||
| "scale": "2x" | |||
| }, | |||
| { | |||
| "idiom": "ios-marketing", | |||
| "size": "1024x1024", | |||
| "filename": "Icon-AppStore-1024.png", | |||
| "scale": "1x" | |||
| } | |||
| ], | |||
| "info": { | |||
| "version": 1, | |||
| "author": "xcode" | |||
| } | |||
| } | |||
| @@ -0,0 +1,57 @@ | |||
| { | |||
| "images": [ | |||
| { | |||
| "orientation": "portrait", | |||
| "idiom": "iphone", | |||
| "extent": "full-screen", | |||
| "minimum-system-version": "7.0", | |||
| "scale": "2x", | |||
| "filename": "LaunchImage-iphone-2x.png" | |||
| }, | |||
| { | |||
| "orientation": "portrait", | |||
| "idiom": "iphone", | |||
| "extent": "full-screen", | |||
| "minimum-system-version": "7.0", | |||
| "scale": "2x", | |||
| "filename": "LaunchImage-iphone-retina4.png", | |||
| "subtype": "retina4" | |||
| }, | |||
| { | |||
| "orientation": "portrait", | |||
| "idiom": "ipad", | |||
| "extent": "full-screen", | |||
| "minimum-system-version": "7.0", | |||
| "scale": "1x", | |||
| "filename": "LaunchImage-ipad-portrait-1x.png" | |||
| }, | |||
| { | |||
| "orientation": "landscape", | |||
| "idiom": "ipad", | |||
| "extent": "full-screen", | |||
| "minimum-system-version": "7.0", | |||
| "scale": "1x", | |||
| "filename": "LaunchImage-ipad-landscape-1x.png" | |||
| }, | |||
| { | |||
| "orientation": "portrait", | |||
| "idiom": "ipad", | |||
| "extent": "full-screen", | |||
| "minimum-system-version": "7.0", | |||
| "scale": "2x", | |||
| "filename": "LaunchImage-ipad-portrait-2x.png" | |||
| }, | |||
| { | |||
| "orientation": "landscape", | |||
| "idiom": "ipad", | |||
| "extent": "full-screen", | |||
| "minimum-system-version": "7.0", | |||
| "scale": "2x", | |||
| "filename": "LaunchImage-ipad-landscape-2x.png" | |||
| } | |||
| ], | |||
| "info": { | |||
| "version": 1, | |||
| "author": "xcode" | |||
| } | |||
| } | |||
| @@ -0,0 +1,48 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |||
| <plist> | |||
| <dict> | |||
| <key>LSRequiresIPhoneOS</key> | |||
| <true/> | |||
| <key>NSMicrophoneUsageDescription</key> | |||
| <string>This is an audio app which requires audio input. If you do not have a USB audio interface connected it will use the microphone.</string> | |||
| <key>UIViewControllerBasedStatusBarAppearance</key> | |||
| <false/> | |||
| <key>CFBundleExecutable</key> | |||
| <string>${EXECUTABLE_NAME}</string> | |||
| <key>CFBundleIdentifier</key> | |||
| <string>com.roli.juce.pluginhost</string> | |||
| <key>CFBundleName</key> | |||
| <string>AudioPluginHost</string> | |||
| <key>CFBundleDisplayName</key> | |||
| <string>AudioPluginHost</string> | |||
| <key>CFBundlePackageType</key> | |||
| <string>APPL</string> | |||
| <key>CFBundleSignature</key> | |||
| <string>????</string> | |||
| <key>CFBundleShortVersionString</key> | |||
| <string>1.0.0</string> | |||
| <key>CFBundleVersion</key> | |||
| <string>1.0.0</string> | |||
| <key>NSHumanReadableCopyright</key> | |||
| <string>ROLI Ltd.</string> | |||
| <key>NSHighResolutionCapable</key> | |||
| <true/> | |||
| <key>UIRequiresFullScreen</key> | |||
| <true/> | |||
| <key>UIStatusBarHidden</key> | |||
| <true/> | |||
| <key>UISupportedInterfaceOrientations</key> | |||
| <array> | |||
| <string>UIInterfaceOrientationPortrait</string> | |||
| <string>UIInterfaceOrientationLandscapeLeft</string> | |||
| <string>UIInterfaceOrientationLandscapeRight</string> | |||
| </array> | |||
| <key>UIBackgroundModes</key> | |||
| <array> | |||
| <string>audio</string> | |||
| <string>bluetooth-central</string> | |||
| </array> | |||
| </dict> | |||
| </plist> | |||
| @@ -16,7 +16,9 @@ | |||
| //============================================================================== | |||
| // [BEGIN_USER_CODE_SECTION] | |||
| // (You can add your own code in this section, and the Projucer will not overwrite it) | |||
| #ifndef JUCE_ANDROID | |||
| #define JUCE_MODAL_LOOPS_PERMITTED (! JUCE_IOS) | |||
| #endif | |||
| // [END_USER_CODE_SECTION] | |||
| @@ -0,0 +1,698 @@ | |||
| /* ==================================== JUCER_BINARY_RESOURCE ==================================== | |||
| This is an auto-generated file: Any edits you make may be overwritten! | |||
| */ | |||
| namespace BinaryData | |||
| { | |||
| //================== JUCEAppIcon.png ================== | |||
| static const unsigned char temp_binary_data_0[] = | |||
| { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,0,0,0,2,0,8,6,0,0,0,244,120,212,250,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,100,121,113,201,101,60,0,0,3,40,105,84,88,116,88,77,76,58, | |||
| 99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,63,120,112,97,99,107,101,116,32,98,101,103,105,110,61,34,239,187,191,34,32,105,100,61,34,87,53,77,48,77,112,67,101,104,105,72,122,114,101,83,122,78,84,99,122,107,99,57,100,34,63,62,32,60,120, | |||
| 58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34,97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,65,100,111,98,101,32,88,77,80,32,67,111,114,101,32,53,46,54,45,99,48,54,55,32,55,57,46,49,53,55, | |||
| 55,52,55,44,32,50,48,49,53,47,48,51,47,51,48,45,50,51,58,52,48,58,52,50,32,32,32,32,32,32,32,32,34,62,32,60,114,100,102,58,82,68,70,32,120,109,108,110,115,58,114,100,102,61,34,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,49,57,57, | |||
| 57,47,48,50,47,50,50,45,114,100,102,45,115,121,110,116,97,120,45,110,115,35,34,62,32,60,114,100,102,58,68,101,115,99,114,105,112,116,105,111,110,32,114,100,102,58,97,98,111,117,116,61,34,34,32,120,109,108,110,115,58,120,109,112,61,34,104,116,116,112, | |||
| 58,47,47,110,115,46,97,100,111,98,101,46,99,111,109,47,120,97,112,47,49,46,48,47,34,32,120,109,108,110,115,58,120,109,112,77,77,61,34,104,116,116,112,58,47,47,110,115,46,97,100,111,98,101,46,99,111,109,47,120,97,112,47,49,46,48,47,109,109,47,34,32,120, | |||
| 109,108,110,115,58,115,116,82,101,102,61,34,104,116,116,112,58,47,47,110,115,46,97,100,111,98,101,46,99,111,109,47,120,97,112,47,49,46,48,47,115,84,121,112,101,47,82,101,115,111,117,114,99,101,82,101,102,35,34,32,120,109,112,58,67,114,101,97,116,111, | |||
| 114,84,111,111,108,61,34,65,100,111,98,101,32,80,104,111,116,111,115,104,111,112,32,67,67,32,50,48,49,53,32,40,77,97,99,105,110,116,111,115,104,41,34,32,120,109,112,77,77,58,73,110,115,116,97,110,99,101,73,68,61,34,120,109,112,46,105,105,100,58,53,52, | |||
| 53,66,70,48,69,70,55,66,48,54,49,49,69,53,66,51,49,53,69,69,54,51,67,65,56,68,70,50,56,48,34,32,120,109,112,77,77,58,68,111,99,117,109,101,110,116,73,68,61,34,120,109,112,46,100,105,100,58,53,52,53,66,70,48,70,48,55,66,48,54,49,49,69,53,66,51,49,53,69, | |||
| 69,54,51,67,65,56,68,70,50,56,48,34,62,32,60,120,109,112,77,77,58,68,101,114,105,118,101,100,70,114,111,109,32,115,116,82,101,102,58,105,110,115,116,97,110,99,101,73,68,61,34,120,109,112,46,105,105,100,58,53,52,53,66,70,48,69,68,55,66,48,54,49,49,69, | |||
| 53,66,51,49,53,69,69,54,51,67,65,56,68,70,50,56,48,34,32,115,116,82,101,102,58,100,111,99,117,109,101,110,116,73,68,61,34,120,109,112,46,100,105,100,58,53,52,53,66,70,48,69,69,55,66,48,54,49,49,69,53,66,51,49,53,69,69,54,51,67,65,56,68,70,50,56,48,34, | |||
| 47,62,32,60,47,114,100,102,58,68,101,115,99,114,105,112,116,105,111,110,62,32,60,47,114,100,102,58,82,68,70,62,32,60,47,120,58,120,109,112,109,101,116,97,62,32,60,63,120,112,97,99,107,101,116,32,101,110,100,61,34,114,34,63,62,115,115,54,90,0,0,175,140, | |||
| 73,68,65,84,120,218,236,157,7,128,92,117,181,255,207,45,211,251,236,204,246,94,179,61,189,247,144,70,11,45,244,14,74,81,154,20,17,241,1,239,161,40,54,44,207,191,138,138,62,124,2,250,176,32,85,233,32,37,72,9,9,73,72,239,61,219,119,218,109,255,223,239, | |||
| 55,155,80,4,201,220,123,103,167,157,79,24,118,179,73,238,220,185,237,124,207,249,157,194,105,154,6,8,130,32,8,130,20,22,60,30,2,4,65,16,4,65,1,128,32,8,130,32,8,10,0,4,65,16,4,65,80,0,32,8,130,32,8,130,2,0,65,16,4,65,16,20,0,8,130,32,8,130,160,0,64,16, | |||
| 4,65,16,4,5,0,130,32,8,130,32,40,0,16,4,65,16,4,65,1,128,32,8,130,32,8,10,0,4,65,16,4,65,80,0,32,8,130,32,8,130,2,0,65,16,4,65,16,20,0,8,130,32,8,130,160,0,64,16,4,65,16,4,5,0,130,32,8,130,32,40,0,16,4,65,16,4,65,1,128,32,8,130,32,40,0,16,4,65,16,4,65, | |||
| 1,128,32,8,130,32,8,10,0,4,65,16,4,65,80,0,32,8,130,32,8,130,2,0,65,16,4,65,16,20,0,8,130,32,8,130,160,0,64,16,4,65,16,4,5,0,130,32,8,130,32,40,0,16,4,65,16,4,65,1,128,32,8,130,32,8,10,0,4,65,16,4,65,204,70,204,228,155,39,18,9,60,3,8,242,41,104,154,70, | |||
| 254,207,129,166,210,175,26,249,10,160,42,90,242,207,200,207,52,250,61,151,252,187,28,207,125,228,223,90,28,2,136,86,129,254,171,195,63,226,224,200,223,102,247,61,247,9,111,41,147,151,58,242,103,106,242,31,113,228,61,85,136,15,201,255,186,111,201,221, | |||
| 98,239,205,9,220,200,126,16,175,66,224,217,31,28,222,39,186,141,79,124,55,4,65,64,20,69,224,249,204,248,226,25,19,0,146,36,193,130,5,11,96,231,206,157,120,5,32,5,13,51,234,228,63,85,86,129,218,85,250,123,142,163,134,52,105,53,109,30,11,8,22,94,180,186, | |||
| 69,167,59,108,247,17,227,239,119,23,59,124,158,18,71,144,124,31,176,216,5,127,184,217,235,35,127,213,71,254,185,151,124,245,120,74,236,14,103,192,102,39,127,238,36,191,23,200,203,245,33,163,79,191,255,164,39,78,100,68,4,208,191,23,165,223,115,28,23,149, | |||
| 98,74,172,103,219,16,253,253,16,121,13,240,60,55,208,187,125,184,47,210,19,31,32,6,191,55,62,40,31,234,217,58,216,79,12,126,127,124,64,234,27,58,24,31,34,251,31,143,13,74,160,74,42,168,106,82,188,80,113,64,182,199,62,23,21,12,60,143,194,0,65,238,186, | |||
| 235,46,56,243,204,51,11,75,0,80,15,98,243,230,205,176,123,247,110,188,2,144,2,119,1,136,53,182,130,215,95,233,12,19,207,189,44,212,228,173,180,58,197,202,80,163,183,130,220,41,85,254,74,23,253,121,88,180,11,1,135,207,234,34,247,142,155,23,121,142,136, | |||
| 2,96,138,129,69,4,134,142,184,249,148,65,101,16,6,134,52,115,246,143,108,84,168,251,168,94,8,212,2,4,57,203,72,132,194,2,85,9,43,48,177,16,149,135,163,253,210,0,177,243,251,251,119,69,14,202,49,101,119,223,206,200,174,72,111,124,199,240,193,248,142,129, | |||
| 61,145,61,145,158,196,190,200,65,169,15,18,32,227,201,71,10,157,190,190,190,76,62,122,50,135,213,106,197,179,143,20,4,212,163,119,4,108,78,95,133,179,212,225,183,214,16,35,223,20,168,118,53,187,66,182,6,242,179,42,209,42,148,147,159,7,136,23,109,103, | |||
| 134,29,52,226,57,143,68,8,104,100,64,101,170,153,121,211,28,36,163,239,144,248,136,141,254,8,212,229,55,53,195,71,249,183,250,0,172,34,93,110,0,135,197,99,117,184,253,92,136,236,106,125,113,93,128,236,3,199,62,59,93,14,160,75,22,170,162,41,137,136,220, | |||
| 79,94,123,7,118,69,118,70,251,19,27,15,109,26,220,60,180,63,182,190,111,199,240,150,222,29,195,187,162,125,137,94,37,161,226,69,131,20,4,130,32,20,166,0,64,144,124,196,234,18,121,111,153,163,140,24,246,70,226,197,183,133,155,188,157,158,18,71,139,167, | |||
| 212,81,103,243,136,101,196,192,219,233,58,57,91,199,39,47,69,214,152,113,87,228,164,209,147,227,202,191,221,190,150,133,159,121,36,16,193,34,123,138,170,141,8,151,79,121,222,89,248,160,51,96,13,186,195,246,54,142,227,22,53,31,83,206,142,131,42,107,74, | |||
| 108,80,58,56,124,48,182,131,8,130,181,68,24,172,233,221,54,188,234,224,166,129,13,228,247,59,134,14,196,162,120,117,33,8,10,0,4,201,10,44,78,17,136,177,175,40,170,115,183,21,143,241,141,35,6,127,188,191,202,213,78,60,251,26,171,67,244,208,117,111,234, | |||
| 201,51,239,151,122,242,228,171,36,43,255,222,165,206,115,180,145,156,0,85,86,62,30,74,16,44,14,161,36,88,235,46,9,53,120,38,214,207,44,97,130,66,142,41,82,124,88,222,49,176,59,178,238,208,150,161,119,14,174,31,120,107,207,234,222,213,253,187,34,91,163, | |||
| 125,137,56,94,133,8,130,2,0,65,210,14,241,226,93,129,42,87,115,89,87,96,2,49,246,83,194,77,158,241,174,176,189,145,24,123,47,13,185,39,13,125,242,149,136,224,18,119,106,202,32,121,252,20,250,98,63,72,254,159,227,192,98,115,137,245,37,173,254,250,178, | |||
| 206,192,177,116,73,65,138,169,82,164,55,190,109,96,119,116,21,17,3,43,14,172,31,120,125,255,218,190,247,250,118,70,246,107,170,134,199,18,65,80,0,32,136,97,131,239,41,110,241,117,86,116,7,166,149,118,4,102,4,106,220,227,236,94,177,150,174,211,83,207, | |||
| 158,101,185,163,177,79,175,46,24,17,6,170,66,4,193,136,191,79,69,129,51,96,109,116,19,241,85,57,33,120,50,21,15,241,65,233,16,17,0,171,247,173,233,123,109,247,202,158,151,247,174,233,127,171,127,231,240,238,195,165,147,8,130,160,0,64,144,79,197,225,179, | |||
| 90,66,77,158,182,154,41,225,217,229,221,193,185,129,26,215,68,135,223,86,205,11,192,214,234,21,98,240,229,4,121,197,49,73,45,227,162,128,69,90,62,88,70,224,69,190,40,220,232,153,83,210,234,155,211,117,106,205,151,227,67,82,127,255,142,200,187,251,214, | |||
| 246,189,176,107,101,239,243,68,24,188,213,179,117,168,23,143,30,130,160,0,64,16,98,52,56,8,84,187,43,171,38,21,205,168,28,87,180,176,180,195,63,195,85,100,107,33,30,62,71,13,62,245,240,165,40,122,247,57,33,10,84,141,136,51,162,12,70,42,8,120,129,247, | |||
| 133,26,61,179,138,91,125,179,58,79,169,185,53,62,40,237,57,184,113,240,181,157,111,31,122,122,199,138,131,47,238,93,219,191,70,138,200,168,228,16,20,0,8,82,40,208,44,125,226,221,119,86,79,14,45,168,28,31,92,66,4,192,100,155,91,244,209,144,190,146,80, | |||
| 208,195,207,87,65,32,242,101,101,93,129,147,43,198,7,79,158,116,126,163,210,191,43,178,234,192,250,254,167,55,191,180,239,137,237,111,28,92,49,124,48,62,132,71,13,65,1,128,32,121,6,241,234,173,229,93,129,201,213,147,195,75,171,38,135,150,248,43,156,99, | |||
| 137,65,224,169,193,167,158,254,199,91,221,34,121,42,8,98,35,75,6,28,8,222,50,199,216,64,181,107,108,243,194,242,27,134,246,199,182,31,218,52,248,236,150,87,246,63,178,245,213,3,47,244,110,27,234,193,35,134,160,0,64,144,92,53,250,33,155,181,106,98,104, | |||
| 74,195,156,210,19,43,186,3,199,186,66,246,54,218,181,134,54,153,145,98,133,93,138,135,106,0,88,62,7,125,81,236,94,75,117,245,148,208,133,181,211,139,47,140,13,36,246,237,93,211,247,252,150,151,247,255,105,235,43,251,159,233,221,62,124,16,15,24,130,2, | |||
| 0,65,178,28,171,75,132,138,238,224,148,230,99,202,78,174,153,86,124,2,17,1,109,244,97,79,155,235,96,166,62,242,105,208,74,1,53,154,20,133,188,200,151,84,79,10,157,81,59,181,248,140,88,63,17,3,107,251,254,78,196,192,31,54,60,179,231,133,161,3,177,126, | |||
| 60,90,8,10,0,4,201,18,232,112,153,146,86,127,203,152,37,21,167,212,78,15,159,234,43,119,78,160,195,102,104,184,55,49,92,200,70,95,251,88,215,192,145,185,1,159,82,21,199,29,233,39,252,65,99,97,238,99,191,47,136,163,166,106,32,29,22,3,22,34,6,38,134,206, | |||
| 37,98,224,220,73,231,55,108,223,181,178,247,209,13,207,238,249,253,214,127,236,127,41,129,9,132,8,10,0,4,201,12,129,106,87,81,211,130,178,165,228,117,78,176,214,51,87,180,243,118,37,126,56,188,159,127,166,156,118,197,35,126,234,145,175,234,200,215,164, | |||
| 81,255,192,170,243,28,207,70,240,114,35,95,217,48,31,78,36,63,23,152,6,160,163,71,121,78,132,15,154,10,115,108,59,10,237,221,203,141,180,243,213,228,15,189,39,253,170,30,249,154,28,240,155,220,238,225,247,161,191,232,164,63,238,200,215,252,16,14,76,12, | |||
| 140,44,23,217,60,150,234,230,5,101,87,146,235,237,202,254,157,195,43,183,188,178,255,247,239,63,185,235,255,246,174,233,95,143,205,135,16,20,0,8,146,102,104,136,191,114,124,209,180,214,165,21,231,84,79,14,159,236,240,91,203,21,73,97,235,250,137,161,220, | |||
| 117,200,14,27,87,149,189,20,106,222,143,24,117,129,23,153,1,183,10,54,176,11,14,242,114,130,83,116,147,151,7,156,150,145,175,228,247,118,209,69,94,78,246,231,54,242,119,173,188,29,44,188,13,68,242,239,69,222,194,182,65,223,135,126,165,191,255,240,84, | |||
| 1,250,94,146,26,63,34,6,36,37,193,246,35,174,198,200,207,19,144,80,98,16,147,163,16,87,34,16,37,175,136,60,4,195,210,0,68,229,225,35,223,199,200,207,227,74,148,189,36,34,38,152,136,208,180,35,194,128,10,147,195,47,14,248,156,59,71,116,153,224,240,50, | |||
| 146,167,196,209,61,238,140,186,238,174,147,107,110,221,255,126,255,51,235,158,220,245,155,141,207,237,125,98,232,64,108,24,239,82,4,5,0,130,152,136,159,120,251,205,243,203,78,110,59,190,234,34,127,149,115,58,53,42,82,156,24,168,33,41,183,12,61,53,240, | |||
| 212,219,166,70,158,188,168,129,164,6,145,26,106,106,196,221,86,31,248,172,69,16,176,133,193,79,94,65,242,242,218,130,228,103,65,112,89,188,224,32,70,222,33,184,70,12,120,246,64,141,125,156,136,132,40,17,3,84,16,12,36,122,161,63,209,3,125,241,131,208, | |||
| 27,219,15,189,228,43,253,126,80,234,35,127,62,200,4,133,60,50,45,136,70,38,4,242,226,217,139,203,137,200,193,225,4,66,178,187,142,146,86,255,241,229,93,129,227,39,95,212,180,113,203,203,251,126,191,246,137,93,191,221,245,78,207,90,140,10,32,40,0,16,68, | |||
| 39,116,132,108,221,244,240,216,214,99,43,47,172,158,28,90,238,8,216,202,233,186,126,114,125,54,55,60,122,106,232,15,123,194,2,47,48,239,220,111,13,16,195,94,12,197,142,10,40,118,86,64,152,124,45,178,151,48,35,239,182,248,178,206,184,31,13,52,170,144, | |||
| 140,74,184,161,232,83,143,137,10,195,210,32,19,1,135,162,251,224,96,108,15,236,143,238,130,253,145,157,228,251,189,76,48,68,165,33,34,12,164,145,72,133,192,162,31,84,24,112,89,42,10,180,145,4,83,57,14,96,115,139,141,29,39,85,223,66,68,234,151,246,172, | |||
| 234,125,226,189,191,238,248,229,166,23,246,254,45,54,32,73,120,55,35,40,0,16,228,40,176,185,45,98,219,241,149,75,90,22,149,127,190,180,221,191,132,120,251,22,230,237,15,102,239,115,84,101,198,254,131,176,183,133,183,18,99,238,133,32,49,236,165,206,106, | |||
| 40,119,213,66,133,187,142,25,123,191,173,136,9,129,130,19,116,192,51,129,67,95,101,206,154,143,252,25,53,250,3,82,47,28,136,238,134,189,195,219,97,247,240,86,216,51,188,13,14,196,118,195,64,188,7,98,106,116,68,68,37,151,67,4,58,102,49,203,68,1,91,34, | |||
| 24,102,121,20,118,218,112,168,114,124,240,228,254,221,205,239,110,120,102,207,47,222,125,120,219,3,125,59,177,156,16,65,1,128,32,159,136,183,220,233,239,62,181,230,204,134,185,165,159,11,214,184,199,43,172,13,111,118,122,251,204,179,39,70,139,126,165, | |||
| 30,170,203,226,33,94,124,13,51,242,53,238,102,168,242,52,66,137,163,146,133,239,185,2,203,162,215,245,32,226,45,44,42,66,95,45,254,177,71,126,78,151,19,168,40,216,53,180,25,182,15,109,128,29,67,155,96,127,100,23,12,38,122,89,110,2,93,62,17,88,126,67, | |||
| 22,69,9,104,84,32,166,0,93,224,112,6,109,93,19,207,171,255,97,251,9,85,55,111,123,253,192,253,111,63,184,229,87,123,86,245,174,199,51,142,160,0,64,16,66,105,135,191,178,109,105,229,197,77,11,202,46,118,133,237,53,244,225,153,109,107,251,116,189,94,30, | |||
| 49,248,52,169,206,107,13,66,153,171,6,106,61,45,80,231,109,133,74,119,3,11,227,179,76,123,196,52,232,146,66,141,167,153,189,166,195,18,246,51,154,95,176,39,178,13,182,13,188,15,91,6,214,18,81,176,17,122,98,7,88,18,98,182,9,2,85,86,201,181,172,130,96, | |||
| 227,203,91,22,149,127,185,97,78,201,23,247,174,238,123,248,173,7,54,255,100,211,11,251,94,199,51,140,160,0,64,10,211,240,183,251,155,198,159,93,127,69,195,236,146,243,45,78,177,72,138,200,89,19,230,167,235,213,52,73,141,26,125,106,76,168,193,167,222, | |||
| 125,189,183,13,26,253,29,196,224,55,178,53,123,100,244,241,90,3,236,117,56,82,64,171,14,246,68,182,195,150,254,181,176,190,111,37,108,31,92,15,61,241,253,144,80,226,236,220,209,232,66,166,133,153,54,178,60,192,113,224,170,24,23,60,159,188,206,221,249, | |||
| 86,207,99,171,255,188,253,135,155,95,218,247,52,54,169,66,80,0,32,5,65,205,212,112,71,251,241,85,95,32,222,208,121,162,93,112,209,48,127,54,24,126,133,121,249,9,182,158,79,203,235,106,60,245,196,216,119,194,24,255,56,168,246,52,129,223,22,194,147,151, | |||
| 133,216,4,7,139,196,208,215,188,202,147,32,38,71,96,231,240,38,34,6,222,133,245,189,239,176,101,131,129,68,15,75,44,20,57,11,203,35,200,84,116,128,38,13,178,101,45,14,120,34,2,78,168,158,20,58,225,208,230,193,103,222,249,195,214,123,214,60,182,243,81, | |||
| 9,133,0,50,138,112,154,150,153,82,149,68,34,1,45,45,45,176,117,235,86,60,11,5,66,195,220,210,174,241,103,213,93,91,49,54,120,54,199,113,54,250,32,204,212,245,119,24,234,225,203,154,196,18,212,168,129,175,243,142,129,214,224,4,104,246,119,67,185,179,134, | |||
| 53,185,65,114,27,90,126,184,169,255,61,88,211,243,79,216,208,255,46,171,60,160,125,14,104,100,128,190,50,189,84,32,88,121,16,201,235,208,166,161,23,222,249,195,150,239,172,121,124,23,10,129,2,226,231,63,255,57,124,238,115,159,195,8,0,146,159,148,119, | |||
| 7,219,102,92,209,114,35,241,120,206,38,191,181,102,58,177,143,26,125,154,64,70,215,242,195,142,114,102,236,59,138,166,64,163,175,147,133,150,145,252,130,10,187,9,197,115,216,139,246,31,216,54,180,1,222,59,180,130,9,130,93,195,91,88,51,35,26,21,160,149, | |||
| 27,153,16,3,180,137,21,125,249,170,156,115,22,220,220,57,167,251,244,186,231,87,254,97,235,119,215,62,182,243,81,92,26,64,48,2,128,228,36,165,29,254,134,241,103,213,95,223,48,187,228,2,226,229,56,89,75,213,12,57,252,180,60,143,173,9,147,7,61,205,206, | |||
| 111,13,142,135,238,208,116,104,240,117,20,100,73,30,146,204,243,216,49,184,9,222,235,89,1,239,30,122,141,124,191,145,137,129,100,231,68,107,198,34,3,201,136,128,0,135,182,12,254,253,173,223,109,254,214,170,63,109,127,6,207,22,70,0,48,2,128,228,4,197, | |||
| 99,124,165,147,206,111,184,174,126,86,201,101,162,93,240,81,143,63,19,94,63,205,220,79,168,113,22,222,15,59,202,160,189,104,50,51,250,77,196,211,167,235,198,72,129,123,63,228,186,160,185,29,244,181,180,230,28,216,57,180,9,222,57,248,50,188,123,240,53, | |||
| 246,125,76,137,177,168,192,104,55,102,58,28,17,240,87,56,23,30,243,149,174,133,99,22,87,252,133,8,129,187,54,189,136,85,3,8,10,0,36,75,241,150,59,61,99,151,215,94,209,177,172,234,58,187,215,82,154,136,140,254,52,62,154,232,37,17,79,159,38,244,209,208, | |||
| 239,184,192,108,152,88,60,7,90,2,227,88,73,25,130,124,26,180,148,147,190,142,171,61,15,54,247,175,133,183,15,190,68,196,192,171,176,55,178,157,37,134,90,121,219,168,86,19,200,68,4,16,5,11,21,227,130,203,42,199,23,29,183,253,141,131,247,255,227,255,173, | |||
| 251,230,222,213,125,216,71,0,49,71,4,227,18,0,98,20,155,91,228,186,79,171,61,103,252,57,245,95,117,6,108,99,18,81,153,149,61,141,38,178,38,51,195,111,23,29,172,84,111,66,241,92,230,237,211,158,250,8,162,23,90,98,248,126,239,219,176,98,255,179,176,166, | |||
| 231,77,232,143,31,202,204,18,1,121,43,139,93,160,145,129,193,141,47,236,253,241,171,63,93,255,253,190,157,195,7,240,12,229,62,184,4,128,228,166,122,228,57,104,154,95,58,119,218,101,45,183,23,213,185,231,176,114,190,81,108,224,115,216,219,167,195,117, | |||
| 104,95,253,113,225,153,48,169,100,1,43,7,67,16,83,196,173,224,128,46,34,36,233,235,80,108,31,91,34,88,177,239,89,216,54,248,62,200,138,196,38,52,142,74,84,96,164,124,144,220,115,158,49,139,43,190,82,51,37,124,206,170,63,109,187,235,141,223,108,250,69, | |||
| 98,88,198,76,65,4,35,0,200,232,81,214,17,168,159,126,69,203,127,84,79,14,93,192,38,163,37,70,111,20,47,13,239,211,108,110,155,96,103,117,250,211,75,23,179,7,52,134,248,145,209,17,158,42,235,49,240,234,158,167,88,242,96,50,42,96,97,249,2,163,5,47,112, | |||
| 32,58,4,232,219,54,252,218,235,247,109,188,109,237,99,59,254,166,225,240,65,140,0,96,4,0,73,39,142,128,213,49,229,162,166,171,59,78,170,190,73,180,241,193,209,92,227,167,165,123,180,132,143,134,245,103,150,45,133,105,101,139,89,184,31,65,70,213,107,2, | |||
| 158,117,33,164,47,26,21,120,99,223,179,240,218,190,191,179,121,5,244,79,105,84,32,221,203,3,108,240,208,144,12,158,50,199,212,197,183,117,63,53,102,113,249,111,95,253,217,250,219,247,172,238,221,132,103,8,65,1,128,152,251,208,35,207,179,182,227,171,142, | |||
| 157,114,73,211,157,254,42,215,56,106,248,71,35,179,255,112,152,159,122,93,229,174,122,152,78,140,254,228,146,5,184,182,143,100,5,116,254,195,146,154,179,96,126,213,41,176,234,224,171,240,210,158,199,224,253,222,149,68,172,198,193,202,219,217,108,130, | |||
| 116,114,184,98,160,102,74,248,220,242,238,224,177,171,254,180,237,155,43,126,181,241,135,209,254,68,28,207,14,130,2,0,49,76,121,87,160,102,234,231,155,255,139,60,100,206,163,15,155,209,104,219,75,13,63,13,243,211,245,213,38,127,23,204,174,56,1,198,133, | |||
| 102,18,239,202,158,215,199,90,147,162,160,197,7,65,27,62,8,234,240,33,80,135,246,147,239,15,145,159,13,177,68,48,206,230,1,222,83,10,66,184,9,132,162,6,0,193,146,241,125,86,135,183,129,58,176,46,249,53,222,75,63,4,112,130,131,236,107,17,112,116,64,146, | |||
| 189,152,124,31,6,206,234,7,206,226,205,203,243,70,43,4,104,226,41,125,109,236,95,5,47,238,250,43,188,115,240,21,24,150,6,216,53,43,164,57,79,128,54,12,226,120,46,56,225,156,134,187,27,102,151,158,241,218,47,215,223,180,230,177,157,207,2,46,11,32,40,0, | |||
| 16,61,216,189,22,24,127,78,253,149,19,206,174,191,77,176,9,197,163,17,238,215,52,34,48,212,24,123,160,142,13,207,132,121,21,203,160,45,56,41,255,12,61,49,242,42,49,242,218,192,94,80,250,119,18,3,186,135,188,246,130,22,33,198,62,54,64,108,104,12,52,37, | |||
| 145,108,30,127,56,4,147,60,64,201,223,138,86,224,125,149,96,169,39,162,168,101,49,112,206,81,238,96,72,206,147,188,239,89,144,118,61,6,10,49,254,154,52,4,201,46,79,28,251,239,200,126,211,96,56,79,30,51,196,8,82,227,207,89,131,192,59,136,40,112,84,0,231, | |||
| 170,6,222,89,65,4,66,25,17,8,116,255,243,163,237,50,237,40,73,95,123,134,183,194,139,187,31,101,73,131,180,29,49,93,26,16,56,49,141,167,68,99,73,184,238,98,251,132,37,183,143,125,166,101,81,197,207,94,188,103,205,109,135,54,15,238,195,167,25,242,73,96, | |||
| 18,32,242,137,212,207,44,233,158,117,117,235,119,138,26,60,199,80,195,79,31,46,105,245,34,137,65,97,137,125,162,131,101,243,207,175,56,25,234,125,237,249,97,236,35,61,160,246,239,2,165,119,27,40,61,196,75,238,219,65,60,251,3,196,208,247,3,80,67,79,62, | |||
| 59,179,155,212,75,228,5,90,94,49,98,240,185,127,27,35,1,69,102,34,129,247,148,128,109,220,153,96,29,179,100,84,62,143,210,255,30,36,214,255,63,80,250,86,38,141,54,77,126,251,183,161,110,109,68,16,168,116,44,30,19,15,236,51,83,113,32,88,147,194,192,22, | |||
| 38,98,160,18,120,119,29,8,238,6,224,220,181,192,211,101,30,222,146,243,231,159,230,9,188,188,231,49,120,101,207,147,112,48,186,55,237,66,224,72,84,194,41,66,180,47,177,253,205,255,221,124,243,91,15,108,126,96,52,19,117,145,163,39,147,73,128,40,0,144, | |||
| 143,123,253,214,233,151,183,220,216,121,114,205,45,228,183,78,57,158,222,117,126,106,8,98,74,148,77,223,155,24,158,11,243,42,79,102,157,217,114,214,216,75,81,98,236,119,131,122,104,19,40,7,55,18,131,191,37,233,217,83,175,94,145,62,102,232,133,15,60,123, | |||
| 67,22,89,34,54,85,2,107,203,66,112,76,191,18,64,180,165,237,243,73,59,31,129,248,250,255,38,239,25,37,94,189,25,221,20,53,38,8,168,48,208,52,153,9,5,118,124,200,245,192,219,138,153,32,224,189,77,32,120,90,200,247,181,44,130,144,171,208,137,132,47,239, | |||
| 126,156,69,5,14,68,119,131,133,8,1,49,205,66,128,86,11,88,93,34,236,124,187,231,15,47,222,179,230,166,61,171,122,241,129,139,2,0,5,0,242,137,94,255,100,226,245,255,128,120,253,83,105,134,113,58,175,13,186,198,31,87,34,96,23,92,48,169,120,30,44,168,58, | |||
| 149,117,97,203,57,131,31,31,2,149,122,246,251,215,129,188,255,125,80,123,182,38,67,251,114,44,121,131,209,7,188,48,226,213,167,53,51,92,99,251,98,169,159,5,206,121,55,166,69,4,72,219,30,76,26,127,230,241,167,217,131,61,34,10,164,164,40,160,83,251,172, | |||
| 1,224,93,213,32,120,199,0,239,239,32,162,160,25,56,123,113,206,93,51,131,137,62,120,137,136,128,164,16,216,53,146,35,144,222,227,105,113,8,32,199,213,253,111,254,118,211,87,87,220,183,241,23,180,116,23,65,1,128,2,0,1,187,207,98,153,126,89,203,87,70,188, | |||
| 126,91,58,189,254,164,225,143,178,53,254,241,197,179,97,97,213,114,168,201,165,198,61,74,130,133,241,149,189,239,129,188,119,53,40,135,182,36,215,237,229,4,51,242,156,32,154,231,217,235,20,36,214,214,165,224,152,125,141,169,219,149,247,62,3,177,85,119, | |||
| 16,227,111,251,140,112,127,250,174,28,38,10,84,137,232,1,133,69,9,104,82,33,239,170,1,193,215,14,66,112,44,240,222,22,224,44,254,220,17,2,82,31,60,191,243,47,68,8,60,2,61,177,253,172,233,80,58,155,10,113,52,26,224,20,97,247,59,61,15,191,112,207,154,27, | |||
| 48,26,128,2,0,5,64,129,83,55,163,120,236,236,107,218,126,72,188,254,89,233,246,250,233,26,63,71,140,71,87,104,42,44,169,57,27,26,188,185,177,198,175,13,29,0,121,223,26,144,119,175,4,101,223,58,80,7,247,178,36,189,35,6,159,134,243,51,60,83,254,35,18,43, | |||
| 17,1,231,220,47,129,165,121,161,41,91,84,163,187,33,186,226,242,100,162,95,54,173,201,211,124,2,85,102,75,7,52,209,144,179,133,88,84,64,8,78,0,33,48,150,45,25,192,40,246,238,215,75,111,252,0,60,179,227,97,120,121,207,227,44,58,64,219,89,115,105,76,136, | |||
| 28,137,6,236,253,231,253,155,110,124,237,222,245,191,197,167,96,225,10,0,172,2,40,80,68,27,15,51,174,28,115,245,184,51,234,190,78,108,190,59,157,165,125,180,129,15,29,199,75,27,167,44,37,134,191,163,104,74,182,155,124,22,202,151,119,173,36,175,183,217, | |||
| 90,190,26,237,99,63,167,161,104,160,198,198,154,173,35,132,147,137,117,177,55,127,7,98,245,100,224,236,62,227,194,109,211,175,64,139,31,34,23,77,150,117,90,164,198,93,16,200,39,78,46,119,104,137,94,144,15,188,12,210,254,23,129,19,93,44,58,32,6,199,129, | |||
| 16,154,2,130,183,213,164,156,5,243,161,61,45,78,107,188,28,102,149,31,7,79,110,127,16,86,236,125,26,98,106,20,236,172,228,213,124,97,73,251,119,240,2,87,58,253,242,150,251,203,58,252,139,94,184,103,205,245,61,91,134,112,174,64,33,218,1,60,4,133,71,73, | |||
| 171,175,122,254,151,59,127,76,110,254,19,232,196,190,116,101,248,83,163,159,80,226,80,233,174,103,134,127,74,233,49,105,245,108,140,217,124,149,24,250,13,32,239,124,27,228,29,255,4,133,8,0,234,73,3,207,143,100,170,231,208,248,96,193,194,202,10,19,239, | |||
| 255,13,108,221,203,141,121,255,131,27,65,38,6,21,68,103,246,127,110,150,111,33,142,152,76,34,226,6,55,64,188,127,13,112,219,126,207,202,13,133,192,56,16,195,211,129,247,119,146,191,154,125,109,163,75,156,85,112,193,152,27,153,16,120,108,235,253,176,234, | |||
| 224,107,108,41,137,46,151,153,13,237,36,72,69,127,237,180,226,243,74,59,2,211,94,250,193,154,47,174,126,100,199,83,248,116,68,1,128,228,49,227,207,170,63,101,202,165,77,63,178,185,197,242,248,80,122,234,250,233,58,127,76,142,128,223,86,4,39,212,93,0, | |||
| 243,43,79,33,222,76,118,26,16,229,208,38,144,183,173,32,70,255,13,150,177,79,67,251,28,109,174,195,146,206,156,57,123,158,105,159,0,105,211,11,96,235,56,201,80,179,32,105,207,83,160,201,195,89,105,48,63,43,18,66,147,21,57,214,159,159,136,129,200,110, | |||
| 80,134,182,178,42,6,206,81,14,98,209,4,16,139,103,131,64,196,64,182,69,6,104,123,235,171,186,238,130,183,15,188,4,143,18,33,176,117,96,93,218,74,7,105,3,33,209,198,55,46,188,181,235,137,170,201,161,187,158,251,246,123,183,199,250,19,18,32,40,0,144,252, | |||
| 193,225,183,218,231,223,216,241,141,150,197,21,215,73,177,244,181,241,165,235,252,2,47,194,236,242,227,225,184,186,243,32,100,47,203,186,99,65,203,242,228,109,175,129,180,237,85,22,222,167,158,254,7,70,223,149,31,39,156,70,1,250,118,50,81,35,132,155, | |||
| 117,30,40,137,252,251,55,71,140,104,46,195,37,207,237,72,254,130,22,223,15,137,29,127,6,105,215,163,192,19,175,91,12,77,5,161,120,14,17,3,237,144,61,185,28,0,227,194,179,160,189,104,50,188,176,235,47,240,212,246,135,160,55,118,0,236,162,211,244,57,3, | |||
| 170,76,187,110,42,92,235,146,202,91,194,77,222,25,79,127,227,221,203,118,175,236,125,31,159,154,40,0,144,60,160,118,122,113,251,220,47,181,221,27,172,245,76,75,215,184,222,195,225,254,102,127,55,156,84,127,49,180,4,198,101,213,49,208,18,195,32,239,124, | |||
| 139,121,197,52,131,95,141,246,19,131,64,215,144,173,249,99,244,63,102,244,104,101,130,114,96,131,110,1,160,198,246,146,227,180,55,253,37,127,163,31,30,33,255,137,35,145,129,93,16,223,250,0,112,59,254,200,18,8,197,146,57,44,50,64,163,4,217,0,13,255,47, | |||
| 172,58,29,198,135,231,192,163,91,255,7,94,221,251,20,168,170,98,126,75,108,13,88,23,193,64,181,123,206,169,255,61,245,229,21,247,109,188,122,197,125,27,30,208,176,90,16,5,0,146,187,76,185,164,233,28,242,250,33,199,113,193,116,24,255,195,225,254,160,189, | |||
| 24,150,54,158,13,115,42,78,28,149,46,103,71,45,76,136,135,79,141,190,188,245,53,80,6,118,143,60,255,109,57,29,222,79,197,241,165,29,8,117,159,219,216,62,114,0,35,201,210,191,124,61,64,71,34,3,26,185,62,214,130,220,183,10,248,45,191,101,149,4,98,217,98, | |||
| 16,139,38,101,69,229,3,29,58,68,243,3,166,148,44,128,63,111,254,37,108,32,251,153,142,101,1,90,2,204,9,92,104,198,149,99,126,87,60,198,55,245,239,119,190,123,83,12,7,11,161,0,64,114,11,135,223,106,157,119,99,199,183,90,22,149,95,43,199,20,80,20,243,165, | |||
| 60,157,120,70,153,89,126,44,156,88,119,17,123,72,101,133,183,47,69,147,33,254,13,207,129,76,188,125,250,123,186,38,158,83,137,124,102,69,1,232,16,33,221,81,147,129,100,169,93,129,28,43,42,116,56,242,210,148,56,155,115,32,239,123,30,120,119,61,136,165, | |||
| 11,192,82,58,63,43,162,2,99,2,227,225,134,241,157,240,236,142,63,194,147,219,126,7,3,82,31,216,89,14,131,121,203,2,218,72,130,96,227,220,210,171,3,213,174,113,79,127,99,213,37,187,87,246,108,192,167,42,10,0,36,7,168,24,27,172,59,230,150,174,95,21,213, | |||
| 187,231,198,233,0,31,147,147,252,105,223,126,218,197,175,202,211,4,167,212,127,14,186,66,211,178,226,115,171,196,195,151,54,60,11,210,230,151,64,233,219,201,50,168,57,161,64,188,253,127,19,163,49,160,164,14,143,247,41,48,221,196,3,140,36,173,170,195, | |||
| 91,33,190,225,167,32,109,123,8,132,240,116,176,16,177,43,4,186,51,251,208,230,44,176,168,250,12,232,14,205,128,63,110,190,23,222,218,255,2,139,4,136,38,71,42,232,12,144,64,141,123,214,41,63,156,242,210,63,254,223,186,207,191,253,224,150,71,240,233,138, | |||
| 2,0,201,98,58,150,85,47,154,115,93,219,175,68,187,80,145,142,44,127,154,228,39,242,86,88,90,123,46,28,87,115,46,56,196,204,175,159,43,251,214,66,98,221,147,32,109,127,29,52,186,182,95,144,222,126,154,188,226,66,103,164,146,64,83,162,32,239,122,28,228, | |||
| 189,127,7,193,223,5,150,138,227,64,12,207,98,83,14,51,69,137,179,18,174,232,184,3,94,223,251,52,252,105,243,47,216,124,1,179,147,4,105,244,144,23,185,146,185,215,183,255,185,168,222,243,181,231,190,189,250,235,216,70,24,5,0,146,109,207,41,145,135,89, | |||
| 95,28,115,237,248,115,234,239,150,227,138,133,222,184,230,123,253,81,168,247,181,193,233,141,87,66,19,121,8,102,214,177,85,65,222,190,2,18,107,159,0,121,247,187,44,108,203,137,246,60,77,232,67,50,175,133,132,145,94,8,26,40,61,111,131,220,243,38,155,90, | |||
| 200,132,64,233,66,214,150,56,83,208,254,26,99,130,227,224,143,155,238,101,73,130,60,249,37,154,88,185,65,171,4,36,69,230,186,78,173,185,51,80,227,234,122,234,246,149,151,13,236,137,244,225,69,129,2,0,201,2,188,101,14,251,130,155,59,127,84,63,171,228, | |||
| 82,186,118,103,118,55,223,195,94,63,173,233,63,150,120,254,214,76,38,133,201,9,144,182,188,76,12,255,227,108,0,15,11,81,211,48,191,197,137,23,2,50,58,81,17,226,245,83,31,91,29,222,6,241,117,63,128,196,182,63,128,165,124,9,17,3,199,103,108,56,145,207, | |||
| 90,4,23,181,222,12,93,69,83,225,255,54,253,12,246,71,118,153,26,13,160,207,20,250,108,169,28,95,116,250,242,159,78,107,122,250,27,239,158,187,237,245,3,107,240,122,64,1,128,100,144,146,86,95,213,226,219,198,222,31,106,242,206,137,13,152,155,229,175,129, | |||
| 10,81,57,2,245,222,86,56,189,233,139,208,156,65,175,159,38,242,73,27,95,32,134,255,49,80,14,109,102,51,5,64,180,99,144,26,201,28,212,203,166,203,3,137,67,16,223,244,75,144,118,253,21,68,226,141,91,171,78,206,88,194,224,132,226,185,208,232,239,132,255, | |||
| 219,248,51,120,109,239,223,76,207,13,160,121,1,238,98,251,184,19,190,61,241,185,127,252,100,221,69,111,63,184,229,113,188,16,80,0,32,25,128,120,252,83,150,220,49,246,119,86,167,88,111,118,47,127,218,191,159,178,184,250,76,88,86,127,81,230,58,249,73,49, | |||
| 72,108,120,6,18,107,30,99,237,121,233,240,29,92,223,71,178,43,40,32,178,78,137,154,52,8,137,173,191,3,121,207,83,172,132,48,83,66,128,70,3,46,105,187,5,218,130,19,225,225,77,63,131,190,248,65,83,239,95,90,42,200,139,92,241,156,235,218,30,241,150,57,174, | |||
| 123,233,135,107,127,68,91,11,35,40,0,144,209,82,250,231,212,47,159,117,85,235,47,21,89,243,72,38,175,247,71,229,97,150,96,116,102,243,85,208,85,148,161,12,127,69,34,30,255,243,16,95,253,103,80,15,109,97,157,237,10,59,155,31,201,126,33,32,36,133,128,28, | |||
| 25,17,2,79,130,165,108,41,88,170,79,203,200,210,192,180,210,69,208,232,235,128,7,214,255,16,86,30,124,5,108,130,221,180,113,195,52,47,64,83,20,97,210,249,141,63,116,6,109,245,207,222,189,250,122,226,132,96,118,32,10,0,36,189,207,24,14,230,94,215,126, | |||
| 67,247,242,154,111,43,9,21,204,84,222,138,166,176,218,254,201,37,11,136,241,255,34,243,36,70,29,77,3,105,243,139,16,95,245,39,80,14,172,103,99,94,1,13,63,146,147,66,32,202,132,128,180,247,239,96,169,60,145,188,78,30,245,100,193,176,163,28,174,234,190, | |||
| 11,158,218,246,32,252,117,235,111,32,65,238,111,179,114,120,104,94,64,180,63,1,173,75,43,175,13,84,187,106,30,185,225,159,23,13,29,136,245,227,5,128,2,0,73,3,118,175,133,159,127,83,231,247,91,143,171,184,58,62,64,231,160,155,103,252,227,74,140,205,33, | |||
| 95,222,120,57,27,222,147,9,104,171,222,248,59,191,39,158,211,106,182,198,143,137,125,72,174,11,1,16,93,160,73,3,144,216,248,11,144,118,63,9,214,154,211,193,82,126,220,168,150,15,210,68,192,37,53,103,65,131,191,29,254,247,253,123,96,251,224,6,112,178, | |||
| 242,93,115,50,104,104,135,209,226,86,255,201,167,253,116,90,249,223,239,92,121,250,174,183,123,182,227,201,207,13,120,60,4,185,129,59,108,119,157,242,227,169,15,142,89,90,113,117,172,95,50,209,248,107,16,149,135,160,202,211,0,95,26,251,221,140,24,127, | |||
| 58,145,47,242,204,93,16,121,234,14,144,247,18,227,111,33,15,71,209,138,39,29,201,19,33,64,252,44,26,17,136,29,128,216,218,239,67,228,141,47,176,78,131,163,77,147,175,11,110,28,119,15,235,220,25,83,34,44,226,103,22,82,68,6,127,165,115,202,9,119,79,124, | |||
| 174,122,82,104,44,158,116,20,0,136,73,132,155,188,37,203,190,63,249,177,146,86,223,114,51,147,253,84,242,0,136,42,81,242,64,56,14,110,32,15,134,58,111,235,168,126,46,45,210,3,177,87,127,14,195,127,253,50,72,155,95,78,206,114,23,237,120,194,145,60,125, | |||
| 218,90,200,245,237,2,117,104,19,196,222,189,29,162,111,221,0,74,223,234,81,221,5,151,197,11,23,183,126,5,206,105,254,18,155,218,153,80,205,107,243,79,39,140,210,132,228,147,238,153,252,247,238,229,181,199,224,9,207,126,112,9,32,203,169,28,23,108,56,225, | |||
| 219,19,255,100,243,88,58,105,9,142,105,55,43,185,241,45,188,141,60,8,174,37,94,255,201,163,251,161,84,5,18,235,158,128,248,202,135,65,29,220,203,178,250,49,179,31,41,28,33,144,92,131,87,14,173,128,104,239,59,96,169,88,10,214,186,243,129,179,133,71,109, | |||
| 23,230,85,158,4,213,158,70,248,205,186,239,192,174,161,205,166,117,244,164,93,2,121,145,11,205,187,161,227,17,14,224,194,119,254,176,245,247,120,194,49,2,128,232,160,98,92,81,55,49,254,127,183,186,44,157,84,93,155,5,205,242,15,59,42,224,154,238,111,141, | |||
| 186,241,151,119,175,132,225,71,111,134,232,203,63,1,45,218,155,236,220,199,225,101,136,20,32,35,67,124,18,219,255,4,145,215,47,7,105,251,195,163,58,124,169,193,215,1,55,142,191,7,38,22,207,101,203,128,180,239,135,41,250,94,214,64,73,40,142,57,215,183, | |||
| 63,48,235,170,214,203,56,108,214,129,17,0,36,53,58,150,85,205,156,117,117,219,195,22,135,80,76,235,110,205,64,99,235,253,195,48,54,60,19,206,111,185,30,252,182,208,168,125,30,109,248,16,196,222,126,0,164,245,79,211,39,4,150,244,33,8,133,38,187,178,68, | |||
| 193,62,136,173,251,62,155,64,104,109,188,116,212,6,14,121,44,126,184,162,243,14,248,235,150,122,120,116,235,253,192,17,107,77,135,13,25,22,1,10,121,218,104,42,63,229,226,166,159,218,125,22,223,223,191,254,238,221,128,173,2,80,0,32,159,77,247,242,218, | |||
| 197,243,111,236,120,72,145,84,31,45,245,51,3,154,240,35,171,9,88,90,115,54,156,210,240,121,16,76,170,7,62,26,18,239,255,13,226,111,61,48,18,238,39,134,95,196,203,14,65,62,42,4,104,254,139,8,74,223,187,16,125,235,122,176,84,46,3,107,253,249,228,126,241, | |||
| 141,198,155,195,9,117,23,66,185,187,22,126,75,68,200,176,52,0,86,19,170,20,52,85,99,101,130,93,167,212,124,139,24,127,239,211,223,120,247,86,13,69,0,10,0,228,223,26,255,147,231,221,208,254,91,41,174,56,53,83,106,252,57,144,212,88,114,189,127,204,141, | |||
| 44,225,111,180,80,123,183,65,108,197,175,217,148,62,78,176,226,160,30,4,249,44,168,225,213,84,72,108,123,16,148,131,175,129,181,241,115,32,150,204,29,149,183,158,16,158,203,150,6,127,181,230,27,176,99,112,147,105,121,1,180,69,121,215,169,53,95,37,143, | |||
| 34,247,211,223,88,117,45,21,6,72,118,128,139,175,217,101,252,151,207,163,158,127,66,53,201,248,211,250,254,8,4,108,197,112,117,247,55,71,207,248,107,10,36,86,253,41,153,221,191,125,69,210,235,231,81,107,34,200,209,105,118,158,53,18,82,163,187,33,246, | |||
| 238,109,16,91,125,39,104,241,3,163,242,214,213,238,38,248,210,216,239,65,119,104,58,68,88,94,128,57,207,161,216,160,68,71,149,95,115,242,15,38,255,212,25,176,98,86,0,10,0,228,99,198,255,2,98,252,31,160,163,124,205,234,238,71,215,251,233,248,222,235,199, | |||
| 125,15,154,253,163,179,166,72,7,245,12,63,126,43,68,95,189,23,52,57,142,217,253,8,162,251,233,108,5,16,108,172,129,80,100,197,149,32,239,125,122,84,222,214,107,13,192,23,186,238,132,133,85,203,217,8,112,58,10,220,184,83,144,28,36,84,55,189,248,178,19, | |||
| 191,59,233,94,103,192,134,34,0,5,0,242,33,227,255,43,37,174,8,102,120,254,84,181,83,245,62,177,100,46,92,219,125,55,107,7,58,10,110,63,107,223,27,121,236,43,32,239,94,149,76,242,227,5,60,185,8,98,44,28,144,76,18,140,31,130,216,170,255,76,70,3,18,135, | |||
| 210,254,174,116,138,224,89,205,87,195,233,141,87,178,126,33,138,102,78,9,50,141,4,148,119,5,47,57,241,187,19,239,117,96,36,0,5,0,26,127,98,252,111,104,167,198,159,55,195,243,167,106,61,70,84,251,162,234,51,224,178,246,219,193,33,186,211,254,25,212,254, | |||
| 221,16,121,242,118,214,212,71,147,19,201,78,126,8,130,152,248,164,182,176,252,128,100,52,224,11,32,31,120,105,84,222,150,62,71,46,109,191,21,44,188,245,200,132,80,163,208,214,193,101,157,129,75,150,125,119,18,21,1,120,110,81,0,20,184,231,159,80,77,49, | |||
| 254,84,165,203,154,68,84,251,21,112,102,211,23,129,31,133,250,122,105,195,51,48,252,232,77,32,237,248,103,50,201,15,189,126,4,73,111,52,32,182,15,98,43,191,6,241,247,127,72,110,250,104,218,223,149,246,9,248,98,215,93,224,179,6,217,146,128,25,208,229, | |||
| 128,178,46,38,2,126,225,12,226,114,0,10,128,194,51,254,203,169,231,47,155,228,249,203,170,68,78,38,15,23,181,222,12,139,171,207,76,251,254,107,241,65,136,190,120,15,68,158,255,30,249,126,8,215,250,17,100,212,158,218,86,246,74,108,123,8,34,255,188,26, | |||
| 148,129,117,105,127,203,102,127,23,92,59,246,219,80,238,170,101,115,4,76,17,1,67,50,148,19,17,112,252,55,39,220,43,88,208,20,161,0,40,28,227,127,242,188,27,58,126,75,61,127,227,107,254,28,107,235,107,23,157,112,69,231,127,178,25,224,233,70,217,183,134, | |||
| 117,243,75,172,123,42,25,238,199,12,127,4,201,64,52,192,13,234,192,122,136,190,121,45,72,59,254,152,246,119,164,198,255,186,177,223,129,38,95,39,75,48,54,131,56,17,1,21,227,139,46,153,255,229,142,31,112,216,50,16,5,64,1,24,255,197,243,110,236,248,173, | |||
| 156,80,172,170,9,198,159,134,228,104,104,142,206,252,238,40,154,146,246,253,79,172,250,51,12,63,241,31,160,246,110,31,169,235,199,155,22,65,50,6,237,27,160,202,16,91,251,61,150,36,168,73,253,105,125,59,218,61,244,170,238,111,30,41,19,52,39,18,32,209, | |||
| 102,65,87,31,115,75,231,93,40,2,80,0,228,45,237,39,84,205,156,127,83,199,239,21,83,154,252,112,172,198,191,216,81,1,87,119,223,13,13,222,246,180,238,187,22,27,128,232,179,223,134,232,171,63,79,246,43,23,109,120,66,17,36,43,130,1,2,203,13,144,246,60,5, | |||
| 81,186,36,208,255,94,90,223,206,41,186,225,242,142,59,96,106,233,66,211,68,192,72,179,160,155,137,8,248,42,138,0,20,0,121,71,197,184,96,215,156,107,219,30,86,18,170,215,140,53,255,152,50,12,149,238,6,184,102,236,183,200,215,250,180,238,187,114,96,61, | |||
| 12,63,118,11,36,54,62,155,44,239,227,48,209,15,65,178,78,7,208,37,129,161,109,172,149,176,180,243,47,105,125,47,171,96,131,75,218,110,129,185,21,39,154,214,48,136,150,8,118,157,82,115,231,130,175,116,94,133,103,19,5,64,62,25,255,134,19,191,61,241,17, | |||
| 209,33,20,211,113,153,198,141,127,4,234,188,99,88,119,63,26,1,72,39,52,203,63,242,196,215,88,91,95,108,229,139,32,89,14,49,204,160,74,16,95,251,29,136,175,251,46,251,62,109,111,197,137,112,222,152,27,96,81,245,233,16,147,35,198,69,0,249,231,177,33,22, | |||
| 9,248,225,184,51,235,206,193,147,137,2,32,231,41,170,247,20,19,227,255,103,171,75,172,49,99,176,15,77,190,105,244,117,16,227,255,45,8,164,121,126,120,124,229,31,32,242,194,247,89,71,63,12,249,35,72,206,132,2,216,168,225,196,246,135,33,186,242,86,114, | |||
| 255,14,167,239,173,200,175,51,155,174,98,149,71,102,137,0,90,34,56,231,186,182,95,117,47,175,93,130,39,19,5,64,206,226,14,219,93,75,254,115,220,255,217,60,150,14,57,110,134,231,63,12,77,254,78,248,66,231,215,217,24,207,116,146,120,239,175,16,123,253, | |||
| 62,54,196,7,179,252,17,36,231,84,0,209,1,30,144,247,191,4,177,213,95,39,134,85,78,235,187,157,222,116,37,156,88,119,33,139,78,26,21,1,116,88,16,113,150,172,243,110,236,120,176,110,102,241,100,60,151,40,0,114,14,98,244,249,101,223,155,244,235,226,22,239, | |||
| 44,41,170,24,247,252,21,234,249,19,227,223,69,140,191,53,189,198,95,217,179,138,24,255,95,2,103,177,177,193,36,8,130,228,168,12,176,16,17,176,239,121,72,108,186,47,237,239,181,172,254,98,56,177,246,66,83,34,1,52,79,138,142,67,95,124,219,216,135,43,198, | |||
| 21,213,227,153,68,1,144,51,208,166,22,243,191,220,241,253,146,54,255,105,52,156,101,134,241,111,58,108,252,211,236,249,131,28,135,232,107,247,210,59,16,147,253,16,36,31,68,128,232,74,142,23,78,115,117,192,17,17,80,119,33,43,79,54,44,2,36,21,236,30,75, | |||
| 229,177,119,142,251,163,167,196,17,196,51,137,2,32,39,152,117,77,235,245,237,199,85,93,29,31,52,158,128,67,67,106,204,248,119,222,153,126,227,79,72,108,120,22,148,3,27,112,205,31,65,242,70,1,144,199,188,154,128,196,230,251,71,229,237,168,8,88,82,115, | |||
| 22,203,87,50,42,2,164,152,2,174,144,173,251,196,239,76,124,192,21,182,227,224,0,20,0,217,205,248,179,235,79,27,123,90,237,183,105,93,171,193,187,246,72,182,63,29,205,233,177,6,210,191,243,196,235,151,222,255,27,113,252,45,120,34,17,36,159,16,236,160, | |||
| 244,188,9,234,224,134,81,121,187,211,26,46,135,37,35,137,129,96,84,4,68,21,40,105,243,47,90,116,107,215,127,243,34,246,8,64,1,144,165,212,205,40,158,52,251,154,214,251,20,73,229,52,205,200,69,159,108,242,83,229,110,128,43,153,231,31,24,149,253,87,122, | |||
| 54,147,215,86,186,134,129,39,19,65,242,236,81,175,145,103,138,124,224,31,163,246,142,167,55,125,1,230,86,158,4,17,19,170,16,104,52,181,110,102,201,165,243,111,234,188,25,207,37,10,128,172,35,220,226,173,88,250,95,227,126,175,72,154,219,104,163,159,184, | |||
| 26,133,98,103,37,49,254,255,149,246,82,191,143,8,128,125,235,146,37,127,216,222,23,65,242,14,142,19,65,233,95,51,170,239,121,110,203,117,48,163,108,137,41,29,3,105,203,224,142,147,170,239,162,81,86,60,155,40,0,178,6,79,137,195,190,244,142,113,15,88,157, | |||
| 98,173,42,27,43,247,163,131,125,252,214,16,92,217,241,95,16,78,115,147,159,127,17,0,125,59,209,246,35,72,222,42,0,1,180,232,94,114,163,199,71,239,45,201,175,11,198,220,4,227,195,179,13,15,16,162,65,85,37,174,192,172,171,90,127,89,59,45,60,14,79,40,10, | |||
| 128,140,35,218,4,56,230,150,206,31,135,154,188,179,104,194,138,17,232,72,95,135,232,130,43,58,238,128,10,119,221,168,127,22,45,62,128,222,63,130,228,111,8,0,52,37,6,154,26,31,213,183,21,121,11,92,218,254,85,24,19,24,103,120,148,48,141,174,106,170,230, | |||
| 93,124,251,216,223,251,43,93,97,60,169,40,0,50,202,244,43,90,174,169,159,85,122,137,209,140,127,69,147,65,224,5,184,180,237,107,80,239,107,203,208,167,209,240,132,34,72,94,147,153,123,220,46,56,225,178,142,219,161,202,221,196,74,4,141,56,26,180,157,186, | |||
| 195,103,109,60,225,238,137,247,219,125,86,172,85,70,1,144,25,218,79,168,58,102,226,185,13,223,137,15,38,140,169,90,77,37,2,64,129,243,90,110,128,142,162,204,53,190,226,44,46,20,1,8,146,207,182,159,120,227,92,134,58,123,122,173,1,184,162,243,14,8,217, | |||
| 75,33,161,198,12,109,139,70,91,195,45,222,197,243,110,104,255,22,158,88,20,0,163,78,121,87,160,122,238,245,237,247,75,49,89,52,146,240,79,235,100,105,210,223,169,13,159,103,227,53,51,122,49,120,203,146,11,109,8,130,228,33,10,240,182,34,54,39,32,83,208, | |||
| 225,101,151,117,222,14,78,209,5,178,102,44,106,26,31,146,96,204,146,138,235,39,158,223,112,54,158,91,20,0,163,134,221,103,177,46,188,181,251,126,209,46,148,170,178,49,131,73,19,99,22,85,157,206,134,105,100,26,33,220,8,156,128,125,255,17,36,47,3,0,170, | |||
| 76,68,126,11,100,58,207,167,214,51,6,46,110,189,133,37,8,170,154,129,188,41,242,232,149,99,10,76,191,172,229,167,181,51,138,187,240,12,163,0,24,21,230,223,212,249,237,162,122,207,108,217,96,210,31,53,254,147,74,230,193,242,198,43,178,226,115,9,225,102, | |||
| 224,61,165,0,170,140,39,25,65,242,12,142,19,64,44,154,146,21,251,210,21,154,198,166,8,74,106,194,80,183,64,86,114,205,129,103,209,215,186,255,215,87,225,244,226,89,70,1,144,86,38,95,220,116,86,203,162,138,171,227,195,198,194,87,49,37,202,198,250,94,56, | |||
| 230,203,192,103,73,207,125,206,226,4,75,237,140,145,94,0,8,130,228,13,106,156,120,255,77,32,4,186,179,102,151,230,84,156,8,75,106,206,54,92,30,72,199,172,187,130,182,142,133,183,118,255,183,96,69,147,134,2,32,77,212,76,13,143,153,122,105,211,79,228,152, | |||
| 108,40,87,142,214,250,135,236,37,240,185,246,91,89,217,95,54,97,105,59,22,120,103,32,57,12,8,65,144,188,64,83,37,176,86,47,39,79,252,236,106,167,127,74,253,165,48,181,228,24,195,34,32,17,145,161,122,74,232,220,105,159,111,190,2,207,54,10,0,211,113,248, | |||
| 172,246,121,55,118,252,134,227,192,111,164,211,31,45,247,179,240,54,184,164,237,171,16,114,148,103,223,5,225,46,6,91,247,114,208,164,40,158,116,4,201,7,227,47,71,88,232,95,44,61,38,235,246,141,227,120,56,111,204,13,172,244,217,104,121,32,237,20,56,241, | |||
| 220,134,239,54,206,45,29,143,103,29,5,128,169,204,187,169,227,174,96,141,123,178,28,215,223,233,143,174,117,209,102,63,103,53,95,13,77,254,236,205,89,177,118,156,8,150,186,233,160,37,134,241,196,35,72,46,163,38,88,230,191,173,245,186,172,29,239,77,163, | |||
| 160,151,182,221,10,126,91,136,60,31,245,47,63,106,228,209,172,170,154,131,58,106,238,176,221,131,39,31,5,128,41,140,61,163,110,217,152,37,21,215,210,178,19,35,208,48,23,205,246,159,81,182,52,187,63,48,121,80,56,102,95,11,98,113,11,70,2,16,36,103,141, | |||
| 191,196,66,254,246,206,175,2,239,172,202,234,93,45,113,86,194,69,173,95,102,17,1,218,23,69,47,52,31,192,93,108,239,88,112,115,231,247,104,231,67,4,5,128,33,194,77,222,138,105,159,111,254,169,20,53,150,25,79,141,255,216,240,76,56,185,225,115,57,241,185, | |||
| 57,187,23,28,199,124,21,132,162,122,20,1,8,146,147,198,223,66,140,255,109,32,4,39,229,196,46,183,145,253,60,181,225,50,214,23,197,72,146,85,98,88,134,134,185,165,151,78,190,176,225,12,188,16,80,0,232,134,102,148,30,243,213,174,159,217,220,162,161,122, | |||
| 255,132,26,135,82,87,53,92,48,230,6,16,184,220,233,92,201,187,195,224,90,244,31,40,2,16,36,23,141,127,215,109,32,134,167,231,212,174,31,83,117,26,204,42,59,206,112,82,160,20,145,105,197,214,143,75,90,125,181,120,65,160,0,208,197,140,43,199,92,85,214, | |||
| 17,56,78,138,234,207,136,167,45,126,173,188,21,46,106,189,25,124,214,162,156,59,6,28,17,1,206,17,17,0,40,2,16,36,103,60,127,49,52,61,39,63,194,153,205,87,65,189,175,99,36,41,80,231,97,80,52,16,173,124,104,254,151,59,127,110,117,137,184,22,128,2,32,53, | |||
| 106,166,134,59,198,159,89,127,23,45,47,209,143,198,122,94,159,214,120,5,171,249,207,217,139,100,36,18,192,99,36,0,65,114,195,248,135,167,231,236,199,160,131,131,104,62,128,219,226,3,89,211,255,252,165,142,91,121,87,112,225,244,203,91,174,197,139,3,5, | |||
| 192,81,99,243,88,196,185,215,183,255,92,211,52,151,166,234,15,253,71,228,97,22,206,154,91,177,44,231,143,9,139,4,44,190,13,151,3,16,4,141,127,218,41,119,213,194,217,205,215,130,162,202,134,58,5,210,65,109,221,167,213,222,89,61,57,212,137,23,9,10,128, | |||
| 163,130,40,198,175,20,213,123,166,201,113,253,161,127,234,249,215,122,91,224,140,230,47,230,207,197,226,10,97,78,0,130,160,241,31,21,104,155,244,99,170,78,53,148,15,144,156,109,166,57,169,67,103,115,91,44,120,177,124,20,156,252,242,49,106,167,134,39, | |||
| 116,157,90,115,107,194,64,171,95,58,224,194,198,59,224,130,49,55,130,67,72,83,167,63,162,140,19,187,214,129,180,125,53,200,7,182,129,26,237,103,87,59,103,119,131,24,172,0,75,101,27,88,171,218,129,179,153,251,254,135,115,2,34,127,251,79,80,14,109,6,206, | |||
| 226,192,139,6,65,242,214,248,107,160,36,54,130,28,95,3,138,180,13,52,181,47,89,112,207,59,129,23,75,65,180,182,128,104,107,3,142,79,79,217,253,41,13,159,135,173,3,239,195,198,254,85,96,211,57,197,144,246,110,9,53,122,167,78,251,124,243,77,207,127,239, | |||
| 189,175,227,69,131,2,224,19,177,123,45,214,57,95,106,255,41,185,230,173,6,74,81,153,247,127,78,203,151,160,198,211,98,254,237,40,197,32,242,207,191,146,215,95,64,222,183,25,180,196,72,247,44,158,251,64,242,210,151,96,97,66,192,222,49,15,92,83,78,5,129, | |||
| 124,111,90,36,96,36,39,96,24,69,0,130,100,222,248,119,165,33,225,79,75,64,124,248,41,136,15,61,193,4,128,166,142,68,252,56,254,67,174,181,198,122,134,240,98,9,88,157,51,193,238,57,133,124,95,97,234,110,88,120,43,156,63,230,6,248,214,91,87,177,164,64, | |||
| 129,211,103,178,168,67,215,189,188,246,107,155,95,222,247,232,246,21,7,87,226,197,51,242,44,199,67,240,1,211,46,107,185,161,168,193,51,209,72,232,159,134,171,38,23,47,128,121,21,39,153,190,127,241,141,43,224,224,79,46,134,254,63,125,3,164,221,235,217, | |||
| 205,72,61,126,206,238,2,206,234,76,190,136,199,207,126,102,177,129,210,183,7,134,158,253,21,28,248,201,133,48,244,226,253,73,229,110,114,36,0,171,3,16,36,195,158,191,201,198,95,138,189,1,3,123,175,132,225,131,119,19,239,121,45,115,48,56,222,149,124,113, | |||
| 142,228,139,119,142,252,222,14,154,124,8,98,253,15,193,192,158,43,32,54,240,144,233,31,181,204,85,3,167,55,94,105,104,114,224,200,163,207,54,247,250,246,159,216,220,22,116,124,81,0,124,148,154,105,225,14,22,250,31,50,144,117,74,46,80,218,209,234,204, | |||
| 230,171,77,223,191,225,127,60,0,61,247,93,3,210,222,13,71,12,252,103,118,186,18,44,192,57,60,160,69,135,96,224,175,223,133,158,255,185,30,212,225,94,115,35,1,139,147,213,1,40,2,16,36,3,198,223,228,176,127,172,255,127,96,104,223,205,32,19,175,63,105,224, | |||
| 109,240,153,253,249,137,87,206,241,110,208,180,8,68,122,126,4,195,7,238,32,6,55,98,234,126,77,47,91,66,94,75,33,38,235,223,46,117,236,66,141,222,233,211,46,107,190,6,47,34,20,0,71,176,185,69,126,238,117,237,63,34,226,210,161,105,58,21,230,136,50,61,155, | |||
| 92,91,94,107,192,212,253,27,122,238,62,232,255,203,221,204,224,115,22,123,234,27,16,68,38,4,98,171,159,131,67,191,186,10,148,190,189,230,69,2,92,88,29,128,32,249,96,252,35,189,63,38,175,159,177,176,62,245,236,83,39,41,4,226,195,127,131,161,3,255,65,4, | |||
| 129,185,207,131,211,27,175,96,209,0,201,192,188,0,218,37,176,251,180,218,219,202,187,2,77,120,49,161,0,96,76,56,167,254,243,161,6,207,92,163,161,255,5,85,167,66,71,209,20,83,247,45,250,246,227,48,240,212,127,3,103,115,146,179,101,172,139,32,21,1,210, | |||
| 206,53,208,243,155,235,76,21,1,180,58,192,137,213,1,8,146,211,198,63,214,255,32,51,224,70,205,2,77,8,148,162,175,66,228,208,247,76,221,71,218,23,224,236,150,107,128,35,251,167,129,190,229,76,90,214,77,252,40,207,236,107,218,126,32,88,208,252,21,252,17, | |||
| 40,105,245,87,78,56,183,241,206,248,176,254,208,63,109,245,91,231,109,133,101,117,23,153,186,111,210,174,181,196,243,255,22,17,228,150,15,146,111,140,122,236,54,23,203,31,48,91,4,124,56,39,0,69,0,130,228,162,241,167,21,67,230,52,205,163,34,128,38,16, | |||
| 198,6,30,52,117,95,219,2,19,89,187,224,168,129,165,0,41,166,64,197,216,224,210,73,23,52,158,131,2,160,144,63,188,192,193,140,47,180,124,75,180,241,69,122,27,254,208,201,85,34,39,178,208,191,222,50,149,79,220,110,164,31,250,254,112,59,168,241,8,11,225, | |||
| 155,9,141,38,164,67,4,240,40,2,16,36,125,198,191,43,93,198,255,33,83,141,255,7,34,192,1,209,222,95,128,28,251,167,169,219,61,161,238,66,226,112,141,129,132,18,211,239,180,69,100,24,127,118,221,55,131,53,238,162,66,190,180,10,90,0,140,89,92,177,168,102, | |||
| 106,248,108,35,237,126,227,74,4,22,215,156,5,13,190,118,83,247,173,255,145,187,153,145,214,181,230,159,37,34,0,19,3,17,196,68,207,223,228,108,255,72,207,97,207,223,105,186,241,79,66,151,44,85,86,77,160,42,251,77,219,170,77,176,195,89,205,87,131,200,91, | |||
| 65,211,89,217,68,103,5,216,60,150,202,233,87,182,220,129,2,160,0,113,248,172,182,169,151,53,127,151,206,143,214,173,34,137,2,173,39,134,255,216,26,115,35,73,195,47,255,14,162,111,61,206,178,253,211,73,186,150,3,62,92,29,128,145,0,4,49,193,248,135,211, | |||
| 96,252,7,30,76,139,231,255,209,135,140,21,20,101,15,68,14,125,151,252,70,49,109,179,141,190,78,88,88,181,28,162,138,254,165,0,234,248,53,205,43,187,188,97,78,233,100,20,0,5,198,228,139,27,175,241,87,186,58,244,10,0,170,60,69,114,115,158,217,116,21,107, | |||
| 86,97,22,137,237,171,96,224,169,159,144,251,102,52,154,235,104,35,34,224,253,17,17,176,207,188,251,158,85,7,224,114,0,130,100,157,241,239,29,37,227,127,248,89,192,185,136,177,253,7,196,250,127,107,234,118,143,173,61,151,229,94,37,244,86,5,104,44,18,32, | |||
| 204,184,162,229,123,22,135,80,144,182,176,32,63,116,73,171,175,186,235,148,154,175,36,12,36,254,81,229,73,179,254,205,12,253,171,209,65,232,123,248,191,64,147,227,134,51,254,83,19,1,238,17,17,112,173,201,213,1,97,156,29,128,32,217,102,252,251,71,207, | |||
| 248,31,17,1,188,19,162,125,255,99,106,62,0,93,10,56,163,233,11,196,136,241,186,27,4,177,222,0,77,222,25,19,206,109,56,31,5,64,1,192,241,52,241,175,245,78,193,38,248,245,38,254,209,58,212,106,79,35,28,87,123,158,169,251,54,240,216,61,32,239,73,223,186, | |||
| 255,103,71,2,176,58,0,65,50,138,150,127,198,255,3,83,163,193,240,161,239,131,166,244,153,182,213,102,127,55,204,173,92,102,104,96,16,29,27,60,246,244,218,59,189,165,142,64,161,93,110,5,39,0,26,231,150,206,172,153,26,58,71,210,153,248,167,141,104,205, | |||
| 211,26,175,96,115,171,205,34,250,246,19,16,121,227,207,105,95,247,255,183,198,58,141,137,129,24,9,64,144,163,240,252,185,220,203,246,63,250,7,140,21,20,121,59,217,151,31,153,186,217,19,106,47,132,50,103,53,235,196,170,235,176,203,42,56,252,214,138,233, | |||
| 87,180,220,140,2,32,143,161,235,60,228,36,127,83,77,168,186,63,55,109,69,57,189,116,49,116,4,205,203,27,81,14,237,132,254,199,190,7,156,104,201,220,205,153,102,17,128,179,3,16,228,51,140,127,206,102,251,167,240,28,224,92,16,31,250,59,36,134,30,55,109, | |||
| 155,46,139,135,77,13,164,83,88,65,231,82,0,141,2,52,47,40,255,98,121,119,160,25,5,64,158,210,189,188,246,204,162,58,207,12,89,103,226,159,172,201,16,180,23,195,178,250,139,77,188,241,85,232,123,228,110,80,7,15,177,222,253,217,192,104,84,7,160,8,64,144, | |||
| 79,48,254,185,154,237,159,202,243,133,183,178,150,195,170,188,211,180,109,78,40,158,3,227,195,179,33,166,232,123,174,208,229,96,222,202,59,103,92,57,166,160,198,5,23,140,0,240,20,219,93,19,207,107,184,67,138,25,24,246,163,196,217,186,127,192,22,54,109, | |||
| 191,134,95,121,8,226,107,95,98,70,55,123,248,120,78,0,86,7,32,8,26,127,179,16,137,223,211,11,195,61,63,160,7,192,180,173,158,210,240,57,112,137,222,145,72,128,158,40,128,12,149,227,138,78,109,61,182,114,54,10,128,60,99,236,25,117,87,56,131,182,70,85, | |||
| 214,23,34,138,43,49,150,112,50,171,252,56,211,246,73,222,187,17,6,159,254,217,40,149,252,233,21,1,35,213,1,253,230,86,7,56,23,225,0,33,4,141,127,190,148,250,165,236,8,112,78,144,34,175,65,108,240,143,166,109,179,196,89,5,139,170,79,39,207,106,157,207, | |||
| 20,141,229,3,112,147,47,106,252,186,197,33,114,133,112,9,22,132,0,8,55,121,139,59,79,169,185,73,26,214,159,248,39,242,34,83,152,2,103,82,91,94,85,129,254,71,190,205,74,255,70,175,228,207,64,36,224,215,102,231,4,224,0,33,4,141,127,254,101,251,167,240, | |||
| 12,224,237,16,237,187,15,20,105,171,105,219,164,115,2,170,60,77,186,19,2,233,242,112,81,189,103,102,235,146,138,83,80,0,228,9,19,47,104,184,222,238,17,195,170,206,178,63,154,248,55,181,116,17,52,249,187,76,219,39,22,250,223,184,34,57,229,47,203,193,217, | |||
| 1,8,146,6,227,159,175,217,254,71,141,0,154,58,8,209,158,31,131,89,75,1,116,30,203,178,186,139,117,47,3,48,17,16,83,96,194,249,245,183,59,131,54,107,190,95,138,121,47,0,138,91,124,53,141,115,74,175,212,219,239,95,33,23,146,223,86,4,39,212,154,215,39,66, | |||
| 62,176,21,6,159,190,55,75,67,255,153,19,1,152,24,136,20,138,241,119,164,35,219,191,55,123,178,253,143,250,185,194,57,33,17,125,29,226,131,143,152,182,205,113,225,153,208,77,142,109,76,103,155,96,69,82,33,88,227,233,24,119,70,221,121,249,126,57,230,189, | |||
| 0,152,112,94,253,205,162,93,112,235,156,25,193,214,147,142,169,90,14,65,123,137,57,59,164,105,172,225,143,26,237,207,226,208,255,167,137,0,156,29,128,32,134,61,127,98,252,133,112,186,74,253,114,193,243,255,216,115,133,183,177,165,0,85,222,99,218,54,79, | |||
| 172,191,136,69,3,84,157,15,254,68,68,130,246,101,85,183,184,66,25,108,204,130,2,192,24,165,29,254,230,198,185,165,23,208,236,78,61,208,117,164,42,119,3,204,175,60,217,188,27,245,173,71,33,182,246,197,44,203,250,63,106,245,130,213,1,8,98,208,248,23,78, | |||
| 182,255,209,34,130,170,244,176,210,64,179,168,118,55,193,204,178,99,217,180,86,93,167,75,214,192,29,182,215,143,61,189,230,226,124,190,44,243,86,0,208,150,191,179,190,216,122,139,96,21,28,122,189,127,69,149,89,217,31,85,146,166,60,3,6,15,193,224,223, | |||
| 126,10,156,152,203,75,75,31,171,14,192,217,1,8,146,57,227,223,155,235,198,255,240,243,218,73,188,238,231,64,138,188,104,218,54,151,214,158,205,74,182,21,77,167,3,24,85,160,253,196,234,47,17,33,224,65,1,144,99,212,78,15,183,85,140,15,158,165,215,251,167, | |||
| 101,127,45,129,177,48,177,120,158,105,251,68,75,254,148,222,221,89,211,240,199,188,72,0,206,14,64,144,140,24,255,254,220,55,254,35,119,62,249,37,64,164,239,94,208,212,33,83,182,232,183,134,96,65,213,105,108,108,187,190,40,128,74,163,0,53,221,167,213, | |||
| 92,142,2,32,151,62,20,241,254,39,158,219,240,101,98,167,172,122,58,67,210,178,63,158,227,224,248,218,243,201,87,115,14,81,98,203,91,16,249,231,35,57,26,250,255,148,91,22,103,7,32,200,103,27,255,130,207,246,63,218,7,138,21,148,196,22,136,13,252,206,180, | |||
| 77,206,173,88,6,229,174,90,144,232,185,208,21,5,144,161,99,89,245,181,238,144,221,139,2,32,71,168,156,80,52,134,120,255,103,208,16,142,94,239,191,43,52,29,90,131,19,204,217,33,69,134,129,39,127,12,154,162,208,180,215,188,58,214,56,59,0,65,62,221,248, | |||
| 99,182,127,138,247,61,249,76,177,129,63,130,34,109,50,101,123,14,209,5,139,170,207,0,89,247,160,32,13,92,97,123,121,247,233,53,23,162,0,200,17,218,79,172,186,142,227,56,155,158,127,171,129,10,86,222,10,199,214,156,107,218,254,12,191,241,103,72,108,121, | |||
| 155,8,92,123,62,30,110,172,14,64,144,79,242,252,49,219,95,151,73,210,180,8,68,123,127,97,218,22,167,149,46,130,90,111,11,27,227,174,43,10,16,145,161,131,230,2,228,97,69,64,222,9,128,226,22,95,125,227,220,178,243,164,136,94,239,63,202,6,75,212,121,199, | |||
| 152,243,44,24,234,129,161,231,238,3,206,98,131,252,229,99,57,1,253,88,29,128,160,241,199,108,127,157,247,60,235,13,240,10,36,76,74,8,20,137,67,183,184,250,44,80,84,125,54,65,85,88,20,160,166,123,121,237,57,40,0,178,156,9,231,214,95,101,177,243,14,77, | |||
| 75,125,241,95,211,84,176,11,46,114,177,156,105,218,254,12,61,255,107,80,122,119,229,65,226,223,209,138,128,247,161,231,215,105,168,14,64,17,128,228,140,241,255,15,204,246,55,42,2,64,128,88,223,125,228,153,28,51,101,123,19,137,83,215,224,239,128,132,129, | |||
| 40,0,141,44,187,66,246,188,242,228,242,74,0,148,140,241,149,53,206,45,189,80,111,215,191,152,26,133,201,37,243,161,210,221,96,202,254,208,97,63,195,43,254,148,87,137,127,41,69,2,204,204,9,112,97,117,0,146,205,151,254,135,61,255,25,230,27,255,254,194, | |||
| 49,254,201,27,222,10,114,98,3,196,7,255,98,142,161,227,4,54,40,72,111,99,32,26,5,112,23,219,91,154,230,149,230,213,140,128,188,18,0,109,199,87,93,106,113,138,126,77,87,230,191,10,78,193,13,11,171,150,155,182,63,131,207,220,11,90,124,152,102,182,20,212, | |||
| 179,16,103,7,32,5,231,249,115,233,44,245,123,168,176,140,255,225,231,8,111,135,216,192,239,65,83,14,154,178,189,113,161,153,208,232,107,215,29,5,144,227,10,116,157,86,123,157,197,33,228,205,3,61,111,62,136,167,212,225,105,94,88,246,121,73,175,247,47, | |||
| 71,97,82,201,60,40,115,213,154,178,63,241,77,43,32,186,250,57,34,100,157,80,136,224,236,0,164,96,140,255,225,108,255,48,102,251,155,139,8,170,188,143,136,128,135,76,139,2,44,172,210,31,5,80,18,42,132,26,60,147,90,151,86,30,131,2,32,203,232,58,165,230, | |||
| 44,87,200,94,73,67,53,169,123,255,26,216,69,39,204,175,52,41,186,67,46,176,193,103,126,193,190,230,91,217,95,106,34,192,149,214,62,1,60,138,0,36,11,140,63,102,251,167,51,10,224,132,216,224,99,160,72,219,77,217,222,216,176,177,40,128,34,171,208,122,92, | |||
| 229,181,180,211,44,10,128,44,193,230,22,197,166,5,101,95,160,99,28,117,121,235,114,4,198,135,103,155,182,246,31,91,253,44,36,54,189,153,83,211,254,210,67,26,171,3,104,36,96,241,109,184,28,128,100,220,248,155,237,249,71,123,10,43,225,239,179,76,20,29, | |||
| 25,28,27,248,95,83,182,38,112,2,235,14,168,119,92,176,18,87,160,172,195,191,176,110,70,113,55,10,128,44,161,97,110,233,194,96,173,187,139,142,113,212,227,253,91,5,59,185,40,78,53,199,228,201,9,24,124,254,55,57,55,233,47,253,34,224,112,117,128,121,34, | |||
| 128,119,133,176,68,16,201,43,227,79,61,255,40,26,255,143,69,1,28,144,24,126,22,148,196,251,166,108,143,230,2,212,120,154,217,176,183,148,159,102,26,155,51,35,118,44,171,186,18,5,64,54,124,0,145,167,77,26,190,168,199,248,83,104,159,232,142,162,201,80, | |||
| 235,105,49,71,189,175,124,10,164,29,239,229,121,221,191,145,72,192,181,88,29,128,228,240,165,140,131,125,50,19,5,136,67,180,255,183,166,108,77,36,231,111,94,197,73,32,235,109,15,28,81,160,122,114,248,140,112,179,183,20,5,64,134,169,158,84,212,81,62,46, | |||
| 184,72,79,248,63,217,243,95,48,109,237,95,75,68,97,232,69,114,145,138,22,188,103,63,201,88,99,117,0,146,235,158,63,102,251,103,44,10,32,69,95,1,57,254,158,41,219,155,84,50,31,202,92,53,32,107,169,139,0,218,99,198,234,18,124,173,199,86,158,143,2,32,195, | |||
| 180,29,87,117,9,167,129,168,75,201,17,85,217,228,235,132,150,192,56,115,188,255,183,31,7,121,207,250,28,31,247,155,251,34,0,19,3,145,180,24,127,204,246,207,228,147,131,24,94,217,180,92,0,58,226,125,86,217,177,32,41,122,27,3,41,48,102,113,197,37,206,128, | |||
| 45,167,67,189,57,45,0,188,101,142,64,205,212,240,217,180,62,83,215,61,173,169,48,167,98,25,27,68,105,138,247,255,202,67,104,252,143,74,4,96,117,0,146,123,198,31,179,253,51,252,220,224,236,196,240,190,6,114,124,181,41,219,155,86,182,24,2,246,98,80,116, | |||
| 36,4,178,198,64,97,91,115,227,252,210,69,40,0,50,68,243,194,242,83,156,1,107,177,158,210,63,58,29,170,210,93,15,99,77,186,161,233,218,191,188,103,3,0,10,128,163,145,75,31,36,6,178,234,0,147,167,8,98,117,0,146,6,227,143,189,253,179,32,10,0,178,105,125, | |||
| 1,188,214,32,76,42,158,199,242,192,244,160,200,26,180,46,169,184,44,151,75,2,115,86,0,88,157,34,215,113,98,245,231,36,157,165,127,116,62,244,244,210,165,96,225,141,71,112,52,57,14,195,175,254,30,215,254,83,22,1,238,100,36,224,215,215,97,117,0,146,181, | |||
| 198,223,129,9,127,89,20,5,112,128,20,121,21,228,248,26,83,182,55,171,252,120,54,50,152,118,130,77,217,137,140,43,80,210,30,56,166,172,35,208,132,2,96,148,41,31,27,156,228,175,118,77,214,147,253,79,107,64,3,182,16,76,41,53,167,161,19,173,251,151,118,173, | |||
| 3,78,196,204,255,212,69,128,51,125,213,1,40,2,16,19,60,127,1,141,127,150,69,1,18,16,31,252,63,115,236,136,171,22,218,139,38,65,92,79,46,128,70,3,190,188,173,245,184,138,243,80,0,140,50,109,199,85,94,192,233,188,123,226,106,12,198,23,207,6,159,53,104, | |||
| 194,131,66,129,225,87,254,128,117,255,70,110,233,116,37,6,162,8,64,12,26,255,180,101,251,115,104,252,245,71,1,236,144,136,188,2,138,180,217,156,40,64,217,113,196,16,234,59,23,82,84,134,250,89,37,231,56,131,182,156,236,250,150,147,2,192,87,238,244,87, | |||
| 79,9,157,42,233,44,253,179,241,118,152,81,182,212,148,125,137,175,127,5,18,219,223,5,206,98,199,59,51,75,69,128,11,171,3,144,20,141,63,102,251,103,183,217,210,212,97,136,15,254,217,148,173,141,9,78,128,106,79,147,174,198,64,52,255,204,83,236,168,111, | |||
| 154,95,186,0,5,192,40,209,188,176,252,56,103,192,86,162,169,169,39,255,209,178,143,38,127,23,212,152,212,248,103,248,213,63,224,253,104,154,8,72,211,40,97,172,14,64,82,244,252,49,219,63,203,159,21,196,137,75,12,63,79,12,176,241,220,33,145,19,97,106,233, | |||
| 34,150,24,174,235,178,81,84,104,156,91,118,65,46,158,214,156,19,0,180,243,95,243,49,101,23,40,9,157,165,127,228,215,244,178,37,166,236,139,180,99,53,196,55,190,129,222,191,105,124,124,118,128,217,213,1,73,17,128,203,1,200,167,26,255,46,204,246,207,13, | |||
| 4,98,120,123,32,62,248,184,41,91,155,88,60,15,252,182,176,174,25,1,82,92,129,242,238,192,226,226,102,95,5,10,128,52,19,110,242,54,6,235,61,179,229,68,234,201,127,138,38,67,177,163,2,186,138,166,153,227,253,191,254,48,171,0,40,228,137,127,105,21,1,191, | |||
| 78,223,114,0,138,0,228,227,198,159,133,253,67,104,252,115,43,10,240,55,208,212,33,195,219,242,219,138,160,43,52,77,95,73,32,49,69,22,135,232,105,152,83,114,50,10,128,52,211,118,92,197,105,162,77,176,65,234,209,127,114,114,227,108,234,31,45,251,48,138, | |||
| 210,187,27,98,107,94,64,239,63,109,34,192,153,182,229,0,108,27,140,252,139,231,143,217,254,57,136,8,138,180,19,18,145,231,77,217,218,212,210,133,32,240,22,246,252,73,21,57,161,208,165,233,179,45,14,33,167,78,116,78,9,0,139,83,224,107,166,21,159,174,196, | |||
| 117,38,255,137,14,152,108,82,174,70,228,205,71,65,29,234,197,236,255,116,42,252,116,182,13,198,234,0,36,237,217,254,104,252,211,254,140,224,68,136,15,209,101,0,197,240,182,104,91,248,100,50,160,164,227,82,82,33,80,229,154,92,218,17,232,64,1,144,38,202, | |||
| 58,2,227,253,149,206,110,85,78,61,252,79,147,255,26,188,237,80,237,54,222,179,65,75,68,32,250,206,83,56,241,47,151,69,128,11,103,7,160,241,79,119,182,63,26,255,244,63,32,172,160,196,215,130,28,91,105,252,153,192,9,48,177,120,174,174,100,64,58,38,152, | |||
| 23,121,161,97,78,201,105,40,0,210,68,203,226,138,229,28,207,241,154,142,240,63,237,247,76,39,64,153,65,108,237,203,32,31,216,2,32,96,231,191,209,17,1,31,106,27,140,179,3,16,19,61,127,204,246,207,249,167,3,49,190,202,72,20,192,56,19,138,231,128,219,234, | |||
| 103,115,98,82,118,50,99,10,237,9,112,138,221,103,21,115,229,232,229,140,0,112,6,108,150,186,233,197,39,233,25,251,75,51,59,253,182,16,116,135,204,73,254,139,188,249,87,154,129,130,247,222,168,241,161,182,193,105,154,29,128,213,1,133,103,252,205,246,252, | |||
| 163,152,240,151,25,9,192,219,136,126,127,29,84,217,248,115,33,100,47,131,22,255,88,54,41,54,229,75,75,86,193,87,225,236,168,158,84,52,1,5,128,201,84,77,42,154,228,10,217,154,245,12,254,73,144,147,217,26,156,0,62,107,145,225,253,160,70,40,177,229,45,76, | |||
| 254,203,136,8,72,87,117,64,8,171,3,10,200,248,59,210,52,216,39,138,198,63,67,208,146,192,62,72,68,158,53,101,107,180,36,80,211,147,101,206,174,49,128,134,57,165,57,83,13,144,51,2,160,97,46,57,168,58,207,9,29,247,75,215,118,76,81,249,239,60,1,90,60,130, | |||
| 165,127,25,19,1,88,29,128,232,185,116,48,219,63,175,163,0,156,5,18,195,207,38,207,179,65,58,138,38,65,145,189,148,149,141,167,10,173,6,168,28,95,116,162,195,103,205,137,245,225,156,16,0,206,160,205,90,49,54,120,130,172,35,251,159,158,196,176,163,2,198, | |||
| 4,198,25,127,134,196,135,33,250,222,115,152,252,151,233,155,29,171,3,144,84,61,127,14,179,253,243,251,161,96,37,198,119,19,72,241,119,140,219,27,209,3,109,193,137,250,90,3,203,26,184,139,237,173,85,147,67,227,81,0,152,68,121,87,96,130,59,108,111,209, | |||
| 27,254,239,40,154,12,118,193,105,120,63,226,235,95,3,229,224,14,76,254,203,10,17,224,194,217,1,200,209,25,127,44,245,43,16,20,72,12,61,109,202,150,38,132,103,179,170,0,125,209,8,128,234,137,161,147,80,0,152,68,245,164,208,9,122,35,238,2,39,194,184,208, | |||
| 12,115,110,248,119,158,196,251,60,107,208,62,90,29,208,143,179,3,16,52,254,5,237,20,112,54,144,98,111,128,166,244,24,222,22,157,23,19,118,148,235,91,6,136,171,80,49,46,120,172,197,46,100,125,147,152,172,23,0,22,135,40,84,79,13,31,75,15,106,202,39,66, | |||
| 147,160,196,81,1,13,62,227,189,25,148,222,61,144,216,242,38,112,34,134,255,179,75,4,184,147,34,128,37,6,238,51,239,97,50,82,29,128,203,1,104,252,63,78,20,75,253,178,20,1,84,249,0,36,162,175,24,222,146,77,112,64,107,96,2,235,30,155,178,173,144,84,240, | |||
| 87,187,218,203,58,3,237,40,0,12,82,49,54,216,230,175,116,117,208,131,154,42,146,146,128,214,224,68,176,10,198,51,246,99,107,158,199,206,127,89,45,2,232,114,192,181,166,87,7,124,52,49,16,31,246,185,100,252,49,219,191,16,195,0,2,155,18,104,6,99,195,51, | |||
| 64,224,245,149,244,11,34,47,212,207,41,93,154,237,135,43,235,5,64,213,164,162,69,188,160,111,49,70,36,39,111,108,104,166,41,70,38,186,250,89,122,86,241,6,203,90,17,224,76,75,179,32,238,35,137,129,17,60,212,57,228,249,11,56,213,175,240,236,63,77,6,140, | |||
| 191,71,188,240,237,134,183,69,91,3,211,101,0,89,213,87,13,80,222,21,56,150,207,242,209,0,89,45,0,232,232,223,202,241,69,75,21,41,245,236,127,26,254,15,179,240,127,155,225,253,144,246,110,4,105,231,90,224,68,43,222,97,217,124,243,167,49,49,16,171,3,114, | |||
| 203,248,139,88,234,87,160,240,108,58,160,20,125,217,240,150,232,50,0,173,30,147,53,29,213,0,146,10,69,117,238,137,225,102,111,21,10,0,157,248,43,157,101,193,90,247,100,61,225,127,153,60,12,104,71,39,122,18,141,18,95,243,34,104,241,33,236,254,87,224,34, | |||
| 192,133,34,32,235,141,191,163,11,19,254,48,10,32,130,20,161,121,0,154,225,109,209,209,241,156,142,115,78,219,213,91,156,162,179,122,114,104,46,10,0,157,84,77,10,205,180,185,45,30,29,109,153,217,73,235,44,154,98,194,131,69,129,216,218,23,1,4,244,254,115, | |||
| 3,45,109,34,128,195,18,193,236,246,252,137,241,23,66,104,252,81,1,208,158,0,27,64,73,108,50,188,169,70,95,7,4,236,197,108,150,76,202,151,165,172,66,213,132,208,98,46,139,155,198,101,183,0,24,95,180,88,83,83,87,113,201,222,255,97,104,244,119,26,222,7, | |||
| 105,207,122,242,218,128,225,255,156,20,1,135,115,2,176,58,32,239,141,63,13,251,135,48,219,31,73,186,127,154,58,76,52,186,241,106,0,151,197,11,13,190,118,93,77,129,228,132,10,225,22,239,44,103,145,205,153,173,71,42,107,5,128,221,107,181,148,118,6,102, | |||
| 209,100,138,148,141,54,57,89,245,222,86,112,91,124,134,247,35,254,254,43,160,37,162,216,250,55,39,69,192,72,137,32,171,14,48,79,4,252,107,117,0,146,113,227,143,217,254,200,135,37,0,109,13,28,93,1,102,44,3,180,7,39,147,205,164,30,134,166,206,171,195,111, | |||
| 173,14,55,123,187,81,0,164,72,81,131,167,205,85,100,109,212,211,253,143,142,114,164,173,28,141,219,16,21,98,239,255,3,64,196,206,127,185,29,9,48,191,68,144,195,182,193,121,109,252,49,225,47,215,21,128,21,148,196,70,80,164,173,134,55,213,226,239,6,151, | |||
| 213,11,42,164,40,2,52,90,149,200,67,221,140,226,249,217,122,152,178,86,0,212,78,13,205,17,44,228,232,105,169,30,115,21,156,22,55,52,251,141,139,46,121,255,150,100,248,31,91,255,230,246,179,32,93,179,3,92,56,64,40,239,140,63,203,246,127,8,141,127,238, | |||
| 223,245,35,203,0,43,12,111,41,228,40,131,10,87,61,75,44,79,253,82,85,161,180,221,63,143,23,179,243,90,202,74,1,64,147,237,203,199,6,231,41,178,158,236,127,25,202,156,53,80,226,50,94,125,17,223,176,2,180,24,102,255,231,135,8,112,165,109,128,208,225,234, | |||
| 0,76,12,204,3,227,207,214,252,157,104,252,243,225,158,231,4,83,4,0,77,40,167,21,101,138,142,126,0,106,178,43,224,120,111,137,163,40,27,143,81,86,90,54,87,145,221,21,172,117,79,84,117,150,255,209,228,63,222,132,143,22,219,240,10,118,254,203,27,210,95, | |||
| 29,128,179,3,70,201,248,99,169,31,114,84,55,38,93,6,216,0,170,98,60,255,135,246,3,16,121,11,164,154,83,160,170,26,216,61,150,64,73,155,127,98,54,30,162,172,20,0,197,45,222,46,71,192,86,169,103,253,159,78,112,106,13,24,159,196,168,14,236,7,105,231,58, | |||
| 204,254,207,75,17,144,190,234,0,30,151,3,210,111,252,49,219,31,57,74,243,166,42,125,32,199,86,26,222,82,181,167,9,2,182,176,174,114,64,26,65,40,31,27,156,141,2,224,40,33,7,107,58,207,167,126,35,210,242,63,159,53,8,53,158,102,195,251,16,223,186,18,212, | |||
| 161,30,140,0,228,165,8,248,208,236,128,126,115,171,3,176,89,80,250,140,191,35,13,165,126,152,237,159,255,72,209,55,12,111,195,33,186,153,93,145,116,228,1,208,78,182,165,237,254,153,217,216,22,56,235,4,0,173,182,43,235,12,204,212,53,252,71,147,160,210, | |||
| 93,15,94,34,2,140,146,216,104,78,9,9,146,205,145,0,34,2,126,125,173,233,203,1,88,29,96,230,169,250,80,147,31,204,246,71,82,189,31,249,228,108,0,77,51,126,47,54,5,186,200,118,82,183,75,138,172,65,160,218,213,233,41,115,134,80,0,124,6,174,34,187,35,88, | |||
| 235,30,175,103,253,95,85,21,168,247,25,159,192,168,201,113,136,111,91,137,221,255,242,94,4,96,117,64,214,123,254,92,122,154,252,96,182,127,161,64,71,4,239,99,185,0,70,105,244,117,130,77,176,147,39,71,106,142,33,237,7,96,243,88,2,165,109,190,172,235,7, | |||
| 144,117,2,192,95,237,106,177,123,45,149,122,218,255,210,233,127,180,117,163,81,228,125,155,65,233,217,9,28,78,255,203,127,15,33,93,34,192,141,34,192,176,241,199,108,127,196,248,29,78,188,246,4,200,177,119,12,111,169,220,89,3,65,123,9,168,154,172,103, | |||
| 55,104,100,123,42,10,128,207,58,200,221,129,137,188,149,231,83,85,89,116,253,159,134,254,171,220,141,134,247,33,177,229,109,208,226,216,253,175,112,68,128,43,45,163,132,89,137,32,206,14,200,82,227,143,158,127,225,220,224,2,72,38,36,2,90,137,247,95,229, | |||
| 110,208,53,30,88,149,53,218,220,14,5,192,103,17,110,242,77,213,145,104,201,198,255,150,187,106,193,99,245,27,222,135,248,230,183,200,145,193,218,255,194,225,195,109,131,175,51,53,49,240,112,199,64,172,14,64,227,143,100,200,254,115,22,80,164,205,160,41, | |||
| 135,12,111,139,206,5,80,117,132,167,217,120,224,122,79,151,51,104,115,100,211,177,201,42,43,103,177,139,92,168,201,51,94,79,2,160,162,42,80,235,29,99,220,20,196,134,216,0,32,14,215,255,11,87,4,252,218,236,234,0,28,37,156,138,241,119,164,171,189,47,26, | |||
| 255,2,69,0,85,233,5,57,177,209,240,150,106,189,173,96,101,182,33,245,126,0,14,175,165,50,80,237,106,66,1,240,41,120,203,29,101,158,98,123,147,166,163,254,95,224,4,54,0,200,40,210,222,141,172,7,0,8,88,254,87,152,34,32,141,213,1,152,19,240,111,14,61,102, | |||
| 251,35,233,188,190,20,144,227,171,12,111,166,204,85,3,94,107,81,234,253,0,136,73,19,108,60,95,222,21,28,139,2,224,83,40,170,247,180,91,156,162,59,213,17,192,52,36,227,180,120,160,210,221,96,120,31,18,219,87,145,103,81,28,31,20,5,12,38,6,102,192,243,199, | |||
| 108,127,36,173,55,181,192,202,1,141,226,18,61,80,230,172,214,151,7,160,2,132,154,188,89,213,17,48,171,4,64,184,217,59,78,207,61,170,104,50,132,236,165,172,83,147,25,2,0,123,255,35,40,2,70,209,248,167,189,189,47,102,251,23,252,253,204,242,0,182,129,166, | |||
| 244,26,222,86,181,167,153,37,157,167,126,169,107,16,172,115,143,203,166,193,64,89,101,233,66,141,222,241,122,194,255,84,0,84,184,235,89,27,96,35,104,137,40,200,123,55,0,135,227,127,17,72,115,117,192,71,6,8,21,168,113,74,99,123,95,76,248,67,62,138,64, | |||
| 140,127,31,75,6,52,74,173,183,133,216,154,212,77,167,42,171,224,45,177,183,184,195,14,127,182,28,149,172,17,0,22,135,40,4,170,93,109,84,37,165,108,184,53,13,106,60,198,115,43,228,131,219,65,233,223,79,142,10,214,255,35,236,202,250,88,117,128,217,29,3, | |||
| 15,207,14,136,20,174,241,239,68,227,143,140,210,221,172,73,32,199,215,26,222,78,185,171,14,28,162,139,141,158,79,233,253,85,13,172,94,107,40,80,227,170,71,1,240,49,124,229,206,18,87,216,86,167,103,0,144,69,176,66,149,219,184,0,144,118,175,99,81,0,172, | |||
| 255,71,254,85,4,208,196,64,115,69,64,193,206,14,192,108,127,36,19,16,175,93,78,188,111,120,51,69,246,18,240,219,66,186,6,3,9,2,199,133,155,189,29,217,114,72,178,71,0,84,58,27,89,2,160,150,122,3,32,183,197,7,197,206,74,227,2,96,231,90,188,73,144,79,17, | |||
| 1,174,15,68,0,86,7,24,56,148,152,237,143,100,200,254,131,8,138,180,149,214,122,27,218,142,133,183,66,169,179,26,20,29,137,128,212,190,249,43,93,89,211,18,56,107,4,64,176,222,221,206,235,240,188,169,10,11,218,74,192,99,49,186,172,162,177,250,127,12,255, | |||
| 35,159,46,2,48,49,208,176,231,159,174,108,255,30,204,246,71,62,75,1,136,160,202,7,64,145,247,24,222,20,29,58,167,171,33,144,172,65,168,193,211,158,45,147,1,179,70,0,20,55,123,59,85,85,95,2,96,153,171,90,87,82,198,71,78,204,96,15,40,61,187,176,255,63, | |||
| 242,239,159,33,163,32,2,242,178,109,112,186,179,253,7,48,219,31,249,236,24,128,166,69,64,73,24,79,4,76,38,157,235,75,4,244,148,58,26,109,30,139,13,5,192,225,157,16,121,240,150,58,199,168,74,234,138,138,134,84,104,82,134,81,104,2,160,58,220,135,45,128, | |||
| 145,163,16,1,31,174,14,48,177,99,224,200,236,0,62,223,68,64,58,179,253,113,205,31,73,205,96,152,50,25,144,46,1,216,4,135,222,201,128,21,222,50,71,25,10,128,17,236,30,139,195,83,98,175,211,100,29,29,0,121,129,8,128,26,227,2,96,223,70,208,228,4,62,68,144, | |||
| 163,185,141,63,36,2,174,53,183,58,32,223,102,7,28,78,248,75,87,169,31,174,249,35,41,221,96,66,50,15,192,32,65,91,49,120,172,129,148,251,1,208,20,55,209,46,216,189,229,206,172,168,4,200,10,1,224,173,112,148,217,188,150,178,84,59,0,210,50,12,187,224,132, | |||
| 98,71,133,225,125,144,246,108,196,236,127,36,197,72,192,135,171,3,112,118,192,167,26,255,206,219,64,192,82,63,36,27,238,89,160,2,96,39,49,196,198,18,1,105,25,32,173,6,208,83,9,192,243,28,109,8,212,130,2,96,4,103,192,86,43,88,4,91,138,5,0,44,9,195,75, | |||
| 84,24,45,201,48,44,0,14,108,33,71,3,251,255,35,122,34,1,233,153,29,224,202,229,196,192,116,103,251,163,241,71,116,70,0,52,181,7,52,249,128,225,77,81,199,83,85,83,23,0,212,209,45,170,243,160,0,56,76,81,189,167,81,79,86,36,157,0,24,176,21,179,181,24,67, | |||
| 207,170,216,32,40,189,123,201,3,5,19,0,17,61,34,32,61,137,129,92,174,86,7,96,182,63,146,181,240,196,104,71,64,145,119,26,222,18,77,62,79,53,7,224,176,0,32,78,111,19,199,115,89,112,52,178,128,96,173,187,89,211,81,1,160,130,98,74,248,95,38,15,109,117,184, | |||
| 23,35,0,136,126,99,141,213,1,31,24,255,195,29,254,48,219,31,201,74,205,174,176,185,0,198,35,0,149,108,10,109,202,142,43,109,9,92,225,168,177,56,50,63,114,54,43,4,128,43,100,111,72,181,1,16,59,143,228,223,148,152,208,0,72,57,180,19,59,0,34,38,136,128, | |||
| 52,206,14,200,133,234,128,81,25,236,131,158,63,98,244,70,229,76,17,0,33,71,41,88,5,123,234,149,0,228,175,91,157,98,153,35,96,11,20,180,0,96,109,127,45,192,249,42,156,213,84,21,165,188,243,28,15,97,71,185,241,8,192,193,237,116,103,240,198,64,140,186,22, | |||
| 31,21,1,38,38,6,102,125,117,0,14,246,65,114,6,1,84,121,183,225,173,248,172,69,224,178,120,82,175,4,160,165,128,110,209,239,10,217,202,51,125,36,50,27,1,208,232,51,131,115,139,54,190,44,213,165,20,170,186,44,188,13,130,246,18,227,2,224,192,118,244,254, | |||
| 17,19,35,1,238,15,37,6,154,91,29,64,7,8,101,93,78,0,14,246,65,114,233,254,100,2,224,0,107,10,100,4,151,197,11,94,107,48,245,142,128,26,235,125,195,23,213,186,43,51,125,44,50,27,1,32,94,191,175,194,81,108,247,91,131,169,14,1,210,200,65,119,90,220,224, | |||
| 183,21,25,222,15,165,119,23,174,255,35,105,136,4,172,79,246,9,232,51,121,128,80,54,37,6,166,115,205,31,179,253,145,180,40,0,158,120,225,253,160,201,61,6,133,4,7,1,91,56,229,8,0,251,183,196,225,180,121,44,181,5,31,1,160,107,33,60,207,165,220,22,81,37, | |||
| 191,220,68,129,185,68,175,177,93,72,68,65,25,56,128,2,0,73,131,8,200,243,234,128,116,27,127,108,242,131,164,41,6,160,169,81,80,149,253,134,183,68,123,1,232,201,95,83,201,191,41,106,240,212,100,250,72,100,84,0,40,10,29,140,224,174,20,44,60,164,186,4,64, | |||
| 235,47,233,26,140,72,30,64,134,158,97,195,189,236,197,113,40,0,144,52,60,106,142,68,2,242,108,128,208,168,100,251,163,241,71,210,36,0,52,25,20,217,248,253,88,100,47,213,85,10,72,255,137,205,37,86,23,180,0,160,203,238,54,183,69,215,58,8,141,0,208,240, | |||
| 139,97,17,50,112,16,180,120,148,102,20,226,125,129,164,41,18,144,198,234,128,197,25,40,17,196,176,63,146,243,168,166,36,2,210,62,52,122,135,2,249,171,93,44,9,80,79,9,124,206,11,0,26,53,161,205,127,138,26,61,149,122,166,0,210,176,75,192,94,108,92,0,244, | |||
| 239,3,77,193,25,0,72,186,69,128,59,61,213,1,174,207,168,14,208,49,178,244,35,110,202,199,189,27,244,252,145,188,8,2,240,196,8,27,95,2,240,219,67,44,10,173,165,158,197,78,19,1,75,129,214,193,21,106,4,96,228,64,232,238,228,19,48,161,5,48,243,200,84,21, | |||
| 111,8,100,148,68,64,122,170,3,92,135,171,3,18,31,202,108,150,19,192,123,74,245,63,35,29,149,44,99,26,14,39,57,169,137,35,189,253,177,206,31,201,109,136,0,80,140,183,3,246,90,252,96,163,189,0,82,204,3,208,20,218,13,208,26,180,20,129,71,149,11,50,2,64, | |||
| 199,34,90,193,95,229,42,81,83,238,1,160,129,192,139,44,7,192,120,4,96,63,150,0,34,163,40,2,210,83,29,192,141,84,7,136,101,29,201,72,0,121,137,85,19,193,218,113,162,238,109,10,254,54,176,212,158,149,20,0,242,48,112,86,31,246,246,71,242,35,0,64,132,173, | |||
| 166,244,209,44,112,67,219,161,125,0,232,96,32,58,152,46,85,251,39,216,120,15,103,129,160,158,36,66,179,200,92,243,123,141,206,101,224,4,209,46,132,116,68,79,64,224,68,86,131,105,120,55,162,3,248,208,65,70,89,4,124,80,29,16,188,224,251,196,208,150,154, | |||
| 178,101,90,29,224,58,246,235,32,239,89,197,68,173,88,218,65,110,20,35,17,70,14,108,77,151,131,165,100,30,168,177,125,32,248,218,200,190,135,76,61,26,81,204,246,71,50,36,1,52,45,78,94,18,185,85,172,186,183,66,167,209,58,69,15,244,196,14,64,170,227,108, | |||
| 104,245,27,141,2,104,25,12,64,103,46,2,160,106,96,247,138,46,139,67,8,164,60,6,152,40,38,171,96,99,101,128,8,146,147,143,159,52,149,8,82,131,47,86,142,7,177,98,156,65,227,255,161,135,132,183,5,196,226,217,166,27,127,26,246,143,162,241,71,114,24,158,19, | |||
| 192,101,241,233,106,7,44,88,5,26,1,47,214,148,2,92,2,160,141,127,220,97,187,207,225,183,186,83,22,0,228,151,93,112,128,67,116,26,127,16,59,168,136,192,28,0,36,19,34,32,61,213,1,185,0,174,249,35,153,69,35,158,191,205,144,247,127,24,15,17,0,122,154,1,81, | |||
| 205,160,72,106,56,147,71,33,179,125,0,36,213,71,140,127,202,86,156,118,1,164,161,23,155,224,50,188,15,98,168,10,64,195,219,1,201,208,67,40,77,213,1,104,252,17,228,223,221,121,10,240,98,152,141,173,54,44,0,172,126,0,157,189,0,124,101,142,112,38,199,2, | |||
| 103,116,9,192,87,238,244,11,34,207,167,126,220,52,112,90,60,134,155,0,81,44,21,173,228,26,176,3,170,0,36,179,34,192,252,234,128,172,52,254,152,240,135,100,197,109,167,128,96,29,99,202,166,220,116,9,64,143,253,39,255,200,87,225,12,101,242,54,200,168,0, | |||
| 240,148,56,130,188,133,75,249,224,209,225,11,14,209,109,202,113,179,150,183,128,24,174,1,144,37,188,41,144,12,138,128,244,84,7,100,157,241,199,53,127,36,27,238,55,222,10,22,199,20,147,4,128,254,92,52,69,82,139,50,233,123,102,122,9,32,160,47,114,162,130, | |||
| 139,8,0,83,16,173,224,24,187,24,52,41,142,247,5,146,97,17,144,166,196,192,44,0,179,253,145,172,185,211,180,56,121,236,183,129,104,51,39,2,224,20,189,186,186,1,82,39,216,225,183,6,5,107,230,204,112,70,5,128,213,37,250,117,31,116,139,199,180,253,112,78, | |||
| 58,9,132,162,10,162,72,18,120,119,32,25,37,31,69,0,245,252,49,219,31,201,22,161,77,95,118,223,25,228,171,57,243,95,92,22,247,136,0,72,205,155,165,137,240,222,114,151,215,234,204,220,28,154,140,9,0,154,248,16,106,242,250,245,212,64,210,181,19,167,224, | |||
| 54,239,32,184,2,224,57,230,50,208,164,4,96,46,0,146,121,17,144,63,213,1,216,222,23,201,42,243,175,14,131,213,57,15,44,142,153,166,109,147,46,71,211,114,64,77,215,254,104,30,173,80,151,0,8,58,23,79,136,130,51,161,4,240,35,81,128,137,39,130,115,242,201, | |||
| 160,70,7,241,46,65,50,238,165,164,107,138,224,104,126,134,40,102,251,35,217,35,171,137,227,24,5,193,82,7,174,224,85,166,110,153,182,2,166,141,233,244,56,143,196,248,187,105,83,192,66,21,0,250,226,248,28,199,218,47,154,141,111,217,151,193,209,185,16,212, | |||
| 200,0,128,134,145,0,36,11,34,1,187,214,65,239,131,183,130,150,136,230,212,190,71,251,239,39,175,223,161,241,71,178,198,243,23,196,82,112,23,255,39,112,66,145,169,219,166,77,233,216,64,160,84,59,218,146,191,111,113,8,46,171,83,176,102,234,184,100,78,0, | |||
| 104,201,240,135,190,157,230,137,234,114,154,190,75,156,197,6,129,179,190,14,174,105,167,177,161,42,154,140,57,1,72,134,35,1,118,55,36,182,188,5,137,109,239,228,208,110,199,32,49,244,4,209,233,14,52,254,72,134,81,137,157,25,4,209,214,66,140,255,221,44, | |||
| 2,96,54,22,142,8,0,78,76,189,27,160,162,129,171,200,106,245,20,59,108,5,39,0,44,78,1,188,101,14,151,170,163,13,34,71,123,148,11,233,57,102,84,4,248,79,253,26,4,206,184,19,196,64,25,121,150,13,38,43,4,52,236,22,136,100,44,22,192,198,151,230,142,108,249, | |||
| 215,239,16,100,116,189,75,137,60,178,135,128,142,187,113,248,206,5,79,201,61,196,248,215,164,199,150,17,91,36,232,236,73,67,103,226,105,154,102,207,212,145,202,216,48,32,209,198,131,51,96,179,15,12,105,41,202,16,218,194,145,7,171,144,222,99,230,24,127, | |||
| 44,216,90,103,66,244,237,199,33,250,206,147,32,237,221,4,90,124,56,25,183,97,211,3,209,179,65,70,225,81,38,199,193,222,50,29,172,53,221,185,35,87,56,59,216,220,75,33,210,251,19,250,1,112,218,38,50,74,70,95,27,185,254,172,192,139,101,196,201,156,70,174, | |||
| 195,99,211,226,245,127,196,150,113,22,22,1,208,41,120,173,35,175,194,18,0,90,114,9,192,161,239,1,195,129,133,79,127,212,132,119,120,193,53,253,76,112,77,59,3,228,125,155,32,177,123,29,200,251,183,130,58,116,136,60,215,254,63,123,231,1,47,71,89,245,255, | |||
| 179,51,179,237,246,126,211,147,155,222,72,2,161,6,233,72,145,162,2,214,191,149,87,254,250,250,250,170,20,11,254,241,125,21,21,21,20,17,20,72,40,210,91,66,73,40,161,164,87,82,110,239,189,238,189,119,123,239,51,187,255,231,121,54,137,160,160,185,179,51, | |||
| 91,207,55,159,225,134,36,187,59,59,237,252,206,121,78,17,81,3,32,234,18,139,129,80,49,19,10,63,241,229,99,221,42,179,7,67,233,87,217,90,171,24,106,252,123,20,3,65,212,50,254,196,139,212,240,37,204,240,11,186,69,192,147,45,177,4,165,62,188,134,7,45,175, | |||
| 99,213,105,50,46,115,33,47,5,192,241,99,39,231,84,211,37,0,65,163,77,221,94,178,209,170,11,217,134,32,200,73,221,52,196,251,186,138,109,8,146,211,87,58,177,15,84,4,36,97,131,243,48,9,48,241,217,178,82,249,105,205,165,192,9,120,229,33,8,130,32,105,37, | |||
| 97,143,244,172,67,173,28,39,56,30,139,167,205,152,165,59,179,72,70,92,48,206,170,0,18,107,46,8,130,32,8,146,165,226,129,215,128,177,52,125,189,128,185,108,61,112,113,204,48,70,16,4,65,210,238,197,106,64,199,233,166,94,6,24,143,131,96,224,161,108,78,81, | |||
| 81,186,246,61,157,2,128,186,240,83,95,2,160,69,3,26,14,120,92,2,64,16,4,65,50,65,4,208,50,93,89,189,128,19,67,129,242,81,0,208,240,191,172,36,64,186,230,194,167,50,9,16,65,16,4,65,114,140,116,47,1,196,211,242,82,4,65,16,4,65,1,128,32,8,130,32,8,10,0, | |||
| 4,65,16,4,65,80,0,100,34,52,219,50,142,189,249,17,4,65,16,36,43,5,128,72,182,192,84,95,68,219,138,75,49,17,162,49,156,212,135,32,8,130,100,49,26,214,11,32,109,125,178,211,41,0,104,22,159,132,87,0,130,32,8,146,173,208,136,116,68,10,179,150,192,83,118, | |||
| 102,163,49,240,89,67,193,124,20,0,199,244,143,188,3,142,141,128,16,4,65,144,76,17,1,114,204,159,20,142,129,103,60,16,206,215,8,128,95,214,65,139,139,16,149,162,120,213,33,8,130,32,233,53,254,241,56,196,226,146,60,127,86,3,113,13,159,190,73,153,233,108, | |||
| 167,151,212,18,128,20,79,253,234,129,100,182,129,52,97,134,152,211,13,241,96,16,175,124,68,237,39,11,8,179,103,130,118,213,178,172,220,125,79,32,2,102,103,128,60,28,227,56,12,24,81,213,144,240,28,7,6,29,15,69,6,45,20,23,232,200,255,167,238,138,163,198, | |||
| 95,140,69,88,75,96,25,80,79,54,148,127,2,64,195,198,40,6,101,188,140,28,240,24,68,98,169,49,192,226,192,8,132,182,237,133,240,251,13,32,142,154,32,230,245,147,83,134,209,7,36,53,2,0,200,131,173,232,107,55,64,241,247,255,35,171,118,125,216,236,133,109, | |||
| 77,228,222,137,72,104,252,145,212,152,20,141,6,116,2,7,133,70,45,76,47,47,132,5,51,74,97,86,149,250,109,246,99,228,151,24,139,78,57,7,224,184,95,9,137,132,248,252,18,0,113,49,14,209,144,20,158,250,49,211,176,7,163,218,85,0,212,211,247,61,250,60,4,223, | |||
| 219,3,113,143,15,200,149,5,26,65,75,54,30,64,139,115,8,144,20,33,73,224,123,246,85,48,92,118,1,104,151,46,204,138,93,142,197,226,112,184,103,18,194,196,248,211,7,50,130,164,236,118,33,215,158,203,23,6,187,39,4,29,163,14,152,81,81,8,107,23,214,192,172, | |||
| 234,34,21,63,83,100,2,64,38,212,144,165,45,7,32,109,150,44,236,19,193,49,236,11,112,117,220,148,23,2,168,226,138,72,234,69,77,168,199,239,249,195,195,32,77,90,65,83,104,4,77,113,33,222,89,72,122,224,137,224,12,133,137,32,181,100,141,0,16,165,24,4,194, | |||
| 98,74,195,176,8,146,136,2,144,91,134,252,231,248,181,103,178,251,96,194,225,135,85,117,85,112,246,178,105,192,169,80,113,71,157,81,49,46,130,156,28,0,13,167,9,211,45,93,199,43,221,242,220,39,43,122,64,4,64,72,82,103,9,192,255,236,43,224,188,253,183,32, | |||
| 57,221,9,195,207,161,7,131,164,143,120,56,2,124,117,37,232,86,44,206,154,125,214,106,121,168,45,43,128,168,132,205,186,144,52,95,139,60,199,140,126,67,159,5,222,173,31,97,226,84,121,1,16,78,44,1,76,81,0,16,195,15,33,79,52,18,116,69,210,150,3,144,110, | |||
| 235,230,145,245,80,140,199,33,44,6,20,223,153,192,150,119,192,243,199,13,160,209,10,160,209,225,180,65,36,205,198,63,74,30,42,122,29,148,222,241,67,224,106,170,178,199,11,35,219,39,86,204,128,26,42,2,68,20,1,72,250,163,2,122,34,74,251,198,93,176,179, | |||
| 121,140,165,214,40,9,141,70,211,101,128,169,6,23,232,4,225,16,49,254,1,71,56,109,93,237,210,42,0,56,94,227,145,121,74,33,40,249,21,221,151,104,103,47,120,239,121,152,60,112,181,137,176,43,130,164,19,106,252,181,90,40,191,235,167,160,63,239,204,172,219, | |||
| 253,34,163,22,62,117,198,60,168,42,53,160,8,64,50,2,42,2,186,199,156,208,216,111,85,244,125,195,82,24,196,120,20,100,46,1,120,201,150,182,36,192,244,9,0,162,194,156,35,126,183,220,37,153,128,168,160,0,16,37,240,222,187,1,98,129,32,128,128,9,126,72,250, | |||
| 141,63,156,48,254,103,101,237,215,72,136,128,58,34,2,140,40,2,144,140,64,43,240,208,208,107,6,135,87,185,168,123,136,56,163,180,44,93,142,41,99,2,64,147,190,174,118,105,19,0,52,140,239,183,132,220,178,122,39,144,35,22,136,122,149,59,129,59,247,67,184, | |||
| 190,5,52,5,70,188,67,144,12,242,252,207,202,250,175,243,247,72,128,17,115,2,144,180,67,115,3,195,68,140,54,244,41,23,5,8,136,190,99,195,233,166,158,3,16,116,134,189,98,36,125,247,69,122,151,0,180,156,67,206,235,104,178,5,61,232,10,41,17,8,188,178,21, | |||
| 147,253,144,140,241,252,203,114,196,248,255,147,8,40,193,72,0,146,1,81,0,158,131,97,139,135,53,170,82,2,191,232,133,152,140,158,118,28,175,1,207,68,192,25,13,164,111,36,78,218,172,30,245,226,195,222,168,51,30,139,203,120,45,167,152,0,144,70,199,33,218, | |||
| 209,195,146,173,16,36,221,198,191,60,199,140,255,71,70,2,80,4,32,105,132,46,59,135,194,34,17,1,202,68,145,253,17,183,236,196,66,34,2,236,233,236,148,149,62,1,64,212,143,125,208,227,20,35,177,248,84,243,0,56,22,1,240,42,210,14,56,210,218,5,49,175,15,35, | |||
| 0,72,218,136,231,184,241,71,17,128,100,158,8,208,192,132,93,25,39,210,23,245,200,126,173,20,141,217,210,121,28,210,92,5,192,121,104,32,64,78,4,32,40,250,33,162,64,47,0,113,104,4,20,175,11,65,144,41,120,254,154,60,48,254,255,44,2,176,58,0,73,163,237,225, | |||
| 52,224,14,68,88,46,90,178,120,163,46,89,109,128,105,14,128,185,203,99,139,75,233,179,63,233,139,0,112,108,9,192,21,9,74,126,205,20,59,134,209,28,128,48,49,254,74,84,2,196,236,46,244,254,145,180,25,127,200,35,227,255,97,17,128,213,1,72,26,35,0,100,139, | |||
| 68,37,69,18,83,189,17,34,0,228,152,210,132,217,179,228,101,4,128,38,64,120,205,33,111,208,21,117,77,89,0,104,184,99,2,32,249,16,78,92,20,241,110,64,114,202,248,139,225,40,217,148,187,174,105,154,142,39,172,236,125,130,213,1,72,46,64,35,8,190,168,27,56, | |||
| 205,212,77,105,140,136,95,191,61,108,213,164,209,255,76,107,209,187,134,215,68,136,16,160,107,32,11,166,42,156,162,49,145,40,47,103,242,66,196,104,196,37,0,36,103,140,127,203,198,195,208,183,179,147,37,58,45,184,112,25,156,114,253,25,160,73,162,39,255, | |||
| 246,126,59,220,187,119,16,108,129,8,172,153,94,2,191,252,228,34,152,86,164,87,84,4,188,117,100,8,108,238,32,104,113,112,16,146,74,39,148,220,36,154,36,103,3,68,98,33,86,5,48,85,1,64,63,86,138,198,36,247,88,192,78,243,225,242,46,2,64,31,74,17,111,20,220, | |||
| 99,126,171,70,152,234,1,208,128,20,23,193,29,177,39,127,0,170,42,80,0,32,105,48,254,183,43,110,252,143,252,109,15,52,60,115,0,2,54,47,248,173,94,168,127,106,31,244,19,49,32,151,17,87,8,126,248,122,39,52,79,122,193,30,136,194,150,78,11,124,125,99,11,140, | |||
| 123,148,155,93,130,37,130,72,58,160,81,45,189,78,96,37,129,201,224,143,122,89,62,154,70,70,42,127,60,30,247,145,87,57,210,121,28,210,42,185,165,72,12,162,1,113,92,142,10,163,161,23,103,56,249,4,74,126,90,53,128,6,167,150,33,234,243,225,108,127,101,219, | |||
| 251,82,227,223,190,185,1,116,133,122,224,180,252,137,109,162,117,84,246,123,54,78,120,192,17,140,64,145,142,7,129,8,246,50,131,0,237,102,31,124,115,19,17,1,94,133,69,192,153,243,160,18,115,2,144,84,221,139,228,87,161,33,249,0,56,173,0,8,75,1,182,44,61, | |||
| 37,195,43,112,224,183,69,92,17,43,184,120,109,250,204,112,26,251,0,80,21,22,7,247,120,208,36,43,131,146,188,198,25,74,62,127,130,9,0,173,0,128,65,0,68,101,207,95,173,108,255,19,198,191,64,247,225,102,100,52,196,153,68,145,177,72,220,164,15,142,79,165, | |||
| 183,8,21,3,237,22,34,2,88,36,64,185,118,170,84,4,92,133,213,1,72,170,4,0,177,61,244,154,75,22,26,133,142,178,73,128,50,246,33,22,55,199,99,16,74,231,113,72,107,4,128,118,79,244,219,66,163,26,89,9,148,156,34,17,0,174,186,10,52,6,67,98,103,16,68,37,227, | |||
| 15,170,25,255,189,208,190,165,145,24,127,253,71,71,178,146,8,110,125,220,75,139,143,139,128,151,91,85,88,14,192,234,0,36,37,46,40,148,24,147,111,254,230,12,91,217,36,192,169,222,104,52,2,224,26,241,79,178,61,225,242,48,7,32,241,197,1,2,206,200,104,76, | |||
| 70,29,36,77,186,112,19,1,16,135,228,30,20,92,69,25,112,37,197,137,69,33,4,201,42,227,191,7,58,182,212,131,206,168,131,84,118,19,139,31,19,1,29,116,57,224,101,117,114,2,42,177,58,0,81,211,246,144,251,165,184,32,121,1,96,15,77,202,86,215,209,160,56,146, | |||
| 238,227,144,222,70,64,180,25,131,41,48,17,151,98,83,30,165,68,5,128,39,234,2,127,52,185,82,64,174,184,16,248,170,114,136,75,18,222,21,72,118,121,254,155,27,64,107,212,67,58,90,137,158,88,14,80,73,4,92,133,137,129,136,138,215,46,77,254,43,86,32,2,96,15, | |||
| 78,202,170,36,160,182,207,214,231,25,206,107,1,192,166,33,185,162,230,72,64,154,242,88,96,142,205,3,240,130,55,154,100,41,32,249,96,126,122,45,0,10,0,68,201,135,140,202,158,127,59,245,252,11,210,99,252,255,49,18,208,174,98,36,0,151,3,16,197,175,219,120, | |||
| 28,116,90,94,145,36,64,71,216,2,188,134,151,245,218,136,95,204,115,1,192,107,32,64,51,33,253,162,121,234,221,0,57,136,72,97,112,40,145,8,56,107,58,46,1,32,138,26,127,213,19,254,140,233,53,254,31,41,2,212,168,14,56,3,171,3,16,165,5,0,16,227,175,5,189, | |||
| 54,57,1,16,146,130,224,14,219,137,51,58,69,1,64,123,0,144,235,217,214,239,195,37,0,144,64,244,140,7,70,57,25,77,64,196,88,20,108,193,137,164,247,67,152,59,43,35,30,166,72,14,144,142,108,255,12,16,1,234,87,7,160,8,64,148,33,70,156,189,18,114,15,37,91, | |||
| 253,237,137,56,192,39,122,100,53,1,138,134,36,127,192,25,49,229,181,0,96,15,49,242,244,8,58,35,253,114,219,33,154,131,163,73,239,134,48,103,102,98,28,48,54,4,66,146,52,254,106,133,253,143,50,227,255,47,178,253,51,0,117,171,3,80,4,32,202,9,214,178,194, | |||
| 228,187,89,58,66,102,8,139,129,41,155,209,99,77,240,38,189,230,160,53,191,5,192,49,236,131,222,62,78,198,64,30,26,122,177,4,146,23,81,252,244,26,208,176,74,0,124,184,32,153,103,252,19,165,126,153,231,249,127,212,131,245,131,213,1,38,172,14,64,50,16,122, | |||
| 11,149,43,208,206,218,18,52,177,40,244,84,111,73,54,7,199,18,26,147,194,82,56,221,199,34,35,4,0,57,24,189,114,198,50,210,228,11,90,134,65,79,66,82,7,161,162,12,248,218,106,172,4,64,50,208,248,239,73,107,182,191,28,17,112,188,58,224,70,172,14,64,50,16, | |||
| 129,231,160,76,1,1,48,225,31,145,213,63,142,230,190,5,29,145,62,41,154,254,107,56,35,4,128,115,216,55,40,137,177,41,91,95,26,1,112,71,28,224,73,182,18,128,227,216,50,0,136,40,0,144,12,51,254,172,201,143,46,171,114,84,254,185,58,64,217,156,0,92,14,64, | |||
| 228,66,187,207,26,245,2,203,1,72,22,186,252,204,201,168,0,160,209,110,251,160,183,59,19,142,71,70,8,0,183,41,48,22,241,68,237,220,20,167,34,209,54,165,129,168,79,153,68,192,5,115,177,18,0,153,154,161,75,129,231,159,234,38,63,170,136,128,77,152,19,128, | |||
| 100,136,0,136,209,6,64,180,2,128,79,234,125,162,177,8,235,1,32,167,4,144,205,177,25,241,161,0,56,78,200,29,117,251,109,225,145,169,143,69,212,64,52,30,129,201,64,242,213,20,218,69,117,0,60,143,119,8,114,210,158,127,190,101,251,203,17,1,39,170,3,54,97, | |||
| 159,0,36,51,34,0,229,133,134,228,157,214,136,29,220,97,135,172,8,0,29,3,236,26,245,247,163,0,56,134,24,150,226,30,115,176,139,147,49,23,89,67,158,50,227,190,193,228,35,0,117,179,129,43,41,196,68,64,228,164,140,191,250,97,127,125,206,76,169,252,123,117, | |||
| 0,77,12,84,97,57,160,196,8,17,20,1,200,73,66,69,99,178,152,3,99,16,148,124,83,46,1,164,54,46,236,137,90,220,166,224,72,38,28,11,46,83,78,138,99,200,215,206,201,152,205,204,113,2,140,7,146,111,168,68,147,0,89,34,32,230,1,32,105,52,254,29,91,178,55,236, | |||
| 255,175,34,1,199,171,3,110,84,163,68,240,204,99,145,0,172,14,64,254,157,163,71,12,112,101,73,242,17,0,147,127,16,68,54,4,104,138,14,43,249,124,191,53,52,24,242,68,188,40,0,62,44,0,218,228,172,192,211,53,24,107,112,28,130,162,63,201,43,67,0,97,254,28, | |||
| 0,81,196,187,4,73,143,231,191,185,49,107,178,253,229,136,128,34,21,19,3,177,58,0,249,119,176,4,64,157,160,72,5,128,201,55,32,111,6,0,113,114,61,230,96,135,20,201,140,235,52,99,4,128,173,215,219,45,6,197,232,212,135,2,241,224,9,59,192,26,26,79,122,31, | |||
| 180,203,22,225,18,0,146,30,227,191,37,251,215,252,79,54,18,144,16,1,152,24,136,164,88,0,196,226,204,248,27,146,76,0,164,19,104,39,252,195,196,249,156,122,43,97,186,4,96,237,245,182,100,202,49,201,24,1,224,53,7,71,195,62,113,108,234,51,1,52,16,142,133, | |||
| 136,34,75,62,15,128,9,0,157,22,59,2,34,31,190,225,213,14,251,103,80,111,255,212,138,0,117,102,7,160,8,64,62,46,2,160,196,250,191,43,108,7,91,72,94,5,0,221,7,107,143,7,5,192,63,18,116,134,67,158,137,96,23,47,99,38,0,53,216,35,222,158,164,247,65,152,63, | |||
| 23,248,138,114,0,92,75,68,62,224,249,171,157,237,175,205,113,207,255,163,68,192,137,229,128,141,88,29,128,164,6,26,178,175,45,43,72,250,125,104,213,153,63,234,158,114,5,0,253,252,168,79,244,57,6,189,189,40,0,254,217,134,131,99,192,219,200,9,114,102,43, | |||
| 11,48,234,235,75,254,96,148,151,130,48,111,22,196,49,15,0,57,102,252,213,15,251,231,78,182,255,84,249,96,117,0,54,11,66,212,22,157,180,246,191,74,129,4,192,17,98,191,229,36,0,82,219,230,179,134,6,60,147,193,73,20,0,31,129,165,199,211,32,231,89,40,104, | |||
| 4,54,19,192,27,117,37,189,15,218,21,75,48,17,16,73,81,182,191,62,175,167,80,126,120,118,128,90,57,1,6,172,14,64,78,76,0,84,162,3,224,144,167,123,202,229,127,9,1,192,129,115,196,223,34,134,50,231,130,204,40,1,96,235,243,180,73,209,184,140,68,64,14,60, | |||
| 17,39,75,204,72,22,221,234,229,216,16,8,141,63,102,251,167,80,4,20,169,218,54,184,14,171,3,16,38,0,170,75,141,178,50,247,63,244,104,136,69,192,228,31,0,158,155,122,2,32,93,49,176,245,122,142,102,210,113,201,44,1,208,235,25,242,89,67,35,156,156,142,128, | |||
| 228,196,12,121,186,146,143,0,44,89,192,150,2,48,15,0,141,63,118,248,75,109,36,0,171,3,16,53,175,177,233,21,133,73,191,143,53,104,2,71,200,34,171,2,128,238,4,141,114,163,0,248,24,66,222,104,216,61,30,104,230,4,57,163,129,57,24,244,116,38,127,64,106,170, | |||
| 64,168,155,147,200,252,70,242,235,33,145,18,227,143,158,255,191,21,1,216,54,24,81,242,218,138,39,214,255,107,203,147,79,0,28,242,244,64,72,10,176,234,179,41,185,168,156,6,66,158,168,131,56,185,157,153,116,108,184,76,59,89,147,173,206,195,114,18,1,121, | |||
| 78,11,163,190,126,8,75,201,135,16,217,50,0,118,4,204,59,207,31,123,251,167,95,4,224,236,0,68,105,104,233,93,89,161,30,74,11,146,111,0,52,224,105,151,103,104,137,77,243,76,4,59,137,131,107,67,1,240,47,176,244,184,15,201,25,178,76,107,50,29,97,139,34,131, | |||
| 129,116,107,87,17,79,16,243,0,242,201,248,99,182,127,230,80,252,1,17,96,82,169,58,0,103,7,228,15,82,44,206,188,255,100,111,191,88,92,98,9,128,114,194,255,180,188,221,222,239,61,28,207,176,137,179,25,39,0,172,221,158,214,176,55,234,144,213,16,72,12,194, | |||
| 160,167,35,233,125,160,13,129,248,234,74,140,2,160,241,79,138,163,152,237,47,59,18,192,170,3,44,42,205,14,32,34,160,26,171,3,242,6,106,248,103,86,21,37,111,155,130,19,96,9,154,100,37,0,82,75,107,106,178,31,200,180,99,147,113,2,192,109,10,216,93,99,129, | |||
| 86,94,198,50,128,70,195,65,175,171,53,249,131,82,90,12,218,165,139,48,15,32,231,141,191,168,162,231,191,23,218,48,219,63,41,17,80,164,106,78,0,86,7,228,197,117,68,46,164,2,189,22,166,41,177,254,239,237,130,128,232,37,70,115,106,102,147,86,30,136,33,41, | |||
| 108,238,112,215,163,0,248,55,196,164,56,76,182,59,15,242,50,66,240,2,167,37,39,169,27,194,82,48,233,253,208,159,185,6,64,194,8,64,110,123,254,130,138,107,254,245,184,230,175,80,36,224,239,205,130,48,39,0,153,26,82,44,198,162,61,5,122,33,233,247,234,113, | |||
| 53,201,139,64,208,9,128,246,112,55,113,110,71,50,237,248,112,153,120,210,198,155,156,123,227,50,18,1,88,30,64,208,204,234,52,147,69,119,250,42,208,20,21,210,133,31,188,139,114,205,176,164,160,206,31,179,253,21,22,1,102,20,1,136,12,135,50,30,135,153,149, | |||
| 201,135,255,197,184,8,3,238,78,214,116,110,202,118,73,203,209,254,255,7,195,190,104,198,121,148,25,41,0,204,29,174,6,114,176,60,156,140,60,128,72,44,76,148,90,115,210,251,32,204,155,147,40,7,20,113,25,32,215,60,127,13,78,245,67,17,128,34,32,47,208,242, | |||
| 60,204,170,78,94,0,76,250,135,143,173,255,107,167,110,100,121,13,140,55,59,118,103,226,241,201,72,1,224,158,8,76,186,70,3,205,156,118,234,187,71,163,0,93,206,166,228,119,130,231,64,127,198,106,128,8,10,128,92,50,254,170,103,251,227,154,191,250,34,96, | |||
| 147,122,179,3,176,58,32,119,160,217,255,229,197,122,168,40,78,190,255,127,143,171,5,66,162,140,250,127,242,207,165,168,20,158,104,113,30,70,1,112,146,196,196,56,152,219,93,187,228,8,0,129,245,3,232,3,79,196,145,244,126,232,215,157,14,26,28,15,140,198, | |||
| 255,36,140,63,102,251,167,78,4,116,88,212,235,24,136,213,1,185,37,0,102,85,21,1,167,64,249,109,151,179,65,118,255,127,151,41,208,97,235,247,14,102,226,49,226,50,245,228,153,154,29,187,228,24,94,58,162,209,19,118,64,159,187,61,233,125,160,131,129,248, | |||
| 217,51,176,28,48,235,141,191,186,217,254,108,164,47,26,255,148,137,128,34,85,151,3,176,58,32,87,224,57,13,204,169,41,73,250,125,124,81,15,171,255,23,184,169,15,18,226,117,28,76,182,185,246,68,252,153,121,65,101,172,0,152,108,119,53,132,188,81,139,12, | |||
| 209,5,177,120,12,58,28,71,146,222,7,141,65,15,186,211,87,67,60,18,193,187,41,171,61,127,181,179,253,209,248,167,35,18,160,110,78,128,1,69,64,150,123,255,37,133,58,168,45,51,38,253,94,180,251,159,51,108,101,203,203,83,182,33,26,13,76,180,56,183,103,234, | |||
| 113,202,88,1,224,30,243,187,108,189,222,131,188,110,234,7,93,203,235,216,154,13,29,16,148,44,6,98,52,52,56,29,48,59,13,5,102,251,231,135,8,80,171,79,0,38,6,102,181,0,152,85,89,4,2,159,188,137,107,183,31,97,93,0,167,108,252,201,71,135,60,17,215,200,17, | |||
| 219,33,20,0,83,189,193,201,29,62,214,96,223,198,203,24,12,68,75,53,44,193,49,24,246,246,36,189,31,186,83,87,2,63,115,90,34,140,140,100,149,231,143,189,253,243,68,4,96,159,0,228,31,13,27,241,188,235,166,37,31,254,23,227,81,232,118,53,129,86,78,248,95, | |||
| 203,129,99,200,127,196,51,17,176,160,0,144,193,200,17,235,118,73,140,201,176,188,26,136,74,17,162,220,146,79,188,212,20,24,65,119,230,169,184,12,144,101,198,31,167,250,229,107,36,0,171,3,242,157,24,241,254,75,11,117,48,77,129,241,191,35,222,94,48,7,70, | |||
| 101,181,255,165,205,236,70,143,218,222,165,73,237,40,0,100,96,237,246,116,187,77,254,118,94,86,53,128,0,29,206,163,44,31,32,89,140,151,156,75,206,38,143,213,0,104,252,19,217,254,104,252,51,82,4,168,94,29,128,34,32,43,16,137,0,152,83,83,12,90,5,194,255, | |||
| 109,246,67,16,145,194,83,46,255,163,72,209,88,140,8,128,247,50,58,82,146,201,59,71,51,39,205,157,238,247,104,38,229,212,5,128,14,198,124,3,48,238,79,190,250,66,187,122,5,8,115,103,65,92,196,101,128,204,54,254,152,237,159,207,34,224,131,213,1,38,204,9, | |||
| 200,91,104,246,255,252,105,165,201,71,18,136,243,216,102,63,194,156,201,41,27,86,65,3,126,107,168,139,216,175,246,76,62,86,92,166,159,204,129,61,150,183,228,60,113,169,98,163,141,27,218,28,10,44,3,24,244,96,56,239,76,128,48,46,3,100,182,231,47,168,104, | |||
| 252,49,219,63,91,34,1,84,4,220,168,70,78,192,153,88,29,144,233,208,228,63,218,248,71,137,225,63,212,121,164,109,229,229,148,255,9,122,158,150,178,191,23,246,102,118,242,88,198,11,128,209,35,182,195,62,75,112,140,182,83,156,186,18,20,160,197,118,16,228, | |||
| 204,21,248,71,12,151,158,71,132,128,1,151,1,50,214,248,171,24,246,199,53,255,172,20,1,44,39,192,171,160,8,48,96,36,32,27,4,0,77,254,155,106,27,249,143,162,197,126,80,86,247,191,227,23,98,223,174,201,55,50,253,120,101,188,0,8,56,195,126,91,159,119,155, | |||
| 156,101,0,154,185,73,147,56,38,252,67,73,239,135,118,217,34,208,46,93,136,201,128,121,102,252,105,123,95,45,102,251,103,167,8,176,168,85,34,136,213,1,153,122,222,117,2,7,11,166,39,31,254,143,199,99,204,121,148,19,254,215,16,241,17,116,69,76,227,205,206, | |||
| 247,81,0,40,192,224,126,203,102,186,166,50,229,19,65,126,5,69,63,52,89,247,43,112,164,56,22,5,192,114,192,204,50,254,170,151,250,225,154,127,86,139,128,14,172,14,200,31,239,95,138,65,109,121,161,34,189,255,71,125,253,196,121,236,147,25,254,231,192,220, | |||
| 233,222,230,183,133,124,40,0,20,17,0,230,93,33,119,212,170,145,17,214,161,179,1,154,108,7,20,169,6,48,92,114,46,112,21,101,52,206,132,119,91,134,120,254,101,152,237,143,252,11,17,80,132,213,1,121,3,157,220,190,104,102,169,34,239,213,100,219,7,97,41,40, | |||
| 43,252,79,157,213,254,61,147,175,102,195,49,203,10,1,224,54,5,92,147,237,174,93,130,78,222,112,160,49,95,31,81,115,201,55,5,226,167,213,128,254,172,211,32,30,14,227,221,150,86,227,175,118,182,127,35,102,251,231,152,8,80,179,99,96,37,46,7,100,128,241, | |||
| 143,67,49,57,31,117,181,201,11,0,218,122,166,153,56,141,90,25,163,127,19,225,255,168,109,232,128,117,15,10,0,5,25,216,107,222,164,209,202,91,6,8,75,33,168,183,42,51,142,217,120,213,37,180,205,20,222,113,105,245,252,213,206,246,199,53,255,92,19,1,106, | |||
| 118,12,188,10,103,7,164,29,81,138,195,188,218,18,48,232,146,111,219,62,232,233,32,78,227,32,240,50,4,0,13,255,79,182,185,182,121,38,2,78,20,0,10,50,184,223,242,158,220,101,0,58,27,128,42,186,72,44,249,27,95,127,198,26,16,22,214,97,50,96,58,30,228,152, | |||
| 237,143,36,43,2,84,157,29,128,34,32,93,8,196,46,44,153,85,174,204,179,192,178,19,196,88,68,86,248,95,147,8,255,191,152,45,199,45,107,4,128,219,20,112,154,219,93,239,81,133,53,229,139,67,163,133,73,255,8,116,59,155,146,223,17,157,22,10,46,191,16,32,18, | |||
| 197,187,46,197,198,95,131,217,254,136,82,145,0,28,32,148,67,222,63,77,254,43,128,26,5,106,255,105,210,120,171,253,125,208,241,250,169,27,127,34,66,66,174,168,121,232,128,117,7,10,0,21,232,223,99,126,145,19,228,237,114,140,252,58,108,222,166,200,126,24, | |||
| 174,184,16,184,138,114,76,6,76,21,152,237,143,40,44,2,58,44,88,29,144,43,208,228,191,165,179,43,20,185,125,105,235,95,107,112,28,120,205,212,203,255,104,243,159,201,118,215,155,158,137,128,7,5,128,10,244,237,152,216,225,179,4,77,114,74,2,117,156,30,218, | |||
| 29,71,193,21,182,37,189,31,44,25,144,24,162,120,40,132,119,95,10,140,63,246,246,71,148,22,1,88,29,144,43,198,63,49,248,71,137,214,191,148,67,230,237,242,26,255,64,98,252,111,215,214,177,23,178,233,248,101,149,0,240,219,195,62,83,163,99,11,85,90,83,254, | |||
| 162,26,30,220,97,59,52,40,148,156,89,240,153,203,65,163,211,98,103,64,85,141,191,168,242,84,63,204,246,207,119,17,160,110,78,0,46,7,168,13,77,254,91,52,163,12,116,218,228,77,25,157,250,215,195,70,255,78,61,252,79,157,82,175,37,52,48,120,192,178,23,5, | |||
| 128,138,244,108,159,120,142,217,92,25,15,109,218,26,248,176,121,135,34,61,1,116,171,151,131,110,205,74,136,227,124,0,21,61,127,65,213,193,62,152,237,143,34,64,205,234,0,236,24,168,242,249,35,39,208,160,229,97,233,108,101,146,255,14,19,239,223,31,245, | |||
| 16,103,81,70,158,25,237,253,95,111,127,37,228,142,102,85,88,56,235,4,192,208,1,235,251,238,49,127,27,47,99,25,128,182,6,30,242,116,65,191,187,45,249,29,209,104,160,224,186,79,97,30,128,26,55,182,218,237,125,49,219,31,249,71,17,96,70,17,144,117,62,2,121, | |||
| 246,206,173,45,129,210,66,125,210,239,69,43,196,142,88,118,201,242,254,233,115,36,38,197,165,246,55,70,159,203,182,99,152,117,2,32,26,20,197,193,125,150,231,229,44,3,208,181,157,104,44,2,7,38,222,86,100,95,12,23,156,13,194,162,58,114,245,96,20,64,73, | |||
| 227,175,118,182,63,122,254,200,199,138,0,156,29,144,53,208,177,191,43,231,85,42,242,94,237,246,35,108,102,140,32,163,246,159,215,114,224,26,241,31,153,104,85,162,204,12,5,192,191,165,115,235,216,139,98,36,22,210,200,120,136,235,121,3,52,219,15,42,146, | |||
| 12,8,122,29,20,124,246,10,136,99,73,160,66,234,14,179,253,145,244,138,0,172,14,200,14,104,233,223,172,170,34,69,198,254,82,246,79,188,37,251,181,212,25,237,126,111,252,153,104,80,202,186,132,176,172,20,0,214,94,111,191,185,211,189,157,215,201,75,6,116, | |||
| 133,237,44,219,83,9,140,159,186,24,248,89,211,201,21,137,67,130,146,53,254,152,237,143,164,91,4,124,184,58,64,121,17,128,213,1,202,157,171,149,243,170,20,121,47,147,127,16,186,156,141,160,227,167,62,68,136,58,161,17,191,232,238,223,51,185,41,27,143,99, | |||
| 86,10,128,24,185,129,186,182,154,30,231,101,102,126,210,30,207,7,39,223,97,203,1,73,31,192,146,98,40,184,230,50,136,135,112,62,128,124,227,127,60,219,255,118,204,246,71,50,66,4,36,114,2,90,177,58,32,19,189,255,88,156,120,254,133,48,167,166,88,33,239, | |||
| 127,43,107,0,36,167,252,79,48,240,96,106,118,188,110,237,246,152,81,0,164,144,222,29,19,111,251,172,161,33,142,151,151,12,104,242,13,176,166,15,74,64,151,1,184,234,74,58,143,18,239,78,89,158,255,241,108,255,51,85,48,254,184,230,143,76,93,4,96,78,64,6, | |||
| 159,31,34,0,78,153,87,169,200,72,22,95,212,13,71,205,59,101,117,254,99,17,0,158,131,206,55,199,30,203,214,99,153,181,2,32,224,8,7,6,246,154,159,211,26,229,15,127,216,109,122,93,153,131,72,140,127,193,85,151,64,60,136,141,129,166,116,35,171,26,246,223, | |||
| 139,189,253,145,228,69,192,241,156,0,47,138,128,76,241,254,171,201,113,91,48,93,153,198,63,180,244,207,30,154,148,213,249,143,23,56,112,143,249,91,6,247,89,246,161,0,72,3,29,111,142,61,41,69,99,97,57,15,120,186,222,211,237,106,132,65,79,167,50,81,128, | |||
| 47,92,11,92,101,57,70,1,166,224,249,171,155,237,95,15,90,52,254,136,82,34,96,163,58,145,0,28,37,60,53,98,212,251,175,171,2,78,1,247,159,14,252,217,55,254,22,8,156,78,214,235,5,3,7,61,219,198,31,11,251,162,89,155,0,150,213,2,96,178,205,217,51,209,234, | |||
| 122,71,118,73,160,20,134,93,166,205,138,236,11,109,15,92,112,245,39,49,10,144,9,198,31,179,253,17,133,69,64,199,137,102,65,202,38,6,94,133,213,1,39,141,68,140,127,85,137,1,22,206,80,198,251,111,182,29,132,17,95,31,91,18,158,178,253,32,2,36,236,19,157, | |||
| 109,175,141,190,144,205,199,52,171,5,64,76,138,67,235,107,35,15,201,153,13,144,136,2,24,161,209,186,15,44,193,49,101,162,0,95,196,40,192,201,24,127,26,246,47,195,108,127,36,139,68,0,171,14,56,150,24,104,194,234,128,52,9,128,24,172,158,95,13,2,207,41, | |||
| 112,78,227,204,249,147,219,247,95,107,224,97,228,176,109,163,107,204,111,65,1,144,70,6,246,154,183,123,198,131,109,188,140,41,129,180,229,163,63,234,38,23,194,22,229,162,0,215,94,134,81,128,143,53,254,216,219,31,201,110,17,64,19,3,111,196,234,128,148, | |||
| 67,215,254,107,202,10,96,209,204,50,69,222,175,199,217,4,61,174,102,217,201,127,177,88,92,106,223,50,250,112,182,31,215,172,23,0,97,111,52,218,179,109,124,61,45,199,144,3,109,12,116,104,114,27,184,34,118,69,246,167,240,203,159,5,190,166,138,118,170,192, | |||
| 187,246,159,60,127,65,229,246,190,152,237,143,168,43,2,212,175,14,192,72,192,71,30,123,34,0,214,16,239,159,231,148,185,193,183,143,189,2,82,92,146,87,250,167,231,193,214,231,221,53,116,208,210,136,2,32,3,104,122,105,232,217,160,59,98,145,83,18,200,105, | |||
| 4,112,133,173,176,87,169,138,128,170,10,40,184,225,42,140,2,124,240,230,197,222,254,72,174,137,128,227,57,1,94,21,34,1,37,24,9,248,144,247,47,197,96,90,69,33,44,80,104,237,127,200,219,5,173,246,247,153,243,39,235,25,47,104,160,245,213,225,251,99,82,246, | |||
| 79,130,205,9,1,224,157,12,58,135,14,88,158,148,27,5,160,21,1,251,38,222,98,53,161,74,80,240,249,107,129,159,51,35,225,245,162,241,79,65,111,127,52,254,72,14,69,2,206,196,18,193,127,100,237,162,26,226,172,41,115,147,191,55,178,145,53,129,147,227,253,211, | |||
| 230,115,158,137,96,123,215,86,211,214,92,56,174,92,174,92,32,13,207,13,60,44,134,99,65,57,223,136,214,128,218,130,147,176,119,252,77,101,14,106,105,49,20,125,245,122,28,21,140,217,254,72,62,136,0,21,167,8,230,123,117,0,157,248,71,59,254,205,85,168,235, | |||
| 223,152,175,31,154,108,251,137,247,111,148,245,122,234,100,118,189,109,122,48,18,16,115,194,187,203,25,1,96,233,242,12,76,180,58,55,105,245,242,162,0,90,94,15,187,77,91,192,47,122,20,217,31,227,181,151,129,118,217,162,252,21,1,216,219,31,201,51,17,128, | |||
| 213,1,202,67,215,252,79,95,92,171,216,251,189,55,186,17,194,98,64,150,247,79,67,255,62,75,104,188,121,227,208,179,185,114,124,115,70,0,196,227,113,104,120,118,224,62,208,104,100,101,223,9,26,1,172,65,19,236,49,189,161,200,254,104,244,122,40,250,214,151, | |||
| 243,179,36,16,179,253,145,60,20,1,88,29,160,44,52,250,177,104,102,57,212,150,41,51,241,207,228,31,128,122,203,110,208,11,242,188,127,173,65,128,193,125,150,13,62,107,200,157,43,199,152,203,165,11,102,240,128,165,97,172,222,254,182,214,32,55,10,96,72, | |||
| 68,1,162,202,68,1,12,23,173,3,253,186,211,33,30,8,230,207,3,17,179,253,145,124,142,4,168,84,29,80,153,103,137,129,49,114,80,141,228,152,158,190,168,70,177,247,124,123,248,5,8,73,212,251,159,186,217,163,141,127,34,1,209,213,244,210,224,250,92,58,206,57, | |||
| 37,0,104,169,72,203,166,225,123,56,65,222,215,58,30,5,216,105,122,77,153,29,210,104,160,248,59,95,3,141,94,151,184,162,243,192,248,171,185,230,143,189,253,145,140,23,1,22,117,68,192,85,52,49,48,143,68,0,93,251,95,85,87,5,37,5,58,69,222,111,216,219,67, | |||
| 188,255,93,178,51,255,117,70,129,14,160,251,155,181,215,51,137,2,32,131,25,58,104,217,109,31,240,238,226,117,242,190,154,238,88,20,192,29,113,40,178,63,218,21,139,193,120,237,229,16,15,4,114,252,142,85,63,219,31,123,251,35,249,44,2,242,165,58,128,182, | |||
| 252,173,44,54,192,170,249,213,138,189,231,214,225,103,33,194,198,198,200,240,254,53,204,251,247,55,60,51,240,64,174,29,235,156,19,0,228,68,65,227,11,131,119,11,50,147,1,105,69,128,35,100,134,109,163,155,20,219,167,226,111,125,137,117,9,132,236,157,25, | |||
| 241,111,141,191,154,83,253,48,219,31,201,86,17,96,194,234,128,41,19,139,199,225,204,197,181,160,19,148,49,79,189,174,22,104,178,202,207,252,167,19,103,199,26,237,207,90,251,60,131,40,0,178,128,206,183,198,222,182,247,123,247,9,50,163,0,244,66,217,59, | |||
| 254,6,88,131,227,202,28,228,170,10,40,186,241,139,185,89,17,160,246,72,223,45,245,24,246,71,178,82,4,208,1,66,55,170,48,64,40,151,171,3,168,176,153,87,91,162,88,211,31,122,54,222,28,122,26,164,184,40,175,239,191,134,37,152,135,154,94,28,252,99,46,94, | |||
| 171,57,41,0,162,33,41,222,248,194,224,93,188,94,222,215,227,52,60,120,35,46,216,58,252,156,98,251,84,240,217,43,65,183,246,148,220,234,16,168,122,182,127,3,102,251,35,89,43,2,138,78,148,8,170,83,29,144,107,163,132,137,227,15,122,45,15,103,45,157,166, | |||
| 216,123,54,217,14,64,187,227,136,124,239,223,192,195,232,81,251,179,67,7,173,61,40,0,178,41,10,176,213,244,182,173,223,183,79,174,8,48,8,70,120,127,242,61,150,60,162,8,2,15,37,223,255,15,182,78,14,177,28,184,105,49,219,31,65,78,42,18,160,86,179,160,227, | |||
| 163,132,115,69,4,68,164,24,172,174,171,98,235,255,74,32,198,163,204,251,215,104,100,154,57,13,243,6,67,71,159,238,191,59,87,175,209,156,21,0,209,160,24,111,122,97,240,46,65,199,203,60,247,28,68,98,33,120,125,240,9,197,246,73,187,106,89,98,78,128,63,187, | |||
| 203,2,213,238,237,143,217,254,72,78,138,128,77,106,204,14,200,13,17,32,74,113,168,46,49,192,154,133,202,37,254,237,31,223,10,3,238,14,208,113,242,38,254,209,204,255,129,221,147,79,142,28,178,245,228,234,245,201,229,242,205,215,185,117,108,171,125,192, | |||
| 187,83,110,66,32,13,27,53,219,14,66,139,253,160,114,55,237,77,95,6,161,110,54,196,35,217,153,15,16,199,108,127,4,145,39,2,104,98,224,70,245,218,6,103,179,8,160,183,251,186,229,211,65,203,43,99,146,104,47,151,183,135,159,39,239,39,175,140,144,214,253, | |||
| 71,195,146,255,192,67,221,191,163,77,230,80,0,100,101,20,64,130,163,79,245,223,73,91,56,202,187,40,53,172,4,100,203,192,223,216,240,8,69,14,120,73,49,91,10,0,41,150,88,244,202,170,3,170,158,241,63,138,189,253,145,124,17,1,155,80,4,124,144,136,40,193, | |||
| 210,57,21,48,187,186,88,177,247,124,103,228,5,176,4,199,64,208,104,101,189,94,91,32,64,239,246,137,13,182,126,239,80,46,95,151,92,174,223,120,29,111,140,237,26,171,183,191,65,75,57,228,64,195,71,131,158,78,216,99,218,162,216,62,233,47,90,7,198,79,93, | |||
| 12,113,127,22,245,6,80,123,164,47,246,246,71,242,73,4,168,84,29,144,109,34,128,214,252,151,146,251,254,172,37,202,245,251,31,247,15,193,46,211,102,208,243,242,90,8,211,148,129,104,64,116,214,63,51,112,79,174,95,147,57,47,0,104,248,134,156,200,95,16,79, | |||
| 94,118,17,62,109,14,180,117,248,121,112,134,173,138,237,23,141,2,240,51,167,101,199,200,96,149,179,253,59,176,183,63,146,111,34,64,181,234,128,121,89,85,29,64,107,254,105,232,223,168,23,20,123,207,205,3,143,65,64,244,1,39,51,249,79,87,192,186,254,221, | |||
| 103,235,243,76,160,0,200,1,6,15,88,234,71,142,216,158,211,26,229,93,100,180,57,16,53,254,175,15,62,169,220,129,175,170,128,146,31,124,11,226,162,152,217,75,1,41,200,246,215,98,182,63,146,183,34,32,127,171,3,104,205,255,210,89,229,48,127,122,169,98,239, | |||
| 73,71,253,54,88,247,129,65,102,217,31,199,107,192,111,11,143,29,92,223,115,127,62,92,139,121,33,0,232,140,128,189,15,116,222,41,69,99,126,154,220,33,7,131,80,0,7,38,222,134,30,87,139,98,251,101,248,228,249,96,188,242,146,140,93,10,192,108,127,4,73,129, | |||
| 8,200,195,234,128,68,232,95,7,103,47,155,174,216,123,134,165,32,188,54,240,232,49,207,95,222,67,69,87,168,133,182,205,163,191,241,76,4,92,40,0,114,8,75,151,187,191,111,231,196,3,186,2,185,101,129,26,136,197,37,120,165,127,61,171,47,85,138,146,31,126, | |||
| 11,132,217,51,32,30,201,172,165,0,204,246,71,144,20,137,0,21,171,3,50,117,57,128,6,61,207,93,57,3,10,20,12,253,191,59,242,34,140,120,251,64,203,201,203,252,167,243,99,236,131,222,214,250,231,6,30,207,151,107,144,203,167,27,110,255,131,93,247,4,156,145, | |||
| 113,26,230,145,165,14,121,3,244,186,90,97,215,216,107,202,157,128,202,114,40,249,209,127,38,154,3,101,202,82,64,74,178,253,49,236,143,32,255,156,24,152,251,203,1,225,168,4,43,230,86,64,93,109,137,98,239,57,238,31,132,119,71,55,202,14,253,83,104,215,191, | |||
| 134,103,7,110,15,185,35,145,124,185,254,242,74,0,120,38,130,142,230,77,195,191,20,100,86,4,36,68,128,30,222,28,122,70,177,57,1,20,106,100,11,191,112,45,196,125,25,176,20,144,178,108,127,180,254,8,242,33,17,112,44,39,192,148,195,213,1,172,225,15,217,151, | |||
| 179,151,77,83,244,8,110,234,123,24,130,162,159,181,113,151,131,64,140,255,120,179,115,107,231,91,99,111,230,211,181,199,229,219,205,86,255,116,255,227,174,17,127,189,220,113,193,52,33,208,27,117,193,203,253,235,21,221,175,226,239,126,29,180,167,44,73, | |||
| 239,172,0,236,237,143,32,105,23,1,55,170,84,29,144,110,17,64,3,156,60,167,129,11,86,205,2,157,192,43,246,190,251,39,222,97,205,218,146,241,254,53,188,38,242,254,163,61,63,137,134,164,188,186,238,242,78,0,68,2,162,248,254,35,61,63,230,181,242,191,186, | |||
| 129,47,128,122,203,110,56,98,217,169,216,126,105,10,140,80,250,179,239,179,159,32,165,225,34,76,73,111,127,52,254,8,114,178,145,128,92,19,1,81,242,92,59,99,73,45,76,43,47,80,236,61,157,97,27,75,252,147,187,238,79,209,23,105,161,111,219,196,131,131,7, | |||
| 44,173,249,118,205,113,249,120,163,117,189,109,218,49,124,208,250,60,173,247,148,11,141,4,208,40,128,39,226,84,108,191,180,203,22,65,201,247,190,9,241,96,56,165,199,3,179,253,17,36,3,69,64,14,85,7,208,146,191,186,105,165,176,102,65,181,162,239,75,147, | |||
| 178,29,33,11,121,30,203,235,248,71,187,196,6,221,145,241,253,15,119,255,26,226,249,119,189,229,165,0,160,161,168,125,15,118,221,30,13,73,110,185,101,129,2,167,5,107,96,156,92,128,27,20,221,183,130,207,95,147,232,18,232,243,167,196,96,98,182,63,130,100, | |||
| 166,8,232,200,145,217,1,180,228,175,164,64,7,23,156,50,83,209,199,0,141,194,190,63,185,141,149,104,203,118,186,140,2,52,60,55,112,135,115,216,103,207,199,107,141,203,215,155,204,210,229,30,110,121,101,248,215,186,66,249,81,0,122,225,237,159,120,27,26, | |||
| 172,123,21,221,183,146,31,255,39,8,11,235,212,143,4,168,109,252,177,183,63,130,200,22,1,133,42,86,7,164,74,4,28,47,108,186,112,213,44,40,52,104,21,123,95,119,196,1,27,251,30,34,158,63,207,74,180,101,57,113,122,14,172,61,238,61,13,207,41,216,225,13,5, | |||
| 64,246,112,248,241,222,251,93,163,254,38,185,249,0,244,194,227,53,28,108,236,125,144,37,6,42,118,82,74,75,160,236,127,111,1,141,65,79,211,102,85,51,254,234,133,253,247,66,7,246,246,71,144,164,249,112,78,64,246,85,7,68,201,243,235,140,197,181,48,187,186, | |||
| 72,209,247,125,185,111,61,171,196,162,145,88,153,15,111,224,4,46,122,224,161,238,155,163,193,44,159,165,140,2,64,30,33,79,52,114,240,225,238,155,5,61,47,123,245,71,224,116,96,9,154,152,26,85,18,237,202,37,80,114,243,255,133,120,56,172,124,127,0,85,179, | |||
| 253,137,241,223,92,143,217,254,8,162,80,36,64,237,217,1,85,37,234,136,0,186,238,191,112,70,25,172,93,84,163,236,51,198,178,19,14,78,190,3,198,36,66,255,250,2,1,58,223,26,187,191,127,143,185,33,159,175,47,46,223,111,176,174,119,199,119,13,238,183,60,154, | |||
| 204,82,0,189,16,15,78,188,3,135,205,219,21,221,183,130,235,174,132,130,207,95,11,113,175,95,97,207,95,205,108,255,122,92,243,71,16,213,68,128,10,203,1,103,38,34,1,17,5,69,64,84,138,65,101,177,1,46,88,53,83,209,99,65,19,254,94,234,253,43,240,156,0,114, | |||
| 31,50,196,243,135,128,51,50,176,255,161,238,59,243,253,218,202,123,1,64,231,4,236,250,99,219,207,130,174,136,73,110,135,64,122,33,210,11,242,165,222,7,193,30,154,84,116,255,74,110,185,9,244,23,156,77,68,128,47,249,239,26,142,96,182,63,130,100,187,8,80, | |||
| 169,58,160,154,137,128,228,151,28,69,98,252,11,244,90,248,228,105,115,192,160,19,20,61,14,47,244,62,0,142,176,5,4,141,252,124,2,173,129,131,3,15,119,255,208,59,25,244,160,0,64,192,57,226,183,29,125,170,255,182,100,162,0,244,130,116,69,108,240,108,207, | |||
| 125,228,102,85,46,100,175,209,233,152,193,54,92,124,46,196,61,222,68,203,96,57,15,16,127,0,184,242,82,40,191,231,231,152,237,143,32,217,44,2,44,199,68,128,194,145,128,171,207,170,131,89,85,197,172,85,175,220,85,71,42,32,78,204,33,40,49,40,250,253,119, | |||
| 140,189,202,50,255,141,124,161,124,227,111,228,97,172,193,241,124,235,107,195,175,227,21,133,2,224,4,77,47,14,189,96,106,116,188,170,77,162,77,48,109,16,212,108,61,192,134,82,40,137,166,168,16,202,239,190,3,138,190,245,101,58,64,27,226,129,224,73,231, | |||
| 5,80,175,159,182,24,214,159,125,26,84,109,184,155,253,84,220,248,99,111,127,4,73,125,36,64,225,229,0,58,152,231,42,34,2,78,91,88,195,62,135,46,9,156,172,16,160,165,126,244,223,207,169,41,129,79,159,179,0,106,202,140,138,126,239,17,111,47,188,218,255, | |||
| 40,155,199,34,219,216,241,26,136,134,36,203,174,123,219,111,141,199,240,90,66,1,240,1,196,136,4,59,255,208,254,3,49,28,179,201,95,10,0,208,243,70,216,50,248,4,12,120,58,148,221,65,65,128,226,255,190,17,42,30,188,11,244,231,158,145,16,2,62,63,107,29,204, | |||
| 26,249,208,208,29,221,162,34,196,67,225,196,223,145,159,218,69,117,80,118,231,109,80,241,215,187,128,159,59,75,97,227,255,193,108,127,180,254,8,146,30,17,160,92,117,128,192,105,96,221,242,233,112,237,217,243,97,254,180,18,118,91,71,162,18,91,211,167, | |||
| 70,62,22,63,182,145,223,211,80,63,53,250,244,239,202,139,12,112,241,234,217,112,245,153,117,172,230,95,73,232,152,223,167,187,255,0,33,41,192,202,254,228,66,27,191,29,121,162,255,86,75,151,123,2,175,162,99,231,27,15,193,223,49,119,186,70,143,60,217,255, | |||
| 147,115,191,187,228,177,176,87,222,120,94,58,139,58,34,133,225,169,174,123,224,199,167,221,15,5,66,177,162,251,168,59,117,37,84,144,45,218,209,11,225,125,135,32,210,218,5,210,132,133,24,251,196,67,128,214,245,115,213,149,160,93,186,0,244,231,156,14,250, | |||
| 211,87,179,164,63,165,57,145,237,143,97,127,4,73,179,8,104,133,191,93,191,10,102,148,232,21,123,255,233,21,5,100,155,7,118,34,46,134,45,94,152,116,248,193,19,136,48,99,79,195,2,28,17,10,116,157,191,178,212,0,115,170,139,97,54,217,120,78,157,7,193,43, | |||
| 253,143,64,191,187,131,60,75,229,151,18,210,134,63,99,13,142,205,245,207,244,63,131,87,15,10,128,143,165,254,233,190,199,235,206,173,190,118,218,138,178,79,71,131,242,18,98,232,196,192,81,111,31,188,216,251,87,248,230,178,159,170,178,159,218,229,139, | |||
| 216,198,30,6,212,227,103,229,130,84,0,8,160,41,44,80,245,24,97,111,127,4,201,188,72,128,210,34,128,66,215,241,19,107,249,213,44,2,112,188,92,144,227,64,209,129,62,31,7,173,172,218,49,246,10,24,5,249,235,254,26,94,3,98,72,180,236,252,67,219,247,164,40, | |||
| 198,254,63,228,176,226,33,248,48,98,36,70,151,2,190,151,236,82,0,189,96,247,143,111,133,221,227,91,84,223,103,218,48,136,54,15,226,202,74,82,96,252,247,98,182,63,130,100,168,8,80,178,58,224,31,161,30,190,129,124,22,221,82,97,252,39,2,35,240,124,207,253, | |||
| 228,115,181,178,187,253,49,135,172,64,128,195,79,244,221,98,233,118,143,225,21,131,2,224,223,98,238,112,141,29,121,178,239,7,218,130,100,2,36,26,208,242,122,216,216,251,144,242,249,0,105,34,145,237,143,97,127,4,201,88,17,160,112,117,64,186,8,75,33,120, | |||
| 162,243,247,224,139,186,65,208,200,127,14,83,227,111,106,114,188,80,255,204,192,179,120,165,160,0,56,105,14,63,222,251,220,224,62,243,179,201,148,6,210,132,149,72,44,124,226,66,206,122,227,143,189,253,17,36,59,34,1,89,46,2,54,246,61,8,189,174,22,150, | |||
| 84,45,219,184,9,28,157,244,55,186,237,174,150,31,96,232,31,5,192,212,110,40,114,71,237,250,99,251,15,66,158,232,16,29,25,41,91,129,114,122,48,249,6,225,233,238,123,21,237,15,144,90,227,191,151,213,249,99,216,31,65,178,41,18,16,202,202,239,177,119,252, | |||
| 13,216,101,218,156,212,186,63,133,150,116,31,120,168,235,59,246,126,175,5,175,14,20,0,83,198,57,226,183,239,190,183,253,38,65,199,199,146,49,124,244,66,62,98,222,1,111,14,61,149,149,198,159,102,251,163,231,143,32,89,36,2,88,179,160,86,48,101,89,36,160, | |||
| 207,221,198,146,167,169,227,148,204,186,191,190,88,11,29,111,142,221,215,242,202,200,91,120,85,160,0,144,13,185,136,182,117,189,99,250,189,190,40,185,81,150,116,94,192,235,131,79,66,131,117,79,118,121,254,88,234,135,32,89,43,2,254,227,229,86,176,248, | |||
| 35,89,177,223,174,176,13,254,214,241,91,136,198,194,192,37,81,239,47,232,121,234,188,213,239,189,191,243,103,120,53,160,0,72,154,157,247,180,253,175,173,207,187,95,48,200,191,40,53,228,80,107,52,28,60,221,245,71,24,243,245,103,252,119,110,125,249,8,51, | |||
| 254,186,2,236,240,135,32,217,40,2,138,136,8,104,157,244,192,247,183,116,64,40,195,39,222,70,99,17,120,188,243,183,96,14,140,129,150,147,95,202,168,225,52,180,121,145,111,251,111,91,190,225,183,133,130,120,37,160,0,72,154,144,39,26,125,239,215,205,223, | |||
| 136,137,49,135,38,137,210,64,58,47,192,39,122,224,209,142,95,131,55,234,202,216,239,59,209,58,10,77,47,30,2,45,107,239,139,214,31,65,178,149,98,189,0,187,7,29,240,199,189,131,25,189,159,47,245,61,8,109,246,195,96,16,146,43,99,214,23,9,112,228,169,254, | |||
| 91,70,14,219,218,240,236,163,0,80,208,40,58,251,14,61,214,251,93,93,65,114,189,147,244,156,1,70,125,253,240,183,142,223,129,20,23,51,238,123,74,17,17,234,159,218,199,166,36,106,56,52,254,8,146,11,34,224,241,250,49,104,24,207,204,225,119,219,70,55,178, | |||
| 65,63,201,38,253,209,138,173,161,131,214,167,223,127,164,231,17,60,235,40,0,20,231,200,147,125,47,246,238,152,120,32,153,210,64,10,157,102,213,100,219,207,198,7,103,26,131,123,187,193,222,103,6,65,143,77,34,17,36,39,30,242,68,199,135,197,24,252,245,253, | |||
| 225,140,219,183,102,242,28,220,212,191,158,56,70,201,37,253,241,90,14,124,214,80,251,123,119,181,96,183,63,20,0,234,64,39,72,189,123,103,243,143,236,3,190,131,201,228,3,48,17,64,212,238,182,177,77,240,222,232,75,153,243,253,164,24,244,110,107,7,142,231, | |||
| 241,100,35,72,14,81,160,229,97,239,160,19,186,172,254,140,217,39,58,225,239,111,157,191,103,9,11,201,36,253,209,72,37,39,112,254,237,191,107,253,170,199,20,240,224,217,70,1,160,26,97,111,52,252,222,175,155,191,34,69,98,214,100,90,5,83,181,75,151,3,54, | |||
| 245,173,135,122,235,238,140,248,110,206,17,59,56,134,108,192,235,208,251,71,144,92,139,2,248,34,34,108,235,179,101,196,254,56,66,22,88,223,254,75,8,136,94,16,184,228,42,172,104,68,246,224,134,238,239,13,236,49,55,226,153,70,1,160,58,19,173,206,129,125, | |||
| 127,233,252,166,96,224,227,201,228,200,81,213,75,43,3,158,236,188,27,122,221,173,105,255,94,214,158,73,16,67,81,204,250,71,144,28,132,142,250,61,58,150,254,142,164,65,209,15,27,218,239,4,115,96,20,116,156,252,78,127,52,114,64,235,253,123,119,76,60,120, | |||
| 232,241,222,39,240,12,163,0,72,25,77,47,13,189,217,242,202,240,255,232,146,236,15,64,251,92,211,190,215,27,218,126,201,134,95,164,19,247,152,3,79,44,130,228,176,0,24,243,132,210,90,18,72,19,159,105,185,31,109,243,107,224,11,18,86,92,38,218,2,30,108,253, | |||
| 222,125,59,126,223,118,75,150,54,89,69,1,144,205,236,190,183,227,215,163,71,237,155,244,73,38,5,210,186,87,218,4,227,225,214,255,97,63,211,69,216,19,196,204,127,4,201,213,135,189,70,3,254,136,4,193,168,148,182,125,120,182,251,62,168,183,236,78,58,227, | |||
| 159,23,56,136,248,37,211,187,191,108,250,178,223,22,10,227,217,69,1,144,114,196,176,4,239,252,162,233,91,238,137,96,179,160,79,230,80,198,217,208,11,147,127,16,30,110,251,5,4,68,95,90,190,79,28,147,103,17,36,167,137,39,229,115,39,199,171,3,143,192,110, | |||
| 211,102,40,16,138,146,122,31,186,236,202,235,184,200,206,63,180,253,159,201,118,215,40,158,85,20,0,105,195,51,17,112,191,251,171,230,47,74,209,184,45,153,161,65,20,26,18,163,161,177,71,219,127,197,166,8,166,26,193,40,64,60,142,177,52,4,201,73,227,31, | |||
| 167,209,70,13,232,210,16,229,123,103,228,69,120,115,232,25,48,36,233,249,179,231,100,137,142,54,251,249,126,231,91,99,187,241,172,162,0,72,59,163,71,108,93,251,254,210,249,53,94,203,75,201,54,206,163,161,177,38,219,1,54,66,56,22,79,109,168,174,168,166, | |||
| 20,112,45,13,65,114,19,137,40,128,234,66,29,20,166,184,199,199,158,241,55,224,229,190,135,137,240,48,36,85,235,207,140,63,29,242,179,117,236,190,131,235,187,215,227,25,69,1,144,49,52,189,52,180,181,225,249,129,155,13,165,186,164,223,139,134,200,222,159, | |||
| 124,15,158,233,254,19,164,210,34,87,45,172,5,13,143,151,4,130,228,34,81,41,6,43,107,139,83,90,228,115,216,188,13,158,35,207,49,158,211,2,167,73,238,217,66,199,251,78,116,184,222,216,241,251,214,219,176,217,15,10,128,140,99,223,95,187,30,104,127,125,244, | |||
| 207,180,31,181,18,34,128,206,196,166,163,49,83,69,245,226,90,40,170,46,134,152,136,55,23,130,228,26,60,199,193,69,11,42,83,246,121,116,242,233,19,93,247,176,82,103,94,147,92,115,49,58,225,47,232,138,180,188,249,211,250,175,134,220,105,204,98,68,1,128, | |||
| 124,28,49,162,74,183,255,182,245,150,201,118,215,230,100,103,6,80,232,114,192,187,35,47,178,65,25,169,128,142,253,157,123,206,66,16,195,81,60,153,8,146,67,208,210,191,101,213,133,112,206,156,178,148,124,30,29,236,243,88,199,93,16,139,199,136,241,79,238, | |||
| 89,72,219,252,70,2,226,196,27,63,173,191,222,109,10,184,240,108,162,0,200,88,200,133,26,219,114,219,209,175,186,70,253,135,105,200,42,25,232,122,25,77,154,121,103,248,5,216,60,240,120,74,246,127,233,149,171,193,88,94,8,49,9,163,0,8,146,51,207,37,114, | |||
| 63,127,235,204,217,228,121,162,254,35,191,205,113,24,214,183,255,2,164,152,200,250,156,36,245,12,228,52,52,227,63,176,231,190,142,207,155,26,29,125,120,38,81,0,100,60,62,107,200,251,206,157,205,55,132,189,209,1,170,94,147,23,1,5,176,101,240,137,148,136, | |||
| 128,194,234,98,88,245,185,51,18,29,1,17,4,201,122,188,97,9,46,93,88,5,215,173,168,77,137,231,191,190,245,23,16,149,34,73,183,248,165,9,213,196,137,138,239,188,167,237,27,237,175,143,238,195,51,137,2,32,107,24,111,118,140,190,241,211,250,235,136,253,182, | |||
| 39,51,51,224,67,34,96,40,53,34,96,217,149,171,97,193,249,75,33,226,199,254,26,8,146,173,208,167,78,32,42,193,156,50,3,220,117,217,98,224,53,234,166,255,29,247,252,163,177,228,141,63,133,182,249,109,121,121,248,135,77,47,13,109,196,179,137,2,32,235,24, | |||
| 61,106,111,222,125,111,251,231,121,29,31,212,40,33,2,248,2,120,125,232,73,216,212,247,176,202,79,14,13,156,253,159,151,192,172,181,117,40,2,16,36,75,241,19,227,95,83,168,131,245,159,89,9,179,74,13,42,123,254,135,96,125,219,47,21,241,252,41,116,192,15, | |||
| 49,254,119,237,184,187,237,126,60,147,40,0,178,150,230,77,195,59,118,254,161,237,27,188,150,139,37,219,102,151,77,16,228,141,176,117,248,89,213,171,3,180,70,45,92,248,163,79,193,194,139,150,65,36,16,134,120,12,27,4,32,72,182,64,195,254,75,170,10,225, | |||
| 169,207,175,134,85,211,139,85,253,44,154,237,255,80,219,255,18,207,63,172,152,231,63,124,200,246,200,182,187,90,254,31,62,119,80,0,100,191,8,216,56,244,82,253,51,3,223,165,77,44,146,45,194,61,158,24,248,238,200,11,240,116,247,31,33,14,234,37,235,9,6, | |||
| 45,124,226,7,151,195,25,95,63,143,117,8,148,34,88,125,131,32,153,76,140,220,167,158,176,8,87,47,173,134,23,190,116,42,44,175,41,82,245,243,14,153,183,193,163,29,191,97,67,126,4,141,50,158,255,120,179,99,211,219,255,211,248,159,216,148,20,5,64,206,176, | |||
| 255,161,174,245,205,155,134,126,202,68,64,146,28,23,1,187,198,94,131,199,59,126,11,98,44,162,234,190,175,248,204,90,184,248,167,215,64,65,101,17,68,131,17,60,153,8,146,97,80,191,34,44,198,128,22,239,220,126,193,2,88,255,217,149,80,89,160,85,245,51,247, | |||
| 140,191,14,127,235,248,29,113,14,98,202,24,255,2,129,142,90,127,119,243,173,71,190,22,112,132,209,219,64,1,144,59,196,165,56,108,187,171,245,247,45,47,15,255,198,80,162,76,36,192,40,20,193,254,137,183,217,218,91,72,10,168,186,255,51,214,204,129,203,127, | |||
| 117,253,137,188,0,12,205,33,72,230,224,33,246,114,122,137,30,30,189,254,20,248,239,117,115,85,255,188,119,70,94,128,103,186,238,101,221,253,146,173,243,63,110,252,29,67,190,3,91,110,61,250,185,160,51,18,196,51,138,2,32,247,68,64,156,137,128,59,90,94, | |||
| 25,254,179,18,141,130,40,180,99,96,131,117,47,252,165,229,103,224,137,56,84,221,127,218,37,240,226,219,175,129,83,191,116,14,19,0,82,68,196,147,138,32,105,68,138,197,153,241,191,124,113,21,108,250,242,169,112,209,252,10,213,63,243,149,129,71,96,99,223, | |||
| 67,32,112,58,34,0,248,164,223,143,118,249,11,56,195,245,239,252,162,233,51,228,167,7,207,42,10,128,220,22,1,191,105,249,225,240,251,214,13,74,44,7,80,104,199,192,46,103,35,252,169,249,199,96,14,142,169,186,255,52,145,113,245,23,206,34,66,224,106,40,174, | |||
| 45,133,72,0,151,4,16,36,29,4,163,49,208,104,52,240,255,46,156,15,143,17,207,127,70,137,186,153,254,116,157,255,169,174,63,192,27,131,79,177,100,228,100,123,251,31,55,254,33,79,164,117,243,173,71,62,61,217,225,178,226,89,69,1,144,7,34,0,224,237,255,109, | |||
| 250,142,169,217,241,152,174,72,153,72,0,45,17,28,245,246,193,125,141,183,193,160,167,83,245,239,48,99,205,92,184,252,215,55,192,130,243,151,64,52,24,197,249,1,8,146,194,231,7,77,244,91,82,93,8,207,124,97,53,252,215,57,115,85,31,240,19,20,125,240,112, | |||
| 219,47,216,124,18,26,117,212,40,240,137,204,248,187,35,237,196,248,127,106,178,205,101,194,51,139,2,32,111,8,56,194,113,114,225,127,107,162,197,249,24,205,124,85,74,4,216,195,22,248,115,243,79,160,217,118,64,245,239,96,44,43,128,243,110,190,2,214,125, | |||
| 247,18,208,21,234,48,65,16,65,84,38,44,197,32,68,182,111,172,157,197,66,254,103,206,42,85,253,51,237,33,51,121,166,252,20,26,44,187,153,241,87,130,99,158,127,223,230,219,142,92,75,140,255,24,158,89,20,0,121,71,208,25,1,34,2,110,154,104,117,62,166,47, | |||
| 82,98,57,32,14,58,78,15,33,49,192,212,250,110,211,150,148,124,143,69,151,174,128,203,127,117,3,204,60,117,30,68,3,17,156,35,128,32,74,123,253,64,107,251,69,152,81,108,128,245,159,89,193,58,251,149,24,4,213,63,119,216,219,13,127,106,186,21,250,220,173, | |||
| 44,233,88,17,227,111,96,158,127,31,121,246,93,73,140,255,0,158,93,20,0,249,44,2,226,91,110,61,122,211,120,139,67,33,17,0,172,25,7,13,208,61,211,125,47,188,220,191,158,60,60,212,207,216,47,157,89,14,151,222,241,105,56,227,155,231,131,160,19,216,178,0, | |||
| 130,32,201,67,7,249,208,245,254,207,175,154,14,175,126,229,52,184,98,113,117,74,62,183,201,182,15,238,107,250,17,88,130,38,48,240,133,202,121,254,238,72,219,230,219,142,94,65,140,63,14,247,65,1,128,4,156,97,34,2,142,220,52,214,104,87,44,39,128,102,231, | |||
| 234,120,3,188,53,244,12,108,104,187,19,2,162,79,253,47,66,84,199,242,107,79,133,203,239,188,30,102,174,153,131,209,0,4,73,198,235,143,39,188,254,233,197,122,248,235,181,203,225,79,87,45,131,154,34,93,74,62,251,189,209,151,224,225,182,95,66,80,12,128, | |||
| 142,51,28,139,65,40,96,252,19,9,127,196,243,119,246,227,25,70,1,128,156,16,1,145,248,43,223,123,255,91,109,175,141,254,89,169,234,128,227,189,2,14,155,183,49,37,111,14,140,166,228,187,148,207,171,130,75,127,254,105,56,235,166,11,65,87,160,99,66,0,176, | |||
| 109,0,130,156,52,33,49,198,214,251,255,207,154,153,240,234,87,215,194,53,203,106,82,242,185,98,44,10,207,246,252,137,181,26,231,200,243,67,137,214,190,20,109,129,64,141,255,209,99,9,127,184,230,143,2,0,249,167,155,47,28,131,109,191,105,254,97,203,43, | |||
| 195,191,99,205,130,20,130,138,0,90,25,240,135,198,91,216,208,142,148,160,209,192,210,79,173,134,43,126,243,57,152,119,238,98,16,35,81,144,162,216,220,11,65,254,21,137,186,126,17,22,87,21,178,210,190,187,175,92,194,6,250,164,2,71,216,10,247,55,255,20, | |||
| 182,143,190,114,172,204,143,87,228,125,89,147,159,65,239,62,52,254,40,0,144,127,3,13,251,189,119,87,203,237,68,4,252,92,137,217,1,199,161,55,52,109,20,244,215,214,59,88,120,47,85,148,76,47,131,11,110,187,18,46,184,229,74,40,158,86,138,93,4,17,228,163, | |||
| 238,123,178,249,35,18,104,121,14,110,62,183,14,94,249,202,105,112,201,130,202,148,125,126,175,171,5,254,216,120,51,116,56,143,42,86,230,199,140,127,161,0,19,109,206,119,55,126,231,224,213,196,248,99,157,127,134,33,224,33,200,204,167,193,182,223,180,252, | |||
| 154,136,1,247,170,235,230,222,31,241,139,138,24,77,45,167,131,88,92,130,23,122,255,2,38,223,32,124,113,209,247,216,76,129,84,48,119,221,34,152,182,106,54,180,191,90,15,93,239,180,178,101,1,58,113,16,65,242,29,218,195,95,36,55,251,165,11,171,224,182,243, | |||
| 234,96,69,109,81,74,63,159,86,11,209,206,126,116,154,31,45,37,86,10,58,213,143,14,246,161,189,253,177,189,47,10,0,100,138,145,0,34,2,30,112,12,120,29,231,255,112,249,99,98,36,166,167,243,4,146,133,134,245,140,124,33,236,25,127,3,76,254,65,248,198,178, | |||
| 31,195,204,194,249,41,249,78,250,34,3,156,246,213,115,97,238,185,139,160,249,133,67,48,86,63,200,58,11,242,58,188,12,145,252,67,36,162,62,16,149,88,67,159,31,174,171,131,79,47,175,73,233,231,135,165,32,188,212,247,32,19,0,90,78,207,54,69,208,36,194,254, | |||
| 195,7,45,27,182,254,188,233,187,196,248,227,218,95,134,130,75,0,25,78,195,243,131,207,238,252,67,251,117,130,158,119,241,130,114,167,139,134,249,134,60,93,240,199,134,155,225,176,121,123,74,191,83,229,252,26,184,248,103,215,192,249,183,94,9,101,179,43, | |||
| 33,26,8,99,39,65,36,111,136,29,203,238,47,212,241,240,163,243,231,195,230,175,174,77,185,241,31,39,226,255,222,166,219,96,231,216,107,108,121,144,87,104,189,95,67,140,63,93,186,108,123,109,228,174,87,126,112,248,219,1,39,78,245,195,8,0,146,20,205,27, | |||
| 135,222,242,154,131,87,92,118,199,234,141,250,18,237,108,49,164,204,61,69,111,252,160,228,135,71,219,127,13,3,158,78,184,126,193,77,202,121,1,39,193,188,117,139,96,214,105,243,160,251,237,22,232,120,179,9,2,54,47,8,6,29,139,10,32,72,174,65,227,119,1, | |||
| 226,12,235,137,144,255,194,170,25,108,106,95,93,185,49,229,251,241,190,249,61,120,177,231,175,224,139,186,20,235,236,199,140,63,185,111,181,70,62,222,180,113,248,230,29,191,107,249,115,28,83,125,80,0,32,202,48,176,199,124,232,245,159,28,189,232,83,191, | |||
| 62,109,83,97,165,126,77,84,33,17,192,107,180,192,241,2,188,59,242,34,235,250,245,149,197,55,195,204,162,249,169,187,0,13,90,88,241,153,181,48,239,19,139,161,227,245,70,232,219,209,1,17,95,24,4,163,150,13,58,65,144,92,128,54,242,161,92,180,160,18,254, | |||
| 251,156,185,112,70,10,90,248,254,35,52,228,255,114,255,6,230,245,243,156,192,28,0,165,224,181,28,221,252,59,239,105,187,177,233,165,161,151,240,140,103,7,184,4,144,69,152,26,29,253,47,126,107,255,165,214,94,207,219,74,150,9,210,140,95,234,9,244,185,90, | |||
| 225,15,141,55,195,190,137,183,82,254,221,10,171,138,89,23,193,43,127,243,57,88,120,209,50,230,46,177,110,130,232,70,32,89,12,173,231,167,217,253,167,205,44,129,71,174,91,9,79,125,110,85,90,140,255,144,183,139,221,219,219,70,55,129,142,215,131,160,81, | |||
| 206,247,163,13,126,196,144,100,122,239,55,205,87,162,241,71,1,128,168,136,103,34,104,223,124,203,145,79,15,236,53,111,160,173,131,149,116,146,169,71,16,146,2,240,68,231,221,240,120,231,111,193,27,117,165,252,251,149,205,169,132,115,191,127,25,92,246, | |||
| 203,235,96,238,217,11,32,38,197,201,195,37,138,141,132,144,172,130,102,246,123,195,18,44,175,41,130,63,95,179,140,13,238,185,108,81,85,90,246,133,26,253,123,27,111,133,33,79,183,162,37,126,20,173,129,117,247,107,220,114,219,145,139,219,54,143,238,197, | |||
| 51,159,93,224,18,64,22,226,179,134,34,175,221,114,228,219,151,252,244,148,193,149,215,206,249,173,68,60,140,152,164,140,133,228,137,103,192,243,60,236,31,223,10,3,238,14,248,226,162,255,134,149,149,103,166,252,59,86,47,158,6,23,254,248,42,48,119,152, | |||
| 160,125,115,3,152,26,135,89,91,97,173,94,0,192,165,1,36,131,61,126,154,221,79,13,255,55,215,206,130,235,86,214,18,97,157,30,63,203,30,154,132,23,123,255,2,245,214,61,172,157,175,158,55,40,250,254,180,204,207,220,238,218,242,214,29,13,223,112,142,248, | |||
| 157,120,246,81,0,32,41,130,150,4,110,251,77,203,239,156,195,190,254,79,252,215,178,71,52,92,188,84,138,42,149,73,79,91,8,23,130,53,56,14,127,105,253,25,92,50,235,122,184,182,238,27,138,174,25,158,44,181,203,103,178,109,178,109,12,58,223,106,6,83,195, | |||
| 16,72,145,40,8,122,45,38,11,34,25,101,248,105,23,191,149,211,138,225,171,167,206,128,207,46,159,6,70,109,250,2,172,135,204,219,96,83,223,122,112,134,45,172,236,87,73,88,166,127,137,14,58,182,142,221,183,235,158,182,219,2,88,230,135,2,0,73,15,245,207, | |||
| 12,108,116,12,250,6,47,251,249,234,103,140,101,186,37,74,37,7,82,104,227,160,56,196,224,237,225,231,160,203,217,0,95,88,244,61,88,92,182,58,45,223,115,218,202,89,108,51,119,142,67,247,214,102,24,171,31,98,205,132,4,131,64,132,0,174,100,33,105,16,225, | |||
| 113,128,160,152,184,223,78,155,81,202,12,63,237,217,175,227,211,119,61,186,194,54,120,165,127,3,28,156,124,143,149,246,41,217,216,135,194,9,28,240,58,46,124,232,241,222,31,238,251,107,215,195,216,213,19,5,0,146,102,6,247,91,142,190,120,211,129,11,174, | |||
| 249,253,218,191,85,47,41,189,50,236,83,110,205,92,3,28,155,37,48,234,235,131,63,55,255,24,46,153,117,3,92,53,239,43,105,137,6,176,136,192,178,25,108,115,12,88,161,251,221,86,24,121,191,31,130,110,63,8,58,45,123,56,33,136,218,72,196,242,211,172,126,26, | |||
| 218,63,191,174,2,190,186,102,38,92,186,176,18,248,52,71,164,14,91,118,192,43,125,27,88,228,206,32,20,40,186,214,207,28,2,35,15,17,191,56,178,253,119,45,223,232,120,99,108,39,94,9,40,0,144,12,193,53,234,55,111,250,238,251,215,92,120,219,138,223,45,189, | |||
| 124,230,109,180,87,128,82,121,1,20,186,134,24,139,199,224,141,161,167,160,221,113,4,110,88,248,29,88,86,126,90,218,190,111,197,252,106,56,231,59,23,195,202,207,172,133,254,157,157,48,176,183,27,188,19,174,132,135,162,21,0,112,117,0,81,152,40,185,159, | |||
| 66,196,227,47,51,106,225,138,197,213,240,21,98,248,207,154,93,154,246,253,114,132,204,196,235,127,4,14,89,182,3,79,126,25,85,104,239,77,215,251,109,253,222,221,219,126,221,252,245,241,22,231,48,94,13,40,0,144,12,35,232,138,72,91,239,104,252,145,189,207, | |||
| 219,124,246,77,139,255,194,243,154,82,41,162,92,135,61,78,195,177,44,226,68,52,224,39,112,193,204,107,224,154,121,95,131,34,109,89,218,190,51,29,48,180,230,75,103,195,242,107,214,192,208,129,94,38,6,108,125,22,34,126,36,204,19,64,146,134,134,249,143, | |||
| 175,239,207,45,55,192,213,75,107,224,115,167,76,135,133,149,5,25,177,127,123,199,223,132,45,131,79,48,17,160,134,215,79,239,31,218,214,183,111,231,228,95,119,220,221,122,171,207,18,10,227,85,129,2,0,201,96,14,63,209,247,140,109,192,219,126,233,237,171, | |||
| 254,86,88,165,95,77,135,9,41,137,142,211,179,220,128,109,35,155,160,221,126,24,62,61,255,70,56,163,230,226,180,126,103,93,145,1,22,95,118,10,44,186,116,37,76,180,140,66,255,174,78,24,111,26,134,144,59,8,156,150,248,69,90,62,63,47,6,77,90,94,154,245,208, | |||
| 76,254,96,84,34,70,149,103,117,251,55,172,156,198,188,254,50,99,102,60,50,169,8,127,149,120,253,45,246,247,65,224,116,170,120,253,188,142,3,142,215,120,15,172,239,254,225,161,199,122,30,143,99,183,110,20,0,72,118,48,176,199,220,184,113,232,192,5,151, | |||
| 220,190,234,254,57,103,86,125,77,169,137,130,127,55,14,28,123,232,216,130,19,176,161,237,78,56,90,189,11,62,51,255,63,96,122,225,220,244,218,59,226,177,204,88,51,135,109,222,73,55,139,10,12,147,205,57,108,99,101,132,130,78,0,13,159,39,185,2,196,125,165, | |||
| 3,152,228,82,162,23,242,170,226,146,222,30,97,81,2,186,114,54,163,88,15,151,18,79,255,51,43,106,225,204,89,165,25,179,143,180,79,199,59,35,47,192,246,209,151,33,32,250,20,79,242,59,33,168,11,5,32,222,126,203,206,63,180,221,72,188,255,122,124,162,162, | |||
| 0,64,178,12,231,136,223,253,234,15,14,125,125,221,119,150,28,90,251,229,249,247,196,98,241,2,37,151,4,216,5,68,188,15,1,226,80,111,221,13,93,174,70,184,116,246,13,240,201,217,159,83,237,193,52,21,232,242,192,41,215,157,14,43,174,61,149,69,5,134,246,245, | |||
| 194,120,243,48,4,28,126,34,2,52,44,87,32,167,151,8,136,33,43,154,38,223,120,213,18,35,104,16,56,22,6,207,85,33,64,37,113,68,140,65,132,136,195,34,34,120,214,205,45,135,107,151,213,178,164,190,234,66,93,70,237,107,3,185,199,104,184,127,212,219,199,146, | |||
| 112,213,184,199,232,253,160,47,18,96,232,160,245,201,237,191,107,253,129,107,212,239,198,39,41,10,0,36,75,161,6,127,239,253,157,15,78,182,187,234,47,188,121,197,250,162,90,131,226,75,2,52,30,64,31,70,81,41,12,175,245,63,10,245,150,221,112,205,188,175, | |||
| 195,218,154,11,50,226,24,112,2,15,51,79,155,199,182,128,221,199,74,8,135,15,246,129,173,119,18,34,254,48,75,28,164,203,4,185,54,123,128,126,167,202,186,106,217,175,159,87,110,132,154,34,61,76,120,195,160,205,161,99,67,141,62,77,232,163,222,190,142,156, | |||
| 251,197,213,133,240,201,133,85,112,229,146,106,88,81,83,148,113,251,59,234,235,135,215,137,225,111,178,238,35,215,104,162,42,71,13,88,200,159,211,120,15,61,222,123,219,193,13,61,27,148,118,22,16,20,0,72,154,232,221,62,113,104,178,205,121,254,197,63,57, | |||
| 229,158,5,23,76,251,191,209,128,168,104,149,0,51,56,26,158,61,156,38,252,195,240,112,251,47,96,213,228,57,44,73,112,94,201,210,140,57,14,5,149,69,176,248,178,149,108,115,141,218,97,244,200,32,17,4,131,172,172,48,26,140,228,140,24,160,227,149,139,170, | |||
| 139,161,124,158,124,1,80,164,227,225,212,233,37,48,228,52,131,86,151,221,57,20,39,140,62,237,38,73,188,220,185,101,70,184,96,126,5,92,177,168,10,78,159,85,154,214,218,253,143,195,19,113,194,123,163,47,193,110,211,150,99,225,126,35,168,149,153,65,179, | |||
| 252,157,35,190,195,59,239,110,251,54,241,254,155,240,137,137,2,0,201,49,188,230,144,103,243,45,71,190,125,214,127,44,218,117,198,215,23,222,167,53,242,53,209,160,242,77,188,104,3,33,250,200,109,182,237,135,110,103,3,172,155,126,37,92,62,231,139,80,105, | |||
| 168,205,168,227,81,54,187,146,109,116,153,192,222,111,97,93,6,105,203,97,154,47,64,155,12,209,92,1,154,60,152,141,203,4,98,88,132,89,107,235,64,107,76,110,104,20,157,83,255,90,135,57,59,141,62,177,250,52,180,79,55,106,224,231,150,27,97,221,156,114,214, | |||
| 147,159,26,253,162,12,21,53,98,44,10,123,39,222,100,19,58,45,1,147,106,225,126,38,218,137,224,165,253,252,59,223,28,187,119,239,3,157,63,247,89,67,1,124,82,162,0,64,114,152,67,143,245,62,63,114,216,118,248,194,91,87,60,48,99,85,249,149,97,175,72,30,150, | |||
| 74,119,244,74,44,11,208,222,1,52,97,169,193,178,7,46,158,245,89,184,112,214,103,20,157,65,174,20,149,11,106,216,182,234,115,103,130,99,200,6,19,45,35,48,78,196,128,99,208,10,33,79,144,125,31,42,6,56,234,41,102,184,30,160,201,158,250,34,61,44,190,252, | |||
| 148,164,223,235,130,186,10,56,117,70,9,52,79,120,192,152,5,149,20,180,92,143,122,249,244,103,161,78,128,165,53,69,112,238,220,114,184,136,120,251,107,166,151,144,63,203,236,239,208,96,221,3,91,135,159,99,115,56,180,42,101,247,31,135,150,247,5,221,145, | |||
| 161,189,127,238,248,126,211,198,161,215,241,201,152,127,104,226,105,26,183,26,137,68,96,201,146,37,48,52,52,132,103,33,77,208,100,159,117,223,89,114,203,170,235,230,253,138,78,4,22,195,234,181,244,150,226,34,241,196,194,48,163,112,46,92,58,251,115,176, | |||
| 110,250,229,228,1,167,207,130,168,137,27,44,29,227,48,78,4,129,173,199,12,126,155,7,232,240,37,22,29,32,222,83,38,86,20,68,124,97,88,249,217,181,112,250,55,206,83,228,253,118,15,58,224,107,27,91,88,231,187,76,11,134,196,200,243,139,134,246,169,151,79, | |||
| 59,241,85,21,232,96,101,109,17,75,230,163,134,159,10,0,109,22,68,112,104,171,109,106,248,59,28,245,108,249,73,167,226,189,193,241,26,208,18,227,111,106,180,63,183,243,158,182,91,45,221,158,73,124,26,166,143,13,27,54,192,77,55,221,132,2,0,73,15,243,214, | |||
| 213,156,122,254,15,150,61,80,181,176,228,220,136,79,141,104,192,223,161,225,205,104,60,2,243,138,151,194,101,115,62,199,250,7,208,220,129,108,128,46,11,56,134,172,108,48,17,157,73,224,26,177,179,62,3,113,98,124,50,69,16,68,67,81,150,248,119,217,157,215, | |||
| 17,15,79,57,35,242,203,237,125,240,208,161,17,40,51,164,55,104,120,220,224,71,143,149,180,210,82,197,186,10,35,235,197,127,206,156,50,22,173,152,94,172,207,154,123,143,122,250,239,142,190,8,77,214,253,76,36,39,38,246,169,39,88,104,59,223,104,72,154,60, | |||
| 250,84,255,79,142,60,217,255,20,205,21,65,80,0,160,0,200,247,104,64,177,86,183,238,255,46,254,241,170,235,231,254,140,184,32,70,53,163,1,204,80,197,194,108,121,96,126,233,10,184,116,246,245,176,182,250,66,214,105,48,155,160,21,5,116,137,128,138,1,123, | |||
| 159,25,220,99,78,8,121,2,32,145,135,42,71,188,78,238,152,32,72,85,66,161,72,140,127,97,117,49,92,122,199,167,161,116,86,133,178,247,43,17,57,255,181,185,3,222,232,178,64,105,138,68,0,125,52,73,199,12,190,24,35,199,148,28,71,250,217,115,202,140,112,202, | |||
| 180,98,214,160,135,134,245,235,202,141,105,239,195,63,85,70,188,61,196,240,191,196,150,198,34,228,94,160,235,252,26,21,13,255,9,175,191,193,254,202,238,251,58,110,157,108,119,225,131,23,5,0,10,0,228,159,162,1,167,159,255,253,101,127,172,90,84,114,190, | |||
| 210,205,131,62,242,58,32,15,191,248,9,33,112,3,17,2,231,103,77,68,224,159,4,129,195,207,162,2,54,34,6,236,3,22,112,143,58,200,159,249,152,87,78,187,204,208,222,3,52,135,128,78,47,84,52,177,144,38,187,5,195,80,54,171,18,46,184,237,83,80,62,183,82,149, | |||
| 239,71,59,227,221,250,86,23,188,218,110,102,9,116,74,26,221,227,198,158,118,224,163,27,253,127,131,150,131,170,2,45,204,43,47,96,97,125,234,221,175,168,45,134,57,165,134,172,51,248,31,52,252,219,198,18,57,49,180,169,143,218,134,63,225,245,11,228,26,20, | |||
| 39,234,159,238,255,201,225,39,250,159,70,175,31,5,0,10,0,228,95,69,3,248,117,223,94,124,243,170,235,230,222,65,172,113,169,24,82,127,220,247,7,133,0,77,22,92,91,125,1,8,156,54,171,143,35,245,200,125,22,15,56,137,40,160,101,134,180,236,144,118,39,12,186, | |||
| 252,16,13,70,217,210,1,125,246,127,80,20,76,73,24,144,91,87,140,136,204,122,206,57,123,33,156,245,173,11,192,88,94,168,234,119,162,79,139,251,15,12,195,67,135,134,193,75,174,139,2,29,7,252,20,34,28,84,79,210,48,190,116,204,208,211,223,83,207,222,72,140, | |||
| 125,185,81,203,188,251,69,149,133,176,172,166,136,108,133,196,187,47,128,202,2,109,214,223,83,253,158,118,150,12,219,98,59,64,12,127,16,244,156,129,213,244,171,9,39,104,64,208,243,96,106,114,60,179,231,79,29,183,79,118,184,198,240,233,134,2,0,5,0,114, | |||
| 82,204,60,181,114,217,39,190,183,244,247,51,215,84,92,163,70,223,128,143,19,2,177,184,4,115,139,23,195,5,51,175,101,57,2,106,102,66,167,26,26,13,8,218,125,224,153,116,129,107,196,1,158,113,39,75,52,164,203,9,33,111,8,196,96,132,181,44,102,150,86,147, | |||
| 16,4,116,57,225,120,43,62,122,191,198,99,177,19,109,141,171,22,77,131,101,87,175,129,185,68,0,164,146,118,179,15,30,62,60,2,59,251,137,184,33,98,134,138,0,129,238,43,221,79,77,66,41,80,143,254,184,177,167,80,175,157,86,18,148,234,5,214,101,112,22,241, | |||
| 228,23,84,20,16,131,95,0,117,228,231,172,18,3,84,228,128,177,255,32,29,142,163,176,211,244,26,155,153,145,8,245,27,88,27,109,117,159,234,199,50,252,157,145,158,131,143,244,252,164,245,149,225,215,82,113,239,34,40,0,80,0,228,24,212,131,56,253,107,11,190, | |||
| 118,218,151,234,238,212,23,107,231,70,2,98,194,56,169,109,40,99,17,98,64,162,48,173,96,46,156,59,253,74,56,103,218,101,80,166,175,202,217,227,28,9,132,33,228,10,130,223,230,5,159,213,3,126,139,135,252,244,38,132,129,39,200,234,250,169,93,229,137,241, | |||
| 44,172,44,130,202,133,181,48,99,205,92,168,89,58,61,173,251,61,224,8,176,42,129,35,99,110,24,38,251,239,9,137,236,242,160,98,128,122,244,53,133,58,152,73,12,253,76,98,220,231,150,25,96,6,249,89,91,164,135,10,242,119,185,218,94,152,94,187,180,107,223, | |||
| 238,241,215,161,215,213,66,174,99,233,152,225,215,164,228,126,229,120,77,164,115,171,233,254,131,27,186,239,114,155,2,78,124,138,161,0,64,1,128,36,69,213,130,226,234,115,190,189,248,127,23,92,56,253,59,113,41,198,139,225,212,172,35,178,170,1,242,64,45, | |||
| 55,84,195,233,53,23,50,49,48,187,104,97,94,29,123,41,34,130,36,74,204,124,112,90,33,99,39,27,82,143,63,16,137,17,1,16,103,17,129,66,93,126,77,96,244,68,28,112,200,188,29,14,78,190,195,250,245,83,131,175,229,245,41,49,252,199,147,252,172,61,158,157,196, | |||
| 240,255,180,111,231,228,97,124,106,161,0,64,1,128,40,202,162,139,167,175,35,66,224,174,170,5,37,23,68,137,183,23,19,83,115,253,80,47,42,34,133,216,114,192,242,138,51,224,19,68,8,172,168,60,131,24,26,236,101,133,164,23,58,154,247,224,196,59,112,212,178, | |||
| 27,236,161,73,150,187,146,232,134,153,138,39,120,34,220,31,114,71,71,27,95,28,252,101,195,115,3,143,71,252,34,198,251,81,0,156,20,248,244,68,166,68,239,142,137,3,195,135,172,23,157,254,149,5,223,92,117,195,220,255,49,150,233,230,210,118,194,106,87,11, | |||
| 240,108,206,64,33,241,45,99,208,104,221,3,77,182,125,48,167,104,17,156,53,237,18,86,66,88,97,168,193,147,131,164,206,129,33,98,180,213,126,136,121,251,93,206,70,8,138,126,208,17,111,63,149,249,42,130,129,167,249,33,225,222,237,19,15,30,220,208,243,59, | |||
| 251,128,215,130,103,6,65,1,128,168,251,240,35,30,198,129,245,221,143,183,191,62,186,101,221,119,150,220,182,240,226,105,223,19,244,124,161,26,115,5,254,217,225,225,88,233,212,113,207,107,176,167,19,222,30,126,1,78,169,60,155,136,129,75,97,113,217,106, | |||
| 38,22,16,68,13,198,253,67,112,196,178,19,26,136,183,63,238,31,6,154,16,147,106,195,79,167,246,209,181,254,137,22,199,235,71,158,232,255,69,223,238,201,6,60,51,136,172,231,41,46,1,32,201,50,235,180,202,229,68,8,252,124,198,234,138,47,210,210,54,49,197, | |||
| 99,68,105,213,0,205,176,22,52,2,204,46,94,8,107,107,46,132,211,170,206,131,154,130,89,120,114,144,164,241,139,94,104,35,222,254,17,243,14,232,113,53,131,63,234,101,33,254,84,151,169,210,178,62,26,238,183,15,250,26,27,95,24,252,69,251,150,145,45,169,202, | |||
| 197,65,212,3,115,0,144,156,96,197,53,179,47,62,253,107,11,126,94,89,87,124,33,237,36,40,69,83,251,112,162,201,103,52,105,144,110,197,186,82,88,84,182,10,78,175,185,8,150,87,156,14,197,218,50,60,65,200,73,35,198,69,232,119,181,194,81,235,110,102,252,173, | |||
| 193,9,150,202,71,123,244,107,82,220,177,146,150,130,234,10,120,240,217,194,67,29,111,140,221,93,255,108,255,99,65,39,121,128,34,40,0,146,4,151,0,16,197,104,127,125,116,71,239,246,137,29,203,175,154,245,185,83,191,84,119,123,197,188,162,83,105,217,96, | |||
| 170,18,5,89,214,53,241,204,232,22,145,34,172,191,122,163,117,31,27,67,76,69,192,169,213,231,193,162,210,85,57,213,87,0,81,86,64,14,123,186,161,201,182,31,90,236,239,195,184,111,144,85,160,208,16,191,225,216,178,83,170,13,63,235,221,31,148,108,29,111, | |||
| 154,30,56,248,72,207,95,220,99,126,7,158,41,4,5,0,146,145,80,131,223,180,113,104,99,207,246,137,45,167,125,185,238,235,203,175,158,125,107,81,181,97,113,52,152,58,33,64,161,115,5,142,231,10,120,34,78,216,59,254,38,236,159,120,27,170,13,51,136,24,88,11, | |||
| 171,170,214,193,162,178,83,84,155,179,142,100,7,116,30,133,201,63,0,45,182,131,208,74,140,254,136,183,15,194,82,144,133,247,143,111,169,183,252,0,58,214,190,87,242,118,110,29,219,208,248,252,224,159,205,157,238,81,60,91,136,226,151,26,46,1,32,106,82, | |||
| 60,205,88,188,250,250,185,55,18,33,240,125,34,4,230,167,178,116,240,163,160,161,93,81,138,0,199,241,80,99,156,1,139,203,214,192,41,149,103,193,66,34,6,112,153,32,63,160,94,253,136,183,151,133,246,219,29,71,136,0,24,132,144,24,32,198,94,32,155,46,37,117, | |||
| 251,31,103,248,181,6,158,118,125,12,14,236,49,63,121,232,177,158,123,137,225,239,197,51,150,219,96,14,0,146,15,66,160,116,245,13,243,190,189,226,234,89,223,45,172,50,204,77,183,16,56,33,6,136,49,160,149,5,21,134,106,168,43,89,14,43,42,78,103,162,160, | |||
| 22,19,8,115,10,111,196,5,3,158,14,98,240,15,179,68,62,115,96,12,34,82,248,132,151,159,54,163,15,137,80,63,45,233,131,88,60,56,86,111,127,166,254,249,193,251,6,247,153,59,240,172,161,0,64,1,128,228,154,16,40,95,125,253,220,175,46,191,102,246,127,23,85, | |||
| 27,22,166,122,105,224,227,160,141,134,168,24,160,235,192,133,66,49,204,44,170,99,66,96,73,249,26,214,111,160,80,91,130,39,47,139,160,137,160,180,100,175,215,221,2,93,142,70,24,246,118,131,43,108,99,21,35,212,203,231,137,183,159,78,163,127,220,240,211, | |||
| 53,254,72,64,244,142,55,57,158,109,222,56,252,192,0,26,126,20,0,40,0,144,60,16,2,37,171,111,152,251,229,229,87,207,254,175,162,42,195,74,49,34,129,20,201,140,146,38,186,46,44,198,163,32,197,68,230,29,150,235,171,97,78,241,34,86,85,176,176,116,37,204, | |||
| 40,156,119,34,191,0,129,140,57,103,150,160,137,24,250,46,232,118,54,195,160,167,147,253,63,13,237,211,124,16,102,244,51,164,63,4,107,219,203,12,191,100,239,219,57,249,100,195,243,3,15,89,186,220,125,120,22,81,0,160,0,64,242,75,8,212,26,13,11,47,154,118, | |||
| 253,170,207,206,249,110,229,130,146,117,146,72,140,111,88,74,201,192,161,147,35,126,44,58,16,101,70,134,14,117,169,48,212,194,172,162,5,176,160,116,5,212,149,44,133,105,5,115,160,72,91,138,39,51,149,207,143,88,24,44,1,106,240,123,136,177,239,128,33,79, | |||
| 55,51,248,196,153,102,127,47,104,180,25,225,229,127,200,240,11,28,51,252,62,75,112,116,232,128,245,177,166,141,67,143,17,195,143,35,122,81,0,96,25,32,146,159,120,205,193,80,227,11,131,207,182,111,25,125,118,249,85,179,174,88,122,197,204,255,154,182,162, | |||
| 236,83,26,226,182,69,67,234,183,24,62,9,141,204,230,13,240,188,112,76,14,196,193,22,156,0,115,96,148,53,134,209,242,58,40,213,85,194,116,34,2,102,23,47,130,121,197,75,88,132,128,150,30,234,136,88,64,148,144,96,113,112,134,173,48,233,31,129,17,95,47,43, | |||
| 213,163,137,123,142,144,5,66,82,128,253,27,122,142,104,35,168,140,171,234,32,250,67,208,113,204,248,123,38,130,205,221,239,152,30,109,222,52,252,28,185,238,177,156,15,73,59,40,0,144,204,240,232,18,229,131,111,55,109,26,122,123,193,249,211,78,95,113,237, | |||
| 236,155,230,156,81,121,131,190,72,91,193,242,4,50,100,158,57,245,40,89,226,24,104,79,24,39,58,5,206,73,140,17,237,13,79,195,205,180,207,0,29,93,92,107,156,77,68,193,2,152,89,56,159,37,21,210,121,5,5,66,49,158,236,127,227,217,187,195,118,230,205,155,124, | |||
| 3,48,70,182,201,192,8,216,66,19,172,3,31,141,196,208,99,204,68,25,39,100,108,25,39,91,223,55,240,16,139,197,99,246,126,239,123,173,175,141,172,39,198,255,141,144,39,26,197,179,140,160,0,64,144,143,118,247,160,127,247,228,81,186,77,91,81,246,171,37,151, | |||
| 207,252,210,146,79,206,248,122,97,181,126,5,77,22,204,172,229,129,132,32,248,96,132,128,66,115,7,104,120,122,194,63,12,13,214,61,39,122,18,20,235,202,88,100,160,198,56,11,166,21,204,102,173,138,171,13,211,161,68,95,193,150,16,50,41,92,173,54,116,109, | |||
| 222,19,117,130,61,56,9,214,208,56,57,86,35,44,170,66,167,233,185,35,118,54,92,71,36,199,81,163,57,118,124,53,252,137,38,79,153,12,175,229,88,175,254,176,79,180,145,107,248,229,246,55,198,30,27,220,111,57,18,19,177,101,47,130,2,0,65,78,154,201,118,215, | |||
| 24,217,238,57,250,84,223,253,139,46,158,254,169,37,151,205,252,70,237,242,210,203,4,29,103,160,131,135,50,37,42,240,79,162,128,38,157,209,13,180,31,208,53,113,150,133,110,15,153,217,244,56,154,123,67,141,26,93,38,40,212,22,67,137,174,130,37,27,82,129, | |||
| 64,55,250,123,186,21,17,209,80,164,45,33,2,162,32,107,134,28,209,137,141,180,196,206,23,245,128,95,244,144,239,109,103,223,157,46,157,56,194,102,22,186,167,94,62,253,123,26,194,167,94,61,133,35,223,143,126,71,142,25,123,61,219,178,1,42,82,4,3,199,188, | |||
| 126,183,41,208,208,187,115,226,201,246,45,163,27,29,131,190,9,188,139,17,20,0,8,146,4,126,91,56,220,244,210,208,171,205,155,134,95,157,177,186,98,233,178,43,102,126,121,254,121,53,95,44,170,49,46,138,209,225,67,52,87,32,195,39,160,159,136,20,104,132, | |||
| 127,48,150,116,9,193,197,140,228,144,167,139,9,3,250,43,145,185,174,101,73,135,6,190,16,10,180,69,172,81,17,141,20,208,173,88,151,248,61,93,82,40,20,138,192,72,54,42,38,244,124,194,112,106,201,79,186,38,206,49,131,202,177,159,199,247,227,223,27,112,242, | |||
| 43,30,99,73,143,180,108,142,38,65,70,99,97,136,196,34,108,12,46,13,211,135,136,135,30,16,125,224,167,70,62,234,5,111,212,77,54,39,248,34,110,98,216,221,108,128,14,245,226,195,196,211,143,30,171,168,56,110,44,143,27,122,218,127,65,75,190,99,166,123,245, | |||
| 31,115,66,129,23,18,83,249,34,1,209,49,114,196,246,70,231,155,99,79,15,236,179,236,12,123,163,18,222,181,8,10,0,4,81,210,179,140,197,193,212,104,239,34,219,255,20,62,98,248,237,162,139,166,125,114,193,133,211,190,50,99,85,249,101,58,163,80,202,6,16,209, | |||
| 80,107,60,123,190,83,66,24,240,31,233,221,83,67,76,103,26,132,137,209,117,133,173,9,131,12,137,80,242,241,234,157,132,113,39,222,39,121,61,53,248,44,63,225,88,6,60,21,27,58,98,92,57,46,241,147,190,130,14,179,161,255,62,254,15,7,137,238,71,226,243,194, | |||
| 240,247,202,135,8,49,252,137,225,74,18,107,154,36,178,242,200,68,69,132,116,66,36,28,127,47,106,220,169,81,63,177,79,244,23,249,169,211,16,79,62,75,188,249,127,7,157,200,71,141,126,92,138,199,157,35,254,3,61,219,39,94,24,216,61,249,170,185,203,109,194, | |||
| 59,20,65,1,128,32,41,137,10,132,130,77,27,135,182,208,173,118,121,217,156,249,231,213,126,122,241,165,211,63,95,54,187,240,28,242,144,230,197,16,49,78,89,190,238,154,48,160,212,99,231,224,95,59,238,9,19,124,220,128,71,32,116,194,40,31,143,40,36,84,81, | |||
| 194,200,255,171,112,73,226,243,78,124,58,253,131,99,31,173,57,254,39,199,146,240,56,128,60,201,89,96,157,250,244,28,59,54,62,107,168,119,172,97,242,53,226,237,191,100,106,118,28,165,75,81,8,130,2,0,65,210,132,185,195,53,66,182,7,142,62,213,247,192,140, | |||
| 213,21,107,136,24,184,110,254,39,106,62,93,50,163,96,21,181,119,180,201,80,38,116,27,84,87,42,252,163,1,63,241,87,72,18,70,159,227,57,8,186,34,227,227,205,142,173,93,239,140,111,28,58,104,217,19,176,135,131,120,132,16,20,0,8,146,65,80,111,108,248,125, | |||
| 107,19,221,222,127,84,119,231,156,51,170,206,92,112,193,180,107,103,174,169,184,170,168,218,176,146,26,67,218,109,48,219,150,9,144,20,25,125,94,147,168,217,39,63,131,238,168,217,212,228,216,62,184,215,188,105,232,160,117,151,107,204,239,196,35,132,160, | |||
| 0,64,144,44,32,232,140,136,221,239,142,31,160,91,65,185,238,231,179,207,168,58,131,8,130,171,103,172,174,184,162,108,78,225,26,242,144,215,72,209,24,196,200,22,71,49,144,167,22,63,209,150,87,208,241,76,15,134,92,145,81,83,3,49,250,251,204,155,135,222, | |||
| 183,238,117,141,250,237,120,144,16,20,0,8,146,197,4,156,145,232,113,49,160,53,242,119,204,88,85,177,122,193,5,181,159,156,190,170,252,138,138,185,69,103,234,10,132,66,42,4,152,32,144,80,13,228,180,205,231,52,137,90,125,178,145,243,29,247,89,67,29,19, | |||
| 45,206,247,250,247,76,190,57,222,236,60,228,53,7,189,120,148,16,20,0,8,146,131,68,131,82,108,248,144,181,145,110,196,251,187,187,122,113,233,188,185,103,85,157,63,107,109,229,39,171,23,151,156,107,44,211,213,81,35,193,4,129,24,207,128,86,196,72,178,94, | |||
| 62,45,215,163,205,121,104,126,68,200,19,113,216,7,188,71,71,143,218,223,29,61,106,219,110,238,112,181,133,60,81,17,15,20,130,2,0,65,242,8,234,237,155,59,93,67,116,59,252,68,223,83,197,53,134,130,234,37,165,107,230,173,171,190,104,218,242,178,11,203,102, | |||
| 23,158,170,47,214,86,178,127,43,210,8,1,10,130,140,183,247,180,112,129,167,30,190,134,37,240,17,47,63,228,54,249,59,38,219,93,251,198,91,156,59,136,225,63,228,26,245,79,226,121,68,16,20,0,8,114,2,175,37,20,32,219,129,129,189,230,3,26,78,243,155,178,89, | |||
| 5,181,181,203,203,78,155,177,186,226,188,218,229,165,231,150,207,42,92,161,47,33,130,64,3,172,170,128,70,9,98,212,144,160,45,73,159,193,231,52,172,54,159,122,249,244,188,136,97,41,24,176,135,186,173,189,222,131,19,45,142,61,227,173,174,163,214,30,119, | |||
| 95,196,143,78,62,130,160,0,64,144,147,128,122,136,206,17,191,153,108,91,187,222,54,109,165,225,227,210,89,5,53,181,203,74,87,17,65,112,118,229,252,162,179,43,235,138,79,33,130,96,182,160,227,53,244,223,211,234,130,24,46,27,168,107,236,249,132,193,167, | |||
| 63,227,49,128,144,55,98,115,141,132,58,109,3,222,195,227,77,142,131,230,78,87,163,219,20,24,12,121,162,120,18,16,4,5,0,130,40,32,8,226,113,112,141,250,45,100,219,214,253,238,248,54,250,103,69,53,134,162,178,217,133,11,103,172,42,95,93,181,176,120,109, | |||
| 249,220,226,53,197,181,134,197,134,98,109,45,53,82,180,186,128,69,10,136,48,160,162,0,171,13,78,214,210,3,112,196,216,211,178,60,142,255,187,177,39,94,188,199,109,14,14,146,115,208,102,235,243,28,181,116,121,26,172,189,158,78,207,120,192,138,201,155, | |||
| 8,130,2,0,65,82,134,207,18,242,145,173,105,172,222,222,68,254,247,73,106,244,139,170,141,21,21,117,133,117,53,139,75,87,150,204,44,56,165,106,126,241,138,226,233,198,133,250,98,237,76,157,158,55,82,163,70,141,21,21,4,9,97,0,121,27,49,160,30,61,109,40, | |||
| 72,215,234,143,255,164,66,75,138,198,164,176,55,106,38,199,118,208,103,13,117,90,123,60,45,150,110,119,171,99,200,215,235,157,12,142,71,131,104,237,17,4,5,0,130,100,16,212,219,247,76,4,28,116,27,58,96,173,63,254,231,5,21,122,67,201,116,227,180,226,105, | |||
| 198,186,202,249,197,75,43,235,138,150,24,203,117,139,74,103,22,206,209,26,249,25,250,34,109,57,17,15,26,106,16,227,82,252,88,228,32,209,159,32,17,57,56,102,239,178,105,198,193,177,14,132,52,33,143,254,158,138,35,250,27,234,217,179,89,3,116,180,115,72, | |||
| 242,134,60,81,139,215,28,26,11,185,34,189,182,126,111,47,241,238,187,220,166,192,128,115,196,63,26,116,133,221,185,221,193,17,65,80,0,32,72,78,19,112,132,67,100,27,154,108,119,13,245,110,159,216,121,252,207,245,197,90,222,88,170,171,40,172,54,204,168, | |||
| 152,91,56,147,252,127,93,213,130,226,217,186,66,97,94,217,156,194,105,188,150,155,110,44,211,149,11,122,190,152,136,3,3,45,101,75,180,242,255,123,226,33,253,253,7,141,36,251,43,137,206,64,248,168,30,192,39,177,12,161,249,184,137,129,241,99,30,187,230, | |||
| 67,30,60,13,207,159,120,29,75,193,63,81,49,33,17,241,226,241,91,67,110,242,211,236,28,245,155,137,231,62,108,235,245,140,68,2,226,144,173,207,75,12,124,196,228,179,4,109,33,111,52,132,137,148,8,146,103,2,192,235,197,158,27,72,254,66,199,198,146,205,234, | |||
| 26,243,91,77,141,246,230,143,248,39,58,190,2,138,180,70,168,48,148,232,42,202,231,20,86,199,164,120,109,113,141,161,178,100,102,65,53,49,177,85,134,18,109,25,249,125,105,92,130,98,242,239,139,5,3,103,44,252,255,236,221,75,106,194,64,0,128,225,104,226, | |||
| 139,90,104,233,190,208,131,120,75,47,215,19,20,173,90,84,218,196,81,155,206,152,62,20,234,174,208,133,223,7,1,5,31,193,133,243,79,72,50,119,189,126,28,232,211,26,187,157,163,173,125,184,235,93,63,63,123,36,33,141,223,233,102,72,187,240,189,136,82,136, | |||
| 91,90,237,38,196,193,61,196,125,173,226,140,61,45,23,184,110,229,217,186,92,132,213,122,82,46,227,27,103,241,125,207,211,199,229,60,126,196,244,117,182,153,174,158,222,94,222,247,217,60,76,178,101,124,189,123,231,195,25,33,132,203,11,128,162,40,178,241, | |||
| 120,44,2,224,183,249,118,115,121,97,136,3,254,34,62,94,52,51,251,250,103,182,253,57,19,79,119,180,235,118,138,172,46,234,230,105,63,239,12,175,6,131,56,213,79,235,239,118,143,182,162,119,221,105,223,222,15,135,231,206,57,72,231,39,196,25,123,21,7,245, | |||
| 144,53,153,80,197,45,93,63,183,137,223,183,41,119,161,42,55,135,127,171,109,154,237,239,110,246,217,182,191,255,58,64,144,213,15,205,145,137,195,145,130,188,217,209,188,104,157,236,47,112,106,52,26,253,219,119,183,106,167,38,3,192,197,105,251,9,0,64, | |||
| 0,0,0,2,0,0,16,0,0,128,0,0,0,4,0,0,32,0,0,0,1,0,0,8,0,0,64,0,0,0,2,0,0,16,0,0,128,0,0,0,4,0,0,32,0,0,0,1,0,0,8,0,0,64,0,0,128,0,0,0,4,0,0,32,0,0,0,1,0,0,8,0,0,64,0,0,0,2,0,0,16,0,0,128,0,0,0,4,0,0,32,0,0,128,191,246,33,192,0,100,235,173,153,70,62,64, | |||
| 37,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; | |||
| const char* JUCEAppIcon_png = (const char*) temp_binary_data_0; | |||
| const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) noexcept | |||
| { | |||
| unsigned int hash = 0; | |||
| if (resourceNameUTF8 != 0) | |||
| while (*resourceNameUTF8 != 0) | |||
| hash = 31 * hash + (unsigned int) *resourceNameUTF8++; | |||
| switch (hash) | |||
| { | |||
| case 0xdb43fd77: numBytes = 45854; return JUCEAppIcon_png; | |||
| default: break; | |||
| } | |||
| numBytes = 0; | |||
| return nullptr; | |||
| } | |||
| const char* namedResourceList[] = | |||
| { | |||
| "JUCEAppIcon_png" | |||
| }; | |||
| const char* originalFilenames[] = | |||
| { | |||
| "JUCEAppIcon.png" | |||
| }; | |||
| const char* getNamedResourceOriginalFilename (const char* resourceNameUTF8) noexcept | |||
| { | |||
| for (unsigned int i = 0; i < (sizeof (namedResourceList) / sizeof (namedResourceList[0])); ++i) | |||
| { | |||
| if (namedResourceList[i] == resourceNameUTF8) | |||
| return originalFilenames[i]; | |||
| } | |||
| return nullptr; | |||
| } | |||
| } | |||
| @@ -0,0 +1,30 @@ | |||
| /* ========================================================================================= | |||
| This is an auto-generated file: Any edits you make may be overwritten! | |||
| */ | |||
| #pragma once | |||
| namespace BinaryData | |||
| { | |||
| extern const char* JUCEAppIcon_png; | |||
| const int JUCEAppIcon_pngSize = 45854; | |||
| // Number of elements in the namedResourceList and originalFileNames arrays. | |||
| const int namedResourceListSize = 1; | |||
| // Points to the start of a list of resource names. | |||
| extern const char* namedResourceList[]; | |||
| // Points to the start of a list of resource filenames. | |||
| extern const char* originalFilenames[]; | |||
| // If you provide the name of one of the binary resource variables above, this function will | |||
| // return the corresponding data and its size (or a null pointer if the name isn't found). | |||
| const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) noexcept; | |||
| // If you provide the name of one of the binary resource variables above, this function will | |||
| // return the corresponding original, non-mangled filename (or a null pointer if the name isn't found). | |||
| const char* getNamedResourceOriginalFilename (const char* resourceNameUTF8) noexcept; | |||
| } | |||
| @@ -29,6 +29,7 @@ | |||
| #include <juce_opengl/juce_opengl.h> | |||
| #include <juce_video/juce_video.h> | |||
| #include "BinaryData.h" | |||
| #if ! DONT_SET_USING_JUCE_NAMESPACE | |||
| // If your code uses a lot of JUCE classes, then this will obviously save you | |||
| @@ -25,10 +25,10 @@ | |||
| */ | |||
| #include "../JuceLibraryCode/JuceHeader.h" | |||
| #include "MainHostWindow.h" | |||
| #include "../UI/MainHostWindow.h" | |||
| #include "FilterGraph.h" | |||
| #include "InternalFilters.h" | |||
| #include "GraphEditorPanel.h" | |||
| #include "../UI/GraphEditorPanel.h" | |||
| //============================================================================== | |||
| @@ -105,9 +105,9 @@ void FilterGraph::addFilterCallback (AudioPluginInstance* instance, const String | |||
| { | |||
| if (instance == nullptr) | |||
| { | |||
| AlertWindow::showMessageBox (AlertWindow::WarningIcon, | |||
| TRANS("Couldn't create filter"), | |||
| error); | |||
| AlertWindow::showMessageBoxAsync (AlertWindow::WarningIcon, | |||
| TRANS("Couldn't create filter"), | |||
| error); | |||
| } | |||
| else | |||
| { | |||
| @@ -152,9 +152,13 @@ PluginWindow* FilterGraph::getOrCreateWindowFor (AudioProcessorGraph::Node* node | |||
| { | |||
| jassert (node != nullptr); | |||
| #if JUCE_IOS || JUCE_ANDROID | |||
| closeAnyOpenPluginWindows(); | |||
| #else | |||
| for (auto* w : activePluginWindows) | |||
| if (w->node == node && w->type == type) | |||
| return w; | |||
| #endif | |||
| if (auto* processor = node->getProcessor()) | |||
| { | |||
| @@ -454,3 +458,9 @@ void FilterGraph::restoreFromXml (const XmlElement& xml) | |||
| graph.removeIllegalConnections(); | |||
| } | |||
| File FilterGraph::getDefaultGraphDocumentOnMobile() | |||
| { | |||
| auto persistantStorageLocation = File::getSpecialLocation (File::userApplicationDataDirectory); | |||
| return persistantStorageLocation.getChildFile ("state.filtergraph"); | |||
| } | |||
| @@ -26,7 +26,7 @@ | |||
| #pragma once | |||
| #include "PluginWindow.h" | |||
| #include "../UI/PluginWindow.h" | |||
| //============================================================================== | |||
| @@ -78,6 +78,8 @@ public: | |||
| File getLastDocumentOpened() override; | |||
| void setLastDocumentOpened (const File& file) override; | |||
| static File getDefaultGraphDocumentOnMobile(); | |||
| //============================================================================== | |||
| AudioProcessorGraph graph; | |||
| @@ -25,9 +25,9 @@ | |||
| */ | |||
| #include "../JuceLibraryCode/JuceHeader.h" | |||
| #include "GraphEditorPanel.h" | |||
| #include "../UI/GraphEditorPanel.h" | |||
| #include "InternalFilters.h" | |||
| #include "MainHostWindow.h" | |||
| #include "../UI/MainHostWindow.h" | |||
| #include "FilterIOConfiguration.h" | |||
| @@ -0,0 +1,399 @@ | |||
| /* | |||
| ============================================================================== | |||
| This file is part of the JUCE library. | |||
| Copyright (c) 2017 - ROLI Ltd. | |||
| JUCE is an open source library subject to commercial or open-source | |||
| licensing. | |||
| By using JUCE, you agree to the terms of both the JUCE 5 End-User License | |||
| Agreement and JUCE 5 Privacy Policy (both updated and effective as of the | |||
| 27th April 2017). | |||
| End User License Agreement: www.juce.com/juce-5-licence | |||
| Privacy Policy: www.juce.com/juce-5-privacy-policy | |||
| Or: You may also use this code under the terms of the GPL v3 (see | |||
| www.gnu.org/licenses). | |||
| JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER | |||
| EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE | |||
| DISCLAIMED. | |||
| ============================================================================== | |||
| */ | |||
| #include "../JuceLibraryCode/JuceHeader.h" | |||
| #include "InternalFilters.h" | |||
| #include "FilterGraph.h" | |||
| //============================================================================== | |||
| class InternalPlugin : public AudioPluginInstance | |||
| { | |||
| protected: | |||
| InternalPlugin (const PluginDescription& descr, | |||
| const AudioChannelSet& channelSetToUse = AudioChannelSet::stereo()) | |||
| : AudioPluginInstance (getBusProperties (descr.numInputChannels == 0, channelSetToUse)), | |||
| name (descr.fileOrIdentifier.upToFirstOccurrenceOf (":", false, false)), | |||
| state (descr.fileOrIdentifier.fromFirstOccurrenceOf (":", false, false)), | |||
| isGenerator (descr.numInputChannels == 0), | |||
| hasMidi (descr.isInstrument), | |||
| channelSet (channelSetToUse) | |||
| { | |||
| jassert (channelSetToUse.size() == descr.numOutputChannels); | |||
| } | |||
| public: | |||
| //============================================================================== | |||
| const String getName() const override { return name; } | |||
| double getTailLengthSeconds() const override { return 0.0; } | |||
| bool acceptsMidi() const override { return hasMidi; } | |||
| bool producesMidi() const override { return hasMidi; } | |||
| AudioProcessorEditor* createEditor() override { return nullptr; } | |||
| bool hasEditor() const override { return false; } | |||
| int getNumPrograms() override { return 0; } | |||
| int getCurrentProgram() override { return 0; } | |||
| void setCurrentProgram (int) override {} | |||
| const String getProgramName (int) override { return {}; } | |||
| void changeProgramName (int, const String&) override {} | |||
| void getStateInformation (juce::MemoryBlock&) override {} | |||
| void setStateInformation (const void*, int) override {} | |||
| //============================================================================== | |||
| bool isBusesLayoutSupported (const BusesLayout& layout) const override | |||
| { | |||
| if (! isGenerator) | |||
| { | |||
| if (layout.getMainOutputChannelSet() != channelSet) | |||
| return false; | |||
| } | |||
| if (layout.getMainInputChannelSet() != channelSet) | |||
| return false; | |||
| return true; | |||
| } | |||
| //============================================================================== | |||
| void fillInPluginDescription (PluginDescription& description) const override | |||
| { | |||
| description = getPluginDescription (name + ":" + state, | |||
| isGenerator, | |||
| hasMidi, | |||
| channelSet); | |||
| } | |||
| static PluginDescription getPluginDescription (const String& identifier, | |||
| bool registerAsGenerator, | |||
| bool acceptsMidi, | |||
| const AudioChannelSet& channelSetToUse | |||
| = AudioChannelSet::stereo()) | |||
| { | |||
| PluginDescription descr; | |||
| auto pluginName = identifier.upToFirstOccurrenceOf (":", false, false); | |||
| auto pluginState = identifier.fromFirstOccurrenceOf (":", false, false); | |||
| descr.name = pluginName; | |||
| descr.descriptiveName = pluginName; | |||
| descr.pluginFormatName = "Internal"; | |||
| descr.category = (registerAsGenerator ? (acceptsMidi ? "Synth" : "Generator") : "Effect"); | |||
| descr.manufacturerName = "ROLI Ltd."; | |||
| descr.version = ProjectInfo::versionString; | |||
| descr.fileOrIdentifier = pluginName + ":" + pluginState; | |||
| descr.uid = pluginName.hashCode(); | |||
| descr.isInstrument = (acceptsMidi && registerAsGenerator); | |||
| descr.numInputChannels = (registerAsGenerator ? 0 : channelSetToUse.size()); | |||
| descr.numOutputChannels = channelSetToUse.size(); | |||
| return descr; | |||
| } | |||
| private: | |||
| static BusesProperties getBusProperties (bool registerAsGenerator, | |||
| const AudioChannelSet& channelSetToUse) | |||
| { | |||
| return registerAsGenerator ? BusesProperties().withOutput ("Output", channelSetToUse) | |||
| : BusesProperties().withInput ("Input", channelSetToUse) | |||
| .withOutput ("Output", channelSetToUse); | |||
| } | |||
| //============================================================================== | |||
| String name, state; | |||
| bool isGenerator, hasMidi; | |||
| AudioChannelSet channelSet; | |||
| //============================================================================== | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (InternalPlugin) | |||
| }; | |||
| //============================================================================== | |||
| class SineWaveSynth : public InternalPlugin | |||
| { | |||
| public: | |||
| SineWaveSynth (const PluginDescription& descr) : InternalPlugin (descr) | |||
| { | |||
| const int numVoices = 8; | |||
| // Add some voices... | |||
| for (int i = numVoices; --i >= 0;) | |||
| synth.addVoice (new SineWaveVoice()); | |||
| // ..and give the synth a sound to play | |||
| synth.addSound (new SineWaveSound()); | |||
| } | |||
| static String getIdentifier() | |||
| { | |||
| return "Sine Wave Synth"; | |||
| } | |||
| static PluginDescription getPluginDescription() | |||
| { | |||
| return InternalPlugin::getPluginDescription (getIdentifier(), true, true); | |||
| } | |||
| //============================================================================== | |||
| void prepareToPlay (double newSampleRate, int) override | |||
| { | |||
| synth.setCurrentPlaybackSampleRate (newSampleRate); | |||
| } | |||
| void releaseResources() override {} | |||
| //============================================================================== | |||
| void processBlock (AudioBuffer<float>& buffer, MidiBuffer& midiMessages) override | |||
| { | |||
| const int numSamples = buffer.getNumSamples(); | |||
| buffer.clear(); | |||
| synth.renderNextBlock (buffer, midiMessages, 0, numSamples); | |||
| buffer.applyGain (0.8f); | |||
| } | |||
| private: | |||
| //============================================================================== | |||
| class SineWaveSound : public SynthesiserSound | |||
| { | |||
| public: | |||
| SineWaveSound() {} | |||
| bool appliesToNote (int /*midiNoteNumber*/) override { return true; } | |||
| bool appliesToChannel (int /*midiChannel*/) override { return true; } | |||
| }; | |||
| class SineWaveVoice : public SynthesiserVoice | |||
| { | |||
| public: | |||
| SineWaveVoice() | |||
| : currentAngle (0), angleDelta (0), level (0), tailOff (0) | |||
| { | |||
| } | |||
| bool canPlaySound (SynthesiserSound* sound) override | |||
| { | |||
| return dynamic_cast<SineWaveSound*> (sound) != nullptr; | |||
| } | |||
| void startNote (int midiNoteNumber, float velocity, | |||
| SynthesiserSound* /*sound*/, | |||
| int /*currentPitchWheelPosition*/) override | |||
| { | |||
| currentAngle = 0.0; | |||
| level = velocity * 0.15; | |||
| tailOff = 0.0; | |||
| double cyclesPerSecond = MidiMessage::getMidiNoteInHertz (midiNoteNumber); | |||
| double cyclesPerSample = cyclesPerSecond / getSampleRate(); | |||
| angleDelta = cyclesPerSample * 2.0 * double_Pi; | |||
| } | |||
| void stopNote (float /*velocity*/, bool allowTailOff) override | |||
| { | |||
| if (allowTailOff) | |||
| { | |||
| // start a tail-off by setting this flag. The render callback will pick up on | |||
| // this and do a fade out, calling clearCurrentNote() when it's finished. | |||
| if (tailOff == 0.0) // we only need to begin a tail-off if it's not already doing so - the | |||
| // stopNote method could be called more than once. | |||
| tailOff = 1.0; | |||
| } | |||
| else | |||
| { | |||
| // we're being told to stop playing immediately, so reset everything.. | |||
| clearCurrentNote(); | |||
| angleDelta = 0.0; | |||
| } | |||
| } | |||
| void pitchWheelMoved (int /*newValue*/) override | |||
| { | |||
| // not implemented for the purposes of this demo! | |||
| } | |||
| void controllerMoved (int /*controllerNumber*/, int /*newValue*/) override | |||
| { | |||
| // not implemented for the purposes of this demo! | |||
| } | |||
| void renderNextBlock (AudioBuffer<float>& outputBuffer, int startSample, int numSamples) override | |||
| { | |||
| if (angleDelta != 0.0) | |||
| { | |||
| if (tailOff > 0) | |||
| { | |||
| while (--numSamples >= 0) | |||
| { | |||
| const float currentSample = (float) (sin (currentAngle) * level * tailOff); | |||
| for (int i = outputBuffer.getNumChannels(); --i >= 0;) | |||
| outputBuffer.addSample (i, startSample, currentSample); | |||
| currentAngle += angleDelta; | |||
| ++startSample; | |||
| tailOff *= 0.99; | |||
| if (tailOff <= 0.005) | |||
| { | |||
| // tells the synth that this voice has stopped | |||
| clearCurrentNote(); | |||
| angleDelta = 0.0; | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| else | |||
| { | |||
| while (--numSamples >= 0) | |||
| { | |||
| const float currentSample = (float) (sin (currentAngle) * level); | |||
| for (int i = outputBuffer.getNumChannels(); --i >= 0;) | |||
| outputBuffer.addSample (i, startSample, currentSample); | |||
| currentAngle += angleDelta; | |||
| ++startSample; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| private: | |||
| double currentAngle, angleDelta, level, tailOff; | |||
| }; | |||
| //============================================================================== | |||
| Synthesiser synth; | |||
| //============================================================================== | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SineWaveSynth) | |||
| }; | |||
| //============================================================================== | |||
| class ReverbFilter : public InternalPlugin | |||
| { | |||
| public: | |||
| ReverbFilter (const PluginDescription& descr) : InternalPlugin (descr) | |||
| {} | |||
| static String getIdentifier() | |||
| { | |||
| return "Reverb"; | |||
| } | |||
| static PluginDescription getPluginDescription() | |||
| { | |||
| return InternalPlugin::getPluginDescription (getIdentifier(), false, false); | |||
| } | |||
| void prepareToPlay (double newSampleRate, int) override | |||
| { | |||
| reverb.setSampleRate (newSampleRate); | |||
| } | |||
| void reset() override | |||
| { | |||
| reverb.reset(); | |||
| } | |||
| void releaseResources() override {} | |||
| void processBlock (AudioBuffer<float>& buffer, MidiBuffer&) override | |||
| { | |||
| auto numChannels = buffer.getNumChannels(); | |||
| if (numChannels == 1) | |||
| reverb.processMono (buffer.getWritePointer (0), buffer.getNumSamples()); | |||
| else | |||
| reverb.processStereo (buffer.getWritePointer (0), | |||
| buffer.getWritePointer (1), | |||
| buffer.getNumSamples()); | |||
| for (int ch = 2; ch < numChannels; ++ch) | |||
| buffer.clear (ch, 0, buffer.getNumSamples()); | |||
| } | |||
| private: | |||
| Reverb reverb; | |||
| }; | |||
| //============================================================================== | |||
| InternalPluginFormat::InternalPluginFormat() | |||
| { | |||
| { | |||
| AudioProcessorGraph::AudioGraphIOProcessor p (AudioProcessorGraph::AudioGraphIOProcessor::audioOutputNode); | |||
| p.fillInPluginDescription (audioOutDesc); | |||
| } | |||
| { | |||
| AudioProcessorGraph::AudioGraphIOProcessor p (AudioProcessorGraph::AudioGraphIOProcessor::audioInputNode); | |||
| p.fillInPluginDescription (audioInDesc); | |||
| } | |||
| { | |||
| AudioProcessorGraph::AudioGraphIOProcessor p (AudioProcessorGraph::AudioGraphIOProcessor::midiInputNode); | |||
| p.fillInPluginDescription (midiInDesc); | |||
| } | |||
| } | |||
| AudioPluginInstance* InternalPluginFormat::createInstance (const String& name) | |||
| { | |||
| if (name == audioOutDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::audioOutputNode); | |||
| if (name == audioInDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::audioInputNode); | |||
| if (name == midiInDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::midiInputNode); | |||
| if (name == SineWaveSynth::getIdentifier()) return new SineWaveSynth (SineWaveSynth::getPluginDescription()); | |||
| if (name == ReverbFilter::getIdentifier()) return new ReverbFilter (ReverbFilter::getPluginDescription()); | |||
| return nullptr; | |||
| } | |||
| void InternalPluginFormat::createPluginInstance (const PluginDescription& desc, | |||
| double /*initialSampleRate*/, | |||
| int /*initialBufferSize*/, | |||
| void* userData, | |||
| void (*callback) (void*, AudioPluginInstance*, const String&)) | |||
| { | |||
| auto* p = createInstance (desc.name); | |||
| callback (userData, p, p == nullptr ? NEEDS_TRANS ("Invalid internal filter name") : String()); | |||
| } | |||
| bool InternalPluginFormat::requiresUnblockedMessageThreadDuringCreation (const PluginDescription&) const noexcept | |||
| { | |||
| return false; | |||
| } | |||
| void InternalPluginFormat::getAllTypes (OwnedArray<PluginDescription>& results) | |||
| { | |||
| results.add (new PluginDescription (audioInDesc)); | |||
| results.add (new PluginDescription (audioOutDesc)); | |||
| results.add (new PluginDescription (midiInDesc)); | |||
| results.add (new PluginDescription (SineWaveSynth::getPluginDescription())); | |||
| results.add (new PluginDescription (ReverbFilter::getPluginDescription())); | |||
| } | |||
| @@ -25,8 +25,8 @@ | |||
| */ | |||
| #include "../JuceLibraryCode/JuceHeader.h" | |||
| #include "MainHostWindow.h" | |||
| #include "InternalFilters.h" | |||
| #include "UI/MainHostWindow.h" | |||
| #include "Filters/InternalFilters.h" | |||
| #if ! (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_VST3 || JUCE_PLUGINHOST_AU) | |||
| #error "If you're building the audio plugin host, you probably want to enable VST and/or AU support" | |||
| @@ -75,6 +75,9 @@ public: | |||
| { | |||
| File fileToOpen; | |||
| #if JUCE_ANDROID || JUCE_IOS | |||
| fileToOpen = FilterGraph::getDefaultGraphDocumentOnMobile(); | |||
| #else | |||
| for (int i = 0; i < getCommandLineParameterArray().size(); ++i) | |||
| { | |||
| fileToOpen = File::getCurrentWorkingDirectory().getChildFile (getCommandLineParameterArray()[i]); | |||
| @@ -82,6 +85,7 @@ public: | |||
| if (fileToOpen.existsAsFile()) | |||
| break; | |||
| } | |||
| #endif | |||
| if (! fileToOpen.existsAsFile()) | |||
| { | |||
| @@ -105,6 +109,15 @@ public: | |||
| LookAndFeel::setDefaultLookAndFeel (nullptr); | |||
| } | |||
| void suspended() override | |||
| { | |||
| #if JUCE_ANDROID || JUCE_IOS | |||
| if (GraphDocumentComponent* graph = mainWindow->graphHolder.get()) | |||
| if (FilterGraph* ioGraph = graph->graph.get()) | |||
| ioGraph->saveDocument (FilterGraph::getDefaultGraphDocumentOnMobile()); | |||
| #endif | |||
| } | |||
| void systemRequestedQuit() override | |||
| { | |||
| if (mainWindow != nullptr) | |||
| @@ -113,6 +126,12 @@ public: | |||
| JUCEApplicationBase::quit(); | |||
| } | |||
| void backButtonPressed() override | |||
| { | |||
| if (mainWindow->graphHolder != nullptr) | |||
| mainWindow->graphHolder->hideLastSidePanel(); | |||
| } | |||
| const String getApplicationName() override { return "Juce Plug-In Host"; } | |||
| const String getApplicationVersion() override { return ProjectInfo::versionString; } | |||
| bool moreThanOneInstanceAllowed() override { return true; } | |||
| @@ -124,10 +143,12 @@ private: | |||
| ScopedPointer<MainHostWindow> mainWindow; | |||
| }; | |||
| static PluginHostApp& getApp() { return *dynamic_cast<PluginHostApp*>(JUCEApplication::getInstance()); } | |||
| ApplicationCommandManager& getCommandManager() { return getApp().commandManager; } | |||
| ApplicationProperties& getAppProperties() { return *getApp().appProperties; } | |||
| static PluginHostApp& getApp() { return *dynamic_cast<PluginHostApp*>(JUCEApplication::getInstance()); } | |||
| ApplicationProperties& getAppProperties() { return *getApp().appProperties; } | |||
| ApplicationCommandManager& getCommandManager() { return getApp().commandManager; } | |||
| bool isOnTouchDevice() { return Desktop::getInstance().getMainMouseSource().isTouch(); } | |||
| // This kicks the whole thing off.. | |||
| START_JUCE_APPLICATION (PluginHostApp) | |||
| @@ -1,81 +0,0 @@ | |||
| /* | |||
| ============================================================================== | |||
| This file is part of the JUCE library. | |||
| Copyright (c) 2017 - ROLI Ltd. | |||
| JUCE is an open source library subject to commercial or open-source | |||
| licensing. | |||
| By using JUCE, you agree to the terms of both the JUCE 5 End-User License | |||
| Agreement and JUCE 5 Privacy Policy (both updated and effective as of the | |||
| 27th April 2017). | |||
| End User License Agreement: www.juce.com/juce-5-licence | |||
| Privacy Policy: www.juce.com/juce-5-privacy-policy | |||
| Or: You may also use this code under the terms of the GPL v3 (see | |||
| www.gnu.org/licenses). | |||
| JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER | |||
| EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE | |||
| DISCLAIMED. | |||
| ============================================================================== | |||
| */ | |||
| #include "../JuceLibraryCode/JuceHeader.h" | |||
| #include "InternalFilters.h" | |||
| #include "FilterGraph.h" | |||
| //============================================================================== | |||
| InternalPluginFormat::InternalPluginFormat() | |||
| { | |||
| { | |||
| AudioProcessorGraph::AudioGraphIOProcessor p (AudioProcessorGraph::AudioGraphIOProcessor::audioOutputNode); | |||
| p.fillInPluginDescription (audioOutDesc); | |||
| } | |||
| { | |||
| AudioProcessorGraph::AudioGraphIOProcessor p (AudioProcessorGraph::AudioGraphIOProcessor::audioInputNode); | |||
| p.fillInPluginDescription (audioInDesc); | |||
| } | |||
| { | |||
| AudioProcessorGraph::AudioGraphIOProcessor p (AudioProcessorGraph::AudioGraphIOProcessor::midiInputNode); | |||
| p.fillInPluginDescription (midiInDesc); | |||
| } | |||
| } | |||
| AudioPluginInstance* InternalPluginFormat::createInstance (const String& name) | |||
| { | |||
| if (name == audioOutDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::audioOutputNode); | |||
| if (name == audioInDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::audioInputNode); | |||
| if (name == midiInDesc.name) return new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::midiInputNode); | |||
| return nullptr; | |||
| } | |||
| void InternalPluginFormat::createPluginInstance (const PluginDescription& desc, | |||
| double /*initialSampleRate*/, | |||
| int /*initialBufferSize*/, | |||
| void* userData, | |||
| void (*callback) (void*, AudioPluginInstance*, const String&)) | |||
| { | |||
| auto* p = createInstance (desc.name); | |||
| callback (userData, p, p == nullptr ? NEEDS_TRANS ("Invalid internal filter name") : String()); | |||
| } | |||
| bool InternalPluginFormat::requiresUnblockedMessageThreadDuringCreation (const PluginDescription&) const noexcept | |||
| { | |||
| return false; | |||
| } | |||
| void InternalPluginFormat::getAllTypes (OwnedArray<PluginDescription>& results) | |||
| { | |||
| results.add (new PluginDescription (audioInDesc)); | |||
| results.add (new PluginDescription (audioOutDesc)); | |||
| results.add (new PluginDescription (midiInDesc)); | |||
| } | |||
| @@ -26,9 +26,73 @@ | |||
| #include "../JuceLibraryCode/JuceHeader.h" | |||
| #include "GraphEditorPanel.h" | |||
| #include "InternalFilters.h" | |||
| #include "../Filters/InternalFilters.h" | |||
| #include "MainHostWindow.h" | |||
| //============================================================================== | |||
| #if JUCE_IOS | |||
| class AUScanner | |||
| { | |||
| public: | |||
| AUScanner (KnownPluginList& list) | |||
| : knownPluginList (list), pool (5) | |||
| { | |||
| knownPluginList.clearBlacklistedFiles(); | |||
| paths = formatToScan.getDefaultLocationsToSearch(); | |||
| startScan(); | |||
| } | |||
| private: | |||
| KnownPluginList& knownPluginList; | |||
| AudioUnitPluginFormat formatToScan; | |||
| ScopedPointer<PluginDirectoryScanner> scanner; | |||
| FileSearchPath paths; | |||
| ThreadPool pool; | |||
| void startScan() | |||
| { | |||
| auto deadMansPedalFile = getAppProperties().getUserSettings() | |||
| ->getFile().getSiblingFile ("RecentlyCrashedPluginsList"); | |||
| scanner = new PluginDirectoryScanner (knownPluginList, formatToScan, paths, | |||
| true, deadMansPedalFile, true); | |||
| for (int i = 5; --i >= 0;) | |||
| pool.addJob (new ScanJob (*this), true); | |||
| } | |||
| bool doNextScan() | |||
| { | |||
| String pluginBeingScanned; | |||
| if (scanner->scanNextFile (true, pluginBeingScanned)) | |||
| return true; | |||
| return false; | |||
| } | |||
| struct ScanJob : public ThreadPoolJob | |||
| { | |||
| ScanJob (AUScanner& s) : ThreadPoolJob ("pluginscan"), scanner (s) {} | |||
| JobStatus runJob() | |||
| { | |||
| while (scanner.doNextScan() && ! shouldExit()) | |||
| {} | |||
| return jobHasFinished; | |||
| } | |||
| AUScanner& scanner; | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ScanJob) | |||
| }; | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AUScanner) | |||
| }; | |||
| #endif | |||
| //============================================================================== | |||
| struct GraphEditorPanel::PinComponent : public Component, | |||
| @@ -109,7 +173,9 @@ struct GraphEditorPanel::PinComponent : public Component, | |||
| }; | |||
| //============================================================================== | |||
| struct GraphEditorPanel::FilterComponent : public Component, private AudioProcessorParameter::Listener | |||
| struct GraphEditorPanel::FilterComponent : public Component, | |||
| public Timer, | |||
| private AudioProcessorParameter::Listener | |||
| { | |||
| FilterComponent (GraphEditorPanel& p, uint32 id) : panel (p), graph (p.graph), pluginID (id) | |||
| { | |||
| @@ -149,12 +215,22 @@ struct GraphEditorPanel::FilterComponent : public Component, private AudioProc | |||
| toFront (true); | |||
| if (e.mods.isPopupMenu()) | |||
| showPopupMenu(); | |||
| if (isOnTouchDevice()) | |||
| { | |||
| startTimer (750); | |||
| } | |||
| else | |||
| { | |||
| if (e.mods.isPopupMenu()) | |||
| showPopupMenu(); | |||
| } | |||
| } | |||
| void mouseDrag (const MouseEvent& e) override | |||
| { | |||
| if (isOnTouchDevice() && e.getDistanceFromDragStart() > 5) | |||
| stopTimer(); | |||
| if (! e.mods.isPopupMenu()) | |||
| { | |||
| auto pos = originalPos + e.getOffsetFromDragStart(); | |||
| @@ -174,6 +250,12 @@ struct GraphEditorPanel::FilterComponent : public Component, private AudioProc | |||
| void mouseUp (const MouseEvent& e) override | |||
| { | |||
| if (isOnTouchDevice()) | |||
| { | |||
| stopTimer(); | |||
| callAfterDelay (250, []() { PopupMenu::dismissAllActiveMenus(); }); | |||
| } | |||
| if (e.mouseWasDraggedSinceMouseDown()) | |||
| { | |||
| graph.setChangedFlag (true); | |||
| @@ -317,19 +399,26 @@ struct GraphEditorPanel::FilterComponent : public Component, private AudioProc | |||
| void showPopupMenu() | |||
| { | |||
| PopupMenu m; | |||
| m.addItem (1, "Delete this filter"); | |||
| m.addItem (2, "Disconnect all pins"); | |||
| m.addItem (3, "Toggle Bypass"); | |||
| m.addSeparator(); | |||
| m.addItem (10, "Show plugin GUI"); | |||
| m.addItem (11, "Show all programs"); | |||
| m.addItem (12, "Show all parameters"); | |||
| m.addSeparator(); | |||
| m.addItem (20, "Configure Audio I/O"); | |||
| m.addItem (21, "Test state save/load"); | |||
| switch (m.show()) | |||
| menu = new PopupMenu; | |||
| menu->addItem (1, "Delete this filter"); | |||
| menu->addItem (2, "Disconnect all pins"); | |||
| menu->addItem (3, "Toggle Bypass"); | |||
| if (getProcessor()->hasEditor()) | |||
| { | |||
| menu->addSeparator(); | |||
| menu->addItem (10, "Show plugin GUI"); | |||
| menu->addItem (11, "Show all programs"); | |||
| menu->addItem (12, "Show all parameters"); | |||
| } | |||
| menu->addSeparator(); | |||
| menu->addItem (20, "Configure Audio I/O"); | |||
| menu->addItem (21, "Test state save/load"); | |||
| menu->showMenuAsync ({}, ModalCallbackFunction::create | |||
| ([this] (int r) { | |||
| switch (r) | |||
| { | |||
| case 1: graph.graph.removeNode (pluginID); break; | |||
| case 2: graph.graph.disconnectNode (pluginID); break; | |||
| @@ -350,6 +439,7 @@ struct GraphEditorPanel::FilterComponent : public Component, private AudioProc | |||
| default: break; | |||
| } | |||
| })); | |||
| } | |||
| void testStateSaveLoad() | |||
| @@ -369,6 +459,15 @@ struct GraphEditorPanel::FilterComponent : public Component, private AudioProc | |||
| w->toFront (true); | |||
| } | |||
| void timerCallback() override | |||
| { | |||
| // this should only be called on touch devices | |||
| jassert (isOnTouchDevice()); | |||
| stopTimer(); | |||
| showPopupMenu(); | |||
| } | |||
| void parameterValueChanged (int, float) override | |||
| { | |||
| repaint(); | |||
| @@ -386,6 +485,7 @@ struct GraphEditorPanel::FilterComponent : public Component, private AudioProc | |||
| Font font { 13.0f, Font::bold }; | |||
| int numIns = 0, numOuts = 0; | |||
| DropShadowEffect shadow; | |||
| ScopedPointer<PopupMenu> menu; | |||
| }; | |||
| @@ -606,22 +706,31 @@ void GraphEditorPanel::paint (Graphics& g) | |||
| void GraphEditorPanel::mouseDown (const MouseEvent& e) | |||
| { | |||
| if (e.mods.isPopupMenu()) | |||
| if (isOnTouchDevice()) | |||
| { | |||
| PopupMenu m; | |||
| if (auto* mainWindow = findParentComponentOfClass<MainHostWindow>()) | |||
| { | |||
| mainWindow->addPluginsToMenu (m); | |||
| originalTouchPos = e.position.toInt(); | |||
| startTimer (750); | |||
| } | |||
| auto r = m.show(); | |||
| if (e.mods.isPopupMenu()) | |||
| showPopupMenu (e.position.toInt()); | |||
| } | |||
| if (auto* desc = mainWindow->getChosenType (r)) | |||
| createNewPlugin (*desc, e.position.toInt()); | |||
| } | |||
| void GraphEditorPanel::mouseUp (const MouseEvent&) | |||
| { | |||
| if (isOnTouchDevice()) | |||
| { | |||
| stopTimer(); | |||
| callAfterDelay (250, []() { PopupMenu::dismissAllActiveMenus(); }); | |||
| } | |||
| } | |||
| void GraphEditorPanel::mouseDrag (const MouseEvent& e) | |||
| { | |||
| if (isOnTouchDevice() && e.getDistanceFromDragStart() > 5) | |||
| stopTimer(); | |||
| } | |||
| void GraphEditorPanel::createNewPlugin (const PluginDescription& desc, Point<int> position) | |||
| { | |||
| graph.addPlugin (desc, position.toDouble() / Point<double> ((double) getWidth(), (double) getHeight())); | |||
| @@ -709,6 +818,24 @@ void GraphEditorPanel::updateComponents() | |||
| } | |||
| } | |||
| void GraphEditorPanel::showPopupMenu (Point<int> mousePos) | |||
| { | |||
| menu = new PopupMenu; | |||
| if (auto* mainWindow = findParentComponentOfClass<MainHostWindow>()) | |||
| { | |||
| mainWindow->addPluginsToMenu (*menu); | |||
| menu->showMenuAsync ({}, | |||
| ModalCallbackFunction::create ([this, mousePos] (int r) | |||
| { | |||
| if (auto* mainWindow = findParentComponentOfClass<MainHostWindow>()) | |||
| if (auto* desc = mainWindow->getChosenType (r)) | |||
| createNewPlugin (*desc, mousePos); | |||
| })); | |||
| } | |||
| } | |||
| void GraphEditorPanel::beginConnectorDrag (AudioProcessorGraph::NodeAndChannel source, | |||
| AudioProcessorGraph::NodeAndChannel dest, | |||
| const MouseEvent& e) | |||
| @@ -799,6 +926,15 @@ void GraphEditorPanel::endDraggingConnector (const MouseEvent& e) | |||
| } | |||
| } | |||
| void GraphEditorPanel::timerCallback() | |||
| { | |||
| // this should only be called on touch devices | |||
| jassert (isOnTouchDevice()); | |||
| stopTimer(); | |||
| showPopupMenu (originalTouchPos); | |||
| } | |||
| //============================================================================== | |||
| struct GraphDocumentComponent::TooltipBar : public Component, | |||
| private Timer | |||
| @@ -837,14 +973,189 @@ struct GraphDocumentComponent::TooltipBar : public Component, | |||
| }; | |||
| //============================================================================== | |||
| GraphDocumentComponent::GraphDocumentComponent (AudioPluginFormatManager& fm, AudioDeviceManager& dm) | |||
| : graph (new FilterGraph (fm)), deviceManager (dm), | |||
| class GraphDocumentComponent::TitleBarComponent : public Component, | |||
| private Button::Listener | |||
| { | |||
| public: | |||
| TitleBarComponent (GraphDocumentComponent& graphDocumentComponent) | |||
| : owner (graphDocumentComponent) | |||
| { | |||
| static const unsigned char burgerMenuPathData[] | |||
| = { 110,109,0,0,128,64,0,0,32,65,108,0,0,224,65,0,0,32,65,98,254,212,232,65,0,0,32,65,0,0,240,65,252, | |||
| 169,17,65,0,0,240,65,0,0,0,65,98,0,0,240,65,8,172,220,64,254,212,232,65,0,0,192,64,0,0,224,65,0,0, | |||
| 192,64,108,0,0,128,64,0,0,192,64,98,16,88,57,64,0,0,192,64,0,0,0,64,8,172,220,64,0,0,0,64,0,0,0,65, | |||
| 98,0,0,0,64,252,169,17,65,16,88,57,64,0,0,32,65,0,0,128,64,0,0,32,65,99,109,0,0,224,65,0,0,96,65,108, | |||
| 0,0,128,64,0,0,96,65,98,16,88,57,64,0,0,96,65,0,0,0,64,4,86,110,65,0,0,0,64,0,0,128,65,98,0,0,0,64, | |||
| 254,212,136,65,16,88,57,64,0,0,144,65,0,0,128,64,0,0,144,65,108,0,0,224,65,0,0,144,65,98,254,212,232, | |||
| 65,0,0,144,65,0,0,240,65,254,212,136,65,0,0,240,65,0,0,128,65,98,0,0,240,65,4,86,110,65,254,212,232, | |||
| 65,0,0,96,65,0,0,224,65,0,0,96,65,99,109,0,0,224,65,0,0,176,65,108,0,0,128,64,0,0,176,65,98,16,88,57, | |||
| 64,0,0,176,65,0,0,0,64,2,43,183,65,0,0,0,64,0,0,192,65,98,0,0,0,64,254,212,200,65,16,88,57,64,0,0,208, | |||
| 65,0,0,128,64,0,0,208,65,108,0,0,224,65,0,0,208,65,98,254,212,232,65,0,0,208,65,0,0,240,65,254,212, | |||
| 200,65,0,0,240,65,0,0,192,65,98,0,0,240,65,2,43,183,65,254,212,232,65,0,0,176,65,0,0,224,65,0,0,176, | |||
| 65,99,101,0,0 }; | |||
| static const unsigned char pluginListPathData[] | |||
| = { 110,109,193,202,222,64,80,50,21,64,108,0,0,48,65,0,0,0,0,108,160,154,112,65,80,50,21,64,108,0,0,48,65,80, | |||
| 50,149,64,108,193,202,222,64,80,50,21,64,99,109,0,0,192,64,251,220,127,64,108,160,154,32,65,165,135,202, | |||
| 64,108,160,154,32,65,250,220,47,65,108,0,0,192,64,102,144,10,65,108,0,0,192,64,251,220,127,64,99,109,0,0, | |||
| 128,65,251,220,127,64,108,0,0,128,65,103,144,10,65,108,96,101,63,65,251,220,47,65,108,96,101,63,65,166,135, | |||
| 202,64,108,0,0,128,65,251,220,127,64,99,109,96,101,79,65,148,76,69,65,108,0,0,136,65,0,0,32,65,108,80, | |||
| 77,168,65,148,76,69,65,108,0,0,136,65,40,153,106,65,108,96,101,79,65,148,76,69,65,99,109,0,0,64,65,63,247, | |||
| 95,65,108,80,77,128,65,233,161,130,65,108,80,77,128,65,125,238,167,65,108,0,0,64,65,51,72,149,65,108,0,0,64, | |||
| 65,63,247,95,65,99,109,0,0,176,65,63,247,95,65,108,0,0,176,65,51,72,149,65,108,176,178,143,65,125,238,167,65, | |||
| 108,176,178,143,65,233,161,130,65,108,0,0,176,65,63,247,95,65,99,109,12,86,118,63,148,76,69,65,108,0,0,160, | |||
| 64,0,0,32,65,108,159,154,16,65,148,76,69,65,108,0,0,160,64,40,153,106,65,108,12,86,118,63,148,76,69,65,99, | |||
| 109,0,0,0,0,63,247,95,65,108,62,53,129,64,233,161,130,65,108,62,53,129,64,125,238,167,65,108,0,0,0,0,51, | |||
| 72,149,65,108,0,0,0,0,63,247,95,65,99,109,0,0,32,65,63,247,95,65,108,0,0,32,65,51,72,149,65,108,193,202,190, | |||
| 64,125,238,167,65,108,193,202,190,64,233,161,130,65,108,0,0,32,65,63,247,95,65,99,101,0,0 }; | |||
| { | |||
| Path p; | |||
| p.loadPathFromData (burgerMenuPathData, sizeof (burgerMenuPathData)); | |||
| burgerButton.setShape (p, true, true, false); | |||
| } | |||
| { | |||
| Path p; | |||
| p.loadPathFromData (pluginListPathData, sizeof (pluginListPathData)); | |||
| pluginButton.setShape (p, true, true, false); | |||
| } | |||
| burgerButton.addListener (this); | |||
| addAndMakeVisible (burgerButton); | |||
| pluginButton.addListener (this); | |||
| addAndMakeVisible (pluginButton); | |||
| titleLabel.setJustificationType (Justification::centredLeft); | |||
| addAndMakeVisible (titleLabel); | |||
| setOpaque (true); | |||
| } | |||
| private: | |||
| void paint (Graphics& g) override | |||
| { | |||
| auto titleBarBackgroundColour = getLookAndFeel().findColour (ResizableWindow::backgroundColourId).darker(); | |||
| g.setColour (titleBarBackgroundColour); | |||
| g.fillRect (getLocalBounds()); | |||
| } | |||
| void resized() override | |||
| { | |||
| auto r = getLocalBounds(); | |||
| burgerButton.setBounds (r.removeFromLeft (40).withSizeKeepingCentre (20, 20)); | |||
| pluginButton.setBounds (r.removeFromRight (40).withSizeKeepingCentre (20, 20)); | |||
| titleLabel.setFont (Font (static_cast<float> (getHeight()) * 0.5f, Font::plain)); | |||
| titleLabel.setBounds (r); | |||
| } | |||
| void buttonClicked (Button* b) override | |||
| { | |||
| owner.showSidePanel (b == &burgerButton); | |||
| } | |||
| GraphDocumentComponent& owner; | |||
| Label titleLabel {"titleLabel", "Plugin Host"}; | |||
| ShapeButton burgerButton {"burgerButton", Colours::lightgrey, Colours::lightgrey, Colours::white}; | |||
| ShapeButton pluginButton {"pluginButton", Colours::lightgrey, Colours::lightgrey, Colours::white}; | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TitleBarComponent) | |||
| }; | |||
| //============================================================================== | |||
| struct GraphDocumentComponent::PluginListBoxModel : public ListBoxModel, | |||
| public ChangeListener, | |||
| public MouseListener | |||
| { | |||
| PluginListBoxModel (ListBox& lb, KnownPluginList& kpl) | |||
| : owner (lb), | |||
| knownPlugins (kpl) | |||
| { | |||
| knownPlugins.addChangeListener (this); | |||
| owner.addMouseListener (this, true); | |||
| #if JUCE_IOS | |||
| scanner = new AUScanner (knownPlugins); | |||
| #endif | |||
| } | |||
| int getNumRows() override | |||
| { | |||
| return knownPlugins.getNumTypes(); | |||
| } | |||
| void paintListBoxItem (int rowNumber, Graphics& g, | |||
| int width, int height, bool rowIsSelected) override | |||
| { | |||
| g.fillAll (rowIsSelected ? Colour (0xff42A2C8) | |||
| : Colour (0xff263238)); | |||
| g.setColour (rowIsSelected ? Colours::black : Colours::white); | |||
| if (rowNumber < knownPlugins.getNumTypes()) | |||
| g.drawFittedText (knownPlugins.getType (rowNumber)->name, | |||
| { 0, 0, width, height - 2 }, | |||
| Justification::centred, | |||
| 1); | |||
| g.setColour (Colours::black.withAlpha (0.4f)); | |||
| g.drawRect (0, height - 1, width, 1); | |||
| } | |||
| var getDragSourceDescription (const SparseSet<int>& selectedRows) override | |||
| { | |||
| if (! isOverSelectedRow) | |||
| return var(); | |||
| return String ("PLUGIN: " + String (selectedRows[0])); | |||
| } | |||
| void changeListenerCallback (ChangeBroadcaster*) override | |||
| { | |||
| owner.updateContent(); | |||
| } | |||
| void mouseDown (const MouseEvent& e) override | |||
| { | |||
| isOverSelectedRow = owner.getRowPosition (owner.getSelectedRow(), true) | |||
| .contains (e.getEventRelativeTo (&owner).getMouseDownPosition()); | |||
| } | |||
| ListBox& owner; | |||
| KnownPluginList& knownPlugins; | |||
| bool isOverSelectedRow = false; | |||
| #if JUCE_IOS | |||
| ScopedPointer<AUScanner> scanner; | |||
| #endif | |||
| }; | |||
| //============================================================================== | |||
| GraphDocumentComponent::GraphDocumentComponent (AudioPluginFormatManager& fm, | |||
| AudioDeviceManager& dm, | |||
| KnownPluginList& kpl) | |||
| : graph (new FilterGraph (fm)), | |||
| deviceManager (dm), | |||
| pluginList (kpl), | |||
| graphPlayer (getAppProperties().getUserSettings()->getBoolValue ("doublePrecisionProcessing", false)) | |||
| { | |||
| addAndMakeVisible (graphPanel = new GraphEditorPanel (*graph)); | |||
| init(); | |||
| deviceManager.addChangeListener (graphPanel); | |||
| deviceManager.addAudioCallback (&graphPlayer); | |||
| deviceManager.addMidiInputCallback (String(), &graphPlayer.getMidiMessageCollector()); | |||
| } | |||
| void GraphDocumentComponent::init() | |||
| { | |||
| addAndMakeVisible (graphPanel = new GraphEditorPanel (*graph)); | |||
| graphPlayer.setProcessor (&graph->graph); | |||
| keyState.addListener (&graphPlayer.getMidiMessageCollector()); | |||
| @@ -852,10 +1163,30 @@ GraphDocumentComponent::GraphDocumentComponent (AudioPluginFormatManager& fm, Au | |||
| addAndMakeVisible (keyboardComp = new MidiKeyboardComponent (keyState, MidiKeyboardComponent::horizontalKeyboard)); | |||
| addAndMakeVisible (statusBar = new TooltipBar()); | |||
| deviceManager.addAudioCallback (&graphPlayer); | |||
| deviceManager.addMidiInputCallback (String(), &graphPlayer.getMidiMessageCollector()); | |||
| graphPanel->updateComponents(); | |||
| if (isOnTouchDevice()) | |||
| { | |||
| if (isOnTouchDevice()) | |||
| addAndMakeVisible (titleBarComponent = new TitleBarComponent (*this)); | |||
| pluginListBoxModel = new PluginListBoxModel (pluginListBox, pluginList); | |||
| pluginListBox.setModel (pluginListBoxModel); | |||
| pluginListBox.setRowHeight (40); | |||
| pluginListSidePanel.setContent (&pluginListBox, false); | |||
| mobileSettingsSidePanel.setContent (new AudioDeviceSelectorComponent (deviceManager, | |||
| 0, 2, 0, 2, | |||
| true, true, true, false)); | |||
| if (isOnTouchDevice()) | |||
| { | |||
| addAndMakeVisible (pluginListSidePanel); | |||
| addAndMakeVisible (mobileSettingsSidePanel); | |||
| } | |||
| } | |||
| } | |||
| GraphDocumentComponent::~GraphDocumentComponent() | |||
| @@ -867,12 +1198,19 @@ GraphDocumentComponent::~GraphDocumentComponent() | |||
| void GraphDocumentComponent::resized() | |||
| { | |||
| auto r = getLocalBounds(); | |||
| const int titleBarHeight = 40; | |||
| const int keysHeight = 60; | |||
| const int statusHeight = 20; | |||
| graphPanel->setBounds (0, 0, getWidth(), getHeight() - keysHeight); | |||
| statusBar->setBounds (0, getHeight() - keysHeight - statusHeight, getWidth(), statusHeight); | |||
| keyboardComp->setBounds (0, getHeight() - keysHeight, getWidth(), keysHeight); | |||
| if (isOnTouchDevice()) | |||
| titleBarComponent->setBounds (r.removeFromTop(titleBarHeight)); | |||
| keyboardComp->setBounds (r.removeFromBottom (keysHeight)); | |||
| statusBar->setBounds (r.removeFromBottom (statusHeight)); | |||
| graphPanel->setBounds (r); | |||
| checkAvailableWidth(); | |||
| } | |||
| void GraphDocumentComponent::createNewPlugin (const PluginDescription& desc, Point<int> pos) | |||
| @@ -903,6 +1241,60 @@ void GraphDocumentComponent::releaseGraph() | |||
| graph = nullptr; | |||
| } | |||
| bool GraphDocumentComponent::isInterestedInDragSource (const SourceDetails& details) | |||
| { | |||
| return ((dynamic_cast<ListBox*> (details.sourceComponent.get()) != nullptr) | |||
| && details.description.toString().startsWith ("PLUGIN")); | |||
| } | |||
| void GraphDocumentComponent::itemDropped (const SourceDetails& details) | |||
| { | |||
| // don't allow items to be dropped behind the sidebar | |||
| if (pluginListSidePanel.getBounds().contains (details.localPosition)) | |||
| return; | |||
| auto pluginTypeIndex = details.description.toString() | |||
| .fromFirstOccurrenceOf ("PLUGIN: ", false, false) | |||
| .getIntValue(); | |||
| // must be a valid index! | |||
| jassert (isPositiveAndBelow (pluginTypeIndex, pluginList.getNumTypes())); | |||
| createNewPlugin (*pluginList.getType (pluginTypeIndex), details.localPosition); | |||
| } | |||
| void GraphDocumentComponent::showSidePanel (bool showSettingsPanel) | |||
| { | |||
| if (showSettingsPanel) | |||
| mobileSettingsSidePanel.showOrHide (true); | |||
| else | |||
| pluginListSidePanel.showOrHide (true); | |||
| checkAvailableWidth(); | |||
| lastOpenedSidePanel = showSettingsPanel ? &mobileSettingsSidePanel | |||
| : &pluginListSidePanel; | |||
| } | |||
| void GraphDocumentComponent::hideLastSidePanel() | |||
| { | |||
| if (lastOpenedSidePanel != nullptr) | |||
| lastOpenedSidePanel->showOrHide (false); | |||
| if (mobileSettingsSidePanel.isPanelShowing()) lastOpenedSidePanel = &mobileSettingsSidePanel; | |||
| else if (pluginListSidePanel.isPanelShowing()) lastOpenedSidePanel = &pluginListSidePanel; | |||
| else lastOpenedSidePanel = nullptr; | |||
| } | |||
| void GraphDocumentComponent::checkAvailableWidth() | |||
| { | |||
| if (mobileSettingsSidePanel.isPanelShowing() && pluginListSidePanel.isPanelShowing()) | |||
| { | |||
| if (getWidth() - (mobileSettingsSidePanel.getWidth() + pluginListSidePanel.getWidth()) < 150) | |||
| hideLastSidePanel(); | |||
| } | |||
| } | |||
| void GraphDocumentComponent::setDoublePrecision (bool doublePrecision) | |||
| { | |||
| graphPlayer.setDoublePrecisionProcessing (doublePrecision); | |||
| @@ -26,15 +26,17 @@ | |||
| #pragma once | |||
| #include "FilterGraph.h" | |||
| #include "../Filters/FilterGraph.h" | |||
| class MainHostWindow; | |||
| //============================================================================== | |||
| /** | |||
| A panel that displays and edits a FilterGraph. | |||
| */ | |||
| class GraphEditorPanel : public Component, | |||
| public ChangeListener | |||
| public ChangeListener, | |||
| private Timer | |||
| { | |||
| public: | |||
| GraphEditorPanel (FilterGraph& graph); | |||
| @@ -43,11 +45,20 @@ public: | |||
| void createNewPlugin (const PluginDescription&, Point<int> position); | |||
| void paint (Graphics&) override; | |||
| void mouseDown (const MouseEvent&) override; | |||
| void resized() override; | |||
| void mouseDown (const MouseEvent&) override; | |||
| void mouseUp (const MouseEvent&) override; | |||
| void mouseDrag (const MouseEvent&) override; | |||
| void changeListenerCallback (ChangeBroadcaster*) override; | |||
| //============================================================================== | |||
| void updateComponents(); | |||
| //============================================================================== | |||
| void showPopupMenu (Point<int> position); | |||
| //============================================================================== | |||
| void beginConnectorDrag (AudioProcessorGraph::NodeAndChannel source, | |||
| AudioProcessorGraph::NodeAndChannel dest, | |||
| @@ -66,11 +77,17 @@ private: | |||
| OwnedArray<FilterComponent> nodes; | |||
| OwnedArray<ConnectorComponent> connectors; | |||
| ScopedPointer<ConnectorComponent> draggingConnector; | |||
| ScopedPointer<PopupMenu> menu; | |||
| FilterComponent* getComponentForFilter (AudioProcessorGraph::NodeID) const; | |||
| ConnectorComponent* getComponentForConnection (const AudioProcessorGraph::Connection&) const; | |||
| PinComponent* findPinAt (Point<float>) const; | |||
| //============================================================================== | |||
| Point<int> originalTouchPos; | |||
| void timerCallback() override; | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (GraphEditorPanel) | |||
| }; | |||
| @@ -81,11 +98,15 @@ private: | |||
| It also manages the graph itself, and plays it. | |||
| */ | |||
| class GraphDocumentComponent : public Component | |||
| class GraphDocumentComponent : public Component, | |||
| public DragAndDropTarget, | |||
| public DragAndDropContainer | |||
| { | |||
| public: | |||
| GraphDocumentComponent (AudioPluginFormatManager& formatManager, | |||
| AudioDeviceManager& deviceManager); | |||
| AudioDeviceManager& deviceManager, | |||
| KnownPluginList& pluginList); | |||
| ~GraphDocumentComponent(); | |||
| //============================================================================== | |||
| @@ -96,21 +117,52 @@ public: | |||
| //============================================================================== | |||
| ScopedPointer<FilterGraph> graph; | |||
| void resized(); | |||
| void resized() override; | |||
| void unfocusKeyboardComponent(); | |||
| void releaseGraph(); | |||
| //============================================================================== | |||
| bool isInterestedInDragSource (const SourceDetails&) override; | |||
| void itemDropped (const SourceDetails&) override; | |||
| //============================================================================== | |||
| ScopedPointer<GraphEditorPanel> graphPanel; | |||
| ScopedPointer<MidiKeyboardComponent> keyboardComp; | |||
| //============================================================================== | |||
| void showSidePanel (bool isSettingsPanel); | |||
| void hideLastSidePanel(); | |||
| BurgerMenuComponent burgerMenu; | |||
| private: | |||
| //============================================================================== | |||
| AudioDeviceManager& deviceManager; | |||
| KnownPluginList& pluginList; | |||
| AudioProcessorPlayer graphPlayer; | |||
| MidiKeyboardState keyState; | |||
| struct TooltipBar; | |||
| ScopedPointer<TooltipBar> statusBar; | |||
| class TitleBarComponent; | |||
| ScopedPointer<TitleBarComponent> titleBarComponent; | |||
| //============================================================================== | |||
| struct PluginListBoxModel; | |||
| ScopedPointer<PluginListBoxModel> pluginListBoxModel; | |||
| ListBox pluginListBox; | |||
| SidePanel mobileSettingsSidePanel { "Settings", 300, true }; | |||
| SidePanel pluginListSidePanel { "Plugins", 250, false }; | |||
| SidePanel* lastOpenedSidePanel = nullptr; | |||
| //============================================================================== | |||
| void init(); | |||
| void checkAvailableWidth(); | |||
| //============================================================================== | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (GraphDocumentComponent) | |||
| }; | |||
| @@ -26,7 +26,7 @@ | |||
| #include "../JuceLibraryCode/JuceHeader.h" | |||
| #include "MainHostWindow.h" | |||
| #include "InternalFilters.h" | |||
| #include "../Filters/InternalFilters.h" | |||
| //============================================================================== | |||
| @@ -81,16 +81,24 @@ MainHostWindow::MainHostWindow() | |||
| formatManager.addDefaultFormats(); | |||
| formatManager.addFormat (new InternalPluginFormat()); | |||
| ScopedPointer<XmlElement> savedAudioState (getAppProperties().getUserSettings() | |||
| ->getXmlValue ("audioDeviceState")); | |||
| RuntimePermissions::request (RuntimePermissions::recordAudio, | |||
| [safeThis = SafePointer<MainHostWindow> (this)] (bool granted) mutable | |||
| { | |||
| ScopedPointer<XmlElement> savedAudioState (getAppProperties().getUserSettings() | |||
| ->getXmlValue ("audioDeviceState")); | |||
| deviceManager.initialise (256, 256, savedAudioState, true); | |||
| safeThis->deviceManager.initialise (granted ? 256 : 0, 256, savedAudioState, true); | |||
| }); | |||
| #if JUCE_IOS || JUCE_ANDROID | |||
| setFullScreen (true); | |||
| #else | |||
| setResizable (true, false); | |||
| setResizeLimits (500, 400, 10000, 10000); | |||
| centreWithSize (800, 600); | |||
| #endif | |||
| graphHolder = new GraphDocumentComponent (formatManager, deviceManager); | |||
| graphHolder = new GraphDocumentComponent (formatManager, deviceManager, knownPluginList); | |||
| setContentNonOwned (graphHolder, false); | |||
| @@ -106,6 +114,9 @@ MainHostWindow::MainHostWindow() | |||
| if (savedPluginList != nullptr) | |||
| knownPluginList.recreateFromXml (*savedPluginList); | |||
| for (auto* t : internalTypes) | |||
| knownPluginList.addType (*t); | |||
| pluginSortMethod = (KnownPluginList::SortMethod) getAppProperties().getUserSettings() | |||
| ->getIntValue ("pluginSortMethod", KnownPluginList::sortByManufacturer); | |||
| @@ -118,11 +129,15 @@ MainHostWindow::MainHostWindow() | |||
| Process::setPriority (Process::HighPriority); | |||
| #if JUCE_IOS || JUCE_ANDROID | |||
| graphHolder->burgerMenu.setModel (this); | |||
| #else | |||
| #if JUCE_MAC | |||
| setMacMainMenu (this); | |||
| #else | |||
| setMenuBar (this); | |||
| #endif | |||
| #endif | |||
| getCommandManager().setFirstCommandTarget (this); | |||
| } | |||
| @@ -138,11 +153,13 @@ MainHostWindow::~MainHostWindow() | |||
| getAppProperties().getUserSettings()->setValue ("mainWindowPos", getWindowStateAsString()); | |||
| clearContentComponent(); | |||
| #if ! (JUCE_ANDROID || JUCE_IOS) | |||
| #if JUCE_MAC | |||
| setMacMainMenu (nullptr); | |||
| #else | |||
| setMenuBar (nullptr); | |||
| #endif | |||
| #endif | |||
| graphHolder = nullptr; | |||
| } | |||
| @@ -181,7 +198,11 @@ void MainHostWindow::tryToQuitApplication() | |||
| { | |||
| new AsyncQuitRetrier(); | |||
| } | |||
| #if JUCE_ANDROID || JUCE_IOS | |||
| else if (graphHolder == nullptr || graphHolder->graph->saveDocument (FilterGraph::getDefaultGraphDocumentOnMobile())) | |||
| #else | |||
| else if (graphHolder == nullptr || graphHolder->graph->saveIfNeededAndUserAgrees() == FileBasedDocument::savedOk) | |||
| #endif | |||
| { | |||
| // Some plug-ins do not want [NSApp stop] to be called | |||
| // before the plug-ins are not deallocated. | |||
| @@ -197,7 +218,7 @@ void MainHostWindow::changeListenerCallback (ChangeBroadcaster* changed) | |||
| { | |||
| menuItemsChanged(); | |||
| // save the plugin list every time it gets chnaged, so that if we're scanning | |||
| // save the plugin list every time it gets changed, so that if we're scanning | |||
| // and it crashes, we've still saved the previous ones | |||
| ScopedPointer<XmlElement> savedPluginList (knownPluginList.createXml()); | |||
| @@ -236,8 +257,10 @@ PopupMenu MainHostWindow::getMenuForIndex (int topLevelMenuIndex, const String& | |||
| if (topLevelMenuIndex == 0) | |||
| { | |||
| // "File" menu | |||
| #if ! (JUCE_IOS || JUCE_ANDROID) | |||
| menu.addCommandItem (&getCommandManager(), CommandIDs::newFile); | |||
| menu.addCommandItem (&getCommandManager(), CommandIDs::open); | |||
| #endif | |||
| RecentlyOpenedFilesList recentFiles; | |||
| recentFiles.restoreFromString (getAppProperties().getUserSettings() | |||
| @@ -247,8 +270,11 @@ PopupMenu MainHostWindow::getMenuForIndex (int topLevelMenuIndex, const String& | |||
| recentFiles.createPopupMenuItems (recentFilesMenu, 100, true, true); | |||
| menu.addSubMenu ("Open recent file", recentFilesMenu); | |||
| #if ! (JUCE_IOS || JUCE_ANDROID) | |||
| menu.addCommandItem (&getCommandManager(), CommandIDs::save); | |||
| menu.addCommandItem (&getCommandManager(), CommandIDs::saveAs); | |||
| #endif | |||
| menu.addSeparator(); | |||
| menu.addCommandItem (&getCommandManager(), StandardApplicationCommandIDs::quit); | |||
| } | |||
| @@ -298,6 +324,7 @@ void MainHostWindow::menuItemSelected (int menuItemID, int /*topLevelMenuIndex*/ | |||
| if (auto* graph = graphHolder->graph.get()) | |||
| graph->clear(); | |||
| } | |||
| #if ! (JUCE_ANDROID || JUCE_IOS) | |||
| else if (menuItemID >= 100 && menuItemID < 200) | |||
| { | |||
| RecentlyOpenedFilesList recentFiles; | |||
| @@ -309,6 +336,7 @@ void MainHostWindow::menuItemSelected (int menuItemID, int /*topLevelMenuIndex*/ | |||
| if (graph != nullptr && graph->saveIfNeededAndUserAgrees() == FileBasedDocument::savedOk) | |||
| graph->loadFrom (recentFiles.getFile (menuItemID - 100), true); | |||
| } | |||
| #endif | |||
| else if (menuItemID >= 200 && menuItemID < 210) | |||
| { | |||
| if (menuItemID == 200) pluginSortMethod = KnownPluginList::defaultOrder; | |||
| @@ -375,10 +403,13 @@ ApplicationCommandTarget* MainHostWindow::getNextCommandTarget() | |||
| void MainHostWindow::getAllCommands (Array<CommandID>& commands) | |||
| { | |||
| // this returns the set of all commands that this target can perform.. | |||
| const CommandID ids[] = { CommandIDs::newFile, | |||
| const CommandID ids[] = { | |||
| #if ! (JUCE_IOS || JUCE_ANDROID) | |||
| CommandIDs::newFile, | |||
| CommandIDs::open, | |||
| CommandIDs::save, | |||
| CommandIDs::saveAs, | |||
| #endif | |||
| CommandIDs::showPluginListEditor, | |||
| CommandIDs::showAudioSettings, | |||
| CommandIDs::toggleDoublePrecision, | |||
| @@ -395,6 +426,7 @@ void MainHostWindow::getCommandInfo (const CommandID commandID, ApplicationComma | |||
| switch (commandID) | |||
| { | |||
| #if ! (JUCE_IOS || JUCE_ANDROID) | |||
| case CommandIDs::newFile: | |||
| result.setInfo ("New", "Creates a new filter graph file", category, 0); | |||
| result.defaultKeypresses.add(KeyPress('n', ModifierKeys::commandModifier, 0)); | |||
| @@ -416,6 +448,7 @@ void MainHostWindow::getCommandInfo (const CommandID commandID, ApplicationComma | |||
| category, 0); | |||
| result.defaultKeypresses.add (KeyPress ('s', ModifierKeys::shiftModifier | ModifierKeys::commandModifier, 0)); | |||
| break; | |||
| #endif | |||
| case CommandIDs::showPluginListEditor: | |||
| result.setInfo ("Edit the list of available plug-Ins...", String(), category, 0); | |||
| @@ -449,6 +482,7 @@ bool MainHostWindow::perform (const InvocationInfo& info) | |||
| { | |||
| switch (info.commandID) | |||
| { | |||
| #if ! (JUCE_IOS || JUCE_ANDROID) | |||
| case CommandIDs::newFile: | |||
| if (graphHolder != nullptr && graphHolder->graph != nullptr && graphHolder->graph->saveIfNeededAndUserAgrees() == FileBasedDocument::savedOk) | |||
| graphHolder->graph->newDocument(); | |||
| @@ -468,6 +502,7 @@ bool MainHostWindow::perform (const InvocationInfo& info) | |||
| if (graphHolder != nullptr && graphHolder->graph != nullptr) | |||
| graphHolder->graph->saveAs (File(), true, true, true); | |||
| break; | |||
| #endif | |||
| case CommandIDs::showPluginListEditor: | |||
| if (pluginListWindow == nullptr) | |||
| @@ -520,15 +555,16 @@ bool MainHostWindow::perform (const InvocationInfo& info) | |||
| void MainHostWindow::showAudioSettings() | |||
| { | |||
| AudioDeviceSelectorComponent audioSettingsComp (deviceManager, | |||
| 0, 256, | |||
| 0, 256, | |||
| true, true, true, false); | |||
| auto* audioSettingsComp = new AudioDeviceSelectorComponent (deviceManager, | |||
| 0, 256, | |||
| 0, 256, | |||
| true, true, | |||
| true, false); | |||
| audioSettingsComp.setSize (500, 450); | |||
| audioSettingsComp->setSize (500, 450); | |||
| DialogWindow::LaunchOptions o; | |||
| o.content.setNonOwned (&audioSettingsComp); | |||
| o.content.setOwned (audioSettingsComp); | |||
| o.dialogTitle = "Audio Settings"; | |||
| o.componentToCentreAround = this; | |||
| o.dialogBackgroundColour = getLookAndFeel().findColour (ResizableWindow::backgroundColourId); | |||
| @@ -536,16 +572,20 @@ void MainHostWindow::showAudioSettings() | |||
| o.useNativeTitleBar = false; | |||
| o.resizable = false; | |||
| o.runModal(); | |||
| auto* w = o.create(); | |||
| w->enterModalState (true, | |||
| ModalCallbackFunction::create | |||
| ([safeThis = SafePointer<MainHostWindow> (this)] (int) | |||
| { | |||
| ScopedPointer<XmlElement> audioState (safeThis->deviceManager.createStateXml()); | |||
| ScopedPointer<XmlElement> audioState (deviceManager.createStateXml()); | |||
| getAppProperties().getUserSettings()->setValue ("audioDeviceState", audioState); | |||
| getAppProperties().getUserSettings()->saveIfNeeded(); | |||
| getAppProperties().getUserSettings()->setValue ("audioDeviceState", audioState); | |||
| getAppProperties().getUserSettings()->saveIfNeeded(); | |||
| if (graphHolder != nullptr) | |||
| if (graphHolder->graph != nullptr) | |||
| graphHolder->graph->graph.removeIllegalConnections(); | |||
| if (safeThis->graphHolder != nullptr) | |||
| if (safeThis->graphHolder->graph != nullptr) | |||
| safeThis->graphHolder->graph->graph.removeIllegalConnections(); | |||
| }), true); | |||
| } | |||
| bool MainHostWindow::isInterestedInFileDrag (const StringArray&) | |||
| @@ -569,6 +609,7 @@ void MainHostWindow::filesDropped (const StringArray& files, int x, int y) | |||
| { | |||
| if (graphHolder != nullptr) | |||
| { | |||
| #if ! (JUCE_ANDROID || JUCE_IOS) | |||
| if (files.size() == 1 && File (files[0]).hasFileExtension (FilterGraph::getFilenameSuffix())) | |||
| { | |||
| if (auto* filterGraph = graphHolder->graph.get()) | |||
| @@ -576,6 +617,7 @@ void MainHostWindow::filesDropped (const StringArray& files, int x, int y) | |||
| filterGraph->loadFrom (File (files[0]), true); | |||
| } | |||
| else | |||
| #endif | |||
| { | |||
| OwnedArray<PluginDescription> typesFound; | |||
| knownPluginList.scanAndAddDragAndDroppedFiles (formatManager, files, typesFound); | |||
| @@ -26,17 +26,19 @@ | |||
| #pragma once | |||
| #include "FilterGraph.h" | |||
| #include "../Filters/FilterGraph.h" | |||
| #include "GraphEditorPanel.h" | |||
| //============================================================================== | |||
| namespace CommandIDs | |||
| { | |||
| #if ! (JUCE_IOS || JUCE_ANDROID) | |||
| static const int open = 0x30000; | |||
| static const int save = 0x30001; | |||
| static const int saveAs = 0x30002; | |||
| static const int newFile = 0x30003; | |||
| #endif | |||
| static const int showPluginListEditor = 0x30100; | |||
| static const int showAudioSettings = 0x30200; | |||
| static const int aboutBox = 0x30300; | |||
| @@ -46,6 +48,7 @@ namespace CommandIDs | |||
| ApplicationCommandManager& getCommandManager(); | |||
| ApplicationProperties& getAppProperties(); | |||
| bool isOnTouchDevice(); | |||
| //============================================================================== | |||
| class MainHostWindow : public DocumentWindow, | |||
| @@ -26,7 +26,8 @@ | |||
| #pragma once | |||
| #include "FilterIOConfiguration.h" | |||
| #include "../Filters/FilterIOConfiguration.h" | |||
| class FilterGraph; | |||
| //============================================================================== | |||
| @@ -57,8 +58,18 @@ public: | |||
| if (auto* ui = createProcessorEditor (*node->getProcessor(), type)) | |||
| setContentOwned (ui, true); | |||
| #if JUCE_IOS || JUCE_ANDROID | |||
| auto screenBounds = Desktop::getInstance().getDisplays().getTotalBounds (true).toFloat(); | |||
| auto scaleFactor = jmin ((screenBounds.getWidth() - 50) / getWidth(), (screenBounds.getHeight() - 50) / getHeight()); | |||
| if (scaleFactor < 1.0f) | |||
| setSize (getWidth() * scaleFactor, getHeight() * scaleFactor); | |||
| setTopLeftPosition (20, 20); | |||
| #else | |||
| setTopLeftPosition (node->properties.getWithDefault (getLastXProp (type), Random::getSystemRandom().nextInt (500)), | |||
| node->properties.getWithDefault (getLastYProp (type), Random::getSystemRandom().nextInt (500))); | |||
| #endif | |||
| node->properties.set (getOpenProp (type), true); | |||