├── channel.PNG
├── apc40-mapping
├── images
│ ├── options.png
│ ├── buttonpage.PNG
│ └── resolution.png
├── apc40-plugin.xml
├── sysexApc40InitOK.txt
├── sysexApc40InitCheck.txt
├── apc40-macros.xml
├── README.md
├── apc40Mapping.bmtp
├── apc40-midi.xml
├── apc40-mapper.lua
└── apc40-view.xml
├── showfile-navigator
├── youtubeScreenshot.PNG
├── README.md
└── showfile-navigator.xml
├── single-cue-magic
├── youtubeScreenshot.PNG
├── README.md
├── dimmer-fade-presets.xml
└── single-cue-creator.xml
├── matricks-pattern-generator
├── youtubeScreenshot.PNG
├── README.md
└── matricks-pattern-generator.xml
├── preset-to-sequence
├── README.md
├── presetToSequence.xml
└── presetToSequence.lua
├── README.md
├── onpc-backup-script
├── README.md
└── CreateMA2ShowFolderBackup.ps1
└── executor-mode-bar
├── README.md
└── executor-mode-bar.xml
/channel.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/HEAD/channel.PNG
--------------------------------------------------------------------------------
/apc40-mapping/images/options.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/HEAD/apc40-mapping/images/options.png
--------------------------------------------------------------------------------
/apc40-mapping/images/buttonpage.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/HEAD/apc40-mapping/images/buttonpage.PNG
--------------------------------------------------------------------------------
/apc40-mapping/images/resolution.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/HEAD/apc40-mapping/images/resolution.png
--------------------------------------------------------------------------------
/showfile-navigator/youtubeScreenshot.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/HEAD/showfile-navigator/youtubeScreenshot.PNG
--------------------------------------------------------------------------------
/single-cue-magic/youtubeScreenshot.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/HEAD/single-cue-magic/youtubeScreenshot.PNG
--------------------------------------------------------------------------------
/matricks-pattern-generator/youtubeScreenshot.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/HEAD/matricks-pattern-generator/youtubeScreenshot.PNG
--------------------------------------------------------------------------------
/preset-to-sequence/README.md:
--------------------------------------------------------------------------------
1 | # Preset to Sequence Plugin
2 | Walkthrough of the code:
3 | https://www.youtube.com/watch?v=UzrcWexQ1kU&index=4&list=PLBkQelJDkjdSSbdyyWU7enC4swaFdBmG_
4 |
5 | **SUBSCRIBE**
6 | [youtube.com/aGuyNamedJonas](https://youtube.com/aGuyNamedJonas)
7 |
--------------------------------------------------------------------------------
/apc40-mapping/apc40-plugin.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/preset-to-sequence/presetToSequence.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # GrandMA2 Snippets
2 | Easily import the macros I'm showing you in my videos on Youtube!
3 | Click on one of the folders above to see instructions on how to download and easily import into your show!
4 |
5 | # SUBSCRIBE to my channel on YouTube for more MA2 tutorial videos!
6 |
7 | *(Right-click and "Open link in new tab")*
8 |
9 | ### Get in touch
10 | Follow me on twitter ▶ **https://twitter.com/aguynamedjonas**
--------------------------------------------------------------------------------
/apc40-mapping/sysexApc40InitOK.txt:
--------------------------------------------------------------------------------
1 | f0 7e 00 06 01 f7 f0 47 00 73 60 00 04 41 01 01 01 f7
2 | 90 35 03
3 | 90 36 00
4 | 90 37 02
5 | 90 38 02
6 | 90 39 00
7 |
8 | 91 35 03
9 | 91 36 02
10 | 91 37 00
11 | 91 38 00
12 | 91 39 02
13 |
14 | 92 35 03
15 | 92 36 02
16 | 92 37 00
17 | 92 38 00
18 | 92 39 02
19 |
20 | 93 35 03
21 | 93 36 00
22 | 93 37 02
23 | 93 38 02
24 | 93 39 00
25 |
26 | 94 35 03
27 | 94 36 00
28 | 94 37 00
29 | 94 38 00
30 | 94 39 00
31 |
32 | 95 35 03
33 | 95 36 02
34 | 95 37 02
35 | 95 38 02
36 | 95 39 02
37 |
38 | 96 35 03
39 | 96 36 00
40 | 96 37 02
41 | 96 38 02
42 | 96 39 00
43 |
44 | 97 35 03
45 | 97 36 02
46 | 97 37 00
47 | 97 38 00
48 | 97 39 02
--------------------------------------------------------------------------------
/apc40-mapping/sysexApc40InitCheck.txt:
--------------------------------------------------------------------------------
1 | f0 7e 00 06 01 f7 f0 47 00 73 60 00 04 41 01 01 01 f7
2 | 90 35 00
3 | 90 36 00
4 | 90 37 00
5 | 90 38 00
6 | 90 39 00
7 |
8 | 91 35 00
9 | 91 36 00
10 | 91 37 00
11 | 91 38 00
12 | 91 39 00
13 |
14 | 92 35 00
15 | 92 36 00
16 | 92 37 02
17 | 92 38 02
18 | 92 39 00
19 |
20 | 93 35 00
21 | 93 36 00
22 | 93 37 02
23 | 93 38 02
24 | 93 39 02
25 |
26 | 94 35 00
27 | 94 36 00
28 | 94 37 00
29 | 94 38 02
30 | 94 39 02
31 |
32 | 95 35 00
33 | 95 36 00
34 | 95 37 02
35 | 95 38 02
36 | 95 39 02
37 |
38 | 96 35 00
39 | 96 36 02
40 | 96 37 02
41 | 96 38 02
42 | 96 39 00
43 |
44 | 97 35 02
45 | 97 36 02
46 | 97 37 02
47 | 97 38 00
48 | 97 39 00
--------------------------------------------------------------------------------
/onpc-backup-script/README.md:
--------------------------------------------------------------------------------
1 | # MA2 onPC Show Folder Backup Script
2 | This Windows Powershell script will allow you to create backups of your entire showfolder on an external drive or your cloud storage (e.g. Google Drive, Dropbox, etc.).
3 |
4 | This closes the gap that the missing support for FTP backups in onPC systems left us with.
5 |
6 | # How to use
7 | Adapt `$source` and `$dest` to your needs, and then execute the script by double clicking on it.
8 |
9 | # Trouble shooting ("executon of scripts is disabled")
10 | In case you get the error message `“execution of scripts is disabled on this system.”`, [try this solution from StackOverflow](https://stackoverflow.com/questions/4037939/powershell-says-execution-of-scripts-is-disabled-on-this-system).
--------------------------------------------------------------------------------
/executor-mode-bar/README.md:
--------------------------------------------------------------------------------
1 | # Executor Mode Bar
2 | Tiny little macro that's not very fancy, but incredibly useful: Quickly switch your executor buttons and faders with this little set of macros.
3 | Just download and put on the bottom of one of your console's screens and you're good to go switching executor functionality on the fly!
4 |
5 | ### How to use
6 | Videothumbnail coming soon!
7 | *(Right-click and "Open link in new tab")*
8 |
9 | **[SUBSCRIBE to my channel ▶ Youtube](https://www.youtube.com/aguynamedjonas)**
10 |
11 | ### Import into MA2
12 | - Download [executor-mode-bar.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/executor-mode-bar/executor-mode-bar.xml) ◀ Right-click and save-as
13 | - Move `executor-mode-bar.xml` into `\macros\executor-mode-bar.xml`
14 | (e.g. into `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\macros\executor-mode-bar.xml`)
15 | - Import macros: `Import "executor-mode-bar" at Macro 1`
16 | - Watch the video for how to use!
17 |
18 | ### Questions?
19 | Hit me up on twitter ▶ **https://twitter.com/aguynamedjonas**
20 |
--------------------------------------------------------------------------------
/showfile-navigator/README.md:
--------------------------------------------------------------------------------
1 | # Showfile Navigator
2 | Set of macros that help you navigate through the internal structure of your showfile. This is super helpful when trying to write macros for custom functionality that is not provided through MA2 commands directly.
3 |
4 | ### How to use
5 |
6 | *(Right-click and "Open link in new tab")*
7 |
8 | **[SUBSCRIBE to my channel ▶ Youtube](https://www.youtube.com/aguynamedjonas)**
9 |
10 | ### Import into MA2
11 | - Download [showfile-navigator.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/showfile-navigator/showfile-navigator.xml) ◀ Right-click and save-as
12 | - Move `showfile-navigator.xml` into `\macros\showfile-navigator.xml`
13 | (e.g. into `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\macros\showfile-navigator.xml`)
14 | - Import macros: `Import "showfile-navigator" at Macro 1`
15 | - Watch the video for how to use!
16 |
17 | ### Questions?
18 | Hit me up on twitter ▶ **https://twitter.com/aguynamedjonas**
19 |
--------------------------------------------------------------------------------
/matricks-pattern-generator/README.md:
--------------------------------------------------------------------------------
1 | # MA-Tricks Pattern Generator
2 | Set of macros which lets you easily discover cool patterns with MAtricks and allows you to quickly convert those to ready-to-use sequences and chasers.
3 |
4 | ### How to use
5 |
6 | *(Right-click and "Open link in new tab")*
7 |
8 | **[SUBSCRIBE to my channel ▶ Youtube](https://www.youtube.com/aguynamedjonas)**
9 |
10 | ### Import into MA2
11 | - Download [matricks-pattern-generator.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/matricks-pattern-generator/matricks-pattern-generator.xml) ◀ Right-click and save-as
12 | - Move `matricks-pattern-generator.xml` into `\macros\matricks-pattern-generator.xml`
13 | (e.g. into `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\macros\matricks-pattern-generator.xml`)
14 | - Import macros: `Import "matricks-pattern-generator" at Macro 1`
15 | - Watch the video for how to use!
16 |
17 | ### Questions?
18 | Hit me up on twitter ▶ **https://twitter.com/aguynamedjonas**
19 |
--------------------------------------------------------------------------------
/onpc-backup-script/CreateMA2ShowFolderBackup.ps1:
--------------------------------------------------------------------------------
1 | <#
2 | Original Version by: Philipp Börner
3 | Source: https://freshblog.azurewebsites.net/2016/03/28/backup-you-work-with-powershell/
4 |
5 | Adapted by @aGuyNamedJonas for MA2 onPC
6 |
7 | ---------------------------------------------
8 | SUBSCRIBE >>> youtube.com/aGuyNamedJonas
9 | QA & COMMUNITY >>> fb.com/aGuyNamedJonas
10 | GET IN TOUCH >>> hi@aGuyNamedJonas.com
11 | ---------------------------------------------
12 |
13 | HOW TO USE:
14 | - Make sure $source points to your PC's showfolder
15 | - Change $dest to point to your harddrive / cloud storage folder (=backup folder)
16 |
17 | #>
18 |
19 | #Define source and destination folders
20 | $source = 'C:\ProgramData\MA Lighting Technologies\grandma'
21 | $dest = 'F:\Google Drive\2019\Showfolder Backups\'
22 |
23 | #Getting the current date
24 | $date = Get-Date -UFormat _%d_%m_%Y
25 |
26 | #Building ZIP file name and complete backup path
27 | $ZipFile = 'MA2ShowFolderBackup'+$date+'.zip'
28 | $BackupPath = $dest+$ZipFile
29 |
30 | #creating GUID if ZIP archive already exist, to rename the pre existing file
31 | $GUID = [GUID]::NewGuid().ToString()
32 | $doubleBackup = $ZipFile+$GUID
33 | if (Test-Path $BackupPath) {Rename-Item $BackupPath -NewName $doubleBackup}
34 |
35 | #Creating ZIP archive
36 | Get-Item -Path $source | Compress-Archive -DestinationPath $BackupPath -CompressionLevel Optimal -Verbose
--------------------------------------------------------------------------------
/showfile-navigator/showfile-navigator.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ChangeDest /
7 |
8 |
9 | List
10 |
11 |
12 |
13 |
14 | ChangeDest ..
15 |
16 |
17 | List
18 |
19 |
20 |
21 |
22 | ChangeDest (Enter object number to enter)
23 |
24 |
25 | List
26 |
27 |
28 |
29 |
30 | List
31 |
32 |
33 |
34 |
35 | List
36 |
37 |
38 | Assign (Enter object number to modify) /(Enter-Attribute-name)=(Enter-New-Value )
39 |
40 |
41 | List
42 |
43 |
44 |
--------------------------------------------------------------------------------
/single-cue-magic/README.md:
--------------------------------------------------------------------------------
1 | # Single Cue Magic
2 | Set of macros that helps you create more interesting, single-cue looks by utilizing fade- and delay-times to bring a surprising amount of movement into your cues!
3 |
4 | ### How to use
5 |
6 | *(Right-click and "Open link in new tab")*
7 |
8 | **[SUBSCRIBE to my channel ▶ Youtube](https://www.youtube.com/aguynamedjonas)**
9 |
10 | ### Import into MA2
11 | - Download [dimmer-fade-presets.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/single-cue-magic/dimmer-fade-presets.xml) ◀ Right-click and save-as
12 | - Download [single-cue-creator.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/single-cue-magic/single-cue-creator.xml) ◀ Right-click and save-as
13 | - Move `single-cue-creator.xml` into `\macros\single-cue-creator.xml`
14 | (e.g. into `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\macros\single-cue-creator.xml`)
15 | - Move `dimmer-fade-presets.xml` into `\importexport\dimmer-fade-presets.xml`
16 | (e.g. `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\importexport\dimmer-fade-presets.xml`)
17 | - Import macros: `Import "single-cue-creator" at Macro 1`
18 | - Import presets: `Import "dimmer-fade-presets" at Preset 1.1`
19 | - Watch the video for how to use!
20 |
21 | ### Questions?
22 | Hit me up on twitter ▶ **https://twitter.com/aguynamedjonas**
23 |
--------------------------------------------------------------------------------
/apc40-mapping/apc40-macros.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | SetVar $apc40-op = "refresh-leds"
7 |
8 |
9 | Go Plugin "apc40-mapper"
10 |
11 |
12 |
13 |
14 | SetVar $apc40-op = "setup"
15 |
16 |
17 | Go Plugin "apc40-mapper"
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/matricks-pattern-generator/matricks-pattern-generator.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | MAtricksInterleave +
7 |
8 |
9 |
10 |
11 | MAtricksInterleave -
12 |
13 |
14 |
15 |
16 | MAtricksBlocks +
17 |
18 |
19 |
20 |
21 | MAtricksBlocks -
22 |
23 |
24 |
25 |
26 | MAtricksWings +
27 |
28 |
29 |
30 |
31 | MAtricksWings -
32 |
33 |
34 |
35 |
36 | Next
37 |
38 |
39 |
40 |
41 | Previous
42 |
43 |
44 |
45 |
46 | At Full
47 |
48 |
49 | Store
50 |
51 |
52 | At Zero
53 |
54 |
55 | Next
56 |
57 |
58 |
59 |
60 | At Full
61 |
62 |
63 | Store
64 |
65 |
66 | At Zero
67 |
68 |
69 |
--------------------------------------------------------------------------------
/single-cue-magic/dimmer-fade-presets.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/preset-to-sequence/presetToSequence.lua:
--------------------------------------------------------------------------------
1 | function print (msg)
2 | gma.echo(msg)
3 | gma.feedback(msg)
4 | end
5 |
6 | function printWelcomeScreen ()
7 | print('-------------------------------------------------')
8 | print(' Starting presetToSequence Plugin... ')
9 | print(' ')
10 | print(' ---------------------------------- ')
11 | print(' Brought to you by @aGuyNamedJonas ')
12 | print(' ---------------------------------- ')
13 | print(' ')
14 | print(' SUBSCRIBE >>> youtube.com/aGuyNamedJonas ')
15 | print(' QA & COMMUNITY >>> fb.com/aGuyNamedJonas ')
16 | print(' GET IN TOUCH >>> hi@aGuyNamedJonas.com ')
17 | print('-------------------------------------------------')
18 | end
19 |
20 | function getPresetRangeFromUser ()
21 | local presetRange = {}
22 | presetRange['type'] = tonumber(gma.textinput('Preset TYPE', '(0 for All, 1 for Dimmer, 2 for Position, ...)'))
23 | presetRange['first'] = tonumber(gma.textinput('Preset START', '1'))
24 | presetRange['last'] = tonumber(gma.textinput('Preset END'))
25 | return presetRange
26 | end
27 |
28 | function getGroupNumberFromUser ()
29 | local groupNumber = tonumber(gma.textinput('GROUP', '1'))
30 | return groupNumber
31 | end
32 |
33 | function getFadeTimeFromUser ()
34 | local fadeTime = tonumber(gma.textinput('FADE', '0'))
35 | return fadeTime
36 | end
37 |
38 | function getTargetExecutorFromUser ()
39 | local executorNumber = gma.textinput('EXECUTOR', '1.1')
40 | return executorNumber
41 | end
42 |
43 | function getObjectLabel (ma2ObjectName)
44 | local handle = gma.show.getobj.handle(ma2ObjectName)
45 | local label = gma.show.getobj.label(handle)
46 | return label
47 | end
48 |
49 | function setObjectLabel (ma2ObjectName, label)
50 | gma.cmd('Label '..ma2ObjectName..' "'..label..'"')
51 | end
52 |
53 | function createSequenceFromPresets (presetType, presetStart, presetEnd, groupNumber, fadeTime, executorNumber)
54 | local groupName = 'Group '..groupNumber
55 | local groupLabel = getObjectLabel(groupName)
56 | local executorName = 'Executor '..executorNumber
57 |
58 | print('Deleting '..executorName)
59 | gma.cmd('Delete '..executorName..' /nc')
60 |
61 | -- Store presets in sequence
62 | local presetIndex = presetStart
63 | local cueIndex = 1
64 | while presetIndex <= presetEnd do
65 | local presetName = 'Preset '..presetType..'.'..presetIndex
66 | local presetLabel = getObjectLabel(presetName)
67 |
68 | print('Storing '..presetName..' "'..presetLabel..'"')
69 |
70 | local cueName = 'Cue '..cueIndex
71 | gma.cmd('ClearAll')
72 | gma.cmd(groupName..' at '..presetName)
73 | gma.cmd('Store at '..executorName..' '..cueName..' Fade '..fadeTime)
74 | gma.cmd('Label '..executorName..' '..cueName..' "'..presetLabel..'"')
75 |
76 | presetIndex = presetIndex + 1
77 | cueIndex = cueIndex + 1
78 | end
79 |
80 | gma.cmd('Label '..executorName..' "'..groupLabel..'"')
81 | end
82 |
83 | function main()
84 | printWelcomeScreen()
85 | local presetRange = getPresetRangeFromUser()
86 | local groupNumber = getGroupNumberFromUser()
87 | local fadeTime = getFadeTimeFromUser()
88 | local executorNumber = getTargetExecutorFromUser()
89 | createSequenceFromPresets(presetRange.type, presetRange.first, presetRange.last, groupNumber, fadeTime, executorNumber)
90 | end
91 |
92 | return main
93 |
--------------------------------------------------------------------------------
/single-cue-magic/single-cue-creator.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Attribute $cuemagic_attribute
7 |
8 |
9 | Delay $cuemagic_offset Thru $cuemagic_delay
10 |
11 |
12 | Attribute $cuemagic_attribute At $cuemagic_value
13 |
14 |
15 |
16 |
17 | Attribute $cuemagic_attribute
18 |
19 |
20 | Delay $cuemagic_delay Thru $cuemagic_offset
21 |
22 |
23 | Attribute $cuemagic_attribute At $cuemagic_value
24 |
25 |
26 |
27 |
28 | Attribute $cuemagic_attribute
29 |
30 |
31 | Delay $cuemagic_offset Thru $cuemagic_delay Thru $cuemagic_offset
32 |
33 |
34 | Attribute $cuemagic_attribute At $cuemagic_value
35 |
36 |
37 |
38 |
39 | Attribute $cuemagic_attribute
40 |
41 |
42 | Delay $cuemagic_delay Thru $cuemagic_offset Thru $cuemagic_delay
43 |
44 |
45 | Attribute $cuemagic_attribute At $cuemagic_value
46 |
47 |
48 |
49 |
50 | Attribute $cuemagic_attribute
51 |
52 |
53 | Delay $cuemagic_offset Thru $cuemagic_delay Thru $cuemagic_offset Thru $cuemagic_delay Thru $cuemagic_offset
54 |
55 |
56 | Attribute $cuemagic_attribute At $cuemagic_value
57 |
58 |
59 |
60 |
61 | Attribute $cuemagic_attribute
62 |
63 |
64 | Delay $cuemagic_delay Thru $cuemagic_offset Thru $cuemagic_delay Thru $cuemagic_offset Thru $cuemagic_delay
65 |
66 |
67 | Attribute $cuemagic_attribute At $cuemagic_value
68 |
69 |
70 |
71 |
72 | List Attribute
73 |
74 |
75 | SetVar $cuemagic_attribute = ("which attribute to set? [dim]")
76 |
77 |
78 | $cuemagic_attribute
79 |
80 |
81 |
82 |
83 | SetVar $cuemagic_value = ("Value?")
84 |
85 |
86 |
87 |
88 | SetVar $cuemagic_delay = ("How much delay?")
89 |
90 |
91 |
92 |
93 | SetVar $cuemagic_offTime = ("Offtime?")
94 |
95 |
96 |
97 |
98 | Select Executor @
99 |
100 |
101 | Store
102 |
103 |
104 | Assign Executor /OffTime=$cuemagic_offTime
105 |
106 |
107 | ClearAll
108 |
109 |
110 |
--------------------------------------------------------------------------------
/executor-mode-bar/executor-mode-bar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Label Macro "GO" ">GO<"
7 |
8 |
9 | Assign Go @
10 |
11 |
12 | Label Macro ">GO<" "GO"
13 |
14 |
15 |
16 |
17 | Label Macro "GO_R" ">GO_R<"
18 |
19 |
20 | Assign Go /cue_mode=release @
21 |
22 |
23 | Label Macro ">GO_R<" "GO_R"
24 |
25 |
26 |
27 |
28 | Label Macro "TOGGLE" ">TOGGLE<"
29 |
30 |
31 | Assign Toggle @
32 |
33 |
34 | Label Macro ">TOGGLE<" "TOGGLE"
35 |
36 |
37 |
38 |
39 | Label Macro "FLASH" ">FLASH<"
40 |
41 |
42 | Assign Flash @
43 |
44 |
45 | Label Macro ">FLASH<" "FLASH"
46 |
47 |
48 |
49 |
50 | Label Macro "MASTER" ">MASTER<"
51 |
52 |
53 | Assign Master @
54 |
55 |
56 | Label Macro ">MASTER<" "MASTER"
57 |
58 |
59 |
60 |
61 | Label Macro "TEMP" ">TEMP<"
62 |
63 |
64 | Assign TempFader @
65 |
66 |
67 | Label Macro ">TEMP<" "TEMP"
68 |
69 |
70 |
71 |
72 | Label Macro "RATE" ">RATE<"
73 |
74 |
75 | Assign Rate @
76 |
77 |
78 | Label Macro ">RATE<" "RATE"
79 |
80 |
81 |
82 |
83 | Label Macro "SPEED" ">SPEED<"
84 |
85 |
86 | Assign Speed @
87 |
88 |
89 | Label Macro ">SPEED<" "SPEED"
90 |
91 |
92 |
93 |
94 | Label Macro "X-FADE" ">X-FADE<"
95 |
96 |
97 | Assign Crossfade @
98 |
99 |
100 | Label Macro ">X-FADE<" "X-FADE"
101 |
102 |
103 |
104 |
105 | Label Macro "X-FADE-B" ">X-FADE-B<"
106 |
107 |
108 | Assign CrossfadeB @
109 |
110 |
111 | Label Macro ">X-FADE-B<" "X-FADE-B"
112 |
113 |
114 |
--------------------------------------------------------------------------------
/apc40-mapping/README.md:
--------------------------------------------------------------------------------
1 | # APC40 Mark 1 Mapping (Single Controller)
2 | This Akai APC40 Mark 1 single-controller mapping **with LED feedback** aims at giving MA2 onPC operators with an APC40 Mark 1 controller and a Full HD monitor access to 40 full-sized executors, 12 buttons executors (only one button + fader) and 4 button executors with fader-only control.
3 |
4 | On top of that 7 groups can be toggled selected and deselected and 16 "All" presets can be toggled on and off.
5 |
6 | The focus of this mapping is live-playback (not on preprogramming).
7 |
8 | ## Prerequisites
9 | Before downloading & installing this mapping, please go through the following list as a peparation
10 |
11 | ### Prerquisite #0: A Full HD Monitor
12 | The view for this mapping was built for and with a Full HD monitor (1920px x 1080px) and won't work properly without a monitor like that.
13 |
14 | If you don't own a Full HD monitor yet, consider the fairly cheap DELL touch monitor which I reviewed in this video:
15 | https://www.youtube.com/watch?v=oBfwf3NR3ws
16 |
17 | ### Prerequisite #1: Bome's Midi Translator Pro installed
18 | Download it here: https://www.bome.com/products/miditranslator
19 |
20 | Demo mode runs for 20 minutes at a time and needs to be restarted after that.
21 | **Please buy the software to support the creator!**
22 |
23 | ### Prerequisite #2: Extern 1 has Resolution 1920x1080
24 | 
25 | In the main window, click on the yellow ball in the upper-left corner, and click on "Options"
26 |
27 | 
28 | Make sure the reoslution of your Extern 1 is set to 1920 x 1080 (Full HD)
29 |
30 | ### Prerequisite #3: Go to Button Page 6
31 | 
32 | To make button page 6 visible in MA2 (Page 6 is used by the APC40 view), click on "Bt Pg+" a few time.
33 |
34 | ### Prerequisite #4: Make the following slots available
35 | The following slots will be used by the APC40 mapping - please make them available for use with the mapping:
36 |
37 | **Groups**
38 | - Group 1 thru 7
39 |
40 | **"All" Presets**
41 | - Preset 0.1 thru 0.17
42 |
43 | **Macros**
44 | - Macro 1 thru 11
45 |
46 | **Executors**
47 | - Executor 7.1 thru 7.10
48 | - Executor 7.66 thru 7.75
49 | - Executor 7.81 thru 7.90
50 |
51 | **ButtonExecutors**
52 | - ExecButtons 6.131 thru 6.190
53 |
54 | ## Download & Install
55 | **BEFORE YOU DO THIS, READ THE PREVIOUS SECTION!**
56 |
57 | 1. Make sure your setup & showfile are prepared as described in the previous section
58 | 2. Download & Import Plugin:
59 | - Download [apc40-plugin.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/apc40-mapping/apc40-plugin.xml) **and** [apc40-mapper.lua](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/apc40-mapping/apc40-mapper.lua) ◀ Right-click on links and save-as
60 | - Move **both files** into `\plugins`
61 | (e.g. into `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\plugins\apc40-plugin.xml`)
62 | - Copy & paste the following MA2 command to import the plugin:
63 | `Import "apc40-mapper" At Plugin 2`
64 | 3. Download & Import Macros:
65 | - Download [apc40-macros.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/apc40-mapping/apc40-macros.xml) ◀ Right-click and save-as
66 | - Move file into `\macros\`
67 | (e.g. into `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\macros\apc40-macros.xml`)
68 | - Copy & paste the following MA2 command to import the macros:
69 | `Import "apc40-macros" At Macro 1`
70 | 4. Download & Import View:
71 | - Download [apc40-view.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/apc40-mapping/apc40-view.xml) ◀ Right-click and save-as
72 | - Move file into `\macros\`
73 | (e.g. into `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\importexportmacros\apc40-view.xml`)
74 | - Copy & paste the following MA2 command to import the view:
75 | `Import "apc40-view" At View 1; Assign View 1 ViewButton 1.31 /screen=5`
76 | 5. Download & Import Midi Mapping:
77 | - Download [apc40-midi.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/apc40-mapping/apc40-midi.xml) ◀ Right-click and save-as
78 | - Move file into `\importexport\`
79 | (e.g. into `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\importexport\apc40-midi.xml`)
80 | - Copy & paste the following MA2 command to import the midi mapping:
81 | `cd /; cd RemoteTypes; import "apc40-midi" at MidiRemotes;`
82 | - Enter `cd /` to get back to the root of the showfile
83 | 6. Download the Bome's Midi Translator Pro [Project file](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/apc40-mapping/apc40Mapping.bmtp) ◀ Right-click and save-as
84 |
85 | ## How to Use
86 | Yeah there's no way in hell I'm typing that one out - just watch the video: https://youtu.be/k9Ce1NXg9xg :)
87 |
--------------------------------------------------------------------------------
/apc40-mapping/apc40Mapping.bmtp:
--------------------------------------------------------------------------------
1 | [MIDI.routes]
2 | In0=Bome Virtual Port 2
3 | Out0=Akai APC40
4 |
5 | [Preset.0]
6 | Name=Init APC40
7 | Active=1
8 | PresetSwitchIgnore=0
9 | Name0=INIT
10 | Incoming0=MID3
11 | Outgoing0=MID2MIDA0001000AAkai APC40f07e000601f7f047007360000441010101f7903503903600903702903802903900913503913602913700913800913902923503923602923700923800923902933503933600933702933802933900943503943600943700943800943900953503953602953702953802953902963503963600963702963802963900973503973602973700973800973902
12 | Options0=Actv01Stop00OutO00
13 |
14 | [Preset.1]
15 | Name=Midi Through In
16 | Active=1
17 | PresetSwitchIgnore=0
18 | Name0=Midi Through Notes
19 | Incoming0=MID3
20 | Outgoing0=MID3
21 | Options0=Actv01Stop00OutO01
22 |
23 | [Preset.2]
24 | Name=Fader Translation
25 | Active=1
26 | PresetSwitchIgnore=0
27 | Name0=Fader 1
28 | Incoming0=MID3
29 | Outgoing0=MID3
30 | Options0=Actv01Stop00OutO00
31 | Name1=Fader 2
32 | Incoming1=MID3
33 | Outgoing1=MID3
34 | Options1=Actv01Stop00OutO00
35 | Name2=Fader 3
36 | Incoming2=MID3
37 | Outgoing2=MID3
38 | Options2=Actv01Stop00OutO00
39 | Name3=Fader 4
40 | Incoming3=MID3
41 | Outgoing3=MID3
42 | Options3=Actv01Stop00OutO00
43 | Name4=Fader 5
44 | Incoming4=MID3
45 | Outgoing4=MID3
46 | Options4=Actv01Stop00OutO00
47 | Name5=Fader 6
48 | Incoming5=MID3
49 | Outgoing5=MID3
50 | Options5=Actv01Stop00OutO00
51 | Name6=Fader 7
52 | Incoming6=MID3
53 | Outgoing6=MID3
54 | Options6=Actv01Stop00OutO00
55 | Name7=Fader 8
56 | Incoming7=MID3
57 | Outgoing7=MID3
58 | Options7=Actv01Stop00OutO00
59 | Name8=Fader 9
60 | Incoming8=MID3
61 | Outgoing8=MID3
62 | Options8=Actv01Stop00OutO00
63 | Name9=Fader 10 (Knob)
64 | Incoming9=MID3
65 | Outgoing9=MID3
66 | Options9=Actv01Stop00OutO00
67 | Name10=Knob 1
68 | Incoming10=MID3
69 | Outgoing10=MID3
70 | Options10=Actv01Stop00OutO00
71 | Name11=Knob 2
72 | Incoming11=MID3
73 | Outgoing11=MID3
74 | Options11=Actv01Stop00OutO00
75 | Name12=Knob 3
76 | Incoming12=MID3
77 | Outgoing12=MID3
78 | Options12=Actv01Stop00OutO00
79 | Name13=Knob 4
80 | Incoming13=MID3
81 | Outgoing13=MID3
82 | Options13=Actv01Stop00OutO00
83 | Name14=Knob 5
84 | Incoming14=MID3
85 | Outgoing14=MID3
86 | Options14=Actv01Stop00OutO00
87 | Name15=Knob 6
88 | Incoming15=MID3
89 | Outgoing15=MID3
90 | Options15=Actv01Stop00OutO00
91 | Name16=Knob 7
92 | Incoming16=MID3
93 | Outgoing16=MID3
94 | Options16=Actv01Stop00OutO00
95 | Name17=Knob 8
96 | Incoming17=MID3
97 | Outgoing17=MID3
98 | Options17=Actv01Stop00OutO00
99 | Name18=Knob 9
100 | Incoming18=MID3
101 | Outgoing18=MID3
102 | Options18=Actv01Stop00OutO00
103 | Name19=Knob 10
104 | Incoming19=MID3
105 | Outgoing19=MID3
106 | Options19=Actv01Stop00OutO00
107 | Name20=Knob 11
108 | Incoming20=MID3
109 | Outgoing20=MID3
110 | Options20=Actv01Stop00OutO00
111 | Name21=Knob 12
112 | Incoming21=MID3
113 | Outgoing21=MID3
114 | Options21=Actv01Stop00OutO00
115 | Name22=Knob 13
116 | Incoming22=MID3
117 | Outgoing22=MID3
118 | Options22=Actv01Stop00OutO00
119 | Name23=Knob 14
120 | Incoming23=MID3
121 | Outgoing23=MID3
122 | Options23=Actv01Stop00OutO00
123 | Name24=Knob 15
124 | Incoming24=MID3
125 | Outgoing24=MID3
126 | Options24=Actv01Stop00OutO00
127 | Name25=Knob 16
128 | Incoming25=MID3
129 | Outgoing25=MID3
130 | Options25=Actv01Stop00OutO00
131 |
132 | [Project]
133 | Version=2
134 | Author=
135 | AuthorContact=
136 | Comments=
137 | AuthorWWW=
138 | AuthorCopyright=
139 | DefaultInPorts=MIDA0001000AAkai APC40
140 | DefaultOutPorts=MIDA00010022Bome MIDI Translator 1 Virtual Out
141 |
142 |
--------------------------------------------------------------------------------
/apc40-mapping/apc40-midi.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 1; SetVar $apc40-clip = 1; Go Plugin "apc40-mapper"
101 |
102 |
103 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 1; SetVar $apc40-clip = 2; Go Plugin "apc40-mapper"
104 |
105 |
106 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 1; SetVar $apc40-clip = 3; Go Plugin "apc40-mapper"
107 |
108 |
109 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 1; SetVar $apc40-clip = 4; Go Plugin "apc40-mapper"
110 |
111 |
112 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 1; SetVar $apc40-clip = 5; Go Plugin "apc40-mapper"
113 |
114 |
115 |
116 |
117 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 2; SetVar $apc40-clip = 1; Go Plugin "apc40-mapper"
118 |
119 |
120 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 2; SetVar $apc40-clip = 2; Go Plugin "apc40-mapper"
121 |
122 |
123 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 2; SetVar $apc40-clip = 3; Go Plugin "apc40-mapper"
124 |
125 |
126 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 2; SetVar $apc40-clip = 4; Go Plugin "apc40-mapper"
127 |
128 |
129 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 2; SetVar $apc40-clip = 5; Go Plugin "apc40-mapper"
130 |
131 |
132 |
133 |
134 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 3; SetVar $apc40-clip = 1; Go Plugin "apc40-mapper"
135 |
136 |
137 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 3; SetVar $apc40-clip = 2; Go Plugin "apc40-mapper"
138 |
139 |
140 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 3; SetVar $apc40-clip = 3; Go Plugin "apc40-mapper"
141 |
142 |
143 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 3; SetVar $apc40-clip = 4; Go Plugin "apc40-mapper"
144 |
145 |
146 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 3; SetVar $apc40-clip = 5; Go Plugin "apc40-mapper"
147 |
148 |
149 |
150 |
151 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 4; SetVar $apc40-clip = 1; Go Plugin "apc40-mapper"
152 |
153 |
154 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 4; SetVar $apc40-clip = 2; Go Plugin "apc40-mapper"
155 |
156 |
157 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 4; SetVar $apc40-clip = 3; Go Plugin "apc40-mapper"
158 |
159 |
160 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 4; SetVar $apc40-clip = 4; Go Plugin "apc40-mapper"
161 |
162 |
163 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 4; SetVar $apc40-clip = 5; Go Plugin "apc40-mapper"
164 |
165 |
166 |
167 |
168 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 5; SetVar $apc40-clip = 1; Go Plugin "apc40-mapper"
169 |
170 |
171 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 5; SetVar $apc40-clip = 2; Go Plugin "apc40-mapper"
172 |
173 |
174 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 5; SetVar $apc40-clip = 3; Go Plugin "apc40-mapper"
175 |
176 |
177 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 5; SetVar $apc40-clip = 4; Go Plugin "apc40-mapper"
178 |
179 |
180 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 5; SetVar $apc40-clip = 5; Go Plugin "apc40-mapper"
181 |
182 |
183 |
184 |
185 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 6; SetVar $apc40-clip = 1; Go Plugin "apc40-mapper"
186 |
187 |
188 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 6; SetVar $apc40-clip = 2; Go Plugin "apc40-mapper"
189 |
190 |
191 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 6; SetVar $apc40-clip = 3; Go Plugin "apc40-mapper"
192 |
193 |
194 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 6; SetVar $apc40-clip = 4; Go Plugin "apc40-mapper"
195 |
196 |
197 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 6; SetVar $apc40-clip = 5; Go Plugin "apc40-mapper"
198 |
199 |
200 |
201 |
202 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 7; SetVar $apc40-clip = 1; Go Plugin "apc40-mapper"
203 |
204 |
205 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 7; SetVar $apc40-clip = 2; Go Plugin "apc40-mapper"
206 |
207 |
208 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 7; SetVar $apc40-clip = 3; Go Plugin "apc40-mapper"
209 |
210 |
211 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 7; SetVar $apc40-clip = 4; Go Plugin "apc40-mapper"
212 |
213 |
214 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 7; SetVar $apc40-clip = 5; Go Plugin "apc40-mapper"
215 |
216 |
217 |
218 |
219 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 8; SetVar $apc40-clip = 1; Go Plugin "apc40-mapper"
220 |
221 |
222 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 8; SetVar $apc40-clip = 2; Go Plugin "apc40-mapper"
223 |
224 |
225 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 8; SetVar $apc40-clip = 3; Go Plugin "apc40-mapper"
226 |
227 |
228 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 8; SetVar $apc40-clip = 4; Go Plugin "apc40-mapper"
229 |
230 |
231 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 8; SetVar $apc40-clip = 5; Go Plugin "apc40-mapper"
232 |
233 |
234 |
235 |
236 | SetVar $apc40-op = "toggle-group"; SetVar $apc40-group = "1"; Go Plugin "apc40-mapper"
237 |
238 |
239 | SetVar $apc40-op = "toggle-group"; SetVar $apc40-group = "2"; Go Plugin "apc40-mapper"
240 |
241 |
242 | SetVar $apc40-op = "toggle-group"; SetVar $apc40-group = "3"; Go Plugin "apc40-mapper"
243 |
244 |
245 | SetVar $apc40-op = "toggle-group"; SetVar $apc40-group = "4"; Go Plugin "apc40-mapper"
246 |
247 |
248 | SetVar $apc40-op = "toggle-group"; SetVar $apc40-group = "5"; Go Plugin "apc40-mapper"
249 |
250 |
251 | SetVar $apc40-op = "toggle-group"; SetVar $apc40-group = "6"; Go Plugin "apc40-mapper"
252 |
253 |
254 | SetVar $apc40-op = "toggle-group"; SetVar $apc40-group = "7"; Go Plugin "apc40-mapper"
255 |
256 |
257 |
258 |
259 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.1"; Go Plugin "apc40-mapper"
260 |
261 |
262 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.2"; Go Plugin "apc40-mapper"
263 |
264 |
265 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.3"; Go Plugin "apc40-mapper"
266 |
267 |
268 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.4"; Go Plugin "apc40-mapper"
269 |
270 |
271 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.5"; Go Plugin "apc40-mapper"
272 |
273 |
274 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.6"; Go Plugin "apc40-mapper"
275 |
276 |
277 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.7"; Go Plugin "apc40-mapper"
278 |
279 |
280 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.8"; Go Plugin "apc40-mapper"
281 |
282 |
283 |
284 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.10"; Go Plugin "apc40-mapper"
285 |
286 |
287 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.11"; Go Plugin "apc40-mapper"
288 |
289 |
290 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.12"; Go Plugin "apc40-mapper"
291 |
292 |
293 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.13"; Go Plugin "apc40-mapper"
294 |
295 |
296 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.14"; Go Plugin "apc40-mapper"
297 |
298 |
299 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.15"; Go Plugin "apc40-mapper"
300 |
301 |
302 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.16"; Go Plugin "apc40-mapper"
303 |
304 |
305 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.17"; Go Plugin "apc40-mapper"
306 |
307 |
308 |
--------------------------------------------------------------------------------
/apc40-mapping/apc40-mapper.lua:
--------------------------------------------------------------------------------
1 | local feedback = gma.feedback -- create fast shortcut for functionblock. this is speeding up the script significantly
2 | local cmd = gma.cmd
3 |
4 | local obj = gma.show.getobj
5 | local handle = obj.handle
6 |
7 | local get = gma.show.property.get
8 | local setVar = gma.show.setvar
9 | local getVar = gma.show.getvar
10 |
11 | -- LUA "apc40Mapper()"
12 |
13 | local LED_CL_EMPTY = '0'
14 | local LED_CL_ORANGE = '5'
15 |
16 | -- Settings
17 | local ledMappingExecutors = {
18 | -- Clip Slot Buttons
19 | ['6.131'] = { ['empty'] = 'MidiNote 1.53 0', ['loaded'] = 'MidiNote 1.53 5', ['playing'] = 'MidiNote 1.53 3' },
20 | ['6.141'] = { ['empty'] = 'MidiNote 1.54 0', ['loaded'] = 'MidiNote 1.54 5', ['playing'] = 'MidiNote 1.54 3' },
21 | ['6.151'] = { ['empty'] = 'MidiNote 1.55 0', ['loaded'] = 'MidiNote 1.55 5', ['playing'] = 'MidiNote 1.55 3' },
22 | ['6.161'] = { ['empty'] = 'MidiNote 1.56 0', ['loaded'] = 'MidiNote 1.56 5', ['playing'] = 'MidiNote 1.56 3' },
23 | ['6.171'] = { ['empty'] = 'MidiNote 1.57 0', ['loaded'] = 'MidiNote 1.57 5', ['playing'] = 'MidiNote 1.57 3' },
24 |
25 | ['6.132'] = { ['empty'] = 'MidiNote 2.53 0', ['loaded'] = 'MidiNote 2.53 5', ['playing'] = 'MidiNote 2.53 3' },
26 | ['6.142'] = { ['empty'] = 'MidiNote 2.54 0', ['loaded'] = 'MidiNote 2.54 5', ['playing'] = 'MidiNote 2.54 3' },
27 | ['6.152'] = { ['empty'] = 'MidiNote 2.55 0', ['loaded'] = 'MidiNote 2.55 5', ['playing'] = 'MidiNote 2.55 3' },
28 | ['6.162'] = { ['empty'] = 'MidiNote 2.56 0', ['loaded'] = 'MidiNote 2.56 5', ['playing'] = 'MidiNote 2.56 3' },
29 | ['6.172'] = { ['empty'] = 'MidiNote 2.57 0', ['loaded'] = 'MidiNote 2.57 5', ['playing'] = 'MidiNote 2.57 3' },
30 |
31 | ['6.133'] = { ['empty'] = 'MidiNote 3.53 0', ['loaded'] = 'MidiNote 3.53 5', ['playing'] = 'MidiNote 3.53 3' },
32 | ['6.143'] = { ['empty'] = 'MidiNote 3.54 0', ['loaded'] = 'MidiNote 3.54 5', ['playing'] = 'MidiNote 3.54 3' },
33 | ['6.153'] = { ['empty'] = 'MidiNote 3.55 0', ['loaded'] = 'MidiNote 3.55 5', ['playing'] = 'MidiNote 3.55 3' },
34 | ['6.163'] = { ['empty'] = 'MidiNote 3.56 0', ['loaded'] = 'MidiNote 3.56 5', ['playing'] = 'MidiNote 3.56 3' },
35 | ['6.173'] = { ['empty'] = 'MidiNote 3.57 0', ['loaded'] = 'MidiNote 3.57 5', ['playing'] = 'MidiNote 3.57 3' },
36 |
37 | ['6.134'] = { ['empty'] = 'MidiNote 4.53 0', ['loaded'] = 'MidiNote 4.53 5', ['playing'] = 'MidiNote 4.53 3' },
38 | ['6.144'] = { ['empty'] = 'MidiNote 4.54 0', ['loaded'] = 'MidiNote 4.54 5', ['playing'] = 'MidiNote 4.54 3' },
39 | ['6.154'] = { ['empty'] = 'MidiNote 4.55 0', ['loaded'] = 'MidiNote 4.55 5', ['playing'] = 'MidiNote 4.55 3' },
40 | ['6.164'] = { ['empty'] = 'MidiNote 4.56 0', ['loaded'] = 'MidiNote 4.56 5', ['playing'] = 'MidiNote 4.56 3' },
41 | ['6.174'] = { ['empty'] = 'MidiNote 4.57 0', ['loaded'] = 'MidiNote 4.57 5', ['playing'] = 'MidiNote 4.57 3' },
42 |
43 | ['6.135'] = { ['empty'] = 'MidiNote 5.53 0', ['loaded'] = 'MidiNote 5.53 5', ['playing'] = 'MidiNote 5.53 3' },
44 | ['6.145'] = { ['empty'] = 'MidiNote 5.54 0', ['loaded'] = 'MidiNote 5.54 5', ['playing'] = 'MidiNote 5.54 3' },
45 | ['6.155'] = { ['empty'] = 'MidiNote 5.55 0', ['loaded'] = 'MidiNote 5.55 5', ['playing'] = 'MidiNote 5.55 3' },
46 | ['6.165'] = { ['empty'] = 'MidiNote 5.56 0', ['loaded'] = 'MidiNote 5.56 5', ['playing'] = 'MidiNote 5.56 3' },
47 | ['6.175'] = { ['empty'] = 'MidiNote 5.57 0', ['loaded'] = 'MidiNote 5.57 5', ['playing'] = 'MidiNote 5.57 3' },
48 |
49 | ['6.136'] = { ['empty'] = 'MidiNote 6.53 0', ['loaded'] = 'MidiNote 6.53 5', ['playing'] = 'MidiNote 6.53 3' },
50 | ['6.146'] = { ['empty'] = 'MidiNote 6.54 0', ['loaded'] = 'MidiNote 6.54 5', ['playing'] = 'MidiNote 6.54 3' },
51 | ['6.156'] = { ['empty'] = 'MidiNote 6.55 0', ['loaded'] = 'MidiNote 6.55 5', ['playing'] = 'MidiNote 6.55 3' },
52 | ['6.166'] = { ['empty'] = 'MidiNote 6.56 0', ['loaded'] = 'MidiNote 6.56 5', ['playing'] = 'MidiNote 6.56 3' },
53 | ['6.176'] = { ['empty'] = 'MidiNote 6.57 0', ['loaded'] = 'MidiNote 6.57 5', ['playing'] = 'MidiNote 6.57 3' },
54 |
55 | ['6.137'] = { ['empty'] = 'MidiNote 7.53 0', ['loaded'] = 'MidiNote 7.53 5', ['playing'] = 'MidiNote 7.53 3' },
56 | ['6.147'] = { ['empty'] = 'MidiNote 7.54 0', ['loaded'] = 'MidiNote 7.54 5', ['playing'] = 'MidiNote 7.54 3' },
57 | ['6.157'] = { ['empty'] = 'MidiNote 7.55 0', ['loaded'] = 'MidiNote 7.55 5', ['playing'] = 'MidiNote 7.55 3' },
58 | ['6.167'] = { ['empty'] = 'MidiNote 7.56 0', ['loaded'] = 'MidiNote 7.56 5', ['playing'] = 'MidiNote 7.56 3' },
59 | ['6.177'] = { ['empty'] = 'MidiNote 7.57 0', ['loaded'] = 'MidiNote 7.57 5', ['playing'] = 'MidiNote 7.57 3' },
60 |
61 | ['6.138'] = { ['empty'] = 'MidiNote 8.53 0', ['loaded'] = 'MidiNote 8.53 5', ['playing'] = 'MidiNote 8.53 3' },
62 | ['6.148'] = { ['empty'] = 'MidiNote 8.54 0', ['loaded'] = 'MidiNote 8.54 5', ['playing'] = 'MidiNote 8.54 3' },
63 | ['6.158'] = { ['empty'] = 'MidiNote 8.55 0', ['loaded'] = 'MidiNote 8.55 5', ['playing'] = 'MidiNote 8.55 3' },
64 | ['6.168'] = { ['empty'] = 'MidiNote 8.56 0', ['loaded'] = 'MidiNote 8.56 5', ['playing'] = 'MidiNote 8.56 3' },
65 | ['6.178'] = { ['empty'] = 'MidiNote 8.57 0', ['loaded'] = 'MidiNote 8.57 5', ['playing'] = 'MidiNote 8.57 3' },
66 |
67 | -- Executor Fader
68 | ['7.1'] = { ['empty'] = 'MidiNote 1.48 0; MidiNote 1.49 0; MidiNote 1.50 0;', ['loaded'] = 'MidiNote 1.48 127; MidiNote 1.49 0; MidiNote 1.50 0;' },
69 | ['7.2'] = { ['empty'] = 'MidiNote 2.48 0; MidiNote 2.49 0; MidiNote 2.50 0;', ['loaded'] = 'MidiNote 2.48 127; MidiNote 2.49 0; MidiNote 2.50 0;' },
70 | ['7.3'] = { ['empty'] = 'MidiNote 3.48 0; MidiNote 3.49 0; MidiNote 3.50 0;', ['loaded'] = 'MidiNote 3.48 127; MidiNote 3.49 0; MidiNote 3.50 0;' },
71 | ['7.4'] = { ['empty'] = 'MidiNote 4.48 0; MidiNote 4.49 0; MidiNote 4.50 0;', ['loaded'] = 'MidiNote 4.48 127; MidiNote 4.49 0; MidiNote 4.50 0;' },
72 | ['7.5'] = { ['empty'] = 'MidiNote 5.48 0; MidiNote 5.49 0; MidiNote 5.50 0;', ['loaded'] = 'MidiNote 5.48 127; MidiNote 5.49 0; MidiNote 5.50 0;' },
73 | ['7.6'] = { ['empty'] = 'MidiNote 6.48 0; MidiNote 6.49 0; MidiNote 6.50 0;', ['loaded'] = 'MidiNote 6.48 127; MidiNote 6.49 0; MidiNote 6.50 0;' },
74 | ['7.7'] = { ['empty'] = 'MidiNote 7.48 0; MidiNote 7.49 0; MidiNote 7.50 0;', ['loaded'] = 'MidiNote 7.48 127; MidiNote 7.49 0; MidiNote 7.50 0;' },
75 | ['7.8'] = { ['empty'] = 'MidiNote 8.48 0; MidiNote 8.49 0; MidiNote 8.50 0;', ['loaded'] = 'MidiNote 8.48 127; MidiNote 8.49 0; MidiNote 8.50 0;' },
76 |
77 | -- Track Control Executors
78 | ['7.66'] = { ['empty'] = 'MidiControl 1.56 0', ['loaded'] = 'MidiControl 1.56 1' },
79 | ['7.67'] = { ['empty'] = 'MidiControl 1.57 0', ['loaded'] = 'MidiControl 1.57 1' },
80 | ['7.68'] = { ['empty'] = 'MidiControl 1.58 0', ['loaded'] = 'MidiControl 1.58 1' },
81 | ['7.69'] = { ['empty'] = 'MidiControl 1.59 0', ['loaded'] = 'MidiControl 1.59 1' },
82 | ['7.71'] = { ['empty'] = 'MidiControl 1.60 0; MidiNote 1.87 0', ['loaded'] = 'MidiControl 1.60 1; MidiNote 1.87 127' },
83 | ['7.72'] = { ['empty'] = 'MidiControl 1.61 0; MidiNote 1.88 0', ['loaded'] = 'MidiControl 1.61 1; MidiNote 1.88 127' },
84 | ['7.73'] = { ['empty'] = 'MidiControl 1.62 0; MidiNote 1.89 0', ['loaded'] = 'MidiControl 1.62 1; MidiNote 1.89 127' },
85 | ['7.74'] = { ['empty'] = 'MidiControl 1.63 0; MidiNote 1.90 0', ['loaded'] = 'MidiControl 1.63 1; MidiNote 1.90 127' },
86 |
87 | -- Device Control Executors
88 | ['7.81'] = { ['empty'] = 'MidiControl 1.24 0; MidiNote 1.58 0', ['loaded'] = 'MidiControl 1.24 1; MidiNote 1.58 127' },
89 | ['7.82'] = { ['empty'] = 'MidiControl 1.25 0; MidiNote 1.59 0', ['loaded'] = 'MidiControl 1.25 1; MidiNote 1.59 127' },
90 | ['7.83'] = { ['empty'] = 'MidiControl 1.26 0; MidiNote 1.60 0', ['loaded'] = 'MidiControl 1.26 1; MidiNote 1.60 127' },
91 | ['7.84'] = { ['empty'] = 'MidiControl 1.27 0; MidiNote 1.61 0', ['loaded'] = 'MidiControl 1.27 1; MidiNote 1.61 127' },
92 | ['7.86'] = { ['empty'] = 'MidiControl 1.28 0; MidiNote 1.62 0', ['loaded'] = 'MidiControl 1.28 1; MidiNote 1.62 127' },
93 | ['7.87'] = { ['empty'] = 'MidiControl 1.29 0; MidiNote 1.63 0', ['loaded'] = 'MidiControl 1.29 1; MidiNote 1.63 127' },
94 | ['7.88'] = { ['empty'] = 'MidiControl 1.30 0; MidiNote 1.64 0', ['loaded'] = 'MidiControl 1.30 1; MidiNote 1.64 127' },
95 | ['7.89'] = { ['empty'] = 'MidiControl 1.31 0; MidiNote 1.65 0', ['loaded'] = 'MidiControl 1.31 1; MidiNote 1.65 127' },
96 | }
97 |
98 | local ledMappingPresets = {
99 | ['0.1'] = { ['empty'] = 'MidiNote 1.52 0', ['loaded'] = 'MidiNote 1.52 1', ['playing'] = 'MidiNote 1.52 2' },
100 | ['0.2'] = { ['empty'] = 'MidiNote 2.52 0', ['loaded'] = 'MidiNote 2.52 1', ['playing'] = 'MidiNote 2.52 2' },
101 | ['0.3'] = { ['empty'] = 'MidiNote 3.52 0', ['loaded'] = 'MidiNote 3.52 1', ['playing'] = 'MidiNote 3.52 2' },
102 | ['0.4'] = { ['empty'] = 'MidiNote 4.52 0', ['loaded'] = 'MidiNote 4.52 1', ['playing'] = 'MidiNote 4.52 2' },
103 | ['0.5'] = { ['empty'] = 'MidiNote 5.52 0', ['loaded'] = 'MidiNote 5.52 1', ['playing'] = 'MidiNote 5.52 2' },
104 | ['0.6'] = { ['empty'] = 'MidiNote 6.52 0', ['loaded'] = 'MidiNote 6.52 1', ['playing'] = 'MidiNote 6.52 2' },
105 | ['0.7'] = { ['empty'] = 'MidiNote 7.52 0', ['loaded'] = 'MidiNote 7.52 1', ['playing'] = 'MidiNote 7.52 2' },
106 | ['0.8'] = { ['empty'] = 'MidiNote 8.52 0', ['loaded'] = 'MidiNote 8.52 1', ['playing'] = 'MidiNote 8.52 2' },
107 | ['0.10'] = { ['empty'] = 'MidiNote 1.51 0', ['loaded'] = 'MidiNote 1.51 1', ['playing'] = '' },
108 | ['0.11'] = { ['empty'] = 'MidiNote 2.51 0', ['loaded'] = 'MidiNote 2.51 1', ['playing'] = '' },
109 | ['0.12'] = { ['empty'] = 'MidiNote 3.51 0', ['loaded'] = 'MidiNote 3.51 1', ['playing'] = '' },
110 | ['0.13'] = { ['empty'] = 'MidiNote 4.51 0', ['loaded'] = 'MidiNote 4.51 1', ['playing'] = '' },
111 | ['0.14'] = { ['empty'] = 'MidiNote 5.51 0', ['loaded'] = 'MidiNote 5.51 1', ['playing'] = '' },
112 | ['0.15'] = { ['empty'] = 'MidiNote 6.51 0', ['loaded'] = 'MidiNote 6.51 1', ['playing'] = '' },
113 | ['0.16'] = { ['empty'] = 'MidiNote 7.51 0', ['loaded'] = 'MidiNote 7.51 1', ['playing'] = '' },
114 | ['0.17'] = { ['empty'] = 'MidiNote 8.51 0', ['loaded'] = 'MidiNote 8.51 1', ['playing'] = '' },
115 | }
116 |
117 | local ledMappingGroups = {
118 | ['1'] = { ['empty'] = 'MidiNote 82 0', ['loaded'] = 'MidiNote 82 1', ['playing'] = 'MidiNote 82 2' },
119 | ['2'] = { ['empty'] = 'MidiNote 83 0', ['loaded'] = 'MidiNote 83 1', ['playing'] = 'MidiNote 83 2' },
120 | ['3'] = { ['empty'] = 'MidiNote 84 0', ['loaded'] = 'MidiNote 84 1', ['playing'] = 'MidiNote 84 2' },
121 | ['4'] = { ['empty'] = 'MidiNote 85 0', ['loaded'] = 'MidiNote 85 1', ['playing'] = 'MidiNote 85 2' },
122 | ['5'] = { ['empty'] = 'MidiNote 86 0', ['loaded'] = 'MidiNote 86 1', ['playing'] = 'MidiNote 86 2' },
123 | ['6'] = { ['empty'] = 'MidiNote 81 0', ['loaded'] = 'MidiNote 81 1', ['playing'] = '' },
124 | ['7'] = { ['empty'] = 'MidiNote 80 0', ['loaded'] = 'MidiNote 80 1', ['playing'] = '' }
125 | }
126 |
127 | local slotMappingExecutors = {
128 | ['1'] = { ['1'] = '6.131', ['2'] = '6.141', ['3'] = '6.151', ['4'] = '6.161', ['5'] = '6.171' },
129 | ['2'] = { ['1'] = '6.132', ['2'] = '6.142', ['3'] = '6.152', ['4'] = '6.162', ['5'] = '6.172' },
130 | ['3'] = { ['1'] = '6.133', ['2'] = '6.143', ['3'] = '6.153', ['4'] = '6.163', ['5'] = '6.173' },
131 | ['4'] = { ['1'] = '6.134', ['2'] = '6.144', ['3'] = '6.154', ['4'] = '6.164', ['5'] = '6.174' },
132 | ['5'] = { ['1'] = '6.135', ['2'] = '6.145', ['3'] = '6.155', ['4'] = '6.165', ['5'] = '6.175' },
133 | ['6'] = { ['1'] = '6.136', ['2'] = '6.146', ['3'] = '6.156', ['4'] = '6.166', ['5'] = '6.176' },
134 | ['7'] = { ['1'] = '6.137', ['2'] = '6.147', ['3'] = '6.157', ['4'] = '6.167', ['5'] = '6.177' },
135 | ['8'] = { ['1'] = '6.138', ['2'] = '6.148', ['3'] = '6.158', ['4'] = '6.168', ['5'] = '6.178' }
136 | }
137 |
138 | -- Classes
139 | local Utils = {}
140 | local Mapper = {}
141 |
142 | -----------------------
143 | Utils.exists = function(objString)
144 | if (handle(objString)) then
145 | return true
146 | else
147 | return false
148 | end
149 | end
150 |
151 | Utils.toggleOnOff = function(status)
152 | if (status == 'on') then
153 | return 'off'
154 | else
155 | return 'on'
156 | end
157 | end
158 |
159 | -----------------------
160 | Mapper.setup = function()
161 | local confirmation = gma.textinput("Reset Slots + Setup, continue? [y/n]", 'n')
162 | if (confirmation == 'y') then
163 | local ex1 = Utils.exists('Executor 7.1')
164 | local ex2 = Utils.exists('Executor 7.2')
165 | local ex3 = Utils.exists('Executor 7.3')
166 | local ex4 = Utils.exists('Executor 7.4')
167 | local ex5 = Utils.exists('Executor 7.5')
168 | local ex6 = Utils.exists('Executor 7.6')
169 | local ex7 = Utils.exists('Executor 7.7')
170 | local ex8 = Utils.exists('Executor 7.8')
171 |
172 | -- Cannot setup when one of the slots is loaded!
173 | if (ex1 or ex2 or ex3 or ex4 or ex5 or ex6 or ex7 or ex8) then
174 | feedback('Error during setup: Please clear out Executors 7.1 - 7.8 and try again!')
175 | else
176 | feedback('Setting up executor slots...')
177 | setVar('apc40-slot1', 'none')
178 | setVar('apc40-slot2', 'none')
179 | setVar('apc40-slot3', 'none')
180 | setVar('apc40-slot4', 'none')
181 | setVar('apc40-slot5', 'none')
182 | setVar('apc40-slot6', 'none')
183 | setVar('apc40-slot7', 'none')
184 | setVar('apc40-slot8', 'none')
185 |
186 | feedback('Setting up group slots...')
187 | setVar('apc40-group1', 'none')
188 | setVar('apc40-group2', 'none')
189 | setVar('apc40-group3', 'none')
190 | setVar('apc40-group4', 'none')
191 | setVar('apc40-group5', 'none')
192 | setVar('apc40-group6', 'none')
193 | setVar('apc40-group7', 'none')
194 |
195 | feedback('Setting up preset slots...')
196 | setVar('apc40-preset0.1', 'none')
197 | setVar('apc40-preset0.2', 'none')
198 | setVar('apc40-preset0.3', 'none')
199 | setVar('apc40-preset0.4', 'none')
200 | setVar('apc40-preset0.5', 'none')
201 | setVar('apc40-preset0.6', 'none')
202 | setVar('apc40-preset0.7', 'none')
203 | setVar('apc40-preset0.8', 'none')
204 |
205 | setVar('apc40-preset0.10', 'none')
206 | setVar('apc40-preset0.11', 'none')
207 | setVar('apc40-preset0.12', 'none')
208 | setVar('apc40-preset0.13', 'none')
209 | setVar('apc40-preset0.14', 'none')
210 | setVar('apc40-preset0.15', 'none')
211 | setVar('apc40-preset0.16', 'none')
212 | setVar('apc40-preset0.17', 'none')
213 |
214 | setVar('apc40-setup', 'done')
215 | feedback('Setup completed!')
216 | end
217 | else
218 | feedback('No confirmation, no setup! :)')
219 | end
220 | end
221 |
222 | Mapper.refreshLeds = function()
223 | -- Go through ledMappingExecutors table
224 | for k,v in pairs(ledMappingExecutors) do
225 | local doesExist = Utils.exists('Executor '..k)
226 |
227 | if (doesExist) then
228 | cmd(ledMappingExecutors[k]['loaded'])
229 | else
230 | cmd(ledMappingExecutors[k]['empty'])
231 | end
232 | end
233 |
234 | -- Set the loaded clips
235 | local slot1 = getVar('apc40-slot1')
236 | local slot2 = getVar('apc40-slot2')
237 | local slot3 = getVar('apc40-slot3')
238 | local slot4 = getVar('apc40-slot4')
239 | local slot5 = getVar('apc40-slot5')
240 | local slot6 = getVar('apc40-slot6')
241 | local slot7 = getVar('apc40-slot7')
242 | local slot8 = getVar('apc40-slot8')
243 |
244 | if (slot1 ~= 'none') then
245 | cmd(ledMappingExecutors[slot1]['playing'])
246 | end
247 |
248 | if (slot2 ~= 'none') then
249 | cmd(ledMappingExecutors[slot2]['playing'])
250 | end
251 |
252 | if (slot3 ~= 'none') then
253 | cmd(ledMappingExecutors[slot3]['playing'])
254 | end
255 |
256 | if (slot4 ~= 'none') then
257 | cmd(ledMappingExecutors[slot4]['playing'])
258 | end
259 |
260 | if (slot5 ~= 'none') then
261 | cmd(ledMappingExecutors[slot5]['playing'])
262 | end
263 |
264 | if (slot6 ~= 'none') then
265 | cmd(ledMappingExecutors[slot6]['playing'])
266 | end
267 |
268 | if (slot7 ~= 'none') then
269 | cmd(ledMappingExecutors[slot7]['playing'])
270 | end
271 |
272 | if (slot8 ~= 'none') then
273 | cmd(ledMappingExecutors[slot8]['playing'])
274 | end
275 |
276 | -- Go through Presets
277 | for k,v in pairs(ledMappingPresets) do
278 | local doesExist = Utils.exists('Preset '..k)
279 |
280 | if (doesExist) then
281 | cmd(ledMappingPresets[k]['loaded'])
282 | else
283 | cmd(ledMappingPresets[k]['empty'])
284 | end
285 | end
286 |
287 | -- Go through Groups
288 | for k,v in pairs(ledMappingGroups) do
289 | local doesExist = Utils.exists('Group '..k)
290 |
291 | if (doesExist) then
292 | cmd(ledMappingGroups[k]['loaded'])
293 | else
294 | cmd(ledMappingGroups[k]['empty'])
295 | end
296 | end
297 | end
298 |
299 | Mapper.loadSlot = function(slot, clip)
300 | local loadSlot = slotMappingExecutors[slot][clip]
301 | if (loadSlot == nil) then
302 | feedback('Cannot find slot: '..slot..' with clip: '..clip)
303 | return
304 | end
305 |
306 | local newSlot = 'none'
307 | -- Load slot
308 | local previousSlot = ''
309 | local slotExecutor = ''
310 |
311 | if (slot == '1') then
312 | previousSlot = getVar('apc40-slot1')
313 | slotExecutor = '7.1'
314 | elseif (slot == '2') then
315 | previousSlot = getVar('apc40-slot2')
316 | slotExecutor = '7.2'
317 | elseif (slot == '3') then
318 | previousSlot = getVar('apc40-slot3')
319 | slotExecutor = '7.3'
320 | elseif (slot == '4') then
321 | previousSlot = getVar('apc40-slot4')
322 | slotExecutor = '7.4'
323 | elseif (slot == '5') then
324 | previousSlot = getVar('apc40-slot5')
325 | slotExecutor = '7.5'
326 | elseif (slot == '6') then
327 | previousSlot = getVar('apc40-slot6')
328 | slotExecutor = '7.6'
329 | elseif (slot == '7') then
330 | previousSlot = getVar('apc40-slot7')
331 | slotExecutor = '7.7'
332 | elseif (slot == '8') then
333 | previousSlot = getVar('apc40-slot8')
334 | slotExecutor = '7.8'
335 | end
336 |
337 | -- If the clip in that slot does not exist, simply do nothing
338 | if (loadSlot ~= previousSlot and Utils.exists('Executor '..loadSlot) == false) then
339 | return
340 | end
341 |
342 | if (loadSlot == previousSlot) then
343 | cmd('Off Executor '..slotExecutor..'; Move Executor '..slotExecutor..' at Executor '..previousSlot)
344 | cmd(ledMappingExecutors[previousSlot]['loaded'])
345 | cmd(ledMappingExecutors[slotExecutor]['empty'])
346 | else
347 | if (previousSlot ~= 'none') then
348 | cmd('Off Executor '..slotExecutor..'; Move Executor '..slotExecutor..' at Executor '..previousSlot)
349 | cmd(ledMappingExecutors[previousSlot]['loaded'])
350 | end
351 |
352 | cmd('Move Executor '..loadSlot..' at Executor '..slotExecutor)
353 | newSlot = loadSlot
354 | cmd(ledMappingExecutors[loadSlot]['playing'])
355 | cmd(ledMappingExecutors[slotExecutor]['loaded'])
356 | end
357 |
358 | -- Save new slot
359 | if (slot == '1') then
360 | setVar('apc40-slot1', newSlot)
361 | elseif (slot == '2') then
362 | setVar('apc40-slot2', newSlot)
363 | elseif (slot == '3') then
364 | setVar('apc40-slot3', newSlot)
365 | elseif (slot == '4') then
366 | setVar('apc40-slot4', newSlot)
367 | elseif (slot == '5') then
368 | setVar('apc40-slot5', newSlot)
369 | elseif (slot == '6') then
370 | setVar('apc40-slot6', newSlot)
371 | elseif (slot == '7') then
372 | setVar('apc40-slot7', newSlot)
373 | elseif (slot == '8') then
374 | setVar('apc40-slot8', newSlot)
375 | end
376 | end
377 |
378 | Mapper.togglePreset = function(preset)
379 | if (Utils.exists('Preset '..preset)) then
380 | local presetStatus = 'none'
381 |
382 | if (preset == '0.1') then
383 | presetStatus = getVar('apc40-preset0.1')
384 | setVar('apc40-preset0.1', Utils.toggleOnOff(presetStatus))
385 | elseif (preset == '0.2') then
386 | presetStatus = getVar('apc40-preset0.2')
387 | setVar('apc40-preset0.2', Utils.toggleOnOff(presetStatus))
388 | elseif (preset == '0.3') then
389 | presetStatus = getVar('apc40-preset0.3')
390 | setVar('apc40-preset0.3', Utils.toggleOnOff(presetStatus))
391 | elseif (preset == '0.4') then
392 | presetStatus = getVar('apc40-preset0.4')
393 | setVar('apc40-preset0.4', Utils.toggleOnOff(presetStatus))
394 | elseif (preset == '0.5') then
395 | presetStatus = getVar('apc40-preset0.5')
396 | setVar('apc40-preset0.5', Utils.toggleOnOff(presetStatus))
397 | elseif (preset == '0.6') then
398 | presetStatus = getVar('apc40-preset0.6')
399 | setVar('apc40-preset0.6', Utils.toggleOnOff(presetStatus))
400 | elseif (preset == '0.7') then
401 | presetStatus = getVar('apc40-preset0.7')
402 | setVar('apc40-preset0.7', Utils.toggleOnOff(presetStatus))
403 | elseif (preset == '0.8') then
404 | presetStatus = getVar('apc40-preset0.8')
405 | setVar('apc40-preset0.8', Utils.toggleOnOff(presetStatus))
406 | elseif (preset == '0.10') then
407 | presetStatus = getVar('apc40-preset0.10')
408 | setVar('apc40-preset0.10', Utils.toggleOnOff(presetStatus))
409 | elseif (preset == '0.11') then
410 | presetStatus = getVar('apc40-preset0.11')
411 | setVar('apc40-preset0.11', Utils.toggleOnOff(presetStatus))
412 | elseif (preset == '0.12') then
413 | presetStatus = getVar('apc40-preset0.12')
414 | setVar('apc40-preset0.12', Utils.toggleOnOff(presetStatus))
415 | elseif (preset == '0.13') then
416 | presetStatus = getVar('apc40-preset0.13')
417 | setVar('apc40-preset0.13', Utils.toggleOnOff(presetStatus))
418 | elseif (preset == '0.14') then
419 | presetStatus = getVar('apc40-preset0.14')
420 | setVar('apc40-preset0.14', Utils.toggleOnOff(presetStatus))
421 | elseif (preset == '0.15') then
422 | presetStatus = getVar('apc40-preset0.15')
423 | setVar('apc40-preset0.15', Utils.toggleOnOff(presetStatus))
424 | elseif (preset == '0.16') then
425 | presetStatus = getVar('apc40-preset0.16')
426 | setVar('apc40-preset0.16', Utils.toggleOnOff(presetStatus))
427 | elseif (preset == '0.17') then
428 | presetStatus = getVar('apc40-preset0.17')
429 | setVar('apc40-preset0.17', Utils.toggleOnOff(presetStatus))
430 | end
431 |
432 | -- Toggle preset
433 | if (presetStatus == 'on') then
434 | -- Turn off preset
435 | cmd('Off Preset '..preset)
436 | cmd(ledMappingPresets[preset]['loaded'])
437 | cmd('Appearance Preset '..preset..' /r')
438 | else
439 | -- Turn on preset
440 | cmd('Call Preset '..preset)
441 | cmd(ledMappingPresets[preset]['playing'])
442 | cmd('Appearance Preset '..preset..' /color=FF0000')
443 | end
444 | end
445 | end
446 |
447 | Mapper.toggleGroup = function(group)
448 | if (Utils.exists('Group '..group)) then
449 | local groupStatus = 'none'
450 |
451 | -- Get the current status of the group --> Immediately reversing it in the appropriate variable
452 | if (group == '1') then
453 | groupStatus = getVar('apc40-group1')
454 | setVar('apc40-group1', Utils.toggleOnOff(groupStatus))
455 | elseif (group == '2') then
456 | groupStatus = getVar('apc40-group2')
457 | setVar('apc40-group2', Utils.toggleOnOff(groupStatus))
458 | elseif (group == '3') then
459 | groupStatus = getVar('apc40-group3')
460 | setVar('apc40-group3', Utils.toggleOnOff(groupStatus))
461 | elseif (group == '4') then
462 | groupStatus = getVar('apc40-group4')
463 | setVar('apc40-group4', Utils.toggleOnOff(groupStatus))
464 | elseif (group == '5') then
465 | groupStatus = getVar('apc40-group5')
466 | setVar('apc40-group5', Utils.toggleOnOff(groupStatus))
467 | elseif (group == '6') then
468 | groupStatus = getVar('apc40-group6')
469 | setVar('apc40-group6', Utils.toggleOnOff(groupStatus))
470 | elseif (group == '7') then
471 | groupStatus = getVar('apc40-group7')
472 | setVar('apc40-group7', Utils.toggleOnOff(groupStatus))
473 | end
474 |
475 | -- Toggle group
476 | if (groupStatus == 'on') then
477 | -- Turn off group
478 | cmd('Off Group '..group)
479 | cmd(ledMappingGroups[group]['loaded'])
480 | cmd('Appearance Group '..group..' /r')
481 | else
482 | -- Turn on group
483 | cmd('Group '..group)
484 | cmd(ledMappingGroups[group]['playing'])
485 | cmd('Appearance Group '..group..' /color=FF0000')
486 | end
487 | end
488 | end
489 |
490 | function apc40Mapper()
491 | local op = getVar('apc40-op')
492 |
493 | -- Check if the system is setup!
494 | local isSetup = getVar('apc40-setup')
495 |
496 | if (isSetup or op == 'setup') then
497 | if (op == 'load-slot') then
498 | local slot = getVar('apc40-slot')
499 | local clip = getVar('apc40-clip')
500 |
501 | if (slot and clip) then
502 | Mapper.loadSlot(slot, clip)
503 | else
504 | feedback('Please set apc40-slot and apc40-clip!')
505 | end
506 | elseif (op == 'refresh-leds') then
507 | Mapper.refreshLeds()
508 | elseif (op == 'setup') then
509 | Mapper.setup()
510 | elseif (op == 'toggle-group') then
511 | local group = getVar('apc40-group')
512 | Mapper.toggleGroup(group)
513 | elseif (op == 'toggle-preset') then
514 | local preset = getVar('apc40-preset')
515 | Mapper.togglePreset(preset)
516 | else
517 | feedback('Unknown operation "'..op..'"')
518 | end
519 | else
520 | feedback('Error while trying to execute operation "'..op..'": Please run SETUP first!')
521 | end
522 | end
523 |
524 |
525 | return apc40Mapper
--------------------------------------------------------------------------------
/apc40-mapping/apc40-view.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | UE5b/1M2QP+AAQH/gAEB/4ABAf+AAQH/gAEB/4ABAf+AAQH/gAEB/4ABAf+AAQH/gAEB/4ABAf+AAQH/
8 | jRsb/5cvL/+aNTX/mzg4/5gxMf+WLCz/jx4e/5w5Of+WLS3/hQwM/5k0NP+YMDD/gAEB/4ABAf+AAQH/
9 | gAEB/4ABAf+AAQH/gAEB/4ABAf+AAQH/gAEB/4ABAf+AAQH/fwEB/2EEBP9FAQH/RQEB/0UBAf9FAQH/
10 | QBIS/zI1Nf82LCz/PBgY/0UBAf9FAQH/RQEB/0UBAf9KCAj/QkJC/ypxf/8uWGD/QkJC/1JFUP9KRVH/
11 | gAEB/4ABAf+AAQH/gAEB/4ABAf+AAQH/gwcH/4EDA/+AAQH/gwgI/5kzM/+bNjb/mzY2/5kzM/+SJCT/
12 | nDg4/4oWFv+OHh7/mjQ0/4QJCf+BAwP/gQMD/4EDA/+AAQH/gAEB/4ABAf+AAQH/fwEB/1wDA/8MAQH/
13 | HBER/yQZGf8nHBz/HRIS/wwBAf8hEBD/RSgv/0ogJv9fExb/XxMW/18TFv9eEhX/XxMW/18TFv9fExb/
14 | XxMW/14SFf9fExb/XxMW/18TFv9fExb/XhIV/18TFv91P0L/eUhK/3Q9QP9lICP/bjM2/3dER/92QkT/
15 | dkJF/18TFv9cEBP/XBAT/18TFv9fExb/XxMW/18TFv9eEhX/XhMW/18TFv9fExb/XxMW/14TFv9eEhX/
16 | XhMW/0sVGP87Exb/OxMW/zYOEf80DQ//Lhwf/yQ6Pf8iPT//KiYo/zQND/80DQ//NAwP/zQND/85Fhn/
17 | Q0ND/y9OVP8zREf/Q0ND/0MlMf8+Hi//WA0a/1gNGv9YDRr/WA0a/1gNGv9YDhj/aDQ5/3JHTP9pNjv/
18 | YSYs/2g0Ov9tPUL/cENI/24zNv9yOTz/dUBC/3Q+Qf9rKy3/aCYo/3E3Ov9zQEL/dkhL/2YoKv9eGBr/
19 | Xhga/14YGv9eGBr/WxQW/0EOEf8RDQ//EA0P/ycjJv8oJCf/EAwP/x0ND/8kFxn/JzAz/y8vL/8yMjP/
20 | MjIz/zIyM/8vLy//Li4v/zIyM/8yMjP/MjIz/zAwMP8tLS3/MjIz/zIyM/8yMjP/MTEx/y0tLv8xMTH/
21 | MjIz/zIyM/8zMzP/LS0t/zAwMP8yMjP/MjIz/zIyM/8fHx//ICAg/y0tLf8yMjP/MjIz/zIyM/8xMTH/
22 | Ly8v/zExMf8yMjP/MjIz/zMzM/8tLS3/MDAw/zIyM/8yMjP/MjIz/xcXF/8NDQ3/AgIC/wAAAP8RERH/
23 | FBQU/w8PD/8AAAD/AgIC/xAQEP8YISX/SEhI/1tbW/9gYGD/SEhI/xUeMP8HBwf/Hh4e/ycnJ/9GRkb/
24 | JCQk/wAAAP8RGiz/CgoK/xISEv8sLCz/Pz8//yYmJv8PDw//EBkd/y8vL/84ODj/ODg4/zg4OP84ODj/
25 | ODg4/zg4OP8kKyv/BwcH/x0dHf8xMTH/PDw8/x4eHv8WFhb/HyYm/w0NDf8AAAD/AAAA/wICAv8AAAD/
26 | AAAA/x4eHv8UHSD/HCUo/x0dHf8dHR3/HR0d/x0dHf8gICD/HR0d/x0dHf8dHR3/HR0d/yAgIP8dHR3/
27 | HR0d/x0dHf8dHR3/ICAg/x0dHf8dHR3/HR0d/x0dHf8fHx//ICAg/x0dHf8dHR3/HR0d/x0dHf8cHBz/
28 | HBwc/x0dHf8dHR3/HR0d/x0dHf8gICD/Hx8f/x0dHf8dHR3/HR0d/x8fH/8gICD/HR0d/x0dHf8dHR3/
29 | HR0d/woKCv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GDhf/ICA9/x4eMv8bGzL/
30 | HBw9/wgQSf8AAEH/AABB/wAAQf8AAEH/AABB/wAAQf8AEkz/ACs8/wArPP8AKzz/ACs8/wArPP8AKzz/
31 | ADBC/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8lOzv/JUVF/yxLS/8nRkb/IUFB/yFBQf8hQUH/
32 | Gzc3/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8UHSD/HCUo/x4eHv8dHR3/HR0d/x0dHf8gICD/
33 | HR0d/x4eHv8dHR3/HR0d/yAgIP8dHR3/Hh4e/x0dHf8dHR3/ICAg/x0dHf8eHh7/HR0d/x0dHf8eHh7/
34 | ICAg/x4eHv8dHR3/HR0d/x0dHf8cHBz/HBwc/x0dHf8eHh7/HR0d/x0dHf8gICD/Hh4e/x4eHv8dHR3/
35 | HR0d/x4eHv8gICD/Hh4e/x0dHf8dHR3/HR0d/woKCv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
36 | AAAA/wAAAP8EDR3/AgMb/wIDAP8AAAD/AAAa/wYdWP8AHVT/AAE7/wEBOP8KCkH/BgY9/wAANv8AFkn/
37 | AENR/wAwP/8AJDL/Bio4/wkuPP8AJTP/ACk5/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8hNTX/
38 | Hzk5/yZBQf8eOTn/Ij09/yE8PP8bNjb/GDAw/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8UHSD/
39 | KDA0/zExMf80NDT/NDQ0/zQ0NP8wMDD/MDAw/zQ0NP80NDT/NDQ0/zExMf8uLi7/NDQ0/zQ0NP80NDT/
40 | MjIy/y8vL/8zMzP/NDQ0/zQ0NP80NDT/Li4u/zIyMv80NDT/NDQ0/zQ0NP8fHx//ICAg/y4uLv80NDT/
41 | NDQ0/zQ0NP8yMjL/MDAw/zMzM/80NDT/NDQ0/zQ0NP8uLi7/MjIy/zQ0NP80NDT/NDQ0/xgYGP8NDQ3/
42 | AgIC/wAAAP8RERH/FBQU/w8PD/8AAAD/AgIC/xAQEP8SGyv/UVFs/1xcXP9fX1//VFRv/x9Vc/8oiYn/
43 | AAUm/wQEGv8pKT//FRUr/wAAFv8AHTv/MpCQ/w9AR/8ADhT/HSsx/yEvNf8CERb/ABYe/xoaGv8cHBz/
44 | HR0d/x0dHf8dHR3/HR0d/x0dHf8mLCz/FRUV/xAgIP8LFhb/Hikp/xQfH/8LFhb/DRsb/wAAAP8AAAD/
45 | AAAA/wAAAP8AAAD/AAAA/wAAAP8UHSD/HCUo/x0dHf8dHR3/HR0d/x0dHf8gICD/HR0d/x0dHf8dHR3/
46 | HR0d/yAgIP8dHR3/HR0d/x0dHf8dHR3/ICAg/x0dHf8dHR3/HR0d/x0dHf8fHx//ICAg/x0dHf8dHR3/
47 | HR0d/x0dHf8cHBz/HBwc/x0dHf8dHR3/HR0d/x0dHf8gICD/Hx8f/x0dHf8dHR3/HR0d/x8fH/8gICD/
48 | HR0d/x0dHf8dHR3/HR0d/woKCv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8EDRn/
49 | R0dw/09PZf9RUWf/RkZv/xIqQP8RMz7/BggX/wYGEf8VFSD/EhId/w8PGv8OGCP/Fj9C/wYcIP8GDhD/
50 | DhUY/xkgI/8HDhH/Fh4i/xkZGf8YGBj/EhIS/xISEv8SEhL/EhIS/x8fH/8ZHR3/Fhsb/w4VFf8MERH/
51 | FBkZ/xIYGP8VGhr/FRoa/xISEv8ICAj/BgYG/wYGBv8GBgb/BgYG/xYWFv8VHiH/GyQn/xwcHP8bGxv/
52 | Gxsb/xsbG/8fHx//Gxsb/xwcHP8bGxv/Gxsb/x8fH/8bGxv/HBwc/xsbG/8bGxv/Hx8f/xsbG/8cHBz/
53 | Gxsb/xsbG/8dHR3/Hx8f/xwcHP8bGxv/Gxsb/xsbG/8cHBz/HBwc/xsbG/8cHBz/Gxsb/xsbG/8fHx//
54 | HR0d/xwcHP8bGxv/Gxsb/x0dHf8fHx//HBwc/xsbG/8bGxv/Gxsb/woKCv8AAAD/AAAA/wAAAP8AAAD/
55 | AAAA/wAAAP8AAAD/AAAA/wAAAP8KExb/DQ0H/wQFAP8AAAD/BwcH/xAYHP8GBgb/AAAA/wEBAf8CAgL/
56 | AAAA/wcHB/8HBwf/BwcH/wAAAP8AAAD/AgIC/wAAAP8AAAD/Dg4O/wYGBv8DAwP/AAAA/wICAv8AAAD/
57 | AAAA/wsLC/8ICAj/BAQE/wAAAP8AAAD/AgIC/wAAAP8HBwf/CAgI/wcHB/8AAAD/AAAA/wICAv8AAAD/
58 | AAAA/w4ODv8UHSD/JzAz/zExMf80NDT/NDQ0/zQ0NP8vLy//MDAw/zQ0NP80NDT/NDQ0/zExMf8uLi7/
59 | NDQ0/zQ0NP80NDT/MTEx/y8vL/8zMzP/NDQ0/zQ0NP80NDT/LS0t/zIyMv80NDT/NDQ0/zQ0NP8fHx//
60 | ICAg/y4uLv80NDT/NDQ0/zQ0NP8xMTH/Ly8v/zMzM/80NDT/NDQ0/zQ0NP8tLS3/MjIy/zQ0NP80NDT/
61 | NDQ0/xgYGP8NDQ3/AgIC/wAAAP8RERH/FBQU/w8PD/8AAAD/AgIC/xAQEP8YISX/MzMz/y4uLv8uLi7/
62 | MzMz/wwVGP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
63 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
64 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8UHSD/HCUo/x0dHf8dHR3/HR0d/x0dHf8gICD/
65 | HR0d/x0dHf8dHR3/HR0d/yAgIP8dHR3/HR0d/x0dHf8dHR3/ICAg/x0dHf8dHR3/HR0d/x0dHf8fHx//
66 | ICAg/x0dHf8dHR3/HR0d/x0dHf8cHBz/HBwc/x0dHf8dHR3/HR0d/x0dHf8gICD/Hx8f/x0dHf8dHR3/
67 | HR0d/x8fH/8gICD/HR0d/x0dHf8dHR3/HR0d/woKCv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
68 | AAAA/wAAAP8KExf/Z2dn/2dnZ/9qamr/Z2dn/wwVGP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
69 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
70 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAMEf8TJi3/
71 | HCUo/x4eHv8dHR3/HR0d/x0dHf8gICD/HR0d/x4eHv8dHR3/HR0d/yAgIP8dHR3/Hh4e/x0dHf8dHR3/
72 | ICAg/x0dHf8eHh7/HR0d/x0dHf8fHx//ICAg/x4eHv8dHR3/HR0d/x0dHf8cHBz/HBwc/x0dHf8eHh7/
73 | HR0d/x0dHf8gICD/Hx8f/x4eHv8dHR3/HR0d/x8fH/8gICD/Hh4e/x0dHf8dHR3/HR0d/woKCv8AAAD/
74 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8HEBP/MjIy/zIyMv8tLS3/Li4u/0cyO/9EMz3/
75 | Xg0P/14ND/9eDRD/Xg0P/14ND/9eDQ//Xg0Q/14ND/9eDQ//Xg0P/3Q5PP9zODr/eEFE/3U7Pf9sKCv/
76 | cjU4/2cfIv9rJyr/cjQ3/14ND/9eDQ//Xg0P/14NEP9eDRD/Xg0P/14ND/9eDQ//Xg0Q/0UOEf8QDQ//
77 | Hhod/yQgI/8nIyb/Hhsf/xAUGv8eGh3/Ji4y/y8vL/8yMjL/MjIy/zIyMv8uLi7/Li4u/zIyMv8yMjL/
78 | MjIy/y8vL/8sLCz/MjIy/zIyMv8yMjL/MDAw/y0tLf8xMTH/MjIy/zIyMv8yMjL/Kysr/zAwMP8yMjL/
79 | MjIy/zIyMv8fHx//Hx8f/ywsLP8yMjL/MjIy/zIyMv8wMDD/LS0t/zExMf8yMjL/MjIy/zIyMv8rKyv/
80 | MDAw/zIyMv8yMjL/MjIy/xgYGP8MDAz/AgIC/wAAAP8RERH/FBQU/w0NDf8AAAD/AgIC/xAQEP8WHyL/
81 | HR0d/xoaGv8aGhr/HR0d/0k3Qf9END//dgkM/3YJDP92CQz/dgkM/3YJDP92CQz/hysu/5A9QP+HKy7/
82 | gB4h/4csLv+NODv/jjk8/4crLv+LMzb/jTc6/4s0N/+CISP/giEk/4oxM/+MNjj/jzs+/34aHf92CQz/
83 | dgkM/3YJDP92CQz/dgkM/1UMDv8NCQz/EAwP/ygkJ/8oJSf/EAwP/xoJDP8mExP/Hicq/yAgIP8gICD/
84 | ICAg/yAgIP8jIyP/ICAg/yAgIP8gICD/ICAg/yMjI/8gICD/ICAg/yAgIP8gICD/IyMj/yAgIP8gICD/
85 | ICAg/yAgIP8iIiL/IyMj/yAgIP8gICD/ICAg/yAgIP8dHR3/HR0d/yAgIP8gICD/ICAg/yAgIP8jIyP/
86 | IiIi/yAgIP8gICD/ICAg/yIiIv8jIyP/ICAg/yAgIP8gICD/ICAg/wsLC/8AAAD/AAAA/wAAAP8AAAD/
87 | AAAA/wAAAP8AAAD/AAAA/wAAAP8IERT/HR0d/xoaGv8aGhr/HR0d/yY0Ov8wNzr/Mjk8/zI5PP8yOTz/
88 | Mjk8/zI5PP8uNjj/LjY4/zI5PP8yOTz/Mjk8/zI5PP8yOTz/MDg7/yszNf8yOTz/Mjk8/zI5PP8yOTz/
89 | Mjk8/zI5PP8tNDf/MDc6/zI5PP8yOTz/Mjk8/zI5PP8yOTz/JCwv/xAXGv8DCg3/AwoN/wMKDf8DCg3/
90 | AwoN/yEpLP8UICT/HCUo/x0dHf8dHR3/HR0d/x0dHf8gICD/HR0d/x0dHf8dHR3/HR0d/yAgIP8dHR3/
91 | HR0d/x0dHf8dHR3/ICAg/x0dHf8dHR3/HR0d/x0dHf8fHx//ICAg/x0dHf8dHR3/HR0d/x0dHf8cHBz/
92 | HBwc/x0dHf8dHR3/HR0d/x0dHf8gICD/Hx8f/x0dHf8dHR3/HR0d/x8fH/8gICD/HR0d/x0dHf8dHR3/
93 | HR0d/woKCv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8HEBP/Hx8f/xwcHP8cHBz/
94 | Hx8f/yIrLv8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8oKCj/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/
95 | Jycn/yYmJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8oKCj/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/
96 | HR0d/wAAAP8AAAD/AAAA/wICAv8AAAD/AAAA/wAAAP8UHSD/JC0w/ywsLP8vLy//Ly8v/y8vL/8zOTn/
97 | MTY2/zk+Pv84Pj7/PUND/zg/P/8qKir/Ly8v/y8vL/8vLy//LDAw/x8lJf8mLCz/QUZG/xwiIv8/R0f/
98 | Ki0t/y0tLf8vLy//Ly8v/y8vL/8eHh7/Hx8f/ykpKf8vLy//Ly8v/y8vL/8tLS3/Kysr/y4uLv8vLy//
99 | Ly8v/y8vL/8pKSr/LS0t/y8vL/8vLy//Ly8v/xUVFf8MDAz/AAAA/wAAAP8RERH/FBQU/xAQEP8AAAD/
100 | AAAA/xAQEP8WHyL/ICAg/x4eHv8aGhr/HR0d/x4nKv8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8gICD/
101 | HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/Hh4e/x4eHv8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8gICD/
102 | HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/FxcX/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8UHSD/
103 | ICkt/yMjI/8jIyP/IyMj/yMjI/8qPDz/J0JC/zBLS/8mQkL/KkZG/ytBQf8jIyP/IyMj/yMjI/8jIyP/
104 | Jy8v/xw3N/8lQED/KURE/x86Ov8hQUH/Jy4u/yMjI/8jIyP/IyMj/yMjI/8dHR3/Hh4e/yMjI/8jIyP/
105 | IyMj/yMjI/8lJSX/JSUl/yMjI/8jIyP/IyMj/yUlJf8lJSX/IyMj/yMjI/8jIyP/IyMj/wwMDP8AAAD/
106 | AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC/wAAAP8IERT/HR0d/xoaGv8aGhr/HR0d/x0mKf8bGxv/
107 | Hx8f/x0dHf8dHR3/HR0d/x0dHf8gICD/Gxsb/x4eHv8dHR3/HR0d/x0dHf8dHR3/Hh4e/x0dHf8eHh7/
108 | HR0d/x0dHf8dHR3/HR0d/x0dHf8fHx//Gxsb/x4eHv8dHR3/HR0d/x0dHf8dHR3/FxcX/wAAAP8AAAD/
109 | AAAA/wAAAP8AAAD/AAAA/wAAAP8UHSD/HCUo/x0dHf8dHR3/HR0d/x0dHf8jPT3/JVJS/y1NTf8pR0f/
110 | ID8//yQ8PP8dHR3/HR0d/x0dHf8dHR3/Iisr/yFOTv8qUFD/L0xM/yFAQP8lSUn/Iikp/x0dHf8dHR3/
111 | HR0d/x0dHf8cHBz/HBwc/x0dHf8dHR3/HR0d/x0dHf8gICD/Hx8f/x0dHf8dHR3/HR0d/x8fH/8gICD/
112 | HR0d/x0dHf8dHR3/HR0d/woKCv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8IERT/
113 | HR0d/xoaGv8aGhr/HR0d/xojJ/8ZGRn/HBwc/xsbG/8bGxv/Gxsb/xsbG/8cHBz/GRkZ/xsbG/8bGxv/
114 | Gxsb/xsbG/8bGxv/Gxsb/xoaGv8aGhr/Gxsb/xsbG/8bGxv/Gxsb/xsbG/8bGxv/GRkZ/xsbG/8bGxv/
115 | Gxsb/xsbG/8bGxv/FhYW/wYGBv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8VHiH/HSYq/yAgIP8dHR3/
116 | HR0d/yQkJP8iNzf/HlFR/xsqKv8lKyv/Iicn/yEnJ/8kJCT/HBwc/xoaGv8gICD/KS0t/yJUVP8WNDT/
117 | HSMj/yctLf8wODj/ISMj/yUlJf8eHh7/IiIi/zo6Ov8bGxv/Ghoa/yUlJf8fHx//GRkZ/yIiIv8rKyv/
118 | IiIi/yIiIv8hISH/GRkZ/zY2Nv8hISH/Hh4e/yIiIv8XFxf/Ly8v/xgYGP8NDQ3/AAAA/wAAAP8RERH/
119 | FBQU/w8PD/8AAAD/AAAA/xAQEP8VHiH/JCQk/yEhIf8cHBz/Hh4e/w8YHP8LCwv/AAAA/wEBAf8CAgL/
120 | AAAA/xAQEP8PDw//ERER/wAAAP8AAAD/AgIC/wAAAP8BAQH/HR0d/wsLC/8GBgb/AAAA/wICAv8AAAD/
121 | AAAA/xcXF/8RERH/DAwM/wAAAP8AAAD/AgIC/wAAAP8QEBD/ERER/xMTE/8BAQH/AAAA/wICAv8AAAD/
122 | AAAA/x4eHv8UHSD/DhYa/xAQEP8dHR3/GRkZ/wkJCf8MDAz/FhYW/yQkJP8fHx//ExMT/wwMDP8JCQn/
123 | FhYW/xgYGP8MDAz/DAwM/xsbG/8XFxf/ICAg/x8fH/8gICD/DAwM/xwcHP8aGhr/ICAg/xEREf8XFxf/
124 | FhYW/wkJCf8bGxv/FxcX/xISEv8MDAz/CwsL/xwcHP8cHBz/Dw8P/wsLC/8MDAz/Dw8P/xwcHP8VFRX/
125 | CQkJ/wQEBP8AAAD/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC/wAAAP8IERT/HR0d/xoaGv8aGhr/
126 | HR0d/woSFv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
127 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
128 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8UHSD/EBkc/w0NDf8NDQ3/DQ0N/w0NDf8QEBD/
129 | DQ0N/w0NDf8NDQ3/DQ0N/xAQEP8NDQ3/DQ0N/w0NDf8NDQ3/EBAQ/w0NDf8NDQ3/DQ0N/w0NDf8PDw//
130 | EBAQ/w0NDf8NDQ3/DQ0N/w0NDf8XFxf/FxcX/w0NDf8NDQ3/DQ0N/w0NDf8QEBD/Dw8P/w0NDf8NDQ3/
131 | DQ0N/w8PD/8QEBD/DQ0N/w0NDf8NDQ3/DQ0N/wUFBf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
132 | AAAA/wAAAP8IERT/HR0d/xoaGv8aGhr/HR0d/woSFv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
133 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
134 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAFB/8TIij/
135 | EBkc/w0NDf8YGBj/ExMT/w0NDf8PDw//DQ0N/xQUFP8WFhb/DQ0N/w8PD/8NDQ3/EBAQ/xkZGf8NDQ3/
136 | Dw8P/w0NDf8NDQ3/HBwc/w0NDf8ODg7/Dw8P/w0NDf8aGhr/Dw8P/w0NDf8XFxf/FxcX/w0NDf8QEBD/
137 | Ghoa/w0NDf8PDw//Dg4O/w0NDf8cHBz/DQ0N/w4ODv8PDw//DQ0N/xoaGv8QEBD/DQ0N/wwMDP8LCwv/
138 | CwsL/wsLC/8LCwv/CwsL/wsLC/8LCwv/CwsL/wsLC/8PFxv/ICAg/x0dHf8cHBz/Hx8f/zcbIP83FRr/
139 | PA0P/zwND/89DRD/PA0P/zwND/88DQ//QhYZ/0chJP9EHB7/Qhca/0UdH/9DGh3/RR4g/z4PEf9LKCv/
140 | QBMV/zwND/88DQ//PQ0Q/zwND/88DQ//Nw4R/xINEP8WEhX/EA0P/xIOEf8VDQ//CQw//wQMRv8EDUb/
141 | BAtF/woRKf8PFiD/DRUg/wwgL/8UISz/GCEk/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/
142 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/
143 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/
144 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aIyb/
145 | ISEh/x0dHf8aGhr/HR0d/0NMWf83TVv/fwAA/38AAP+GDg7/lSws/5gzM/+FDQ3/jyEh/6hTU/+sWVn/
146 | rFtb/5YvL/+jSEj/pEpK/5gzM/+YMjL/li0t/5MoKP+VLS3/lSws/38AAP9/AAD/dAIC/wQEBP8fHx//
147 | MjIy/yQkJP8aAQH/DgFz/wFJnv8AUZT/AAB//xAQOv8eHh7/Ghoa/xoaGv8XFyD/GCEk/xoaGv8aGhr/
148 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/
149 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/
150 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/
151 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8ZJCj/HR0d/xoaGv8aGhr/HR0d/zYrMP8vGx7/Mx8i/0QwMv83Iyb/
152 | RjI0/zomKP9CLTD/Qi0w/0MwMv9CLTD/QCwv/z4qLf9CLTD/Qi0w/0ItMP9CLTD/PSot/0AsLv9CLTD/
153 | QzAy/0ItMP9BLTD/MiEk/xMOEf8QDQ//EA0P/x4aHf8rKS7/Agd7/wUFgf8AAH7/AAB//xAQOv8aGhr/
154 | Ghoa/xoaGv8XFyD/Fyct/xggI/8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/
155 | GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/
156 | GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/
157 | GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xYlKv8UOUb/Hh4e/xsbG/8bGxv/
158 | Hh4e/zY/Q/9AQED/MDAw/zQ0NP9BQUH/R0dH/yoqKv8tLS3/LS0t/y0tLf8tLS3/LCwt/y0tLf8tLS3/
159 | LS0t/y0tLf8tLS3/LCwt/y0tLf8tLS3/LS0t/y0tLf8tLS3/BwcH/wAAAP8BAQH/AQEB/wAAAP8EDRD/
160 | AQp9/ycnkv8dHY3/EBCH/w4OO/8XFx//Fxcf/xcXH/8WFiH/Ghoa/xoaGv8aGhr/Ghoa/xsbG/8aGhr/
161 | Ghoa/xoaGv8zMzP/NlNY/yN2hv8/Pz//JiYm/wkJCf8FBRX/BQWG/xERTP8LCwv/BQUQ/wVoY/8Ral7/
162 | CwsL/wUFB/8PShX/GXci/wgIIv8FBRb/MRQm/4o4K/8NDQ3/CgoK/xkFIv+tCXH/ERER/wwMDP8FBRX/
163 | VwWt/xYRG/8JCQn/BQUV/xkZGf8WFhb/DAwM/wUFFf8ODhH/FRUV/xoaGv8aGhr/Ghoa/xsbG/8aGhr/
164 | Ghoa/xoaGv8bGxv/ISEh/x4eHv8bGxv/Hh4e/y02Of8+Pj7/SkpK/0xMTP9QUFD/NTU1/x0dHf8dHR3/
165 | HR0d/x0dHf8dHR3/ICAg/x0dHf8dHR3/HR0d/x0dHf8dHR3/ICAg/x0dHf8dHR3/HR0d/x0dHf8dHR3/
166 | BgYG/wAAAP8AAAD/AAAA/wAAAP8EDRD/FR4w/x8fJv8XFx//Fxcf/xISKf8eHib/Fxcf/xcXH/8WFiH/
167 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv80NDT/OUZI/ylMU/8/Pz//NDQ0/yUlJf8lJSX/
168 | JSU0/yoqMf8lJSX/JSUl/yUxL/8qNTT/JSUl/yUlJf8mLSX/JC89/yMjMP8lJSX/Kycl/y8mOv8mJib/
169 | JSUl/yclJv85JTH/Kioq/yUlJf8lJSX/LyU5/ysqLP8lJSX/JSUl/yYmJv8qKir/JSUl/yUlJf8lJSX/
170 | IyMj/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/HR0d/xoaGv8aGhr/HR0d/yMsL/8tLS3/
171 | IyMj/ygoKP8nJyf/JCQk/xwcHP8dHR3/HR0d/x0dHf8dHR3/ICAg/xsbG/8dHR3/HR0d/x0dHf8dHR3/
172 | Hx8f/xsbG/8eHh7/HR0d/x0dHf8dHR3/BgYG/wAAAP8AAAD/AAAA/wAAAP8EDRD/FR4r/xoaGv8aGhr/
173 | Ghoa/xQUJv8aGhr/Ghoa/xoaGv8XFyD/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv80NDT/
174 | QEBA/2tra/9AQED/R0dH/15eXv9jY2P/WFhY/01NTf9aWlr/Y2Nj/1tbW/9NTU3/V1dX/2JiYv9fX1//
175 | QkJd/1FRXv9iYmL/Y2Nj/0REX/9LS0v/Y2Nj/2BgYP9WVlb/TU1N/2NjY/9dXV3/W1tb/1hYWP9jY2P/
176 | ZmZm/2dnZ/9ZWVn/ZGRk/2VlZf9nZ2f/RERE/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/
177 | HR0d/xoaGv8aGhr/GCUq/yFCSP8pTEz/GRsb/ykpKf8mJib/GBgY/xsbG/8dHR3/HR0d/x0dHf8dHR3/
178 | Hx8f/xsbG/8eHh7/HR0d/x0dHf8dHR3/Hx8f/xsbG/8eHh7/HR0d/x0dHf8dHR3/BgYG/wEBAf8BAQH/
179 | AQEB/wEBAf8FDRH/FR4r/xoaGv8aGhr/Ghoa/xQUJv8aGhr/Ghoa/xoaGv8XFyD/Ghoa/xoaGv8aGhr/
180 | Ghoa/xsbG/8aGhr/Ghoa/xoaGv8oKCj/MjIy/zQ0NP8tLS3/Li4u/zc3N/8xMTH/LS0t/y0tLf80NDT/
181 | MTEx/y4uLv8tLS3/MzMz/zU1Nf8tLS3/KSkx/yYmQf8tLUP/JCQ6/yAgPf8uLi7/Nzc3/y4uLv8uLi7/
182 | LS0t/zo6Ov8uLi7/Li4u/y0tLf86Ojr/Li4u/y0tLf8uLi7/ODg4/y4uLv8uLi7/Jycn/xoaGv8aGhr/
183 | Ghoa/xsbG/8aGhr/Ghoa/xoaGv8bGxv/HBwc/xsbG/8ZHyH/GCkw/xQgJP8UFBT/BQUF/wUFBf8JCQn/
184 | IiIi/xQUFP8MDAz/BQUF/wUFBf8VFRX/FhYW/xoaGv8HBwf/BQUF/wUFBf8dHR3/FxcX/xUVFf8FBQX/
185 | BQUF/wUFBf8jIyP/FBQU/w8PD/8FBQX/BQUF/xMTE/8cJSj/Ehsy/xsbKv8VFST/FRUk/xAQLP8bGyn/
186 | FRUk/xUVJP8VFSL/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8eHh7/HBwc/xoaGv8aGhr/
187 | Hx8f/yAgIP8aGhr/Ghoa/x0dHf8fHx//Ghoa/xoaGv8dHR3/Hh4e/x0dHf8aGhr/HR0d/x0dHf8dHR3/
188 | Ghoa/xsbG/8dHR3/Hh4e/xoaGv8aGhr/Hh4e/x8fH/8aGhr/Ghoa/x0dHf8gICD/Ghoa/xoaGv8dHR3/
189 | Hh4e/xoaGv8aGhr/Gxsb/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/
190 | Ghoa/wgRFP8AAAD/AAAA/wICAv8AAAD/AAAA/wAAAP8AAAD/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/
191 | AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wAAAP8EDRD/
192 | Fh8r/x0dHf8aGhr/Ghoa/xQUJv8dHR3/Ghoa/xoaGv8XFyD/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/
193 | Ghoa/xoaGv89Pj7/UVFR/1FRUf9RUVH/NDQ0/xoaGv8aGhr/Ghoa/x0dHf8aGhr/Ghoa/xoaGv8dHR3/
194 | Ghoa/xoaGv8aGhr/HR0d/xoaGv8aGhr/Ghoa/xsbG/8aGhr/Ghoa/xoaGv8aGhr/HR0d/xoaGv8aGhr/
195 | Ghoa/x0dHf8aGhr/Ghoa/xoaGv8dHR3/Ghoa/xoaGv8aGhr/GR8h/xoaGv8aGhr/Ghoa/xoaGv8aGhr/
196 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/wgRFP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
197 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
198 | AAAA/wAAAP8AAAD/AAAA/wAAAP8DDxT/FR0p/xoaGv8aGhr/Ghoa/xQUJv8aGhr/Ghoa/xoaGv8XFyD/
199 | JhgY/ygXF/8oFxf/KBcX/ygYGP8oFxf/KBcX/ygXF/9KOTn/Xk1N/15NTf9eTU3/QDAw/ykZGf8pGRn/
200 | KRkZ/ywbG/8pGRn/KRkZ/ykZGf8sGxv/KRkZ/ykZGf8pGRn/LBsb/yoZGf8pGRn/KRkZ/yoaGv8qGRn/
201 | KRkZ/ykZGf8pGRn/LBsb/ykZGf8pGRn/KRkZ/ywbG/8pGRn/KRkZ/ykZGf8sGxv/KRkZ/ykZGf8lJCr/
202 | Jikw/ygXF/8jGBj/IxcX/yMYGP8iFxf/IhcX/yIXF/8jGBj/IxgY/yIXF/8iFxf/IhcX/xkZHv8WDA//
203 | Fg0P/xYND/8WDRD/Fg0P/xYND/8WDQ//Fg0Q/xYND/8WDQ//Fg0P/xYNEP8WDQ//Fg0P/xYND/8WDRD/
204 | Fg0P/xYND/8WDQ//Fg0Q/xYND/8WDQ//Eg0Q/xENEP8RDRD/EA0P/xAPFP8SLDv/Ehgu/xUVJP8VFST/
205 | FRUk/xAQK/8VFST/FRUk/xUVJP8VFSL/R1Zl/0k7Rv9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/
206 | fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/hAsL/509Pf+dPDz/mjY2/549Pf+UKir/
207 | li8v/40dHf+XMDD/n0FB/4sYGP+ZNTX/kiYm/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/
208 | fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9TAgL/AAAA/wAAAP8AAAD/FRUV/yMjI/8hISH/
209 | CAgI/wAAAP8AAAD/DQAA/1NHVP8/S1n/fwAA/38AAP+CBgb/hg4O/4YPD/+BBQX/jyAg/6NHR/+ePz//
210 | nj8//5UtLf+ZNTX/oURE/4oWFv+ePT3/jyEh/4gTE/+ECgr/hxAQ/38AAP9/AAD/dQIC/wQEBP8cHBz/
211 | IyMj/yEhIf8PAQH/JRgh/yIiIv8aGhr/Ghoa/xQUJ/8fHx//Ghoa/xoaGv8XFyD/RiEr/0cYIv9WFh7/
212 | Xh4m/1MTG/9aGiH/VRod/1YbHv9WGx7/Vhse/1YbHv9UGRz/Vhse/1YbHv9WGx7/Vhse/1UaHf9UGRz/
213 | Xiot/2xHSv9nPkD/WyUo/10qLf9nPT//a0RH/2M1OP9hMDP/a0VI/2I5PP9eMjT/XSks/1YbHv9WGx7/
214 | Vhse/1YbHv9UGRv/Vhse/1YbHv9WGx7/Vhse/1UaHf9UGRz/Vhse/1YbHv9WGx7/Vhse/1QZHP9BHB//
215 | Hxse/x8bHv8fGx7/Ih4h/ywoK/8bFxr/EA0P/xAMD/8YExb/LBcc/0clK/9DHyP/VBkc/1UaHP9aIyb/
216 | bEJF/2hCRf9cJyr/XCYp/2Y7Pv9rRUj/aUJF/1snKv9oPkD/aEBC/2lBRP9bJij/Xy8y/2I0N/9rRUj/
217 | aD5B/1YbHv9WGx7/SBYZ/xINEP8YFRf/Ih8h/xsXGv8tGR3/Gxkj/xoaGv8aGhr/Ghoa/xQUJv8aGhr/
218 | Ghoa/xoaGv8XFyD/NSg2/z0pMP87Mzv/X1df/zszO/9AM0D/MzMz/zQ0NP80NDT/NDQ0/zQ0NP8xMTH/
219 | NDQ0/zQ0NP80NDT/NDQ0/zMzM/8wMDD/NDQ0/zQ0NP80NDT/NDQ0/zExMv8zMzP/NDQ0/zQ0NP80NDT/
220 | NDQ0/x4eHv8eHh7/MjIy/zQ0NP80NDT/NDQ0/zQ0NP8yMjL/NDQ0/zQ0NP80NDT/NDQ0/zIyMv8xMTL/
221 | NDQ0/zQ0NP80NDT/NDQ0/zExMf8zMzP/NDQ0/zQ0NP80NDT/NDQ0/xAQEP8BAQH/AgIC/wEBAf8JCQn/
222 | EBgc/zFDSf8sLCz/LCws/z4+Pv9DQ0P/SUlJ/y8vL/81NTX/NTU1/zU1Nf81NTX/MzMz/zIyMv81NTX/
223 | NTU1/zU1Nf81NTX/MjIy/zQ0NP81NTX/NTU1/zU1Nf81NTX/EBAQ/wEBAf8BAQH/AQEB/wgICP8QGRz/
224 | FR4r/xoaGv8aGhr/Ghoa/xQUJv8aGhr/Ghoa/xoaGv8XFyD/ohwt/9YXJf+uO1H/sD9V/6knPv+GHzj/
225 | HR0d/x0dHf8dHR3/HR0d/x0dHf8gICD/HR0d/x0dHf8dHR3/HR0d/x4eHv8eHh7/HR0d/x0dHf8dHR3/
226 | HR0d/yAgIP8dHR3/HR0d/x0dHf8dHR3/HR0d/xwcHP8cHBz/HR0d/x0dHf8dHR3/HR0d/x0dHf8gICD/
227 | HR0d/x0dHf8dHR3/HR0d/x4eHv8eHh7/HR0d/x0dHf8dHR3/HR0d/yAgIP8dHR3/HR0d/x0dHf8dHR3/
228 | HR0d/wYGBv8AAAD/AAAA/wAAAP8AAAD/BQ4R/yo8Q/87Ozv/SUlJ/05OTv9QUFD/NTU1/xwcHP8bGxv/
229 | Gxsb/xsbG/8bGxv/Hx8f/xsbG/8bGxv/Gxsb/xsbG/8bGxv/Hx8f/xsbG/8bGxv/Gxsb/xsbG/8bGxv/
230 | BgYG/wAAAP8AAAD/AAAA/wAAAP8EDRD/FB00/x4eLf8VFST/FRUk/xAQLP8dHSz/FRUk/xUVJP8VFSL/
231 | SyA1/zUbNf81GzX/NRs1/zUbNf85ITn/GBgY/xgYGP8YGBj/GBgY/xgYGP8eHh7/GBgY/xgYGP8YGBj/
232 | GBgY/xsbG/8bGxv/GBgY/xgYGP8YGBj/GBgY/x4eHv8YGBj/GBgY/xgYGP8YGBj/GBgY/xwcHP8cHBz/
233 | GBgY/xgYGP8YGBj/GBgY/xgYGP8eHh7/GBgY/xgYGP8YGBj/GBgY/xsbG/8bGxv/GBgY/xgYGP8YGBj/
234 | GBgY/x4eHv8YGBj/GBgY/xgYGP8YGBj/GRkZ/wgICP8BAQH/AQEB/wEBAf8BAQH/Bg8S/yc5QP8xMTH/
235 | JSUl/ysrK/8pKSn/Jycn/x0dHf8eHh7/HR0d/x0dHf8dHR3/ICAg/x0dHf8eHh7/HR0d/x0dHf8dHR3/
236 | ICAg/x0dHf8eHh7/HR0d/x0dHf8dHR3/BgYG/wAAAP8AAAD/AAAA/wAAAP8EDRD/FR4r/xoaGv8aGhr/
237 | Ghoa/xQUJv8aGhr/Ghoa/xoaGv8XFyD/EhUf/wUFBf8cHBz/HBwc/wICAv8WEBb/AAAA/wcHB/8NDQ3/
238 | CAgI/wAAAP8RERH/AAAA/wwMDP8NDQ3/BAQE/wgICP8JCQn/BQUF/w0NDf8LCwv/AAAA/xEREf8AAAD/
239 | CQkJ/w4ODv8FBQX/AAAA/xsbG/8bGxv/AAAA/wkJCf8ODg7/CAgI/wAAAP8QEBD/AAAA/w4ODv8ODg7/
240 | AwMD/woKCv8ICAj/BgYG/w0NDf8LCwv/AAAA/xAQEP8AAAD/CQkJ/w8PD/8EBAT/AAAA/woKCv8FBQX/
241 | HBwc/xwcHP8CAgL/BQ4R/x4yOP8kJyf/GRkZ/yUlJf8kJCT/GRkZ/xoaGv8cHBz/HR0d/x0dHf8dHR3/
242 | ICAg/xoaGv8dHR3/HR0d/x0dHf8dHR3/Hx8f/xoaGv8eHh7/HR0d/x0dHf8dHR3/BgYG/wAAAP8AAAD/
243 | AAAA/wAAAP8EDRD/FR4r/xoaGv8aGhr/Ghoa/xQUJv8aGhr/Ghoa/xoaGv8XFyD/Ix4v/xgNGP8YDRj/
244 | GA0Y/xgNGP8oGij/Dg4O/w0NDf8NDQ3/DQ0N/w0NDf8bGxv/DQ0N/w0NDf8NDQ3/DQ0N/xQUFP8UFBT/
245 | DQ0N/w0NDf8NDQ3/DQ0N/xsbG/8NDQ3/DQ0N/w0NDf8NDQ3/DQ0N/x0dHf8dHR3/DQ0N/w0NDf8NDQ3/
246 | DQ0N/w0NDf8aGhr/DQ0N/w0NDf8NDQ3/DQ0N/xUVFf8UFBT/DQ0N/w0NDf8NDQ3/DQ0N/xoaGv8NDQ3/
247 | DQ0N/w0NDf8NDQ3/Dw8P/wwMDP8CAgL/AgIC/wICAv8CAgL/BxAT/xk0O/8lNjb/EBER/xYWFv8XFxf/
248 | JSUl/x0dHf8UFBT/Dw8P/w8PD/8bGxv/HBwc/yYmJv8RERH/Dw8P/w8PD/8hISH/Hh4e/x8fH/8PDw//
249 | Dw8P/w8PD/8mJib/FRUV/xAQEP8GBgb/BgYG/xEREf8YIST/Dhcy/xAQI/8QECP/EBAj/wwMLv8QECP/
250 | EBAj/xAQI/8UFCP/ExUf/wUFBf8cHBz/HBwc/wICAv8XEBf/AAAA/wcHB/8NDQ3/CAgI/wAAAP8RERH/
251 | AAAA/wwMDP8NDQ3/BAQE/wgICP8JCQn/BQUF/w0NDf8LCwv/AAAA/xEREf8AAAD/CQkJ/w4ODv8FBQX/
252 | AAAA/xsbG/8bGxv/AAAA/wkJCf8ODg7/CAgI/wAAAP8QEBD/AAAA/w4ODv8ODg7/AwMD/woKCv8ICAj/
253 | BgYG/w0NDf8LCwv/AAAA/xAQEP8AAAD/CQkJ/w8PD/8EBAT/AAAA/woKCv8FBQX/HBwc/xwcHP8CAgL/
254 | BQ4R/wYYH/8AAAD/AAAA/wICAv8BAQH/BwcH/wAAAP8AAAD/AgIC/wAAAP8EBAT/BAQE/wAAAP8AAAD/
255 | AgIC/wAAAP8FBQX/AgIC/wAAAP8AAAD/AgIC/wAAAP8HBwf/AAAA/wAAAP8BAQH/AQEB/wMDA/8IERT/
256 | BQ4f/wcHB/8AAAD/AAAA/wAAG/8ICAj/AAAA/wAAAP8PDxz/Ix4v/xgNGP89Mj3/Mygz/xgNGP8lFyX/
257 | Gxsb/xsbG/8bGxv/Gxsb/xsbG/8dHR3/Gxsb/xsbG/8bGxv/Gxsb/xwcHP8cHBz/Gxsb/xsbG/8bGxv/
258 | Gxsb/x0dHf8bGxv/Gxsb/xsbG/8bGxv/Gxsb/xsbG/8bGxv/Gxsb/xsbG/8bGxv/Gxsb/xsbG/8dHR3/
259 | Gxsb/xsbG/8bGxv/Gxsb/xwcHP8cHBz/Gxsb/xsbG/8bGxv/Gxsb/x0dHf8bGxv/Gxsb/xsbG/8bGxv/
260 | Gxsb/xcXF/8VFRX/FRUV/xUVFf8VFRX/FR4h/wYYH/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
261 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
262 | AAAA/wAAAP8AAAD/AAAA/wAAAP8DDRD/KDBB/zg4OP83Nzf/MzMz/x8fOv8oKCj/KCgo/ygoKP8bHCn/
263 | MSQ9/ywWLP8WFBb/FhUW/ywWLP8yHDL/Ghoa/xoaGv8hISH/Ghoa/xoaGv8aGhr/Ghoa/xwcHP8eHh7/
264 | Ghoa/xoaGv8aGhr/Ghoa/x4eHv8cHBz/Ghoa/xoaGv8aGhr/Ghoa/yEhIf8aGhr/Ghoa/xoaGv8aGhr/
265 | Ghoa/xoaGv8hISH/Ghoa/xoaGv8aGhr/Ghoa/x0dHf8dHR3/Ghoa/xoaGv8aGhr/Ghoa/x8fH/8cHBz/
266 | Ghoa/xoaGv8aGhr/Ghoa/yEhIf8aGhr/Ghoa/xoaGv8aGhr/HR0d/x0dHf8aGhr/GCEk/wgaIf8CAgL/
267 | AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/
268 | AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wIEBf8FJTH/SFBh/2pqav9wcHD/
269 | XV1d/0REYP9ra2v/Zmdn/1dmbP8lNEH/Gxon/w0HDf8RCxH/EQsR/w0HDf8cEhz/Ghoa/xoaGv8kJCT/
270 | Ghoa/xoaGv8aGhr/Ghoa/x8fH/8fHx//Ghoa/xoaGv8aGhr/Ghoa/x8fH/8fHx//Ghoa/xoaGv8aGhr/
271 | Ghoa/yQkJP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8kJCT/Ghoa/xoaGv8aGhr/Ghoa/x8fH/8fHx//
272 | Ghoa/xoaGv8aGhr/Ghoa/x8fH/8fHx//Ghoa/xoaGv8aGhr/Ghoa/yQkJP8aGhr/Ghoa/xoaGv8aGhr/
273 | Hx8f/x8fH/8aGhr/GCEk/0lEU/9HQE3/bQsO/20LDv9uDA//bQsO/20LDv9tCw7/bgwP/20LDv9tCw7/
274 | bQsO/24MD/93HyL/dyAj/3ghI/92HB//dx4h/3kjJv92HSD/dh4g/3cgI/91HB//eSQn/3giJP92HB//
275 | dh0g/20MD/9sDhP/cAgS/3IJFP9yCRT/cgkU/28GEv9yCRT/cgoU/3IPF/89FBj/GCEk/xoaGv8fHx//
276 | Hx8f/xoaGv8aGhr/Ghoa/xoaGv8kJCT/Ghoa/xoaGv8aGhr/Ghoa/x8fH/8fHx//Ghoa/xoaGv8aGhr/
277 | Ghoa/x8fH/8fHx//Ghoa/xoaGv8aGhr/Ghoa/yQkJP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8kJCT/
278 | Ghoa/xoaGv8aGhr/Ghoa/x8fH/8fHx//Ghoa/xoaGv8aGhr/Ghoa/x8fH/8fHx//Ghoa/xoaGv8aGhr/
279 | Ghoa/yQkJP8aGhr/Ghoa/xoaGv8aGhr/Hx8f/x8fH/8aGhr/GCEk/0I3RP9CMDr/aBMY/2gTGP9oExj/
280 | aBMY/2gTGP9oExj/aBMY/2gTGP9oExj/aBMY/2gTGP9yKC7/eDM5/3gzOP94Mzn/dzE2/3IoLv90LDL/
281 | dzI4/20eI/94NDn/eDM5/3cyN/92MDX/cics/2gTGP9oExj/aBMY/2gTGP9oExj/aBMY/2gTGP9oExj/
282 | ZxMY/2cTGP86Fxj/GCEk/xoaGv8fHx//Hx8f/xoaGv8cHBz/DQ0N/w0NDf8WFhb/DQ0N/w0NDf8YGBj/
283 | DQ0N/xEREf8RERH/DQ0N/xISEv8TExP/DQ0N/xEREf8RERH/DQ0N/xgYGP8NDQ3/DQ0N/xYWFv8NDQ3/
284 | DQ0N/xsbG/8bGxv/DQ0N/w0NDf8WFhb/DQ0N/w0NDf8YGBj/DQ0N/xEREf8RERH/DQ0N/xQUFP8SEhL/
285 | DQ0N/xEREf8RERH/DQ0N/xgYGP8NDQ3/DQ0N/xYWFv8NDQ3/Dg4O/w8PD/8HBwf/DAwM/wwMDP8HBwf/
286 | CxQX/xY1Qf8tNDf/Mzs9/ycuMf8dJSf/Mzs9/wkQE/8XHyH/Iyot/yMqLf8eJSj/Exsd/wQSDv8BKQv/
287 | ASUL/wEIC/8BCAv/AQgL/wEIC/8BCAv/AQgL/wEIC/8BCAv/AQgL/wEIC/8BCAv/AQgL/wEIC/8BCAv/
288 | AQgL/wEIC/8BCAv/AQgL/wEIC/8BCAv/AQgL/wAIC/8UJy7/GCEk/xoaGv8eHh7/Hh4e/xoaGv8eHh7/
289 | FhYW/xYWFv8bGxv/FhYW/xYWFv8hISH/FhYW/xgYGP8YGBj/FhYW/xwcHP8cHBz/FhYW/xgYGP8YGBj/
290 | FhYW/yEhIf8WFhb/FhYW/xsbG/8WFhb/FhYW/x4eHv8eHh7/FhYW/xYWFv8bGxv/FhYW/xYWFv8hISH/
291 | FhYW/xgYGP8YGBj/FhYW/xwcHP8cHBz/FhYW/xkZGf8YGBj/FhYW/yEhIf8WFhb/FhYW/xsbG/8WFhb/
292 | FhYW/wwMDP8AAAD/AgIC/wICAv8AAAD/BQ4R/xYxO/8oKCj/MTEx/yQkJP8ZGRn/Kysr/wkJCf8TExP/
293 | JSUl/yIiIv8eHh7/FxcX/wMJA/8AJAD/ACEA/wALAP8AFwD/ABkA/w0ODf8PDw//AAAA/wAAAP8AAAD/
294 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8UJiz/
295 | GCEk/xoaGv8aGhr/Ghoa/xoaGv8dHR3/BwcH/wYGBv8GBgb/BgYG/wYGBv8WFhb/BgYG/wYGBv8GBgb/
296 | BgYG/w4ODv8PDw//BgYG/wYGBv8GBgb/BgYG/xYWFv8GBgb/BgYG/wYGBv8GBgb/BgYG/xwcHP8cHBz/
297 | BgYG/wYGBv8GBgb/BgYG/wYGBv8VFRX/BgYG/wYGBv8GBgb/BgYG/xAQEP8ODg7/BgYG/wYGBv8GBgb/
298 | BgYG/xUVFf8GBgb/BgYG/wYGBv8GBgb/BwcH/wsLC/8BAQH/AQEB/wEBAf8BAQH/Bg8S/xcxO/8yMjL/
299 | PDw8/ygoKP8lJSX/NTU1/woKCv8YGBj/LCws/ycnJ/8iIiL/FhYW/wQOBP8AKgD/ACgA/wAVAP8AKwD/
300 | ADIA/w0gDf8PHw//BgYG/w8PD/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
301 | AAAA/wAAAP8AAAD/AAAA/wAAAP8UJiz/JB4w/xgPGP8dGB3/IRwh/xYOFv8pGSn/Dg4O/wsLC/8QEBD/
302 | DAwM/wsLC/8cHBz/CwsL/w8PD/8PDw//CQkJ/xUVFf8WFhb/CgoK/xAQEP8ODg7/CgoK/xoaGv8ODg7/
303 | DQ0N/xAQEP8KCgr/Dg4O/xwcHP8cHBz/Dg4O/w0NDf8QEBD/DAwM/w4ODv8bGxv/CgoK/xEREf8QEBD/
304 | CwsL/xcXF/8VFRX/CwsL/w8PD/8ODg7/CwsL/xsbG/8LCwv/Dg4O/xAQEP8JCQn/Dw8P/wsLC/8FBQX/
305 | FhYW/xMTE/8EBAT/BRAV/x1CPf8lNh3/JTYd/yM0HP8jNBv/Jjce/yEyGf8kNRz/IzQb/yU2Hf8kNh3/
306 | JDYd/yAyGP8fNhj/HzMY/x8yGP8fNhj/HzYX/x81F/8fMxf/IjQb/yU2Hf8gMRj/HzAY/x8wF/8fMRj/
307 | GCgx/xwtJP8aLCv/GTA2/xovL/8XKDX/IzMf/0MuI/8SJSP/CCg1/wMaI/8ULDX/GyEw/xIUHP8dHif/
308 | ISIr/xIUHP8eHSj/CxIV/w0UF/8RGBv/DhUY/wsSFf8WHiH/CxIV/w8WGf8QGBr/DRQX/xAYGv8RGBv/
309 | DRQX/xAYGv8PFxn/CxIV/xYeIP8LEhX/DhUY/xEYG/8NFRf/CxIV/xoiJP8aIiT/CxIV/w4VGP8RGBv/
310 | DhUY/wsSFf8WHSD/CxIV/xAXGv8RGBv/DRQX/xIZHP8QGBr/DRQX/xAYGv8PFhn/CxIV/xYdIP8LEhX/
311 | DhUY/xEZG/8NFBf/DBMW/w0UF/8HDhH/DxYZ/xIZHP8FEBT/BzBA/zNYP/9MYC3/Sl4n/0teKf9abjf/
312 | XXE8/1hsNP9ecj3/Y3dE/19zP/9bbzn/Umcr/1puNv9FWhj/RVoY/0VaGP9FWhf/RVoX/0VaF/9FWhj/
313 | RVoY/0VaGP9FWhj/RVoY/0VaGP9AVCX/MENU/zhhOP8zUkv/PWhC/z9kN/8vZVz/QmU6/35OLP8fOCj/
314 | EVNw/wY1SP8TNED/
315 |
316 |
317 |
318 |
319 | 65536
320 | 393218
321 | 65535
322 | 0
323 |
324 |
325 |
326 |
327 | 65549
328 | 393218
329 | 6
330 | 0
331 |
332 |
333 |
334 |
335 | 65550
336 | 393218
337 | 6
338 | 0
339 |
340 |
341 |
342 |
343 | 65542
344 | 4294901760
345 | 5
346 | 0
347 |
348 |
349 |
350 |
351 | 65552
352 | 393218
353 | 6
354 | 0
355 |
356 |
357 |
358 |
359 | 65553
360 | 393218
361 | 6
362 | 0
363 |
364 |
365 |
366 |
367 | 0
368 | 0
369 | 0
370 | 3
371 |
372 |
373 |
374 |
375 | 0
376 | 1
377 | 0
378 | 3
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 |
399 | 13
400 | 5
401 | 0
402 | 0
403 |
404 |
405 |
406 |
407 | 0
408 | 0
409 | 0
410 | 3
411 |
412 |
413 |
414 |
--------------------------------------------------------------------------------