From 83948303f4f71a5ccfe48efa6bea73f936134da2 Mon Sep 17 00:00:00 2001 From: Jakub Jirutka Date: Sat, 18 Jul 2015 21:53:24 +0200 Subject: [PATCH 1/2] Add task for creating DMG installation image --- src/Makefile | 22 +- src/create-dmg/LICENSE | 21 ++ src/create-dmg/README | 2 + src/create-dmg/background.png | Bin 0 -> 24421 bytes src/create-dmg/builder/create-dmg.builder | 26 +++ src/create-dmg/create-dmg | 230 ++++++++++++++++++++ src/create-dmg/support/dmg-license.py | 163 ++++++++++++++ src/create-dmg/support/template.applescript | 79 +++++++ 8 files changed, 542 insertions(+), 1 deletion(-) create mode 100644 src/create-dmg/LICENSE create mode 100644 src/create-dmg/README create mode 100644 src/create-dmg/background.png create mode 100644 src/create-dmg/builder/create-dmg.builder create mode 100755 src/create-dmg/create-dmg create mode 100755 src/create-dmg/support/dmg-license.py create mode 100644 src/create-dmg/support/template.applescript diff --git a/src/Makefile b/src/Makefile index 9f03fbba8b..9830d6ed7f 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2901,10 +2901,30 @@ $(APPDIR)/Contents: ############################################################################## ### MacVim GUI -.PHONY: macvim macvimclean +.PHONY: macvim macvim-dmg macvimclean + +RELEASEDIR = MacVim/build/Release +DMGDIR = MacVim/build/dmg + macvim: $(VIMTARGET) xcodebuild -project MacVim/MacVim.xcodeproj $(XCODEFLAGS) +macvim-dmg: macvim + mkdir -p $(DMGDIR) + cp MacVim/mvim $(DMGDIR)/ + cp -r $(RELEASEDIR)/MacVim.app $(DMGDIR)/ + rm -rf $(RELEASEDIR)/MacVim-$(VERSION).dmg + create-dmg/create-dmg \ + --volname "MacVim $(VERSION)" \ + --volicon MacVim/icons/MacVim.icns \ + --background create-dmg/background.png \ + --window-size 650 470 \ + --icon-size 80 \ + --icon MacVim.app 240 320 \ + --icon mvim 570 80 \ + --app-drop-link 410 320 \ + $(RELEASEDIR)/MacVim-$(VERSION).dmg $(DMGDIR) + macvimclean: if test -d MacVim; then \ xcodebuild -project MacVim/MacVim.xcodeproj clean; \ diff --git a/src/create-dmg/LICENSE b/src/create-dmg/LICENSE new file mode 100644 index 0000000000..349b6d82b3 --- /dev/null +++ b/src/create-dmg/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2008-2014 Andrey Tarantsov + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/create-dmg/README b/src/create-dmg/README new file mode 100644 index 0000000000..4557795edb --- /dev/null +++ b/src/create-dmg/README @@ -0,0 +1,2 @@ +Content of this directory (except background.png) is copied from +https://github.com/andreyvit/create-dmg (5acf22f). diff --git a/src/create-dmg/background.png b/src/create-dmg/background.png new file mode 100644 index 0000000000000000000000000000000000000000..739494dc9f7f11d73c8a677d8dacd3ed0e4716b2 GIT binary patch literal 24421 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 literal 0 HcmV?d00001 diff --git a/src/create-dmg/builder/create-dmg.builder b/src/create-dmg/builder/create-dmg.builder new file mode 100644 index 0000000000..d4285280f1 --- /dev/null +++ b/src/create-dmg/builder/create-dmg.builder @@ -0,0 +1,26 @@ +SET app_name create-dmg + +VERSION create-dmg.cur create-dmg heads/master + +NEWDIR build.dir temp %-build - + +NEWFILE create-dmg.zip featured %.zip % + + +COPYTO [build.dir] + INTO create-dmg [create-dmg.cur]/create-dmg + INTO sample [create-dmg.cur]/sample + INTO support [create-dmg.cur]/support + +SUBSTVARS [build.dir]/create-dmg [[]] + + +ZIP [create-dmg.zip] + INTO [build-files-prefix] [build.dir] + + +PUT megabox-builds create-dmg.zip +PUT megabox-builds build.log + +PUT s3-builds create-dmg.zip +PUT s3-builds build.log diff --git a/src/create-dmg/create-dmg b/src/create-dmg/create-dmg new file mode 100755 index 0000000000..3e55dd9742 --- /dev/null +++ b/src/create-dmg/create-dmg @@ -0,0 +1,230 @@ +#! /bin/bash + +# Create a read-only disk image of the contents of a folder + +set -e; + +function pure_version() { + echo '1.0.0.2' +} + +function version() { + echo "create-dmg $(pure_version)" +} + +function usage() { + version + echo "Creates a fancy DMG file." + echo "Usage: $(basename $0) options... image.dmg source_folder" + echo "All contents of source_folder will be copied into the disk image." + echo "Options:" + echo " --volname name" + echo " set volume name (displayed in the Finder sidebar and window title)" + echo " --volicon icon.icns" + echo " set volume icon" + echo " --background pic.png" + echo " set folder background image (provide png, gif, jpg)" + echo " --window-pos x y" + echo " set position the folder window" + echo " --window-size width height" + echo " set size of the folder window" + echo " --text-size text_size" + echo " set window text size (10-16)" + echo " --icon-size icon_size" + echo " set window icons size (up to 128)" + echo " --icon file_name x y" + echo " set position of the file's icon" + echo " --hide-extension file_name" + echo " hide the extension of file" + echo " --custom-icon file_name custom_icon_or_sample_file x y" + echo " set position and custom icon" + echo " --app-drop-link x y" + echo " make a drop link to Applications, at location x,y" + echo " --eula eula_file" + echo " attach a license file to the dmg" + echo " --no-internet-enable" + echo " disable automatic mount©" + echo " --version show tool version number" + echo " -h, --help display this help" + exit 0 +} + +WINX=10 +WINY=60 +WINW=500 +WINH=350 +ICON_SIZE=128 +TEXT_SIZE=16 + +while test "${1:0:1}" = "-"; do + case $1 in + --volname) + VOLUME_NAME="$2" + shift; shift;; + --volicon) + VOLUME_ICON_FILE="$2" + shift; shift;; + --background) + BACKGROUND_FILE="$2" + BACKGROUND_FILE_NAME="$(basename $BACKGROUND_FILE)" + BACKGROUND_CLAUSE="set background picture of opts to file \".background:$BACKGROUND_FILE_NAME\"" + REPOSITION_HIDDEN_FILES_CLAUSE="set position of every item to {theBottomRightX + 100, 100}" + shift; shift;; + --icon-size) + ICON_SIZE="$2" + shift; shift;; + --text-size) + TEXT_SIZE="$2" + shift; shift;; + --window-pos) + WINX=$2; WINY=$3 + shift; shift; shift;; + --window-size) + WINW=$2; WINH=$3 + shift; shift; shift;; + --icon) + POSITION_CLAUSE="${POSITION_CLAUSE}set position of item \"$2\" to {$3, $4} +" + shift; shift; shift; shift;; + --hide-extension) + HIDING_CLAUSE="${HIDING_CLAUSE}set the extension hidden of item \"$2\" to true +" + shift; shift;; + --custom-icon) + shift; shift; shift; shift; shift;; + -h | --help) + usage;; + --version) + version; exit 0;; + --pure-version) + pure_version; exit 0;; + --app-drop-link) + APPLICATION_LINK=$2 + APPLICATION_CLAUSE="set position of item \"Applications\" to {$2, $3} +" + shift; shift; shift;; + --eula) + EULA_RSRC=$2 + shift; shift;; + --no-internet-enable) + NOINTERNET=1 + shift;; + -*) + echo "Unknown option $1. Run with --help for help." + exit 1;; + esac +done + +test -z "$2" && { + echo "Not enough arguments. Invoke with --help for help." + exit 1 +} + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +DMG_PATH="$1" +DMG_DIRNAME="$(dirname "$DMG_PATH")" +DMG_DIR="$(cd "$DMG_DIRNAME" > /dev/null; pwd)" +DMG_NAME="$(basename "$DMG_PATH")" +DMG_TEMP_NAME="$DMG_DIR/rw.${DMG_NAME}" +SRC_FOLDER="$(cd "$2" > /dev/null; pwd)" +test -z "$VOLUME_NAME" && VOLUME_NAME="$(basename "$DMG_PATH" .dmg)" + +AUX_PATH="$SCRIPT_DIR/support" + +test -d "$AUX_PATH" || { + echo "Cannot find support directory: $AUX_PATH" + exit 1 +} + +if [ -f "$SRC_FOLDER/.DS_Store" ]; then + echo "Deleting any .DS_Store in source folder" + rm "$SRC_FOLDER/.DS_Store" +fi + +# Create the image +echo "Creating disk image..." +test -f "${DMG_TEMP_NAME}" && rm -f "${DMG_TEMP_NAME}" +ACTUAL_SIZE=`du -sm "$SRC_FOLDER" | sed -e 's/ .*//g'` +DISK_IMAGE_SIZE=$(expr $ACTUAL_SIZE + 20) +hdiutil create -srcfolder "$SRC_FOLDER" -volname "${VOLUME_NAME}" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size ${DISK_IMAGE_SIZE}m "${DMG_TEMP_NAME}" + +# mount it +echo "Mounting disk image..." +MOUNT_DIR="/Volumes/${VOLUME_NAME}" + +# try unmount dmg if it was mounted previously (e.g. developer mounted dmg, installed app and forgot to unmount it) +echo "Unmounting disk image..." +DEV_NAME=$(hdiutil info | egrep '^/dev/' | sed 1q | awk '{print $1}') +test -d "${MOUNT_DIR}" && hdiutil detach "${DEV_NAME}" + +echo "Mount directory: $MOUNT_DIR" +DEV_NAME=$(hdiutil attach -readwrite -noverify -noautoopen "${DMG_TEMP_NAME}" | egrep '^/dev/' | sed 1q | awk '{print $1}') +echo "Device name: $DEV_NAME" + +if ! test -z "$BACKGROUND_FILE"; then + echo "Copying background file..." + test -d "$MOUNT_DIR/.background" || mkdir "$MOUNT_DIR/.background" + cp "$BACKGROUND_FILE" "$MOUNT_DIR/.background/$BACKGROUND_FILE_NAME" +fi + +if ! test -z "$APPLICATION_LINK"; then + echo "making link to Applications dir" + echo $MOUNT_DIR + ln -s /Applications "$MOUNT_DIR/Applications" +fi + +if ! test -z "$VOLUME_ICON_FILE"; then + echo "Copying volume icon file '$VOLUME_ICON_FILE'..." + cp "$VOLUME_ICON_FILE" "$MOUNT_DIR/.VolumeIcon.icns" + SetFile -c icnC "$MOUNT_DIR/.VolumeIcon.icns" +fi + +# run applescript +APPLESCRIPT=$(mktemp -t createdmg) +cat "$AUX_PATH/template.applescript" | sed -e "s/WINX/$WINX/g" -e "s/WINY/$WINY/g" -e "s/WINW/$WINW/g" -e "s/WINH/$WINH/g" -e "s/BACKGROUND_CLAUSE/$BACKGROUND_CLAUSE/g" -e "s/REPOSITION_HIDDEN_FILES_CLAUSE/$REPOSITION_HIDDEN_FILES_CLAUSE/g" -e "s/ICON_SIZE/$ICON_SIZE/g" -e "s/TEXT_SIZE/$TEXT_SIZE/g" | perl -pe "s/POSITION_CLAUSE/$POSITION_CLAUSE/g" | perl -pe "s/APPLICATION_CLAUSE/$APPLICATION_CLAUSE/g" | perl -pe "s/HIDING_CLAUSE/$HIDING_CLAUSE/" >"$APPLESCRIPT" + +echo "Running Applescript: /usr/bin/osascript \"${APPLESCRIPT}\" \"${VOLUME_NAME}\"" +"/usr/bin/osascript" "${APPLESCRIPT}" "${VOLUME_NAME}" || true +echo "Done running the applescript..." +sleep 4 + +rm "$APPLESCRIPT" + +# make sure it's not world writeable +echo "Fixing permissions..." +chmod -Rf go-w "${MOUNT_DIR}" &> /dev/null || true +echo "Done fixing permissions." + +# make the top window open itself on mount: +echo "Blessing started" +bless --folder "${MOUNT_DIR}" --openfolder "${MOUNT_DIR}" +echo "Blessing finished" + +if ! test -z "$VOLUME_ICON_FILE"; then + # tell the volume that it has a special file attribute + SetFile -a C "$MOUNT_DIR" +fi + +# unmount +echo "Unmounting disk image..." +hdiutil detach "${DEV_NAME}" + +# compress image +echo "Compressing disk image..." +hdiutil convert "${DMG_TEMP_NAME}" -format UDZO -imagekey zlib-level=9 -o "${DMG_DIR}/${DMG_NAME}" +rm -f "${DMG_TEMP_NAME}" + +# adding EULA resources +if [ ! -z "${EULA_RSRC}" -a "${EULA_RSRC}" != "-null-" ]; then + echo "adding EULA resources" + "${AUX_PATH}/dmg-license.py" "${DMG_DIR}/${DMG_NAME}" "${EULA_RSRC}" +fi + +if [ ! -z "${NOINTERNET}" -a "${NOINTERNET}" == 1 ]; then + echo "not setting 'internet-enable' on the dmg" +else + hdiutil internet-enable -yes "${DMG_DIR}/${DMG_NAME}" +fi + +echo "Disk image done" +exit 0 diff --git a/src/create-dmg/support/dmg-license.py b/src/create-dmg/support/dmg-license.py new file mode 100755 index 0000000000..9003a7c5e7 --- /dev/null +++ b/src/create-dmg/support/dmg-license.py @@ -0,0 +1,163 @@ +#! /usr/bin/env python +""" +This script adds a license file to a DMG. Requires Xcode and a plain ascii text +license file. +Obviously only runs on a Mac. + +Copyright (C) 2011-2013 Jared Hobbs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +""" +import os +import sys +import tempfile +import optparse + + +class Path(str): + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + os.unlink(self) + + +def mktemp(dir=None, suffix=''): + (fd, filename) = tempfile.mkstemp(dir=dir, suffix=suffix) + os.close(fd) + return Path(filename) + + +def main(options, args): + dmgFile, license = args + with mktemp('.') as tmpFile: + with open(tmpFile, 'w') as f: + f.write("""data 'TMPL' (128, "LPic") { + $"1344 6566 6175 6C74 204C 616E 6775 6167" + $"6520 4944 4457 5244 0543 6F75 6E74 4F43" + $"4E54 042A 2A2A 2A4C 5354 430B 7379 7320" + $"6C61 6E67 2049 4444 5752 441E 6C6F 6361" + $"6C20 7265 7320 4944 2028 6F66 6673 6574" + $"2066 726F 6D20 3530 3030 4457 5244 1032" + $"2D62 7974 6520 6C61 6E67 7561 6765 3F44" + $"5752 4404 2A2A 2A2A 4C53 5445" +}; + +data 'LPic' (5000) { + $"0000 0002 0000 0000 0000 0000 0004 0000" +}; + +data 'STR#' (5000, "English buttons") { + $"0006 0D45 6E67 6C69 7368 2074 6573 7431" + $"0541 6772 6565 0844 6973 6167 7265 6505" + $"5072 696E 7407 5361 7665 2E2E 2E7A 4966" + $"2079 6F75 2061 6772 6565 2077 6974 6820" + $"7468 6520 7465 726D 7320 6F66 2074 6869" + $"7320 6C69 6365 6E73 652C 2063 6C69 636B" + $"2022 4167 7265 6522 2074 6F20 6163 6365" + $"7373 2074 6865 2073 6F66 7477 6172 652E" + $"2020 4966 2079 6F75 2064 6F20 6E6F 7420" + $"6167 7265 652C 2070 7265 7373 2022 4469" + $"7361 6772 6565 2E22" +}; + +data 'STR#' (5002, "English") { + $"0006 0745 6E67 6C69 7368 0541 6772 6565" + $"0844 6973 6167 7265 6505 5072 696E 7407" + $"5361 7665 2E2E 2E7B 4966 2079 6F75 2061" + $"6772 6565 2077 6974 6820 7468 6520 7465" + $"726D 7320 6F66 2074 6869 7320 6C69 6365" + $"6E73 652C 2070 7265 7373 2022 4167 7265" + $"6522 2074 6F20 696E 7374 616C 6C20 7468" + $"6520 736F 6674 7761 7265 2E20 2049 6620" + $"796F 7520 646F 206E 6F74 2061 6772 6565" + $"2C20 7072 6573 7320 2244 6973 6167 7265" + $"6522 2E" +};\n\n""") + with open(license, 'r') as l: + kind = 'RTF ' if license.lower().endswith('.rtf') else 'TEXT' + f.write('data \'%s\' (5000, "English") {\n' % kind) + def escape(s): + return s.strip().replace('\\', '\\\\').replace('"', '\\"') + + for line in l: + if len(line) < 1000: + f.write(' "' + escape(line) + '\\n"\n') + else: + for liner in line.split('.'): + f.write(' "' + escape(liner) + '. \\n"\n') + f.write('};\n\n') + f.write("""data 'styl' (5000, "English") { + $"0003 0000 0000 000C 0009 0014 0000 0000" + $"0000 0000 0000 0000 0027 000C 0009 0014" + $"0100 0000 0000 0000 0000 0000 002A 000C" + $"0009 0014 0000 0000 0000 0000 0000" +};\n""") + os.system('hdiutil unflatten -quiet "%s"' % dmgFile) + ret = os.system('%s -a %s -o "%s"' % + (options.rez, tmpFile, dmgFile)) + os.system('hdiutil flatten -quiet "%s"' % dmgFile) + if options.compression is not None: + os.system('cp %s %s.temp.dmg' % (dmgFile, dmgFile)) + os.remove(dmgFile) + if options.compression == "bz2": + os.system('hdiutil convert %s.temp.dmg -format UDBZ -o %s' % + (dmgFile, dmgFile)) + elif options.compression == "gz": + os.system('hdiutil convert %s.temp.dmg -format ' % dmgFile + + 'UDZO -imagekey zlib-devel=9 -o %s' % dmgFile) + os.remove('%s.temp.dmg' % dmgFile) + if ret == 0: + print "Successfully added license to '%s'" % dmgFile + else: + print "Failed to add license to '%s'" % dmgFile + +if __name__ == '__main__': + parser = optparse.OptionParser() + parser.set_usage("""%prog [OPTIONS] + This program adds a software license agreement to a DMG file. + It requires Xcode and either a plain ascii text + or a with the RTF contents. + + See --help for more details.""") + parser.add_option( + '--rez', + '-r', + action='store', + default='/Applications/Xcode.app/Contents/Developer/Tools/Rez', + help='The path to the Rez tool. Defaults to %default' + ) + parser.add_option( + '--compression', + '-c', + action='store', + choices=['bz2', 'gz'], + default=None, + help='Optionally compress dmg using specified compression type. ' + 'Choices are bz2 and gz.' + ) + options, args = parser.parse_args() + cond = len(args) != 2 + if not os.path.exists(options.rez): + print 'Failed to find Rez at "%s"!\n' % options.rez + cond = True + if cond: + parser.print_usage() + sys.exit(1) + main(options, args) diff --git a/src/create-dmg/support/template.applescript b/src/create-dmg/support/template.applescript new file mode 100644 index 0000000000..2a7f2aa0b6 --- /dev/null +++ b/src/create-dmg/support/template.applescript @@ -0,0 +1,79 @@ +on run (volumeName) + tell application "Finder" + tell disk (volumeName as string) + open + + set theXOrigin to WINX + set theYOrigin to WINY + set theWidth to WINW + set theHeight to WINH + + set theBottomRightX to (theXOrigin + theWidth) + set theBottomRightY to (theYOrigin + theHeight) + set dsStore to "\"" & "/Volumes/" & volumeName & "/" & ".DS_STORE\"" + + tell container window + set current view to icon view + set toolbar visible to false + set statusbar visible to false + set the bounds to {theXOrigin, theYOrigin, theBottomRightX, theBottomRightY} + set statusbar visible to false + REPOSITION_HIDDEN_FILES_CLAUSE + end tell + + set opts to the icon view options of container window + tell opts + set icon size to ICON_SIZE + set text size to TEXT_SIZE + set arrangement to not arranged + end tell + BACKGROUND_CLAUSE + + -- Positioning + POSITION_CLAUSE + + -- Hiding + HIDING_CLAUSE + + -- Application Link Clause + APPLICATION_CLAUSE + close + open + + update without registering applications + -- Force saving of the size + delay 1 + + tell container window + set statusbar visible to false + set the bounds to {theXOrigin, theYOrigin, theBottomRightX - 10, theBottomRightY - 10} + end tell + + update without registering applications + end tell + + delay 1 + + tell disk (volumeName as string) + tell container window + set statusbar visible to false + set the bounds to {theXOrigin, theYOrigin, theBottomRightX, theBottomRightY} + end tell + + update without registering applications + end tell + + --give the finder some time to write the .DS_Store file + delay 3 + + set waitTime to 0 + set ejectMe to false + repeat while ejectMe is false + delay 1 + set waitTime to waitTime + 1 + + if (do shell script "[ -f " & dsStore & " ]; echo $?") = "0" then set ejectMe to true + end repeat + log "waited " & waitTime & " seconds for .DS_STORE to be created." + end tell +end run From ce9d45348026b1a4937d44245f90b0e75fa3f37f Mon Sep 17 00:00:00 2001 From: Jakub Jirutka Date: Sat, 18 Jul 2015 22:12:18 +0200 Subject: [PATCH 2/2] Add DMG background source in pixlr.com format --- src/create-dmg/background.pxd | Bin 0 -> 48746 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/create-dmg/background.pxd diff --git a/src/create-dmg/background.pxd b/src/create-dmg/background.pxd new file mode 100644 index 0000000000000000000000000000000000000000..60dddda486123d011cf558ad6187ea3b5c36b8e4 GIT binary patch literal 48746 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