hunk.code_window: {
     "name": "expo-template-blank",
     "description": "The Blank project template includes the minimum dependencies to run and an empty root component.",
     "version": "46.0.7",
     "main": "node_modules/expo/AppEntry.js",
     "scripts": {
       "start": "expo start",
       "android": "expo start --android",
       "ios": "expo start --ios",
  
hunk.labels: keep keep keep replace keep keep keep keep keep
hunk.after_edit:   "version": "46.0.9",
  
hunk.file_path: templates/expo-template-blank/package.json
hunk.type: replace
file: // Copyright 2016-present 650 Industries. All rights reserved.
  
  #import "ABI46_0_0EXUtil.h"
  #import "ABI46_0_0EXScopedModuleRegistry.h"
  
  @interface ABI46_0_0EXUtil ()
  
  @property (nonatomic, weak) id<ABI46_0_0EXUtilService> kernelUtilService;
  
  @end
  
  ABI46_0_0EX_DEFINE_SCOPED_MODULE_GETTER(ABI46_0_0EXUtil, util)
  
  @implementation ABI46_0_0EXUtil
  
  ABI46_0_0EX_EXPORT_SCOPED_MODULE(ExponentUtil, UtilService);
  
  - (instancetype)initWithExperienceStableLegacyId:(NSString *)experienceStableLegacyId
                                          scopeKey:(NSString *)scopeKey
                                      easProjectId:(NSString *)easProjectId
                             kernelServiceDelegate:(id<ABI46_0_0EXUtilService>)kernelServiceInstance
                                            params:(NSDictionary *)params
  {
    if (self = [super initWithExperienceStableLegacyId:experienceStableLegacyId
                                              scopeKey:scopeKey
                                          easProjectId:easProjectId
                                 kernelServiceDelegate:kernelServiceInstance
                                                params:params]) {
      _kernelUtilService = kernelServiceInstance;
    }
    return self;
  }
  
  + (NSString *)escapedResourceName:(NSString *)name
  {
    NSString *charactersToEscape = @"!*'();:@&=+$,/?%#[]";
    NSCharacterSet *allowedCharacters = [[NSCharacterSet characterSetWithCharactersInString:charactersToEscape] invertedSet];
    return [name stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacters];
  }
  
  + (void)performSynchronouslyOnMainThread:(void (^)(void))block
  {
    if ([NSThread isMainThread]) {
      block();
    } else {
      dispatch_sync(dispatch_get_main_queue(), block);
    }
  }
  
  // https://stackoverflow.com/questions/14051807/how-can-i-get-a-hex-string-from-uicolor-or-from-rgb
  + (NSString *)hexStringWithCGColor:(CGColorRef)color
  {
    const CGFloat *components = CGColorGetComponents(color);
    size_t count = CGColorGetNumberOfComponents(color);
    
    if (count == 2) {
      return [NSString stringWithFormat:@"#%02lX%02lX%02lX",
              lroundf(components[0] * 255.0),
              lroundf(components[0] * 255.0),
              lroundf(components[0] * 255.0)];
    } else {
      return [NSString stringWithFormat:@"#%02lX%02lX%02lX",
              lroundf(components[0] * 255.0),
              lroundf(components[1] * 255.0),
              lroundf(components[2] * 255.0)];
    }
  }
  
  + (UIColor *)colorWithRGB:(unsigned int)rgbValue
  {
    return [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0
                           green:((float)((rgbValue & 0xFF00) >> 8))/255.0
                            blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0];
  }
  
  + (UIColor *)colorWithHexString:(NSString *)hexString
  {
    if (!hexString || hexString.length != 7 || [hexString characterAtIndex:0] != '#') {
      return nil;
    }
    hexString = [hexString substringWithRange:NSMakeRange(1, 6)];
    NSScanner *scanner = [NSScanner scannerWithString:hexString];
    unsigned int hex;
    if ([scanner scanHexInt:&hex]) {
      int r = (hex >> 16) & 0xFF;
      int g = (hex >> 8) & 0xFF;
      int b = (hex) & 0xFF;
      
      return [UIColor colorWithRed:r / 255.0f
                             green:g / 255.0f
                              blue:b / 255.0f
                             alpha:1.0f];
    }
    return nil;
  }
  
  - (UIViewController *)currentViewController
  {
    return [_kernelUtilService currentViewController];
  }
  
  - (nullable NSDictionary *)launchOptions
  {
    return [_kernelUtilService launchOptions];
  }
  
  @end
  